diff --git a/multisrc/overrides/madara/comichub/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/madara/comichub/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..b734b7466 Binary files /dev/null and b/multisrc/overrides/madara/comichub/res/mipmap-hdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/comichub/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/madara/comichub/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..8e8c03e88 Binary files /dev/null and b/multisrc/overrides/madara/comichub/res/mipmap-mdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/comichub/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/madara/comichub/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..c2424400b Binary files /dev/null and b/multisrc/overrides/madara/comichub/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/comichub/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/madara/comichub/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..76109c4a1 Binary files /dev/null and b/multisrc/overrides/madara/comichub/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/comichub/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/madara/comichub/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..afb4e7479 Binary files /dev/null and b/multisrc/overrides/madara/comichub/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/comichub/res/web_hi_res_512.png b/multisrc/overrides/madara/comichub/res/web_hi_res_512.png new file mode 100644 index 000000000..e0296c146 Binary files /dev/null and b/multisrc/overrides/madara/comichub/res/web_hi_res_512.png differ diff --git a/multisrc/overrides/madara/esomanga/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/madara/esomanga/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..e771a9abb Binary files /dev/null and b/multisrc/overrides/madara/esomanga/res/mipmap-hdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/esomanga/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/madara/esomanga/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..c307100f8 Binary files /dev/null and b/multisrc/overrides/madara/esomanga/res/mipmap-mdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/esomanga/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/madara/esomanga/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..e646a1708 Binary files /dev/null and b/multisrc/overrides/madara/esomanga/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/esomanga/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/madara/esomanga/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..113066112 Binary files /dev/null and b/multisrc/overrides/madara/esomanga/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/esomanga/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/madara/esomanga/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..3edd367ec Binary files /dev/null and b/multisrc/overrides/madara/esomanga/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/esomanga/res/web_hi_res_512.png b/multisrc/overrides/madara/esomanga/res/web_hi_res_512.png new file mode 100644 index 000000000..67088a0c7 Binary files /dev/null and b/multisrc/overrides/madara/esomanga/res/web_hi_res_512.png differ diff --git a/multisrc/overrides/madara/hayalistic/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/madara/hayalistic/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..7115762d7 Binary files /dev/null and b/multisrc/overrides/madara/hayalistic/res/mipmap-hdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/hayalistic/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/madara/hayalistic/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..f2c008e6b Binary files /dev/null and b/multisrc/overrides/madara/hayalistic/res/mipmap-mdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/hayalistic/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/madara/hayalistic/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..0de512845 Binary files /dev/null and b/multisrc/overrides/madara/hayalistic/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/hayalistic/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/madara/hayalistic/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..e2b7bf833 Binary files /dev/null and b/multisrc/overrides/madara/hayalistic/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/hayalistic/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/madara/hayalistic/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..bea081f12 Binary files /dev/null and b/multisrc/overrides/madara/hayalistic/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/hayalistic/res/web_hi_res_512.png b/multisrc/overrides/madara/hayalistic/res/web_hi_res_512.png new file mode 100644 index 000000000..4fece056a Binary files /dev/null and b/multisrc/overrides/madara/hayalistic/res/web_hi_res_512.png differ diff --git a/multisrc/overrides/madara/hzmanga/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/madara/hzmanga/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..3897ad61d Binary files /dev/null and b/multisrc/overrides/madara/hzmanga/mipmap-hdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/hzmanga/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/madara/hzmanga/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..c2a3a2778 Binary files /dev/null and b/multisrc/overrides/madara/hzmanga/mipmap-mdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/hzmanga/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/madara/hzmanga/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..c564ad663 Binary files /dev/null and b/multisrc/overrides/madara/hzmanga/mipmap-xhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/hzmanga/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/madara/hzmanga/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..bbd536bb7 Binary files /dev/null and b/multisrc/overrides/madara/hzmanga/mipmap-xxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/hzmanga/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/madara/hzmanga/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..fd65e26a9 Binary files /dev/null and b/multisrc/overrides/madara/hzmanga/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/hzmanga/web_hi_res_512.png b/multisrc/overrides/madara/hzmanga/web_hi_res_512.png new file mode 100644 index 000000000..fabdb73e3 Binary files /dev/null and b/multisrc/overrides/madara/hzmanga/web_hi_res_512.png differ diff --git a/multisrc/overrides/madara/mangatk/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/madara/mangatk/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..7e89d460e Binary files /dev/null and b/multisrc/overrides/madara/mangatk/res/mipmap-hdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/mangatk/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/madara/mangatk/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..363926db2 Binary files /dev/null and b/multisrc/overrides/madara/mangatk/res/mipmap-mdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/mangatk/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/madara/mangatk/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..d32c0b560 Binary files /dev/null and b/multisrc/overrides/madara/mangatk/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/mangatk/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/madara/mangatk/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..5d8d8f955 Binary files /dev/null and b/multisrc/overrides/madara/mangatk/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/mangatk/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/madara/mangatk/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..8c9193547 Binary files /dev/null and b/multisrc/overrides/madara/mangatk/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/mangatk/res/web_hi_res_512.png b/multisrc/overrides/madara/mangatk/res/web_hi_res_512.png new file mode 100644 index 000000000..d366f7229 Binary files /dev/null and b/multisrc/overrides/madara/mangatk/res/web_hi_res_512.png differ diff --git a/multisrc/overrides/madara/mangatk/src/MangaTK.kt b/multisrc/overrides/madara/mangatk/src/MangaTK.kt new file mode 100644 index 000000000..1342d8779 --- /dev/null +++ b/multisrc/overrides/madara/mangatk/src/MangaTK.kt @@ -0,0 +1,41 @@ +package eu.kanade.tachiyomi.extension.en.mangatk + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.source.model.FilterList +import eu.kanade.tachiyomi.source.model.Page +import eu.kanade.tachiyomi.source.model.SManga +import java.util.Locale +import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.Request +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element + +class MangaTK : Madara("MangaTK", "https://mangatk.com", "en") { + + override fun popularMangaSelector() = "div.manga-item" + override val popularMangaUrlSelector = "div > h3 > a" + + override fun popularMangaRequest(page: Int): Request { + return GET("$baseUrl/manga/page/$page?orderby=trending") + } + + override fun latestUpdatesRequest(page: Int): Request { + return GET("$baseUrl/manga/page/$page?orderby=latest") + } + + + override val pageListParseSelector = "div.read-content img" + + override fun pageListParse(document: Document): List { + return document.select(pageListParseSelector).mapIndexed { index, element -> + Page( + index, + document.location(), + element?.let { + it.absUrl(if (it.hasAttr("data-src")) "data-src" else "src") + } + ) + } + } +} diff --git a/multisrc/overrides/madara/manhwa18cc/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/madara/manhwa18cc/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..b5c6af84c Binary files /dev/null and b/multisrc/overrides/madara/manhwa18cc/res/mipmap-hdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/manhwa18cc/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/madara/manhwa18cc/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..288490296 Binary files /dev/null and b/multisrc/overrides/madara/manhwa18cc/res/mipmap-mdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/manhwa18cc/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/madara/manhwa18cc/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..84d2408c1 Binary files /dev/null and b/multisrc/overrides/madara/manhwa18cc/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/manhwa18cc/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/madara/manhwa18cc/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..6c28983af Binary files /dev/null and b/multisrc/overrides/madara/manhwa18cc/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/manhwa18cc/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/madara/manhwa18cc/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..9e8791c47 Binary files /dev/null and b/multisrc/overrides/madara/manhwa18cc/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/manhwa18cc/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwa18cc/res/web_hi_res_512.png new file mode 100644 index 000000000..7b78edc10 Binary files /dev/null and b/multisrc/overrides/madara/manhwa18cc/res/web_hi_res_512.png differ diff --git a/multisrc/overrides/madara/manhwa18cc/src/Manhwa18CcFactory.kt b/multisrc/overrides/madara/manhwa18cc/src/Manhwa18CcFactory.kt new file mode 100644 index 000000000..c0993d11a --- /dev/null +++ b/multisrc/overrides/madara/manhwa18cc/src/Manhwa18CcFactory.kt @@ -0,0 +1,66 @@ +package eu.kanade.tachiyomi.extension.all.manhwa18cc + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.source.Source +import eu.kanade.tachiyomi.source.SourceFactory +import eu.kanade.tachiyomi.source.model.FilterList +import eu.kanade.tachiyomi.source.model.Page +import eu.kanade.tachiyomi.source.model.SManga +import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.Request +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element + +class Manhwa18CcFactory : SourceFactory { + override fun createSources(): List = listOf( + Manhwa18CcEN(), + Manhwa18CcKO(), + Manhwa18CcALL(), + ) +} + +class Manhwa18CcEN : Manhwa18Cc("Manhwa18.cc", "https://manhwa18.cc", "en") { + override fun popularMangaSelector() = "div.manga-item:not(:contains(Raw))" +} +class Manhwa18CcKO : Manhwa18Cc("Manhwa18.cc", "https://manhwa18.cc", "ko") { + override fun popularMangaSelector() = "div.manga-item:contains(Raw)" +} +class Manhwa18CcALL : Manhwa18Cc("Manhwa18.cc", "https://manhwa18.cc", "all") + +abstract class Manhwa18Cc( + override val name: String, + override val baseUrl: String, + override val lang: String +) : Madara(name, baseUrl, lang) { + + override fun popularMangaSelector() = "div.manga-item" + override val popularMangaUrlSelector = "div.data > h3 > a" + + + override fun popularMangaRequest(page: Int): Request { + return GET("$baseUrl/webtoons/$page?orderby=trending") + } + + override fun latestUpdatesRequest(page: Int): Request { + return GET("$baseUrl/webtoons/$page?orderby=latest") + } + + override val mangaSubString = "webtoon" + + override fun chapterListSelector() = "li.wleft" + + override val pageListParseSelector = "div.read-content img" + + override fun pageListParse(document: Document): List { + return document.select(pageListParseSelector).mapIndexed { index, element -> + Page( + index, + document.location(), + element?.let { + it.absUrl(if (it.hasAttr("data-src")) "data-src" else "src") + } + ) + } + } +} diff --git a/multisrc/overrides/madara/manhwanelo/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/madara/manhwanelo/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..990d02da2 Binary files /dev/null and b/multisrc/overrides/madara/manhwanelo/res/mipmap-hdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/manhwanelo/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/madara/manhwanelo/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..70e547df8 Binary files /dev/null and b/multisrc/overrides/madara/manhwanelo/res/mipmap-mdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/manhwanelo/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/madara/manhwanelo/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..960deccb0 Binary files /dev/null and b/multisrc/overrides/madara/manhwanelo/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/manhwanelo/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/madara/manhwanelo/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..66bd7e18f Binary files /dev/null and b/multisrc/overrides/madara/manhwanelo/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/manhwanelo/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/madara/manhwanelo/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..475200cd2 Binary files /dev/null and b/multisrc/overrides/madara/manhwanelo/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/manhwanelo/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwanelo/res/web_hi_res_512.png new file mode 100644 index 000000000..28a1a5090 Binary files /dev/null and b/multisrc/overrides/madara/manhwanelo/res/web_hi_res_512.png differ diff --git a/multisrc/overrides/madara/timenaight/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/madara/timenaight/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..93c644c48 Binary files /dev/null and b/multisrc/overrides/madara/timenaight/res/mipmap-hdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/timenaight/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/madara/timenaight/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..8d7cd2897 Binary files /dev/null and b/multisrc/overrides/madara/timenaight/res/mipmap-mdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/timenaight/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/madara/timenaight/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..3701c266f Binary files /dev/null and b/multisrc/overrides/madara/timenaight/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/timenaight/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/madara/timenaight/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..8f40cfd25 Binary files /dev/null and b/multisrc/overrides/madara/timenaight/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/timenaight/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/madara/timenaight/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..23e949578 Binary files /dev/null and b/multisrc/overrides/madara/timenaight/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/timenaight/res/web_hi_res_512.png b/multisrc/overrides/madara/timenaight/res/web_hi_res_512.png new file mode 100644 index 000000000..a99172d17 Binary files /dev/null and b/multisrc/overrides/madara/timenaight/res/web_hi_res_512.png differ diff --git a/multisrc/overrides/madara/tumanganet/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/madara/tumanganet/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..40c365682 Binary files /dev/null and b/multisrc/overrides/madara/tumanganet/res/mipmap-hdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/tumanganet/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/madara/tumanganet/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..fb38f74a7 Binary files /dev/null and b/multisrc/overrides/madara/tumanganet/res/mipmap-mdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/tumanganet/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/madara/tumanganet/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..5b8f70f75 Binary files /dev/null and b/multisrc/overrides/madara/tumanganet/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/tumanganet/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/madara/tumanganet/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..6e14aa163 Binary files /dev/null and b/multisrc/overrides/madara/tumanganet/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/tumanganet/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/madara/tumanganet/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..3cf1a9614 Binary files /dev/null and b/multisrc/overrides/madara/tumanganet/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/madara/tumanganet/res/web_hi_res_512.png b/multisrc/overrides/madara/tumanganet/res/web_hi_res_512.png new file mode 100644 index 000000000..772235cda Binary files /dev/null and b/multisrc/overrides/madara/tumanganet/res/web_hi_res_512.png differ diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/Madara.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/Madara.kt index 63db0d52d..8d1e69766 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/Madara.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/Madara.kt @@ -117,7 +117,24 @@ abstract class Madara( return MangasPage(mangas, mp.hasNextPage) } + override fun popularMangaParse(response: Response): MangasPage { + if (genresList == null) + genresList = parseGenres(client.newCall(searchMangaRequest(1,"genre", getFilterList())).execute().asJsoup()) + return super.popularMangaParse(response) + } + + // Search Manga + + open val mangaSubString = "manga" + override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable { + if (query.startsWith(URL_SEARCH_PREFIX)){ + val mangaUrl = "$baseUrl/$mangaSubString/${query.substringAfter(URL_SEARCH_PREFIX)}" + return client.newCall(GET("$baseUrl/$mangaSubString/${query.substringAfter(URL_SEARCH_PREFIX)}", headers)) + .asObservable().map { response -> + MangasPage(listOf(mangaDetailsParse(response.asJsoup()).apply { url = "/$mangaSubString/${query.substringAfter(URL_SEARCH_PREFIX)}/" }), false) + } + } return client.newCall(searchMangaRequest(page, query, filters)) .asObservable().doOnNext { response -> if (!response.isSuccessful) { @@ -133,7 +150,17 @@ abstract class Madara( } } - // Search Manga + override fun searchMangaParse(response: Response): MangasPage { + if (genresList == null) + genresList = parseGenres(response.asJsoup(response.peekBody(Long.MAX_VALUE).string())) + return super.searchMangaParse(response) + } + + private fun parseGenres(document: Document): List? { + return document.selectFirst("div.checkbox-group")?.select("div.checkbox")?.map { li -> + Genre(li.selectFirst("label").text(), li.selectFirst("input[type=checkbox]").`val`()) + } + } protected open fun searchPage(page: Int): String = "page/$page/" @@ -226,67 +253,14 @@ abstract class Madara( protected class GenreList(genres: List) : Filter.Group("Genres", genres) class Genre(name: String, val id: String = name) : Filter.CheckBox(name) - open fun getGenreList() = listOf( - Genre("Adventure", "Adventure"), - Genre("Action", "action"), - Genre("Adventure", "adventure"), - Genre("Cars", "cars"), - Genre("4-Koma", "4-koma"), - Genre("Comedy", "comedy"), - Genre("Completed", "completed"), - Genre("Cooking", "cooking"), - Genre("Dementia", "dementia"), - Genre("Demons", "demons"), - Genre("Doujinshi", "doujinshi"), - Genre("Drama", "drama"), - Genre("Ecchi", "ecchi"), - Genre("Fantasy", "fantasy"), - Genre("Game", "game"), - Genre("Gender Bender", "gender-bender"), - Genre("Harem", "harem"), - Genre("Historical", "historical"), - Genre("Horror", "horror"), - Genre("Isekai", "isekai"), - Genre("Josei", "josei"), - Genre("Kids", "kids"), - Genre("Magic", "magic"), - Genre("Manga", "manga"), - Genre("Manhua", "manhua"), - Genre("Manhwa", "manhwa"), - Genre("Martial Arts", "martial-arts"), - Genre("Mature", "mature"), - Genre("Mecha", "mecha"), - Genre("Military", "military"), - Genre("Music", "music"), - Genre("Mystery", "mystery"), - Genre("Old Comic", "old-comic"), - Genre("One Shot", "one-shot"), - Genre("Oneshot", "oneshot"), - Genre("Parodi", "parodi"), - Genre("Parody", "parody"), - Genre("Police", "police"), - Genre("Psychological", "psychological"), - Genre("Romance", "romance"), - Genre("Samurai", "samurai"), - Genre("School", "school"), - Genre("School Life", "school-life"), - Genre("Sci-Fi", "sci-fi"), - Genre("Seinen", "seinen"), - Genre("Shoujo", "shoujo"), - Genre("Shoujo Ai", "shoujo-ai"), - Genre("Shounen", "shounen"), - Genre("Shounen ai", "shounen-ai"), - Genre("Slice of Life", "slice-of-life"), - Genre("Sports", "sports"), - Genre("Super Power", "super-power"), - Genre("Supernatural", "supernatural"), - Genre("Thriller", "thriller"), - Genre("Tragedy", "tragedy"), - Genre("Vampire", "vampire"), - Genre("Webtoons", "webtoons"), - Genre("Yaoi", "yaoi"), - Genre("Yuri", "yuri") - ) + private var genresList: List? = null + + protected open fun getGenreList(): List { + // Filters are fetched immediately once an extension loads + // We're only able to get filters after a loading the manga directory, and resetting + // the filters is the only thing that seems to reinflate the view + return genresList ?: listOf(Genre("Press reset to attempt to fetch genres", "")) + } override fun getFilterList() = FilterList( AuthorFilter(), @@ -339,7 +313,6 @@ abstract class Madara( override fun mangaDetailsParse(document: Document): SManga { val manga = SManga.create() - with(document) { select("div.post-title h3").first()?.let { manga.title = it.ownText() @@ -410,7 +383,7 @@ abstract class Madara( open val altName = "Alternative Name" + ": " open val updatingRegex = "Updating|Atualizando".toRegex(RegexOption.IGNORE_CASE) - private fun String.notUpdating(): Boolean { + public fun String.notUpdating(): Boolean { return this.contains(updatingRegex).not() } @@ -536,6 +509,8 @@ abstract class Madara( WordSet("jam", "saat", "heure", "hora", "hour").anyWordIn(date) -> cal.apply { add(Calendar.HOUR, -number) }.timeInMillis WordSet("menit", "dakika", "min", "minute", "minuto").anyWordIn(date) -> cal.apply { add(Calendar.MINUTE, -number) }.timeInMillis WordSet("detik", "segundo", "second").anyWordIn(date) -> cal.apply { add(Calendar.SECOND, -number) }.timeInMillis + WordSet("month").anyWordIn(date) -> cal.apply { add(Calendar.MONTH, -number) }.timeInMillis + WordSet("year").anyWordIn(date) -> cal.apply { add(Calendar.YEAR, -number) }.timeInMillis else -> 0 } } @@ -566,6 +541,10 @@ abstract class Madara( } override fun imageUrlParse(document: Document) = throw UnsupportedOperationException("Not used") + + companion object { + const val URL_SEARCH_PREFIX = "SLUG:" + } } class WordSet(private vararg val words: String) { fun anyWordIn(dateString: String): Boolean = words.any { dateString.contains(it, ignoreCase = true) } } diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt index 87624979b..b81c2eb73 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt @@ -10,281 +10,276 @@ class MadaraGenerator : ThemeSourceGenerator { override val themeClass = "Madara" - override val baseVersionCode: Int = 5 + override val baseVersionCode: Int = 6 override val sources = listOf( - SingleLang("247Manga", "https://247manga.com", "en", className = "Manga247"), - SingleLang("24hRomance", "https://24hromance.com", "en", className = "Romance24h"), - SingleLang("Adonis Fansub", "https://manga.adonisfansub.com", "tr", overrideVersionCode = 1), - SingleLang("AkuManga", "https://akumanga.com", "ar"), - SingleLang("AllPornComic", "https://allporncomic.com", "en", isNsfw = true), - SingleLang("Aloalivn", "https://aloalivn.com", "en", overrideVersionCode = 2), - SingleLang("AniMangaEs", "https://animangaes.com", "en", overrideVersionCode = 1), - SingleLang("Anisa Manga", "https://anisamanga.com", "tr"), - SingleLang("Agent of Change Translations", "https://aoc.moe", "en", overrideVersionCode = 1), - SingleLang("ApollComics", "https://apollcomics.xyz", "es", overrideVersionCode = 1), - SingleLang("Arang Scans", "https://arangscans.com", "en", overrideVersionCode = 3), // removed override - SingleLang("ArazNovel", "https://www.araznovel.com", "tr", overrideVersionCode = 1), - SingleLang("Argos Scan", "https://argosscan.com", "pt-BR", overrideVersionCode = 2), - SingleLang("Asgard Team", "https://www.asgard1team.com", "ar", overrideVersionCode = 1), - SingleLang("Arthur Scan", "https://arthurscan.xyz", "pt-BR", overrideVersionCode = 1), - SingleLang("Astral Library", "https://www.astrallibrary.net", "en", overrideVersionCode = 2), - SingleLang("Atikrost", "https://atikrost.com", "tr", overrideVersionCode = 1), - SingleLang("AYATOON", "https://ayatoon.com", "tr", overrideVersionCode = 1), - SingleLang("Azora", "https://azoramanga.com", "ar", overrideVersionCode = 1), - SingleLang("BL Manhwa Club", "https://blmanhwa.club", "pt-BR", isNsfw = true, className = "BlManhwaClub", overrideVersionCode = 1), - SingleLang("Banana Mecânica", "https://leitorbm.com", "pt-BR", isNsfw = true, pkgName = "bananamecanica", className = "BananaMecanica", overrideVersionCode = 1), - SingleLang("Bakaman", "https://bakaman.net", "th", overrideVersionCode = 1), - SingleLang("BestManga", "https://bestmanga.club", "ru"), - SingleLang("BestManhua", "https://bestmanhua.com", "en", overrideVersionCode = 2), - SingleLang("BoysLove", "https://boyslove.me", "en", overrideVersionCode = 1), - SingleLang("Bread Factory", "https://www.breadfactory.site", "en"), - SingleLang("Café com Yaoi", "http://cafecomyaoi.com.br", "pt-BR", pkgName = "cafecomyaoi", className = "CafeComYaoi", isNsfw = true), - SingleLang("CatOnHeadTranslations", "https://catonhead.com", "en", overrideVersionCode = 1), - SingleLang("CAT-translator", "https://cat-translator.com", "th", className = "CatTranslator"), - SingleLang("Cerise Scans", "https://cerisescans.com", "pt-BR", overrideVersionCode = 1), - SingleLang("Chibi Manga", "https://www.cmreader.info", "en", overrideVersionCode = 1), - SingleLang("Clover Manga", "https://clover-manga.com", "tr", overrideVersionCode = 2), - SingleLang("ComicKiba", "https://comickiba.com", "en", overrideVersionCode = 1), - SingleLang("Comicdom", "https://comicdom.org", "en", overrideVersionCode = 1), - SingleLang("Comics Valley", "https://comicsvalley.com", "hi", isNsfw = true), - SingleLang("CopyPasteScan", "https://copypastescan.xyz", "es", overrideVersionCode = 1), - SingleLang("Cutie Pie", "https://cutiepie.moe", "tr", overrideVersionCode = 1), - SingleLang("DarkYue Realm", "https://darkyuerealm.site/web", "pt-BR", pkgName = "darkyurealm", overrideVersionCode = 3), - SingleLang("Decadence Scans", "https://reader.decadencescans.com", "en", overrideVersionCode = 1), - SingleLang("شبكة كونان العربية", "https://www.manga.detectiveconanar.com", "ar", className = "DetectiveConanAr", overrideVersionCode = 1), - SingleLang("DiamondFansub", "https://diamondfansub.com", "tr"), - SingleLang("Disaster Scans", "https://disasterscans.com", "en", overrideVersionCode = 1), - SingleLang("DoujinHentai", "https://doujinhentai.net", "es", isNsfw = true, overrideVersionCode = 1), - SingleLang("Dream Manga", "https://en.ruyamanga.com", "en", overrideVersionCode = 2), - SingleLang("Drope Scan", "https://dropescan.com", "pt-BR", overrideVersionCode = 2), - SingleLang("FDM Scan", "https://fdmscan.com", "pt-BR", overrideVersionCode = 2), - SingleLang("1st Kiss", "https://1stkissmanga.com", "en", className = "FirstKissManga", overrideVersionCode = 2), - SingleLang("1st Kiss Manhua", "https://1stkissmanhua.com", "en", className = "FirstKissManhua", overrideVersionCode = 1), - SingleLang("Fênix Scanlator", "https://fenixscanlator.xyz", "pt-BR", pkgName = "fenixscanlator", className = "FenixScanlator", overrideVersionCode = 1), - SingleLang("FreeWebtoonCoins", "https://freewebtooncoins.com", "en", overrideVersionCode = 1), - SingleLang("TheFluffyHangoutGroup", "https://www.fluffyhangout.club", "en", overrideVersionCode = 1), - SingleLang("Furio Scans", "https://furioscans.com", "pt-BR", overrideVersionCode = 2), - SingleLang("موقع لترجمة المانجا", "https://golden-manga.com", "ar", className = "GoldenManga"), - SingleLang("GalaxyDegenScans", "https://gdegenscans.xyz/", "en", overrideVersionCode = 1), - SingleLang("Glory Scans", "https://gloryscan.com", "pt-BR", isNsfw = true, overrideVersionCode = 1), - SingleLang("Graze Scans", "https://grazescans.com/", "en", overrideVersionCode = 1), - SingleLang("GuncelManga", "https://guncelmanga.com", "tr"), - SingleLang("Hentai20", "https://hentai20.com", "en", isNsfw = true), - SingleLang("Hero Manhua", "https://heromanhua.com", "en"), - SingleLang("Heroz Scanlation", "https://herozscans.com", "en", overrideVersionCode = 1), - SingleLang("Himera Fansub", "https://himera-fansub.com", "tr"), - SingleLang("Hiperdex", "https://hiperdex.com", "en", isNsfw = true, overrideVersionCode = 1), - SingleLang("Hscans", "https://hscans.com", "en", overrideVersionCode = 1), - SingleLang("Hunter Fansub", "https://hunterfansub.com", "es", overrideVersionCode = 1), - SingleLang("Ichirin No Hana Yuri", "https://ichirinnohanayuri.com.br", "pt-BR", overrideVersionCode = 3), - SingleLang("Immortal Updates", "https://immortalupdates.com", "en", overrideVersionCode = 1), - SingleLang("Império dos Otakus", "https://imperiodosotakus.tk", "pt-BR", className = "ImperioDosOtakus", overrideVersionCode = 1), - SingleLang("IsekaiScan.com", "https://isekaiscan.com", "en", className = "IsekaiScanCom", overrideVersionCode = 2), - SingleLang("IsekaiScanManga (unoriginal)", "https://isekaiscanmanga.com", "en", className = "IsekaiScanManga", overrideVersionCode = 1), - SingleLang("Its Your Right Manhua", "https://itsyourightmanhua.com/", "en", overrideVersionCode = 1), - SingleLang("JJutsuScans", "https://jjutsuscans.com", "en", overrideVersionCode = 1), - SingleLang("KisekiManga", "https://kisekimanga.com", "en", overrideVersionCode = 1), - SingleLang("Kissmanga.in", "https://kissmanga.in", "en", className= "KissmangaIn", overrideVersionCode = 1), - SingleLang("KlikManga", "https://klikmanga.com", "id", overrideVersionCode = 1), - SingleLang("Kombatch", "https://kombatch.com", "id"), - SingleLang("Kun Manga", "https://kunmanga.com", "en", overrideVersionCode = 1), - SingleLang("Levelerscans", "https://levelerscans.xyz", "en", overrideVersionCode = 1), - SingleLang("Lily Manga", "https://lilymanga.com", "en"), - SingleLang("LovableSubs", "https://lovablesubs.com", "tr"), - SingleLang("Manga18 Fx", "https://manga18fx.com", "en", overrideVersionCode = 1), - SingleLang("Manga347", "https://manga347.com", "en", overrideVersionCode = 3), - SingleLang("مانجا العاشق", "https://3asq.org", "ar", className = "Manga3asq"), - SingleLang("Manga3S", "https://manga3s.com", "en", overrideVersionCode = 1), - SingleLang("Manga68", "https://manga68.com", "en", overrideVersionCode = 1), - SingleLang("Manga Action", "https://manga-action.com", "ar", overrideVersionCode = 1), - SingleLang("مانجا عرب تيم Manga Arab Team", "https://mangaarabteam.com", "ar", className = "MangaArabTeam"), - SingleLang("MangaBaz", "https://mangabaz.com", "tr"), - SingleLang("Manga Bin", "https://mangabin.com/", "en", overrideVersionCode = 1), - SingleLang("MangaBob", "https://mangabob.com", "en", overrideVersionCode = 1), - SingleLang("Manga Chill", "https://mangachill.com/", "en", overrideVersionCode = 1), - SingleLang("Manga Clash", "https://mangaclash.com", "en", overrideVersionCode = 1), - SingleLang("Manga Crab", "https://mangacrab.com", "es"), - SingleLang("MangaCultivator", "https://mangacultivator.com", "en", overrideVersionCode = 1), - SingleLang("MangaDods", "https://www.mangadods.com", "en", overrideVersionCode = 2), - SingleLang("Manga Drop Out", "https://www.mangadropout.xyz", "id", isNsfw = true, overrideVersionCode = 1), - SingleLang("MangaEffect", "https://mangaeffect.com", "en", overrideVersionCode = 1), - MultiLang("MangaForFree.net", "https://mangaforfree.net", listOf("en", "ko", "all") , isNsfw = true, className = "MangaForFreeFactory", pkgName = "mangaforfree"), - SingleLang("MangaGreat", "https://mangagreat.com", "en", overrideVersionCode = 1), - SingleLang("Manga Hentai", "https://mangahentai.me", "en", isNsfw = true, overrideVersionCode = 1), - SingleLang("Mangakik", "https://mangakik.com", "en"), - SingleLang("Manga Kiss", "https://mangakiss.org", "en", overrideVersionCode = 1), - SingleLang("MangaKitsune", "https://mangakitsune.com", "en", isNsfw = true, overrideVersionCode = 1), - SingleLang("MangaKomi", "https://mangakomi.com", "en", overrideVersionCode = 2), - SingleLang("Manga Land Arabic", "https://mangalandarabic.com", "ar"), - SingleLang("مانجا ليك", "https://mangalek.com", "ar", className = "Mangalek"), - SingleLang("MangaLazy", "https://mangalazy.com", "en", isNsfw = true, overrideVersionCode = 4), - SingleLang("MangaLionz", "https://mangalionz.com", "ar"), - SingleLang("مانجا لينك", "https://mangalink.io", "ar", className = "MangaLinkio", overrideVersionCode = 1), - SingleLang("Manga Lord", "https://mangalord.com", "en", overrideVersionCode = 1), - SingleLang("Manga Nine", "https://manganine.com", "en", overrideVersionCode = 1), - SingleLang("Manga-Online.co", "https://www.manga-online.co", "th", className = "MangaOnlineCo"), - SingleLang("Mangas Origines", "https://mangas-origines.fr", "fr" , true, overrideVersionCode = 1), - SingleLang("Manga Diyari", "https://manga-diyari.com", "tr", overrideVersionCode = 1), - SingleLang("MangaRave", "https://www.mangarave.com", "en", overrideVersionCode = 2), - SingleLang("ManhwaLive", "https://manhwa.live", "en", overrideVersionCode = 1), - SingleLang("Manga Read", "https://mangaread.co", "en", overrideVersionCode = 1), - SingleLang("MangaRead.org", "https://www.mangaread.org", "en", className = "MangaReadOrg", overrideVersionCode = 1), - SingleLang("Mangareceh", "https://mangareceh.id", "id"), - SingleLang("Manga Rock Team", "https://mangarockteam.com", "en", overrideVersionCode = 1), - SingleLang("Manga Rocky", "https://mangarocky.com", "en", overrideVersionCode = 1), - SingleLang("MangaRoma", "https://mangaroma.com", "en"), - SingleLang("Manga-Scantrad", "https://manga-scantrad.net", "fr", className = "MangaScantrad", overrideVersionCode = 1), - SingleLang("MangaSco", "https://mangasco.com", "en", overrideVersionCode = 1), - SingleLang("MangaSpark", "https://mangaspark.com", "ar"), - SingleLang("Manga Starz", "https://mangastarz.com", "ar"), - SingleLang("MangaStein", "https://mangastein.com", "tr"), - SingleLang("Mangasushi", "https://mangasushi.net", "en", overrideVersionCode = 1), - SingleLang("Manga SY", "https://www.mangasy.com", "en", overrideVersionCode = 1), - SingleLang("MangaTeca", "https://www.mangateca.com", "pt-BR", overrideVersionCode = 2), - SingleLang("Manga Too", "https://mangatoo.com/", "en", overrideVersionCode = 1), - SingleLang("Manga Turf", "https://mangaturf.com", "en"), - SingleLang("MangaTX", "https://mangatx.com", "en", overrideVersionCode = 1), - SingleLang("Mangauptocats", "https://mangauptocats.online", "th"), - SingleLang("MangaUS", "https://mangaus.xyz", "en", overrideVersionCode = 2), - SingleLang("Manga Weebs", "https://mangaweebs.in", "en", overrideVersionCode = 1), - SingleLang("MangaWT", "https://mangawt.com", "tr"), - SingleLang("MangaYaku", "https://mangayaku.com", "id", overrideVersionCode = 1), - SingleLang("MangaYosh", "https://mangayosh.xyz", "id"), - SingleLang("Mangazuki.me", "https://mangazuki.me", "en", className = "MangazukiMe", overrideVersionCode = 1), - SingleLang("Mangceh", "https://mangceh.com", "id", isNsfw = true, overrideVersionCode = 1), - SingleLang("ManhuaBox", "https://manhuabox.net", "en", overrideVersionCode = 1), - SingleLang("Manhua ES", "https://manhuaes.com", "en", overrideVersionCode = 4), - SingleLang("ManhuaFast", "https://manhuafast.com", "en", overrideVersionCode = 1), - SingleLang("Manhuaga", "https://manhuaga.com", "en", overrideVersionCode = 1), - SingleLang("Manhualo", "https://manhualo.com", "en", overrideVersionCode = 1), - SingleLang("Manhua Plus", "https://manhuaplus.com", "en", overrideVersionCode = 3), - SingleLang("Manhuas.net", "https://manhuas.net", "en", className = "Manhuasnet", overrideVersionCode = 1), - SingleLang("Manhuas World", "https://manhuasworld.com", "en"), - SingleLang("Manhua SY", "https://www.manhuasy.com", "en", overrideVersionCode = 1), - SingleLang("ManhuaUS", "https://manhuaus.com", "en", overrideVersionCode = 2), - SingleLang("Manhwa Raw", "https://manhwaraw.com", "ko"), - SingleLang("Manhwa18.org", "https://manhwa18.org", "en", isNsfw = true, className = "Manhwa18Org", overrideVersionCode = 1), - SingleLang("مانجا العرب", "https://www.manhwa.ae", "ar", className = "ManhwaAe"), - SingleLang("Manhwatop", "https://manhwatop.com", "en", overrideVersionCode = 1), - SingleLang("Manwahentai.me", "https://manhwahentai.me", "en", className = "ManwahentaiMe", isNsfw = true, overrideVersionCode = 1), - SingleLang("Manhwa.club", "https://manhwa.club", "en", className="ManwhaClub", overrideVersionCode = 2), // wrong class name for backward compatibility - SingleLang("ManyToon", "https://manytoon.com", "en", overrideVersionCode = 1), - SingleLang("ManyToonClub", "https://manytoon.club", "ko"), - SingleLang("ManyToon.me", "https://manytoon.me", "en", className = "ManyToonMe", overrideVersionCode = 1), - SingleLang("Mark Scans", "https://markscans.online", "pt-BR", overrideVersionCode = 2), - SingleLang("MG Komik", "https://mgkomik.my.id", "id", overrideVersionCode = 1), - SingleLang("Midnight Mess Scans", "https://midnightmess.org", "en", isNsfw = true, overrideVersionCode = 1), - SingleLang("Milftoon", "https://milftoon.xxx", "en", isNsfw = true, overrideVersionCode = 2), - SingleLang("Mixed Manga", "https://mixedmanga.com", "en", overrideVersionCode = 1), - SingleLang("MMScans", "https://mm-scans.com/", "en", overrideVersionCode = 1), - SingleLang("Mode Scanlator", "https://modescanlator.com", "pt-BR", overrideVersionCode = 1), - SingleLang("Mundo Wuxia", "https://mundowuxia.com", "es"), - SingleLang("Mystical Merries", "https://mysticalmerries.com", "en", overrideVersionCode = 1), - SingleLang("NeatManga", "https://neatmanga.com", "en", overrideVersionCode = 1), - SingleLang("NekoScan", "https://nekoscan.com", "en", overrideVersionCode = 1), - SingleLang("Neox Scanlator", "https://neoxscans.net", "pt-BR", overrideVersionCode = 5), - SingleLang("Night Comic", "https://www.nightcomic.com", "en", overrideVersionCode = 1), - SingleLang("Niji Translations", "https://niji-translations.com", "ar"), - SingleLang("Ninjavi", "https://ninjavi.com", "ar", overrideVersionCode = 1), - SingleLang("Nitro Scans", "https://nitroscans.com", "en"), - SingleLang("NovelMic", "https://novelmic.com", "en", overrideVersionCode = 1), - SingleLang("Off Scan", "https://offscan.top", "pt-BR", overrideVersionCode = 2), - SingleLang("OnManga", "https://onmanga.com", "en", overrideVersionCode = 1), - SingleLang("Origami Orpheans", "https://origami-orpheans.com.br", "pt-BR", overrideVersionCode = 2), - SingleLang("Paean Scans", "https://paeanscans.com", "en", overrideVersionCode = 1), - SingleLang("Painful Nightz Scan", "https://painfulnightzscan.com", "en"), - SingleLang("Platinum Crown", "https://platinumscans.com", "en", overrideVersionCode = 1), - SingleLang("Pojok Manga", "https://pojokmanga.com", "id", overrideVersionCode = 2), - SingleLang("PornComix", "https://www.porncomixonline.net", "en", isNsfw = true, overrideVersionCode = 1), - SingleLang("Projeto Scanlator", "https://projetoscanlator.com", "pt-BR", overrideVersionCode = 2), - SingleLang("QueensManga ملكات المانجا", "https://queensmanga.com", "ar", className = "QueensManga"), - SingleLang("Random Translations", "https://randomtranslations.com", "en", overrideVersionCode = 1), - SingleLang("RawDEX", "https://rawdex.net", "ko", isNsfw = true), - SingleLang("Raw Mangas", "https://rawmangas.net", "ja", isNsfw = true, overrideVersionCode = 1), - SingleLang("ReadManhua", "https://readmanhua.net", "en", overrideVersionCode = 2), - SingleLang("Renascence Scans (Renascans)", "https://new.renascans.com", "en", className = "RenaScans", overrideVersionCode = 1), - SingleLang("Rüya Manga", "https://www.ruyamanga.com", "tr", className = "RuyaManga"), - SingleLang("S2Manga", "https://s2manga.com", "en", overrideVersionCode = 1), - SingleLang("SamuraiScan", "https://samuraiscan.com", "es"), - SingleLang("Setsu Scans", "https://setsuscans.com", "en"), - SingleLang("Shield Manga", "https://shieldmanga.club", "en", overrideVersionCode = 2), - SingleLang("Shinzoo Scan", "https://shinzooscan.xyz", "pt-BR", overrideVersionCode = 2), - SingleLang("Shooting Star Scans", "https://shootingstarscans.xyz", "en", overrideVersionCode = 1), - SingleLang("ShoujoHearts", "https://shoujohearts.com", "en", overrideVersionCode = 2), - SingleLang("SISI GELAP", "https://sisigelap.club/", "id", overrideVersionCode = 1), - SingleLang("SiXiang Scans", "http://www.sixiangscans.com", "en", overrideVersionCode = 1), - SingleLang("Siyahmelek", "https://siyahmelek.com", "tr", isNsfw = true, overrideVersionCode = 1), - SingleLang("Skymanga", "https://skymanga.co", "en", overrideVersionCode = 1), - SingleLang("Sleepy Translations", "https://sleepytranslations.com/", "en", overrideVersionCode = 1), - SingleLang("SocialWeebs", "https://socialweebs.in/", "en"), - SingleLang("SoloScanlation", "https://soloscanlation.site", "en"), - SingleLang("StageComics", "https://stagecomics.com", "pt-BR", overrideVersionCode = 2), - SingleLang("Sugar Babies", "https://sugarbscan.com", "en", overrideVersionCode = 1), - SingleLang("Sweet Time Scan", "https://sweetscan.net", "pt-BR", overrideVersionCode = 1), - SingleLang("TheTopComic", "https://thetopcomic.com", "en"), - SingleLang("365Manga", "https://365manga.com", "en", className = "ThreeSixtyFiveManga", overrideVersionCode = 1), - SingleLang("ToonGod", "https://www.toongod.com", "en", overrideVersionCode = 1), - SingleLang("Toonily", "https://toonily.com", "en", isNsfw = true, overrideVersionCode = 2), - SingleLang("Toonily.net", "https://toonily.net", "en", isNsfw = true, className = "ToonilyNet", overrideVersionCode = 1), - SingleLang("Top Manhua", "https://topmanhua.com", "en", overrideVersionCode = 1), - SingleLang("TritiniaScans", "https://tritinia.com", "en", overrideVersionCode = 1), - SingleLang("TruyenTranhAudio.com", "https://truyentranhaudio.com", "vi", className = "TruyenTranhAudioCom"), - SingleLang("TruyenTranhAudio.online", "https://truyentranhaudio.online", "vi", className = "TruyenTranhAudioOnline"), - SingleLang("Tsundoku Traduções", "https://tsundokutraducoes.com.br", "pt-BR", pkgName = "tsundokutraducoes", className = "TsundokuTraducoes", overrideVersionCode = 2), - SingleLang("Türkçe Manga", "https://turkcemanga.com", "tr", className = "TurkceManga"), - SingleLang("Twilight Scans", "https://twilightscans.com", "en", overrideVersionCode = 1), - SingleLang("Unemployed Scans", "https://unemployedscans.com", "en", overrideVersionCode = 1), - SingleLang("Uyuyan Balik", "https://uyuyanbalik.com/", "tr"), - SingleLang("Vanguard Bun", "https://vanguardbun.com/", "en", overrideVersionCode = 1), - SingleLang("Volkan Scans", "https://volkanscans.com", "en", overrideVersionCode = 1), - SingleLang("Wakascan", "https://wakascan.com", "fr", overrideVersionCode = 1), - SingleLang("War Queen Scan", "https://wqscan.com.br", "pt-BR", overrideVersionCode = 3), - SingleLang("WebNovel", "https://webnovel.live", "en", className = "WebNovelLive", overrideVersionCode = 3), - SingleLang("Webtoon Hatti", "https://webtoonhatti.com/", "tr"), - SingleLang("WebToonily", "https://webtoonily.com", "en"), - SingleLang("WebtoonUK", "https://webtoon.uk", "en", overrideVersionCode = 1), - SingleLang("WebtoonXYZ", "https://www.webtoon.xyz", "en", overrideVersionCode = 1), - SingleLang("WoopRead", "https://woopread.com", "en", overrideVersionCode = 1), - SingleLang("WuxiaWorld", "https://wuxiaworld.site", "en", overrideVersionCode = 1), - SingleLang("Yaoi Fan Clube", "https://yaoifanclube.com.br", "pt-BR", isNsfw = true, overrideVersionCode = 1), - SingleLang("Yaoi Toshokan", "https://yaoitoshokan.net", "pt-BR", isNsfw = true, overrideVersionCode = 2), - SingleLang("Yokai Jump", "https://yokaijump.fr", "fr"), - SingleLang("Yuri Verso", "https://yuri.live", "pt-BR", overrideVersionCode = 2), - SingleLang("Zin Translator", "https://zinmanga.com", "en", overrideVersionCode = 1), - SingleLang("Sleeping Knight Scans", "https://skscans.com", "en", overrideVersionCode = 2), - MultiLang("Leviatan Scans", "https://leviatanscans.com", listOf("en", "es"), - className = "LeviatanScansFactory", overrideVersionCode = 4), - SingleLang("Leviatan Scans X", "https://xxx.leviatanscans.com", "en", isNsfw = true), - SingleLang("Manga1st", "https://manga1st.com", "en", overrideVersionCode = 1), - SingleLang("Manga1st.online", "https://manga1st.online", "en", className = "MangaFirstOnline", overrideVersionCode = 1), - SingleLang("Imperfect Comics", "https://imperfectcomic.com", "en"), - SingleLang("Ookamii Manga", "https://manga.ookamii.xyz/", "en"), - SingleLang("Mortals Groove", "https://mortalsgroove.com", "en"), - SingleLang("Cervo Scanlator", "https://cervoscan.xyz", "pt-BR", overrideVersionCode = 2), - SingleLang("Comic Star", "https://comicstar.org", "en"), - SingleLang("Reset Scans", "https://reset-scans.com", "en", overrideVersionCode = 3), - SingleLang("XuN Scans", "https://reader.xunscans.xyz", "en", overrideVersionCode = 1), - SingleLang("Sani-Go", "https://sani-go.net", "ar", className = "SaniGo"), - SingleLang("Random Scan", "https://randomscan.online", "pt-BR", overrideVersionCode = 3), - SingleLang("Fukushuu no Yuusha", "https://fny-scantrad.com", "fr", overrideVersionCode = 1), - SingleLang("Three Queens Scanlator", "https://tqscan.com.br", "pt-BR", overrideVersionCode = 2), - SingleLang("Winter Scan", "https://winterscan.com.br", "pt-BR", overrideVersionCode = 2), - SingleLang("Little Monster Scan", "https://littlemonsterscan.com.br", "pt-BR", overrideVersionCode = 2), - SingleLang("Wonderland", "https://landwebtoons.site", "pt-BR", overrideVersionCode = 2), - SingleLang("Pornwha", "https://pornwha.com", "en", isNsfw = true), - SingleLang("Wakamics", "https://wakamics.net", "en"), - SingleLang("Traducciones Amistosas", "https://nartag.com", "es", overrideVersionCode = 1), - SingleLang("MangaYami", "https://www.mangayami.club", "en", overrideVersionCode = 2), - SingleLang("Manga Fenix", "https://manga-fenix.com", "es", overrideVersionCode = 1), - SingleLang("Manga Mitsu", "https://mangamitsu.com", "en", isNsfw = true, overrideVersionCode = 2), - SingleLang("Fudido Scanlator", "https://fudidoscan.com", "pt-BR", isNsfw = true, overrideVersionCode = 1), - SingleLang("Yaoi Manga", "https://yaoi.mobi", "en", isNsfw = true, overrideVersionCode = 1), - SingleLang("Free Manga", "https://freemanga.me", "en", isNsfw = true, overrideVersionCode = 1), - SingleLang("MangaTuli", "https://mangatuli.com", "en", isNsfw = true, overrideVersionCode = 1), - SingleLang("ManhuaPro", "https://manhuapro.com", "en", overrideVersionCode = 1), - SingleLang("Hentaidexy", "https://hentaidexy.com", "en", isNsfw = true), - SingleLang("MangaPL", "https://mangapl.com", "en", isNsfw = true) + MultiLang("Leviatan Scans", "https://leviatanscans.com", listOf("en", "es"), className = "LeviatanScansFactory", overrideVersionCode = 4), + MultiLang("MangaForFree.net", "https://mangaforfree.net", listOf("en", "ko", "all") , isNsfw = true, className = "MangaForFreeFactory", pkgName = "mangaforfree"), + MultiLang("Manhwa18.cc", "https://manhwa18.cc", listOf("en", "ko", "all"), isNsfw = true, className = "Manhwa18CcFactory", pkgName = "manhwa18cc"), + SingleLang("1st Kiss Manhua", "https://1stkissmanhua.com", "en", className = "FirstKissManhua", overrideVersionCode = 1), + SingleLang("1st Kiss", "https://1stkissmanga.com", "en", className = "FirstKissManga", overrideVersionCode = 2), + SingleLang("247Manga", "https://247manga.com", "en", className = "Manga247"), + SingleLang("24hRomance", "https://24hromance.com", "en", className = "Romance24h"), + SingleLang("365Manga", "https://365manga.com", "en", className = "ThreeSixtyFiveManga", overrideVersionCode = 1), + SingleLang("AYATOON", "https://ayatoon.com", "tr", overrideVersionCode = 1), + SingleLang("Adonis Fansub", "https://manga.adonisfansub.com", "tr", overrideVersionCode = 1), + SingleLang("Agent of Change Translations", "https://aoc.moe", "en", overrideVersionCode = 1), + SingleLang("AkuManga", "https://akumanga.com", "ar"), + SingleLang("AllPornComic", "https://allporncomic.com", "en", isNsfw = true), + SingleLang("Aloalivn", "https://aloalivn.com", "en", overrideVersionCode = 2), + SingleLang("AniMangaEs", "https://animangaes.com", "en", overrideVersionCode = 1), + SingleLang("Anisa Manga", "https://anisamanga.com", "tr"), + SingleLang("ApollComics", "https://apollcomics.xyz", "es", overrideVersionCode = 1), + SingleLang("Arang Scans", "https://arangscans.com", "en", overrideVersionCode = 3), // removed override + SingleLang("ArazNovel", "https://www.araznovel.com", "tr", overrideVersionCode = 1), + SingleLang("Argos Scan", "https://argosscan.com", "pt-BR", overrideVersionCode = 2), + SingleLang("Arthur Scan", "https://arthurscan.xyz", "pt-BR", overrideVersionCode = 1), + SingleLang("Asgard Team", "https://www.asgard1team.com", "ar", overrideVersionCode = 1), + SingleLang("Astral Library", "https://www.astrallibrary.net", "en", overrideVersionCode = 2), + SingleLang("Atikrost", "https://atikrost.com", "tr", overrideVersionCode = 1), + SingleLang("Azora", "https://azoramanga.com", "ar", overrideVersionCode = 1), + SingleLang("BL Manhwa Club", "https://blmanhwa.club", "pt-BR", isNsfw = true, className = "BlManhwaClub", overrideVersionCode = 1), + SingleLang("Bakaman", "https://bakaman.net", "th", overrideVersionCode = 1), + SingleLang("Banana Mecânica", "https://leitorbm.com", "pt-BR", isNsfw = true, pkgName = "bananamecanica", className = "BananaMecanica", overrideVersionCode = 1), + SingleLang("BestManga", "https://bestmanga.club", "ru"), + SingleLang("BestManhua", "https://bestmanhua.com", "en", overrideVersionCode = 2), + SingleLang("BoysLove", "https://boyslove.me", "en", overrideVersionCode = 1), + SingleLang("CAT-translator", "https://cat-translator.com", "th", className = "CatTranslator"), + SingleLang("Café com Yaoi", "http://cafecomyaoi.com.br", "pt-BR", pkgName = "cafecomyaoi", className = "CafeComYaoi", isNsfw = true), + SingleLang("CatOnHeadTranslations", "https://catonhead.com", "en", overrideVersionCode = 1), + SingleLang("Cerise Scans", "https://cerisescans.com", "pt-BR", overrideVersionCode = 1), + SingleLang("Cervo Scanlator", "https://cervoscan.xyz", "pt-BR", overrideVersionCode = 2), + SingleLang("Chibi Manga", "https://www.cmreader.info", "en", overrideVersionCode = 1), + SingleLang("Clover Manga", "https://clover-manga.com", "tr", overrideVersionCode = 2), + SingleLang("ComicKiba", "https://comickiba.com", "en", overrideVersionCode = 1), + SingleLang("Comicdom", "https://comicdom.org", "en", overrideVersionCode = 1), + SingleLang("Comichub", "https://comichub.net", "en"), + SingleLang("Comics Valley", "https://comicsvalley.com", "hi", isNsfw = true), + SingleLang("CopyPasteScan", "https://copypastescan.xyz", "es", overrideVersionCode = 1), + SingleLang("DarkYue Realm", "https://darkyuerealm.site/web", "pt-BR", pkgName = "darkyurealm", overrideVersionCode = 3), + SingleLang("Decadence Scans", "https://reader.decadencescans.com", "en", overrideVersionCode = 1), + SingleLang("DiamondFansub", "https://diamondfansub.com", "tr"), + SingleLang("Disaster Scans", "https://disasterscans.com", "en", overrideVersionCode = 1), + SingleLang("DoujinHentai", "https://doujinhentai.net", "es", isNsfw = true, overrideVersionCode = 1), + SingleLang("Dream Manga", "https://en.ruyamanga.com", "en", overrideVersionCode = 2), + SingleLang("Drope Scan", "https://dropescan.com", "pt-BR", overrideVersionCode = 2), + SingleLang("Esomanga", "http://esomanga.com", "tr"), + SingleLang("FDM Scan", "https://fdmscan.com", "pt-BR", overrideVersionCode = 2), + SingleLang("Free Manga", "https://freemanga.me", "en", isNsfw = true, overrideVersionCode = 1), + SingleLang("FreeWebtoonCoins", "https://freewebtooncoins.com", "en", overrideVersionCode = 1), + SingleLang("Fudido Scanlator", "https://fudidoscan.com", "pt-BR", isNsfw = true, overrideVersionCode = 1), + SingleLang("Fukushuu no Yuusha", "https://fny-scantrad.com", "fr", overrideVersionCode = 1), + SingleLang("Furio Scans", "https://furioscans.com", "pt-BR", overrideVersionCode = 2), + SingleLang("Fênix Scanlator", "https://fenixscanlator.xyz", "pt-BR", pkgName = "fenixscanlator", className = "FenixScanlator", overrideVersionCode = 1), + SingleLang("GalaxyDegenScans", "https://gdegenscans.xyz/", "en", overrideVersionCode = 1), + SingleLang("Glory Scans", "https://gloryscan.com", "pt-BR", isNsfw = true, overrideVersionCode = 1), + SingleLang("Graze Scans", "https://grazescans.com/", "en", overrideVersionCode = 1), + SingleLang("GuncelManga", "https://guncelmanga.com", "tr"), + SingleLang("Hayalistic", "https://hayalistic.com", "tr"), + SingleLang("Hentai20", "https://hentai20.com", "en", isNsfw = true), + SingleLang("Hentaidexy", "https://hentaidexy.com", "en", isNsfw = true), + SingleLang("Hero Manhua", "https://heromanhua.com", "en"), + SingleLang("Heroz Scanlation", "https://herozscans.com", "en", overrideVersionCode = 1), + SingleLang("Himera Fansub", "https://himera-fansub.com", "tr"), + SingleLang("Hiperdex", "https://hiperdex.com", "en", isNsfw = true, overrideVersionCode = 1), + SingleLang("Hscans", "https://hscans.com", "en", overrideVersionCode = 1), + SingleLang("Hunter Fansub", "https://hunterfansub.com", "es", overrideVersionCode = 1), + SingleLang("Hz Manga", "https://www.hzmangas.com", "es"), + SingleLang("Ichirin No Hana Yuri", "https://ichirinnohanayuri.com.br", "pt-BR", overrideVersionCode = 3), + SingleLang("Immortal Updates", "https://immortalupdates.com", "en", overrideVersionCode = 1), + SingleLang("Imperfect Comics", "https://imperfectcomic.com", "en"), + SingleLang("Império dos Otakus", "https://imperiodosotakus.tk", "pt-BR", className = "ImperioDosOtakus", overrideVersionCode = 1), + SingleLang("IsekaiScan.com", "https://isekaiscan.com", "en", className = "IsekaiScanCom", overrideVersionCode = 2), + SingleLang("IsekaiScanManga (unoriginal)", "https://isekaiscanmanga.com", "en", className = "IsekaiScanManga", overrideVersionCode = 1), + SingleLang("Its Your Right Manhua", "https://itsyourightmanhua.com/", "en", overrideVersionCode = 1), + SingleLang("JJutsuScans", "https://jjutsuscans.com", "en", overrideVersionCode = 1), + SingleLang("KisekiManga", "https://kisekimanga.com", "en", overrideVersionCode = 1), + SingleLang("Kissmanga.in", "https://kissmanga.in", "en", className= "KissmangaIn", overrideVersionCode = 1), + SingleLang("KlikManga", "https://klikmanga.com", "id", overrideVersionCode = 1), + SingleLang("Kombatch", "https://kombatch.com", "id"), + SingleLang("Kun Manga", "https://kunmanga.com", "en", overrideVersionCode = 1), + SingleLang("Levelerscans", "https://levelerscans.xyz", "en", overrideVersionCode = 1), + SingleLang("Leviatan Scans X", "https://xxx.leviatanscans.com", "en", isNsfw = true), + SingleLang("Lily Manga", "https://lilymanga.com", "en"), + SingleLang("Little Monster Scan", "https://littlemonsterscan.com.br", "pt-BR", overrideVersionCode = 2), + SingleLang("LovableSubs", "https://lovablesubs.com", "tr"), + SingleLang("MG Komik", "https://mgkomik.my.id", "id", overrideVersionCode = 1), + SingleLang("MMScans", "https://mm-scans.com/", "en", overrideVersionCode = 1), + SingleLang("Manga Action", "https://manga-action.com", "ar", overrideVersionCode = 1), + SingleLang("Manga Bin", "https://mangabin.com/", "en", overrideVersionCode = 1), + SingleLang("Manga Chill", "https://mangachill.com/", "en", overrideVersionCode = 1), + SingleLang("Manga Clash", "https://mangaclash.com", "en", overrideVersionCode = 1), + SingleLang("Manga Crab", "https://mangacrab.com", "es"), + SingleLang("Manga Diyari", "https://manga-diyari.com", "tr", overrideVersionCode = 1), + SingleLang("Manga Drop Out", "https://www.mangadropout.xyz", "id", isNsfw = true, overrideVersionCode = 1), + SingleLang("Manga Fenix", "https://manga-fenix.com", "es", overrideVersionCode = 1), + SingleLang("Manga Hentai", "https://mangahentai.me", "en", isNsfw = true, overrideVersionCode = 1), + SingleLang("Manga Kiss", "https://mangakiss.org", "en", overrideVersionCode = 1), + SingleLang("Manga Land Arabic", "https://mangalandarabic.com", "ar"), + SingleLang("Manga Lord", "https://mangalord.com", "en", overrideVersionCode = 1), + SingleLang("Manga Mitsu", "https://mangamitsu.com", "en", isNsfw = true, overrideVersionCode = 2), + SingleLang("Manga Nine", "https://manganine.com", "en", overrideVersionCode = 1), + SingleLang("Manga Read", "https://mangaread.co", "en", overrideVersionCode = 1), + SingleLang("Manga Rock Team", "https://mangarockteam.com", "en", overrideVersionCode = 1), + SingleLang("Manga Rocky", "https://mangarocky.com", "en", overrideVersionCode = 1), + SingleLang("Manga SY", "https://www.mangasy.com", "en", overrideVersionCode = 1), + SingleLang("Manga Starz", "https://mangastarz.com", "ar"), + SingleLang("Manga Too", "https://mangatoo.com/", "en", overrideVersionCode = 1), + SingleLang("Manga Weebs", "https://mangaweebs.in", "en", overrideVersionCode = 1), + SingleLang("Manga-Online.co", "https://www.manga-online.co", "th", className = "MangaOnlineCo"), + SingleLang("Manga-Scantrad", "https://manga-scantrad.net", "fr", className = "MangaScantrad", overrideVersionCode = 1), + SingleLang("Manga18 Fx", "https://manga18fx.com", "en", overrideVersionCode = 1), + SingleLang("Manga1st", "https://manga1st.com", "en", overrideVersionCode = 1), + SingleLang("Manga1st.online", "https://manga1st.online", "en", className = "MangaFirstOnline", overrideVersionCode = 1), + SingleLang("Manga347", "https://manga347.com", "en", overrideVersionCode = 3), + SingleLang("Manga3S", "https://manga3s.com", "en", overrideVersionCode = 1), + SingleLang("Manga68", "https://manga68.com", "en", overrideVersionCode = 1), + SingleLang("MangaBaz", "https://mangabaz.com", "tr"), + SingleLang("MangaBob", "https://mangabob.com", "en", overrideVersionCode = 1), + SingleLang("MangaCultivator", "https://mangacultivator.com", "en", overrideVersionCode = 1), + SingleLang("MangaDods", "https://www.mangadods.com", "en", overrideVersionCode = 2), + SingleLang("MangaEffect", "https://mangaeffect.com", "en", overrideVersionCode = 1), + SingleLang("MangaGreat", "https://mangagreat.com", "en", overrideVersionCode = 1), + SingleLang("MangaKitsune", "https://mangakitsune.com", "en", isNsfw = true, overrideVersionCode = 1), + SingleLang("MangaKomi", "https://mangakomi.com", "en", overrideVersionCode = 2), + SingleLang("MangaLazy", "https://mangalazy.com", "en", isNsfw = true, overrideVersionCode = 4), + SingleLang("MangaLionz", "https://mangalionz.com", "ar"), + SingleLang("MangaPL", "https://mangapl.com", "en", isNsfw = true), + SingleLang("MangaRave", "https://www.mangarave.com", "en", overrideVersionCode = 2), + SingleLang("MangaRead.org", "https://www.mangaread.org", "en", className = "MangaReadOrg", overrideVersionCode = 1), + SingleLang("MangaSco", "https://mangasco.com", "en", overrideVersionCode = 1), + SingleLang("MangaSpark", "https://mangaspark.com", "ar"), + SingleLang("MangaStein", "https://mangastein.com", "tr"), + SingleLang("MangaTK", "https://mangatk.com", "en"), + SingleLang("MangaTX", "https://mangatx.com", "en", overrideVersionCode = 1), + SingleLang("MangaTeca", "https://www.mangateca.com", "pt-BR", overrideVersionCode = 2), + SingleLang("MangaTuli", "https://mangatuli.com", "en", isNsfw = true, overrideVersionCode = 1), + SingleLang("MangaUS", "https://mangaus.xyz", "en", overrideVersionCode = 2), + SingleLang("MangaWT", "https://mangawt.com", "tr"), + SingleLang("MangaYaku", "https://mangayaku.com", "id", overrideVersionCode = 1), + SingleLang("MangaYami", "https://www.mangayami.club", "en", overrideVersionCode = 2), + SingleLang("Mangakik", "https://mangakik.com", "en"), + SingleLang("Mangas Origines", "https://mangas-origines.fr", "fr" , true, overrideVersionCode = 1), + SingleLang("Mangasushi", "https://mangasushi.net", "en", overrideVersionCode = 1), + SingleLang("Mangauptocats", "https://mangauptocats.online", "th"), + SingleLang("Mangazuki.me", "https://mangazuki.me", "en", className = "MangazukiMe", overrideVersionCode = 1), + SingleLang("Mangceh", "https://mangceh.com", "id", isNsfw = true, overrideVersionCode = 1), + SingleLang("Manhua ES", "https://manhuaes.com", "en", overrideVersionCode = 4), + SingleLang("Manhua Plus", "https://manhuaplus.com", "en", overrideVersionCode = 3), + SingleLang("Manhua SY", "https://www.manhuasy.com", "en", overrideVersionCode = 1), + SingleLang("ManhuaBox", "https://manhuabox.net", "en", overrideVersionCode = 1), + SingleLang("ManhuaFast", "https://manhuafast.com", "en", overrideVersionCode = 1), + SingleLang("ManhuaPro", "https://manhuapro.com", "en", overrideVersionCode = 1), + SingleLang("ManhuaUS", "https://manhuaus.com", "en", overrideVersionCode = 2), + SingleLang("Manhuaga", "https://manhuaga.com", "en", overrideVersionCode = 1), + SingleLang("Manhualo", "https://manhualo.com", "en", overrideVersionCode = 1), + SingleLang("Manhuas.net", "https://manhuas.net", "en", className = "Manhuasnet", overrideVersionCode = 1), + SingleLang("Manhwa Raw", "https://manhwaraw.com", "ko"), + SingleLang("Manhwa.club", "https://manhwa.club", "en", className="ManwhaClub", overrideVersionCode = 2), // wrong class name for backward compatibility + SingleLang("Manhwa18.org", "https://manhwa18.org", "en", isNsfw = true, className = "Manhwa18Org", overrideVersionCode = 1), + SingleLang("ManhwaNelo", "https://manhwanelo.com", "en"), + SingleLang("Manhwatop", "https://manhwatop.com", "en", overrideVersionCode = 1), + SingleLang("Manwahentai.me", "https://manhwahentai.me", "en", className = "ManwahentaiMe", isNsfw = true, overrideVersionCode = 1), + SingleLang("ManyToon", "https://manytoon.com", "en", overrideVersionCode = 1), + SingleLang("ManyToon.me", "https://manytoon.me", "en", className = "ManyToonMe", overrideVersionCode = 1), + SingleLang("ManyToonClub", "https://manytoon.club", "ko"), + SingleLang("ManyComic", "https://manycomic.com", "en", isNsfw = true), + SingleLang("Mark Scans", "https://markscans.online", "pt-BR", overrideVersionCode = 2), + SingleLang("Midnight Mess Scans", "https://midnightmess.org", "en", isNsfw = true, overrideVersionCode = 1), + SingleLang("Milftoon", "https://milftoon.xxx", "en", isNsfw = true, overrideVersionCode = 2), + SingleLang("Mixed Manga", "https://mixedmanga.com", "en", overrideVersionCode = 1), + SingleLang("Mode Scanlator", "https://modescanlator.com", "pt-BR", overrideVersionCode = 1), + SingleLang("Mortals Groove", "https://mortalsgroove.com", "en"), + SingleLang("Mystical Merries", "https://mysticalmerries.com", "en", overrideVersionCode = 1), + SingleLang("NeatManga", "https://neatmanga.com", "en", overrideVersionCode = 1), + SingleLang("NekoScan", "https://nekoscan.com", "en", overrideVersionCode = 1), + SingleLang("Neox Scanlator", "https://neoxscans.net", "pt-BR", overrideVersionCode = 5), + SingleLang("Night Comic", "https://www.nightcomic.com", "en", overrideVersionCode = 1), + SingleLang("Niji Translations", "https://niji-translations.com", "ar"), + SingleLang("Ninjavi", "https://ninjavi.com", "ar", overrideVersionCode = 1), + SingleLang("Nitro Scans", "https://nitroscans.com", "en"), + SingleLang("NovelMic", "https://novelmic.com", "en", overrideVersionCode = 1), + SingleLang("Off Scan", "https://offscan.top", "pt-BR", overrideVersionCode = 2), + SingleLang("OnManga", "https://onmanga.com", "en", overrideVersionCode = 1), + SingleLang("Origami Orpheans", "https://origami-orpheans.com.br", "pt-BR", overrideVersionCode = 2), + SingleLang("Paean Scans", "https://paeanscans.com", "en", overrideVersionCode = 1), + SingleLang("Painful Nightz Scan", "https://painfulnightzscan.com", "en"), + SingleLang("Platinum Crown", "https://platinumscans.com", "en", overrideVersionCode = 1), + SingleLang("Pojok Manga", "https://pojokmanga.com", "id", overrideVersionCode = 2), + SingleLang("PornComix", "https://www.porncomixonline.net", "en", isNsfw = true, overrideVersionCode = 1), + SingleLang("Pornwha", "https://pornwha.com", "en", isNsfw = true), + SingleLang("Projeto Scanlator", "https://projetoscanlator.com", "pt-BR", overrideVersionCode = 2), + SingleLang("QueensManga ملكات المانجا", "https://queensmanga.com", "ar", className = "QueensManga"), + SingleLang("Random Scan", "https://randomscan.online", "pt-BR", overrideVersionCode = 3), + SingleLang("Random Translations", "https://randomtranslations.com", "en", overrideVersionCode = 1), + SingleLang("Raw Mangas", "https://rawmangas.net", "ja", isNsfw = true, overrideVersionCode = 1), + SingleLang("RawDEX", "https://rawdex.net", "ko", isNsfw = true), + SingleLang("ReadManhua", "https://readmanhua.net", "en", overrideVersionCode = 2), + SingleLang("Renascence Scans (Renascans)", "https://new.renascans.com", "en", className = "RenaScans", overrideVersionCode = 1), + SingleLang("Reset Scans", "https://reset-scans.com", "en", overrideVersionCode = 3), + SingleLang("Rüya Manga", "https://www.ruyamanga.com", "tr", className = "RuyaManga"), + SingleLang("S2Manga", "https://s2manga.com", "en", overrideVersionCode = 1), + SingleLang("SISI GELAP", "https://sisigelap.club/", "id", overrideVersionCode = 1), + SingleLang("SamuraiScan", "https://samuraiscan.com", "es"), + SingleLang("Sani-Go", "https://sani-go.net", "ar", className = "SaniGo"), + SingleLang("Setsu Scans", "https://setsuscans.com", "en"), + SingleLang("Shield Manga", "https://shieldmanga.club", "en", overrideVersionCode = 2), + SingleLang("Shooting Star Scans", "https://shootingstarscans.xyz", "en", overrideVersionCode = 1), + SingleLang("ShoujoHearts", "https://shoujohearts.com", "en", overrideVersionCode = 2), + SingleLang("SiXiang Scans", "http://www.sixiangscans.com", "en", overrideVersionCode = 1), + SingleLang("Siyahmelek", "https://siyahmelek.com", "tr", isNsfw = true, overrideVersionCode = 1), + SingleLang("Skymanga", "https://skymanga.co", "en", overrideVersionCode = 1), + SingleLang("Sleeping Knight Scans", "https://skscans.com", "en", overrideVersionCode = 2), + SingleLang("Sleepy Translations", "https://sleepytranslations.com/", "en", overrideVersionCode = 1), + SingleLang("SocialWeebs", "https://socialweebs.in/", "en"), + SingleLang("SoloScanlation", "https://soloscanlation.site", "en"), + SingleLang("StageComics", "https://stagecomics.com", "pt-BR", overrideVersionCode = 2), + SingleLang("Sugar Babies", "https://sugarbscan.com", "en", overrideVersionCode = 1), + SingleLang("Sweet Time Scan", "https://sweetscan.net", "pt-BR", overrideVersionCode = 1), + SingleLang("TheFluffyHangoutGroup", "https://www.fluffyhangout.club", "en", overrideVersionCode = 1), + SingleLang("Three Queens Scanlator", "https://tqscan.com.br", "pt-BR", overrideVersionCode = 2), + SingleLang("Time Naight", "https://timenaight.com", "tr"), + SingleLang("ToonGod", "https://www.toongod.com", "en", overrideVersionCode = 1), + SingleLang("Toonily", "https://toonily.com", "en", isNsfw = true, overrideVersionCode = 2), + SingleLang("Toonily.net", "https://toonily.net", "en", isNsfw = true, className = "ToonilyNet", overrideVersionCode = 1), + SingleLang("Top Manhua", "https://topmanhua.com", "en", overrideVersionCode = 1), + SingleLang("Traducciones Amistosas", "https://nartag.com", "es", overrideVersionCode = 1), + SingleLang("TritiniaScans", "https://tritinia.com", "en", overrideVersionCode = 1), + SingleLang("TruyenTranhAudio.com", "https://truyentranhaudio.com", "vi", className = "TruyenTranhAudioCom"), + SingleLang("TruyenTranhAudio.online", "https://truyentranhaudio.online", "vi", className = "TruyenTranhAudioOnline"), + SingleLang("Tsundoku Traduções", "https://tsundokutraducoes.com.br", "pt-BR", pkgName = "tsundokutraducoes", className = "TsundokuTraducoes", overrideVersionCode = 2), + SingleLang("TuManga.net", "https://tumanga.net", "es", className = "TuMangaNet"), + SingleLang("Twilight Scans", "https://twilightscans.com", "en", overrideVersionCode = 1), + SingleLang("Türkçe Manga", "https://turkcemanga.com", "tr", className = "TurkceManga"), + SingleLang("Unemployed Scans", "https://unemployedscans.com", "en", overrideVersionCode = 1), + SingleLang("Uyuyan Balik", "https://uyuyanbalik.com/", "tr"), + SingleLang("Vanguard Bun", "https://vanguardbun.com/", "en", overrideVersionCode = 1), + SingleLang("Volkan Scans", "https://volkanscans.com", "en", overrideVersionCode = 1), + SingleLang("Wakamics", "https://wakamics.net", "en"), + SingleLang("Wakascan", "https://wakascan.com", "fr", overrideVersionCode = 1), + SingleLang("War Queen Scan", "https://wqscan.com.br", "pt-BR", overrideVersionCode = 3), + SingleLang("WebNovel", "https://webnovel.live", "en", className = "WebNovelLive", overrideVersionCode = 3), + SingleLang("WebToonily", "https://webtoonily.com", "en"), + SingleLang("Webtoon Hatti", "https://webtoonhatti.com/", "tr"), + SingleLang("WebtoonUK", "https://webtoon.uk", "en", overrideVersionCode = 1), + SingleLang("WebtoonXYZ", "https://www.webtoon.xyz", "en", overrideVersionCode = 1), + SingleLang("Winter Scan", "https://winterscan.com.br", "pt-BR", overrideVersionCode = 2), + SingleLang("Wonderland", "https://landwebtoons.site", "pt-BR", overrideVersionCode = 2), + SingleLang("WoopRead", "https://woopread.com", "en", overrideVersionCode = 1), + SingleLang("WuxiaWorld", "https://wuxiaworld.site", "en", overrideVersionCode = 1), + SingleLang("XuN Scans", "https://reader.xunscans.xyz", "en", overrideVersionCode = 1), + SingleLang("Yaoi Fan Clube", "https://yaoifanclube.com.br", "pt-BR", isNsfw = true, overrideVersionCode = 1), + SingleLang("Yaoi Manga", "https://yaoi.mobi", "en", isNsfw = true, overrideVersionCode = 1), + SingleLang("Yaoi Toshokan", "https://yaoitoshokan.net", "pt-BR", isNsfw = true, overrideVersionCode = 2), + SingleLang("Yuri Verso", "https://yuri.live", "pt-BR", overrideVersionCode = 2), + SingleLang("Zin Translator", "https://zinmanga.com", "en", overrideVersionCode = 1), + SingleLang("شبكة كونان العربية", "https://www.manga.detectiveconanar.com", "ar", className = "DetectiveConanAr", overrideVersionCode = 1), + SingleLang("مانجا العاشق", "https://3asq.org", "ar", className = "Manga3asq"), + SingleLang("مانجا العرب", "https://www.manhwa.ae", "ar", className = "ManhwaAe"), + SingleLang("مانجا عرب تيم Manga Arab Team", "https://mangaarabteam.com", "ar", className = "MangaArabTeam"), + SingleLang("مانجا ليك", "https://mangalek.com", "ar", className = "Mangalek"), + SingleLang("مانجا لينك", "https://mangalink.io", "ar", className = "MangaLinkio", overrideVersionCode = 1), + SingleLang("موقع لترجمة المانجا", "https://golden-manga.com", "ar", className = "GoldenManga"), ) companion object {