diff --git a/multisrc/overrides/mangathemesia/nekoscans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/nekoscans/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..7e308a113 Binary files /dev/null and b/multisrc/overrides/mangathemesia/nekoscans/res/mipmap-hdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/nekoscans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/nekoscans/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..9e0ae1945 Binary files /dev/null and b/multisrc/overrides/mangathemesia/nekoscans/res/mipmap-mdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/nekoscans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/nekoscans/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..4ba03e12f Binary files /dev/null and b/multisrc/overrides/mangathemesia/nekoscans/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/nekoscans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/nekoscans/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..a7300125c Binary files /dev/null and b/multisrc/overrides/mangathemesia/nekoscans/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/nekoscans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/nekoscans/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..156e580cf Binary files /dev/null and b/multisrc/overrides/mangathemesia/nekoscans/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/nekoscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/nekoscans/res/web_hi_res_512.png new file mode 100644 index 000000000..605b6bb9d Binary files /dev/null and b/multisrc/overrides/mangathemesia/nekoscans/res/web_hi_res_512.png differ diff --git a/multisrc/overrides/mangathemesia/nekoscans/src/NekoScans.kt b/multisrc/overrides/mangathemesia/nekoscans/src/NekoScans.kt new file mode 100644 index 000000000..3162add58 --- /dev/null +++ b/multisrc/overrides/mangathemesia/nekoscans/src/NekoScans.kt @@ -0,0 +1,58 @@ +package eu.kanade.tachiyomi.extension.es.nekoscans + +import android.util.Base64 +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia +import eu.kanade.tachiyomi.network.interceptor.rateLimit +import eu.kanade.tachiyomi.source.model.Page +import kotlinx.serialization.json.jsonArray +import kotlinx.serialization.json.jsonPrimitive +import org.jsoup.nodes.Document +import java.lang.IllegalArgumentException +import java.text.SimpleDateFormat +import java.util.Locale +import java.util.concurrent.TimeUnit + +class NekoScans : MangaThemesia( + "NekoScans", + "https://nekoscans.com", + "es", + mangaUrlDirectory = "/proyecto", + dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("es")), +) { + override val client = super.client.newBuilder() + .rateLimit(2, 1, TimeUnit.SECONDS) + .build() + + override val seriesStatusSelector = ".tsinfo .imptdt:contains(estado) i" + + override fun pageListParse(document: Document): List { + val chapterUrl = document.location() + val htmlPages = document.select(pageSelector) + .filterNot { it.imgAttr().isEmpty() } + .mapIndexed { i, img -> Page(i, chapterUrl, img.imgAttr()) } + + countViews(document) + + // Some sites also loads pages via javascript + if (htmlPages.isNotEmpty()) { return htmlPages } + + var docString = document.toString() + + document.select("div#content > div.wrapper > script[src^=data:text/javascript;base64,]").forEach { script -> + val scriptText = String(Base64.decode(script.attr("src").substringAfter("base64,"), Base64.DEFAULT)) + docString += scriptText + } + + 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, chapterUrl, jsonEl.jsonPrimitive.content) + } + + return scriptPages + } +} diff --git a/multisrc/overrides/mangathemesia/tresdaosscan/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/tresdaosscan/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..03b497717 Binary files /dev/null and b/multisrc/overrides/mangathemesia/tresdaosscan/res/mipmap-hdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/tresdaosscan/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/tresdaosscan/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..54a461a16 Binary files /dev/null and b/multisrc/overrides/mangathemesia/tresdaosscan/res/mipmap-mdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/tresdaosscan/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/tresdaosscan/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..c241a3c2f Binary files /dev/null and b/multisrc/overrides/mangathemesia/tresdaosscan/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/tresdaosscan/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/tresdaosscan/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..89cfe45a4 Binary files /dev/null and b/multisrc/overrides/mangathemesia/tresdaosscan/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/tresdaosscan/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/tresdaosscan/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..5335e8f56 Binary files /dev/null and b/multisrc/overrides/mangathemesia/tresdaosscan/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/tresdaosscan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/tresdaosscan/res/web_hi_res_512.png new file mode 100644 index 000000000..314308be1 Binary files /dev/null and b/multisrc/overrides/mangathemesia/tresdaosscan/res/web_hi_res_512.png differ diff --git a/multisrc/overrides/mangathemesia/tresdaosscan/src/TresDaosScan.kt b/multisrc/overrides/mangathemesia/tresdaosscan/src/TresDaosScan.kt new file mode 100644 index 000000000..78dd9cc99 --- /dev/null +++ b/multisrc/overrides/mangathemesia/tresdaosscan/src/TresDaosScan.kt @@ -0,0 +1,20 @@ +package eu.kanade.tachiyomi.extension.es.tresdaosscan + +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia +import eu.kanade.tachiyomi.network.interceptor.rateLimit +import java.text.SimpleDateFormat +import java.util.Locale +import java.util.concurrent.TimeUnit + +class TresDaosScan : MangaThemesia( + "Tres Daos Scan", + "https://tresdaos.com", + "es", + dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("es")), +) { + override val client = super.client.newBuilder() + .rateLimit(2, 1, TimeUnit.SECONDS) + .build() + + override val seriesStatusSelector = ".tsinfo .imptdt:contains(estado) i" +} diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt index 272233f44..0534008ac 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt @@ -109,6 +109,7 @@ class MangaThemesiaGenerator : ThemeSourceGenerator { SingleLang("MirrorDesu", "https://mirrordesu.me", "id", isNsfw = true), SingleLang("Natsu", "https://natsu.id", "id"), SingleLang("Nekomik", "https://nekomik.me", "id", overrideVersionCode = 2), + SingleLang("NekoScans", "https://nekoscans.com", "es", isNsfw = true), SingleLang("Ngomik", "https://ngomik.net", "id", overrideVersionCode = 2), SingleLang("NIGHT SCANS", "https://nightscans.net", "en", isNsfw = true, className = "NightScans", overrideVersionCode = 3), SingleLang("Nocturnal Scans", "https://nocturnalscans.com", "en", overrideVersionCode = 1), @@ -153,6 +154,7 @@ class MangaThemesiaGenerator : ThemeSourceGenerator { SingleLang("TenkaiScan", "https://tenkaiscan.net", "es", isNsfw = true), SingleLang("Tenshi.id", "https://tenshi.id", "id", className = "TenshiId", pkgName = "masterkomik", overrideVersionCode = 4), SingleLang("The Apollo Team", "https://theapollo.team", "en"), + 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), SingleLang("TurkToon", "https://turktoon.com", "tr"),