diff --git a/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..7e329254a Binary files /dev/null and b/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/mipmap-hdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..36f7338a4 Binary files /dev/null and b/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/mipmap-mdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..5fa635247 Binary files /dev/null and b/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..4895e69dc Binary files /dev/null and b/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..4b8b03dc6 Binary files /dev/null and b/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/web_hi_res_512.png new file mode 100644 index 000000000..beceff8e7 Binary files /dev/null and b/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/web_hi_res_512.png differ diff --git a/multisrc/overrides/mangathemesia/animatedglitchedcomics/src/AnimatedGlitchedComics.kt b/multisrc/overrides/mangathemesia/animatedglitchedcomics/src/AnimatedGlitchedComics.kt new file mode 100644 index 000000000..1491afa8d --- /dev/null +++ b/multisrc/overrides/mangathemesia/animatedglitchedcomics/src/AnimatedGlitchedComics.kt @@ -0,0 +1,16 @@ +package eu.kanade.tachiyomi.extension.en.animatedglitchedcomics + +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia +import eu.kanade.tachiyomi.network.interceptor.rateLimit +import okhttp3.OkHttpClient + +class AnimatedGlitchedComics : MangaThemesia( + "Animated Glitched Comics", + "https://agscomics.com", + "en", + mangaUrlDirectory = "/series", +) { + override val client: OkHttpClient = network.cloudflareClient.newBuilder() + .rateLimit(1) + .build() +} diff --git a/multisrc/overrides/mangathemesia/birdmanga/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/birdmanga/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..72713de03 Binary files /dev/null and b/multisrc/overrides/mangathemesia/birdmanga/res/mipmap-hdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/birdmanga/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/birdmanga/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..10f1b35e4 Binary files /dev/null and b/multisrc/overrides/mangathemesia/birdmanga/res/mipmap-mdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/birdmanga/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/birdmanga/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..d2098df6e Binary files /dev/null and b/multisrc/overrides/mangathemesia/birdmanga/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/birdmanga/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/birdmanga/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..b96521e53 Binary files /dev/null and b/multisrc/overrides/mangathemesia/birdmanga/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/birdmanga/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/birdmanga/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..99cf8c1b7 Binary files /dev/null and b/multisrc/overrides/mangathemesia/birdmanga/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/birdmanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/birdmanga/res/web_hi_res_512.png new file mode 100644 index 000000000..262e7393c Binary files /dev/null and b/multisrc/overrides/mangathemesia/birdmanga/res/web_hi_res_512.png differ diff --git a/multisrc/overrides/mangathemesia/birdmanga/src/BirdManga.kt b/multisrc/overrides/mangathemesia/birdmanga/src/BirdManga.kt new file mode 100644 index 000000000..63a332f16 --- /dev/null +++ b/multisrc/overrides/mangathemesia/birdmanga/src/BirdManga.kt @@ -0,0 +1,58 @@ +package eu.kanade.tachiyomi.extension.en.birdmanga + +import android.util.Base64 +import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia +import eu.kanade.tachiyomi.network.interceptor.rateLimit +import eu.kanade.tachiyomi.source.model.FilterList +import eu.kanade.tachiyomi.source.model.Page +import kotlinx.serialization.json.jsonArray +import kotlinx.serialization.json.jsonPrimitive +import okhttp3.OkHttpClient +import okhttp3.Request +import org.jsoup.nodes.Document +import java.lang.IllegalArgumentException + +class BirdManga : MangaThemesia( + "BirdManga", + "https://birdmanga.com", + "en", +) { + override val client: OkHttpClient = network.cloudflareClient.newBuilder() + .rateLimit(1) + .build() + + // Search + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + val request = super.searchMangaRequest(page, query, filters) + val url = request.url.newBuilder().apply { + removeAllQueryParameters("title") + if (query.isNotBlank()) { + removePathSegment(0) + addQueryParameter("s", query) + } + }.build() + + return request.newBuilder().url(url).build() + } + + // Images + + override fun pageListParse(document: Document): List { + val imagesData = document.select("script[src*=base64]").firstNotNullOfOrNull { + val data = String(Base64.decode(it.attr("src").substringAfter("base64,"), Base64.DEFAULT)) + JSON_IMAGE_LIST_REGEX.find(data)?.destructured?.toList()?.get(0) + } ?: return super.pageListParse(document) + + val imageList = try { + json.parseToJsonElement(imagesData).jsonArray + } catch (_: IllegalArgumentException) { + emptyList() + } + + val chapterUrl = document.location() + return imageList.mapIndexed { i, jsonEl -> + Page(i, chapterUrl, jsonEl.jsonPrimitive.content) + } + } +} 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 a26274d38..78df871b4 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 @@ -20,6 +20,7 @@ class MangaThemesiaGenerator : ThemeSourceGenerator { SingleLang("AiYuManga", "https://aiyumanhua.com", "es", overrideVersionCode = 8), SingleLang("Alceascan", "https://alceascan.my.id", "id"), SingleLang("Animated Glitched Scans", "https://anigliscans.xyz", "en", overrideVersionCode = 1), + SingleLang("Animated Glitched Comics", "https://agscomics.com", "en"), SingleLang("Arena Scans", "https://arenascans.net", "en", overrideVersionCode = 1), SingleLang("Arkham Scan", "https://arkhamscan.com", "pt-BR"), SingleLang("Arven Scans", "https://arvenscans.com", "en"), @@ -28,6 +29,7 @@ class MangaThemesiaGenerator : ThemeSourceGenerator { SingleLang("Banana-Scan", "https://banana-scan.com", "fr", className = "BananaScan", isNsfw = true), SingleLang("Beast Scans", "https://beastscans.net", "ar", overrideVersionCode = 1), SingleLang("Berserker Scan", "https://ragnascan.com", "es"), + SingleLang("BirdManga", "https://birdmanga.com", "en"), SingleLang("Boosei", "https://boosei.net", "id", overrideVersionCode = 2), SingleLang("Cartel de Manhwas", "https://carteldemanhwas.com", "es", overrideVersionCode = 5), SingleLang("Cosmic Scans", "https://cosmic-scans.com", "en", overrideVersionCode = 2),