diff --git a/.run/WPMangaStreamGenerator.run.xml b/.run/MangaThemesiaGenerator.run.xml similarity index 74% rename from .run/WPMangaStreamGenerator.run.xml rename to .run/MangaThemesiaGenerator.run.xml index 341c39572..ed0bb0584 100644 --- a/.run/WPMangaStreamGenerator.run.xml +++ b/.run/MangaThemesiaGenerator.run.xml @@ -1,11 +1,11 @@ <component name="ProjectRunConfigurationManager"> - <configuration default="false" name="WPMangaStreamGenerator" type="JetRunConfigurationType" nameIsGenerated="true"> + <configuration default="false" name="MangaThemesiaGenerator" type="JetRunConfigurationType" nameIsGenerated="true"> <module name="tachiyomi-extensions.multisrc.main" /> - <option name="MAIN_CLASS_NAME" value="eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStreamGenerator" /> + <option name="MAIN_CLASS_NAME" value="eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesiaGenerator" /> <method v="2"> <option name="Make" enabled="true" /> - <option name="Gradle.BeforeRunTask" enabled="true" tasks="ktFormat" externalProjectPath="$PROJECT_DIR$/multisrc" vmOptions="" scriptParameters="-Ptheme=wpmangastream" /> - <option name="Gradle.BeforeRunTask" enabled="true" tasks="ktLint" externalProjectPath="$PROJECT_DIR$/multisrc" vmOptions="" scriptParameters="-Ptheme=wpmangastream" /> + <option name="Gradle.BeforeRunTask" enabled="true" tasks="ktFormat" externalProjectPath="$PROJECT_DIR$/multisrc" vmOptions="" scriptParameters="-Ptheme=mangathemesia" /> + <option name="Gradle.BeforeRunTask" enabled="true" tasks="ktLint" externalProjectPath="$PROJECT_DIR$/multisrc" vmOptions="" scriptParameters="-Ptheme=mangathemesia" /> </method> </configuration> </component> diff --git a/.run/WpMangaReaderGenerator.run.xml b/.run/WpMangaReaderGenerator.run.xml deleted file mode 100644 index b8da10d7e..000000000 --- a/.run/WpMangaReaderGenerator.run.xml +++ /dev/null @@ -1,11 +0,0 @@ -<component name="ProjectRunConfigurationManager"> - <configuration default="false" name="WPMangaReaderGenerator" type="JetRunConfigurationType" nameIsGenerated="true"> - <module name="tachiyomi-extensions.multisrc.main" /> - <option name="MAIN_CLASS_NAME" value="eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReaderGenerator" /> - <method v="2"> - <option name="Make" enabled="true" /> - <option name="Gradle.BeforeRunTask" enabled="true" tasks="ktFormat" externalProjectPath="$PROJECT_DIR$/multisrc" vmOptions="" scriptParameters="-Ptheme=wpmangareader" /> - <option name="Gradle.BeforeRunTask" enabled="true" tasks="ktLint" externalProjectPath="$PROJECT_DIR$/multisrc" vmOptions="" scriptParameters="-Ptheme=wpmangareader" /> - </method> - </configuration> -</component> diff --git a/multisrc/overrides/wpmangareader/acescans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/acescans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/acescans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/acescans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/acescans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/acescans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/acescans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/acescans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/acescans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/acescans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/acescans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/acescans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/acescans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/acescans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/acescans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/acescans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/acescans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/acescans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/acescans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/acescans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/acescans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/acescans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/acescans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/acescans/res/web_hi_res_512.png diff --git a/multisrc/overrides/mangathemesia/acescans/src/AceScans.kt b/multisrc/overrides/mangathemesia/acescans/src/AceScans.kt new file mode 100644 index 000000000..2611d16e2 --- /dev/null +++ b/multisrc/overrides/mangathemesia/acescans/src/AceScans.kt @@ -0,0 +1,5 @@ +package eu.kanade.tachiyomi.extension.en.acescans + +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia + +class AceScans : MangaThemesia("Ace Scans", "https://acescans.xyz", "en") diff --git a/multisrc/overrides/wpmangareader/alphascans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/alphascans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/alphascans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/alphascans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/alphascans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/alphascans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/alphascans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/alphascans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/alphascans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/alphascans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/alphascans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/alphascans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/alphascans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/alphascans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/alphascans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/alphascans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/alphascans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/alphascans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/alphascans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/alphascans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/alphascans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/alphascans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/alphascans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/alphascans/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/alphascans/src/AlphaScans.kt b/multisrc/overrides/mangathemesia/alphascans/src/AlphaScans.kt similarity index 97% rename from multisrc/overrides/wpmangareader/alphascans/src/AlphaScans.kt rename to multisrc/overrides/mangathemesia/alphascans/src/AlphaScans.kt index 20ba742f3..db5353763 100644 --- a/multisrc/overrides/wpmangareader/alphascans/src/AlphaScans.kt +++ b/multisrc/overrides/mangathemesia/alphascans/src/AlphaScans.kt @@ -4,7 +4,7 @@ import android.app.Application import android.content.SharedPreferences import androidx.preference.PreferenceScreen import androidx.preference.SwitchPreferenceCompat -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.source.ConfigurableSource import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.MangasPage @@ -14,7 +14,7 @@ import rx.Observable import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get -open class AlphaScans : WPMangaReader("Alpha Scans", "https://alpha-scans.org", "en"), ConfigurableSource { +open class AlphaScans : MangaThemesia("Alpha Scans", "https://alpha-scans.org", "en"), ConfigurableSource { private val preferences: SharedPreferences by lazy { Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000) diff --git a/multisrc/overrides/wpmangastream/animatedglitchedscans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/animatedglitchedscans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/animatedglitchedscans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/animatedglitchedscans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/animatedglitchedscans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/animatedglitchedscans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/animatedglitchedscans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/animatedglitchedscans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/animatedglitchedscans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/animatedglitchedscans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/animatedglitchedscans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/animatedglitchedscans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/animatedglitchedscans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/animatedglitchedscans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/animatedglitchedscans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/animatedglitchedscans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/animatedglitchedscans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/animatedglitchedscans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/animatedglitchedscans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/animatedglitchedscans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/animatedglitchedscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/animatedglitchedscans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/animatedglitchedscans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/animatedglitchedscans/res/web_hi_res_512.png diff --git a/multisrc/overrides/mangathemesia/animatedglitchedscans/src/AnimatedGlitchedScans.kt b/multisrc/overrides/mangathemesia/animatedglitchedscans/src/AnimatedGlitchedScans.kt new file mode 100644 index 000000000..d70c658f1 --- /dev/null +++ b/multisrc/overrides/mangathemesia/animatedglitchedscans/src/AnimatedGlitchedScans.kt @@ -0,0 +1,5 @@ +package eu.kanade.tachiyomi.extension.en.animatedglitchedscans + +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia + +class AnimatedGlitchedScans : MangaThemesia("Animated Glitched Scans", "https://anigliscans.com", "en", mangaUrlDirectory = "/series") diff --git a/multisrc/overrides/wpmangareader/anitationarts/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/anitationarts/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/anitationarts/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/anitationarts/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/anitationarts/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/anitationarts/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/anitationarts/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/anitationarts/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/anitationarts/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/anitationarts/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/anitationarts/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/anitationarts/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/anitationarts/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/anitationarts/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/anitationarts/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/anitationarts/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/anitationarts/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/anitationarts/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/anitationarts/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/anitationarts/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/anitationarts/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/anitationarts/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/anitationarts/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/anitationarts/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/arcanescan/src/Arcanescan.kt b/multisrc/overrides/mangathemesia/arcanescan/src/Arcanescan.kt similarity index 70% rename from multisrc/overrides/wpmangareader/arcanescan/src/Arcanescan.kt rename to multisrc/overrides/mangathemesia/arcanescan/src/Arcanescan.kt index 61fd960b8..853860a5e 100644 --- a/multisrc/overrides/wpmangareader/arcanescan/src/Arcanescan.kt +++ b/multisrc/overrides/mangathemesia/arcanescan/src/Arcanescan.kt @@ -1,10 +1,10 @@ package eu.kanade.tachiyomi.extension.fr.arcanescan -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import java.text.SimpleDateFormat import java.util.Locale -class Arcanescan : WPMangaReader( +class Arcanescan : MangaThemesia( "Arcane scan", "https://arcanescan.fr", "fr", diff --git a/multisrc/overrides/wpmangastream/asurascans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/asurascans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/asurascans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/asurascans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/asurascans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/asurascans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/asurascans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/asurascans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/asurascans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/asurascans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/asurascans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/asurascans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/asurascans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/asurascans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/asurascans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/asurascans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/asurascans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/asurascans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/asurascans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/asurascans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/asurascans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/asurascans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/asurascans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/asurascans/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/asurascans/src/AsuraScans.kt b/multisrc/overrides/mangathemesia/asurascans/src/AsuraScans.kt similarity index 97% rename from multisrc/overrides/wpmangastream/asurascans/src/AsuraScans.kt rename to multisrc/overrides/mangathemesia/asurascans/src/AsuraScans.kt index dcd0c04e8..29b599102 100644 --- a/multisrc/overrides/wpmangastream/asurascans/src/AsuraScans.kt +++ b/multisrc/overrides/mangathemesia/asurascans/src/AsuraScans.kt @@ -4,7 +4,7 @@ import android.app.Application import android.content.SharedPreferences import androidx.preference.PreferenceScreen import androidx.preference.SwitchPreferenceCompat -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import eu.kanade.tachiyomi.source.ConfigurableSource import eu.kanade.tachiyomi.source.model.FilterList @@ -21,11 +21,11 @@ open class AsuraScans( override val baseUrl: String, override val lang: String, dateFormat: SimpleDateFormat -) : WPMangaStream( +) : MangaThemesia( "Asura Scans", baseUrl, lang, - dateFormat + dateFormat = dateFormat ), ConfigurableSource { diff --git a/multisrc/overrides/mangathemesia/asurascans/src/AsuraScansFactory.kt b/multisrc/overrides/mangathemesia/asurascans/src/AsuraScansFactory.kt new file mode 100644 index 000000000..179034132 --- /dev/null +++ b/multisrc/overrides/mangathemesia/asurascans/src/AsuraScansFactory.kt @@ -0,0 +1,46 @@ +package eu.kanade.tachiyomi.extension.all.asurascans + +import eu.kanade.tachiyomi.source.SourceFactory +import eu.kanade.tachiyomi.source.model.Page +import eu.kanade.tachiyomi.source.model.SManga +import org.jsoup.nodes.Document +import java.text.SimpleDateFormat +import java.util.Locale + +class AsuraScansFactory : SourceFactory { + override fun createSources() = listOf( + AsuraScansEn(), + AsuraScansTr() + ) +} + +class AsuraScansEn : AsuraScans("https://www.asurascans.com", "en", SimpleDateFormat("MMM d, yyyy", Locale.US)) { + + override val seriesDescriptionSelector = "div.desc p, div.entry-content p, div[itemprop=description]:not(:has(p))" + + override val pageSelector = "div.rdminimal > img, div.rdminimal > p > img, div.rdminimal > a > img, div.rdminimal > p > a > img" + + // Skip scriptPages + override fun pageListParse(document: Document): List<Page> { + return document.select(pageSelector) + .filterNot { it.attr("src").isNullOrEmpty() } + .mapIndexed { i, img -> Page(i, "", img.attr("src")) } + } +} + +class AsuraScansTr : AsuraScans("https://tr.asurascans.com", "tr", SimpleDateFormat("MMM d, yyyy", Locale("tr"))) { + + override val seriesArtistSelector = ".fmed b:contains(Çizer)+span" + override val seriesAuthorSelector = ".fmed b:contains(Yazar)+span" + override val seriesStatusSelector = ".imptdt:contains(Durum) i" + override val seriesTypeSelector = ".imptdt:contains(Tür) a" + + override val altNamePrefix: String = "Alternatif isim: " + + override fun String?.parseStatus(): Int = when { + this == null -> SManga.UNKNOWN + this.contains("Devam Ediyor", ignoreCase = true) -> SManga.ONGOING + this.contains("Tamamlandı", ignoreCase = true) -> SManga.COMPLETED + else -> SManga.UNKNOWN + } +} diff --git a/multisrc/overrides/wpmangareader/azurescans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/azurescans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/azurescans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/azurescans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/azurescans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/azurescans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/azurescans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/azurescans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/azurescans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/azurescans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/azurescans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/azurescans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/azurescans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/azurescans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/azurescans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/azurescans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/azurescans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/azurescans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/azurescans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/azurescans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/azurescans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/azurescans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/azurescans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/azurescans/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/batotoscans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/batotoscans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/batotoscans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/batotoscans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/batotoscans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/batotoscans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/batotoscans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/batotoscans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/batotoscans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/batotoscans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/batotoscans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/batotoscans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/batotoscans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/batotoscans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/batotoscans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/batotoscans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/batotoscans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/batotoscans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/batotoscans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/batotoscans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/batotoscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/batotoscans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/batotoscans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/batotoscans/res/web_hi_res_512.png diff --git a/multisrc/overrides/mangathemesia/batotoscans/src/BatotoScans.kt b/multisrc/overrides/mangathemesia/batotoscans/src/BatotoScans.kt new file mode 100644 index 000000000..9e2a14c6a --- /dev/null +++ b/multisrc/overrides/mangathemesia/batotoscans/src/BatotoScans.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.en.batotoscans + +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia + +class BatotoScans : MangaThemesia("Snudae Scans", "https://snudaescans.com", "en") { + override val id = 4418350353197826372L +} diff --git a/multisrc/overrides/wpmangareader/beastscans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/beastscans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/beastscans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/beastscans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/beastscans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/beastscans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/beastscans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/beastscans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/beastscans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/beastscans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/beastscans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/beastscans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/beastscans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/beastscans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/beastscans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/beastscans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/beastscans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/beastscans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/beastscans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/beastscans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/beastscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/beastscans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/beastscans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/beastscans/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/boosei/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/boosei/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/boosei/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/boosei/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/boosei/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/boosei/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/boosei/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/boosei/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/boosei/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/boosei/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/boosei/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/boosei/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/boosei/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/boosei/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/boosei/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/boosei/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/boosei/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/boosei/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/boosei/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/boosei/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/boosei/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/boosei/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/boosei/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/boosei/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/boosei/src/Boosei.kt b/multisrc/overrides/mangathemesia/boosei/src/Boosei.kt similarity index 76% rename from multisrc/overrides/wpmangastream/boosei/src/Boosei.kt rename to multisrc/overrides/mangathemesia/boosei/src/Boosei.kt index 75a550927..025718bce 100644 --- a/multisrc/overrides/wpmangastream/boosei/src/Boosei.kt +++ b/multisrc/overrides/mangathemesia/boosei/src/Boosei.kt @@ -1,11 +1,11 @@ package eu.kanade.tachiyomi.extension.id.boosei -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit -class Boosei : WPMangaStream("Boosei", "https://boosei.com", "id") { +class Boosei : MangaThemesia("Boosei", "https://boosei.com", "id") { override val client: OkHttpClient = network.cloudflareClient.newBuilder() .connectTimeout(10, TimeUnit.SECONDS) diff --git a/multisrc/overrides/wpmangastream/default/AndroidManifest.xml b/multisrc/overrides/mangathemesia/default/AndroidManifest.xml similarity index 93% rename from multisrc/overrides/wpmangastream/default/AndroidManifest.xml rename to multisrc/overrides/mangathemesia/default/AndroidManifest.xml index d408e9008..ded43d296 100644 --- a/multisrc/overrides/wpmangastream/default/AndroidManifest.xml +++ b/multisrc/overrides/mangathemesia/default/AndroidManifest.xml @@ -4,7 +4,7 @@ <application> <activity - android:name="eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStreamUrlActivity" + android:name="eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesiaUrlActivity" android:excludeFromRecents="true" android:exported="true" android:theme="@android:style/Theme.NoDisplay"> diff --git a/multisrc/overrides/wpmangareader/default/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/default/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/default/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/default/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/default/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/default/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/default/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/default/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/default/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/default/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/default/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/default/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/default/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/default/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/default/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/default/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/default/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/default/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/default/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/default/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/default/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/default/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/default/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/default/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/flamescans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/flamescans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/flamescans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/flamescans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/flamescans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/flamescans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/flamescans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/flamescans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/flamescans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/flamescans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/flamescans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/flamescans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/flamescans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/flamescans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/flamescans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/flamescans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/flamescans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/flamescans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/flamescans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/flamescans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/flamescans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/flamescans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/flamescans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/flamescans/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/flamescans/src/FlameScans.kt b/multisrc/overrides/mangathemesia/flamescans/src/FlameScans.kt similarity index 99% rename from multisrc/overrides/wpmangareader/flamescans/src/FlameScans.kt rename to multisrc/overrides/mangathemesia/flamescans/src/FlameScans.kt index 929a17601..b581e18b4 100644 --- a/multisrc/overrides/wpmangareader/flamescans/src/FlameScans.kt +++ b/multisrc/overrides/mangathemesia/flamescans/src/FlameScans.kt @@ -8,7 +8,7 @@ import android.graphics.Canvas import android.graphics.Rect import androidx.preference.PreferenceScreen import androidx.preference.SwitchPreferenceCompat -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.source.ConfigurableSource import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.MangasPage @@ -35,7 +35,7 @@ open class FlameScans( override val lang: String, mangaUrlDirectory: String, dateFormat: SimpleDateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale.US) -) : WPMangaReader( +) : MangaThemesia( "Flame Scans", baseUrl, lang, diff --git a/multisrc/overrides/wpmangareader/flamescans/src/FlameScansFactory.kt b/multisrc/overrides/mangathemesia/flamescans/src/FlameScansFactory.kt similarity index 82% rename from multisrc/overrides/wpmangareader/flamescans/src/FlameScansFactory.kt rename to multisrc/overrides/mangathemesia/flamescans/src/FlameScansFactory.kt index 85a4e6f2a..dd7bb7c13 100644 --- a/multisrc/overrides/wpmangareader/flamescans/src/FlameScansFactory.kt +++ b/multisrc/overrides/mangathemesia/flamescans/src/FlameScansFactory.kt @@ -20,9 +20,10 @@ class FlameScansAr : FlameScans("https://ar.flamescans.org", "ar", "/series") { override val id: Long = 6053688312544266540 - override fun parseStatus(status: String) = when { - status.contains("مستمر") -> SManga.ONGOING - status.contains("مكتمل") -> SManga.COMPLETED + override fun String?.parseStatus() = when { + this == null -> SManga.UNKNOWN + this.contains("مستمر") -> SManga.ONGOING + this.contains("مكتمل") -> SManga.COMPLETED else -> SManga.UNKNOWN } } diff --git a/multisrc/overrides/wpmangareader/franxxmangas/src/FranxxMangas.kt b/multisrc/overrides/mangathemesia/franxxmangas/src/FranxxMangas.kt similarity index 51% rename from multisrc/overrides/wpmangareader/franxxmangas/src/FranxxMangas.kt rename to multisrc/overrides/mangathemesia/franxxmangas/src/FranxxMangas.kt index ecd79f2df..2ecb426bd 100644 --- a/multisrc/overrides/wpmangareader/franxxmangas/src/FranxxMangas.kt +++ b/multisrc/overrides/mangathemesia/franxxmangas/src/FranxxMangas.kt @@ -1,15 +1,13 @@ package eu.kanade.tachiyomi.extension.pt.franxxmangas -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit -import eu.kanade.tachiyomi.source.model.SManga import okhttp3.OkHttpClient -import org.jsoup.nodes.Element import java.text.SimpleDateFormat import java.util.Locale import java.util.concurrent.TimeUnit -class FranxxMangas : WPMangaReader( +class FranxxMangas : MangaThemesia( "Franxx Mangás", "https://franxxmangas.net", "pt-BR", @@ -20,11 +18,5 @@ class FranxxMangas : WPMangaReader( .rateLimit(1, 2, TimeUnit.SECONDS) .build() - override val altName = "Nomes alternativos: " - - override fun searchMangaFromElement(element: Element) = SManga.create().apply { - thumbnail_url = element.select("img").attr("abs:data-src") - title = element.select("a").attr("title") - setUrlWithoutDomain(element.select("a").attr("href")) - } + override val altNamePrefix = "Nomes alternativos: " } diff --git a/multisrc/overrides/wpmangareader/fusionscanlation/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/fusionscanlation/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/fusionscanlation/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/fusionscanlation/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/fusionscanlation/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/fusionscanlation/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/fusionscanlation/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/fusionscanlation/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/fusionscanlation/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/fusionscanlation/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/fusionscanlation/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/fusionscanlation/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/fusionscanlation/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/fusionscanlation/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/fusionscanlation/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/fusionscanlation/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/fusionscanlation/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/fusionscanlation/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/fusionscanlation/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/fusionscanlation/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/fusionscanlation/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/fusionscanlation/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/fusionscanlation/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/fusionscanlation/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/fusionscanlation/src/FusionScanlation.kt b/multisrc/overrides/mangathemesia/fusionscanlation/src/FusionScanlation.kt similarity index 81% rename from multisrc/overrides/wpmangareader/fusionscanlation/src/FusionScanlation.kt rename to multisrc/overrides/mangathemesia/fusionscanlation/src/FusionScanlation.kt index 5cad1c76f..49aa928f4 100644 --- a/multisrc/overrides/wpmangareader/fusionscanlation/src/FusionScanlation.kt +++ b/multisrc/overrides/mangathemesia/fusionscanlation/src/FusionScanlation.kt @@ -1,13 +1,13 @@ package eu.kanade.tachiyomi.extension.es.fusionscanlation -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.OkHttpClient import java.text.SimpleDateFormat import java.util.Locale import java.util.concurrent.TimeUnit -class FusionScanlation : WPMangaReader("Fusion Scanlation", "https://fusionscanlation.com", "es", dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("es"))) { +class FusionScanlation : MangaThemesia("Fusion Scanlation", "https://fusionscanlation.com", "es", dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("es"))) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() .connectTimeout(10, TimeUnit.SECONDS) diff --git a/multisrc/overrides/wpmangareader/gabutscans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/gabutscans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/gabutscans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/gabutscans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/gabutscans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/gabutscans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/gabutscans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/gabutscans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/gabutscans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/gabutscans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/gabutscans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/gabutscans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/gabutscans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/gabutscans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/gabutscans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/gabutscans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/gabutscans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/gabutscans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/gabutscans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/gabutscans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/gabutscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/gabutscans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/gabutscans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/gabutscans/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/gabutscans/src/GabutScans.kt b/multisrc/overrides/mangathemesia/gabutscans/src/GabutScans.kt similarity index 64% rename from multisrc/overrides/wpmangareader/gabutscans/src/GabutScans.kt rename to multisrc/overrides/mangathemesia/gabutscans/src/GabutScans.kt index 9ade9db66..2140b2ecf 100644 --- a/multisrc/overrides/wpmangareader/gabutscans/src/GabutScans.kt +++ b/multisrc/overrides/mangathemesia/gabutscans/src/GabutScans.kt @@ -1,37 +1,27 @@ package eu.kanade.tachiyomi.extension.id.gabutscans -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.source.model.Page import kotlinx.serialization.json.jsonArray import kotlinx.serialization.json.jsonPrimitive import org.jsoup.nodes.Document -import org.jsoup.nodes.Element import java.text.SimpleDateFormat import java.util.Locale -class GabutScans : WPMangaReader( +class GabutScans : MangaThemesia( "Gabut Scans", "https://gabutscans.com", "id", dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("id")) ) { override val hasProjectPage = true - override fun searchMangaFromElement(element: Element) = - super.searchMangaFromElement(element).apply { - thumbnail_url = element.select("img").attr("abs:data-src") - } - - override fun mangaDetailsParse(document: Document) = super.mangaDetailsParse(document).apply { - thumbnail_url = document.select(seriesThumbnailSelector).attr("abs:data-src") - } - override fun pageListParse(document: Document): List<Page> { // Prefer using sources loaded from javascript // because current CDN (Statically) can't load old images. // Example: https://gabutscans.com/cinderella-wa-sagasanai-chapter-41-end-bahasa-indonesia/ val docString = document.toString() - val imageListRegex = Regex("""\"images.*?:.*?(\[.*?])""") + val imageListRegex = Regex("\"images.*?:.*?(\\[.*?])") val (imageListJson) = imageListRegex.find(docString)!!.destructured val imageList = json.parseToJsonElement(imageListJson).jsonArray diff --git a/multisrc/overrides/wpmangastream/gogomanga/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/gogomanga/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/gogomanga/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/gogomanga/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/gogomanga/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/gogomanga/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/gogomanga/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/gogomanga/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/gogomanga/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/gogomanga/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/gogomanga/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/gogomanga/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/gogomanga/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/gogomanga/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/gogomanga/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/gogomanga/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/gogomanga/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/gogomanga/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/gogomanga/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/gogomanga/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/gogomanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/gogomanga/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/gogomanga/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/gogomanga/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/iimanga/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/iimanga/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/iimanga/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/iimanga/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/iimanga/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/iimanga/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/iimanga/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/iimanga/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/iimanga/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/iimanga/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/iimanga/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/iimanga/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/iimanga/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/iimanga/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/iimanga/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/iimanga/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/iimanga/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/iimanga/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/iimanga/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/iimanga/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/iimanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/iimanga/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/iimanga/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/iimanga/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/iimanga/src/ARESManga.kt b/multisrc/overrides/mangathemesia/iimanga/src/ARESManga.kt similarity index 68% rename from multisrc/overrides/wpmangareader/iimanga/src/ARESManga.kt rename to multisrc/overrides/mangathemesia/iimanga/src/ARESManga.kt index 7c2bdc8aa..1b7eafc7e 100644 --- a/multisrc/overrides/wpmangareader/iimanga/src/ARESManga.kt +++ b/multisrc/overrides/mangathemesia/iimanga/src/ARESManga.kt @@ -1,10 +1,10 @@ package eu.kanade.tachiyomi.extension.ar.iimanga -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import java.text.SimpleDateFormat import java.util.Locale -class ARESManga : WPMangaReader("ARESManga", "https://aresmanga.com", "ar", dateFormat = SimpleDateFormat("MMMMM dd, yyyy", Locale("ar"))) { +class ARESManga : MangaThemesia("ARESManga", "https://aresmanga.com", "ar", dateFormat = SimpleDateFormat("MMMMM dd, yyyy", Locale("ar"))) { // The scanlator changed their name. override val id: Long = 230017529540228175 } diff --git a/multisrc/overrides/wpmangastream/imaginescan/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/imaginescan/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/imaginescan/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/imaginescan/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/imaginescan/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/imaginescan/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/imaginescan/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/imaginescan/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/imaginescan/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/imaginescan/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/imaginescan/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/imaginescan/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/imaginescan/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/imaginescan/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/imaginescan/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/imaginescan/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/imaginescan/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/imaginescan/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/imaginescan/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/imaginescan/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/imaginescan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/imaginescan/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/imaginescan/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/imaginescan/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/imaginescan/src/ImagineScan.kt b/multisrc/overrides/mangathemesia/imaginescan/src/ImagineScan.kt similarity index 65% rename from multisrc/overrides/wpmangastream/imaginescan/src/ImagineScan.kt rename to multisrc/overrides/mangathemesia/imaginescan/src/ImagineScan.kt index c8fc4a9c1..1b06da15e 100644 --- a/multisrc/overrides/wpmangastream/imaginescan/src/ImagineScan.kt +++ b/multisrc/overrides/mangathemesia/imaginescan/src/ImagineScan.kt @@ -1,22 +1,22 @@ package eu.kanade.tachiyomi.extension.pt.imaginescan -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.OkHttpClient import java.text.SimpleDateFormat import java.util.Locale import java.util.concurrent.TimeUnit -class ImagineScan : WPMangaStream( +class ImagineScan : MangaThemesia( "Imagine Scan", "https://imaginescan.com.br", "pt-BR", - SimpleDateFormat("MMMMM dd, yyyy", Locale("pt", "BR")) + dateFormat = SimpleDateFormat("MMMMM dd, yyyy", Locale("pt", "BR")) ) { override val client: OkHttpClient = super.client.newBuilder() .rateLimit(1, 2, TimeUnit.SECONDS) .build() - override val altName: String = "Nome alternativo: " + override val altNamePrefix: String = "Nome alternativo: " } diff --git a/multisrc/overrides/wpmangastream/imperfectcomics/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/imperfectcomics/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/imperfectcomics/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/imperfectcomics/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/imperfectcomics/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/imperfectcomics/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/imperfectcomics/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/imperfectcomics/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/imperfectcomics/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/imperfectcomics/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/imperfectcomics/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/imperfectcomics/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/imperfectcomics/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/imperfectcomics/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/imperfectcomics/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/imperfectcomics/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/imperfectcomics/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/imperfectcomics/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/imperfectcomics/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/imperfectcomics/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/imperfectcomics/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/imperfectcomics/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/imperfectcomics/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/imperfectcomics/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/inarimanga/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/inarimanga/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/inarimanga/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/inarimanga/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/inarimanga/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/inarimanga/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/inarimanga/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/inarimanga/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/inarimanga/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/inarimanga/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/inarimanga/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/inarimanga/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/inarimanga/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/inarimanga/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/inarimanga/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/inarimanga/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/inarimanga/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/inarimanga/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/inarimanga/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/inarimanga/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/inarimanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/inarimanga/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/inarimanga/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/inarimanga/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/inarimanga/src/InariManga.kt b/multisrc/overrides/mangathemesia/inarimanga/src/InariManga.kt similarity index 70% rename from multisrc/overrides/wpmangareader/inarimanga/src/InariManga.kt rename to multisrc/overrides/mangathemesia/inarimanga/src/InariManga.kt index 6150796f9..51dbd9c5e 100644 --- a/multisrc/overrides/wpmangareader/inarimanga/src/InariManga.kt +++ b/multisrc/overrides/mangathemesia/inarimanga/src/InariManga.kt @@ -1,10 +1,10 @@ package eu.kanade.tachiyomi.extension.es.inarimanga -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import java.text.SimpleDateFormat import java.util.Locale -class InariManga : WPMangaReader( +class InariManga : MangaThemesia( "InariManga", "https://inarimanga.com", "es", diff --git a/multisrc/overrides/wpmangastream/infernalvoidscans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/infernalvoidscans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/infernalvoidscans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/infernalvoidscans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/infernalvoidscans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/infernalvoidscans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/infernalvoidscans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/infernalvoidscans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/infernalvoidscans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/infernalvoidscans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/infernalvoidscans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/infernalvoidscans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/infernalvoidscans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/infernalvoidscans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/infernalvoidscans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/infernalvoidscans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/infernalvoidscans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/infernalvoidscans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/infernalvoidscans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/infernalvoidscans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/infernalvoidscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/infernalvoidscans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/infernalvoidscans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/infernalvoidscans/res/web_hi_res_512.png diff --git a/multisrc/overrides/mangathemesia/infernalvoidscans/src/InfernalVoidScans.kt b/multisrc/overrides/mangathemesia/infernalvoidscans/src/InfernalVoidScans.kt new file mode 100644 index 000000000..7eba18895 --- /dev/null +++ b/multisrc/overrides/mangathemesia/infernalvoidscans/src/InfernalVoidScans.kt @@ -0,0 +1,5 @@ +package eu.kanade.tachiyomi.extension.en.infernalvoidscans + +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia + +class InfernalVoidScans : MangaThemesia("Infernal Void Scans", "https://void-scans.com", "en") diff --git a/multisrc/overrides/wpmangareader/kiryuu/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/kiryuu/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/kiryuu/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/kiryuu/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/kiryuu/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/kiryuu/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/kiryuu/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/kiryuu/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/kiryuu/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/kiryuu/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/kiryuu/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/kiryuu/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/kiryuu/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/kiryuu/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/kiryuu/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/kiryuu/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/kiryuu/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/kiryuu/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/kiryuu/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/kiryuu/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/kiryuu/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/kiryuu/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/kiryuu/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/kiryuu/res/web_hi_res_512.png diff --git a/multisrc/overrides/mangathemesia/kiryuu/src/Kiryuu.kt b/multisrc/overrides/mangathemesia/kiryuu/src/Kiryuu.kt new file mode 100644 index 000000000..1159acd18 --- /dev/null +++ b/multisrc/overrides/mangathemesia/kiryuu/src/Kiryuu.kt @@ -0,0 +1,27 @@ +package eu.kanade.tachiyomi.extension.id.kiryuu + +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia +import eu.kanade.tachiyomi.network.interceptor.rateLimit +import okhttp3.OkHttpClient +import org.jsoup.nodes.Document +import java.text.SimpleDateFormat +import java.util.Locale +import java.util.concurrent.TimeUnit + +class Kiryuu : MangaThemesia("Kiryuu", "https://kiryuu.id", "id", dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("id"))) { + // Formerly "Kiryuu (WP Manga Stream)" + override val id = 3639673976007021338 + + override val client: OkHttpClient = network.cloudflareClient.newBuilder() + .connectTimeout(10, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .rateLimit(4) + .build() + + // manga details + override fun mangaDetailsParse(document: Document) = super.mangaDetailsParse(document).apply { + title = document.selectFirst(seriesThumbnailSelector).attr("title") + } + + override val hasProjectPage = true +} diff --git a/multisrc/overrides/wpmangastream/klankomik/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/klankomik/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/klankomik/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/klankomik/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/klankomik/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/klankomik/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/klankomik/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/klankomik/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/klankomik/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/klankomik/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/klankomik/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/klankomik/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/klankomik/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/klankomik/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/klankomik/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/klankomik/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/klankomik/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/klankomik/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/klankomik/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/klankomik/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/klankomik/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/klankomik/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/klankomik/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/klankomik/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/klankomik/src/KlanKomik.kt b/multisrc/overrides/mangathemesia/klankomik/src/KlanKomik.kt similarity index 77% rename from multisrc/overrides/wpmangastream/klankomik/src/KlanKomik.kt rename to multisrc/overrides/mangathemesia/klankomik/src/KlanKomik.kt index 1743f75f5..d33db8a4f 100644 --- a/multisrc/overrides/wpmangastream/klankomik/src/KlanKomik.kt +++ b/multisrc/overrides/mangathemesia/klankomik/src/KlanKomik.kt @@ -1,11 +1,11 @@ package eu.kanade.tachiyomi.extension.id.klankomik -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit -class KlanKomik : WPMangaStream("KlanKomik", "https://klankomik.com", "id") { +class KlanKomik : MangaThemesia("KlanKomik", "https://klankomik.com", "id") { override val client: OkHttpClient = network.cloudflareClient.newBuilder() .connectTimeout(10, TimeUnit.SECONDS) diff --git a/multisrc/overrides/wpmangastream/komikav/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikav/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikav/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikav/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/komikav/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikav/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikav/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikav/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/komikav/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikav/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikav/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikav/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/komikav/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikav/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikav/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikav/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/komikav/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikav/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikav/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikav/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/komikav/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/komikav/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikav/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/komikav/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/komikav/src/KomikAV.kt b/multisrc/overrides/mangathemesia/komikav/src/KomikAV.kt similarity index 90% rename from multisrc/overrides/wpmangastream/komikav/src/KomikAV.kt rename to multisrc/overrides/mangathemesia/komikav/src/KomikAV.kt index 61c7dc985..e31f5f527 100644 --- a/multisrc/overrides/wpmangastream/komikav/src/KomikAV.kt +++ b/multisrc/overrides/mangathemesia/komikav/src/KomikAV.kt @@ -1,6 +1,6 @@ package eu.kanade.tachiyomi.extension.id.komikav -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.interceptor.rateLimit import eu.kanade.tachiyomi.source.model.Page @@ -10,7 +10,7 @@ import java.text.SimpleDateFormat import java.util.Locale import java.util.concurrent.TimeUnit -class KomikAV : WPMangaStream( +class KomikAV : MangaThemesia( "Komik AV (WP Manga Stream)", "https://komikav.com", "id", diff --git a/multisrc/overrides/wpmangastream/komikcast/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikcast/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikcast/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikcast/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/komikcast/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikcast/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikcast/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikcast/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/komikcast/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikcast/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikcast/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikcast/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/komikcast/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikcast/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikcast/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikcast/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/komikcast/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikcast/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikcast/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikcast/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/komikcast/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/komikcast/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikcast/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/komikcast/res/web_hi_res_512.png diff --git a/multisrc/overrides/mangathemesia/komikcast/src/KomikCast.kt b/multisrc/overrides/mangathemesia/komikcast/src/KomikCast.kt new file mode 100644 index 000000000..08583c65f --- /dev/null +++ b/multisrc/overrides/mangathemesia/komikcast/src/KomikCast.kt @@ -0,0 +1,89 @@ +package eu.kanade.tachiyomi.extension.id.komikcast + +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.interceptor.rateLimit +import eu.kanade.tachiyomi.source.model.Page +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.json.jsonArray +import kotlinx.serialization.json.jsonObject +import okhttp3.Headers +import okhttp3.OkHttpClient +import okhttp3.Request +import org.jsoup.Jsoup +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +import java.util.concurrent.TimeUnit + +class KomikCast : MangaThemesia( + "Komik Cast", + "https://komikcast.me", + "id", + mangaUrlDirectory = "/daftar-komik" +) { + // Formerly "Komik Cast (WP Manga Stream)" + override val id = 972717448578983812 + + override val client: OkHttpClient = network.cloudflareClient.newBuilder() + .connectTimeout(10, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .rateLimit(3) + .build() + + override fun headersBuilder(): Headers.Builder = Headers.Builder() + .add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9") + .add("Accept-language", "en-US,en;q=0.9,id;q=0.8") + .add("Referer", baseUrl) + .add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0") + + override fun imageRequest(page: Page): Request { + val newHeaders = headersBuilder() + .set("Accept", "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8") + .set("Referer", baseUrl) + .build() + + return GET(page.imageUrl!!, newHeaders) + } + + override fun searchMangaSelector() = "div.list-update_item" + + override fun searchMangaFromElement(element: Element) = super.searchMangaFromElement(element).apply { + title = element.selectFirst("h3.title").ownText() + } + + override val seriesDetailsSelector = "div.komik_info:has(.komik_info-content)" + override val seriesTitleSelector = "h1.komik_info-content-body-title" + override val seriesDescriptionSelector = ".komik_info-description-sinopsis" + override val seriesAltNameSelector = ".komik_info-content-native" + override val seriesGenreSelector = ".komik_info-content-genre a" + override val seriesThumbnailSelector = ".komik_info-content-thumbnail img" + + override fun chapterListSelector() = "div.komik_info-chapters li" + + override fun chapterFromElement(element: Element) = super.chapterFromElement(element).apply { + date_upload = element.selectFirst(".chapter-link-time")?.text().parseChapterDate() + } + + override fun pageListParse(document: Document): List<Page> { + var doc = document + var cssQuery = "div#chapter_body .main-reading-area img.size-full" + val imageListRegex = Regex("chapterImages = (.*) \\|\\|") + val imageListMatchResult = imageListRegex.find(document.toString()) + + if (imageListMatchResult != null) { + val imageListJson = imageListMatchResult.destructured.toList()[0] + val imageList = json.parseToJsonElement(imageListJson).jsonObject + + var imageServer = "cdn" + if (!imageList.containsKey(imageServer)) imageServer = imageList.keys.first() + val imageElement = imageList[imageServer]!!.jsonArray.joinToString("") + doc = Jsoup.parse(json.decodeFromString(imageElement)) + cssQuery = "img.size-full" + } + + return doc.select(cssQuery) + .mapIndexed { i, img -> Page(i, "", img.imgAttr()) } + } + + override val hasProjectPage: Boolean = true +} diff --git a/multisrc/overrides/wpmangastream/komikindoco/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikindoco/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikindoco/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikindoco/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/komikindoco/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikindoco/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikindoco/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikindoco/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/komikindoco/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikindoco/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikindoco/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikindoco/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/komikindoco/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikindoco/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikindoco/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikindoco/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/komikindoco/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikindoco/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikindoco/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikindoco/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/komikindoco/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/komikindoco/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikindoco/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/komikindoco/res/web_hi_res_512.png diff --git a/multisrc/overrides/mangathemesia/komikindoco/src/KomikindoCo.kt b/multisrc/overrides/mangathemesia/komikindoco/src/KomikindoCo.kt new file mode 100644 index 000000000..9a6c96240 --- /dev/null +++ b/multisrc/overrides/mangathemesia/komikindoco/src/KomikindoCo.kt @@ -0,0 +1,23 @@ +package eu.kanade.tachiyomi.extension.id.komikindoco + +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia +import eu.kanade.tachiyomi.network.interceptor.rateLimit +import okhttp3.OkHttpClient +import java.text.SimpleDateFormat +import java.util.Locale +import java.util.concurrent.TimeUnit + +class KomikindoCo : MangaThemesia("KomikIndo.co", "https://komikindo.co", "id", dateFormat = SimpleDateFormat("MMM dd, yyyy", Locale("id"))) { + // Formerly "Komikindo.co" + override val id = 734619124437406170 + + override val client: OkHttpClient = network.cloudflareClient.newBuilder() + .connectTimeout(10, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .rateLimit(4) + .build() + + override val hasProjectPage = true + + override val seriesDetailsSelector = ".seriestucon" +} diff --git a/multisrc/overrides/wpmangareader/komiklab/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komiklab/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/komiklab/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komiklab/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/komiklab/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komiklab/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/komiklab/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komiklab/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/komiklab/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komiklab/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/komiklab/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komiklab/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/komiklab/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komiklab/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/komiklab/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komiklab/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/komiklab/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komiklab/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/komiklab/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komiklab/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/komiklab/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/komiklab/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/komiklab/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/komiklab/res/web_hi_res_512.png diff --git a/multisrc/overrides/mangathemesia/komiklab/src/KomikLab.kt b/multisrc/overrides/mangathemesia/komiklab/src/KomikLab.kt new file mode 100644 index 000000000..27e6701ba --- /dev/null +++ b/multisrc/overrides/mangathemesia/komiklab/src/KomikLab.kt @@ -0,0 +1,9 @@ +package eu.kanade.tachiyomi.extension.id.komiklab + +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia + +class KomikLab : MangaThemesia("Komik Lab", "https://komiklab.com", "id") { + override val hasProjectPage = true + + override val seriesDetailsSelector = ".seriestucon" +} diff --git a/multisrc/overrides/wpmangareader/komikmama/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikmama/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/komikmama/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikmama/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/komikmama/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikmama/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/komikmama/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikmama/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/komikmama/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikmama/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/komikmama/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikmama/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/komikmama/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikmama/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/komikmama/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikmama/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/komikmama/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikmama/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/komikmama/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikmama/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/komikmama/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/komikmama/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/komikmama/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/komikmama/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/komikmama/src/KomikMama.kt b/multisrc/overrides/mangathemesia/komikmama/src/KomikMama.kt similarity index 69% rename from multisrc/overrides/wpmangareader/komikmama/src/KomikMama.kt rename to multisrc/overrides/mangathemesia/komikmama/src/KomikMama.kt index 1bd5f9159..10dd420a8 100644 --- a/multisrc/overrides/wpmangareader/komikmama/src/KomikMama.kt +++ b/multisrc/overrides/mangathemesia/komikmama/src/KomikMama.kt @@ -1,10 +1,10 @@ package eu.kanade.tachiyomi.extension.id.komikmama -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import java.text.SimpleDateFormat import java.util.Locale -class KomikMama : WPMangaReader( +class KomikMama : MangaThemesia( "KomikMama", "https://komikmama.co", "id", dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("id")) ) diff --git a/multisrc/overrides/wpmangastream/komikstation/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikstation/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikstation/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikstation/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/komikstation/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikstation/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikstation/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikstation/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/komikstation/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikstation/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikstation/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikstation/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/komikstation/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikstation/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikstation/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikstation/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/komikstation/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikstation/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikstation/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikstation/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/komikstation/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/komikstation/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/komikstation/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/komikstation/res/web_hi_res_512.png diff --git a/multisrc/overrides/mangathemesia/komikstation/src/KomikStation.kt b/multisrc/overrides/mangathemesia/komikstation/src/KomikStation.kt new file mode 100644 index 000000000..51437f642 --- /dev/null +++ b/multisrc/overrides/mangathemesia/komikstation/src/KomikStation.kt @@ -0,0 +1,21 @@ +package eu.kanade.tachiyomi.extension.id.komikstation + +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia +import eu.kanade.tachiyomi.network.interceptor.rateLimit +import okhttp3.OkHttpClient +import java.util.concurrent.TimeUnit + +class KomikStation : MangaThemesia("Komik Station", "https://komikstation.co", "id") { + // Formerly "Komik Station (WP Manga Stream)" + override val id = 6148605743576635261 + + override val client: OkHttpClient = network.cloudflareClient.newBuilder() + .connectTimeout(10, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .rateLimit(4) + .build() + + override val projectPageString = "/project-list" + + override val hasProjectPage = true +} diff --git a/multisrc/overrides/wpmangareader/komikucom/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikucom/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/komikucom/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikucom/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/komikucom/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikucom/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/komikucom/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikucom/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/komikucom/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikucom/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/komikucom/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikucom/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/komikucom/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikucom/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/komikucom/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikucom/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/komikucom/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/komikucom/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/komikucom/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/komikucom/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/komikucom/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/komikucom/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/komikucom/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/komikucom/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/komikucom/src/KomikuCom.kt b/multisrc/overrides/mangathemesia/komikucom/src/KomikuCom.kt similarity index 58% rename from multisrc/overrides/wpmangareader/komikucom/src/KomikuCom.kt rename to multisrc/overrides/mangathemesia/komikucom/src/KomikuCom.kt index fa066e922..68b8f87d5 100644 --- a/multisrc/overrides/wpmangareader/komikucom/src/KomikuCom.kt +++ b/multisrc/overrides/mangathemesia/komikucom/src/KomikuCom.kt @@ -1,7 +1,7 @@ package eu.kanade.tachiyomi.extension.id.komikucom -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import java.text.SimpleDateFormat import java.util.Locale -class KomikuCom : WPMangaReader("Komiku.com", "https://komiku.com", "id", dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("id"))) +class KomikuCom : MangaThemesia("Komiku.com", "https://komiku.com", "id", dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("id"))) diff --git a/multisrc/overrides/wpmangastream/kumascans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/kumascans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/kumascans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/kumascans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/kumascans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/kumascans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/kumascans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/kumascans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/kumascans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/kumascans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/kumascans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/kumascans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/kumascans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/kumascans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/kumascans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/kumascans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/kumascans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/kumascans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/kumascans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/kumascans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/kumascans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/kumascans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/kumascans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/kumascans/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/kumascans/src/KumaScans.kt b/multisrc/overrides/mangathemesia/kumascans/src/KumaScans.kt similarity index 78% rename from multisrc/overrides/wpmangastream/kumascans/src/KumaScans.kt rename to multisrc/overrides/mangathemesia/kumascans/src/KumaScans.kt index 985b1a75b..4a0bde580 100644 --- a/multisrc/overrides/wpmangastream/kumascans/src/KumaScans.kt +++ b/multisrc/overrides/mangathemesia/kumascans/src/KumaScans.kt @@ -1,11 +1,11 @@ package eu.kanade.tachiyomi.extension.en.kumascans -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit -class KumaScans : WPMangaStream("Kuma Scans (Kuma Translation)", "https://kumascans.com", "en") { +class KumaScans : MangaThemesia("Kuma Scans (Kuma Translation)", "https://kumascans.com", "en") { override val client: OkHttpClient = network.cloudflareClient.newBuilder() .connectTimeout(10, TimeUnit.SECONDS) diff --git a/multisrc/overrides/wpmangareader/legionscan/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/legionscan/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/legionscan/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/legionscan/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/legionscan/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/legionscan/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/legionscan/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/legionscan/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/legionscan/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/legionscan/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/legionscan/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/legionscan/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/legionscan/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/legionscan/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/legionscan/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/legionscan/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/legionscan/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/legionscan/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/legionscan/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/legionscan/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/legionscan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/legionscan/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/legionscan/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/legionscan/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/legionscan/src/LegionScan.kt b/multisrc/overrides/mangathemesia/legionscan/src/LegionScan.kt similarity index 73% rename from multisrc/overrides/wpmangareader/legionscan/src/LegionScan.kt rename to multisrc/overrides/mangathemesia/legionscan/src/LegionScan.kt index 442383486..8d9560618 100644 --- a/multisrc/overrides/wpmangareader/legionscan/src/LegionScan.kt +++ b/multisrc/overrides/mangathemesia/legionscan/src/LegionScan.kt @@ -1,10 +1,10 @@ package eu.kanade.tachiyomi.extension.es.legionscan -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import java.text.SimpleDateFormat import java.util.Locale -class LegionScan : WPMangaReader("Legion Scan", "https://legionscans.com", "es", dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("es"))) { +class LegionScan : MangaThemesia("Legion Scan", "https://legionscans.com", "es", dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("es"))) { override val seriesTypeSelector = ".imptdt:contains(Tipo) :last-child" override val seriesStatusSelector = ".tsinfo .imptdt:contains(Estado) i" diff --git a/multisrc/overrides/wpmangareader/magusmanga/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/magusmanga/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/magusmanga/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/magusmanga/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/magusmanga/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/magusmanga/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/magusmanga/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/magusmanga/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/magusmanga/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/magusmanga/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/magusmanga/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/magusmanga/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/magusmanga/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/magusmanga/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/magusmanga/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/magusmanga/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/magusmanga/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/magusmanga/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/magusmanga/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/magusmanga/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/magusmanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/magusmanga/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/magusmanga/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/magusmanga/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/magusmanga/src/MagusManga.kt b/multisrc/overrides/mangathemesia/magusmanga/src/MagusManga.kt similarity index 59% rename from multisrc/overrides/wpmangareader/magusmanga/src/MagusManga.kt rename to multisrc/overrides/mangathemesia/magusmanga/src/MagusManga.kt index beb6f9601..2c7f38e54 100644 --- a/multisrc/overrides/wpmangareader/magusmanga/src/MagusManga.kt +++ b/multisrc/overrides/mangathemesia/magusmanga/src/MagusManga.kt @@ -1,7 +1,7 @@ package eu.kanade.tachiyomi.extension.ar.magusmanga -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import java.text.SimpleDateFormat import java.util.Locale -class MagusManga : WPMangaReader("Magus Manga", "https://magusmanga.com", "ar", dateFormat = SimpleDateFormat("MMMMM dd, yyyy", Locale("ar"))) +class MagusManga : MangaThemesia("Magus Manga", "https://magusmanga.com", "ar", dateFormat = SimpleDateFormat("MMMMM dd, yyyy", Locale("ar"))) diff --git a/multisrc/overrides/wpmangareader/mangakita/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangakita/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/mangakita/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangakita/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/mangakita/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangakita/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/mangakita/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangakita/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/mangakita/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangakita/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/mangakita/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangakita/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/mangakita/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangakita/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/mangakita/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangakita/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/mangakita/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangakita/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/mangakita/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangakita/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/mangakita/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mangakita/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/mangakita/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/mangakita/res/web_hi_res_512.png diff --git a/multisrc/overrides/mangathemesia/mangakita/src/MangaKita.kt b/multisrc/overrides/mangathemesia/mangakita/src/MangaKita.kt new file mode 100644 index 000000000..5b26a5b24 --- /dev/null +++ b/multisrc/overrides/mangathemesia/mangakita/src/MangaKita.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.id.mangakita + +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia + +class MangaKita : MangaThemesia("MangaKita", "https://mangakita.net", "id") { + override val hasProjectPage = true +} diff --git a/multisrc/overrides/wpmangastream/mangakyo/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangakyo/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangakyo/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangakyo/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mangakyo/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangakyo/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangakyo/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangakyo/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mangakyo/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangakyo/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangakyo/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangakyo/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mangakyo/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangakyo/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangakyo/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangakyo/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mangakyo/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangakyo/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangakyo/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangakyo/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mangakyo/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mangakyo/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangakyo/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/mangakyo/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/mangakyo/src/Mangakyo.kt b/multisrc/overrides/mangathemesia/mangakyo/src/Mangakyo.kt similarity index 75% rename from multisrc/overrides/wpmangastream/mangakyo/src/Mangakyo.kt rename to multisrc/overrides/mangathemesia/mangakyo/src/Mangakyo.kt index 1c75baf2a..bbb28d792 100644 --- a/multisrc/overrides/wpmangastream/mangakyo/src/Mangakyo.kt +++ b/multisrc/overrides/mangathemesia/mangakyo/src/Mangakyo.kt @@ -1,11 +1,11 @@ package eu.kanade.tachiyomi.extension.id.mangakyo -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit -class Mangakyo : WPMangaStream("Mangakyo", "https://www.mangakyo.me", "id") { +class Mangakyo : MangaThemesia("Mangakyo", "https://www.mangakyo.me", "id") { override val client: OkHttpClient = network.cloudflareClient.newBuilder() .connectTimeout(10, TimeUnit.SECONDS) diff --git a/multisrc/overrides/wpmangastream/mangaproz/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangaproz/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangaproz/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangaproz/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mangaproz/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangaproz/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangaproz/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangaproz/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mangaproz/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangaproz/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangaproz/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangaproz/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mangaproz/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangaproz/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangaproz/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangaproz/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mangaproz/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangaproz/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangaproz/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangaproz/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mangaproz/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mangaproz/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangaproz/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/mangaproz/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/mangaproz/src/MangaPro.kt b/multisrc/overrides/mangathemesia/mangaproz/src/MangaPro.kt similarity index 75% rename from multisrc/overrides/wpmangastream/mangaproz/src/MangaPro.kt rename to multisrc/overrides/mangathemesia/mangaproz/src/MangaPro.kt index c1fb207f0..3995a1b8f 100644 --- a/multisrc/overrides/wpmangastream/mangaproz/src/MangaPro.kt +++ b/multisrc/overrides/mangathemesia/mangaproz/src/MangaPro.kt @@ -1,6 +1,6 @@ package eu.kanade.tachiyomi.extension.ar.mangaproz -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga @@ -10,7 +10,7 @@ import org.jsoup.nodes.Document import org.jsoup.nodes.Element import java.util.concurrent.TimeUnit -class MangaPro : WPMangaStream("Manga Pro", "https://mangaprotm.com", "ar") { +class MangaPro : MangaThemesia("Manga Pro", "https://mangaprotm.com", "ar") { override val id: Long = 964048798769065340 override val client: OkHttpClient = network.cloudflareClient.newBuilder() @@ -20,7 +20,7 @@ class MangaPro : WPMangaStream("Manga Pro", "https://mangaprotm.com", "ar") { .build() override fun chapterListParse(response: Response): List<SChapter> = - super.chapterListParse(response).filter { !it.url.isNullOrEmpty() } + super.chapterListParse(response).filter { it.url.isNotEmpty() } override fun chapterFromElement(element: Element): SChapter { val urlElement = element.select(".lchx > a, span.leftoff a, div.eph-num > a").first() @@ -38,17 +38,14 @@ class MangaPro : WPMangaStream("Manga Pro", "https://mangaprotm.com", "ar") { chapter.name = chapter.name.replace("-*free".toRegex(RegexOption.IGNORE_CASE), "") chapter.date_upload = element.select("span.rightoff, time, span.chapterdate").firstOrNull()?.text() - ?.let { parseChapterDate(it) } - ?: 0 + .parseChapterDate() return chapter } override fun mangaDetailsParse(document: Document): SManga = super.mangaDetailsParse(document).apply { - document.select("div.bigcontent, div.animefull, div.main-info").firstOrNull() - ?.let { infoElement -> - thumbnail_url = - infoElement.select(mangaDetailsSelectorThumbnail).attr("abs:data-lazy-src") - } + document.selectFirst(seriesDetailsSelector)?.let { infoElement -> + thumbnail_url = infoElement.select(seriesThumbnailSelector).attr("abs:data-lazy-src") + } } } diff --git a/multisrc/overrides/wpmangastream/mangaraworg/src/MangaRawOrg.kt b/multisrc/overrides/mangathemesia/mangaraworg/src/MangaRawOrg.kt similarity index 86% rename from multisrc/overrides/wpmangastream/mangaraworg/src/MangaRawOrg.kt rename to multisrc/overrides/mangathemesia/mangaraworg/src/MangaRawOrg.kt index 6d6c0b776..5e7932f57 100644 --- a/multisrc/overrides/wpmangastream/mangaraworg/src/MangaRawOrg.kt +++ b/multisrc/overrides/mangathemesia/mangaraworg/src/MangaRawOrg.kt @@ -1,6 +1,6 @@ package eu.kanade.tachiyomi.extension.ja.mangaraworg -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.asObservableSuccess import eu.kanade.tachiyomi.network.interceptor.rateLimit @@ -17,8 +17,7 @@ import org.jsoup.nodes.Element import rx.Observable import java.util.concurrent.TimeUnit -class MangaRawOrg : WPMangaStream("Manga Raw.org", "https://mangaraw.org", "ja") { - // Formerly "Manga Raw" from WPMangaStream +class MangaRawOrg : MangaThemesia("Manga Raw.org", "https://mangaraw.org", "ja") { override val id = 6223520752496636410 override val client: OkHttpClient = network.cloudflareClient.newBuilder() @@ -28,8 +27,15 @@ class MangaRawOrg : WPMangaStream("Manga Raw.org", "https://mangaraw.org", "ja") .build() override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/search?order=popular&page=$page", headers) - override fun popularMangaSelector() = "div.bsx" - override fun popularMangaFromElement(element: Element): SManga { + + override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/search?order=update&page=$page", headers) + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request = + GET("$baseUrl/search?s=$query&page=$page") + + override fun searchMangaSelector() = "div.bsx" + + override fun searchMangaFromElement(element: Element): SManga { return SManga.create().apply { element.select("div.bigor > a").let { setUrlWithoutDomain(it.attr("href")) @@ -38,13 +44,12 @@ class MangaRawOrg : WPMangaStream("Manga Raw.org", "https://mangaraw.org", "ja") thumbnail_url = element.select("img").attr("abs:src") } } - override fun popularMangaNextPageSelector() = "a[rel=next]" - override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/search?order=update&page=$page", headers) - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request = - GET("$baseUrl/search?s=$query&page=$page") - override fun searchMangaFromElement(element: Element): SManga = popularMangaFromElement(element) + + override fun searchMangaNextPageSelector() = "a[rel=next]" + override fun mangaDetailsParse(document: Document): SManga = super.mangaDetailsParse(document) .apply { description = document.select("div.bottom").firstOrNull()?.ownText() } + override fun fetchPageList(chapter: SChapter): Observable<List<Page>> { return client.newCall(pageListRequest(chapter)) .asObservableSuccess() @@ -52,11 +57,13 @@ class MangaRawOrg : WPMangaStream("Manga Raw.org", "https://mangaraw.org", "ja") pageListParse(response, baseUrl + chapter.url.removeSuffix("/")) } } + private fun pageListParse(response: Response, chapterUrl: String): List<Page> { return response.asJsoup().select("span.page-link").first().ownText().substringAfterLast(" ").toInt() .let { lastNum -> IntRange(1, lastNum) } .map { num -> Page(num, "$chapterUrl/$num") } } + override fun imageUrlParse(document: Document): String = document.select("a.img-block img").attr("abs:src") override fun getFilterList(): FilterList = FilterList() } diff --git a/multisrc/overrides/wpmangareader/mangaschan/src/MangasChan.kt b/multisrc/overrides/mangathemesia/mangaschan/src/MangasChan.kt similarity index 77% rename from multisrc/overrides/wpmangareader/mangaschan/src/MangasChan.kt rename to multisrc/overrides/mangathemesia/mangaschan/src/MangasChan.kt index 315fb39bc..18206471d 100644 --- a/multisrc/overrides/wpmangareader/mangaschan/src/MangasChan.kt +++ b/multisrc/overrides/mangathemesia/mangaschan/src/MangasChan.kt @@ -1,13 +1,13 @@ package eu.kanade.tachiyomi.extension.pt.mangaschan -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.OkHttpClient import java.text.SimpleDateFormat import java.util.Locale import java.util.concurrent.TimeUnit -class MangasChan : WPMangaReader( +class MangasChan : MangaThemesia( "Mangás Chan", "https://mangaschan.com", "pt-BR", @@ -18,5 +18,5 @@ class MangasChan : WPMangaReader( .rateLimit(1, 2, TimeUnit.SECONDS) .build() - override val altName = "Nome alternativo: " + override val altNamePrefix = "Nome alternativo: " } diff --git a/multisrc/overrides/wpmangareader/mangasusu/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangasusu/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/mangasusu/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangasusu/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/mangasusu/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangasusu/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/mangasusu/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangasusu/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/mangasusu/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangasusu/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/mangasusu/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangasusu/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/mangasusu/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangasusu/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/mangasusu/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangasusu/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/mangasusu/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangasusu/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/mangasusu/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangasusu/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/mangasusu/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mangasusu/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/mangasusu/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/mangasusu/res/web_hi_res_512.png diff --git a/multisrc/overrides/mangathemesia/mangasusu/src/Mangasusu.kt b/multisrc/overrides/mangathemesia/mangasusu/src/Mangasusu.kt new file mode 100644 index 000000000..9e74d0f07 --- /dev/null +++ b/multisrc/overrides/mangathemesia/mangasusu/src/Mangasusu.kt @@ -0,0 +1,5 @@ +package eu.kanade.tachiyomi.extension.id.mangasusu + +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia + +class Mangasusu : MangaThemesia("Mangasusu", "https://mangasusu.co.in", "id", "/komik") diff --git a/multisrc/overrides/wpmangastream/mangaswat/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangaswat/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangaswat/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangaswat/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mangaswat/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangaswat/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangaswat/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangaswat/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mangaswat/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangaswat/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangaswat/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangaswat/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mangaswat/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangaswat/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangaswat/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangaswat/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mangaswat/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangaswat/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangaswat/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangaswat/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mangaswat/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mangaswat/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangaswat/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/mangaswat/res/web_hi_res_512.png diff --git a/multisrc/overrides/mangathemesia/mangaswat/src/MangaSwat.kt b/multisrc/overrides/mangathemesia/mangaswat/src/MangaSwat.kt new file mode 100644 index 000000000..166c192c5 --- /dev/null +++ b/multisrc/overrides/mangathemesia/mangaswat/src/MangaSwat.kt @@ -0,0 +1,57 @@ +package eu.kanade.tachiyomi.extension.ar.mangaswat + +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.source.model.Page +import okhttp3.Headers +import okhttp3.Request +import org.json.JSONObject +import org.jsoup.nodes.Document +import java.text.SimpleDateFormat +import java.util.Locale + +class MangaSwat : MangaThemesia( + "MangaSwat", + "https://swatmanga.co", + "ar", + dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.US) +) { + + override fun headersBuilder(): Headers.Builder = Headers.Builder() + .add( + "Accept", + "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" + ) + .add("Accept-language", "en-US,en;q=0.9") + .add("Referer", baseUrl) + + override fun imageRequest(page: Page): Request { + val newHeaders = headersBuilder() + .set("Accept", "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8") + .set("Referer", baseUrl) + .build() + return GET(page.imageUrl!!, newHeaders) + } + + override val seriesArtistSelector = "span:contains(الناشر) i" + override val seriesAuthorSelector = "span:contains(المؤلف) i" + override val seriesGenreSelector = "span:contains(التصنيف) a, .mgen a" + override val seriesTypeSelector = "span:contains(النوع) a" + override val seriesStatusSelector = "span:contains(الحالة)" + + override val pageSelector = "div#readerarea img" + + override fun pageListParse(document: Document): List<Page> { + var page: List<Page>? = null + val scriptContent = document.selectFirst("script:containsData(ts_reader)").data() + val removeHead = scriptContent.replace("ts_reader.run(", "").replace(");", "") + val jsonObject = JSONObject(removeHead) + val sourcesArray = jsonObject.getJSONArray("sources") + val imagesArray = sourcesArray.getJSONObject(0).getJSONArray("images") + page = List(imagesArray.length()) { i -> + Page(i, "", imagesArray[i].toString()) + } + + return page + } +} diff --git a/multisrc/overrides/wpmangastream/mangceh/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangceh/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangceh/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangceh/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mangceh/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangceh/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangceh/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangceh/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mangceh/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangceh/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangceh/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangceh/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mangceh/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangceh/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangceh/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangceh/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mangceh/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangceh/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangceh/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangceh/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mangceh/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mangceh/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/mangceh/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/mangceh/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/mangceh/src/Mareceh.kt b/multisrc/overrides/mangathemesia/mangceh/src/Mareceh.kt similarity index 78% rename from multisrc/overrides/wpmangastream/mangceh/src/Mareceh.kt rename to multisrc/overrides/mangathemesia/mangceh/src/Mareceh.kt index 73c554d79..891845d19 100644 --- a/multisrc/overrides/wpmangastream/mangceh/src/Mareceh.kt +++ b/multisrc/overrides/mangathemesia/mangceh/src/Mareceh.kt @@ -1,11 +1,11 @@ package eu.kanade.tachiyomi.extension.id.mangceh -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit -class Mareceh : WPMangaStream("Mareceh", "https://mareceh.com", "id") { +class Mareceh : MangaThemesia("Mareceh", "https://mareceh.com", "id") { override val versionId = 2 diff --git a/multisrc/overrides/wpmangareader/mangkomik/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangkomik/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/mangkomik/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangkomik/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/mangkomik/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangkomik/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/mangkomik/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangkomik/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/mangkomik/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangkomik/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/mangkomik/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangkomik/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/mangkomik/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangkomik/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/mangkomik/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangkomik/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/mangkomik/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mangkomik/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/mangkomik/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mangkomik/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/mangkomik/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mangkomik/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/mangkomik/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/mangkomik/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/mangkomik/src/MangKomik.kt b/multisrc/overrides/mangathemesia/mangkomik/src/MangKomik.kt similarity index 85% rename from multisrc/overrides/wpmangareader/mangkomik/src/MangKomik.kt rename to multisrc/overrides/mangathemesia/mangkomik/src/MangKomik.kt index 7de002c06..ad7c38dee 100644 --- a/multisrc/overrides/wpmangareader/mangkomik/src/MangKomik.kt +++ b/multisrc/overrides/mangathemesia/mangkomik/src/MangKomik.kt @@ -1,11 +1,11 @@ package eu.kanade.tachiyomi.extension.id.mangkomik -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.source.model.Page import org.jsoup.nodes.Document -class MangKomik : WPMangaReader("MangKomik", "https://mangkomik.com", "id") { +class MangKomik : MangaThemesia("MangKomik", "https://mangkomik.com", "id") { override val hasProjectPage = true override fun pageListParse(document: Document): List<Page> { diff --git a/multisrc/overrides/wpmangareader/manhuaraw/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/manhuaraw/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/manhuaraw/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/manhuaraw/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/manhuaraw/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/manhuaraw/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/manhuaraw/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/manhuaraw/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/manhuaraw/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/manhuaraw/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/manhuaraw/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/manhuaraw/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/manhuaraw/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/manhuaraw/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/manhuaraw/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/manhuaraw/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/manhuaraw/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/manhuaraw/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/manhuaraw/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/manhuaraw/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/manhuaraw/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/manhuaraw/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/manhuaraw/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/manhuaraw/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/manhwaindo/CHANGELOG.md b/multisrc/overrides/mangathemesia/manhwaindo/CHANGELOG.md similarity index 100% rename from multisrc/overrides/wpmangareader/manhwaindo/CHANGELOG.md rename to multisrc/overrides/mangathemesia/manhwaindo/CHANGELOG.md diff --git a/multisrc/overrides/wpmangareader/manhwaindo/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/manhwaindo/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/manhwaindo/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/manhwaindo/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/manhwaindo/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/manhwaindo/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/manhwaindo/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/manhwaindo/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/manhwaindo/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/manhwaindo/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/manhwaindo/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/manhwaindo/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/manhwaindo/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/manhwaindo/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/manhwaindo/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/manhwaindo/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/manhwaindo/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/manhwaindo/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/manhwaindo/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/manhwaindo/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/manhwaindo/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/manhwaindo/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/manhwaindo/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/manhwaindo/res/web_hi_res_512.png diff --git a/multisrc/overrides/mangathemesia/manhwaindo/src/ManhwaIndo.kt b/multisrc/overrides/mangathemesia/manhwaindo/src/ManhwaIndo.kt new file mode 100644 index 000000000..53a391e2c --- /dev/null +++ b/multisrc/overrides/mangathemesia/manhwaindo/src/ManhwaIndo.kt @@ -0,0 +1,22 @@ +package eu.kanade.tachiyomi.extension.id.manhwaindo + +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia +import okhttp3.Headers +import org.jsoup.nodes.Document +import java.text.SimpleDateFormat +import java.util.Locale + +class ManhwaIndo : MangaThemesia( + "Manhwa Indo", "https://manhwaindo.id", "id", "/series", + SimpleDateFormat("MMMM dd, yyyy", Locale("id")) +) { + + override fun headersBuilder(): Headers.Builder = Headers.Builder() + .add("Referer", baseUrl) + + override fun mangaDetailsParse(document: Document) = super.mangaDetailsParse(document).apply { + thumbnail_url = document.select(seriesThumbnailSelector).attr("abs:src") + } + + override val hasProjectPage = true +} diff --git a/multisrc/overrides/wpmangareader/martialmanga/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/martialmanga/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/martialmanga/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/martialmanga/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/martialmanga/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/martialmanga/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/martialmanga/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/martialmanga/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/martialmanga/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/martialmanga/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/martialmanga/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/martialmanga/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/martialmanga/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/martialmanga/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/martialmanga/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/martialmanga/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/martialmanga/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/martialmanga/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/martialmanga/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/martialmanga/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/martialmanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/martialmanga/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/martialmanga/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/martialmanga/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/masterkomik/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/masterkomik/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/masterkomik/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/masterkomik/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/masterkomik/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/masterkomik/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/masterkomik/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/masterkomik/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/masterkomik/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/masterkomik/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/masterkomik/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/masterkomik/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/masterkomik/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/masterkomik/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/masterkomik/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/masterkomik/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/masterkomik/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/masterkomik/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/masterkomik/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/masterkomik/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/masterkomik/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/masterkomik/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/masterkomik/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/masterkomik/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/masterkomik/src/MasterKomik.kt b/multisrc/overrides/mangathemesia/masterkomik/src/MasterKomik.kt similarity index 79% rename from multisrc/overrides/wpmangastream/masterkomik/src/MasterKomik.kt rename to multisrc/overrides/mangathemesia/masterkomik/src/MasterKomik.kt index 98f94a82a..e9082ffb6 100644 --- a/multisrc/overrides/wpmangastream/masterkomik/src/MasterKomik.kt +++ b/multisrc/overrides/mangathemesia/masterkomik/src/MasterKomik.kt @@ -1,11 +1,11 @@ package eu.kanade.tachiyomi.extension.id.masterkomik -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit -class MasterKomik : WPMangaStream("MasterKomik", "https://masterkomik.com", "id") { +class MasterKomik : MangaThemesia("MasterKomik", "https://masterkomik.com", "id") { override val client: OkHttpClient = network.cloudflareClient.newBuilder() .connectTimeout(10, TimeUnit.SECONDS) diff --git a/multisrc/overrides/wpmangareader/miauscan/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/miauscan/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/miauscan/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/miauscan/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/miauscan/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/miauscan/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/miauscan/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/miauscan/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/miauscan/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/miauscan/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/miauscan/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/miauscan/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/miauscan/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/miauscan/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/miauscan/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/miauscan/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/miauscan/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/miauscan/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/miauscan/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/miauscan/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/miauscan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/miauscan/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/miauscan/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/miauscan/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/miauscan/src/MiauScan.kt b/multisrc/overrides/mangathemesia/miauscan/src/MiauScan.kt similarity index 70% rename from multisrc/overrides/wpmangareader/miauscan/src/MiauScan.kt rename to multisrc/overrides/mangathemesia/miauscan/src/MiauScan.kt index f6f0f3323..466ca04d0 100644 --- a/multisrc/overrides/wpmangareader/miauscan/src/MiauScan.kt +++ b/multisrc/overrides/mangathemesia/miauscan/src/MiauScan.kt @@ -1,10 +1,10 @@ package eu.kanade.tachiyomi.extension.es.miauscan -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import java.text.SimpleDateFormat import java.util.Locale -class MiauScan : WPMangaReader( +class MiauScan : MangaThemesia( "Miau Scan", "https://miauscan.com", "es", diff --git a/multisrc/overrides/wpmangastream/mihentai/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mihentai/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mihentai/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mihentai/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mihentai/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mihentai/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mihentai/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mihentai/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mihentai/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mihentai/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mihentai/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mihentai/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mihentai/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mihentai/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mihentai/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mihentai/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mihentai/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/mihentai/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/mihentai/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/mihentai/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/mihentai/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mihentai/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/mihentai/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/mihentai/res/web_hi_res_512.png diff --git a/multisrc/overrides/mangathemesia/mihentai/src/Mihentai.kt b/multisrc/overrides/mangathemesia/mihentai/src/Mihentai.kt new file mode 100644 index 000000000..e16f1253e --- /dev/null +++ b/multisrc/overrides/mangathemesia/mihentai/src/Mihentai.kt @@ -0,0 +1,74 @@ +package eu.kanade.tachiyomi.extension.all.mihentai + +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia +import eu.kanade.tachiyomi.source.model.FilterList +import eu.kanade.tachiyomi.source.model.Page +import kotlinx.serialization.json.jsonArray +import kotlinx.serialization.json.jsonPrimitive +import okhttp3.HttpUrl.Companion.toHttpUrl +import org.jsoup.nodes.Document +import java.lang.IllegalArgumentException + +class Mihentai : MangaThemesia("Mihentai", "https://mihentai.com", "all") { + override fun pageListParse(document: Document): List<Page> { + val htmlPages = document.select(pageSelector) + .filterNot { it.attr("abs:src").isNullOrEmpty() } + .mapIndexed { i, img -> + val pageUrl = img.attr("abs:src").substringAfter(baseUrl).prependIndent(baseUrl) + Page(i, "", pageUrl) + } + .toMutableList() + + countViews(document) + + if (htmlPages.isNotEmpty()) { return htmlPages } + + val docString = document.toString() + val imageListJson = JSON_IMAGE_LIST_REGEX.find(docString)?.destructured?.toList()?.get(0).orEmpty() + val imageList = try { + json.parseToJsonElement(imageListJson).jsonArray + } catch (_: IllegalArgumentException) { + emptyList() + } + val baseResolver = baseUrl.toHttpUrl() + + val scriptPages = imageList.mapIndexed { i, jsonEl -> + val imageUrl = jsonEl.jsonPrimitive.content + Page(i, "", baseResolver.resolve(imageUrl).toString()) + } + + return scriptPages + } + + private class StatusFilter : SelectFilter( + "Status", + arrayOf( + Pair("All", ""), + Pair("Publishing", "publishing"), + Pair("Finished", "finished"), + Pair("Dropped", "drop") + ) + ) + + private class TypeFilter : SelectFilter( + "Type", + arrayOf( + Pair("Default", ""), + Pair("Manga", "Manga"), + Pair("Manhwa", "Manhwa"), + Pair("Manhua", "Manhua"), + Pair("Webtoon", "webtoon"), + Pair("One-Shot", "One-Shot"), + Pair("Doujin", "doujin") + ) + ) + + override fun getFilterList(): FilterList = FilterList( + listOf( + StatusFilter(), + TypeFilter(), + OrderByFilter(), + GenreListFilter(getGenreList()) + ) + ) +} diff --git a/multisrc/overrides/wpmangareader/modescanlator/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/modescanlator/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/modescanlator/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/modescanlator/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/modescanlator/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/modescanlator/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/modescanlator/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/modescanlator/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/modescanlator/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/modescanlator/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/modescanlator/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/modescanlator/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/modescanlator/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/modescanlator/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/modescanlator/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/modescanlator/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/modescanlator/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/modescanlator/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/modescanlator/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/modescanlator/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/modescanlator/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/modescanlator/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/modescanlator/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/modescanlator/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/modescanlator/src/ModeScanlator.kt b/multisrc/overrides/mangathemesia/modescanlator/src/ModeScanlator.kt similarity index 80% rename from multisrc/overrides/wpmangareader/modescanlator/src/ModeScanlator.kt rename to multisrc/overrides/mangathemesia/modescanlator/src/ModeScanlator.kt index b14c19439..56c4215be 100644 --- a/multisrc/overrides/wpmangareader/modescanlator/src/ModeScanlator.kt +++ b/multisrc/overrides/mangathemesia/modescanlator/src/ModeScanlator.kt @@ -1,13 +1,13 @@ package eu.kanade.tachiyomi.extension.pt.modescanlator -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.OkHttpClient import java.text.SimpleDateFormat import java.util.Locale import java.util.concurrent.TimeUnit -class ModeScanlator : WPMangaReader( +class ModeScanlator : MangaThemesia( "Mode Scanlator", "https://modescanlator.com", "pt-BR", @@ -22,5 +22,5 @@ class ModeScanlator : WPMangaReader( .rateLimit(1, 2, TimeUnit.SECONDS) .build() - override val altName = "Nome alternativo: " + override val altNamePrefix = "Nome alternativo: " } diff --git a/multisrc/overrides/wpmangareader/ngomik/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/ngomik/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/ngomik/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/ngomik/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/ngomik/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/ngomik/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/ngomik/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/ngomik/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/ngomik/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/ngomik/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/ngomik/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/ngomik/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/ngomik/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/ngomik/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/ngomik/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/ngomik/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/ngomik/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/ngomik/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/ngomik/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/ngomik/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/ngomik/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/ngomik/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/ngomik/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/ngomik/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/ngomik/src/Ngomik.kt b/multisrc/overrides/mangathemesia/ngomik/src/Ngomik.kt similarity index 78% rename from multisrc/overrides/wpmangareader/ngomik/src/Ngomik.kt rename to multisrc/overrides/mangathemesia/ngomik/src/Ngomik.kt index 87d911b7d..645f8baca 100644 --- a/multisrc/overrides/wpmangareader/ngomik/src/Ngomik.kt +++ b/multisrc/overrides/mangathemesia/ngomik/src/Ngomik.kt @@ -1,9 +1,9 @@ package eu.kanade.tachiyomi.extension.id.ngomik -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import okhttp3.Headers -class Ngomik : WPMangaReader("Ngomik", "https://ngomik.net", "id", "/all-komik") { +class Ngomik : MangaThemesia("Ngomik", "https://ngomik.net", "id", "/all-komik") { private val userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36" override fun headersBuilder(): Headers.Builder = Headers.Builder() diff --git a/multisrc/overrides/wpmangastream/nonstopscans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/nonstopscans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/nonstopscans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/nonstopscans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/nonstopscans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/nonstopscans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/nonstopscans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/nonstopscans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/nonstopscans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/nonstopscans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/nonstopscans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/nonstopscans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/nonstopscans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/nonstopscans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/nonstopscans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/nonstopscans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/nonstopscans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/nonstopscans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/nonstopscans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/nonstopscans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/nonstopscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/nonstopscans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/nonstopscans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/nonstopscans/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/nonstopscans/src/NonStopScans.kt b/multisrc/overrides/mangathemesia/nonstopscans/src/NonStopScans.kt similarity index 76% rename from multisrc/overrides/wpmangastream/nonstopscans/src/NonStopScans.kt rename to multisrc/overrides/mangathemesia/nonstopscans/src/NonStopScans.kt index 39d43335b..a51427b77 100644 --- a/multisrc/overrides/wpmangastream/nonstopscans/src/NonStopScans.kt +++ b/multisrc/overrides/mangathemesia/nonstopscans/src/NonStopScans.kt @@ -1,11 +1,11 @@ package eu.kanade.tachiyomi.extension.en.nonstopscans -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit -class NonStopScans : WPMangaStream("Non-Stop Scans", "https://www.nonstopscans.com", "en") { +class NonStopScans : MangaThemesia("Non-Stop Scans", "https://www.nonstopscans.com", "en") { override val client: OkHttpClient = network.cloudflareClient.newBuilder() .connectTimeout(10, TimeUnit.SECONDS) diff --git a/multisrc/overrides/wpmangastream/noxsubs/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/noxsubs/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/noxsubs/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/noxsubs/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/noxsubs/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/noxsubs/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/noxsubs/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/noxsubs/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/noxsubs/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/noxsubs/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/noxsubs/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/noxsubs/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/noxsubs/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/noxsubs/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/noxsubs/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/noxsubs/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/noxsubs/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/noxsubs/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/noxsubs/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/noxsubs/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/noxsubs/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/noxsubs/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/noxsubs/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/noxsubs/res/web_hi_res_512.png diff --git a/multisrc/overrides/mangathemesia/noxsubs/src/NoxSubs.kt b/multisrc/overrides/mangathemesia/noxsubs/src/NoxSubs.kt new file mode 100644 index 000000000..184128c0c --- /dev/null +++ b/multisrc/overrides/mangathemesia/noxsubs/src/NoxSubs.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.extension.tr.noxsubs + +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia +import java.text.SimpleDateFormat +import java.util.Locale + +class NoxSubs : MangaThemesia("NoxSubs", "https://noxsubs.com", "tr", dateFormat = SimpleDateFormat("MMM d, yyyy", Locale("tr"))) diff --git a/multisrc/overrides/wpmangastream/omegascans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/omegascans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/omegascans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/omegascans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/omegascans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/omegascans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/omegascans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/omegascans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/omegascans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/omegascans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/omegascans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/omegascans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/omegascans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/omegascans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/omegascans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/omegascans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/omegascans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/omegascans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/omegascans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/omegascans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/omegascans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/omegascans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/omegascans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/omegascans/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/origamiorpheans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/origamiorpheans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/origamiorpheans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/origamiorpheans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/origamiorpheans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/origamiorpheans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/origamiorpheans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/origamiorpheans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/origamiorpheans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/origamiorpheans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/origamiorpheans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/origamiorpheans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/origamiorpheans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/origamiorpheans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/origamiorpheans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/origamiorpheans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/origamiorpheans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/origamiorpheans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/origamiorpheans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/origamiorpheans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/origamiorpheans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/origamiorpheans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/origamiorpheans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/origamiorpheans/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/origamiorpheans/src/OrigamiOrpheans.kt b/multisrc/overrides/mangathemesia/origamiorpheans/src/OrigamiOrpheans.kt similarity index 79% rename from multisrc/overrides/wpmangareader/origamiorpheans/src/OrigamiOrpheans.kt rename to multisrc/overrides/mangathemesia/origamiorpheans/src/OrigamiOrpheans.kt index 265603789..039c4f207 100644 --- a/multisrc/overrides/wpmangareader/origamiorpheans/src/OrigamiOrpheans.kt +++ b/multisrc/overrides/mangathemesia/origamiorpheans/src/OrigamiOrpheans.kt @@ -1,13 +1,13 @@ package eu.kanade.tachiyomi.extension.pt.origamiorpheans -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.OkHttpClient import java.text.SimpleDateFormat import java.util.Locale import java.util.concurrent.TimeUnit -class OrigamiOrpheans : WPMangaReader( +class OrigamiOrpheans : MangaThemesia( "Origami Orpheans", "https://origami-orpheans.com.br", "pt-BR", @@ -21,5 +21,5 @@ class OrigamiOrpheans : WPMangaReader( .rateLimit(1, 2, TimeUnit.SECONDS) .build() - override val altName = "Nomes alternativos: " + override val altNamePrefix = "Nomes alternativos: " } diff --git a/multisrc/overrides/wpmangareader/ozulscans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/ozulscans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/ozulscans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/ozulscans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/ozulscans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/ozulscans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/ozulscans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/ozulscans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/ozulscans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/ozulscans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/ozulscans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/ozulscans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/ozulscans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/ozulscans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/ozulscans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/ozulscans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/ozulscans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/ozulscans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/ozulscans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/ozulscans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/ozulscans/src/OzulScans.kt b/multisrc/overrides/mangathemesia/ozulscans/src/OzulScans.kt similarity index 70% rename from multisrc/overrides/wpmangareader/ozulscans/src/OzulScans.kt rename to multisrc/overrides/mangathemesia/ozulscans/src/OzulScans.kt index 3c947b19d..7c3d8b75d 100644 --- a/multisrc/overrides/wpmangareader/ozulscans/src/OzulScans.kt +++ b/multisrc/overrides/mangathemesia/ozulscans/src/OzulScans.kt @@ -1,10 +1,10 @@ package eu.kanade.tachiyomi.extension.ar.ozulscans -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import java.text.SimpleDateFormat import java.util.Locale -class OzulScans : WPMangaReader( +class OzulScans : MangaThemesia( "Ozul Scans", "https://ozulscans.com", "ar", diff --git a/multisrc/overrides/wpmangareader/patatescans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/patatescans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/patatescans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/patatescans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/patatescans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/patatescans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/patatescans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/patatescans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/patatescans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/patatescans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/patatescans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/patatescans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/patatescans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/patatescans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/patatescans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/patatescans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/patatescans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/patatescans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/patatescans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/patatescans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/patatescans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/patatescans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/patatescans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/patatescans/res/web_hi_res_512.png diff --git a/multisrc/overrides/mangathemesia/patatescans/src/Patatescans.kt b/multisrc/overrides/mangathemesia/patatescans/src/Patatescans.kt new file mode 100644 index 000000000..8f96ffc4c --- /dev/null +++ b/multisrc/overrides/mangathemesia/patatescans/src/Patatescans.kt @@ -0,0 +1,5 @@ +package eu.kanade.tachiyomi.extension.fr.patatescans + +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia + +class Patatescans : MangaThemesia("Patatescans", "https://patatescans.com", "fr") diff --git a/multisrc/overrides/wpmangastream/phantomscans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/phantomscans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/phantomscans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/phantomscans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/phantomscans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/phantomscans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/phantomscans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/phantomscans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/phantomscans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/phantomscans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/phantomscans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/phantomscans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/phantomscans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/phantomscans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/phantomscans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/phantomscans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/phantomscans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/phantomscans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/phantomscans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/phantomscans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/phantomscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/phantomscans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/phantomscans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/phantomscans/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/phoenixfansub/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/phoenixfansub/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/phoenixfansub/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/phoenixfansub/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/phoenixfansub/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/phoenixfansub/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/phoenixfansub/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/phoenixfansub/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/phoenixfansub/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/phoenixfansub/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/phoenixfansub/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/phoenixfansub/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/phoenixfansub/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/phoenixfansub/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/phoenixfansub/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/phoenixfansub/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/phoenixfansub/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/phoenixfansub/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/phoenixfansub/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/phoenixfansub/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/phoenixfansub/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/phoenixfansub/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/phoenixfansub/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/phoenixfansub/res/web_hi_res_512.png diff --git a/multisrc/overrides/mangathemesia/phoenixfansub/src/PhoenixFansub.kt b/multisrc/overrides/mangathemesia/phoenixfansub/src/PhoenixFansub.kt new file mode 100644 index 000000000..5b2fdbf33 --- /dev/null +++ b/multisrc/overrides/mangathemesia/phoenixfansub/src/PhoenixFansub.kt @@ -0,0 +1,15 @@ +package eu.kanade.tachiyomi.extension.es.phoenixfansub + +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia +import java.text.SimpleDateFormat +import java.util.Locale + +class PhoenixFansub : MangaThemesia( + "Phoenix Fansub", + "https://phoenixfansub.com", + "es", + dateFormat = SimpleDateFormat("MMM d, yyyy", Locale("es")) +) { + + override val altNamePrefix: String = "Nombre alternativo: " +} diff --git a/multisrc/overrides/wpmangareader/pmscans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/pmscans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/pmscans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/pmscans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/pmscans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/pmscans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/pmscans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/pmscans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/pmscans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/pmscans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/pmscans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/pmscans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/pmscans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/pmscans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/pmscans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/pmscans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/pmscans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/pmscans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/pmscans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/pmscans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/pmscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/pmscans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/pmscans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/pmscans/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/randomscans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/randomscans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/randomscans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/randomscans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/randomscans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/randomscans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/randomscans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/randomscans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/randomscans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/randomscans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/randomscans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/randomscans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/randomscans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/randomscans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/randomscans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/randomscans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/randomscans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/randomscans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/randomscans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/randomscans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/randomscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/randomscans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/randomscans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/randomscans/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/rawkuma/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/rawkuma/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/rawkuma/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/rawkuma/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/rawkuma/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/rawkuma/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/rawkuma/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/rawkuma/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/rawkuma/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/rawkuma/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/rawkuma/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/rawkuma/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/rawkuma/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/rawkuma/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/rawkuma/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/rawkuma/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/rawkuma/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/rawkuma/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/rawkuma/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/rawkuma/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/rawkuma/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/rawkuma/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/rawkuma/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/rawkuma/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/rawkuma/src/Rawkuma.kt b/multisrc/overrides/mangathemesia/rawkuma/src/Rawkuma.kt similarity index 75% rename from multisrc/overrides/wpmangastream/rawkuma/src/Rawkuma.kt rename to multisrc/overrides/mangathemesia/rawkuma/src/Rawkuma.kt index 25d4b8f73..bce788723 100644 --- a/multisrc/overrides/wpmangastream/rawkuma/src/Rawkuma.kt +++ b/multisrc/overrides/mangathemesia/rawkuma/src/Rawkuma.kt @@ -1,11 +1,11 @@ package eu.kanade.tachiyomi.extension.ja.rawkuma -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit -class Rawkuma : WPMangaStream("Rawkuma", "https://rawkuma.com/", "ja") { +class Rawkuma : MangaThemesia("Rawkuma", "https://rawkuma.com/", "ja") { override val client: OkHttpClient = network.cloudflareClient.newBuilder() .connectTimeout(10, TimeUnit.SECONDS) diff --git a/multisrc/overrides/wpmangastream/readkomik/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/readkomik/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/readkomik/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/readkomik/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/readkomik/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/readkomik/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/readkomik/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/readkomik/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/readkomik/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/readkomik/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/readkomik/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/readkomik/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/readkomik/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/readkomik/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/readkomik/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/readkomik/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/readkomik/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/readkomik/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/readkomik/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/readkomik/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/readkomik/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/readkomik/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/readkomik/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/readkomik/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/readkomik/src/ReadKomik.kt b/multisrc/overrides/mangathemesia/readkomik/src/ReadKomik.kt similarity index 77% rename from multisrc/overrides/wpmangastream/readkomik/src/ReadKomik.kt rename to multisrc/overrides/mangathemesia/readkomik/src/ReadKomik.kt index c7a2b6963..98a881a7f 100644 --- a/multisrc/overrides/wpmangastream/readkomik/src/ReadKomik.kt +++ b/multisrc/overrides/mangathemesia/readkomik/src/ReadKomik.kt @@ -1,11 +1,11 @@ package eu.kanade.tachiyomi.extension.en.readkomik -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit -class ReadKomik : WPMangaStream("Readkomik", "https://readkomik.com", "en") { +class ReadKomik : MangaThemesia("Readkomik", "https://readkomik.com", "en") { override val client: OkHttpClient = network.cloudflareClient.newBuilder() .connectTimeout(10, TimeUnit.SECONDS) diff --git a/multisrc/overrides/wpmangareader/realmscans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/realmscans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/realmscans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/realmscans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/realmscans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/realmscans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/realmscans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/realmscans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/realmscans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/realmscans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/realmscans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/realmscans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/realmscans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/realmscans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/realmscans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/realmscans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/realmscans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/realmscans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/realmscans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/realmscans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/realmscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/realmscans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/realmscans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/realmscans/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/realmscans/src/RealmScans.kt b/multisrc/overrides/mangathemesia/realmscans/src/RealmScans.kt similarity index 59% rename from multisrc/overrides/wpmangareader/realmscans/src/RealmScans.kt rename to multisrc/overrides/mangathemesia/realmscans/src/RealmScans.kt index 63c0b9d78..db08abf09 100644 --- a/multisrc/overrides/wpmangareader/realmscans/src/RealmScans.kt +++ b/multisrc/overrides/mangathemesia/realmscans/src/RealmScans.kt @@ -1,15 +1,16 @@ package eu.kanade.tachiyomi.extension.en.realmscans -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import eu.kanade.tachiyomi.source.model.Page import kotlinx.serialization.json.jsonArray import kotlinx.serialization.json.jsonPrimitive import okhttp3.OkHttpClient import org.jsoup.nodes.Document +import java.lang.IllegalArgumentException import java.util.concurrent.TimeUnit -class RealmScans : WPMangaReader( +class RealmScans : MangaThemesia( "Realm Scans", "https://realmscans.com", "en", @@ -21,31 +22,30 @@ class RealmScans : WPMangaReader( .build() override fun pageListParse(document: Document): List<Page> { - val pages = document.select(pageSelector) + val htmlPages = document.select(pageSelector) .mapIndexed { i, img -> val url = img.attr("data-wpfc-original-src") .ifEmpty { img.attr("abs:src") } Page(i, "", url) } - .toMutableList() countViews(document) - if (pages.isNotEmpty()) { - return pages - } + // Some sites also loads pages via javascript + if (htmlPages.isNotEmpty()) { return htmlPages } val docString = document.toString() - val imageListRegex = "\\\"images.*?:.*?(\\[.*?\\])".toRegex() - val imageListJson = imageListRegex.find(docString)!!.destructured.toList()[0] - - val imageList = json.parseToJsonElement(imageListJson).jsonArray - - pages += imageList.mapIndexed { i, jsonEl -> + val imageListJson = JSON_IMAGE_LIST_REGEX.find(docString)?.destructured?.toList()?.get(0).orEmpty() + val imageList = try { + json.parseToJsonElement(imageListJson).jsonArray + } catch (_: IllegalArgumentException) { + emptyList() + } + val scriptPages = imageList.mapIndexed { i, jsonEl -> Page(i, "", jsonEl.jsonPrimitive.content) } - return pages + return scriptPages } } diff --git a/multisrc/overrides/wpmangareader/sekaikomik/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/sekaikomik/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/sekaikomik/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/sekaikomik/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/sekaikomik/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/sekaikomik/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/sekaikomik/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/sekaikomik/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/sekaikomik/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/sekaikomik/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/sekaikomik/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/sekaikomik/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/sekaikomik/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/sekaikomik/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/sekaikomik/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/sekaikomik/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/sekaikomik/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/sekaikomik/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/sekaikomik/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/sekaikomik/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/sekaikomik/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/sekaikomik/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/sekaikomik/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/sekaikomik/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/sekaikomik/src/Sekaikomik.kt b/multisrc/overrides/mangathemesia/sekaikomik/src/Sekaikomik.kt similarity index 60% rename from multisrc/overrides/wpmangareader/sekaikomik/src/Sekaikomik.kt rename to multisrc/overrides/mangathemesia/sekaikomik/src/Sekaikomik.kt index 683d84dd0..b07a83af1 100644 --- a/multisrc/overrides/wpmangareader/sekaikomik/src/Sekaikomik.kt +++ b/multisrc/overrides/mangathemesia/sekaikomik/src/Sekaikomik.kt @@ -1,7 +1,7 @@ package eu.kanade.tachiyomi.extension.id.sekaikomik -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import java.text.SimpleDateFormat import java.util.Locale -class Sekaikomik : WPMangaReader("Sekaikomik", "https://www.sekaikomik.live", "id", dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("id"))) +class Sekaikomik : MangaThemesia("Sekaikomik", "https://www.sekaikomik.live", "id", dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("id"))) diff --git a/multisrc/overrides/wpmangastream/sektedoujin/src/SekteDoujin.kt b/multisrc/overrides/mangathemesia/sektedoujin/src/SekteDoujin.kt similarity index 66% rename from multisrc/overrides/wpmangastream/sektedoujin/src/SekteDoujin.kt rename to multisrc/overrides/mangathemesia/sektedoujin/src/SekteDoujin.kt index f7d36b154..4d7af6f7e 100644 --- a/multisrc/overrides/wpmangastream/sektedoujin/src/SekteDoujin.kt +++ b/multisrc/overrides/mangathemesia/sektedoujin/src/SekteDoujin.kt @@ -1,13 +1,13 @@ package eu.kanade.tachiyomi.extension.id.sektedoujin -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.OkHttpClient import java.text.SimpleDateFormat import java.util.Locale import java.util.concurrent.TimeUnit -class SekteDoujin : WPMangaStream("Sekte Doujin", "https://sektedoujin.club", "id", SimpleDateFormat("MMMM dd, yyyy", Locale.forLanguageTag("id"))) { +class SekteDoujin : MangaThemesia("Sekte Doujin", "https://sektedoujin.club", "id", dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale.forLanguageTag("id"))) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() .connectTimeout(10, TimeUnit.SECONDS) diff --git a/multisrc/overrides/wpmangastream/sektekomik/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/sektekomik/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/sektekomik/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/sektekomik/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/sektekomik/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/sektekomik/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/sektekomik/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/sektekomik/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/sektekomik/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/sektekomik/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/sektekomik/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/sektekomik/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/sektekomik/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/sektekomik/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/sektekomik/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/sektekomik/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/sektekomik/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/sektekomik/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/sektekomik/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/sektekomik/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/sektekomik/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/sektekomik/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/sektekomik/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/sektekomik/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/sektekomik/src/SekteKomik.kt b/multisrc/overrides/mangathemesia/sektekomik/src/SekteKomik.kt similarity index 86% rename from multisrc/overrides/wpmangastream/sektekomik/src/SekteKomik.kt rename to multisrc/overrides/mangathemesia/sektekomik/src/SekteKomik.kt index 26e325a8e..885d79ab7 100644 --- a/multisrc/overrides/wpmangastream/sektekomik/src/SekteKomik.kt +++ b/multisrc/overrides/mangathemesia/sektekomik/src/SekteKomik.kt @@ -1,6 +1,6 @@ package eu.kanade.tachiyomi.extension.id.sektekomik -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.interceptor.rateLimit import eu.kanade.tachiyomi.source.model.Page @@ -11,7 +11,7 @@ import java.text.SimpleDateFormat import java.util.Locale import java.util.concurrent.TimeUnit -class SekteKomik : WPMangaStream("Sekte Komik", "https://sektekomik.com", "id", SimpleDateFormat("MMMM dd, yyyy", Locale("id"))) { +class SekteKomik : MangaThemesia("Sekte Komik", "https://sektekomik.com", "id", dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("id"))) { // Formerly "Sekte Komik (WP Manga Stream)" override val id = 7866629035053218469 diff --git a/multisrc/overrides/wpmangastream/sheamanga/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/sheamanga/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/sheamanga/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/sheamanga/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/sheamanga/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/sheamanga/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/sheamanga/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/sheamanga/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/sheamanga/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/sheamanga/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/sheamanga/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/sheamanga/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/sheamanga/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/sheamanga/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/sheamanga/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/sheamanga/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/sheamanga/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/sheamanga/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/sheamanga/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/sheamanga/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/sheamanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/sheamanga/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/sheamanga/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/sheamanga/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/sheamanga/src/SheaManga.kt b/multisrc/overrides/mangathemesia/sheamanga/src/SheaManga.kt similarity index 87% rename from multisrc/overrides/wpmangastream/sheamanga/src/SheaManga.kt rename to multisrc/overrides/mangathemesia/sheamanga/src/SheaManga.kt index d935a39a8..341f6cff7 100644 --- a/multisrc/overrides/wpmangastream/sheamanga/src/SheaManga.kt +++ b/multisrc/overrides/mangathemesia/sheamanga/src/SheaManga.kt @@ -1,6 +1,6 @@ package eu.kanade.tachiyomi.extension.id.sheamanga -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.Dns import okhttp3.OkHttpClient @@ -8,7 +8,7 @@ import java.text.SimpleDateFormat import java.util.Locale import java.util.concurrent.TimeUnit -class SheaManga : WPMangaStream( +class SheaManga : MangaThemesia( "Shea Manga", "https://sheakomik.com", "id", diff --git a/multisrc/overrides/wpmangareader/shootingstarscans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/shootingstarscans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/shootingstarscans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/shootingstarscans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/shootingstarscans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/shootingstarscans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/shootingstarscans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/shootingstarscans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/shootingstarscans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/shootingstarscans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/shootingstarscans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/shootingstarscans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/shootingstarscans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/shootingstarscans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/shootingstarscans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/shootingstarscans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/shootingstarscans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/shootingstarscans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/shootingstarscans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/shootingstarscans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/shootingstarscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/shootingstarscans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/shootingstarscans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/shootingstarscans/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/silencescan/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/silencescan/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/silencescan/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/silencescan/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/silencescan/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/silencescan/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/silencescan/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/silencescan/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/silencescan/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/silencescan/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/silencescan/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/silencescan/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/silencescan/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/silencescan/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/silencescan/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/silencescan/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/silencescan/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/silencescan/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/silencescan/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/silencescan/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/silencescan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/silencescan/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/silencescan/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/silencescan/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/silencescan/src/SilenceScan.kt b/multisrc/overrides/mangathemesia/silencescan/src/SilenceScan.kt similarity index 67% rename from multisrc/overrides/wpmangareader/silencescan/src/SilenceScan.kt rename to multisrc/overrides/mangathemesia/silencescan/src/SilenceScan.kt index d4442ab6d..37f3f80c4 100644 --- a/multisrc/overrides/wpmangareader/silencescan/src/SilenceScan.kt +++ b/multisrc/overrides/mangathemesia/silencescan/src/SilenceScan.kt @@ -1,6 +1,6 @@ package eu.kanade.tachiyomi.extension.pt.silencescan -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import eu.kanade.tachiyomi.source.model.SManga import okhttp3.OkHttpClient @@ -8,7 +8,7 @@ import java.text.SimpleDateFormat import java.util.Locale import java.util.concurrent.TimeUnit -class SilenceScan : WPMangaReader( +class SilenceScan : MangaThemesia( "Silence Scan", "https://silencescan.com.br", "pt-BR", @@ -23,11 +23,12 @@ class SilenceScan : WPMangaReader( .rateLimit(1, 2, TimeUnit.SECONDS) .build() - override val altName = "Nome alternativo: " + override val altNamePrefix = "Nome alternativo: " - override fun parseStatus(status: String) = when { - status.contains("Em Andamento") -> SManga.ONGOING - status.contains("Completo") -> SManga.COMPLETED + override fun String?.parseStatus() = when { + this == null -> SManga.UNKNOWN + this.contains("Em Andamento") -> SManga.ONGOING + this.contains("Completo") -> SManga.COMPLETED else -> SManga.UNKNOWN } } diff --git a/multisrc/overrides/wpmangareader/skullscans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/skullscans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/skullscans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/skullscans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/skullscans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/skullscans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/skullscans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/skullscans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/skullscans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/skullscans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/skullscans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/skullscans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/skullscans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/skullscans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/skullscans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/skullscans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/skullscans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/skullscans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/skullscans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/skullscans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/skullscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/skullscans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/skullscans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/skullscans/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/summerfansub/src/SummerFansub.kt b/multisrc/overrides/mangathemesia/summerfansub/src/SummerFansub.kt similarity index 83% rename from multisrc/overrides/wpmangastream/summerfansub/src/SummerFansub.kt rename to multisrc/overrides/mangathemesia/summerfansub/src/SummerFansub.kt index 169344c87..ee9375c8f 100644 --- a/multisrc/overrides/wpmangastream/summerfansub/src/SummerFansub.kt +++ b/multisrc/overrides/mangathemesia/summerfansub/src/SummerFansub.kt @@ -1,13 +1,13 @@ package eu.kanade.tachiyomi.extension.pt.summerfansub -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.OkHttpClient import java.text.SimpleDateFormat import java.util.Locale import java.util.concurrent.TimeUnit -class SummerFansub : WPMangaStream( +class SummerFansub : MangaThemesia( "Summer Fansub", "https://smmr.in", "pt-BR", diff --git a/multisrc/overrides/wpmangareader/sushiscan/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/sushiscan/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/sushiscan/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/sushiscan/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/sushiscan/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/sushiscan/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/sushiscan/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/sushiscan/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/sushiscan/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/sushiscan/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/sushiscan/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/sushiscan/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/sushiscan/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/sushiscan/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/sushiscan/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/sushiscan/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/sushiscan/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/sushiscan/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/sushiscan/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/sushiscan/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/sushiscan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/sushiscan/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/sushiscan/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/sushiscan/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/sushiscan/src/SushiScan.kt b/multisrc/overrides/mangathemesia/sushiscan/src/SushiScan.kt similarity index 50% rename from multisrc/overrides/wpmangareader/sushiscan/src/SushiScan.kt rename to multisrc/overrides/mangathemesia/sushiscan/src/SushiScan.kt index 0207ad436..3dfc0d873 100644 --- a/multisrc/overrides/wpmangareader/sushiscan/src/SushiScan.kt +++ b/multisrc/overrides/mangathemesia/sushiscan/src/SushiScan.kt @@ -1,18 +1,19 @@ package eu.kanade.tachiyomi.extension.fr.sushiscan -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.source.model.SManga import java.text.SimpleDateFormat import java.util.Locale -class SushiScan : WPMangaReader("Sushi-Scan", "https://sushiscan.su", "fr", dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale.FRENCH)) { - override val altName = "Nom alternatif : " +class SushiScan : MangaThemesia("Sushi-Scan", "https://sushiscan.su", "fr", dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale.FRENCH)) { + override val altNamePrefix = "Nom alternatif : " override val seriesStatusSelector = ".tsinfo .imptdt:contains(Statut)" override val seriesArtistSelector = ".tsinfo .imptdt:contains(Dessinateur) i" - override fun parseStatus(status: String) = when { - status.contains("En Cours") -> SManga.ONGOING - status.contains("Terminé") -> SManga.COMPLETED + override fun String?.parseStatus(): Int = when { + this == null -> SManga.UNKNOWN + this.contains("En Cours", ignoreCase = true) -> SManga.ONGOING + this.contains("Terminé", ignoreCase = true) -> SManga.COMPLETED else -> SManga.UNKNOWN } } diff --git a/multisrc/overrides/wpmangastream/tempestmanga/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/tempestmanga/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/tempestmanga/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/tempestmanga/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/tempestmanga/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/tempestmanga/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/tempestmanga/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/tempestmanga/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/tempestmanga/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/tempestmanga/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/tempestmanga/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/tempestmanga/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/tempestmanga/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/tempestmanga/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/tempestmanga/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/tempestmanga/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/tempestmanga/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/tempestmanga/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/tempestmanga/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/tempestmanga/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/tempestmanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/tempestmanga/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/tempestmanga/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/tempestmanga/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/tempestmanga/src/TempestManga.kt b/multisrc/overrides/mangathemesia/tempestmanga/src/TempestManga.kt similarity index 75% rename from multisrc/overrides/wpmangastream/tempestmanga/src/TempestManga.kt rename to multisrc/overrides/mangathemesia/tempestmanga/src/TempestManga.kt index 3c79e3398..1402f3bfa 100644 --- a/multisrc/overrides/wpmangastream/tempestmanga/src/TempestManga.kt +++ b/multisrc/overrides/mangathemesia/tempestmanga/src/TempestManga.kt @@ -1,15 +1,15 @@ package eu.kanade.tachiyomi.extension.tr.tempestmanga -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.OkHttpClient import java.text.SimpleDateFormat import java.util.Locale import java.util.concurrent.TimeUnit -class TempestManga : WPMangaStream( +class TempestManga : MangaThemesia( "Tempest Manga", "https://manga.tempestfansub.com", "tr", - SimpleDateFormat("MMMM dd, yyyy", Locale("tr")) + dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("tr")) ) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() diff --git a/multisrc/overrides/wpmangastream/theapolloteam/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/theapolloteam/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/theapolloteam/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/theapolloteam/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/theapolloteam/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/theapolloteam/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/theapolloteam/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/theapolloteam/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/theapolloteam/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/theapolloteam/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/theapolloteam/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/theapolloteam/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/theapolloteam/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/theapolloteam/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/theapolloteam/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/theapolloteam/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/theapolloteam/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/theapolloteam/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/theapolloteam/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/theapolloteam/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/theapolloteam/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/theapolloteam/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/theapolloteam/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/theapolloteam/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/tsundokutraducoes/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/tsundokutraducoes/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/tsundokutraducoes/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/tsundokutraducoes/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/tsundokutraducoes/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/tsundokutraducoes/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/tsundokutraducoes/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/tsundokutraducoes/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/tsundokutraducoes/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/tsundokutraducoes/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/tsundokutraducoes/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/tsundokutraducoes/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/tsundokutraducoes/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/tsundokutraducoes/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/tsundokutraducoes/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/tsundokutraducoes/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/tsundokutraducoes/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/tsundokutraducoes/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/tsundokutraducoes/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/tsundokutraducoes/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/tsundokutraducoes/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/tsundokutraducoes/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/tsundokutraducoes/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/tsundokutraducoes/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/tsundokutraducoes/src/TsundokuTraducoes.kt b/multisrc/overrides/mangathemesia/tsundokutraducoes/src/TsundokuTraducoes.kt similarity index 81% rename from multisrc/overrides/wpmangareader/tsundokutraducoes/src/TsundokuTraducoes.kt rename to multisrc/overrides/mangathemesia/tsundokutraducoes/src/TsundokuTraducoes.kt index 260486674..01f514367 100644 --- a/multisrc/overrides/wpmangareader/tsundokutraducoes/src/TsundokuTraducoes.kt +++ b/multisrc/overrides/mangathemesia/tsundokutraducoes/src/TsundokuTraducoes.kt @@ -1,13 +1,13 @@ package eu.kanade.tachiyomi.extension.pt.tsundokutraducoes -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.OkHttpClient import java.text.SimpleDateFormat import java.util.Locale import java.util.concurrent.TimeUnit -class TsundokuTraducoes : WPMangaReader( +class TsundokuTraducoes : MangaThemesia( "Tsundoku Traduções", "https://tsundoku.com.br", "pt-BR", @@ -18,7 +18,7 @@ class TsundokuTraducoes : WPMangaReader( .rateLimit(1, 2, TimeUnit.SECONDS) .build() - override val altName = "Nome alternativo: " + override val altNamePrefix = "Nome alternativo: " override fun searchMangaSelector() = ".utao .uta .imgu, .listupd .bs .bsx:not(:has(span.novelabel)), .listo .bs .bsx:not(:has(span.novelabel))" } diff --git a/multisrc/overrides/wpmangareader/turktoon/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/turktoon/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/turktoon/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/turktoon/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/turktoon/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/turktoon/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/turktoon/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/turktoon/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/turktoon/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/turktoon/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/turktoon/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/turktoon/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/turktoon/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/turktoon/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/turktoon/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/turktoon/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/turktoon/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/turktoon/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/turktoon/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/turktoon/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/turktoon/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/turktoon/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/turktoon/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/turktoon/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/turktoon/src/TurkToon.kt b/multisrc/overrides/mangathemesia/turktoon/src/TurkToon.kt similarity index 69% rename from multisrc/overrides/wpmangareader/turktoon/src/TurkToon.kt rename to multisrc/overrides/mangathemesia/turktoon/src/TurkToon.kt index 7ed32f486..625cee0a7 100644 --- a/multisrc/overrides/wpmangareader/turktoon/src/TurkToon.kt +++ b/multisrc/overrides/mangathemesia/turktoon/src/TurkToon.kt @@ -1,10 +1,10 @@ package eu.kanade.tachiyomi.extension.tr.turktoon -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import java.text.SimpleDateFormat import java.util.Locale -class TurkToon : WPMangaReader( +class TurkToon : MangaThemesia( "TurkToon", "https://turktoon.com", "tr", dateFormat = SimpleDateFormat("MMM d, yyyy", Locale("tr")) ) diff --git a/multisrc/overrides/wpmangastream/westmanga/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/westmanga/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/westmanga/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/westmanga/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/westmanga/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/westmanga/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/westmanga/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/westmanga/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/westmanga/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/westmanga/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/westmanga/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/westmanga/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/westmanga/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/westmanga/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/westmanga/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/westmanga/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/westmanga/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/westmanga/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/westmanga/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/westmanga/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/westmanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/westmanga/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/westmanga/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/westmanga/res/web_hi_res_512.png diff --git a/multisrc/overrides/mangathemesia/westmanga/src/WestManga.kt b/multisrc/overrides/mangathemesia/westmanga/src/WestManga.kt new file mode 100644 index 000000000..2d460ba15 --- /dev/null +++ b/multisrc/overrides/mangathemesia/westmanga/src/WestManga.kt @@ -0,0 +1,22 @@ +package eu.kanade.tachiyomi.extension.id.westmanga + +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia +import eu.kanade.tachiyomi.network.interceptor.rateLimit +import okhttp3.OkHttpClient +import java.util.concurrent.TimeUnit + +class WestManga : MangaThemesia("West Manga", "https://westmanga.info", "id") { + // Formerly "West Manga (WP Manga Stream)" + override val id = 8883916630998758688 + + override val client: OkHttpClient = network.cloudflareClient.newBuilder() + .connectTimeout(10, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .rateLimit(4) + .build() + + override val seriesDetailsSelector = ".seriestucontent" + override val seriesTypeSelector = ".infotable tr:contains(Type) td:last-child" + + override val hasProjectPage = true +} diff --git a/multisrc/overrides/wpmangareader/whitecloudpavilionnew/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/whitecloudpavilionnew/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/whitecloudpavilionnew/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/whitecloudpavilionnew/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/whitecloudpavilionnew/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/whitecloudpavilionnew/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/whitecloudpavilionnew/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/whitecloudpavilionnew/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/whitecloudpavilionnew/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/whitecloudpavilionnew/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/whitecloudpavilionnew/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/whitecloudpavilionnew/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/whitecloudpavilionnew/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/whitecloudpavilionnew/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/whitecloudpavilionnew/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/whitecloudpavilionnew/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/whitecloudpavilionnew/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/whitecloudpavilionnew/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/whitecloudpavilionnew/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/whitecloudpavilionnew/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/whitecloudpavilionnew/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/whitecloudpavilionnew/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/whitecloudpavilionnew/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/whitecloudpavilionnew/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/whitecloudpavilionnew/src/WhiteCloudPavilion.kt b/multisrc/overrides/mangathemesia/whitecloudpavilionnew/src/WhiteCloudPavilion.kt similarity index 64% rename from multisrc/overrides/wpmangareader/whitecloudpavilionnew/src/WhiteCloudPavilion.kt rename to multisrc/overrides/mangathemesia/whitecloudpavilionnew/src/WhiteCloudPavilion.kt index 26694c638..47b868ace 100644 --- a/multisrc/overrides/wpmangareader/whitecloudpavilionnew/src/WhiteCloudPavilion.kt +++ b/multisrc/overrides/mangathemesia/whitecloudpavilionnew/src/WhiteCloudPavilion.kt @@ -1,8 +1,8 @@ package eu.kanade.tachiyomi.extension.en.whitecloudpavilionnew -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia -class WhiteCloudPavilion : WPMangaReader( +class WhiteCloudPavilion : MangaThemesia( "White Cloud Pavilion (New)", "https://www.whitecloudpavilion.com", lang = "en", diff --git a/multisrc/overrides/wpmangareader/worldromancetranslation/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/worldromancetranslation/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/worldromancetranslation/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/worldromancetranslation/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/worldromancetranslation/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/worldromancetranslation/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/worldromancetranslation/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/worldromancetranslation/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/worldromancetranslation/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/worldromancetranslation/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/worldromancetranslation/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/worldromancetranslation/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/worldromancetranslation/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/worldromancetranslation/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/worldromancetranslation/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/worldromancetranslation/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/worldromancetranslation/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/worldromancetranslation/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangareader/worldromancetranslation/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/worldromancetranslation/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangareader/worldromancetranslation/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/worldromancetranslation/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangareader/worldromancetranslation/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/worldromancetranslation/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangareader/worldromancetranslation/src/WorldRomanceTranslation.kt b/multisrc/overrides/mangathemesia/worldromancetranslation/src/WorldRomanceTranslation.kt similarity index 90% rename from multisrc/overrides/wpmangareader/worldromancetranslation/src/WorldRomanceTranslation.kt rename to multisrc/overrides/mangathemesia/worldromancetranslation/src/WorldRomanceTranslation.kt index c01075e42..8bfdd991d 100644 --- a/multisrc/overrides/wpmangareader/worldromancetranslation/src/WorldRomanceTranslation.kt +++ b/multisrc/overrides/mangathemesia/worldromancetranslation/src/WorldRomanceTranslation.kt @@ -1,13 +1,13 @@ package eu.kanade.tachiyomi.extension.id.worldromancetranslation -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.source.model.SManga import okhttp3.Headers import org.jsoup.nodes.Document import java.text.SimpleDateFormat import java.util.Locale -class WorldRomanceTranslation : WPMangaReader( +class WorldRomanceTranslation : MangaThemesia( "World Romance Translation", "https://wrt.my.id", "id", diff --git a/multisrc/overrides/wpmangastream/xcalibrscans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/xcalibrscans/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/xcalibrscans/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/xcalibrscans/res/mipmap-hdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/xcalibrscans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/xcalibrscans/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/xcalibrscans/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/xcalibrscans/res/mipmap-mdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/xcalibrscans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/xcalibrscans/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/xcalibrscans/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/xcalibrscans/res/mipmap-xhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/xcalibrscans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/xcalibrscans/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/xcalibrscans/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/xcalibrscans/res/mipmap-xxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/xcalibrscans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/xcalibrscans/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from multisrc/overrides/wpmangastream/xcalibrscans/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/mangathemesia/xcalibrscans/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/multisrc/overrides/wpmangastream/xcalibrscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/xcalibrscans/res/web_hi_res_512.png similarity index 100% rename from multisrc/overrides/wpmangastream/xcalibrscans/res/web_hi_res_512.png rename to multisrc/overrides/mangathemesia/xcalibrscans/res/web_hi_res_512.png diff --git a/multisrc/overrides/wpmangastream/xcalibrscans/src/interceptor/MirrorImageInterceptor.kt b/multisrc/overrides/mangathemesia/xcalibrscans/src/interceptor/MirrorImageInterceptor.kt similarity index 100% rename from multisrc/overrides/wpmangastream/xcalibrscans/src/interceptor/MirrorImageInterceptor.kt rename to multisrc/overrides/mangathemesia/xcalibrscans/src/interceptor/MirrorImageInterceptor.kt diff --git a/multisrc/overrides/wpmangastream/xcalibrscans/src/interceptor/SplittedImageInterceptor.kt b/multisrc/overrides/mangathemesia/xcalibrscans/src/interceptor/SplittedImageInterceptor.kt similarity index 100% rename from multisrc/overrides/wpmangastream/xcalibrscans/src/interceptor/SplittedImageInterceptor.kt rename to multisrc/overrides/mangathemesia/xcalibrscans/src/interceptor/SplittedImageInterceptor.kt diff --git a/multisrc/overrides/wpmangastream/xcalibrscans/src/xCaliBRScans.kt b/multisrc/overrides/mangathemesia/xcalibrscans/src/xCaliBRScans.kt similarity index 78% rename from multisrc/overrides/wpmangastream/xcalibrscans/src/xCaliBRScans.kt rename to multisrc/overrides/mangathemesia/xcalibrscans/src/xCaliBRScans.kt index 0552ae929..3e9e2f508 100644 --- a/multisrc/overrides/wpmangastream/xcalibrscans/src/xCaliBRScans.kt +++ b/multisrc/overrides/mangathemesia/xcalibrscans/src/xCaliBRScans.kt @@ -4,20 +4,17 @@ import eu.kanade.tachiyomi.extension.en.xcalibrscans.interceptor.MirrorImageInte import eu.kanade.tachiyomi.extension.en.xcalibrscans.interceptor.SplittedImageInterceptor import eu.kanade.tachiyomi.extension.en.xcalibrscans.interceptor.prepareMirrorImageForInterceptor import eu.kanade.tachiyomi.extension.en.xcalibrscans.interceptor.prepareSplittedImageForInterceptor -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import eu.kanade.tachiyomi.source.model.Page -import kotlinx.serialization.json.Json import kotlinx.serialization.json.jsonArray import kotlinx.serialization.json.jsonPrimitive -import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import org.jsoup.nodes.Document -import uy.kohesive.injekt.injectLazy +import java.lang.IllegalArgumentException import java.util.concurrent.TimeUnit -class xCaliBRScans : WPMangaStream("xCaliBR Scans", "https://xcalibrscans.com", "en") { - private val json: Json by injectLazy() +class xCaliBRScans : MangaThemesia("xCaliBR Scans", "https://xcalibrscans.com", "en") { override val client: OkHttpClient = network.cloudflareClient.newBuilder() .connectTimeout(10, TimeUnit.SECONDS) @@ -69,24 +66,22 @@ class xCaliBRScans : WPMangaStream("xCaliBR Scans", "https://xcalibrscans.com", } } - val docString = document.toString() - val imageListRegex = Regex("\\\"images.*?:.*?(\\[.*?\\])") - val imageListJson = imageListRegex.find(docString)!!.destructured.toList()[0] - - val imageList = json.parseToJsonElement(imageListJson).jsonArray - val baseResolver = baseUrl.toHttpUrl() - - val scriptPages = imageList.mapIndexed { i, jsonEl -> - val imageUrl = jsonEl.jsonPrimitive.content - Page(i, "", baseResolver.resolve(imageUrl).toString()) - } - - if (htmlPages.size < scriptPages.size) { - htmlPages += scriptPages - } - countViews(document) - return htmlPages.distinctBy { it.imageUrl } + // Some sites also loads pages via javascript + if (htmlPages.isNotEmpty()) { return htmlPages } + + val docString = document.toString() + val imageListJson = JSON_IMAGE_LIST_REGEX.find(docString)?.destructured?.toList()?.get(0).orEmpty() + val imageList = try { + json.parseToJsonElement(imageListJson).jsonArray + } catch (_: IllegalArgumentException) { + emptyList() + } + val scriptPages = imageList.mapIndexed { i, jsonEl -> + Page(i, "", jsonEl.jsonPrimitive.content) + } + + return scriptPages } } diff --git a/multisrc/overrides/wpmangareader/acescans/src/AceScans.kt b/multisrc/overrides/wpmangareader/acescans/src/AceScans.kt deleted file mode 100644 index 5c1b0e47b..000000000 --- a/multisrc/overrides/wpmangareader/acescans/src/AceScans.kt +++ /dev/null @@ -1,22 +0,0 @@ -package eu.kanade.tachiyomi.extension.en.acescans - -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader -import eu.kanade.tachiyomi.source.model.Page -import org.jsoup.nodes.Document -import org.jsoup.nodes.Element - -class AceScans : WPMangaReader("Ace Scans", "https://acescans.xyz", "en") { - override fun searchMangaFromElement(element: Element) = - super.searchMangaFromElement(element).apply { - thumbnail_url = element.select("img").attr("abs:data-src") - } - - override fun mangaDetailsParse(document: Document) = super.mangaDetailsParse(document).apply { - thumbnail_url = document.select(seriesThumbnailSelector).attr("abs:data-src") - } - - override fun pageListParse(document: Document): List<Page> = - document.select(pageSelector).filterNot { - it.attr("abs:data-src").isNullOrEmpty() - }.mapIndexed { i, img -> Page(i, "", img.attr("abs:data-src")) } -} diff --git a/multisrc/overrides/wpmangareader/default/AndroidManifest.xml b/multisrc/overrides/wpmangareader/default/AndroidManifest.xml deleted file mode 100644 index 490d1a53d..000000000 --- a/multisrc/overrides/wpmangareader/default/AndroidManifest.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="eu.kanade.tachiyomi.extension"> - - <application> - <activity - android:name="eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReaderUrlActivity" - android:excludeFromRecents="true" - android:exported="true" - android:theme="@android:style/Theme.NoDisplay"> - <intent-filter> - <action android:name="android.intent.action.VIEW" /> - - <category android:name="android.intent.category.DEFAULT" /> - <category android:name="android.intent.category.BROWSABLE" /> - <data - android:host="${SOURCEHOST}" - android:pathPattern="/.*/..*" - android:scheme="${SOURCESCHEME}" /> - </intent-filter> - <intent-filter> - <action android:name="android.intent.action.VIEW" /> - - <category android:name="android.intent.category.DEFAULT" /> - <category android:name="android.intent.category.BROWSABLE" /> - <data - android:host="${SOURCEHOST}" - android:pathPattern="/..*" - android:scheme="${SOURCESCHEME}" /> - </intent-filter> - </activity> - </application> -</manifest> \ No newline at end of file diff --git a/multisrc/overrides/wpmangareader/kiryuu/src/Kiryuu.kt b/multisrc/overrides/wpmangareader/kiryuu/src/Kiryuu.kt deleted file mode 100644 index 0e0d784fc..000000000 --- a/multisrc/overrides/wpmangareader/kiryuu/src/Kiryuu.kt +++ /dev/null @@ -1,59 +0,0 @@ -package eu.kanade.tachiyomi.extension.id.kiryuu - -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader -import eu.kanade.tachiyomi.network.interceptor.rateLimit -import eu.kanade.tachiyomi.source.model.SManga -import okhttp3.OkHttpClient -import org.jsoup.nodes.Document -import java.text.SimpleDateFormat -import java.util.Locale -import java.util.concurrent.TimeUnit - -class Kiryuu : WPMangaReader("Kiryuu", "https://kiryuu.id", "id", dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("id"))) { - // Formerly "Kiryuu (WP Manga Stream)" - override val id = 3639673976007021338 - - override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .connectTimeout(10, TimeUnit.SECONDS) - .readTimeout(30, TimeUnit.SECONDS) - .rateLimit(4) - .build() - - // manga details - override fun mangaDetailsParse(document: Document) = SManga.create().apply { - author = document.select(".listinfo li:contains(Author), .tsinfo .imptdt:nth-child(4) i, .infotable tr:contains(author) td:last-child") - .firstOrNull()?.ownText() - - artist = document.select(".infotable tr:contains(artist) td:last-child, .tsinfo .imptdt:contains(artist) i") - .firstOrNull()?.ownText() - - genre = document.select("div.gnr a, .mgen a, .seriestugenre a").joinToString { it.text() } - status = parseStatus( - document.select("div.listinfo li:contains(Status), .tsinfo .imptdt:contains(status), .tsinfo .imptdt:contains(الحالة), .infotable tr:contains(status) td") - .text() - ) - - title = document.selectFirst(".thumb img").attr("title") - thumbnail_url = document.select(".thumb img").attr("src") - description = document.select(".desc, .entry-content[itemprop=description]").joinToString("\n") { it.text() } - - // add series type(manga/manhwa/manhua/other) thinggy to genre - document.select(seriesTypeSelector).firstOrNull()?.ownText()?.let { - if (it.isEmpty().not() && genre!!.contains(it, true).not()) { - genre += if (genre!!.isEmpty()) it else ", $it" - } - } - - // add alternative name to manga description - document.select(altNameSelector).firstOrNull()?.ownText()?.let { - if (it.isEmpty().not()) { - description += when { - description!!.isEmpty() -> altName + it - else -> "\n\n$altName" + it - } - } - } - } - - override val hasProjectPage = true -} diff --git a/multisrc/overrides/wpmangareader/komiklab/src/KomikLab.kt b/multisrc/overrides/wpmangareader/komiklab/src/KomikLab.kt deleted file mode 100644 index 7e4f523e1..000000000 --- a/multisrc/overrides/wpmangareader/komiklab/src/KomikLab.kt +++ /dev/null @@ -1,51 +0,0 @@ -package eu.kanade.tachiyomi.extension.id.komiklab - -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader -import eu.kanade.tachiyomi.source.model.SManga -import org.jsoup.nodes.Document -import org.jsoup.nodes.Element - -class KomikLab : WPMangaReader("Komik Lab", "https://komiklab.com", "id") { - override val hasProjectPage = true - - override fun mangaDetailsParse(document: Document) = SManga.create().apply { - author = document.select(".listinfo li:contains(Author), .tsinfo .imptdt:nth-child(4) i, .infotable tr:contains(author) td:last-child") - .firstOrNull()?.ownText() - - artist = document.select(".infotable tr:contains(artist) td:last-child, .tsinfo .imptdt:contains(artist) i") - .firstOrNull()?.ownText() - - genre = document.select("div.gnr a, .mgen a, .seriestugenre a").joinToString { it.text() } - status = parseStatus( - document.select("div.listinfo li:contains(Status), .tsinfo .imptdt:contains(status), .tsinfo .imptdt:contains(الحالة), .infotable tr:contains(status) td") - .text() - ) - - title = document.selectFirst("h1.entry-title").text() - thumbnail_url = document.select(".infomanga > div[itemprop=image] img, .thumb img").attr("abs:data-src") - description = document.select(".desc, .entry-content[itemprop=description]").joinToString("\n") { it.text() } - - // add series type(manga/manhwa/manhua/other) thinggy to genre - document.select(seriesTypeSelector).firstOrNull()?.ownText()?.let { - if (it.isEmpty().not() && genre!!.contains(it, true).not()) { - genre += if (genre!!.isEmpty()) it else ", $it" - } - } - - // add alternative name to manga description - document.select(altNameSelector).firstOrNull()?.ownText()?.let { - if (it.isEmpty().not()) { - description += when { - description!!.isEmpty() -> altName + it - else -> "\n\n$altName" + it - } - } - } - } - - override fun searchMangaFromElement(element: Element) = SManga.create().apply { - thumbnail_url = element.select("img").attr("abs:data-src") - title = element.select("a").attr("title") - setUrlWithoutDomain(element.select("a").attr("href")) - } -} diff --git a/multisrc/overrides/wpmangareader/mangakita/src/MangaKita.kt b/multisrc/overrides/wpmangareader/mangakita/src/MangaKita.kt deleted file mode 100644 index 3224b3921..000000000 --- a/multisrc/overrides/wpmangareader/mangakita/src/MangaKita.kt +++ /dev/null @@ -1,7 +0,0 @@ -package eu.kanade.tachiyomi.extension.id.mangakita - -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader - -class MangaKita : WPMangaReader("MangaKita", "https://mangakita.net", "id") { - override val hasProjectPage = true -} diff --git a/multisrc/overrides/wpmangareader/mangasusu/src/Mangasusu.kt b/multisrc/overrides/wpmangareader/mangasusu/src/Mangasusu.kt deleted file mode 100644 index c143658b8..000000000 --- a/multisrc/overrides/wpmangareader/mangasusu/src/Mangasusu.kt +++ /dev/null @@ -1,5 +0,0 @@ -package eu.kanade.tachiyomi.extension.id.mangasusu - -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader - -class Mangasusu : WPMangaReader("Mangasusu", "https://mangasusu.co.in", "id", "/komik") diff --git a/multisrc/overrides/wpmangareader/manhwaindo/src/ManhwaIndo.kt b/multisrc/overrides/wpmangareader/manhwaindo/src/ManhwaIndo.kt deleted file mode 100644 index 17420cdb2..000000000 --- a/multisrc/overrides/wpmangareader/manhwaindo/src/ManhwaIndo.kt +++ /dev/null @@ -1,46 +0,0 @@ -package eu.kanade.tachiyomi.extension.id.manhwaindo - -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader -import eu.kanade.tachiyomi.source.model.SManga -import okhttp3.Headers -import org.jsoup.nodes.Document -import java.text.SimpleDateFormat -import java.util.Locale - -class ManhwaIndo : WPMangaReader( - "Manhwa Indo", "https://manhwaindo.id", "id", "/series", - SimpleDateFormat("MMMM dd, yyyy", Locale("id")) -) { - - override fun headersBuilder(): Headers.Builder = Headers.Builder() - .add("Referer", baseUrl) - - // manga details - override fun mangaDetailsParse(document: Document) = SManga.create().apply { - author = document.select(seriesAuthorSelector).firstOrNull()?.ownText() - artist = document.select(seriesArtistSelector).firstOrNull()?.ownText() - genre = document.select(seriesGenreSelector).joinToString { it.text() } - status = parseStatus(document.select(seriesStatusSelector).text()) - thumbnail_url = document.select(seriesThumbnailSelector).attr("abs:src") - description = document.select(seriesDescriptionSelector).joinToString("\n") { it.text() } - - // add series type(manga/manhwa/manhua/other) thinggy to genre - document.select(seriesTypeSelector).firstOrNull()?.ownText()?.let { - if (it.isEmpty().not() && genre!!.contains(it, true).not()) { - genre += if (genre!!.isEmpty()) it else ", $it" - } - } - - // add alternative name to manga description - document.select(altNameSelector).firstOrNull()?.ownText()?.let { - if (it.isEmpty().not()) { - description += when { - description!!.isEmpty() -> altName + it - else -> "\n\n$altName" + it - } - } - } - } - - override val hasProjectPage = true -} diff --git a/multisrc/overrides/wpmangareader/patatescans/src/Patatescans.kt b/multisrc/overrides/wpmangareader/patatescans/src/Patatescans.kt deleted file mode 100644 index fb87a7d7b..000000000 --- a/multisrc/overrides/wpmangareader/patatescans/src/Patatescans.kt +++ /dev/null @@ -1,5 +0,0 @@ -package eu.kanade.tachiyomi.extension.fr.patatescans - -import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader - -class Patatescans : WPMangaReader("Patatescans", "https://patatescans.com", "fr") diff --git a/multisrc/overrides/wpmangastream/asurascans/src/AsuraScansFactory.kt b/multisrc/overrides/wpmangastream/asurascans/src/AsuraScansFactory.kt deleted file mode 100644 index fd2edd353..000000000 --- a/multisrc/overrides/wpmangastream/asurascans/src/AsuraScansFactory.kt +++ /dev/null @@ -1,83 +0,0 @@ -package eu.kanade.tachiyomi.extension.all.asurascans - -import eu.kanade.tachiyomi.source.SourceFactory -import eu.kanade.tachiyomi.source.model.Page -import eu.kanade.tachiyomi.source.model.SManga -import org.jsoup.nodes.Document -import java.text.SimpleDateFormat -import java.util.Locale - -class AsuraScansFactory : SourceFactory { - override fun createSources() = listOf( - AsuraScansEn(), - AsuraScansTr() - ) -} - -class AsuraScansEn : AsuraScans("https://www.asurascans.com", "en", SimpleDateFormat("MMM d, yyyy", Locale.US)) { - - override val mangaDetailsSelectorDescription = "div.desc p, div.entry-content p, div[itemprop=description]:not(:has(p))" - - override val pageSelector = "div.rdminimal > img, div.rdminimal > p > img, div.rdminimal > a > img, div.rdminimal > p > a > img" - - // Skip scriptPages - override fun pageListParse(document: Document): List<Page> { - return document.select(pageSelector) - .filterNot { it.attr("src").isNullOrEmpty() } - .mapIndexed { i, img -> Page(i, "", img.attr("src")) } - } -} - -class AsuraScansTr : AsuraScans("https://tr.asurascans.com", "tr", SimpleDateFormat("MMM d, yyyy", Locale("tr"))) { - override fun mangaDetailsParse(document: Document): SManga { - return SManga.create().apply { - document.select("div.bigcontent").firstOrNull()?.let { infoElement -> - status = parseStatus(infoElement.select(".imptdt:contains(Durum) i").firstOrNull()?.ownText()) - infoElement.select(".fmed b:contains(Yazar)+span").firstOrNull()?.ownText().let { - if (it.isNullOrBlank().not() && it != "N/A" && it != "-") { - author = it - } - } - infoElement.select(".fmed b:contains(Çizer)+span").firstOrNull()?.ownText().let { - if (it.isNullOrBlank().not() && it != "N/A" && it != "-") { - artist = it - } - } - description = infoElement.select("div.desc p, div.entry-content p").joinToString("\n") { it.text() } - thumbnail_url = infoElement.select("div.thumb img").imgAttr() - - val genres = infoElement.select(".mgen a") - .map { element -> element.text().lowercase(Locale.ROOT) } - .toMutableSet() - - // add series type(manga/manhwa/manhua/other) thinggy to genre - document.select(seriesTypeSelector).firstOrNull()?.ownText()?.let { - if (it.isEmpty().not() && genres.contains(it).not()) { - genres.add(it.lowercase(Locale.ROOT)) - } - } - - genre = genres.toList().map { it.capitalize(Locale.ROOT) }.joinToString(", ") - - // add alternative name to manga description - document.select(altNameSelector).firstOrNull()?.ownText()?.let { - if (it.isBlank().not() && it != "N/A" && it != "-") { - description = when { - description.isNullOrBlank() -> altName + it - else -> description + "\n\n$altName" + it - } - } - } - } - } - } - override val seriesTypeSelector = ".imptdt:contains(Tür) a" - override val altName: String = "Alternatif isim: " - - override fun parseStatus(element: String?): Int = when { - element == null -> SManga.UNKNOWN - listOf("Devam Ediyor").any { it.contains(element, ignoreCase = true) } -> SManga.ONGOING - listOf("Tamamlandı").any { it.contains(element, ignoreCase = true) } -> SManga.COMPLETED - else -> SManga.UNKNOWN - } -} diff --git a/multisrc/overrides/wpmangastream/batotoscans/src/BatotoScans.kt b/multisrc/overrides/wpmangastream/batotoscans/src/BatotoScans.kt deleted file mode 100644 index 66f68c265..000000000 --- a/multisrc/overrides/wpmangastream/batotoscans/src/BatotoScans.kt +++ /dev/null @@ -1,7 +0,0 @@ -package eu.kanade.tachiyomi.extension.en.batotoscans - -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream - -class BatotoScans : WPMangaStream("Snudae Scans", "https://snudaescans.com", "en") { - override val id = 4418350353197826372L -} diff --git a/multisrc/overrides/wpmangastream/default/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/default/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index fa71abc5d..000000000 Binary files a/multisrc/overrides/wpmangastream/default/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/default/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/default/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index fbc7bb18b..000000000 Binary files a/multisrc/overrides/wpmangastream/default/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/default/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/default/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index c994c12cc..000000000 Binary files a/multisrc/overrides/wpmangastream/default/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/default/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/default/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index fddb54206..000000000 Binary files a/multisrc/overrides/wpmangastream/default/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/default/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/default/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 154b3ae47..000000000 Binary files a/multisrc/overrides/wpmangastream/default/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/default/res/web_hi_res_512.png b/multisrc/overrides/wpmangastream/default/res/web_hi_res_512.png deleted file mode 100644 index 047e5438b..000000000 Binary files a/multisrc/overrides/wpmangastream/default/res/web_hi_res_512.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/infernalvoidscans/src/InfernalVoidScans.kt b/multisrc/overrides/wpmangastream/infernalvoidscans/src/InfernalVoidScans.kt deleted file mode 100644 index d59bf1937..000000000 --- a/multisrc/overrides/wpmangastream/infernalvoidscans/src/InfernalVoidScans.kt +++ /dev/null @@ -1,20 +0,0 @@ -package eu.kanade.tachiyomi.extension.en.infernalvoidscans - -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream -import eu.kanade.tachiyomi.source.model.Page -import org.jsoup.nodes.Document - -class InfernalVoidScans : WPMangaStream("Infernal Void Scans", "https://void-scans.com", "en") { - // Site dynamically replaces a placeholder image in the "src" tag with the actual url in "data-src" - override fun pageListParse(document: Document): List<Page> { - return super.pageListParse( - document.apply { - select(pageSelector).forEach { pageElem -> - pageElem.attr("data-src") - .takeIf { ! it.isNullOrBlank() } - ?.let { pageElem.attr("src", it) } - } - } - ) - } -} diff --git a/multisrc/overrides/wpmangastream/komikcast/src/KomikCast.kt b/multisrc/overrides/wpmangastream/komikcast/src/KomikCast.kt deleted file mode 100644 index 651836f3a..000000000 --- a/multisrc/overrides/wpmangastream/komikcast/src/KomikCast.kt +++ /dev/null @@ -1,194 +0,0 @@ -package eu.kanade.tachiyomi.extension.id.komikcast - -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.interceptor.rateLimit -import eu.kanade.tachiyomi.source.model.Filter -import eu.kanade.tachiyomi.source.model.FilterList -import eu.kanade.tachiyomi.source.model.Page -import eu.kanade.tachiyomi.source.model.SChapter -import eu.kanade.tachiyomi.source.model.SManga -import kotlinx.serialization.decodeFromString -import kotlinx.serialization.json.Json -import kotlinx.serialization.json.jsonArray -import kotlinx.serialization.json.jsonObject -import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull -import okhttp3.OkHttpClient -import okhttp3.Request -import org.jsoup.Jsoup -import org.jsoup.nodes.Document -import org.jsoup.nodes.Element -import uy.kohesive.injekt.injectLazy -import java.util.concurrent.TimeUnit - -class KomikCast : WPMangaStream("Komik Cast", "https://komikcast.me", "id") { - // Formerly "Komik Cast (WP Manga Stream)" - override val id = 972717448578983812 - - override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .connectTimeout(10, TimeUnit.SECONDS) - .readTimeout(30, TimeUnit.SECONDS) - .rateLimit(3) - .build() - - override fun headersBuilder(): Headers.Builder = Headers.Builder() - .add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9") - .add("Accept-language", "en-US,en;q=0.9,id;q=0.8") - .add("Referer", baseUrl) - .add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0") - - override fun imageRequest(page: Page): Request { - val newHeaders = headersBuilder() - .set("Accept", "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8") - .set("Referer", baseUrl) - .build() - - return GET(page.imageUrl!!, newHeaders) - } - override fun popularMangaSelector() = "div.list-update_item" - - override fun popularMangaRequest(page: Int): Request { - return GET("$baseUrl/daftar-komik/page/$page/?orderby=popular", headers) - } - - override fun latestUpdatesRequest(page: Int): Request { - return GET("$baseUrl/komik/page/$page/", headers) - } - - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = if (query.isNotBlank()) { - val url = "$baseUrl/page/$page".toHttpUrlOrNull()!!.newBuilder() - val pattern = "\\s+".toRegex() - val q = query.replace(pattern, "+") - if (query.isNotEmpty()) { - url.addQueryParameter("s", q) - } else { - url.addQueryParameter("s", "") - } - url.toString() - } else { - var url = "$baseUrl/daftar-komik/page/$page".toHttpUrlOrNull()!!.newBuilder() - var orderBy: String - (if (filters.isEmpty()) getFilterList() else filters).forEach { filter -> - when (filter) { - is StatusFilter -> url.addQueryParameter("status", arrayOf("", "ongoing", "completed")[filter.state]) - is GenreListFilter -> { - val genreInclude = mutableListOf<String>() - filter.state.forEach { - if (it.state == 1) { - genreInclude.add(it.id) - } - } - if (genreInclude.isNotEmpty()) { - genreInclude.forEach { genre -> - url.addQueryParameter("genre[]", genre) - } - } - } - is SortByFilter -> { - orderBy = filter.toUriPart() - url.addQueryParameter("orderby", orderBy) - } - is ProjectFilter -> { - if (filter.toUriPart() == "project-filter-on") { - url = "$baseUrl/project-list/page/$page".toHttpUrlOrNull()!!.newBuilder() - } - } - } - } - url.toString() - } - return GET(url, headers) - } - - override fun popularMangaFromElement(element: Element): SManga { - val manga = SManga.create() - element.select("a").first().let { - manga.setUrlWithoutDomain(it.attr("href")) - manga.title = it.select(".list-update_item-info h3.title").text() - manga.thumbnail_url = element.select("div.list-update_item-image img").imgAttr() - } - return manga - } - - override fun mangaDetailsParse(document: Document): SManga { - return SManga.create().apply { - document.select("div.komik_info").firstOrNull()?.let { infoElement -> - genre = infoElement.select(".komik_info-content-genre a").joinToString { it.text() } - status = parseStatus(infoElement.select("span:contains(Status:)").firstOrNull()?.ownText()) - author = infoElement.select("span:contains(Author:)").firstOrNull()?.ownText() - artist = infoElement.select("span:contains(Author:)").firstOrNull()?.ownText() - description = infoElement.select("div.komik_info-description-sinopsis p").joinToString("\n") { it.text() } - thumbnail_url = infoElement.select("div.komik_info-content-thumbnail img").imgAttr() - - // add series type(manga/manhwa/manhua/other) thinggy to genre - document.select(seriesTypeSelector).firstOrNull()?.ownText()?.let { - if (it.isEmpty().not() && genre!!.contains(it, true).not()) { - genre += if (genre!!.isEmpty()) it else ", $it" - } - } - - // add alternative name to manga description - document.select(altNameSelector).firstOrNull()?.ownText()?.let { - if (it.isBlank().not() && it != "N/A" && it != "-") { - description = when { - description.isNullOrBlank() -> altName + it - else -> description + "\n\n$altName" + it - } - } - } - } - } - } - - override val seriesTypeSelector = "span:contains(Type) a" - override val altNameSelector = ".komik_info-content-native" - - override fun chapterListSelector() = "div.komik_info-chapters li" - - override fun chapterFromElement(element: Element): SChapter { - val urlElement = element.select("a").first() - val chapter = SChapter.create() - chapter.setUrlWithoutDomain(urlElement.attr("href")) - chapter.name = urlElement.text() - chapter.date_upload = element.select(".chapter-link-time").firstOrNull()?.text()?.let { parseChapterDate(it) } ?: 0 - return chapter - } - - override fun pageListParse(document: Document): List<Page> { - var doc = document - var cssQuery = "div#chapter_body .main-reading-area img.size-full" - val imageListRegex = Regex("chapterImages = (.*) \\|\\|") - val imageListMatchResult = imageListRegex.find(document.toString()) - - if (imageListMatchResult != null) { - val imageListJson = imageListMatchResult.destructured.toList()[0] - val imageList = json.parseToJsonElement(imageListJson).jsonObject - - var imageServer = "cdn" - if (!imageList.containsKey(imageServer)) imageServer = imageList.keys.first() - val imageElement = imageList[imageServer]!!.jsonArray.joinToString("") - doc = Jsoup.parse(json.decodeFromString(imageElement)) - cssQuery = "img.size-full" - } - - return doc.select(cssQuery) - .mapIndexed { i, img -> Page(i, "", img.attr("abs:Src")) } - } - - override fun getFilterList() = FilterList( - Filter.Header("NOTE: Ignored if using text search!"), - Filter.Separator(), - SortByFilter(), - Filter.Separator(), - StatusFilter(), - Filter.Separator(), - GenreListFilter(getGenreList()), - Filter.Header("NOTE: cant be used with other filter!"), - Filter.Header("$name Project List page"), - ProjectFilter() - ) - - private val json: Json by injectLazy() -} diff --git a/multisrc/overrides/wpmangastream/komikindoco/src/KomikindoCo.kt b/multisrc/overrides/wpmangastream/komikindoco/src/KomikindoCo.kt deleted file mode 100644 index de477b2ed..000000000 --- a/multisrc/overrides/wpmangastream/komikindoco/src/KomikindoCo.kt +++ /dev/null @@ -1,81 +0,0 @@ -package eu.kanade.tachiyomi.extension.id.komikindoco - -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream -import eu.kanade.tachiyomi.network.interceptor.rateLimit -import eu.kanade.tachiyomi.source.model.Page -import eu.kanade.tachiyomi.source.model.SManga -import kotlinx.serialization.json.Json -import kotlinx.serialization.json.jsonArray -import kotlinx.serialization.json.jsonPrimitive -import okhttp3.OkHttpClient -import org.jsoup.nodes.Document -import uy.kohesive.injekt.injectLazy -import java.text.SimpleDateFormat -import java.util.Locale -import java.util.concurrent.TimeUnit - -class KomikindoCo : WPMangaStream("KomikIndo.co", "https://komikindo.co", "id", SimpleDateFormat("MMM dd, yyyy", Locale("id"))) { - // Formerly "Komikindo.co" - override val id = 734619124437406170 - - override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .connectTimeout(10, TimeUnit.SECONDS) - .readTimeout(30, TimeUnit.SECONDS) - .rateLimit(4) - .build() - - override val hasProjectPage = true - - override fun mangaDetailsParse(document: Document): SManga { - return SManga.create().apply { - document.select(".seriestucontent").firstOrNull()?.let { infoElement -> - genre = infoElement.select(".seriestugenre a").joinToString { it.text() } - status = parseStatus(infoElement.select(".infotable tr:contains(Status) td:last-child").firstOrNull()?.ownText()) - author = infoElement.select(".infotable tr:contains(Author) td:last-child").firstOrNull()?.ownText() - description = infoElement.select(".entry-content-single[itemprop=\"description\"]").joinToString("\n") { it.text() } - thumbnail_url = infoElement.select("div.thumb img").imgAttr() - - // add series type(manga/manhwa/manhua/other) thinggy to genre - document.select(seriesTypeSelector).firstOrNull()?.ownText()?.let { - if (it.isEmpty().not() && genre!!.contains(it, true).not()) { - genre += if (genre!!.isEmpty()) it else ", $it" - } - } - - // add alternative name to manga description - document.select(altNameSelector).firstOrNull()?.ownText()?.let { - if (it.isBlank().not() && it != "N/A" && it != "-") { - description = when { - description.isNullOrBlank() -> altName + it - else -> description + "\n\n$altName" + it - } - } - } - } - } - } - - private val json: Json by injectLazy() - - override fun pageListParse(document: Document): List<Page> { - val pages = mutableListOf<Page>() - document.select(pageSelector) - .filterNot { it.attr("src").isNullOrEmpty() } - .mapIndexed { i, img -> pages.add(Page(i, "", img.attr("abs:src"))) } - - // Some sites like mangakita now load pages via javascript - if (pages.isNotEmpty()) { return pages } - - val docString = document.toString() - val imageListRegex = Regex("\\\"images.*?:.*?(\\[.*?\\])") - val imageListJson = imageListRegex.find(docString)!!.destructured.toList()[0] - - val imageList = json.parseToJsonElement(imageListJson).jsonArray - - pages += imageList.mapIndexed { i, jsonEl -> - Page(i, "", jsonEl.jsonPrimitive.content) - } - - return pages - } -} diff --git a/multisrc/overrides/wpmangastream/komikstation/src/KomikStation.kt b/multisrc/overrides/wpmangastream/komikstation/src/KomikStation.kt deleted file mode 100644 index 0ae354eb6..000000000 --- a/multisrc/overrides/wpmangastream/komikstation/src/KomikStation.kt +++ /dev/null @@ -1,51 +0,0 @@ -package eu.kanade.tachiyomi.extension.id.komikstation - -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream -import eu.kanade.tachiyomi.network.interceptor.rateLimit -import eu.kanade.tachiyomi.source.model.Page -import kotlinx.serialization.json.Json -import kotlinx.serialization.json.jsonArray -import kotlinx.serialization.json.jsonPrimitive -import okhttp3.OkHttpClient -import org.jsoup.nodes.Document -import uy.kohesive.injekt.injectLazy -import java.util.concurrent.TimeUnit - -class KomikStation : WPMangaStream("Komik Station", "https://komikstation.co", "id") { - // Formerly "Komik Station (WP Manga Stream)" - override val id = 6148605743576635261 - - override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .connectTimeout(10, TimeUnit.SECONDS) - .readTimeout(30, TimeUnit.SECONDS) - .rateLimit(4) - .build() - - private val json: Json by injectLazy() - - override fun pageListParse(document: Document): List<Page> { - val pages = mutableListOf<Page>() - document.select(pageSelector) - .filterNot { it.attr("abs:src").isNullOrEmpty() } - .mapIndexed { i, img -> pages.add(Page(i, "", img.attr("abs:src"))) } - - // Some sites like mangakita now load pages via javascript - if (pages.isNotEmpty()) { return pages } - - val docString = document.toString() - val imageListRegex = Regex("\\\"images.*?:.*?(\\[.*?\\])") - val imageListJson = imageListRegex.find(docString)!!.destructured.toList()[0] - - val imageList = json.parseToJsonElement(imageListJson).jsonArray - - pages += imageList.mapIndexed { i, jsonEl -> - Page(i, "", jsonEl.jsonPrimitive.content) - } - - return pages - } - - override val projectPageString = "/project-list" - - override val hasProjectPage = true -} diff --git a/multisrc/overrides/wpmangastream/mangaswat/src/MangaSwat.kt b/multisrc/overrides/wpmangastream/mangaswat/src/MangaSwat.kt deleted file mode 100644 index d51eb5266..000000000 --- a/multisrc/overrides/wpmangastream/mangaswat/src/MangaSwat.kt +++ /dev/null @@ -1,170 +0,0 @@ -package eu.kanade.tachiyomi.extension.ar.mangaswat - -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.source.model.Filter -import eu.kanade.tachiyomi.source.model.FilterList -import eu.kanade.tachiyomi.source.model.Page -import eu.kanade.tachiyomi.source.model.SManga -import okhttp3.Headers -import okhttp3.Request -import org.json.JSONObject -import org.jsoup.nodes.Document -import java.text.SimpleDateFormat -import java.util.Locale - -class MangaSwat : WPMangaStream( - "MangaSwat", - "https://swatmanga.co", - "ar", - SimpleDateFormat("yyyy-MM-dd", Locale.US) -) { - - override fun headersBuilder(): Headers.Builder = Headers.Builder() - .add( - "Accept", - "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" - ) - .add("Accept-language", "en-US,en;q=0.9") - .add("Referer", baseUrl) - - override fun imageRequest(page: Page): Request { - val newHeaders = headersBuilder() - .set("Accept", "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8") - .set("Referer", baseUrl) - .build() - return GET(page.imageUrl!!, newHeaders) - } - - override fun mangaDetailsParse(document: Document): SManga { - return SManga.create().apply { - document.select("div.bigcontent").firstOrNull()?.let { infoElement -> - genre = infoElement.select("span:contains(التصنيف) a").joinToString { it.text() } - status = parseStatus( - infoElement.select("span:contains(الحالة)").firstOrNull()?.ownText() - ) - author = infoElement.select("span:contains(المؤلف)").firstOrNull()?.ownText() - artist = infoElement.select("span:contains(الناشر) i").firstOrNull()?.ownText() - description = infoElement.select("div.desc").text() - thumbnail_url = infoElement.select("img").imgAttr() - - val genres = infoElement.select("span:contains(التصنيف) a, .mgen a") - .map { element -> element.text().lowercase() } - .toMutableSet() - - // add series type(manga/manhwa/manhua/other) thinggy to genre - document.select(seriesTypeSelector).firstOrNull()?.ownText()?.let { - if (it.isEmpty().not() && genres.contains(it).not()) { - genres.add(it.lowercase()) - } - } - - genre = genres.toList().map { it.capitalize() }.joinToString(", ") - } - } - } - - override val seriesTypeSelector = "span:contains(النوع) a" - - override val pageSelector = "div#readerarea img" - - override fun pageListParse(document: Document): List<Page> { - var page: List<Page>? = null - val scriptContent = document.selectFirst("script:containsData(ts_reader)").data() - val removeHead = scriptContent.replace("ts_reader.run(", "").replace(");", "") - val jsonObject = JSONObject(removeHead) - val sourcesArray = jsonObject.getJSONArray("sources") - val imagesArray = sourcesArray.getJSONObject(0).getJSONArray("images") - page = List(imagesArray.length()) { i -> - Page(i, "", imagesArray[i].toString()) - } - - return page!! - } - - override fun getFilterList() = FilterList( - SortByFilter(), - Filter.Separator(), - StatusFilter(), - Filter.Separator(), - TypeFilter(), - Filter.Separator(), - Filter.Header("Genre exclusion not available for all sources"), - GenreListFilter(getGenreList()), - ) - - override fun getGenreList(): List<Genre> = listOf( - Genre("<--->", ""), - Genre("Adult", "adult"), - Genre("آلات", "%d8%a2%d9%84%d8%a7%d8%aa"), - Genre("أكشن", "%d8%a3%d9%83%d8%b4%d9%86"), - Genre("إثارة", "%d8%a5%d8%ab%d8%a7%d8%b1%d8%a9"), - Genre("إعادة إحياء", "%d8%a5%d8%b9%d8%a7%d8%af%d8%a9-%d8%a5%d8%ad%d9%8a%d8%a7%d8%a1"), - Genre( - "الحياة المدرسية", - "%d8%a7%d9%84%d8%ad%d9%8a%d8%a7%d8%a9-%d8%a7%d9%84%d9%85%d8%af%d8%b1%d8%b3%d9%8a%d8%a9" - ), - Genre( - "الحياة اليومية", - "%d8%a7%d9%84%d8%ad%d9%8a%d8%a7%d8%a9-%d8%a7%d9%84%d9%8a%d9%88%d9%85%d9%8a%d8%a9" - ), - Genre("العاب فيديو", "%d8%a7%d9%84%d8%b9%d8%a7%d8%a8-%d9%81%d9%8a%d8%af%d9%8a%d9%88"), - Genre("ايتشي", "%d8%a7%d9%8a%d8%aa%d8%b4%d9%8a"), - Genre("ايسكاي", "%d8%a7%d9%8a%d8%b3%d9%83%d8%a7%d9%8a"), - Genre("بالغ", "%d8%a8%d8%a7%d9%84%d8%ba"), - Genre("تاريخي", "%d8%aa%d8%a7%d8%b1%d9%8a%d8%ae%d9%8a"), - Genre("تراجيدي", "%d8%aa%d8%b1%d8%a7%d8%ac%d9%8a%d8%af%d9%8a"), - Genre("تناسخ", "%d8%aa%d9%86%d8%a7%d8%b3%d8%ae"), - Genre("جريمة", "%d8%ac%d8%b1%d9%8a%d9%85%d8%a9"), - Genre("جوسيه", "%d8%ac%d9%88%d8%b3%d9%8a%d9%87"), - Genre("جيندر بندر", "%d8%ac%d9%8a%d9%86%d8%af%d8%b1-%d8%a8%d9%86%d8%af%d8%b1"), - Genre("حديث", "%d8%ad%d8%af%d9%8a%d8%ab"), - Genre("حربي", "%d8%ad%d8%b1%d8%a8%d9%8a"), - Genre("حريم", "%d8%ad%d8%b1%d9%8a%d9%85"), - Genre( - "خارق للطبيعة", - "%d8%ae%d8%a7%d8%b1%d9%82-%d9%84%d9%84%d8%b7%d8%a8%d9%8a%d8%b9%d8%a9" - ), - Genre("خيال", "%d8%ae%d9%8a%d8%a7%d9%84"), - Genre("خيال علمي", "%d8%ae%d9%8a%d8%a7%d9%84-%d8%b9%d9%84%d9%85%d9%8a"), - Genre("دراما", "%d8%af%d8%b1%d8%a7%d9%85%d8%a7"), - Genre("دموي", "%d8%af%d9%85%d9%88%d9%8a"), - Genre("راشد", "%d8%af%d9%85%d9%88%d9%8a"), - Genre("رعب", "%d8%b1%d8%b9%d8%a8"), - Genre("رومانسي", "%d8%b1%d9%88%d9%85%d8%a7%d9%86%d8%b3%d9%8a"), - Genre("رياضة", "%d8%b1%d9%8a%d8%a7%d8%b6%d8%a9"), - Genre("زمكاني", "%d8%b2%d9%85%d9%83%d8%a7%d9%86%d9%8a"), - Genre("زومبي", "%d8%b2%d9%88%d9%85%d8%a8%d9%8a"), - Genre("سحر", "%d8%b3%d8%ad%d8%b1"), - Genre("سينين", "%d8%b3%d9%8a%d9%86%d9%8a%d9%86"), - Genre( - "شريحة من الحياة", - "%d8%b4%d8%b1%d9%8a%d8%ad%d8%a9-%d9%85%d9%86-%d8%a7%d9%84%d8%ad%d9%8a%d8%a7%d8%a9" - ), - Genre("شوجو", "%d8%b4%d9%88%d8%ac%d9%88"), - Genre("شونين", "%d8%b4%d9%88%d9%86%d9%8a%d9%86"), - Genre("شياطين", "%d8%b4%d9%8a%d8%a7%d8%b7%d9%8a%d9%86"), - Genre("طبخ", "%d8%b7%d8%a8%d8%ae"), - Genre("طبي", "%d8%b7%d8%a8%d9%8a"), - Genre("غموض", "%d8%ba%d9%85%d9%88%d8%b6"), - Genre("فانتازي", "%d9%81%d8%a7%d9%86%d8%aa%d8%a7%d8%b2%d9%8a"), - Genre("فنون قتالية", "%d9%81%d9%86%d9%88%d9%86-%d9%82%d8%aa%d8%a7%d9%84%d9%8a%d8%a9"), - Genre("فوق الطبيعة", "%d9%81%d9%88%d9%82-%d8%a7%d9%84%d8%b7%d8%a8%d9%8a%d8%b9%d8%a9"), - Genre("قوى خارقة", "%d9%82%d9%88%d9%89-%d8%ae%d8%a7%d8%b1%d9%82%d8%a9"), - Genre("كوميدي", "%d9%83%d9%88%d9%85%d9%8a%d8%af%d9%8a"), - Genre("لعبة", "%d9%84%d8%b9%d8%a8%d8%a9"), - Genre("مافيا", "%d9%85%d8%a7%d9%81%d9%8a%d8%a7"), - Genre( - "مصاصى الدماء", - "%d9%85%d8%b5%d8%a7%d8%b5%d9%89-%d8%a7%d9%84%d8%af%d9%85%d8%a7%d8%a1" - ), - Genre("مغامرات", "%d9%85%d8%ba%d8%a7%d9%85%d8%b1%d8%a7%d8%aa"), - Genre("موريم", "%d9%85%d9%88%d8%b1%d9%8a%d9%85"), - Genre("موسيقي", "%d9%85%d9%88%d8%b3%d9%8a%d9%82%d9%89"), - Genre("ميشا", "%d9%85%d9%8a%d8%b4%d8%a7"), - Genre("ميكا", "%d9%85%d9%8a%d9%83%d8%a7"), - Genre("نفسي", "%d9%86%d9%81%d8%b3%d9%8a"), - Genre("وحوش", "%d9%88%d8%ad%d9%88%d8%b4"), - Genre("ويب-تون", "%d9%88%d9%8a%d8%a8-%d8%aa%d9%88%d9%86") - ) -} diff --git a/multisrc/overrides/wpmangastream/mihentai/src/Mihentai.kt b/multisrc/overrides/wpmangastream/mihentai/src/Mihentai.kt deleted file mode 100644 index 2aec935c2..000000000 --- a/multisrc/overrides/wpmangastream/mihentai/src/Mihentai.kt +++ /dev/null @@ -1,179 +0,0 @@ -package eu.kanade.tachiyomi.extension.en.mihentai - -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.source.model.Filter -import eu.kanade.tachiyomi.source.model.FilterList -import eu.kanade.tachiyomi.source.model.Page -import eu.kanade.tachiyomi.source.model.SManga -import kotlinx.serialization.json.Json -import kotlinx.serialization.json.jsonArray -import kotlinx.serialization.json.jsonPrimitive -import okhttp3.HttpUrl.Companion.toHttpUrl -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull -import okhttp3.Request -import org.jsoup.nodes.Document -import uy.kohesive.injekt.injectLazy -import java.util.Locale - -class Mihentai : WPMangaStream("Mihentai", "https://mihentai.com", "en") { - override fun popularMangaRequest(page: Int): Request { - return GET("$baseUrl/manga/page/$page/?order=popular", headers) - } - - override fun latestUpdatesRequest(page: Int): Request { - return GET("$baseUrl/manga/page/$page/?order=update", headers) - } - - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/manga/page/$page/".toHttpUrlOrNull()!!.newBuilder() - url.addQueryParameter("title", query) - filters.forEach { filter -> - when (filter) { - is StatusFilter -> url.addQueryParameter("status", filter.toUriPart()) - is TypeFilter -> url.addQueryParameter("type", filter.toUriPart()) - is SortByFilter -> url.addQueryParameter("order", filter.toUriPart()) - is GenreListFilter -> { - filter.state - .filter { it.state != Filter.TriState.STATE_IGNORE } - .forEach { url.addQueryParameter("genre[]", it.id) } - } - } - } - return GET(url.build().toString(), headers) - } - - override fun mangaDetailsParse(document: Document): SManga { - return SManga.create().apply { - document.select("div.bigcontent, div.animefull, div.main-info").firstOrNull()?.let { infoElement -> - status = parseStatus(infoElement.select("span:contains(Status:), .imptdt:contains(Status) i").firstOrNull()?.ownText()) - thumbnail_url = infoElement.select("div.thumb img").imgAttr() - - val genres = infoElement.select("span:contains(Tag) a") - .map { element -> element.text().lowercase(Locale.ROOT) } - .toMutableSet() - - // add series type(manga/manhwa/manhua/other) thinggy to genre - document.select("span:contains(Type)").firstOrNull()?.ownText()?.let { - if (it.isEmpty().not() && genres.contains(it).not()) { - genres.add(it.lowercase(Locale.ROOT)) - } - } - - genre = genres.toList().joinToString(", ") { it.capitalize(Locale.ROOT) } - } - } - } - - override fun parseStatus(element: String?): Int = when { - element == null -> SManga.UNKNOWN - listOf("ongoing", "publishing").any { it.contains(element, ignoreCase = true) } -> SManga.ONGOING - listOf("finished").any { it.contains(element, ignoreCase = true) } -> SManga.COMPLETED - else -> SManga.UNKNOWN - } - - private val json: Json by injectLazy() - - override fun pageListParse(document: Document): List<Page> { - val htmlPages = document.select(pageSelector) - .filterNot { it.attr("abs:src").isNullOrEmpty() } - .mapIndexed { i, img -> - val pageUrl = img.attr("abs:src").substringAfter(baseUrl).prependIndent(baseUrl) - Page(i, "", pageUrl) - } - .toMutableList() - - val docString = document.toString() - val imageListRegex = Regex("\\\"images.*?:.*?(\\[.*?\\])") - val imageListJson = imageListRegex.find(docString)?.destructured?.toList()?.get(0) - if (imageListJson != null) { - val imageList = json.parseToJsonElement(imageListJson).jsonArray - val baseResolver = baseUrl.toHttpUrl() - - val scriptPages = imageList.mapIndexed { i, jsonEl -> - val imageUrl = jsonEl.jsonPrimitive.content - Page(i, "", baseResolver.resolve(imageUrl).toString()) - } - - if (htmlPages.size < scriptPages.size) { - htmlPages += scriptPages - } - } - - countViews(document) - - return htmlPages.distinctBy { it.imageUrl } - } - - private class StatusFilter : UriPartFilter( - "Status", - arrayOf( - Pair("All", ""), - Pair("Publishing", "publishing"), - Pair("Finished", "finished"), - Pair("Dropped", "drop") - ) - ) - - private class TypeFilter : UriPartFilter( - "Type", - arrayOf( - Pair("Default", ""), - Pair("Manga", "Manga"), - Pair("Manhwa", "Manhwa"), - Pair("Manhua", "Manhua"), - Pair("Webtoon", "webtoon"), - Pair("One-Shot", "One-Shot"), - Pair("Doujin", "doujin") - ) - ) - - override fun getFilterList(): FilterList = FilterList( - listOf( - StatusFilter(), - TypeFilter(), - SortByFilter(), - GenreListFilter(getGenreList()) - ) - ) - - override fun getGenreList(): List<Genre> = listOf( - Genre("Adventure", "adventure"), - Genre("Ahego", "ahego"), - Genre("Anal", "anal"), - Genre("Battle", "battle"), - Genre("Big Breasts", "big-breasts"), - Genre("Blowjob", "blowjob"), - Genre("Comic 3D", "comic-3d"), - Genre("Doujin", "doujin"), - Genre("Dragon ball", "dragon-ball"), - Genre("Fingering", "fingering"), - Genre("Full color", "full-color"), - Genre("Futanari", "futanari"), - Genre("Girlfriend", "girlfriend"), - Genre("Grouped", "grouped"), - Genre("Handjob", "handjob"), - Genre("Hijab", "hijab"), - Genre("Incest", "incest"), - Genre("Kissing", "kissing"), - Genre("Mama", "mama"), - Genre("Manga", "manga"), - Genre("Masturbation", "masturbation"), - Genre("Milf", "milf"), - Genre("Mom & Son", "mom-son"), - Genre("Naruto", "naruto"), - Genre("One Piece", "one-piece"), - Genre("Pregnancy", "pregnancy"), - Genre("Rape", "rape"), - Genre("Romance", "romance"), - Genre("School", "school"), - Genre("Scooby-Doo", "scooby-doo"), - Genre("Sister", "sister"), - Genre("Stocking", "stocking"), - Genre("Sub Indo", "sub-indo"), - Genre("Threesome", "threesome"), - Genre("Uncensored", "uncensored"), - Genre("Western", "western"), - Genre("Yuri", "yuri") - ) -} diff --git a/multisrc/overrides/wpmangastream/noxsubs/src/NoxSubs.kt b/multisrc/overrides/wpmangastream/noxsubs/src/NoxSubs.kt deleted file mode 100644 index 147f82474..000000000 --- a/multisrc/overrides/wpmangastream/noxsubs/src/NoxSubs.kt +++ /dev/null @@ -1,7 +0,0 @@ -package eu.kanade.tachiyomi.extension.tr.noxsubs - -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream -import java.text.SimpleDateFormat -import java.util.Locale - -class NoxSubs : WPMangaStream("NoxSubs", "https://noxsubs.com", "tr", SimpleDateFormat("MMM d, yyyy", Locale("tr"))) diff --git a/multisrc/overrides/wpmangastream/phoenixfansub/src/PhoenixFansub.kt b/multisrc/overrides/wpmangastream/phoenixfansub/src/PhoenixFansub.kt deleted file mode 100644 index e78e4aca6..000000000 --- a/multisrc/overrides/wpmangastream/phoenixfansub/src/PhoenixFansub.kt +++ /dev/null @@ -1,15 +0,0 @@ -package eu.kanade.tachiyomi.extension.es.phoenixfansub - -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream -import java.text.SimpleDateFormat -import java.util.Locale - -class PhoenixFansub : WPMangaStream( - "Phoenix Fansub", - "https://phoenixfansub.com", - "es", - SimpleDateFormat("MMM d, yyyy", Locale("es")) -) { - - override val altName: String = "Nombre alternativo: " -} diff --git a/multisrc/overrides/wpmangastream/westmanga/src/WestManga.kt b/multisrc/overrides/wpmangastream/westmanga/src/WestManga.kt deleted file mode 100644 index 32c7999c6..000000000 --- a/multisrc/overrides/wpmangastream/westmanga/src/WestManga.kt +++ /dev/null @@ -1,121 +0,0 @@ -package eu.kanade.tachiyomi.extension.id.westmanga - -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream -import eu.kanade.tachiyomi.network.interceptor.rateLimit -import eu.kanade.tachiyomi.source.model.SManga -import okhttp3.OkHttpClient -import org.jsoup.nodes.Document -import java.util.concurrent.TimeUnit - -class WestManga : WPMangaStream("West Manga", "https://westmanga.info", "id") { - // Formerly "West Manga (WP Manga Stream)" - override val id = 8883916630998758688 - - override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .connectTimeout(10, TimeUnit.SECONDS) - .readTimeout(30, TimeUnit.SECONDS) - .rateLimit(4) - .build() - - override fun mangaDetailsParse(document: Document): SManga { - return SManga.create().apply { - document.select(".seriestucontent").firstOrNull()?.let { infoElement -> - genre = infoElement.select(".seriestugenre a").joinToString { it.text() } - status = parseStatus(infoElement.select(".infotable tr:contains(Status) td:last-child").firstOrNull()?.ownText()) - author = infoElement.select(".infotable tr:contains(Author) td:last-child").firstOrNull()?.ownText() - description = infoElement.select(".entry-content-single[itemprop=\"description\"]").joinToString("\n") { it.text() } - thumbnail_url = infoElement.select("div.thumb img").imgAttr() - - // add series type(manga/manhwa/manhua/other) thinggy to genre - document.select(seriesTypeSelector).firstOrNull()?.ownText()?.let { - if (it.isEmpty().not() && genre!!.contains(it, true).not()) { - genre += if (genre!!.isEmpty()) it else ", $it" - } - } - - // add alternative name to manga description - document.select(altNameSelector).firstOrNull()?.ownText()?.let { - if (it.isBlank().not() && it != "N/A" && it != "-") { - description = when { - description.isNullOrBlank() -> altName + it - else -> description + "\n\n$altName" + it - } - } - } - } - } - } - - override val seriesTypeSelector = ".infotable tr:contains(Type) td:last-child" - override fun getGenreList(): List<Genre> = listOf( - Genre("4 Koma", "344"), - Genre("Action", "13"), - Genre("Adventure", "4"), - Genre("Anthology", "1494"), - Genre("Comedy", "5"), - Genre("Cooking", "54"), - Genre("Crime", "856"), - Genre("Crossdressing", "1306"), - Genre("Demon", "64"), - Genre("Drama", "6"), - Genre("Ecchi", "14"), - Genre("Fantasy", "7"), - Genre("Game", "36"), - Genre("Gender Bender", "149"), - Genre("Genderswap", "157"), - Genre("Gore", "56"), - Genre("Gyaru", "812"), - Genre("Harem", "17"), - Genre("Historical", "44"), - Genre("Horror", "211"), - Genre("Isekai", "20"), - Genre("Isekai Action", "742"), - Genre("Josei", "164"), - Genre("Magic", "65"), - Genre("Manga", "268"), - Genre("Manhua", "32"), - Genre("Martial Art", "754"), - Genre("Martial Arts", "8"), - Genre("Mature", "46"), - Genre("Mecha", "22"), - Genre("Medical", "704"), - Genre("Medy", "1439"), - Genre("Monsters", "91"), - Genre("Music", "457"), - Genre("Mystery", "30"), - Genre("Office Workers", "1501"), - Genre("Oneshot", "405"), - Genre("Project", "313"), - Genre("Psychological", "23"), - Genre("Reincarnation", "57"), - Genre("Reinkarnasi", "1170"), - Genre("Romance", "15"), - Genre("School", "102"), - Genre("School Life", "9"), - Genre("Sci-fi", "33"), - Genre("Seinen", "18"), - Genre("Shotacon", "1070"), - Genre("Shoujo", "110"), - Genre("Shoujo Ai", "113"), - Genre("Shounen", "10"), - Genre("Shounen Ai", "shounen-ai"), - Genre("Si-fi", "776"), - Genre("Slice of Lif", "773"), - Genre("Slice of Life", "11"), - Genre("Smut", "586"), - Genre("Sports", "103"), - Genre("Super Power", "274"), - Genre("Supernatural", "34"), - Genre("Suspense", "181"), - Genre("Thriller", "170"), - Genre("Tragedy", "92"), - Genre("Urban", "1050"), - Genre("Vampire", "160"), - Genre("Video Games", "1093"), - Genre("Webtoons", "486"), - Genre("Yaoi", "yaoi"), - Genre("Zombies", "377") - ) - - override val hasProjectPage = true -} diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesia.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesia.kt new file mode 100644 index 000000000..70e58bb3a --- /dev/null +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesia.kt @@ -0,0 +1,476 @@ +package eu.kanade.tachiyomi.multisrc.mangathemesia + +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.POST +import eu.kanade.tachiyomi.source.model.Filter +import eu.kanade.tachiyomi.source.model.FilterList +import eu.kanade.tachiyomi.source.model.MangasPage +import eu.kanade.tachiyomi.source.model.Page +import eu.kanade.tachiyomi.source.model.SChapter +import eu.kanade.tachiyomi.source.model.SManga +import eu.kanade.tachiyomi.source.online.ParsedHttpSource +import eu.kanade.tachiyomi.util.asJsoup +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.jsonArray +import kotlinx.serialization.json.jsonPrimitive +import okhttp3.FormBody +import okhttp3.HttpUrl +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.Response +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +import org.jsoup.select.Elements +import rx.Observable +import uy.kohesive.injekt.injectLazy +import java.lang.IllegalArgumentException +import java.text.SimpleDateFormat +import java.util.Locale +import java.util.concurrent.TimeUnit + +abstract class MangaThemesia( + override val name: String, + override val baseUrl: String, + override val lang: String, + val mangaUrlDirectory: String = "/manga", + private val dateFormat: SimpleDateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale.US) +) : ParsedHttpSource() { + + protected open val json: Json by injectLazy() + + override val supportsLatest = true + + override val client: OkHttpClient = network.cloudflareClient.newBuilder() + .connectTimeout(10, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .build() + + open val projectPageString = "/project" + + // Popular (Search with popular order and nothing else) + override fun popularMangaRequest(page: Int) = searchMangaRequest(page, "", FilterList(OrderByFilter("popular"))) + override fun popularMangaParse(response: Response) = searchMangaParse(response) + + // Latest (Search with update order and nothing else) + override fun latestUpdatesRequest(page: Int) = searchMangaRequest(page, "", FilterList(OrderByFilter("update"))) + override fun latestUpdatesParse(response: Response) = searchMangaParse(response) + + // Search + override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> { + if (query.startsWith(URL_SEARCH_PREFIX).not()) return super.fetchSearchManga(page, query, filters) + + val mangaPath = try { + mangaPathFromUrl(query.substringAfter(URL_SEARCH_PREFIX)) + ?: return Observable.just(MangasPage(emptyList(), false)) + } catch (e: Exception) { + return Observable.error(e) + } + + return fetchMangaDetails( + SManga.create() + .apply { this.url = "$mangaUrlDirectory/$mangaPath" } + ) + .map { + // Isn't set in returned manga + it.url = "$mangaUrlDirectory/$id" + MangasPage(listOf(it), false) + } + } + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + val url = baseUrl.toHttpUrl().newBuilder() + if (query.isNotEmpty()) { + url.addPathSegments("page/$page").addQueryParameter("s", query) + } else { + url.addPathSegment(mangaUrlDirectory.substring(1)).addQueryParameter("page", page.toString()) + filters.forEach { filter -> + when (filter) { + is AuthorFilter -> { + url.addQueryParameter("author", filter.state) + } + is YearFilter -> { + url.addQueryParameter("yearx", filter.state) + } + is StatusFilter -> { + url.addQueryParameter("status", filter.selectedValue) + } + is TypeFilter -> { + url.addQueryParameter("type", filter.selectedValue) + } + is OrderByFilter -> { + url.addQueryParameter("order", filter.selectedValue) + } + is GenreListFilter -> { + filter.state + .filter { it.state != Filter.TriState.STATE_IGNORE } + .forEach { + val value = if (it.state == Filter.TriState.STATE_EXCLUDE) "-${it.value}" else it.value + url.addQueryParameter("genre[]", value) + } + } + // if site has project page, default value "hasProjectPage" = false + is ProjectFilter -> { + if (filter.selectedValue == "project-filter-on") { + url.setPathSegment(0, projectPageString.substring(1)) + } + } + else -> { /* Do Nothing */ } + } + } + } + return GET(url.toString()) + } + + override fun searchMangaParse(response: Response): MangasPage { + if (genrelist == null) { + genrelist = parseGenres(response.asJsoup(response.peekBody(Long.MAX_VALUE).string())) + } + + return super.searchMangaParse(response) + } + + override fun searchMangaSelector() = ".utao .uta .imgu, .listupd .bs .bsx, .listo .bs .bsx" + + override fun searchMangaFromElement(element: Element) = SManga.create().apply { + thumbnail_url = element.select("img").imgAttr() + title = element.select("a").attr("title") + setUrlWithoutDomain(element.select("a").attr("href")) + } + + override fun searchMangaNextPageSelector() = "div.pagination .next, div.hpage .r" + + // Manga details + open val seriesDetailsSelector = "div.bigcontent, div.animefull, div.main-info" + open val seriesTitleSelector = "h1.entry-title" + open val seriesArtistSelector = ".infotable tr:contains(artist) td:last-child, .tsinfo .imptdt:contains(artist) i, .fmed b:contains(artist)+span, span:contains(artist)" + open val seriesAuthorSelector = ".infotable tr:contains(author) td:last-child, .tsinfo .imptdt:contains(author) i, .fmed b:contains(author)+span, span:contains(author)" + open val seriesDescriptionSelector = ".desc, .entry-content[itemprop=description]" + open val seriesAltNameSelector = ".alternative, .wd-full:contains(alt) span, .alter, .seriestualt" + open val seriesGenreSelector = "div.gnr a, .mgen a, .seriestugenre a, span:contains(genre)" + open val seriesTypeSelector = ".infotable tr:contains(type) td:last-child, .tsinfo .imptdt:contains(type) i, .fmed b:contains(type)+span, span:contains(type) a, a[href*=type\\=]" + open val seriesStatusSelector = ".infotable tr:contains(status) td:last-child, .tsinfo .imptdt:contains(status) i, .fmed b:contains(status)+span span:contains(status)" + open val seriesThumbnailSelector = ".infomanga > div[itemprop=image] img, .thumb img" + + open val altNamePrefix = "Alternative Name: " + + override fun mangaDetailsParse(document: Document) = SManga.create().apply { + document.selectFirst(seriesDetailsSelector).let { seriesDetails -> + title = seriesDetails.selectFirst(seriesTitleSelector)?.text().orEmpty() + artist = seriesDetails.selectFirst(seriesArtistSelector)?.ownText().removeEmptyPlaceholder() + author = seriesDetails.selectFirst(seriesAuthorSelector)?.ownText().removeEmptyPlaceholder() + description = seriesDetails.select(seriesDescriptionSelector).joinToString("\n") { it.text() } + // Add alternative name to manga description + val altName = seriesDetails.selectFirst(seriesAltNameSelector)?.ownText().takeIf { it.isNullOrBlank().not() } + altName?.let { + description = "$description\n\n$altNamePrefix$altName".trim() + } + val genres = seriesDetails.select(seriesGenreSelector).map { it.text() }.toMutableList() + // Add series type (manga/manhwa/manhua/other) to genre + seriesDetails.selectFirst(seriesTypeSelector)?.ownText().takeIf { it.isNullOrBlank().not() }?.let { genres.add(it) } + genre = genres.map { genre -> + genre.lowercase(Locale.forLanguageTag(lang)).replaceFirstChar { char -> + if (char.isLowerCase()) char.titlecase(Locale.forLanguageTag(lang)) + else char.toString() + } + } + .joinToString { it.trim() } + + status = seriesDetails.selectFirst(seriesStatusSelector)?.text().parseStatus() + thumbnail_url = seriesDetails.select(seriesThumbnailSelector).imgAttr() + } + } + + private fun String?.removeEmptyPlaceholder(): String? { + return if (this.isNullOrBlank() || this == "-" || this == "N/A") null else this + } + + open fun String?.parseStatus(): Int = when { + this == null -> SManga.UNKNOWN + listOf("ongoing", "publishing").any { this.contains(it, ignoreCase = true) } -> SManga.ONGOING + this.contains("completed", ignoreCase = true) -> SManga.COMPLETED + else -> SManga.UNKNOWN + } + + // Chapter list + override fun chapterListSelector() = "div.bxcl li, div.cl li, #chapterlist li .eph-num, li:has(div.chbox):has(div.eph-num)" + + override fun chapterListParse(response: Response): List<SChapter> { + val document = response.asJsoup() + val chapters = document.select(chapterListSelector()).map { chapterFromElement(it) } + + // Add timestamp to latest chapter, taken from "Updated On". + // So source which not provide chapter timestamp will have at least one + if (chapters.isNotEmpty() && chapters.first().date_upload == 0L) { + val date = document + .select(".listinfo time[itemprop=dateModified], .fmed:contains(update) time, span:contains(update) time") + .attr("datetime") + if (date.isNotEmpty()) chapters.first().date_upload = parseUpdatedOnDate(date) + } + + countViews(document) + + return chapters + } + + private fun parseUpdatedOnDate(date: String): Long { + return SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH).parse(date)?.time ?: 0L + } + + override fun chapterFromElement(element: Element) = SChapter.create().apply { + val urlElements = element.select("a") + setUrlWithoutDomain(urlElements.attr("href")) + name = element.select(".lch a, .chapternum").text().ifBlank { urlElements.first().text() } + date_upload = element.selectFirst(".chapterdate")?.text().parseChapterDate() + } + + protected open fun String?.parseChapterDate(): Long { + if (this == null) return 0 + return try { + dateFormat.parse(this)?.time ?: 0 + } catch (_: Exception) { + 0 + } + } + + // Pages + open val pageSelector = "div#readerarea img" + + override fun pageListParse(document: Document): List<Page> { + val htmlPages = document.select(pageSelector) + .filterNot { it.imgAttr().isEmpty() } + .mapIndexed { i, img -> Page(i, "", img.imgAttr()) } + + countViews(document) + + // Some sites also loads pages via javascript + if (htmlPages.isNotEmpty()) { return htmlPages } + + val docString = document.toString() + val imageListJson = JSON_IMAGE_LIST_REGEX.find(docString)?.destructured?.toList()?.get(0).orEmpty() + val imageList = try { + json.parseToJsonElement(imageListJson).jsonArray + } catch (_: IllegalArgumentException) { + emptyList() + } + val scriptPages = imageList.mapIndexed { i, jsonEl -> + Page(i, "", jsonEl.jsonPrimitive.content) + } + + return scriptPages + } + + /** + * Set it to false if you want to disable the extension reporting the view count + * back to the source website through admin-ajax.php. + */ + protected open val sendViewCount: Boolean = true + + protected open fun countViewsRequest(document: Document): Request? { + val wpMangaData = document.select("script:containsData(dynamic_view_ajax)").firstOrNull() + ?.data() ?: return null + + val postId = CHAPTER_PAGE_ID_REGEX.find(wpMangaData)?.groupValues?.get(1) + ?: MANGA_PAGE_ID_REGEX.find(wpMangaData)?.groupValues?.get(1) + ?: return null + + val formBody = FormBody.Builder() + .add("action", "dynamic_view_ajax") + .add("post_id", postId) + .build() + + val newHeaders = headersBuilder() + .set("Content-Length", formBody.contentLength().toString()) + .set("Content-Type", formBody.contentType().toString()) + .set("Referer", document.location()) + .build() + + return POST("$baseUrl/wp-admin/admin-ajax.php", newHeaders, formBody) + } + + /** + * Send the view count request to the Madara endpoint. + * + * @param document The response document with the wp-manga data + */ + protected open fun countViews(document: Document) { + if (!sendViewCount) { + return + } + + val request = countViewsRequest(document) ?: return + runCatching { client.newCall(request).execute().close() } + } + + // Filters + private class AuthorFilter : Filter.Text("Author") + + private class YearFilter : Filter.Text("Year") + + open class SelectFilter( + displayName: String, + vals: Array<Pair<String, String>>, + defaultValue: String? = null + ) : Filter.Select<String>( + displayName, + vals.map { it.first }.toTypedArray(), + vals.indexOfFirst { it.second == defaultValue }.takeIf { it != -1 } ?: 0 + ) { + val selectedValue = vals[state].second + } + + protected class StatusFilter : SelectFilter( + "Status", + arrayOf( + Pair("All", ""), + Pair("Ongoing", "ongoing"), + Pair("Completed", "completed"), + Pair("Hiatus", "hiatus"), + Pair("Dropped", "dropped") + ) + ) + + protected class TypeFilter : SelectFilter( + "Type", + arrayOf( + Pair("All", ""), + Pair("Manga", "Manga"), + Pair("Manhwa", "Manhwa"), + Pair("Manhua", "Manhua"), + Pair("Comic", "Comic") + ) + ) + + protected class OrderByFilter(defaultOrder: String? = null) : SelectFilter( + "Sort By", + arrayOf( + Pair("Default", ""), + Pair("A-Z", "title"), + Pair("Z-A", "titlereverse"), + Pair("Latest Update", "update"), + Pair("Latest Added", "latest"), + Pair("Popular", "popular") + ), + defaultOrder + ) + + protected class ProjectFilter : SelectFilter( + "Filter Project", + arrayOf( + Pair("Show all manga", ""), + Pair("Show only project manga", "project-filter-on") + ) + ) + + protected class Genre(name: String, val value: String) : Filter.TriState(name) + protected class GenreListFilter(genres: List<Genre>) : Filter.Group<Genre>("Genre", genres) + + private var genrelist: List<Genre>? = null + protected open fun getGenreList(): List<Genre> { + // Filters are fetched immediately once an extension loads + // We're only able to get filters after a loading the manga directory, + // and resetting the filters is the only thing that seems to reinflate the view + return genrelist ?: listOf(Genre("Press reset to attempt to fetch genres", "")) + } + + open val hasProjectPage = false + + override fun getFilterList(): FilterList { + val filters = mutableListOf<Filter<*>>( + Filter.Header("NOTE: Ignored if using text search!"), + Filter.Separator(), + AuthorFilter(), + YearFilter(), + StatusFilter(), + TypeFilter(), + OrderByFilter(), + Filter.Header("Genre exclusion is not available for all sources"), + GenreListFilter(getGenreList()), + ) + if (hasProjectPage) { + filters.addAll( + mutableListOf<Filter<*>>( + Filter.Separator(), + Filter.Header("NOTE: Can't be used with other filter!"), + Filter.Header("$name Project List page"), + ProjectFilter(), + ) + ) + } + return FilterList(filters) + } + + // Helpers + /** + * Given some string which represents an http urlString, returns path for a manga + * which can be used to fetch its details at "$baseUrl$mangaUrlDirectory/$mangaPath" + * + * @param urlString: String + * + * @returns Path of a manga, or null if none could be found + */ + protected open fun mangaPathFromUrl(urlString: String): String? { + val baseMangaUrl = "$baseUrl$mangaUrlDirectory".toHttpUrl() + val url = urlString.toHttpUrlOrNull() ?: return null + + val isMangaUrl = (baseMangaUrl.host == url.host && pathLengthIs(url, 2) && url.pathSegments[0] == baseMangaUrl.pathSegments[0]) + if (isMangaUrl) return url.pathSegments[1] + + val potentiallyChapterUrl = pathLengthIs(url, 1) + if (potentiallyChapterUrl) { + val response = client.newCall(GET(urlString, headers)).execute() + if (response.isSuccessful.not()) { + response.close() + throw IllegalStateException("HTTP error ${response.code}") + } else if (response.isSuccessful) { + val links = response.asJsoup().select("a[itemprop=item]") + // near the top of page: home > manga > current chapter + if (links.size == 3) { + return links[1].attr("href").toHttpUrlOrNull()?.encodedPath + } + } + } + + return null + } + + private fun pathLengthIs(url: HttpUrl, n: Int, strict: Boolean = false): Boolean { + return url.pathSegments.size == n && url.pathSegments[n - 1].isNotEmpty() || + (!strict && url.pathSegments.size == n + 1 && url.pathSegments[n].isEmpty()) + } + + private fun parseGenres(document: Document): List<Genre>? { + return document.selectFirst("ul.genrez")?.select("li")?.map { li -> + Genre( + li.selectFirst("label").text(), + li.selectFirst("input[type=checkbox]").attr("value") + ) + } + } + + protected open fun Element.imgAttr(): String = if (this.hasAttr("data-src")) this.attr("abs:data-src") else this.attr("abs:src") + protected open fun Elements.imgAttr(): String = this.first().imgAttr() + + // Unused + override fun popularMangaSelector(): String = throw UnsupportedOperationException("Not used") + override fun popularMangaFromElement(element: Element): SManga = throw UnsupportedOperationException("Not used") + override fun popularMangaNextPageSelector(): String? = throw UnsupportedOperationException("Not used") + + override fun latestUpdatesSelector(): String = throw UnsupportedOperationException("Not used") + override fun latestUpdatesFromElement(element: Element): SManga = throw UnsupportedOperationException("Not used") + override fun latestUpdatesNextPageSelector(): String? = throw UnsupportedOperationException("Not used") + + override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException("Not Used") + + companion object { + const val URL_SEARCH_PREFIX = "url:" + + // More info: https://issuetracker.google.com/issues/36970498 + @Suppress("RegExpRedundantEscape") + private val MANGA_PAGE_ID_REGEX = "post_id\\s*:\\s*(\\d+)\\}".toRegex() + private val CHAPTER_PAGE_ID_REGEX = "chapter_id\\s*=\\s*(\\d+);".toRegex() + + val JSON_IMAGE_LIST_REGEX = "\"images\"\\s*:\\s*(\\[.*?])".toRegex() + } +} diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangareader/WPMangaReaderGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt similarity index 51% rename from multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangareader/WPMangaReaderGenerator.kt rename to multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt index 94a02a3d9..3b30ec98a 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangareader/WPMangaReaderGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt @@ -1,67 +1,108 @@ -package eu.kanade.tachiyomi.multisrc.wpmangareader +package eu.kanade.tachiyomi.multisrc.mangathemesia import generator.ThemeSourceData.MultiLang import generator.ThemeSourceData.SingleLang import generator.ThemeSourceGenerator -class WPMangaReaderGenerator : ThemeSourceGenerator { +class MangaThemesiaGenerator : ThemeSourceGenerator { - override val themePkg = "wpmangareader" + override val themePkg = "mangathemesia" - override val themeClass = "WPMangaReader" + override val themeClass = "MangaThemesia" - override val baseVersionCode: Int = 14 + override val baseVersionCode: Int = 16 override val sources = listOf( + MultiLang("Asura Scans", "https://www.asurascans.com", listOf("en", "tr"), className = "AsuraScansFactory", pkgName = "asurascans", overrideVersionCode = 16), MultiLang("Flame Scans", "https://flamescans.org", listOf("ar", "en"), className = "FlameScansFactory", pkgName = "flamescans", overrideVersionCode = 1), SingleLang("Ace Scans", "https://acescans.xyz", "en", isNsfw = true, overrideVersionCode = 2), SingleLang("Alpha Scans", "https://alpha-scans.org", "en", overrideVersionCode = 1), + SingleLang("Animated Glitched Scans", "https://anigliscans.com", "en"), SingleLang("Arcane scan", "https://arcanescan.fr", "fr"), + SingleLang("ARESManga", "https://aresmanga.com", "ar", pkgName = "iimanga", overrideVersionCode = 2), SingleLang("Azure Scans", "https://azuremanga.com", "en", overrideVersionCode = 1), SingleLang("BeastScans", "https://beastscans.com", "en"), + SingleLang("Boosei", "https://boosei.com", "id", overrideVersionCode = 1), SingleLang("Franxx Mangás", "https://franxxmangas.net", "pt-BR", className = "FranxxMangas", isNsfw = true), SingleLang("Fusion Scanlation", "https://fusionscanlation.com", "es", className = "FusionScanlation", overrideVersionCode = 2), SingleLang("Gabut Scans", "https://gabutscans.com", "id", overrideVersionCode = 1), SingleLang("Gecenin Lordu", "https://geceninlordu.com", "tr", overrideVersionCode = 1), + SingleLang("GoGoManga", "https://gogomanga.fun", "en", overrideVersionCode = 1), + SingleLang("Imagine Scan", "https://imaginescan.com.br", "pt-BR", isNsfw = true, overrideVersionCode = 1), + SingleLang("Imperfect Comics", "https://imperfectcomic.com", "en", overrideVersionCode = 8), SingleLang("InariManga", "https://inarimanga.com", "es"), + SingleLang("Infernal Void Scans", "https://void-scans.com", "en", overrideVersionCode = 4), + SingleLang("Kanzenin", "https://kanzenin.xyz", "id", isNsfw = true), SingleLang("Kiryuu", "https://kiryuu.id", "id", overrideVersionCode = 6), + SingleLang("KlanKomik", "https://klankomik.com", "id", overrideVersionCode = 1), + SingleLang("Komik AV", "https://komikav.com", "id", overrideVersionCode = 1), + SingleLang("Komik Cast", "https://komikcast.me", "id", overrideVersionCode = 12), SingleLang("Komik Lab", "https://komiklab.com", "id"), + SingleLang("Komik Station", "https://komikstation.co", "id", overrideVersionCode = 3), + SingleLang("KomikIndo.co", "https://komikindo.co", "id", className = "KomikindoCo", overrideVersionCode = 3), SingleLang("KomikMama", "https://komikmama.co", "id", overrideVersionCode = 1), + SingleLang("Komiku.com", "https://komiku.com", "id", className = "KomikuCom"), + SingleLang("Kuma Scans (Kuma Translation)", "https://kumascans.com", "en", className = "KumaScans", overrideVersionCode = 1), SingleLang("Legion Scan", "https://legionscans.com", "es"), SingleLang("Magus Manga", "https://magusmanga.com", "ar"), - SingleLang("MangKomik", "https://mangkomik.com", "id"), + SingleLang("Manga Pro", "https://mangaprotm.com", "ar", pkgName = "mangaproz", overrideVersionCode = 3), + SingleLang("Manga Raw.org", "https://mangaraw.org", "ja", className = "MangaRawOrg", overrideVersionCode = 1), SingleLang("MangaKita", "https://mangakita.net", "id", overrideVersionCode = 1), + SingleLang("Mangakyo", "https://www.mangakyo.me", "id"), SingleLang("Mangasusu", "https://mangasusu.co.in", "id", isNsfw = true, overrideVersionCode = 1), + SingleLang("MangaSwat", "https://swatmanga.co", "ar", overrideVersionCode = 7), + SingleLang("MangKomik", "https://mangkomik.com", "id"), SingleLang("Mangás Chan", "https://mangaschan.com", "pt-BR", className = "MangasChan"), SingleLang("Manhua Raw", "https://manhuaraw.com", "en"), SingleLang("ManhwaIndo", "https://manhwaindo.id", "id", isNsfw = true, overrideVersionCode = 2), + SingleLang("Manhwax", "https://manhwax.com", "en", isNsfw = true), + SingleLang("Mareceh", "https://mareceh.com", "id", isNsfw = true, pkgName = "mangceh", overrideVersionCode = 10), SingleLang("Martial Manga", "https://martialmanga.com", "es"), + SingleLang("MasterKomik", "https://masterkomik.com", "id", overrideVersionCode = 1), SingleLang("Miau Scan", "https://miauscan.com", "es"), + SingleLang("Mihentai", "https://mihentai.com", "all", isNsfw = true, overrideVersionCode = 1), SingleLang("Mode Scanlator", "https://modescanlator.com", "pt-BR", overrideVersionCode = 8), SingleLang("Ngomik", "https://ngomik.net", "id", overrideVersionCode = 1), + SingleLang("Non-Stop Scans", "https://www.nonstopscans.com", "en", className = "NonStopScans"), + SingleLang("NoxSubs", "https://noxsubs.com", "tr"), + SingleLang("Omega Scans", "https://omegascans.org", "en", isNsfw = true), SingleLang("Origami Orpheans", "https://origami-orpheans.com.br", "pt-BR", overrideVersionCode = 9), SingleLang("Ozul Scans", "https://ozulscans.com", "ar"), - SingleLang("PMScans", "http://www.rackusreader.org", "en", overrideVersionCode = 2), SingleLang("Patatescans", "https://patatescans.com", "fr", isNsfw = true, overrideVersionCode = 2), + SingleLang("Phantom Scans", "https://phantomscans.com", "en", overrideVersionCode = 1), + SingleLang("Phoenix Fansub", "https://phoenixfansub.com", "es", overrideVersionCode = 2), + SingleLang("PMScans", "http://www.rackusreader.org", "en", overrideVersionCode = 2), + SingleLang("Random Scans", "https://randomscans.xyz", "en"), + SingleLang("Rawkuma", "https://rawkuma.com/", "ja"), + SingleLang("Readkomik", "https://readkomik.com", "en", className = "ReadKomik", overrideVersionCode = 1), SingleLang("Realm Scans", "https://realmscans.com", "en", overrideVersionCode = 3), SingleLang("Sekaikomik", "https://www.sekaikomik.live", "id", isNsfw = true, overrideVersionCode = 9), SingleLang("Sekaikomik", "https://www.sekaikomik.site", "id", isNsfw = true, overrideVersionCode = 8), + SingleLang("Sekte Doujin", "https://sektedoujin.club", "id", isNsfw = true, overrideVersionCode = 3), + SingleLang("Sekte Komik", "https://sektekomik.com", "id", overrideVersionCode = 4), + SingleLang("Shadow Mangas", "https://shadowmangas.com", "es"), + SingleLang("Shea Manga", "https://sheakomik.com", "id", overrideVersionCode = 4), SingleLang("Shooting Star Scans", "https://shootingstarscans.com", "en", overrideVersionCode = 3), SingleLang("Silence Scan", "https://silencescan.com.br", "pt-BR", isNsfw = true, overrideVersionCode = 5), SingleLang("Skull Scans", "https://www.skullscans.com", "en", overrideVersionCode = 1), - SingleLang("Tsundoku Traduções", "https://tsundoku.com.br", "pt-BR", className = "TsundokuTraducoes", overrideVersionCode = 9), - SingleLang("TurkToon", "https://turktoon.com", "tr"), - SingleLang("World Romance Translation", "https://wrt.my.id", "id", overrideVersionCode = 10), - SingleLang("White Cloud Pavilion (New)", "https://www.whitecloudpavilion.com", "en", pkgName = "whitecloudpavilionnew", className = "WhiteCloudPavilion"), - SingleLang("ARESManga", "https://aresmanga.com", "ar", pkgName = "iimanga", overrideVersionCode = 2), + SingleLang("Snudae Scans", "https://snudaescans.com", "en", isNsfw = true, className = "BatotoScans", overrideVersionCode = 1), + SingleLang("Summer Fansub", "https://smmr.in", "pt-BR", isNsfw = true), SingleLang("Sushi-Scan", "https://sushiscan.su", "fr", className = "SushiScan"), - SingleLang("Komiku.com", "https://komiku.com", "id", className = "KomikuCom"), + SingleLang("Tempest Manga", "https://manga.tempestfansub.com", "tr"), + SingleLang("The Apollo Team", "https://theapollo.team", "en"), + SingleLang("Tsundoku Traduções", "https://tsundoku.com.br", "pt-BR", className = "TsundokuTraducoes", overrideVersionCode = 9), + SingleLang("TukangKomik", "https://tukangkomik.com", "id"), + SingleLang("TurkToon", "https://turktoon.com", "tr"), + SingleLang("West Manga", "https://westmanga.info", "id", overrideVersionCode = 1), + SingleLang("White Cloud Pavilion (New)", "https://www.whitecloudpavilion.com", "en", pkgName = "whitecloudpavilionnew", className = "WhiteCloudPavilion"), + SingleLang("World Romance Translation", "https://wrt.my.id", "id", overrideVersionCode = 10), + SingleLang("xCaliBR Scans", "https://xcalibrscans.com", "en", overrideVersionCode = 3), ) companion object { @JvmStatic fun main(args: Array<String>) { - WPMangaReaderGenerator().createAll() + MangaThemesiaGenerator().createAll() } } } diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangareader/WPMangaReaderUrlActivity.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaUrlActivity.kt similarity index 72% rename from multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangareader/WPMangaReaderUrlActivity.kt rename to multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaUrlActivity.kt index b897b063c..6999ab7ae 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangareader/WPMangaReaderUrlActivity.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaUrlActivity.kt @@ -1,4 +1,4 @@ -package eu.kanade.tachiyomi.multisrc.wpmangareader +package eu.kanade.tachiyomi.multisrc.mangathemesia import android.app.Activity import android.content.ActivityNotFoundException @@ -7,7 +7,7 @@ import android.os.Bundle import android.util.Log import kotlin.system.exitProcess -class WPMangaReaderUrlActivity : Activity() { +class MangaThemesiaUrlActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -17,16 +17,16 @@ class WPMangaReaderUrlActivity : Activity() { val mainIntent = Intent().apply { action = "eu.kanade.tachiyomi.SEARCH" - putExtra("query", "${WPMangaReader.URL_SEARCH_PREFIX}${intent?.data?.toString()}") + putExtra("query", "${MangaThemesia.URL_SEARCH_PREFIX}${intent?.data?.toString()}") putExtra("filter", packageName) } try { startActivity(mainIntent) } catch (e: ActivityNotFoundException) { - Log.e("WPMangaReaderUrl", e.toString()) + Log.e("MangaThemesiaUrlActivity", e.toString()) } } else { - Log.e("WPMangaReaderUrl", "could not parse uri from intent $intent") + Log.e("MangaThemesiaUrlActivity", "Could not parse uri from intent $intent") } finish() diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/README.md b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/README.md new file mode 100644 index 000000000..37dfb2e07 --- /dev/null +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/README.md @@ -0,0 +1 @@ +MangaThemesia is WPMangaReader and WPMangaStream merged together as they both had similar code. Both theme was made by [Themesia Studios](https://themesia.com) \ No newline at end of file diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangareader/WPMangaReader.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangareader/WPMangaReader.kt deleted file mode 100644 index f20ab2bef..000000000 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangareader/WPMangaReader.kt +++ /dev/null @@ -1,431 +0,0 @@ -package eu.kanade.tachiyomi.multisrc.wpmangareader - -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.POST -import eu.kanade.tachiyomi.network.asObservableSuccess -import eu.kanade.tachiyomi.source.model.Filter -import eu.kanade.tachiyomi.source.model.FilterList -import eu.kanade.tachiyomi.source.model.MangasPage -import eu.kanade.tachiyomi.source.model.Page -import eu.kanade.tachiyomi.source.model.SChapter -import eu.kanade.tachiyomi.source.model.SManga -import eu.kanade.tachiyomi.source.online.ParsedHttpSource -import eu.kanade.tachiyomi.util.asJsoup -import kotlinx.serialization.json.Json -import kotlinx.serialization.json.jsonArray -import kotlinx.serialization.json.jsonPrimitive -import okhttp3.FormBody -import okhttp3.HttpUrl -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull -import okhttp3.OkHttpClient -import okhttp3.Request -import okhttp3.Response -import org.jsoup.nodes.Document -import org.jsoup.nodes.Element -import rx.Observable -import rx.Single -import uy.kohesive.injekt.injectLazy -import java.text.SimpleDateFormat -import java.util.Locale - -abstract class WPMangaReader( - override val name: String, - override val baseUrl: String, - override val lang: String, - val mangaUrlDirectory: String = "/manga", - private val dateFormat: SimpleDateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale.US) -) : ParsedHttpSource() { - - override val supportsLatest = true - - override val client: OkHttpClient = network.cloudflareClient - - protected val json: Json by injectLazy() - - // popular - override fun popularMangaRequest(page: Int) = searchMangaRequest(page, "", FilterList(OrderByFilter(5))) - override fun popularMangaParse(response: Response) = searchMangaParse(response) - - override fun popularMangaFromElement(element: Element) = throw UnsupportedOperationException("Not used") - override fun popularMangaSelector() = throw UnsupportedOperationException("Not used") - override fun popularMangaNextPageSelector() = throw UnsupportedOperationException("Not used") - - // latest - override fun latestUpdatesRequest(page: Int) = searchMangaRequest(page, "", FilterList(OrderByFilter(3))) - override fun latestUpdatesParse(response: Response) = searchMangaParse(response) - - override fun latestUpdatesSelector() = throw UnsupportedOperationException("Not used") - override fun latestUpdatesFromElement(element: Element) = throw UnsupportedOperationException("Not used") - override fun latestUpdatesNextPageSelector() = throw UnsupportedOperationException("Not used") - - // search - override fun searchMangaSelector() = ".utao .uta .imgu, .listupd .bs .bsx, .listo .bs .bsx" - - /** - * Given some string which represents an http url, returns a identifier (id) for a manga - * which can be used to fetch its details at "$baseUrl$mangaUrlDirectory/$id" - * - * @param s: String - url - * - * @returns An identifier for a manga, or null if none could be found - */ - protected open fun mangaIdFromUrl(s: String): Single<String?> { - val baseMangaUrl = "$baseUrl$mangaUrlDirectory".toHttpUrlOrNull()!! - return s.toHttpUrlOrNull()?.let { url -> - fun pathLengthIs(url: HttpUrl, n: Int, strict: Boolean = false) = url.pathSegments.size == n && url.pathSegments[n - 1].isNotEmpty() || (!strict && url.pathSegments.size == n + 1 && url.pathSegments[n].isEmpty()) - val isMangaUrl = listOf( - baseMangaUrl.host == url.host, - pathLengthIs(url, 2), - url.pathSegments[0] == baseMangaUrl.pathSegments[0] - ).all { it } - val potentiallyChapterUrl = pathLengthIs(url, 1) - if (isMangaUrl) - Single.just(url.pathSegments[1]) - else if (potentiallyChapterUrl) - client.newCall(GET(s, headers)).asObservableSuccess().map { - val links = it.asJsoup().select("a[itemprop=item]") - if (links.size == 3) // near the top of page: home > manga > current chapter - links[1].attr("href").toHttpUrlOrNull()?.pathSegments?.get(1) - else - null - }.toSingle() - else - Single.just(null) - } ?: Single.just(null) - } - - override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> { - if (!query.startsWith(URL_SEARCH_PREFIX)) - return super.fetchSearchManga(page, query, filters) - - return mangaIdFromUrl(query.substringAfter(URL_SEARCH_PREFIX)) - .toObservable() - .concatMap { id -> - if (id == null) - Observable.just(MangasPage(emptyList(), false)) - else - fetchMangaDetails(SManga.create().apply { this.url = "$mangaUrlDirectory/$id" }) - .map { - it.url = "$mangaUrlDirectory/$id" // isn't set in returned manga - MangasPage(listOf(it), false) - } - } - } - - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - var url = "$baseUrl".toHttpUrlOrNull()!!.newBuilder() - if (query.isNotEmpty()) { - url.addPathSegments("page/$page").addQueryParameter("s", query) - } else { - url.addPathSegment(mangaUrlDirectory.substring(1)).addQueryParameter("page", "$page") - filters.forEach { filter -> - when (filter) { - is UrlEncoded -> filter.encode(url) - // if site has project page, default value "hasProjectPage" = false - is ProjectFilter -> { - if (filter.toUriPart() == "project-filter-on") { - url = "$baseUrl$projectPageString/page/$page".toHttpUrlOrNull()!!.newBuilder() - } - } - } - } - } - return GET("$url") - } - - open val projectPageString = "/project" - - override fun searchMangaParse(response: Response): MangasPage { - if (genrelist == null) - genrelist = parseGenres(response.asJsoup(response.peekBody(Long.MAX_VALUE).string())) - return super.searchMangaParse(response) - } - - private fun parseGenres(document: Document): List<LabeledValue>? { - return document.selectFirst("ul.c4")?.select("li")?.map { li -> - LabeledValue(li.selectFirst("label").text(), li.selectFirst("input[type=checkbox]").`val`()) - } - } - - override fun searchMangaFromElement(element: Element) = SManga.create().apply { - thumbnail_url = element.select("img").attr("abs:src") - title = element.select("a").attr("title") - setUrlWithoutDomain(element.select("a").attr("href")) - } - - override fun searchMangaNextPageSelector() = "div.pagination .next, div.hpage .r" - - // manga details - override fun mangaDetailsParse(document: Document) = SManga.create().apply { - author = document.select(seriesAuthorSelector).firstOrNull()?.ownText() - artist = document.select(seriesArtistSelector).firstOrNull()?.ownText() - genre = document.select(seriesGenreSelector).joinToString { it.text() } - status = parseStatus(document.select(seriesStatusSelector).text()) - title = document.selectFirst(seriesTitleSelector).text() - thumbnail_url = document.select(seriesThumbnailSelector).attr("abs:src") - description = document.select(seriesDescriptionSelector).joinToString("\n") { it.text() } - - // add series type(manga/manhwa/manhua/other) thinggy to genre - document.select(seriesTypeSelector).firstOrNull()?.ownText()?.let { - if (it.isEmpty().not() && genre!!.contains(it, true).not()) { - genre += if (genre!!.isEmpty()) it else ", $it" - } - } - - // add alternative name to manga description - document.select(altNameSelector).firstOrNull()?.ownText()?.let { - if (it.isEmpty().not()) { - description += when { - description!!.isEmpty() -> altName + it - else -> "\n\n$altName" + it - } - } - } - } - - open val seriesAuthorSelector = ".listinfo li:contains(Author), .tsinfo .imptdt:nth-child(4) i, .infotable tr:contains(author) td:last-child" - open val seriesArtistSelector = ".infotable tr:contains(artist) td:last-child, .tsinfo .imptdt:contains(artist) i" - open val seriesGenreSelector = "div.gnr a, .mgen a, .seriestugenre a" - open val seriesStatusSelector = "div.listinfo li:contains(Status), .tsinfo .imptdt:contains(status), .tsinfo .imptdt:contains(الحالة), .infotable tr:contains(status) td" - open val seriesTitleSelector = "h1.entry-title" - open val seriesThumbnailSelector = ".infomanga > div[itemprop=image] img, .thumb img" - open val seriesDescriptionSelector = ".desc, .entry-content[itemprop=description]" - open val seriesTypeSelector = "span:contains(Type) a, .imptdt:contains(Type) :last-child, a[href*=type\\=], .infotable tr:contains(Type) td:last-child" - open val altNameSelector = ".alternative, .seriestualt" - open val altName = "Alternative Name" + ": " - - open fun parseStatus(status: String) = when { - status.contains("Ongoing") -> SManga.ONGOING - status.contains("Completed") -> SManga.COMPLETED - else -> SManga.UNKNOWN - } - - // chapters - override fun chapterListSelector() = "div.bxcl li, #chapterlist li .eph-num a" - - override fun chapterListParse(response: Response): List<SChapter> { - val document = response.asJsoup() - val chapters = document.select(chapterListSelector()).map { chapterFromElement(it) } - - // Add timestamp to latest chapter, taken from "Updated On". so source which not provide chapter timestamp will have atleast one - val date = document.select(".listinfo time[itemprop=dateModified]").attr("datetime") - val checkChapter = document.select(chapterListSelector()).firstOrNull() - if (date != "" && checkChapter != null) chapters[0].date_upload = parseDate(date) - - countViews(document) - - return chapters - } - - private fun parseChapterDate(date: String): Long { - return try { - dateFormat.parse(date)?.time ?: 0 - } catch (_: Exception) { - 0L - } - } - - private fun parseDate(date: String): Long { - return SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH).parse(date)?.time ?: 0L - } - - override fun chapterFromElement(element: Element) = SChapter.create().apply { - setUrlWithoutDomain(element.select("a").attr("href").substringAfter(baseUrl)) - name = element.select(".lch a, .chapternum").text() - date_upload = element.select(".chapterdate").firstOrNull()?.text()?.let { parseChapterDate(it) } ?: 0 - } - - // pages - open val pageSelector = "div#readerarea img" - - override fun pageListParse(document: Document): List<Page> { - val pages = mutableListOf<Page>() - document.select(pageSelector) - .filterNot { it.attr("abs:src").isNullOrEmpty() } - .mapIndexed { i, img -> pages.add(Page(i, "", img.attr("abs:src"))) } - - countViews(document) - - // Some sites like Mangakita, MangKomik now load pages via javascript - if (pages.isNotEmpty()) { return pages } - - val docString = document.toString() - val imageListRegex = Regex("\\\"images\\\"\\s*:\\s*(\\[.*?\\])") - val imageListJson = imageListRegex.find(docString)!!.destructured.toList()[0] - - val imageList = json.parseToJsonElement(imageListJson).jsonArray - - pages += imageList.mapIndexed { i, jsonEl -> - Page(i, "", jsonEl.jsonPrimitive.content) - } - - return pages - } - - override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException("Not Used") - - /** - * Set it to false if you want to disable the extension reporting the view count - * back to the source website through admin-ajax.php. - */ - protected open val sendViewCount: Boolean = true - - protected open fun countViewsRequest(document: Document): Request? { - val wpMangaData = document.select("script:containsData(dynamic_view_ajax)").firstOrNull() - ?.data() ?: return null - - val postId = CHAPTER_PAGE_ID_REGEX.find(wpMangaData)?.groupValues?.get(1) - ?: MANGA_PAGE_ID_REGEX.find(wpMangaData)?.groupValues?.get(1) - ?: return null - - val formBody = FormBody.Builder() - .add("action", "dynamic_view_ajax") - .add("post_id", postId) - .build() - - val newHeaders = headersBuilder() - .set("Content-Length", formBody.contentLength().toString()) - .set("Content-Type", formBody.contentType().toString()) - .set("Referer", document.location()) - .build() - - return POST("$baseUrl/wp-admin/admin-ajax.php", newHeaders, formBody) - } - - /** - * Send the view count request to the Madara endpoint. - * - * @param document The response document with the wp-manga data - */ - protected open fun countViews(document: Document) { - if (!sendViewCount) { - return - } - - val request = countViewsRequest(document) ?: return - runCatching { client.newCall(request).execute().close() } - } - - private interface UrlEncoded { - fun encode(url: HttpUrl.Builder) - } - - // essentially a named pair - protected class LabeledValue(val displayname: String, val _value: String?) { - val value: String get() = _value ?: displayname - override fun toString(): String = displayname - } - - private open class Select<T>(header: String, values: Array<T>, state: Int = 0) : Filter.Select<T>(header, values, state) { - val selected: T - get() = this.values[this.state] - } - - private open class MultiSelect<T>(header: String, val elems: List<T>) : - Filter.Group<Filter.CheckBox>(header, elems.map { object : Filter.CheckBox("$it") {} }) { - val selected: Sequence<T> - get() = this.elems.asSequence().filterIndexed { i, _ -> this.state[i].state } - } - - open val hasProjectPage = false - - // filters - override fun getFilterList(): FilterList { - val filters = mutableListOf<Filter<*>>( - Filter.Header("NOTE: Ignored if using text search!"), - GenreFilter(), - StatusFilter(), - TypesFilter(), - OrderByFilter(), - ) - if (hasProjectPage) { - filters.addAll( - mutableListOf<Filter<*>>( - Filter.Separator(), - Filter.Header("NOTE: cant be used with other filter!"), - Filter.Header("$name Project List page"), - ProjectFilter(), - ) - ) - } - return FilterList(filters) - } - - protected class ProjectFilter : UriPartFilter( - "Filter Project", - arrayOf( - Pair("Show all manga", ""), - Pair("Show only project manga", "project-filter-on") - ) - ) - - open class UriPartFilter(displayName: String, private val vals: Array<Pair<String, String>>) : - Filter.Select<String>(displayName, vals.map { it.first }.toTypedArray()) { - fun toUriPart() = vals[state].second - } - - private fun GenreFilter() = object : MultiSelect<LabeledValue>("Genre", getGenreList()), UrlEncoded { - override fun encode(url: HttpUrl.Builder) { - selected.forEach { url.addQueryParameter("genre[]", it.value) } - } - } - - private fun StatusFilter() = object : Select<LabeledValue>("Status", getPublicationStatus()), UrlEncoded { - override fun encode(url: HttpUrl.Builder) { - url.addQueryParameter("status", selected.value) - } - } - - private fun TypesFilter() = object : Select<LabeledValue>("Type", getContentType()), UrlEncoded { - override fun encode(url: HttpUrl.Builder) { - url.addQueryParameter("type", selected.value) - } - } - - private fun OrderByFilter(state: Int = 0) = object : Select<LabeledValue>("Order By", getOrderBy(), state), UrlEncoded { - override fun encode(url: HttpUrl.Builder) { - url.addQueryParameter("order", selected.value) - } - } - - // overridable - // some sources have numeric values for filters - private var genrelist: List<LabeledValue>? = null - protected open fun getGenreList(): List<LabeledValue> { - // Filters are fetched immediately once an extension loads - // We're only able to get filters after a loading the manga directory, and resetting - // the filters is the only thing that seems to reinflate the view - return genrelist ?: listOf(LabeledValue("Press reset to attempt to fetch genres", "")) - } - - private fun getPublicationStatus() = arrayOf( - LabeledValue("All", ""), - LabeledValue("Ongoing", "ongoing"), - LabeledValue("Completed", "completed"), - LabeledValue("Hiatus", "hiatus") - ) - - private fun getContentType() = arrayOf( - LabeledValue("All", ""), - LabeledValue("Manga", "manga"), - LabeledValue("Manhwa", "manhwa"), - LabeledValue("Manhua", "manhua"), - LabeledValue("Comic", "comic") - ) - - private fun getOrderBy() = arrayOf( - LabeledValue("Default", ""), - LabeledValue("A-Z", "title"), - LabeledValue("Z-A", "titlereverse"), - LabeledValue("Update", "update"), - LabeledValue("Added", "latest"), - LabeledValue("Popular", "popular") - ) - - companion object { - const val URL_SEARCH_PREFIX = "url:" - - private val MANGA_PAGE_ID_REGEX = "post_id\\s*:\\s*(\\d+)\\}".toRegex() - private val CHAPTER_PAGE_ID_REGEX = "post_id\\s*=\\s*(\\d+);?".toRegex() - } -} diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangastream/WPMangaStream.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangastream/WPMangaStream.kt deleted file mode 100644 index b302688a0..000000000 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangastream/WPMangaStream.kt +++ /dev/null @@ -1,607 +0,0 @@ -package eu.kanade.tachiyomi.multisrc.wpmangastream - -import android.app.Application -import android.content.SharedPreferences -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.POST -import eu.kanade.tachiyomi.network.asObservableSuccess -import eu.kanade.tachiyomi.source.ConfigurableSource -import eu.kanade.tachiyomi.source.model.Filter -import eu.kanade.tachiyomi.source.model.FilterList -import eu.kanade.tachiyomi.source.model.MangasPage -import eu.kanade.tachiyomi.source.model.Page -import eu.kanade.tachiyomi.source.model.SChapter -import eu.kanade.tachiyomi.source.model.SManga -import eu.kanade.tachiyomi.source.online.ParsedHttpSource -import eu.kanade.tachiyomi.util.asJsoup -import kotlinx.serialization.json.Json -import kotlinx.serialization.json.jsonArray -import kotlinx.serialization.json.jsonPrimitive -import okhttp3.FormBody -import okhttp3.Headers -import okhttp3.HttpUrl -import okhttp3.HttpUrl.Companion.toHttpUrl -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull -import okhttp3.OkHttpClient -import okhttp3.Request -import okhttp3.Response -import org.jsoup.nodes.Document -import org.jsoup.nodes.Element -import org.jsoup.select.Elements -import rx.Observable -import rx.Single -import uy.kohesive.injekt.Injekt -import uy.kohesive.injekt.api.get -import uy.kohesive.injekt.injectLazy -import java.text.SimpleDateFormat -import java.util.Calendar -import java.util.Locale -import java.util.concurrent.TimeUnit - -abstract class WPMangaStream( - override val name: String, - override val baseUrl: String, - override val lang: String, - private val dateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale.US) -) : ConfigurableSource, ParsedHttpSource() { - override val supportsLatest = true - - private val preferences: SharedPreferences by lazy { - Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000) - } - - override fun setupPreferenceScreen(screen: androidx.preference.PreferenceScreen) { - val thumbsPref = androidx.preference.ListPreference(screen.context).apply { - key = SHOW_THUMBNAIL_PREF_Title - title = SHOW_THUMBNAIL_PREF_Title - entries = arrayOf("Show high quality", "Show mid quality", "Show low quality") - entryValues = arrayOf("0", "1", "2") - summary = "%s" - - setOnPreferenceChangeListener { _, newValue -> - val selected = newValue as String - val index = this.findIndexOfValue(selected) - preferences.edit().putInt(SHOW_THUMBNAIL_PREF, index).commit() - } - } - screen.addPreference(thumbsPref) - } - - private fun getShowThumbnail(): Int = preferences.getInt(SHOW_THUMBNAIL_PREF, 0) - - override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .connectTimeout(10, TimeUnit.SECONDS) - .readTimeout(30, TimeUnit.SECONDS) - .build() - - protected fun Element.imgAttr(): String = if (this.hasAttr("data-src")) this.attr("abs:data-src") else this.attr("abs:src") - protected fun Elements.imgAttr(): String = this.first().imgAttr() - - private val json: Json by injectLazy() - - override fun popularMangaRequest(page: Int): Request { - return GET("$baseUrl/manga/?page=$page&order=popular", headers) - } - - override fun latestUpdatesRequest(page: Int): Request { - return GET("$baseUrl/manga/?page=$page&order=update", headers) - } - - /** - * Given some string which represents an http url, returns the URI path to the corresponding series - * if the original pointed to either a series or a chapter - * - * @param s: String - url - * - * @returns URI path or null - */ - protected open fun mangaPathFromUrl(s: String): Single<String?> { - val baseMangaUrl = baseUrl.toHttpUrlOrNull()!! - // Would be dope if wpmangastream had a mangaUrlDirectory like wpmangareader - val mangaDirectories = listOf("manga", "comics", "komik") - return s.toHttpUrlOrNull()?.let { url -> - fun pathLengthIs(url: HttpUrl, n: Int, strict: Boolean = false) = url.pathSegments.size == n && url.pathSegments[n - 1].isNotEmpty() || (!strict && url.pathSegments.size == n + 1 && url.pathSegments[n].isEmpty()) - val potentiallyChapterUrl = pathLengthIs(url, 1) - val isMangaUrl = listOf( - baseMangaUrl.topPrivateDomain() == url.topPrivateDomain(), - pathLengthIs(url, 2), - url.pathSegments[0] in mangaDirectories - ).all { it } - if (isMangaUrl) - Single.just(url.encodedPath) - else if (potentiallyChapterUrl) - client.newCall(GET(s, headers)).asObservableSuccess().map { - val links = it.asJsoup().select("a[itemprop=item]") - if (links.size == 3) // near the top of page: home > manga > current chapter - links[1].attr("href").toHttpUrlOrNull()?.encodedPath - else - null - }.toSingle() - else - Single.just(null) - } ?: Single.just(null) - } - - override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> { - if (!query.startsWith(URL_SEARCH_PREFIX)) - return super.fetchSearchManga(page, query, filters) - - return mangaPathFromUrl(query.substringAfter(URL_SEARCH_PREFIX)) - .toObservable() - .concatMap { path -> - if (path == null) - Observable.just(MangasPage(emptyList(), false)) - else - fetchMangaDetails(SManga.create().apply { this.url = path }) - .map { - it.url = path // isn't set in returned manga - MangasPage(listOf(it), false) - } - } - } - - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - var url = "$baseUrl/manga/".toHttpUrlOrNull()!!.newBuilder() - url.addQueryParameter("title", query) - url.addQueryParameter("page", page.toString()) - filters.forEach { filter -> - when (filter) { - is AuthorFilter -> { - url.addQueryParameter("author", filter.state) - } - is YearFilter -> { - url.addQueryParameter("yearx", filter.state) - } - is StatusFilter -> { - url.addQueryParameter("status", filter.toUriPart()) - } - is TypeFilter -> { - url.addQueryParameter("type", filter.toUriPart()) - } - is SortByFilter -> { - url.addQueryParameter("order", filter.toUriPart()) - } - is GenreListFilter -> { - filter.state - .filter { it.state != Filter.TriState.STATE_IGNORE } - .forEach { url.addQueryParameter("genre[]", it.id) } - } - // if site has project page, default value "hasProjectPage" = false - is ProjectFilter -> { - if (filter.toUriPart() == "project-filter-on") { - url = "$baseUrl$projectPageString/page/$page".toHttpUrlOrNull()!!.newBuilder() - } - } - } - } - return GET(url.build().toString(), headers) - } - - open val projectPageString = "/project" - - override fun popularMangaSelector() = "div.bs" - override fun latestUpdatesSelector() = popularMangaSelector() - override fun searchMangaSelector() = popularMangaSelector() - - override fun popularMangaFromElement(element: Element): SManga { - val manga = SManga.create() - manga.thumbnail_url = element.select("div.limit img").imgAttr() - element.select("div.bsx > a").first().let { - manga.setUrlWithoutDomain(it.attr("href")) - manga.title = it.attr("title") - } - return manga - } - - override fun searchMangaFromElement(element: Element): SManga = popularMangaFromElement(element) - override fun latestUpdatesFromElement(element: Element): SManga = popularMangaFromElement(element) - - override fun popularMangaNextPageSelector(): String? = "a.next.page-numbers, a.r" - override fun latestUpdatesNextPageSelector() = popularMangaNextPageSelector() - override fun searchMangaNextPageSelector() = popularMangaNextPageSelector() - - override fun mangaDetailsParse(document: Document): SManga { - return SManga.create().apply { - document.select("div.bigcontent, div.animefull, div.main-info").firstOrNull()?.let { infoElement -> - status = parseStatus(infoElement.select(mangaDetailsSelectorStatus).firstOrNull()?.ownText()) - author = isEmptyPlaceholder(infoElement.select(mangaDetailsSelectorAuthor).firstOrNull()?.ownText()) - artist = isEmptyPlaceholder(infoElement.select(mangaDetailsSelectorArtist).firstOrNull()?.ownText()) - description = infoElement.select(mangaDetailsSelectorDescription).joinToString("\n") { it.text() } - thumbnail_url = infoElement.select(mangaDetailsSelectorThumbnail).imgAttr() - - val genres = infoElement.select(mangaDetailsSelectorGenre) - .map { element -> element.text().lowercase() } - .toMutableSet() - - // add series type(manga/manhwa/manhua/other) thinggy to genre - document.select(seriesTypeSelector).firstOrNull()?.ownText()?.let { - if (it.isEmpty().not() && genres.contains(it).not()) { - genres.add(it.lowercase()) - } - } - - genre = genres.toList().map { it.capitalize() }.joinToString(", ") - - // add alternative name to manga description - document.select(altNameSelector).firstOrNull()?.ownText()?.let { - if (it.isBlank().not() && it != "N/A" && it != "-") { - description = when { - description.isNullOrBlank() -> altName + it - else -> description + "\n\n$altName" + it - } - } - } - } - } - } - // Manga Details Selector - open val mangaDetailsSelectorAuthor = "span:contains(Author:), span:contains(Pengarang:), .fmed b:contains(Author)+span, .imptdt:contains(Author) i" - open val mangaDetailsSelectorArtist = ".fmed b:contains(Artist)+span, .imptdt:contains(Artist) i" - open val mangaDetailsSelectorStatus = "span:contains(Status:), .imptdt:contains(Status) i" - open val mangaDetailsSelectorDescription = "div.desc p, div.entry-content p" - open val mangaDetailsSelectorThumbnail = "div.thumb img" - open val mangaDetailsSelectorGenre = "span:contains(Genre) a, .mgen a" - - open val seriesTypeSelector = "span:contains(Type) a, .imptdt:contains(Type) a, a[href*=type\\=], .infotable tr:contains(Type) td:last-child" - open val altNameSelector = ".alternative, .wd-full:contains(Alt) span, .alter, .seriestualt" - open val altName = "Alternative Name" + ": " - - protected open fun parseStatus(element: String?): Int = when { - element == null -> SManga.UNKNOWN - listOf("ongoing", "publishing").any { it.contains(element, ignoreCase = true) } -> SManga.ONGOING - listOf("completed").any { it.contains(element, ignoreCase = true) } -> SManga.COMPLETED - else -> SManga.UNKNOWN - } - - private fun isEmptyPlaceholder(string: String?): String? { - return if (string == "-" || string == "N/A") "" else string - } - - override fun chapterListSelector() = "div.bxcl ul li, div.cl ul li, ul li:has(div.chbox):has(div.eph-num)" - - override fun chapterListParse(response: Response): List<SChapter> { - val document = response.asJsoup() - val chapters = document.select(chapterListSelector()).map { chapterFromElement(it) } - - // Add timestamp to latest chapter, taken from "Updated On". so source which not provide chapter timestamp will have atleast one - val date = document.select(".fmed:contains(update) time ,span:contains(update) time").attr("datetime") - val checkChapter = document.select(chapterListSelector()).firstOrNull() - if (date != "" && checkChapter != null) chapters[0].date_upload = parseDate(date) - - countViews(document) - - return chapters - } - - private fun parseDate(date: String): Long { - return SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH).parse(date)?.time ?: 0L - } - - override fun chapterFromElement(element: Element): SChapter { - val urlElement = element.select(".lchx > a, span.leftoff a, div.eph-num > a").first() - val chapter = SChapter.create() - chapter.setUrlWithoutDomain(urlElement.attr("href")) - chapter.name = if (urlElement.select("span.chapternum").isNotEmpty()) urlElement.select("span.chapternum").text() else urlElement.text() - chapter.date_upload = element.select("span.rightoff, time, span.chapterdate").firstOrNull()?.text()?.let { parseChapterDate(it) } - ?: 0 - return chapter - } - - fun parseChapterDate(date: String): Long { - return if (date.endsWith("ago")) { - val value = date.split(' ')[0].toInt() - when { - "min" in date -> Calendar.getInstance().apply { - add(Calendar.MINUTE, value * -1) - }.timeInMillis - "hour" in date -> Calendar.getInstance().apply { - add(Calendar.HOUR_OF_DAY, value * -1) - }.timeInMillis - "day" in date -> Calendar.getInstance().apply { - add(Calendar.DATE, value * -1) - }.timeInMillis - "week" in date -> Calendar.getInstance().apply { - add(Calendar.DATE, value * 7 * -1) - }.timeInMillis - "month" in date -> Calendar.getInstance().apply { - add(Calendar.MONTH, value * -1) - }.timeInMillis - "year" in date -> Calendar.getInstance().apply { - add(Calendar.YEAR, value * -1) - }.timeInMillis - else -> { - 0L - } - } - } else { - try { - dateFormat.parse(date)?.time ?: 0 - } catch (_: Exception) { - 0L - } - } - } - - override fun prepareNewChapter(chapter: SChapter, manga: SManga) { - val basic = Regex("""Chapter\s([0-9]+)""") - when { - basic.containsMatchIn(chapter.name) -> { - basic.find(chapter.name)?.let { - chapter.chapter_number = it.groups[1]?.value!!.toFloat() - } - } - } - } - - open val pageSelector = "div#readerarea img" - - override fun pageListParse(document: Document): List<Page> { - val htmlPages = document.select(pageSelector) - .filterNot { it.attr("abs:src").isNullOrEmpty() } - .mapIndexed { i, img -> Page(i, "", img.attr("abs:src")) } - .toMutableList() - - val docString = document.toString() - val imageListRegex = Regex("\\\"images.*?:.*?(\\[.*?\\])") - val imageListJson = imageListRegex.find(docString)!!.destructured.toList()[0] - - val imageList = json.parseToJsonElement(imageListJson).jsonArray - val baseResolver = baseUrl.toHttpUrl() - - val scriptPages = imageList.mapIndexed { i, jsonEl -> - val imageUrl = jsonEl.jsonPrimitive.content - Page(i, "", baseResolver.resolve(imageUrl).toString()) - } - - if (htmlPages.size < scriptPages.size) { - htmlPages += scriptPages - } - - countViews(document) - - return htmlPages.distinctBy { it.imageUrl } - } - - override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException("Not used") - - override fun imageRequest(page: Page): Request { - val headers = Headers.Builder() - headers.apply { - add("Accept", "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8") - add("Referer", baseUrl) - add("User-Agent", "Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.100 Mobile Safari/537.36") - } - - if (page.imageUrl!!.contains(".wp.com")) { - headers.apply { - set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3") - } - } - - return GET(getImageUrl(page.imageUrl!!, getShowThumbnail()), headers.build()) - } - - private fun getImageUrl(originalUrl: String, quality: Int): String { - val url = originalUrl.substringAfter("//") - return when (quality) { - LOW_QUALITY -> "https://images.weserv.nl/?w=300&q=70&url=$url" - MID_QUALITY -> "https://images.weserv.nl/?w=600&q=70&url=$url" - else -> originalUrl - } - } - - /** - * Set it to false if you want to disable the extension reporting the view count - * back to the source website through admin-ajax.php. - */ - protected open val sendViewCount: Boolean = true - - protected open fun countViewsRequest(document: Document): Request? { - val wpMangaData = document.select("script:containsData(dynamic_view_ajax)").firstOrNull() - ?.data() ?: return null - - val postId = CHAPTER_PAGE_ID_REGEX.find(wpMangaData)?.groupValues?.get(1) - ?: MANGA_PAGE_ID_REGEX.find(wpMangaData)?.groupValues?.get(1) - ?: return null - - val formBody = FormBody.Builder() - .add("action", "dynamic_view_ajax") - .add("post_id", postId) - .build() - - val newHeaders = headersBuilder() - .set("Content-Length", formBody.contentLength().toString()) - .set("Content-Type", formBody.contentType().toString()) - .set("Referer", document.location()) - .build() - - return POST("$baseUrl/wp-admin/admin-ajax.php", newHeaders, formBody) - } - - /** - * Send the view count request to the Madara endpoint. - * - * @param document The response document with the wp-manga data - */ - protected open fun countViews(document: Document) { - if (!sendViewCount) { - return - } - - val request = countViewsRequest(document) ?: return - runCatching { client.newCall(request).execute().close() } - } - - private class AuthorFilter : Filter.Text("Author") - - private class YearFilter : Filter.Text("Year") - - protected class TypeFilter : UriPartFilter( - "Type", - arrayOf( - Pair("Default", ""), - Pair("Manga", "Manga"), - Pair("Manhwa", "Manhwa"), - Pair("Manhua", "Manhua"), - Pair("Comic", "Comic") - ) - ) - - protected class SortByFilter : UriPartFilter( - "Sort By", - arrayOf( - Pair("Default", ""), - Pair("A-Z", "title"), - Pair("Z-A", "titlereverse"), - Pair("Latest Update", "update"), - Pair("Latest Added", "latest"), - Pair("Popular", "popular") - ) - ) - - protected class StatusFilter : UriPartFilter( - "Status", - arrayOf( - Pair("All", ""), - Pair("Ongoing", "ongoing"), - Pair("Completed", "completed"), - Pair("Hiatus", "hiatus"), - Pair("Dropped", "dropped") - ) - ) - - protected class ProjectFilter : UriPartFilter( - "Filter Project", - arrayOf( - Pair("Show all manga", ""), - Pair("Show only project manga", "project-filter-on") - ) - ) - - protected class Genre(name: String, val id: String = name) : Filter.TriState(name) - protected class GenreListFilter(genres: List<Genre>) : Filter.Group<Genre>("Genre", genres) - - open val hasProjectPage = false - - override fun getFilterList(): FilterList { - val filters = mutableListOf<Filter<*>>( - Filter.Header("NOTE: Ignored if using text search!"), - Filter.Header("Genre exclusion not available for all sources"), - Filter.Separator(), - AuthorFilter(), - YearFilter(), - StatusFilter(), - TypeFilter(), - SortByFilter(), - GenreListFilter(getGenreList()), - ) - if (hasProjectPage) { - filters.addAll( - mutableListOf<Filter<*>>( - Filter.Separator(), - Filter.Header("NOTE: cant be used with other filter!"), - Filter.Header("$name Project List page"), - ProjectFilter(), - ) - ) - } - return FilterList(filters) - } - - protected open fun getGenreList(): List<Genre> = listOf( - Genre("4 Koma", "4-koma"), - Genre("Action", "action"), - Genre("Adult", "adult"), - Genre("Adventure", "adventure"), - Genre("Comedy", "comedy"), - Genre("Completed", "completed"), - Genre("Cooking", "cooking"), - Genre("Crime", "crime"), - Genre("Cultivation", "cultivation"), - Genre("Demon", "demon"), - Genre("Demons", "demons"), - Genre("Doujinshi", "doujinshi"), - Genre("Drama", "drama"), - Genre("Dungeons", "dungeons"), - Genre("Ecchi", "ecchi"), - Genre("Fantasy", "fantasy"), - Genre("Game", "game"), - Genre("Games", "games"), - Genre("Gender Bender", "gender-bender"), - Genre("Genius", "genius"), - Genre("Gore", "gore"), - Genre("Harem", "harem"), - Genre("Hero", "hero"), - Genre("Historical", "historical"), - Genre("Horror", "horror"), - Genre("Isekai", "isekai"), - Genre("Josei", "josei"), - Genre("Magic", "magic"), - Genre("Manga", "manga"), - Genre("Manhua", "manhua"), - Genre("Manhwa", "manhwa"), - Genre("Martial Art", "martial-art"), - Genre("Martial Arts", "martial-arts"), - Genre("Mature", "mature"), - Genre("Mecha", "mecha"), - Genre("Military", "military"), - Genre("Monster", "monster"), - Genre("Monster Girls", "monster-girls"), - Genre("Monsters", "monsters"), - Genre("Music", "music"), - Genre("Murim", "murim"), - Genre("Mystery", "mystery"), - Genre("One-shot", "one-shot"), - Genre("Oneshot", "oneshot"), - Genre("Overpowered", "overpowered"), - Genre("Police", "police"), - Genre("Pshycological", "pshycological"), - Genre("Psychological", "psychological"), - Genre("Reincarnation", "reincarnation"), - Genre("Reverse Harem", "reverse-harem"), - Genre("Return", "return"), - Genre("Romancce", "romancce"), - Genre("Romance", "romance"), - Genre("Samurai", "samurai"), - Genre("School", "school"), - Genre("School Life", "school-life"), - Genre("Sci-fi", "sci-fi"), - Genre("Seinen", "seinen"), - Genre("Shoujo", "shoujo"), - Genre("Shoujo Ai", "shoujo-ai"), - Genre("Shounen", "shounen"), - Genre("Shounen Ai", "shounen-ai"), - Genre("Slice of Life", "slice-of-life"), - Genre("Sports", "sports"), - Genre("Super Power", "super-power"), - Genre("Supernatural", "supernatural"), - Genre("Thriller", "thriller"), - Genre("Time Travel", "time-travel"), - Genre("Tragedy", "tragedy"), - Genre("Vampire", "vampire"), - Genre("Villain", "villain"), - Genre("Webtoon", "webtoon"), - Genre("Webtoons", "webtoons"), - Genre("Yaoi", "yaoi"), - Genre("Yuri", "yuri"), - Genre("Zombies", "zombies") - ) - - open class UriPartFilter(displayName: String, private val vals: Array<Pair<String, String>>) : - Filter.Select<String>(displayName, vals.map { it.first }.toTypedArray()) { - fun toUriPart() = vals[state].second - } - - companion object { - private const val MID_QUALITY = 1 - private const val LOW_QUALITY = 2 - - private const val SHOW_THUMBNAIL_PREF_Title = "Default thumbnail quality" - private const val SHOW_THUMBNAIL_PREF = "showThumbnailDefault" - - const val URL_SEARCH_PREFIX = "url:" - - private val MANGA_PAGE_ID_REGEX = "post_id\\s*:\\s*(\\d+)\\}".toRegex() - private val CHAPTER_PAGE_ID_REGEX = "chapter_id\\s*=\\s*(\\d+);?".toRegex() - } -} diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangastream/WPMangaStreamGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangastream/WPMangaStreamGenerator.kt deleted file mode 100644 index d812e4361..000000000 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangastream/WPMangaStreamGenerator.kt +++ /dev/null @@ -1,65 +0,0 @@ -package eu.kanade.tachiyomi.multisrc.wpmangastream - -import generator.ThemeSourceData.MultiLang -import generator.ThemeSourceData.SingleLang -import generator.ThemeSourceGenerator - -class WPMangaStreamGenerator : ThemeSourceGenerator { - - override val themePkg = "wpmangastream" - - override val themeClass = "WPMangaStream" - - override val baseVersionCode: Int = 15 - - override val sources = listOf( - MultiLang("Asura Scans", "https://www.asurascans.com", listOf("en", "tr"), className = "AsuraScansFactory", pkgName = "asurascans", overrideVersionCode = 16), - SingleLang("Animated Glitched Scans", "https://anigliscans.com", "en"), - SingleLang("Boosei", "https://boosei.com", "id", overrideVersionCode = 1), - SingleLang("GoGoManga", "https://gogomanga.fun", "en", overrideVersionCode = 1), - SingleLang("Imagine Scan", "https://imaginescan.com.br", "pt-BR", isNsfw = true, overrideVersionCode = 1), - SingleLang("Imperfect Comics", "https://imperfectcomic.com", "en", overrideVersionCode = 8), - SingleLang("Infernal Void Scans", "https://void-scans.com", "en", overrideVersionCode = 4), - SingleLang("Kanzenin", "https://kanzenin.xyz", "id", isNsfw = true), - SingleLang("KlanKomik", "https://klankomik.com", "id", overrideVersionCode = 1), - SingleLang("Komik AV", "https://komikav.com", "id", overrideVersionCode = 1), - SingleLang("Komik Cast", "https://komikcast.me", "id", overrideVersionCode = 12), - SingleLang("Komik Station", "https://komikstation.co", "id", overrideVersionCode = 3), - SingleLang("KomikIndo.co", "https://komikindo.co", "id", className = "KomikindoCo", overrideVersionCode = 3), - SingleLang("Kuma Scans (Kuma Translation)", "https://kumascans.com", "en", className = "KumaScans", overrideVersionCode = 1), - SingleLang("Manga Pro", "https://mangaprotm.com", "ar", pkgName = "mangaproz", overrideVersionCode = 3), - SingleLang("Manga Raw.org", "https://mangaraw.org", "ja", className = "MangaRawOrg", overrideVersionCode = 1), - SingleLang("Manhwax", "https://manhwax.com", "en", isNsfw = true), - SingleLang("MangaSwat", "https://swatmanga.co", "ar", overrideVersionCode = 7), - SingleLang("Mangakyo", "https://www.mangakyo.me", "id"), - SingleLang("Mareceh", "https://mareceh.com", "id", isNsfw = true, pkgName = "mangceh", overrideVersionCode = 10), - SingleLang("MasterKomik", "https://masterkomik.com", "id", overrideVersionCode = 1), - SingleLang("Mihentai", "https://mihentai.com", "en", isNsfw = true, overrideVersionCode = 1), - SingleLang("Non-Stop Scans", "https://www.nonstopscans.com", "en", className = "NonStopScans"), - SingleLang("NoxSubs", "https://noxsubs.com", "tr"), - SingleLang("Omega Scans", "https://omegascans.org", "en", isNsfw = true), - SingleLang("Phantom Scans", "https://phantomscans.com", "en", overrideVersionCode = 1), - SingleLang("Phoenix Fansub", "https://phoenixfansub.com", "es", overrideVersionCode = 2), - SingleLang("Random Scans", "https://randomscans.xyz", "en"), - SingleLang("Rawkuma", "https://rawkuma.com/", "ja"), - SingleLang("Readkomik", "https://readkomik.com", "en", className = "ReadKomik", overrideVersionCode = 1), - SingleLang("Sekte Doujin", "https://sektedoujin.club", "id", isNsfw = true, overrideVersionCode = 3), - SingleLang("Sekte Komik", "https://sektekomik.com", "id", overrideVersionCode = 4), - SingleLang("Shadow Mangas", "https://shadowmangas.com", "es"), - SingleLang("Shea Manga", "https://sheakomik.com", "id", overrideVersionCode = 4), - SingleLang("Snudae Scans", "https://snudaescans.com", "en", isNsfw = true, className = "BatotoScans", overrideVersionCode = 1), - SingleLang("Summer Fansub", "https://smmr.in", "pt-BR", isNsfw = true), - SingleLang("Tempest Manga", "https://manga.tempestfansub.com", "tr"), - SingleLang("The Apollo Team", "https://theapollo.team", "en"), - SingleLang("TukangKomik", "https://tukangkomik.com", "id"), - SingleLang("West Manga", "https://westmanga.info", "id", overrideVersionCode = 1), - SingleLang("xCaliBR Scans", "https://xcalibrscans.com", "en", overrideVersionCode = 3), - ) - - companion object { - @JvmStatic - fun main(args: Array<String>) { - WPMangaStreamGenerator().createAll() - } - } -} diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangastream/WPMangaStreamUrlActivity.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangastream/WPMangaStreamUrlActivity.kt deleted file mode 100644 index 2e145cf09..000000000 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangastream/WPMangaStreamUrlActivity.kt +++ /dev/null @@ -1,35 +0,0 @@ -package eu.kanade.tachiyomi.multisrc.wpmangastream - -import android.app.Activity -import android.content.ActivityNotFoundException -import android.content.Intent -import android.os.Bundle -import android.util.Log -import kotlin.system.exitProcess - -class WPMangaStreamUrlActivity : Activity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - val pathSegments = intent?.data?.pathSegments - - if (pathSegments != null && pathSegments.size >= 1) { - - val mainIntent = Intent().apply { - action = "eu.kanade.tachiyomi.SEARCH" - putExtra("query", "${WPMangaStream.URL_SEARCH_PREFIX}${intent?.data?.toString()}") - putExtra("filter", packageName) - } - try { - startActivity(mainIntent) - } catch (e: ActivityNotFoundException) { - Log.e("WPMangaStreamUrl", e.toString()) - } - } else { - Log.e("WPMangaStreamUrl", "could not parse uri from intent $intent") - } - - finish() - exitProcess(0) - } -}