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>
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 89 KiB |
|
@ -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 {
|
||||
""
|
||||
}
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 8.0 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 259 KiB |
|
@ -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 {
|
||||
""
|
||||
}
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 7.3 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 48 KiB |
|
@ -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 {
|
||||
""
|
||||
}
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 8.8 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 174 KiB |
|
@ -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()
|
||||
}
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 449 KiB |
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 8.5 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 139 KiB |
|
@ -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 {
|
||||
""
|
||||
}
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 9.5 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 71 KiB |
|
@ -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 {
|
||||
""
|
||||
}
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 67 KiB |
|
@ -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 {
|
||||
""
|
||||
}
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 7.6 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 80 KiB |
|
@ -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
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 122 KiB |
|
@ -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
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 8.3 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 120 KiB |
|
@ -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}"
|
||||
}
|
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 7.3 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 9.9 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 221 KiB |
|
@ -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}"
|
||||
}
|
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 7.9 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 220 KiB |
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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"),
|
||||
)
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|