From 6799d79754b378f74f21b1f7ddee8448c9829eec Mon Sep 17 00:00:00 2001 From: dragonx943 Date: Mon, 17 Mar 2025 19:24:42 +0700 Subject: [PATCH 1/2] [DocTruyen3Q] Fix chapter images --- .../kotatsu/parsers/site/wpcomics/vi/DocTruyen3Q.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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 f651b4b4..5711b949 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 @@ -222,7 +222,14 @@ internal class DocTruyen3Q(context: MangaLoaderContext) : val fullUrl = chapter.url.toAbsoluteUrl(domain) val doc = webClient.httpGet(fullUrl).parseHtml() return doc.select("div.page-chapter img").mapNotNull { img -> - val url = img.attrAsAbsoluteUrlOrNull("src") ?: return@mapNotNull null + val url = img.attrAsRelativeUrlOrNull("data-original") + ?: img.attrAsRelativeUrlOrNull("src") + ?: return@mapNotNull null + + if (url.contains("sp1.jpg") || url.contains("3q_fake") || url.contains("sp2.jpg") || url.contains("3qui3.jpg")) { + return@mapNotNull null + } + MangaPage( id = generateUid(url), url = url, From 51311a17fb77168714c67a4bc598069022e707af Mon Sep 17 00:00:00 2001 From: dragonx943 Date: Mon, 17 Mar 2025 19:46:40 +0700 Subject: [PATCH 2/2] [TopTruyen] Fix chapter images --- .../kotatsu/parsers/site/wpcomics/vi/DocTruyen3Q.kt | 9 ++++++++- .../kotatsu/parsers/site/wpcomics/vi/TopTruyen.kt | 9 ++++++++- 2 files changed, 16 insertions(+), 2 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 5711b949..4d4d06d6 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 @@ -226,7 +226,14 @@ internal class DocTruyen3Q(context: MangaLoaderContext) : ?: img.attrAsRelativeUrlOrNull("src") ?: return@mapNotNull null - if (url.contains("sp1.jpg") || url.contains("3q_fake") || url.contains("sp2.jpg") || url.contains("3qui3.jpg")) { + if (url.contains( // Remove ads images + "sp1.jpg") || + url.contains("3q_fake") || + url.contains("sp2.jpg") || + url.contains("3qui3.jpg") || + url.contains("3q_top") || + url.contains("3q282.jpg") + ) { return@mapNotNull null } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/TopTruyen.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/TopTruyen.kt index e65206e9..3bfaf60c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/TopTruyen.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/TopTruyen.kt @@ -222,7 +222,14 @@ internal class TopTruyen(context: MangaLoaderContext) : val fullUrl = chapter.url.toAbsoluteUrl(domain) val doc = webClient.httpGet(fullUrl).parseHtml() return doc.select("div.page-chapter img").mapNotNull { img -> - val url = img.src()?.toRelativeUrl(domain) ?: return@mapNotNull null + val url = img.attrAsRelativeUrlOrNull("data-original") + ?: img.attrAsRelativeUrlOrNull("src") + ?: return@mapNotNull null + + if (url.contains("toptruyentv.jpg") || url.contains("follow.png")) { // Remove ads images + return@mapNotNull null + } + MangaPage( id = generateUid(url), url = url,