From 8f9c0d93f610998b756b65caf2ff4aa695813888 Mon Sep 17 00:00:00 2001 From: Draken <131387159+dragonx943@users.noreply.github.com> Date: Sun, 30 Mar 2025 16:41:12 +0700 Subject: [PATCH] [DocTruyen3Q] Fix chapter images + Improvements (#1621) --- .../parsers/site/wpcomics/vi/DocTruyen3Q.kt | 57 ++++++++++--------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/DocTruyen3Q.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/DocTruyen3Q.kt index 04b643a1..0fe44272 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/DocTruyen3Q.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/DocTruyen3Q.kt @@ -219,32 +219,37 @@ internal class DocTruyen3Q(context: MangaLoaderContext) : } override suspend fun getPages(chapter: MangaChapter): List { - val fullUrl = chapter.url.toAbsoluteUrl(domain) - val doc = webClient.httpGet(fullUrl).parseHtml() - return doc.select("div.page-chapter img").mapNotNull { img -> - val url = img.attrAsRelativeUrlOrNull("data-original") - ?: img.attrAsRelativeUrlOrNull("src") - ?: return@mapNotNull null - - if (url.contains( // Remove ads images - "sp1.jpg") || - url.contains("3q_fake") || - url.contains("sp2.jpg") || - url.contains("3qui5.jpg") || - url.contains("3q_top") || - url.contains("3q282.jpg") || - url.contains("3qui5_banner.jpg") - ) { - return@mapNotNull null - } - - MangaPage( - id = generateUid(url), - url = url, - preview = null, - source = source, - ) - } + val fullUrl = chapter.url.toAbsoluteUrl(domain) + val doc = webClient.httpGet(fullUrl).parseHtml() + + var urls = doc.select("div.page-chapter img") + .mapNotNull { it.attrAsRelativeUrlOrNull("data-original") } + .filterNot { filterAdsUrls(it) } + + if (urls.isEmpty()) { + urls = doc.select("div.page-chapter img") + .mapNotNull { it.attrAsRelativeUrlOrNull("src") } + .filterNot { filterAdsUrls(it) } + } + + return urls.map { url -> + MangaPage( + id = generateUid(url), + url = url, + preview = null, + source = source, + ) + } + } + + private fun filterAdsUrls(url: String): Boolean { + return url.contains("sp1.jpg") || + url.contains("3q_fake") || + url.contains("sp2.jpg") || + url.contains("3qui5.jpg") || + url.contains("3q_top") || + url.contains("3q282.jpg") || + url.contains("3qui5_banner.jpg") } private fun availableTags(): Set = setOf(