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
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 6.7 KiB |
After Width: | Height: | Size: 9.4 KiB |
12
multisrc/overrides/mangathemesia/comicaso/src/Comicaso.kt
Normal 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")),
|
||||
)
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@ -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")),
|
||||
)
|
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 978 B |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 6.0 KiB |
@ -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")),
|
||||
)
|
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 17 KiB |
12
multisrc/overrides/mangathemesia/lamimanga/src/LamiManga.kt
Normal 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")),
|
||||
)
|
After Width: | Height: | Size: 7.4 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 39 KiB |
@ -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"
|
||||
}
|
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 9.7 KiB |
After Width: | Height: | Size: 14 KiB |
@ -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
|
||||
}
|
||||
}
|
23
multisrc/overrides/mangathemesia/mangamate/src/MangaMate.kt
Normal 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
|
||||
}
|
||||
}
|
12
multisrc/overrides/mangathemesia/mangamoon/src/MangaMoon.kt
Normal 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")),
|
||||
)
|
12
multisrc/overrides/mangathemesia/ntrmanga/src/NTRManga.kt
Normal 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")),
|
||||
)
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 8.0 KiB |
@ -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")),
|
||||
)
|
@ -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",
|
||||
)
|
@ -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),
|
||||
|