From bacd296e4e8d42e22417f6980f37ea64eae433f7 Mon Sep 17 00:00:00 2001 From: Luqman <16263232+Riztard@users.noreply.github.com> Date: Sun, 19 Oct 2025 16:17:24 +0700 Subject: [PATCH] Manga Demon: filter ads, loosen & separate thumbnail ratelimit (#11144) * Manga Demon: filter ads, loosen ratelimit * Manga Demon: separate thumbnail ratelimit --- src/en/mangademon/build.gradle | 2 +- .../extension/en/mangademon/MangaDemon.kt | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/en/mangademon/build.gradle b/src/en/mangademon/build.gradle index 77f961200..f0ab94909 100644 --- a/src/en/mangademon/build.gradle +++ b/src/en/mangademon/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Manga Demon' extClass = '.MangaDemon' - extVersionCode = 16 + extVersionCode = 17 isNsfw = false } diff --git a/src/en/mangademon/src/eu/kanade/tachiyomi/extension/en/mangademon/MangaDemon.kt b/src/en/mangademon/src/eu/kanade/tachiyomi/extension/en/mangademon/MangaDemon.kt index a319f702e..18f6e1846 100644 --- a/src/en/mangademon/src/eu/kanade/tachiyomi/extension/en/mangademon/MangaDemon.kt +++ b/src/en/mangademon/src/eu/kanade/tachiyomi/extension/en/mangademon/MangaDemon.kt @@ -10,6 +10,7 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.Interceptor import okhttp3.Request import okhttp3.Response import org.jsoup.nodes.Document @@ -30,9 +31,23 @@ class MangaDemon : ParsedHttpSource() { override val baseUrl = "https://demonicscans.org" override val client = network.cloudflareClient.newBuilder() - .rateLimit(1) + .addInterceptor(::thumbnailInterceptor) + .rateLimit(2) .build() + private val thumbnailClient = network.cloudflareClient.newBuilder() + .rateLimit(6) + .build() + + private fun thumbnailInterceptor(chain: Interceptor.Chain): Response { + val request = chain.request() + return if (request.url.toString().contains("images/thumbnails")) { + thumbnailClient.newCall(request).execute() + } else { + chain.proceed(request) + } + } + override fun headersBuilder() = super.headersBuilder() .add("Referer", "$baseUrl/") @@ -56,7 +71,7 @@ class MangaDemon : ParsedHttpSource() { override fun latestUpdatesNextPageSelector() = popularMangaNextPageSelector() - override fun latestUpdatesSelector() = "div#updates-container > div.updates-element" + override fun latestUpdatesSelector() = "div#updates-container > div.updates-element:not(:has(.toffee-badge))" override fun latestUpdatesFromElement(element: Element) = SManga.create().apply { with(element.selectFirst("div.updates-element-info")!!) {