diff --git a/multisrc/overrides/wpmangareader/daveyscans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/wpmangareader/daveyscans/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index db8707ab8..000000000 Binary files a/multisrc/overrides/wpmangareader/daveyscans/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangareader/daveyscans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/wpmangareader/daveyscans/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 96a2ffaae..000000000 Binary files a/multisrc/overrides/wpmangareader/daveyscans/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangareader/daveyscans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/wpmangareader/daveyscans/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 4ff0579f4..000000000 Binary files a/multisrc/overrides/wpmangareader/daveyscans/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangareader/daveyscans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/wpmangareader/daveyscans/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 07206f888..000000000 Binary files a/multisrc/overrides/wpmangareader/daveyscans/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangareader/daveyscans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/wpmangareader/daveyscans/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 1702f7f58..000000000 Binary files a/multisrc/overrides/wpmangareader/daveyscans/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangareader/daveyscans/res/web_hi_res_512.png b/multisrc/overrides/wpmangareader/daveyscans/res/web_hi_res_512.png deleted file mode 100644 index 321163865..000000000 Binary files a/multisrc/overrides/wpmangareader/daveyscans/res/web_hi_res_512.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/gurukomik/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/gurukomik/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index ad0a153ce..000000000 Binary files a/multisrc/overrides/wpmangastream/gurukomik/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/gurukomik/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/gurukomik/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 830db4ac9..000000000 Binary files a/multisrc/overrides/wpmangastream/gurukomik/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/gurukomik/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/gurukomik/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index cf0ca5f1d..000000000 Binary files a/multisrc/overrides/wpmangastream/gurukomik/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/gurukomik/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/gurukomik/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index f8f78fbb3..000000000 Binary files a/multisrc/overrides/wpmangastream/gurukomik/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/gurukomik/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/gurukomik/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 9acb8e590..000000000 Binary files a/multisrc/overrides/wpmangastream/gurukomik/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/gurukomik/res/web_hi_res_512.png b/multisrc/overrides/wpmangastream/gurukomik/res/web_hi_res_512.png deleted file mode 100644 index e5d331a09..000000000 Binary files a/multisrc/overrides/wpmangastream/gurukomik/res/web_hi_res_512.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/gurukomik/src/GURUKomik.kt b/multisrc/overrides/wpmangastream/gurukomik/src/GURUKomik.kt deleted file mode 100644 index 07826d38e..000000000 --- a/multisrc/overrides/wpmangastream/gurukomik/src/GURUKomik.kt +++ /dev/null @@ -1,18 +0,0 @@ -package eu.kanade.tachiyomi.extension.id.gurukomik - -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream -import okhttp3.OkHttpClient -import java.text.SimpleDateFormat -import java.util.Locale -import java.util.concurrent.TimeUnit - -class GURUKomik : WPMangaStream("GURU Komik", "https://gurukomik.com", "id", SimpleDateFormat("MMMM dd, yyyy", Locale.forLanguageTag("id"))) { - private val rateLimitInterceptor = RateLimitInterceptor(4) - - override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .connectTimeout(10, TimeUnit.SECONDS) - .readTimeout(30, TimeUnit.SECONDS) - .addNetworkInterceptor(rateLimitInterceptor) - .build() -} diff --git a/multisrc/overrides/wpmangastream/kaisarkomik/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/kaisarkomik/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 1362ec0f8..000000000 Binary files a/multisrc/overrides/wpmangastream/kaisarkomik/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/kaisarkomik/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/kaisarkomik/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 594e42d56..000000000 Binary files a/multisrc/overrides/wpmangastream/kaisarkomik/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/kaisarkomik/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/kaisarkomik/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index ae0f7b2a1..000000000 Binary files a/multisrc/overrides/wpmangastream/kaisarkomik/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/kaisarkomik/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/kaisarkomik/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 543898ba8..000000000 Binary files a/multisrc/overrides/wpmangastream/kaisarkomik/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/kaisarkomik/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/kaisarkomik/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 7ab7fddfd..000000000 Binary files a/multisrc/overrides/wpmangastream/kaisarkomik/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/kaisarkomik/res/web_hi_res_512.png b/multisrc/overrides/wpmangastream/kaisarkomik/res/web_hi_res_512.png deleted file mode 100644 index 05bbe42eb..000000000 Binary files a/multisrc/overrides/wpmangastream/kaisarkomik/res/web_hi_res_512.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/kaisarkomik/src/KaisarKomik.kt b/multisrc/overrides/wpmangastream/kaisarkomik/src/KaisarKomik.kt deleted file mode 100644 index 2ff3035d6..000000000 --- a/multisrc/overrides/wpmangastream/kaisarkomik/src/KaisarKomik.kt +++ /dev/null @@ -1,18 +0,0 @@ -package eu.kanade.tachiyomi.extension.id.kaisarkomik - -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream -import okhttp3.OkHttpClient -import java.util.concurrent.TimeUnit - -class KaisarKomik : WPMangaStream("Kaisar Komik", "https://kaisarkomik.com", "id") { - private val rateLimitInterceptor = RateLimitInterceptor(4) - - override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .connectTimeout(10, TimeUnit.SECONDS) - .readTimeout(30, TimeUnit.SECONDS) - .addNetworkInterceptor(rateLimitInterceptor) - .build() - - override val hasProjectPage = true -} diff --git a/multisrc/overrides/wpmangastream/kombatch/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/kombatch/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index cae7d1023..000000000 Binary files a/multisrc/overrides/wpmangastream/kombatch/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/kombatch/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/kombatch/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 95a66f1ba..000000000 Binary files a/multisrc/overrides/wpmangastream/kombatch/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/kombatch/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/kombatch/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index d5de5100d..000000000 Binary files a/multisrc/overrides/wpmangastream/kombatch/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/kombatch/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/kombatch/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 86b33c97c..000000000 Binary files a/multisrc/overrides/wpmangastream/kombatch/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/kombatch/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/kombatch/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index f123bdc8d..000000000 Binary files a/multisrc/overrides/wpmangastream/kombatch/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/kombatch/res/web_hi_res_512.png b/multisrc/overrides/wpmangastream/kombatch/res/web_hi_res_512.png deleted file mode 100644 index 451b58ca6..000000000 Binary files a/multisrc/overrides/wpmangastream/kombatch/res/web_hi_res_512.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/kombatch/src/Kombatch.kt b/multisrc/overrides/wpmangastream/kombatch/src/Kombatch.kt deleted file mode 100644 index b040df4d8..000000000 --- a/multisrc/overrides/wpmangastream/kombatch/src/Kombatch.kt +++ /dev/null @@ -1,9 +0,0 @@ -package eu.kanade.tachiyomi.extension.id.kombatch - -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream -import java.text.SimpleDateFormat -import java.util.Locale - -class Kombatch : WPMangaStream("Kombatch", "https://kombatch.com", "id", SimpleDateFormat("MMMM dd, yyyy", Locale("id"))) { - override val hasProjectPage = true -} diff --git a/multisrc/overrides/wpmangastream/komiksay/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/komiksay/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 5dcb87cc8..000000000 Binary files a/multisrc/overrides/wpmangastream/komiksay/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/komiksay/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/komiksay/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index ceafe766a..000000000 Binary files a/multisrc/overrides/wpmangastream/komiksay/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/komiksay/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/komiksay/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 16af166f6..000000000 Binary files a/multisrc/overrides/wpmangastream/komiksay/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/komiksay/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/komiksay/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 84172ab0c..000000000 Binary files a/multisrc/overrides/wpmangastream/komiksay/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/komiksay/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/wpmangastream/komiksay/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 628c084a3..000000000 Binary files a/multisrc/overrides/wpmangastream/komiksay/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/komiksay/res/web_hi_res_512.png b/multisrc/overrides/wpmangastream/komiksay/res/web_hi_res_512.png deleted file mode 100644 index fd9c3bc95..000000000 Binary files a/multisrc/overrides/wpmangastream/komiksay/res/web_hi_res_512.png and /dev/null differ diff --git a/multisrc/overrides/wpmangastream/komiksay/src/Komiksay.kt b/multisrc/overrides/wpmangastream/komiksay/src/Komiksay.kt deleted file mode 100644 index 762ff35b0..000000000 --- a/multisrc/overrides/wpmangastream/komiksay/src/Komiksay.kt +++ /dev/null @@ -1,18 +0,0 @@ -package eu.kanade.tachiyomi.extension.id.komiksay - -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream -import okhttp3.OkHttpClient -import java.util.concurrent.TimeUnit - -class Komiksay : WPMangaStream("Komiksay", "https://komiksay.com", "id") { - private val rateLimitInterceptor = RateLimitInterceptor(4) - - override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .connectTimeout(10, TimeUnit.SECONDS) - .readTimeout(30, TimeUnit.SECONDS) - .addNetworkInterceptor(rateLimitInterceptor) - .build() - - override val hasProjectPage = true -} diff --git a/multisrc/overrides/wpmangastream/mangaindonesia/src/MangaIndonesia.kt b/multisrc/overrides/wpmangastream/mangaindonesia/src/MangaIndonesia.kt deleted file mode 100644 index db9c03de0..000000000 --- a/multisrc/overrides/wpmangastream/mangaindonesia/src/MangaIndonesia.kt +++ /dev/null @@ -1,53 +0,0 @@ -package eu.kanade.tachiyomi.extension.id.mangaindonesia - -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor -import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.source.model.FilterList -import eu.kanade.tachiyomi.source.model.SChapter -import eu.kanade.tachiyomi.source.model.SManga -import okhttp3.OkHttpClient -import okhttp3.Request -import org.jsoup.nodes.Element -import java.util.concurrent.TimeUnit - -class MangaIndonesia : WPMangaStream("MangaIndonesia", "https://mangaindonesia.net", "id") { - private val rateLimitInterceptor = RateLimitInterceptor(4) - - override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .connectTimeout(10, TimeUnit.SECONDS) - .readTimeout(30, TimeUnit.SECONDS) - .addNetworkInterceptor(rateLimitInterceptor) - .build() - - override fun popularMangaRequest(page: Int): Request { -// return GET("$baseUrl/popular" + if (page > 1) "/${(page - 1) * 30}" else "", headers) -// return GET("$baseUrl/$popularPath" + if (page > 1) "?page=$page" else "", headers) - return GET("$baseUrl/update/" + if (page > 1) "?page=$page" else "", headers) - } - override fun latestUpdatesRequest(page: Int): Request { - return GET(baseUrl, headers) - } - override fun latestUpdatesSelector() = ".listupd:not(.project) .uta .imgu" - override fun latestUpdatesFromElement(element: Element): SManga { - val manga = SManga.create() - manga.thumbnail_url = element.select("a img").imgAttr() - element.select("a").first().let { - manga.setUrlWithoutDomain(it.attr("href")) - manga.title = it.attr("title") - } - return manga - } - override fun latestUpdatesNextPageSelector(): String? = null - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - return GET("$baseUrl/page/$page/$query", headers) - } - override fun chapterListSelector() = "div.bxcl ul li:has(span)" - override fun chapterFromElement(element: Element): SChapter { - val chapter = SChapter.create() - chapter.setUrlWithoutDomain(element.select("a").attr("href")) - chapter.name = element.select("a").text() - chapter.date_upload = element.select("span.dt").firstOrNull()?.text()?.let { parseChapterDate(it) } ?: 0 - return chapter - } -} diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mmrcms/MMRCMSSources.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mmrcms/MMRCMSSources.kt index 6cfbff466..167617d3f 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mmrcms/MMRCMSSources.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mmrcms/MMRCMSSources.kt @@ -53,7 +53,6 @@ class MMRCMSSources { SourceData.Single("Puzzmos", "https://puzzmos.com", "tr", overrideVersionCode = 1), SourceData.Single("Scan-1", "https://wwv.scan-1.com", "fr", className = "ScanOne", overrideVersionCode = 1), SourceData.Single("Lelscan-VF", "https://lelscan-vf.co", "fr", className = "LelscanVF"), - SourceData.Single("Komik Manga", "https://adm.komikmanga.com", "id"), SourceData.Single("Mangazuki Raws", "https://raws.mangazuki.co", "ko", overrideVersionCode = 1), SourceData.Single("Mangazuki", "https://mangazuki.co", "en", overrideVersionCode = 1), SourceData.Single("AnimaRegia", "https://animaregia.net", "pt-BR", overrideVersionCode = 4), diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mmrcms/SourceData.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mmrcms/SourceData.kt index 1d02a01b1..f6f412a32 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mmrcms/SourceData.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mmrcms/SourceData.kt @@ -26,7 +26,6 @@ object SourceData { "https://puzzmos.com" -> """{"name":"Puzzmos","base_url":"https://puzzmos.com","supports_latest":true,"item_url":"https://puzzmos.com/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}],"tags":[{"id":"2011","name":"2011"}]}""" "https://wwv.scan-1.com" -> """{"name":"Scan-1","base_url":"https://wwv.scan-1.com","supports_latest":true,"item_url":"https://wwv.scan-1.com/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}]}""" "https://lelscan-vf.co" -> """{"name":"Lelscan-VF","base_url":"https://lelscan-vf.co","supports_latest":true,"item_url":"https://lelscan-vf.co/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}]}""" - "https://adm.komikmanga.com" -> """{"name":"Komik Manga","base_url":"https://adm.komikmanga.com","supports_latest":true,"item_url":"https://adm.komikmanga.com/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"},{"id":"33","name":"Adult"},{"id":"34","name":"Isekai"}]}""" "https://raws.mangazuki.co" -> """{"name":"Mangazuki Raws","base_url":"https://raws.mangazuki.co","supports_latest":false,"item_url":"\u003c!doctype html\u003e\n\u003chtml lang\u003d\"en-US\"\u003e \n \u003chead\u003e \n \u003cmeta charset\u003d\"UTF-8\"\u003e \n \u003cmeta http-equiv\u003d\"Content-Type\" content\u003d\"text/html; charset\u003dUTF-8\"\u003e \n \u003cmeta http-equiv\u003d\"X-UA-Compatible\" content\u003d\"IE\u003dEdge,chrome\u003d1\"\u003e \n \u003cmeta name\u003d\"robots\" content\u003d\"noindex, nofollow\"\u003e \n \u003cmeta name\u003d\"viewport\" content\u003d\"width\u003ddevice-width,initial-scale\u003d1\"\u003e \n \u003ctitle\u003eJust a moment...\u003c/title\u003e \n \u003cstyle type\u003d\"text/css\"\u003e\n html, body {width: 100%; height: 100%; margin: 0; padding: 0;}\n body {background-color: #ffffff; color: #000000; font-family:-apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, \"Helvetica Neue\",Arial, sans-serif; font-size: 16px; line-height: 1.7em;-webkit-font-smoothing: antialiased;}\n h1 { text-align: center; font-weight:700; margin: 16px 0; font-size: 32px; color:#000000; line-height: 1.25;}\n p {font-size: 20px; font-weight: 400; margin: 8px 0;}\n p, .attribution, {text-align: center;}\n #spinner {margin: 0 auto 30px auto; display: block;}\n .attribution {margin-top: 32px;}\n @keyframes fader { 0% {opacity: 0.2;} 50% {opacity: 1.0;} 100% {opacity: 0.2;} }\n @-webkit-keyframes fader { 0% {opacity: 0.2;} 50% {opacity: 1.0;} 100% {opacity: 0.2;} }\n #cf-bubbles \u003e .bubbles { animation: fader 1.6s infinite;}\n #cf-bubbles \u003e .bubbles:nth-child(2) { animation-delay: .2s;}\n #cf-bubbles \u003e .bubbles:nth-child(3) { animation-delay: .4s;}\n .bubbles { background-color: #f58220; width:20px; height: 20px; margin:2px; border-radius:100%; display:inline-block; }\n a { color: #2c7cb0; text-decoration: none; -moz-transition: color 0.15s ease; -o-transition: color 0.15s ease; -webkit-transition: color 0.15s ease; transition: color 0.15s ease; }\n a:hover{color: #f4a15d}\n .attribution{font-size: 16px; line-height: 1.5;}\n .ray_id{display: block; margin-top: 8px;}\n #cf-wrapper #challenge-form { padding-top:25px; padding-bottom:25px; }\n #cf-hcaptcha-container { text-align:center;}\n #cf-hcaptcha-container iframe { display: inline-block;}\n \u003c/style\u003e \n \u003cmeta http-equiv\u003d\"refresh\" content\u003d\"12\"\u003e \n \u003cscript type\u003d\"text/javascript\"\u003e\n //\u003c![CDATA[\n (function(){\n \n window._cf_chl_opt\u003d{\n cvId: \"2\",\n cType: \"non-interactive\",\n cNounce: \"43695\",\n cRay: \"647de19eba3ffb8c\",\n cHash: \"122e48a18acbe46\",\n cFPWv: \"b\",\n cTTimeMs: \"4000\",\n cRq: {\n ru: \"aHR0cHM6Ly9yYXdzLm1hbmdhenVraS5jby8\u003d\",\n ra: \"b2todHRwLzQuOS4x\",\n rm: \"R0VU\",\n d: \"p8dBkaWxCpVx9B2DDBktU5bzheOo8VgnVby0hw6aaOVxsMabbf4Pku/m4EXbmeziTjTWJftHKhiyxQ8XrYkRkcml1IT29M3QmhTCjdsUfle+V9yfJeyQpz5W1h6LSUkVYJv2UOi4AAkWbxVwqa/+DoqlEnGU2+khvV0eISJz5iszmbOf7j2RYyVQyZfAtY24DpoEKUzaIyLCQKxrOtek60gLNzYMEr2xU6EluFUEx9NKPrL2IB85V4SCcmnp9zVCY7ldt3wD9hx4jtWGMrlNiaquOYxnVJ5v/cjVR3MSZw/P6jOovow/lGsK58n3koBL6o9iHGpchN1lHiCN0Fk1eYdAPOgTEuLgLN3KTNhCGnekxmlR9JRMVDGzkIBHq5q4nNp6l5iZ3AHNYCqjz7EDJmiJz85pjlUS+BHhzWLSIman/7kiDrrg7kDHXOPTMkC0M+vDQInkcn9x+0TnEMgt9xXMAhiLTwCB6FV0+FX6sts+7dMLkaOkq/uz83EOAFBjMRzD94UiocGwD6UfV28CE4dC7zvx0fzVpKjow6bf6q29mSzwcn7qg16I/Gx/PQF3IO3JwPTMB+Nco2wftYmw8UFvEK3hIwoRu7aR72cm4DrhEaZ5THjHZgiKZKX7uulA/f3Q3Mvpmxs9XfBK+WUQGJ33Wcfb9FYbiD1oU4Bea6Y\u003d\",\n t: \"MTYxOTc1NTQxNy40MDIwMDA\u003d\",\n m: \"oz06C8PTF89ERhxMHfiuTT4VCWGZSIMw0CB2HMHxJyY\u003d\",\n i1: \"6eJh1aJs28W6VUw8VwRyNQ\u003d\u003d\",\n i2: \"ajjIIJ/miLN6VE+jT7TpYg\u003d\u003d\",\n zh: \"KeWZ+e+zK01oAMW2nPzlpK5JgXVnJwhoG7hJgU5c7eY\u003d\",\n uh: \"iDgHM1NMNOGrHUNtrBI5GQAgym9P3IepiT4cv0MfV8U\u003d\",\n hh: \"I0kdqj2F0l7JNXvXS7ighNXMGXUM2prtK7PBi3zI0Kw\u003d\",\n }\n }\n window._cf_chl_enter \u003d function(){window._cf_chl_opt.p\u003d1};\n \n })();\n //]]\u003e\n \u003c/script\u003e \n \u003c/head\u003e \n \u003cbody\u003e \n \u003ctable width\u003d\"100%\" height\u003d\"100%\" cellpadding\u003d\"20\"\u003e \n \u003ctbody\u003e\n \u003ctr\u003e \n \u003ctd align\u003d\"center\" valign\u003d\"middle\"\u003e \n \u003cdiv class\u003d\"cf-browser-verification cf-im-under-attack\"\u003e \n \u003cnoscript\u003e \n \u003ch1 data-translate\u003d\"turn_on_js\" style\u003d\"color:#bd2426;\"\u003ePlease turn JavaScript on and reload the page.\u003c/h1\u003e \n \u003c/noscript\u003e \n \u003cdiv id\u003d\"cf-content\" style\u003d\"display:none\"\u003e \n \u003cdiv id\u003d\"cf-bubbles\"\u003e \n \u003cdiv class\u003d\"bubbles\"\u003e\u003c/div\u003e \n \u003cdiv class\u003d\"bubbles\"\u003e\u003c/div\u003e \n \u003cdiv class\u003d\"bubbles\"\u003e\u003c/div\u003e \n \u003c/div\u003e \n \u003ch1\u003e\u003cspan data-translate\u003d\"checking_browser\"\u003eChecking your browser before accessing\u003c/span\u003e mangazuki.co.\u003c/h1\u003e \n \u003cdiv id\u003d\"no-cookie-warning\" class\u003d\"cookie-warning\" data-translate\u003d\"turn_on_cookies\" style\u003d\"display:none\"\u003e \n \u003cp data-translate\u003d\"turn_on_cookies\" style\u003d\"color:#bd2426;\"\u003ePlease enable Cookies and reload the page.\u003c/p\u003e \n \u003c/div\u003e \n \u003cp data-translate\u003d\"process_is_automatic\"\u003eThis process is automatic. Your browser will redirect to your requested content shortly.\u003c/p\u003e \n \u003cp data-translate\u003d\"allow_5_secs\" id\u003d\"cf-spinner-allow-5-secs\"\u003ePlease allow up to 5 seconds…\u003c/p\u003e \n \u003cp data-translate\u003d\"redirecting\" id\u003d\"cf-spinner-redirecting\" style\u003d\"display:none\"\u003eRedirecting…\u003c/p\u003e \n \u003c/div\u003e \n \u003cform class\u003d\"challenge-form\" id\u003d\"challenge-form\" action\u003d\"/?__cf_chl_jschl_tk__\u003d31cedf83efe0df521305eb2d348c0b1b37015d83-1619755417-0-AbDLYKr_-Hx4uDI-v9ByP6ro0OT4QcOQsTqLWhF3Q6kwoIzFN2Eb5ui5VVpNi3EnfD2EGybWcaVxE0YULVkcSXTbXEiU4xc3w5uel3OGpyP8XvQRnZGd2E44ejhWQGvKzTQVpU1_KLbIj5lefUrLPYlQ2oyCDCDTnbhiFLa2Jy-bs-l2FIwHG5RcGCqOeF2QDNTEAL3vIFZoPiSbvyphnkZNWLpUPJGbGtGVNtQer7Mn_0VGTiWEul3WeBnpQArIHWEBIUB7jy8oTHhiBKMwcp5a2i2uqibFmdfXn9H9kOLZjCuIY0yxB2wtXpSQy5L4gd1bNXbP0Pe51ucvPIKK3VjsNyEwKT-54tGuoJvle4gyTCKbw5bIbPt9ZRtXXNBecMbnbUJa7EHza4Nms6xW6Gs\" method\u003d\"POST\" enctype\u003d\"application/x-www-form-urlencoded\"\u003e \n \u003cinput type\u003d\"hidden\" name\u003d\"r\" value\u003d\"17248de69cbd13855d4ec6cca729fa8617b1ece8-1619755417-0-ASnssPpgY1bDldbaDlfPh07zP/ATwLDjEq61uZeyzM7Msq0Pt6Vc9IMWk7usfEZ4EUJKsMtTwIuY1RIVEfsgytz4U2cjd5qS/fyfnOFnFW+tUMR6eaBILPB2eTEj2gra8R/y13sJMFkmyeqN1nPC2yebou3Z20qGJG2uLxlj3V3IHmzIFrP3j+sRr/dwGlGMQWeR6Kr0+0tTu3WB6Uao3zxEX083hXk8opIhd+CFAwCYNyEXuq1Oo1Wsjqv77rioh7WjUka6GUpi7QLp1JqXJ5UApD9Ypd6ZYjHt92BmsIGNBc5N7RKJIPWPn1SopUV2YA1LIYdBaPgJf3mGQi/DEcZYn9inuKO//AcFcxci+WlUX1wT6VhTc0LXyikMemSayj0CUEm1Hn4WaUv/ZKoL3WY2iTKqQegekkfxk+Xks+cJ4l8nkSdKxuxw1dMd6EOM/xtEwA5PSEi/7rhjmmk0r2It3tPy6rQi6gXONJYAcaeUOqCjWzV8CZYl/b8Z3Sx3CzKCL7OxzMxm5P0l6f7bsjspOOc9IWNGINkzAzsUK1AaEc1+/1TIFw1Iwi801t3woFl3o/wpsSrSPPEr4oB31NAyEFKTCJ0TaoyS34RED1ANYu2mm0OprQlymLeEAyIYLjEw2vPt8GpFxQ/n7BJGsnfn2UuNQFnED1OeoiQJyqMtWDC6Uj4eebgnvSiYwsf65Ir91Jaq8V7v+44wNLiUKK7rHjRi9tbX1Tg50d4o47Flu2ZzuVAj7vf/UNXPzYufJYu50lQTHZQ9sAl1fVrP/LEFVe6nB5hy+J9cOdrQVOo8BgTRza0S2DHDhRLsfYKW0etCC3fPVJAKnAZla+pKJQjzi1TzrWfNGaS4V2sn2vKOFJPZu4OqOjiHQt6adMiSceEhrsONnNURdMjOtdXW+Zzro1nbPofjBLiSNc+TPX5Rt+NI4FlmSV+ZEif1z6F0TqZKOez6SyfWoPlfpBuKvgDg8nnc6Vjz3J6s00sGjo3ocAinWTpHGn7ihqCOAafTpgaTyILK1ikegeAdCV+6GZtWIAtOLscwqmEXB0rFtUcNbftJZ2XpFCspA/l/bVuz4mowiEFuEy6hUNbejcUBhnkYcPu/uxLTUgLuNDinJBunQMuCJ3EYWtDsRx1XedC1WpItuGZII2IITW59DrvhNWMqcWARV2eIvR9hZOCTEeLZP8dYMuNxv4qKjxLRhDBgUh5zwSqJ9EMPjTO2e6P5tq2YpYlmuF3iH1E39wGeNofrPdo8cOrn/uM1s9sCfIy4Nir/Nnzmbcb3XqewtIT3yxjiqtTsYRrHb8Dmn7R2KoE5OBFoB4R6bPiSHMLTyg3H/6wHp8J1/Nssin5TmdNSC0WtZDo3+MC4wamGjp2m4VATOZSWegD8Aimaocl9RDnR5u55UAQEmGsV1YK7y8R5ANSX4wQK1OOZvBUTbhKiPXen\"\u003e \n \u003cinput type\u003d\"hidden\" value\u003d\"04ae3a097109b20f657cfecb213a1ff1\" id\u003d\"jschl-vc\" name\u003d\"jschl_vc\"\u003e \u003c!-- \u003cinput type\u003d\"hidden\" value\u003d\"\" id\u003d\"jschl-vc\" name\u003d\"jschl_vc\"/\u003e --\u003e \n \u003cinput type\u003d\"hidden\" name\u003d\"pass\" value\u003d\"1619755421.402-8pp6wtYPbN\"\u003e \n \u003cinput type\u003d\"hidden\" id\u003d\"jschl-answer\" name\u003d\"jschl_answer\"\u003e \n \u003c/form\u003e \n \u003cscript type\u003d\"text/javascript\"\u003e\n //\u003c![CDATA[\n (function(){\n var a \u003d document.getElementById(\u0027cf-content\u0027);\n a.style.display \u003d \u0027block\u0027;\n var isIE \u003d /(MSIE|Trident\\/|Edge\\/)/i.test(window.navigator.userAgent);\n var trkjs \u003d isIE ? new Image() : document.createElement(\u0027img\u0027);\n trkjs.setAttribute(\"src\", \"/cdn-cgi/images/trace/jschal/js/transparent.gif?ray\u003d647de19eba3ffb8c\");\n trkjs.id \u003d \"trk_jschal_js\";\n trkjs.setAttribute(\"alt\", \"\");\n document.body.appendChild(trkjs);\n var cpo\u003ddocument.createElement(\u0027script\u0027);\n cpo.type\u003d\u0027text/javascript\u0027;\n cpo.src\u003d\"/cdn-cgi/challenge-platform/h/b/orchestrate/jsch/v1?ray\u003d647de19eba3ffb8c\";\n document.getElementsByTagName(\u0027head\u0027)[0].appendChild(cpo);\n }());\n //]]\u003e\n \u003c/script\u003e \n \u003cdiv id\u003d\"trk_jschal_nojs\" style\u003d\"background-image:url(\u0027/cdn-cgi/images/trace/jschal/nojs/transparent.gif?ray\u003d647de19eba3ffb8c\u0027)\"\u003e \n \u003c/div\u003e \n \u003c/div\u003e \n \u003cdiv class\u003d\"attribution\"\u003e\n DDoS protection by \u003ca rel\u003d\"noopener noreferrer\" href\u003d\"https://www.cloudflare.com/5xx-error-landing/\" target\u003d\"_blank\"\u003eCloudflare\u003c/a\u003e \n \u003cbr\u003e \u003cspan class\u003d\"ray_id\"\u003eRay ID: \u003ccode\u003e647de19eba3ffb8c\u003c/code\u003e\u003c/span\u003e \n \u003c/div\u003e \u003c/td\u003e \n \u003c/tr\u003e \n \u003c/tbody\u003e\n \u003c/table\u003e \n \u003c/body\u003e\n\u003c/html\u003e/","categories":[]}""" "https://mangazuki.co" -> """{"name":"Mangazuki","base_url":"https://mangazuki.co","supports_latest":false,"item_url":"\u003c!doctype html\u003e\n\u003chtml lang\u003d\"en-US\"\u003e \n \u003chead\u003e \n \u003cmeta charset\u003d\"UTF-8\"\u003e \n \u003cmeta http-equiv\u003d\"Content-Type\" content\u003d\"text/html; charset\u003dUTF-8\"\u003e \n \u003cmeta http-equiv\u003d\"X-UA-Compatible\" content\u003d\"IE\u003dEdge,chrome\u003d1\"\u003e \n \u003cmeta name\u003d\"robots\" content\u003d\"noindex, nofollow\"\u003e \n \u003cmeta name\u003d\"viewport\" content\u003d\"width\u003ddevice-width,initial-scale\u003d1\"\u003e \n \u003ctitle\u003eJust a moment...\u003c/title\u003e \n \u003cstyle type\u003d\"text/css\"\u003e\n html, body {width: 100%; height: 100%; margin: 0; padding: 0;}\n body {background-color: #ffffff; color: #000000; font-family:-apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, \"Helvetica Neue\",Arial, sans-serif; font-size: 16px; line-height: 1.7em;-webkit-font-smoothing: antialiased;}\n h1 { text-align: center; font-weight:700; margin: 16px 0; font-size: 32px; color:#000000; line-height: 1.25;}\n p {font-size: 20px; font-weight: 400; margin: 8px 0;}\n p, .attribution, {text-align: center;}\n #spinner {margin: 0 auto 30px auto; display: block;}\n .attribution {margin-top: 32px;}\n @keyframes fader { 0% {opacity: 0.2;} 50% {opacity: 1.0;} 100% {opacity: 0.2;} }\n @-webkit-keyframes fader { 0% {opacity: 0.2;} 50% {opacity: 1.0;} 100% {opacity: 0.2;} }\n #cf-bubbles \u003e .bubbles { animation: fader 1.6s infinite;}\n #cf-bubbles \u003e .bubbles:nth-child(2) { animation-delay: .2s;}\n #cf-bubbles \u003e .bubbles:nth-child(3) { animation-delay: .4s;}\n .bubbles { background-color: #f58220; width:20px; height: 20px; margin:2px; border-radius:100%; display:inline-block; }\n a { color: #2c7cb0; text-decoration: none; -moz-transition: color 0.15s ease; -o-transition: color 0.15s ease; -webkit-transition: color 0.15s ease; transition: color 0.15s ease; }\n a:hover{color: #f4a15d}\n .attribution{font-size: 16px; line-height: 1.5;}\n .ray_id{display: block; margin-top: 8px;}\n #cf-wrapper #challenge-form { padding-top:25px; padding-bottom:25px; }\n #cf-hcaptcha-container { text-align:center;}\n #cf-hcaptcha-container iframe { display: inline-block;}\n \u003c/style\u003e \n \u003cmeta http-equiv\u003d\"refresh\" content\u003d\"12\"\u003e \n \u003cscript type\u003d\"text/javascript\"\u003e\n //\u003c![CDATA[\n (function(){\n \n window._cf_chl_opt\u003d{\n cvId: \"2\",\n cType: \"non-interactive\",\n cNounce: \"45428\",\n cRay: \"647de1a76fa8fb90\",\n cHash: \"3e74a7283d4a4c8\",\n cFPWv: \"b\",\n cTTimeMs: \"4000\",\n cRq: {\n ru: \"aHR0cHM6Ly9tYW5nYXp1a2kuY28v\",\n ra: \"b2todHRwLzQuOS4x\",\n rm: \"R0VU\",\n d: \"/yMvbMum9TxaKLvsMCEmVoAz4o1Tw6IRMfkmAXV2jH8RjubrczOIJvbQj4tfOTOS0MVJrgUdvwkiyUtmVn9IdExcMLw+wu0HkATProYm3es/kY1oM+lvPj4aA3dd4kM8ztbjgcCLW5/cqOBN/vIn7xrhOwhRuLz0IvNVVMYJCVKpyR6bCvkeiAHlAA1NAfVGn+N2rVvHyCW/mRiaQDyuDI4ry50I/3n7lsw04NJft4kcVV1CgTAVK3PbFIm0yADz9EVYQZ3zuwhtcWm3OWhFVLV+fApNUxp5K+OisiTIaq5U8UpZZ5g/Qml8+Z8BNd5MaNIQ4vQp6xk611h2C8TvbOy9e9srIy6ptoJa3NKBe2VNGIDGgMViK4PYn8aBVo2ni8TzyIuWTS0jqAS39C920tEhAvFH6mYsJKbT4BKF7GKOKZ6+h/VLP1T5uoSKA5YnkUkBeqgAg0r3XjEyCKjk+rj+u0HVE8PPAXO4bowO7TWz52BFX0fXq2pzm0woooj2upw5LlmPhNxCpneloBVD74ew0tS7OzAzxkCPBrpoSRt+zwOQ+t1impdOnQqARxoBzXa4rdT3FRWYZC1BKu9Hws3XbhrRmhOsc8VcQlyzH2EAVIeYjYgXN1DpTbdK+A24gCPD6t62Xxo2Eh/PdHIpG7+PKTiSOFKaKUQrfbyil24\u003d\",\n t: \"MTYxOTc1NTQxOC43OTEwMDA\u003d\",\n m: \"kILeSAmwZghUoWEVg1z39QVba0G25V7yIk78//tbz+Q\u003d\",\n i1: \"Ucb0SFG3OISd7HhKRQPKVg\u003d\u003d\",\n i2: \"kSSBnk0LUD0/6aRN3GyNqQ\u003d\u003d\",\n zh: \"KeWZ+e+zK01oAMW2nPzlpK5JgXVnJwhoG7hJgU5c7eY\u003d\",\n uh: \"iDgHM1NMNOGrHUNtrBI5GQAgym9P3IepiT4cv0MfV8U\u003d\",\n hh: \"ZCwkjIp/x7rQ/OhQGADpbaKVwm+wCnV8j2iXGJ0TTyU\u003d\",\n }\n }\n window._cf_chl_enter \u003d function(){window._cf_chl_opt.p\u003d1};\n \n })();\n //]]\u003e\n \u003c/script\u003e \n \u003c/head\u003e \n \u003cbody\u003e \n \u003ctable width\u003d\"100%\" height\u003d\"100%\" cellpadding\u003d\"20\"\u003e \n \u003ctbody\u003e\n \u003ctr\u003e \n \u003ctd align\u003d\"center\" valign\u003d\"middle\"\u003e \n \u003cdiv class\u003d\"cf-browser-verification cf-im-under-attack\"\u003e \n \u003cnoscript\u003e \n \u003ch1 data-translate\u003d\"turn_on_js\" style\u003d\"color:#bd2426;\"\u003ePlease turn JavaScript on and reload the page.\u003c/h1\u003e \n \u003c/noscript\u003e \n \u003cdiv id\u003d\"cf-content\" style\u003d\"display:none\"\u003e \n \u003cdiv id\u003d\"cf-bubbles\"\u003e \n \u003cdiv class\u003d\"bubbles\"\u003e\u003c/div\u003e \n \u003cdiv class\u003d\"bubbles\"\u003e\u003c/div\u003e \n \u003cdiv class\u003d\"bubbles\"\u003e\u003c/div\u003e \n \u003c/div\u003e \n \u003ch1\u003e\u003cspan data-translate\u003d\"checking_browser\"\u003eChecking your browser before accessing\u003c/span\u003e mangazuki.co.\u003c/h1\u003e \n \u003cdiv id\u003d\"no-cookie-warning\" class\u003d\"cookie-warning\" data-translate\u003d\"turn_on_cookies\" style\u003d\"display:none\"\u003e \n \u003cp data-translate\u003d\"turn_on_cookies\" style\u003d\"color:#bd2426;\"\u003ePlease enable Cookies and reload the page.\u003c/p\u003e \n \u003c/div\u003e \n \u003cp data-translate\u003d\"process_is_automatic\"\u003eThis process is automatic. Your browser will redirect to your requested content shortly.\u003c/p\u003e \n \u003cp data-translate\u003d\"allow_5_secs\" id\u003d\"cf-spinner-allow-5-secs\"\u003ePlease allow up to 5 seconds…\u003c/p\u003e \n \u003cp data-translate\u003d\"redirecting\" id\u003d\"cf-spinner-redirecting\" style\u003d\"display:none\"\u003eRedirecting…\u003c/p\u003e \n \u003c/div\u003e \n \u003cform class\u003d\"challenge-form\" id\u003d\"challenge-form\" action\u003d\"/?__cf_chl_jschl_tk__\u003db30f8c1048a83cb1e7e3891a55d26f17b791e17b-1619755418-0-AcJGu0ERNyoK_pVQfwkeAHBZuAubhLbKNdzx6nFvTgzq-jINIWMtWDHRN04xiUFtInKPE15yn1QkwomN4QYsy1QsyMPfEX8qTTK_A3Fs6ztDZeY0-F15WYa65aWnmmxTPpt4WvH9LZv5pdz9IWRyv-GIyVaMA9n2gfio8FdmxlfjrPqfumZjserANZ-QPk5HFYiKH83pLtNQS0Mg1_5ajgPU5M-ChiQHsJ66lWm0J10cvjlaZmsICHBVMPS6F3uYZjPUxrEExpg7EtUnpUPmp4E5qn8P6QcY-Us1AxDvCn36re_pqNR5-17GDtl3OZo8K0N2bvyHfoa0sNifJmuWw4X4obusgvHNxlBoxIWvx5nbmAy0kZKYbIAwqBXBGlo_BJw6-cPpyBsS1ie8SGDrj38\" method\u003d\"POST\" enctype\u003d\"application/x-www-form-urlencoded\"\u003e \n \u003cinput type\u003d\"hidden\" name\u003d\"r\" value\u003d\"f78b94ba8f42da34ca76c8c835bea15cd282d620-1619755418-0-AWcmmRtLeu8tVFPw+VKAaOW/vrPYXWTiP5ebT2Vanpz1743mwTEOfcVqrKgtKYxkMrrY+9kjl0xs2vHXaKuzaqTbwJA6B6OOOwXz+ezQZ6MQEzolDDTeGa6fCtLxaRYVYMpAOL6PR1G+tz4K3fa/ae1K0F72M2TvLuOhxt+rkIk+l1uh6xq+iooO87Yuk66MV/URmvLqrOV62WNrv/RspCXHm7eaqKlGhB8mrcz94kHpuT9LN0xNg0M9S65sONEEBeydT/k6jNqp982OK6xBDed8qAmDislDkDWmzKr+SYpgh58GXOMFnEPO8mnB6gA0jN3++kXnAXXL6IDw0HS0puUQC87KkjYnU8kO5MTU7AAN6LOhXi16ci0l4z2bdOK04VrxuhnY86HH8Q+B6Aql1YqcnYGi1M6GmZjfzn5vVPQxUucGCzSNoxeMrLk4+5cbcQFnHjYbW1aB2gbwpRfXASHoWeNP/s8wNBdl7InQ2BnDVDW6UgNLCSmwIKew+59WawNU58XZor4GDuhszBouXH2atWu3URUZBWaiVo6ShbYOAIGYD7JwxUfl+3rKOy09uB838toQTeZJfFV0JBOJNNqXiWZF6J9wR+6L2+J9cBjZGwCVIm0hF0QuL4Q08nxQuho4Hq3PmbY0MBoPoKlNlcTpqJMlRnA8pbrM8dAfGYpcq6PpVbqpO5tkufhgiWxYtTlmr09MCAAJ3B89M4mUw2gbqyJyLYQ+52cxX23bMHti1h+LdTkeu2bS/sZFyeAKmOCYqeHl7QB0CWsH1xQzBRf6PqEyRPyiXScIJyUyCW9SU12M54+8m1ZNwTIwRbTI/XtDtc3ZSILZD1OUusj/RmVadj9hvy5U62sV5SDGP5qS1WFnGISUHD+YNZTeJL9/Y7+7Foah0UYZ3lYJncs43D6YMT4aP3DTcvsEya/1SDjH0G2bHu5nf4hwIR2euQfEce7FO/h7E9qQ1IpWQ3Ei0+MEUdH+KsIOqGZOK6svDd0Iioxd2LthGch1W4gRdPEGxfArABdc+krfg9v4uLVl2Nytjf2TujRKSXOmgoXjbl8lYdNm6f1CaYG1OnldY4RWKYyKeFg/Ook8Gkq9UI/J+4okZ4dzpPuMmCM7CMGZm3JdKLiRDHyZrZlpCy/3z6inZkU9tAi26voBSfAYYhN9mXfvFLBcYgda2hmx+bqFwqNOzMbflIEIk+b24CJRdHnHkmG63QdKCCNb9nbyg/DW52P1pYOwlwtLmlk6uLxctlPWC4nH8snyU8IbHgiHdoYHu7kXs9oR9p8j9qmJHfSlksX6t23bYvg9cA/+P2S8ibQ6lBkwOtU+XI7KXVHf78wXYltIZzXLmQnKPmMgQJP8nBlHW+6XKjMMOyh/wV6YeNBWsDqcnugRIEMpuGcwILZuGW5O81TLzc4lYtGtxYOthxnyxea+BXo0RB5VjuX472pY\"\u003e \n \u003cinput type\u003d\"hidden\" value\u003d\"6b5c1c76bad913bfb5f171c19995eb07\" id\u003d\"jschl-vc\" name\u003d\"jschl_vc\"\u003e \u003c!-- \u003cinput type\u003d\"hidden\" value\u003d\"\" id\u003d\"jschl-vc\" name\u003d\"jschl_vc\"/\u003e --\u003e \n \u003cinput type\u003d\"hidden\" name\u003d\"pass\" value\u003d\"1619755422.791-43KWLCV0wb\"\u003e \n \u003cinput type\u003d\"hidden\" id\u003d\"jschl-answer\" name\u003d\"jschl_answer\"\u003e \n \u003c/form\u003e \n \u003cscript type\u003d\"text/javascript\"\u003e\n //\u003c![CDATA[\n (function(){\n var a \u003d document.getElementById(\u0027cf-content\u0027);\n a.style.display \u003d \u0027block\u0027;\n var isIE \u003d /(MSIE|Trident\\/|Edge\\/)/i.test(window.navigator.userAgent);\n var trkjs \u003d isIE ? new Image() : document.createElement(\u0027img\u0027);\n trkjs.setAttribute(\"src\", \"/cdn-cgi/images/trace/jschal/js/transparent.gif?ray\u003d647de1a76fa8fb90\");\n trkjs.id \u003d \"trk_jschal_js\";\n trkjs.setAttribute(\"alt\", \"\");\n document.body.appendChild(trkjs);\n var cpo\u003ddocument.createElement(\u0027script\u0027);\n cpo.type\u003d\u0027text/javascript\u0027;\n cpo.src\u003d\"/cdn-cgi/challenge-platform/h/b/orchestrate/jsch/v1?ray\u003d647de1a76fa8fb90\";\n document.getElementsByTagName(\u0027head\u0027)[0].appendChild(cpo);\n }());\n //]]\u003e\n \u003c/script\u003e \n \u003cdiv id\u003d\"trk_jschal_nojs\" style\u003d\"background-image:url(\u0027/cdn-cgi/images/trace/jschal/nojs/transparent.gif?ray\u003d647de1a76fa8fb90\u0027)\"\u003e \n \u003c/div\u003e \n \u003c/div\u003e \n \u003cdiv class\u003d\"attribution\"\u003e\n DDoS protection by \u003ca rel\u003d\"noopener noreferrer\" href\u003d\"https://www.cloudflare.com/5xx-error-landing/\" target\u003d\"_blank\"\u003eCloudflare\u003c/a\u003e \n \u003cbr\u003e \u003cspan class\u003d\"ray_id\"\u003eRay ID: \u003ccode\u003e647de1a76fa8fb90\u003c/code\u003e\u003c/span\u003e \n \u003c/div\u003e \u003c/td\u003e \n \u003c/tr\u003e \n \u003c/tbody\u003e\n \u003c/table\u003e \n \u003c/body\u003e\n\u003c/html\u003e/","categories":[]}""" "https://animaregia.net" -> """{"name":"AnimaRegia","base_url":"https://animaregia.net","supports_latest":true,"item_url":"http://animaregia.net/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}]}""" diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangareader/WPMangaReaderGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangareader/WPMangaReaderGenerator.kt index 638d65a14..7b2f29bac 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangareader/WPMangaReaderGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangareader/WPMangaReaderGenerator.kt @@ -20,7 +20,6 @@ class WPMangaReaderGenerator : ThemeSourceGenerator { SingleLang("Arcane scan", "https://arcanescan.fr", "fr"), SingleLang("Azure Scans", "https://azuremanga.com", "en", overrideVersionCode = 1), SingleLang("BeastScans", "https://beastscans.com", "en"), - SingleLang("Davey Scans", "https://daveyscans.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"), 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 index 2b36344bc..5378f403b 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangastream/WPMangaStreamGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangastream/WPMangaStreamGenerator.kt @@ -15,28 +15,23 @@ class WPMangaStreamGenerator : ThemeSourceGenerator { override val sources = listOf( MultiLang("Asura Scans", "https://www.asurascans.com", listOf("en", "tr"), className = "AsuraScansFactory", pkgName = "asurascans", overrideVersionCode = 12), SingleLang("Boosei", "https://boosei.com", "id", overrideVersionCode = 1), - SingleLang("GURU Komik", "https://gurukomik.com", "id"), 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://infernalvoidscans.com", "en", overrideVersionCode = 3), - SingleLang("Kaisar Komik", "https://kaisarkomik.com", "id", overrideVersionCode = 1), SingleLang("Kanzenin", "https://kanzenin.xyz", "id", isNsfw = true), SingleLang("KlanKomik", "https://klankomik.com", "id", overrideVersionCode = 1), - SingleLang("Kombatch", "https://kombatch.com", "id"), SingleLang("Komik AV", "https://komikav.com", "id", overrideVersionCode = 1), SingleLang("Komik Cast", "https://komikcast.com", "id", overrideVersionCode = 9), SingleLang("Komik Station", "https://komikstation.co", "id", overrideVersionCode = 3), SingleLang("KomikIndo.co", "https://komikindo.co", "id", className = "KomikindoCo", overrideVersionCode = 3), - SingleLang("Komiksay", "https://komiksay.com", "id"), SingleLang("Kuma Scans (Kuma Translation)", "https://kumascans.com", "en", className = "KumaScans", overrideVersionCode = 1), SingleLang("Manga Pro Z", "https://mangaprotm.com", "ar", overrideVersionCode = 1), SingleLang("Manga Raw.org", "https://mangaraw.org", "ja", className = "MangaRawOrg", overrideVersionCode = 1), - SingleLang("MangaIndonesia", "https://mangaindonesia.net", "id"), - SingleLang("Mareceh", "https://mareceh.com", "id", isNsfw = true, pkgName = "mangceh", overrideVersionCode = 10), SingleLang("Manhwax", "https://manhwax.com", "en", isNsfw = true), SingleLang("MangaSwat", "https://swatmanga.co", "ar", overrideVersionCode = 6), 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"), diff --git a/src/id/mangayu/AndroidManifest.xml b/src/id/mangayu/AndroidManifest.xml deleted file mode 100644 index 30deb7f79..000000000 --- a/src/id/mangayu/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/src/id/mangayu/build.gradle b/src/id/mangayu/build.gradle deleted file mode 100644 index cde8e2707..000000000 --- a/src/id/mangayu/build.gradle +++ /dev/null @@ -1,11 +0,0 @@ -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' - -ext { - extName = 'MangaYu' - pkgNameSuffix = 'id.mangayu' - extClass = '.MangaYu' - extVersionCode = 2 -} - -apply from: "$rootDir/common.gradle" diff --git a/src/id/mangayu/res/mipmap-hdpi/ic_launcher.png b/src/id/mangayu/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 4a325ef55..000000000 Binary files a/src/id/mangayu/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/src/id/mangayu/res/mipmap-mdpi/ic_launcher.png b/src/id/mangayu/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 5743b1405..000000000 Binary files a/src/id/mangayu/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/src/id/mangayu/res/mipmap-xhdpi/ic_launcher.png b/src/id/mangayu/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index fdce7bdb5..000000000 Binary files a/src/id/mangayu/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/src/id/mangayu/res/mipmap-xxhdpi/ic_launcher.png b/src/id/mangayu/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 9a504a615..000000000 Binary files a/src/id/mangayu/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/id/mangayu/res/mipmap-xxxhdpi/ic_launcher.png b/src/id/mangayu/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 866c48a60..000000000 Binary files a/src/id/mangayu/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/id/mangayu/res/web_hi_res_512.png b/src/id/mangayu/res/web_hi_res_512.png deleted file mode 100644 index ca65ee0bb..000000000 Binary files a/src/id/mangayu/res/web_hi_res_512.png and /dev/null differ diff --git a/src/id/mangayu/src/eu/kanade/tachiyomi/extension/id/mangayu/MangaYu.kt b/src/id/mangayu/src/eu/kanade/tachiyomi/extension/id/mangayu/MangaYu.kt deleted file mode 100644 index 629f81404..000000000 --- a/src/id/mangayu/src/eu/kanade/tachiyomi/extension/id/mangayu/MangaYu.kt +++ /dev/null @@ -1,208 +0,0 @@ -package eu.kanade.tachiyomi.extension.id.mangayu - -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.SChapter -import eu.kanade.tachiyomi.source.model.SManga -import eu.kanade.tachiyomi.source.online.ParsedHttpSource -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull -import okhttp3.Request -import org.jsoup.nodes.Document -import org.jsoup.nodes.Element -import java.text.SimpleDateFormat -import java.util.Calendar -import java.util.Locale - -class MangaYu : ParsedHttpSource() { - - override val name = "MangaYu" - override val baseUrl = "https://mangayu.com" - override val lang = "id" - override val supportsLatest = true - private val dateFormat: SimpleDateFormat = SimpleDateFormat("dd MMM yyyy", Locale.US) - - protected fun Element.imgAttr(): String = if (this.hasAttr("data-src")) this.attr("abs:data-src") else this.attr("abs:src") - - override fun popularMangaRequest(page: Int): Request { - return GET("$baseUrl/manga?order_by=views&page=$page", headers) - } - - override fun latestUpdatesRequest(page: Int): Request { - return GET("$baseUrl/manga?order_by=latest&page=$page", headers) - } - - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/manga?".toHttpUrlOrNull()!!.newBuilder() - .addQueryParameter("search", query) - .addQueryParameter("page", page.toString()) - val newUrl = null - filters.forEach { filter -> - when (filter) { - is SortByFilter -> { - url.addQueryParameter("order_by", filter.toUriPart()) - } - // TODO GENRE with $baseUrl/genre - } - } - return GET(url.toString(), headers) - } - - override fun popularMangaSelector() = ".row .col-md-8 .row .col-md-6" - override fun latestUpdatesSelector() = popularMangaSelector() - override fun searchMangaSelector() = popularMangaSelector() - - override fun popularMangaFromElement(element: Element): SManga { - val manga = SManga.create() - manga.setUrlWithoutDomain(element.select(".detail a.link").attr("href")) - manga.title = element.select(".detail a.link").text() - manga.thumbnail_url = element.select(".cover a img").attr("src") - - return manga - } - - override fun searchMangaFromElement(element: Element): SManga = popularMangaFromElement(element) - override fun latestUpdatesFromElement(element: Element): SManga = popularMangaFromElement(element) - - override fun popularMangaNextPageSelector() = "a.page-link[rel=next]" - override fun latestUpdatesNextPageSelector() = popularMangaNextPageSelector() - override fun searchMangaNextPageSelector() = popularMangaNextPageSelector() - - override fun mangaDetailsParse(document: Document) = SManga.create().apply { - author = document.select("tr:contains(Author) td:nth-child(2)").text() - artist = document.select("tr:contains(Artist) td:nth-child(2)").text() - status = parseStatus(document.select("tr:contains(Status) td").firstOrNull()?.ownText()) - description = document.select("div.card-body h5 ~ p").text() - genre = document.select("tr:contains(Genre) a").joinToString { it.text() } - } - - protected 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 - } - - override fun chapterListSelector() = "div.list-group-item a" - - override fun chapterFromElement(element: Element) = SChapter.create().apply { - setUrlWithoutDomain(element.attr("href")) - name = element.select("div.d-flex").text() - date_upload = parseChapterDate(element.select("span.text-white-50").text()) ?: 0 - } - - fun parseChapterDate(date: String): Long { - return if (date.contains("yang lalu")) { - val value = date.split(' ')[0].toInt() - when { - "menit" in date -> Calendar.getInstance().apply { - add(Calendar.MINUTE, value * -1) - }.timeInMillis - "jam" in date -> Calendar.getInstance().apply { - add(Calendar.HOUR_OF_DAY, value * -1) - }.timeInMillis - "hari" in date -> Calendar.getInstance().apply { - add(Calendar.DATE, value * -1) - }.timeInMillis - "minggu" in date -> Calendar.getInstance().apply { - add(Calendar.DATE, value * 7 * -1) - }.timeInMillis - "bulan" in date -> Calendar.getInstance().apply { - add(Calendar.MONTH, value * -1) - }.timeInMillis - "tahun" 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 pageListParse(document: Document): List { - val pages = mutableListOf() - var i = 0 - document.select(".chapter-image img").forEach { element -> - val url = element.attr("src") - i++ - if (url.isNotEmpty()) { - pages.add(Page(i, "", url)) - } - } - return pages - } - - override fun imageUrlParse(document: Document) = "" - - private class SortByFilter : UriPartFilter( - "Sort By", - arrayOf( - Pair("Default", ""), - Pair("A-Z", "name"), - Pair("Latest Update", "latest"), - Pair("Latest Added", "new"), - Pair("Popular", "views") - ) - ) - - private class Genre(name: String, val id: String = name) : Filter.TriState(name) - private class GenreListFilter(genres: List) : Filter.Group("Genre", genres) - - override fun getFilterList() = FilterList( - SortByFilter() - ) - -// need to add thing to search filter for genre - private fun getGenreList() = listOf( - Genre("Action", "action"), - Genre("Adventure", "adventure"), - Genre("Comedy", "comedy"), - Genre("Doujinshi", "doujinshi"), - Genre("Drama", "drama"), - Genre("Ecchi", "ecchi"), - Genre("Fantasy", "fantasy"), - Genre("Gender Bender", "gender-bender"), - Genre("Harem", "harem"), - Genre("Historical", "historical"), - Genre("Horror", "horror"), - Genre("Isekai", "isekai"), - Genre("Josei", "josei"), - Genre("Martial Arts", "martial-arts"), - Genre("Mature", "mature"), - Genre("Mecha", "mecha"), - Genre("Mystery", "mystery"), - Genre("One-shot", "one-shot"), - Genre("Psychological", "psychological"), - Genre("Reincarnation", "reincarnation"), - Genre("Romance", "romance"), - 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("Supernatural", "supernatural"), - Genre("Tragedy", "tragedy"), - Genre("Yaoi", "yaoi"), - Genre("Yuri", "yuri"), - Genre("Loli", "loli"), - Genre("Game", "game"), - Genre("Medical", "medical"), - ) - - private open class UriPartFilter(displayName: String, val vals: Array>) : - Filter.Select(displayName, vals.map { it.first }.toTypedArray()) { - fun toUriPart() = vals[state].second - } -}