Clear out MangaThemesia source requests (#1079)

* Add Comicaso (#466)

* Add Comicsekai (#798)

* Add Dragon-Manga (#66)

* Add Iris Scanlator (#630)

* Add Lami-Manga (#74)

* Add Makimaaaaa (#73)

* Add Manga Efendisi (#197)

* Add Manga-Mate (#297)

* Add Manga-Moon (#63)

* Add NTR-Manga (#71)

* Make Thunder Scans multilang and add Thunder Scans EN (#812)

* ThunderScans: Update generator
This commit is contained in:
beerpsi 2024-02-07 16:20:18 +07:00 committed by Draff
parent 23e385128e
commit c8c4110a55
43 changed files with 201 additions and 13 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@ -0,0 +1,12 @@
package eu.kanade.tachiyomi.extension.id.comicaso
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import java.text.SimpleDateFormat
import java.util.Locale
class Comicaso : MangaThemesia(
"Comicaso",
"https://comicaso.com",
"id",
dateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("id")),
)

View File

@ -0,0 +1,27 @@
package eu.kanade.tachiyomi.extension.id.comicsekai
import android.util.Base64
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.source.model.Page
import kotlinx.serialization.json.jsonArray
import kotlinx.serialization.json.jsonPrimitive
import org.jsoup.nodes.Document
class Comicsekai : MangaThemesia("Comicsekai", "http://www.comicsekai.com", "id") {
override fun pageListParse(document: Document): List<Page> {
// "ts_reader.run({" in base64
val script = document.selectFirst("script[src^=data:text/javascript;base64,dHNfcmVhZGVyLnJ1bih7]")
?: return super.pageListParse(document)
val data = Base64.decode(script.attr("src").substringAfter("base64,"), Base64.DEFAULT).toString(Charsets.UTF_8)
val imageListJson = JSON_IMAGE_LIST_REGEX.find(data)?.destructured?.toList()?.get(0).orEmpty()
val imageList = try {
json.parseToJsonElement(imageListJson).jsonArray
} catch (_: IllegalArgumentException) {
emptyList()
}
return imageList.mapIndexed { i, jsonEl ->
Page(i, imageUrl = jsonEl.jsonPrimitive.content)
}
}
}

View File

@ -0,0 +1,12 @@
package eu.kanade.tachiyomi.extension.th.dragonmanga
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import java.text.SimpleDateFormat
import java.util.Locale
class DragonManga : MangaThemesia(
"DragonManga",
"https://www.dragon-manga.com",
"th",
dateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("th")),
)

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 978 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@ -0,0 +1,12 @@
package eu.kanade.tachiyomi.extension.pt.irisscanlator
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import java.text.SimpleDateFormat
import java.util.Locale
class IrisScanlator : MangaThemesia(
"Iris Scanlator",
"https://irisscanlator.com.br",
"pt-BR",
dateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("pt", "BR")),
)

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -0,0 +1,12 @@
package eu.kanade.tachiyomi.extension.th.lamimanga
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import java.text.SimpleDateFormat
import java.util.Locale
class LamiManga : MangaThemesia(
"Lami-Manga",
"https://www.lami-manga.com",
"th",
dateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("th")),
)

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 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: 39 KiB

View File

@ -0,0 +1,15 @@
package eu.kanade.tachiyomi.extension.th.makimaaaaa
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import java.text.SimpleDateFormat
import java.util.Locale
class Makimaaaaa : MangaThemesia(
"Makimaaaaa",
"https://makimaaaaa.com",
"th",
dateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("th")),
) {
override val seriesTypeSelector = ".tsinfo .imptdt:contains(ประเภท) a"
override val seriesStatusSelector = ".tsinfo .imptdt:contains(สถานะ) i"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,26 @@
package eu.kanade.tachiyomi.extension.tr.mangaefendisi
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.source.model.SManga
import java.text.SimpleDateFormat
import java.util.Locale
class MangaEfendisi : MangaThemesia(
"Manga Efendisi",
"https://mangaefendisi.net",
"tr",
dateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("tr")),
) {
override val seriesAuthorSelector = ".fmed b:contains(Yazar) + span"
override val seriesArtistSelector = ".fmed b:contains(Çizer) + span"
override val seriesTypeSelector = ".tsinfo .imptdt:contains(Tip) a"
override val seriesStatusSelector = ".tsinfo .imptdt:contains(Durum) i"
override fun String?.parseStatus(): Int = when {
this == null -> SManga.UNKNOWN
listOf("güncel", "devam ediyor").any { this.contains(it, ignoreCase = true) } -> SManga.ONGOING
this.contains("tamamlandı", ignoreCase = true) -> SManga.COMPLETED
this.contains("bırakıldı", ignoreCase = true) -> SManga.CANCELLED
else -> SManga.UNKNOWN
}
}

View File

@ -0,0 +1,23 @@
package eu.kanade.tachiyomi.extension.ja.mangamate
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.source.model.SManga
import java.text.SimpleDateFormat
import java.util.Locale
class MangaMate : MangaThemesia(
"漫画メイト",
"https://manga-mate.org",
"ja",
dateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("ja")),
) {
override val seriesAuthorSelector = ".fmed b:contains(作者) + span"
override val seriesStatusSelector = ".tsinfo .imptdt:contains(連載状況) i"
override fun String?.parseStatus(): Int = when (this) {
"連載中" -> SManga.ONGOING
"完結" -> SManga.COMPLETED
"人気" -> SManga.ON_HIATUS
else -> SManga.UNKNOWN
}
}

View File

@ -0,0 +1,12 @@
package eu.kanade.tachiyomi.extension.th.mangamoon
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import java.text.SimpleDateFormat
import java.util.Locale
class MangaMoon : MangaThemesia(
"Manga-Moon",
"https://manga-moons.net",
"th",
dateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("th")),
)

View File

@ -0,0 +1,12 @@
package eu.kanade.tachiyomi.extension.th.ntrmanga
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import java.text.SimpleDateFormat
import java.util.Locale
class NTRManga : MangaThemesia(
"NTR-Manga",
"https://www.ntr-manga.com",
"th",
dateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("th")),
)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

@ -1,12 +0,0 @@
package eu.kanade.tachiyomi.extension.ar.thunderscans
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import java.text.SimpleDateFormat
import java.util.Locale
class ThunderScans : MangaThemesia(
"Thunder Scans",
"https://thunderscans.com",
"ar",
dateFormat = SimpleDateFormat("MMM d, yyy", Locale("ar")),
)

View File

@ -0,0 +1,27 @@
package eu.kanade.tachiyomi.extension.all.thunderscans
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.source.SourceFactory
import java.text.SimpleDateFormat
import java.util.Locale
class ThunderScansFactory : SourceFactory {
override fun createSources() = listOf(
ThunderScansAR(),
ThunderScansEN(),
)
}
class ThunderScansAR : MangaThemesia(
"Thunder Scans",
"https://thunderscans.com",
"ar",
dateFormat = SimpleDateFormat("MMM d, yyy", Locale("ar")),
)
class ThunderScansEN : MangaThemesia(
"Thunder Scans",
"https://en-thunderscans.com",
"en",
mangaUrlDirectory = "/comics",
)

View File

@ -15,6 +15,7 @@ class MangaThemesiaGenerator : ThemeSourceGenerator {
override val sources = listOf(
MultiLang("Miau Scan", "https://miaucomics.org", listOf("es", "pt-BR"), overrideVersionCode = 2),
MultiLang("Thunder Scans", "https://thunderscans.com", listOf("ar", "en")),
SingleLang("Ainz Scans ID", "https://ainzscans.net", "id", overrideVersionCode = 1),
SingleLang("Alceascan", "https://alceascan.my.id", "id"),
SingleLang("Animated Glitched Comics", "https://agscomics.com", "en"),
@ -30,6 +31,8 @@ class MangaThemesiaGenerator : ThemeSourceGenerator {
SingleLang("BirdManga", "https://birdmanga.com", "en"),
SingleLang("Boosei", "https://boosei.net", "id", overrideVersionCode = 2),
SingleLang("Cartel de Manhwas", "https://carteldemanhwas.com", "es", overrideVersionCode = 6),
SingleLang("Comicaso", "https://comicaso.com", "id"),
SingleLang("Comicsekai", "http://www.comicsekai.com", "id"),
SingleLang("Constellar Scans", "https://constellarcomic.com", "en", isNsfw = true, overrideVersionCode = 16),
SingleLang("Cosmic Scans", "https://cosmic-scans.com", "en", overrideVersionCode = 2),
SingleLang("CosmicScans.id", "https://cosmicscans.id", "id", overrideVersionCode = 3, className = "CosmicScansID"),
@ -37,6 +40,7 @@ class MangaThemesiaGenerator : ThemeSourceGenerator {
SingleLang("Cypher Scans", "https://cypherscans.xyz", "en"),
SingleLang("Diskus Scan", "https://diskusscan.com", "pt-BR", overrideVersionCode = 9),
SingleLang("Dojing.net", "https://dojing.net", "id", isNsfw = true, className = "DojingNet"),
SingleLang("Dragon-Manga", "https://www.dragon-manga.com", "th", isNsfw = true, className = "DragonManga"),
SingleLang("Elarc Toon", "https://elarctoon.com", "en", className = "ElarcPage", overrideVersionCode = 2),
SingleLang("EnryuManga", "https://enryumanga.com", "en"),
SingleLang("Epsilon Scan", "https://epsilonscan.fr", "fr", isNsfw = true),
@ -54,6 +58,7 @@ class MangaThemesiaGenerator : ThemeSourceGenerator {
SingleLang("Imagine Scan", "https://imaginescan.com.br", "pt-BR", isNsfw = true, overrideVersionCode = 1),
SingleLang("InariManga", "https://inarimanga.com", "es", overrideVersionCode = 7),
SingleLang("Infernal Void Scans", "https://void-scans.com", "en", overrideVersionCode = 5),
SingleLang("Iris Scanlator", "https://irisscanlator.com.br", "pt-BR"),
SingleLang("Kai Scans", "https://kaiscans.org", "en", overrideVersionCode = 1),
SingleLang("Kanzenin", "https://kanzenin.info", "id", isNsfw = true, overrideVersionCode = 1),
SingleLang("KataKomik", "https://katakomik.my.id", "id", overrideVersionCode = 1),
@ -71,12 +76,15 @@ class MangaThemesiaGenerator : ThemeSourceGenerator {
SingleLang("Komiku.com", "https://komiku.com", "id", className = "KomikuCom"),
SingleLang("Kuma Scans (Kuma Translation)", "https://kumascans.com", "en", className = "KumaScans", overrideVersionCode = 1),
SingleLang("KumaPoi", "https://kumapoi.info", "id", isNsfw = true, overrideVersionCode = 3),
SingleLang("Lami-Manga", "https://www.lami-manga.com", "th", isNsfw = true, className = "LamiManga"),
SingleLang("Legacy Scans", "https://legacy-scans.com", "fr", pkgName = "flamescansfr"),
SingleLang("Lelmanga", "https://www.lelmanga.com", "fr"),
SingleLang("LianScans", "https://www.lianscans.my.id", "id", isNsfw = true),
SingleLang("Luminous Scans", "https://luminousscans.net", "en", overrideVersionCode = 1),
SingleLang("Lunar Scans", "https://lunarscan.org", "en", isNsfw = true, overrideVersionCode = 1),
SingleLang("Magus Manga", "https://magusmanga.com", "en", overrideVersionCode = 1),
SingleLang("Makimaaaaa", "https://makimaaaaa.com", "th", isNsfw = true),
SingleLang("Manga Efendisi", "https://mangaefendisi.net", "tr"),
SingleLang("Manga Flame", "https://mangaflame.org", "ar", overrideVersionCode = 1),
SingleLang("Manga Kings", "https://mangakings.com.tr", "tr"),
SingleLang("Manga Pro", "https://mangapro.pro", "ar"),
@ -93,6 +101,8 @@ class MangaThemesiaGenerator : ThemeSourceGenerator {
SingleLang("MangaWT", "https://mangawt.com", "tr", overrideVersionCode = 5),
SingleLang("Mangayaro", "https://www.mangayaro.id", "id", overrideVersionCode = 1),
SingleLang("MangaYu", "https://mangayu.id", "id"),
SingleLang("Manga-Mate", "https://manga-mate.org", "ja", isNsfw = true, className = "MangaMate"),
SingleLang("Manga-Moon", "https://manga-moons.net", "th", className = "MangaMoon"),
SingleLang("Mangás Chan", "https://mangaschan.net", "pt-BR", className = "MangasChan", overrideVersionCode = 3),
SingleLang("Mangás Online", "https://mangasonline.cc", "pt-BR", className = "MangasOnline"),
SingleLang("Manhwa Freak", "https://manhwa-freak.com", "en", overrideVersionCode = 3),
@ -113,6 +123,7 @@ class MangaThemesiaGenerator : ThemeSourceGenerator {
SingleLang("Ngomik", "https://ngomik.net", "id", overrideVersionCode = 2),
SingleLang("NIGHT SCANS", "https://nightscans.net", "en", isNsfw = true, className = "NightScans", overrideVersionCode = 3),
SingleLang("Noromax", "https://noromax.my.id", "id"),
SingleLang("NTR-Manga", "https://www.ntr-manga.com", "th", isNsfw = true, className = "NTRManga"),
SingleLang("Origami Orpheans", "https://origami-orpheans.com", "pt-BR", overrideVersionCode = 10),
SingleLang("Otsugami", "https://otsugami.id", "id"),
SingleLang("Ozul Scans", "https://kingofmanga.com", "ar", overrideVersionCode = 2),
@ -146,7 +157,6 @@ class MangaThemesiaGenerator : ThemeSourceGenerator {
SingleLang("Tempest Fansub", "https://tempestfansub.com", "tr", isNsfw = true),
SingleLang("Tenshi.id", "https://tenshi.id", "id", className = "TenshiId", pkgName = "masterkomik", overrideVersionCode = 4),
SingleLang("The Apollo Team", "https://theapollo.team", "en"),
SingleLang("Thunder Scans", "https://thunderscans.com", "ar"),
SingleLang("Tres Daos Scan", "https://tresdaos.com", "es"),
SingleLang("Tsundoku Traduções", "https://tsundoku.com.br", "pt-BR", className = "TsundokuTraducoes", overrideVersionCode = 9),
SingleLang("TukangKomik", "https://tukangkomik.id", "id", overrideVersionCode = 1),