some new multisrc sources (#17539)

* HentaiXDickgirl

* OPSCANS

* Grabber zone

* Shiba Manga

* Galaxy Manga

* Lint my beloved

* I should run the generator again after copying changes from generated-src

* PotatoManga

* Beasts Scans

* reorder and change lang to en for OPSCANS

* Shiba Manga: enable genre fetching

* Vex Manga

* MangaLeks

* Comic Arab

* Comic Arab: fix date format

* Area Manga

* Manga Rose

* Falcon Manga

* BirdToon

* requested changes

Co-authored-by: Vetle Ledaal <13540478+vetleledaal@users.noreply.github.com>

---------

Co-authored-by: Vetle Ledaal <13540478+vetleledaal@users.noreply.github.com>
Co-authored-by: arkon <arkon@users.noreply.github.com>
This commit is contained in:
AwkwardPeak7 2023-08-19 01:49:27 +05:00 committed by GitHub
parent 2fdfc8ecec
commit 66dc675055
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
99 changed files with 364 additions and 2 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

View File

@ -0,0 +1,15 @@
package eu.kanade.tachiyomi.extension.id.birdtoon
import eu.kanade.tachiyomi.multisrc.madara.Madara
class BirdToon : Madara("BirdToon", "https://birdtoon.net", "id") {
override val mangaSubString = "komik"
override fun searchPage(page: Int): String {
return if (page > 1) {
"page/$page/"
} else {
""
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 KiB

View File

@ -0,0 +1,20 @@
package eu.kanade.tachiyomi.extension.ar.comicarab
import eu.kanade.tachiyomi.multisrc.madara.Madara
import java.text.SimpleDateFormat
import java.util.Locale
class ComicArab : Madara(
"كوميك العرب",
"https://comicarab.com",
"ar",
dateFormat = SimpleDateFormat("dd MMMM، yyyy", Locale("ar")),
) {
override fun searchPage(page: Int): String {
return if (page > 1) {
"page/$page/"
} else {
""
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@ -0,0 +1,22 @@
package eu.kanade.tachiyomi.extension.ar.falconmanga
import eu.kanade.tachiyomi.multisrc.madara.Madara
import java.text.SimpleDateFormat
import java.util.Locale
class FalconManga : Madara(
"فالكون مانجا",
"https://falconmanga.com",
"ar",
dateFormat = SimpleDateFormat("dd MMMM، yyyy", Locale("ar")),
) {
override val useNewChapterEndpoint = true
override fun searchPage(page: Int): String {
return if (page > 1) {
"page/$page/"
} else {
""
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

View File

@ -0,0 +1,30 @@
package eu.kanade.tachiyomi.extension.all.grabberzone
import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.source.model.SChapter
import org.jsoup.nodes.Element
import java.text.SimpleDateFormat
import java.util.Locale
class GrabberZone : Madara(
"Grabber Zone",
"https://grabber.zone",
"all",
SimpleDateFormat("dd.MM.yyyy", Locale.ENGLISH),
) {
override val mangaSubString = "comics"
override fun searchPage(page: Int): String {
return if (page > 1) {
"page/$page/"
} else {
""
}
}
override fun chapterFromElement(element: Element): SChapter {
return super.chapterFromElement(element).apply {
name = element.selectFirst("a + a")!!.text()
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 449 KiB

View File

@ -0,0 +1,23 @@
package eu.kanade.tachiyomi.extension.en.hentaixdickgirl
import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.model.UpdateStrategy
import org.jsoup.nodes.Document
class HentaiXDickgirl : Madara("HentaiXDickgirl", "https://hentaixdickgirl.com", "en") {
override fun searchPage(page: Int): String {
return if (page > 1) {
"page/$page/"
} else {
""
}
}
override fun mangaDetailsParse(document: Document): SManga {
return super.mangaDetailsParse(document).apply {
update_strategy = UpdateStrategy.ONLY_FETCH_ONCE
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

View File

@ -0,0 +1,20 @@
package eu.kanade.tachiyomi.extension.ar.mangaleks
import eu.kanade.tachiyomi.multisrc.madara.Madara
import java.text.SimpleDateFormat
import java.util.Locale
class MangaLeks : Madara(
"مانجا ليكس",
"https://mangaleks.com",
"ar",
SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH),
) {
override fun searchPage(page: Int): String {
return if (page > 1) {
"page/$page/"
} else {
""
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

View File

@ -0,0 +1,20 @@
package eu.kanade.tachiyomi.extension.ar.mangarose
import eu.kanade.tachiyomi.multisrc.madara.Madara
import java.text.SimpleDateFormat
import java.util.Locale
class MangaRose : Madara(
"Manga Rose",
"https://mangarose.net",
"ar",
dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("ar")),
) {
override fun searchPage(page: Int): String {
return if (page > 1) {
"page/$page/"
} else {
""
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

View File

@ -0,0 +1,23 @@
package eu.kanade.tachiyomi.extension.en.shibamanga
import eu.kanade.tachiyomi.multisrc.madara.Madara
import java.text.SimpleDateFormat
import java.util.Locale
class ShibaManga : Madara(
"Shiba Manga",
"https://shibamanga.com",
"en",
SimpleDateFormat("MM/dd/yyyy", Locale.US),
) {
override val filterNonMangaItems = false
override val useNewChapterEndpoint = true
override fun searchPage(page: Int): String {
return if (page > 1) {
"page/$page/"
} else {
""
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View File

@ -0,0 +1,30 @@
package eu.kanade.tachiyomi.extension.ar.areamanga
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.source.model.SManga
import java.text.SimpleDateFormat
import java.util.Locale
class AreaManga : MangaThemesia(
"أريا مانجا",
"https://www.areascans.net",
"ar",
dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("ar")),
) {
override val seriesArtistSelector =
".tsinfo .imptdt:contains(الرسام) i, ${super.seriesArtistSelector}"
override val seriesAuthorSelector =
".tsinfo .imptdt:contains(المؤلف) i, ${super.seriesAuthorSelector}"
override val seriesStatusSelector =
".tsinfo .imptdt:contains(الحالة) i, ${super.seriesStatusSelector}"
override val seriesTypeSelector =
".tsinfo .imptdt:contains(النوع) i, ${super.seriesTypeSelector}"
override fun String?.parseStatus() = when {
this == null -> SManga.UNKNOWN
this.contains("مستمر", ignoreCase = true) -> SManga.ONGOING
this.contains("مكتمل", ignoreCase = true) -> SManga.COMPLETED
this.contains("متوقف", ignoreCase = true) -> SManga.ON_HIATUS
else -> SManga.UNKNOWN
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

View File

@ -0,0 +1,30 @@
package eu.kanade.tachiyomi.extension.ar.beastscans
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.source.model.SManga
import java.text.SimpleDateFormat
import java.util.Locale
class BeastScans : MangaThemesia(
"Beast Scans",
"https://beast-scans.com",
"ar",
dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("ar")),
) {
override val seriesArtistSelector =
".tsinfo .imptdt:contains(الرسام) i, ${super.seriesArtistSelector}"
override val seriesAuthorSelector =
".tsinfo .imptdt:contains(المؤلف) i, ${super.seriesAuthorSelector}"
override val seriesStatusSelector =
".tsinfo .imptdt:contains(الحالة) i, ${super.seriesStatusSelector}"
override val seriesTypeSelector =
".tsinfo .imptdt:contains(النوع) i, ${super.seriesTypeSelector}"
override fun String?.parseStatus() = when {
this == null -> SManga.UNKNOWN
this.contains("مستمر", ignoreCase = true) -> SManga.ONGOING
this.contains("مكتمل", ignoreCase = true) -> SManga.COMPLETED
this.contains("متوقف", ignoreCase = true) -> SManga.ON_HIATUS
else -> SManga.UNKNOWN
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

View File

@ -0,0 +1,18 @@
package eu.kanade.tachiyomi.extension.ar.galaxymanga
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import java.text.SimpleDateFormat
import java.util.Locale
class GalaxyManga : MangaThemesia(
"جالاكسي مانجا",
"https://galaxymanga.org",
"ar",
dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("ar")),
) {
override val seriesArtistSelector = ".infotable tr:contains(الرسام) td:last-child, ${super.seriesArtistSelector}"
override val seriesAuthorSelector = ".infotable tr:contains(المؤلف) td:last-child, ${super.seriesAuthorSelector}"
override val seriesStatusSelector = ".infotable tr:contains(الحالة) td:last-child, ${super.seriesStatusSelector}"
override val seriesTypeSelector = ".infotable tr:contains(النوع) td:last-child, ${super.seriesTypeSelector}"
override val seriesAltNameSelector = ".infotable tr:contains(الأسماء الثانوية) td:last-child, ${super.seriesAltNameSelector}"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

View File

@ -0,0 +1,23 @@
package eu.kanade.tachiyomi.extension.ar.potatomanga
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import java.text.SimpleDateFormat
import java.util.Locale
class PotatoManga : MangaThemesia(
"PotatoManga",
"https://potatomanga.xyz",
"ar",
dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("ar")),
) {
override val seriesArtistSelector =
".infotable tr:contains(الرسام) td:last-child, ${super.seriesArtistSelector}"
override val seriesAuthorSelector =
".infotable tr:contains(المؤلف) td:last-child, ${super.seriesAuthorSelector}"
override val seriesStatusSelector =
".infotable tr:contains(الحالة) td:last-child, ${super.seriesStatusSelector}"
override val seriesTypeSelector =
".infotable tr:contains(النوع) td:last-child, ${super.seriesTypeSelector}"
override val seriesAltNameSelector =
".infotable tr:contains(الأسماء الثانوية) td:last-child, ${super.seriesAltNameSelector}"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

View File

@ -0,0 +1,74 @@
package eu.kanade.tachiyomi.extension.ar.vexmanga
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga
import kotlinx.serialization.json.jsonArray
import kotlinx.serialization.json.jsonPrimitive
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import java.lang.IllegalArgumentException
import java.util.Calendar
class VexManga : MangaThemesia(
"فيكس مانجا",
"https://vexmanga.net",
"ar",
) {
override fun searchMangaSelector() = ".listupd .latest-series, ${super.searchMangaSelector()}"
override val sendViewCount = false
override fun chapterListSelector() = ".ulChapterList > a, ${super.chapterListSelector()}"
override val seriesArtistSelector =
".tsinfo .imptdt:contains(الرسام) i, ${super.seriesArtistSelector}"
override val seriesAuthorSelector =
".tsinfo .imptdt:contains(المؤلف) i, ${super.seriesAuthorSelector}"
override val seriesStatusSelector =
".tsinfo .imptdt:contains(الحالة) i, ${super.seriesStatusSelector}"
override val seriesTypeSelector =
".tsinfo .imptdt:contains(النوع) i, ${super.seriesTypeSelector}"
override fun String?.parseStatus() = when {
this == null -> SManga.UNKNOWN
this.contains("مستمر", ignoreCase = true) -> SManga.ONGOING
this.contains("مكتمل", ignoreCase = true) -> SManga.COMPLETED
this.contains("متوقف", ignoreCase = true) -> SManga.ON_HIATUS
else -> SManga.UNKNOWN
}
override fun chapterFromElement(element: Element) = SChapter.create().apply {
setUrlWithoutDomain(element.attr("href"))
name = element.select(".chapternum").text()
date_upload = element.select(".chapterdate").text().parseRelativeDate()
}
private fun String.parseRelativeDate(): Long {
val number = Regex("""(\d+)""").find(this)?.value?.toIntOrNull() ?: return 0
val cal = Calendar.getInstance()
return when {
this.contains("أيام", true) -> cal.apply { add(Calendar.DAY_OF_MONTH, -number) }.timeInMillis
this.contains("ساعة", true) -> cal.apply { add(Calendar.HOUR, -number) }.timeInMillis
this.contains("دقائق", true) -> cal.apply { add(Calendar.MINUTE, -number) }.timeInMillis
this.contains("أسبوعين", true) -> cal.apply { add(Calendar.DAY_OF_MONTH, -number * 7) }.timeInMillis
this.contains("أشهر", true) -> cal.apply { add(Calendar.MONTH, -number) }.timeInMillis
else -> 0
}
}
override fun pageListParse(document: Document): List<Page> {
val docString = document.toString()
val imageListJson = JSON_IMAGE_LIST_REGEX.find(docString)?.destructured?.toList()?.get(0).orEmpty()
val imageList = try {
json.parseToJsonElement(imageListJson).jsonArray
} catch (_: IllegalArgumentException) {
emptyList()
}
val scriptPages = imageList.mapIndexed { i, jsonEl ->
Page(i, "", jsonEl.jsonPrimitive.content)
}
return scriptPages
}
}

View File

@ -51,6 +51,7 @@ class MadaraGenerator : ThemeSourceGenerator {
SingleLang("BestManga", "https://bestmanga.club", "ru", overrideVersionCode = 1),
SingleLang("BestManhua", "https://bestmanhua.com", "en", overrideVersionCode = 2),
SingleLang("Bichen Traduções", "https://bichentraducoes.com", "pt-BR", isNsfw = true, className = "BichenTraducoes"),
SingleLang("BirdToon", "https://birdtoon.net", "id", isNsfw = true),
SingleLang("BL Manhwa Club", "https://blmanhwa.club", "pt-BR", isNsfw = true, className = "BlManhwaClub", overrideVersionCode = 2),
SingleLang("BlogManga", "https://blogmanga.net", "en"),
SingleLang("Blue Solo", "https://www1.bluesolo.org", "fr", isNsfw = true),
@ -117,6 +118,7 @@ class MadaraGenerator : ThemeSourceGenerator {
SingleLang("Gekkou Scans", "https://gekkou.com.br", "pt-BR", isNsfw = true, pkgName = "gekkouscan"),
SingleLang("Glory Manga", "https://glorymanga.com", "tr"),
SingleLang("Goof Fansub", "https://gooffansub.com", "pt-BR", isNsfw = true),
SingleLang("Grabber Zone", "https://grabber.zone", "all"),
SingleLang("GuncelManga", "https://guncelmanga.com", "tr", overrideVersionCode = 1),
SingleLang("Hreads", "https://hreads.net", "en", isNsfw = true, overrideVersionCode = 1),
SingleLang("Hades no Fansub Hentai", "https://h.mangareaderpro.com", "es", isNsfw = true),
@ -135,6 +137,7 @@ class MadaraGenerator : ThemeSourceGenerator {
SingleLang("HentaiWebtoon", "https://hentaiwebtoon.com", "en", isNsfw = true, overrideVersionCode = 1),
SingleLang("HentaiXComic", "https://hentaixcomic.com", "en", isNsfw = true),
SingleLang("HentaiXYuri", "https://hentaixyuri.com", "en", isNsfw = true),
SingleLang("HentaiXDickgirl", "https://hentaixdickgirl.com", "en", isNsfw = true),
SingleLang("HentaiZone", "https://hentaizone.xyz", "fr", isNsfw = true),
SingleLang("HerenScan", "https://herenscan.com", "es"),
SingleLang("HipercooL", "https://hipercool.xyz", "pt-BR", isNsfw = true, className = "Hipercool"),
@ -207,6 +210,7 @@ class MadaraGenerator : ThemeSourceGenerator {
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 Rose", "https://mangarose.net", "ar"),
SingleLang("Manga Starz", "https://mangalike.org", "ar", overrideVersionCode = 4),
SingleLang("Manga Too", "https://mangatoo.com", "en", overrideVersionCode = 1),
SingleLang("Manga Weebs", "https://mangaweebs.in", "en", overrideVersionCode = 7),
@ -383,6 +387,7 @@ class MadaraGenerator : ThemeSourceGenerator {
SingleLang("Sensaina Yuri", "https://sensainayuri.dropescan.com", "pt-BR", isNsfw = true, overrideVersionCode = 2),
SingleLang("ShavelProiection", "https://www.shavelproiection.com", "it", true),
SingleLang("Shayami", "https://shayami.com", "es"),
SingleLang("Shiba Manga", "https://shibamanga.com", "en"),
SingleLang("Shield Manga", "https://shieldmanga.io", "en", overrideVersionCode = 3),
SingleLang("Shimada Scans", "https://shimadascans.com", "en"),
SingleLang("Shinigami", "https://shinigami.id", "id", overrideVersionCode = 1),
@ -472,7 +477,10 @@ class MadaraGenerator : ThemeSourceGenerator {
SingleLang("مانجا العاشق", "https://3asq.org", "ar", className = "Manga3asq", overrideVersionCode = 2),
SingleLang("مانجا عرب تيم Manga Arab Team", "https://mangaarbteam.com", "ar", className = "MangaArabTeam", overrideVersionCode = 1),
SingleLang("مانجا ليك", "https://mangalek.com", "ar", className = "Mangalek", overrideVersionCode = 2),
SingleLang("مانجا ليكس", "https://mangaleks.com", "ar", className = "MangaLeks"),
SingleLang("مانجا لينك", "https://mangalink.io", "ar", className = "MangaLinkio", overrideVersionCode = 3),
SingleLang("كوميك العرب", "https://comicarab.com", "ar", isNsfw = true, className = "ComicArab"),
SingleLang("فالكون مانجا", "https://falconmanga.com", "ar", className = "FalconManga"),
SingleLang("巴卡漫画", "https://bakamh.com", "zh", isNsfw = true, className = "Bakamh"),
)

View File

@ -21,9 +21,10 @@ class MangaThemesiaGenerator : ThemeSourceGenerator {
SingleLang("Animated Glitched Scans", "https://anigliscans.com", "en"),
SingleLang("Arena Scans", "https://arenascans.net", "en", overrideVersionCode = 1),
SingleLang("Azure Scans", "https://azuremanga.com", "en", overrideVersionCode = 1),
SingleLang("Banana-Scan", "https://banana-scan.com", "fr", className = "BananaScan", isNsfw = true),
SingleLang("Boosei", "https://boosei.net", "id", overrideVersionCode = 2),
SingleLang("Babel Wuxia", "https://babelwuxia.com", "en", overrideVersionCode = 1),
SingleLang("Banana-Scan", "https://banana-scan.com", "fr", className = "BananaScan", isNsfw = true),
SingleLang("Beast Scans", "https://beast-scans.com", "ar"),
SingleLang("Boosei", "https://boosei.net", "id", overrideVersionCode = 2),
SingleLang("Cartel de Manhwas", "https://carteldemanhwas.com", "es", overrideVersionCode = 5),
SingleLang("Cosmic Scans", "https://cosmicscans.com", "en", overrideVersionCode = 1),
SingleLang("CosmicScans.id", "https://cosmicscans.id", "id", overrideVersionCode = 1, className = "CosmicScansID"),
@ -93,12 +94,14 @@ class MangaThemesiaGenerator : ThemeSourceGenerator {
SingleLang("NIGHT SCANS", "https://nightscans.org", "en", isNsfw = true, className = "NightScans", overrideVersionCode = 1),
SingleLang("Nocturnal Scans", "https://nocturnalscans.com", "en", overrideVersionCode = 1),
SingleLang("Noromax", "https://noromax.my.id", "id"),
SingleLang("OPSCANS", "https://opscans.com", "all"),
SingleLang("Origami Orpheans", "https://origami-orpheans.com.br", "pt-BR", overrideVersionCode = 9),
SingleLang("Ozul Scans", "https://ozulscans.com", "ar"),
SingleLang("Phantom Scans", "https://phantomscans.com", "en", overrideVersionCode = 1),
SingleLang("PhenixScans", "https://phenixscans.fr", "fr", className = "PhenixScans", overrideVersionCode = 1),
SingleLang("Pi Scans", "https://piscans.in", "id", overrideVersionCode = 1),
SingleLang("PMScans", "https://rackusreads.com", "en", overrideVersionCode = 3),
SingleLang("PotatoManga", "https://potatomanga.xyz", "ar"),
SingleLang("Queen Scans", "https://queenscans.com", "en"),
SingleLang("Raiki Scan", "https://raikiscan.com", "es"),
SingleLang("Raven Scans", "https://ravenscans.com", "en", overrideVersionCode = 1),
@ -130,6 +133,9 @@ class MangaThemesiaGenerator : ThemeSourceGenerator {
SingleLang("xCaliBR Scans", "https://xcalibrscans.com", "en", overrideVersionCode = 4),
SingleLang("Zahard", "https://zahard.xyz", "en"),
SingleLang("สดใสเมะ", "https://www.xn--l3c0azab5a2gta.com", "th", isNsfw = true, className = "Sodsaime", overrideVersionCode = 1),
SingleLang("أريا مانجا", "https://www.areascans.net", "ar", className = "AreaManga"),
SingleLang("جالاكسي مانجا", "https://galaxymanga.org", "ar", className = "GalaxyManga"),
SingleLang("فيكس مانجا", "https://vexmanga.net", "ar", className = "VexManga"),
)
companion object {