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
- }
-}