From f2b6cab251dfa7751c0b01ad12331f2ddab28658 Mon Sep 17 00:00:00 2001 From: dragonx943 Date: Thu, 11 Sep 2025 21:13:20 +0700 Subject: [PATCH] site/vi: Update sources domain --- .github/workflows/test-branch.yml | 2 -- .github/workflows/test-parsers.yml | 2 -- .../kotatsu/parsers/site/vi/CMangaParser.kt | 18 +++++++++--------- .../kotatsu/parsers/site/vi/DuaLeoTruyen.kt | 2 +- .../kotatsu/parsers/site/vi/TruyenTranh3Q.kt | 2 +- .../kotatsu/parsers/site/vi/VcomycsParser.kt | 2 +- .../parsers/site/wpcomics/vi/DocTruyen3Q.kt | 11 ++++++----- .../parsers/site/wpcomics/vi/NewTruyen.kt | 2 +- .../parsers/site/wpcomics/vi/TopTruyen.kt | 13 +++++++------ 9 files changed, 26 insertions(+), 28 deletions(-) diff --git a/.github/workflows/test-branch.yml b/.github/workflows/test-branch.yml index 646a7be8..52a4f4ff 100644 --- a/.github/workflows/test-branch.yml +++ b/.github/workflows/test-branch.yml @@ -20,8 +20,6 @@ jobs: - name: Set up Gradle 📦 uses: gradle/actions/setup-gradle@017a9effdb900e5b5b2fddfb590a105619dca3c3 # v4.4.2 - with: - cache-read-only: false - name: Compile parsers 🚀 run: ./gradlew compileKotlin diff --git a/.github/workflows/test-parsers.yml b/.github/workflows/test-parsers.yml index 95599beb..04addba4 100644 --- a/.github/workflows/test-parsers.yml +++ b/.github/workflows/test-parsers.yml @@ -24,8 +24,6 @@ jobs: - name: Set up Gradle 📦 uses: gradle/actions/setup-gradle@017a9effdb900e5b5b2fddfb590a105619dca3c3 # v4.4.2 - with: - cache-read-only: false - name: Compile parsers 🚀 run: ./gradlew compileKotlin diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/CMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/CMangaParser.kt index 3c9e8e96..7ee9f851 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/CMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/CMangaParser.kt @@ -22,7 +22,7 @@ private const val PAGE_SIZE = 20 internal class CMangaParser(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.CMANGA, PAGE_SIZE), MangaParserAuthProvider { - override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain("cmangax3.com") + override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain("cmangax4.com") override val availableSortOrders: Set get() = EnumSet.of( @@ -230,12 +230,12 @@ internal class CMangaParser(context: MangaLoaderContext) : private fun JSONObject.isLocked() = opt("lock") != null private fun containsAdsUrl(url: String): Boolean { - val adsUrl = "https://img.cmangapi.com/data-image/index.php" - val cleanUrl = url.replace("\\", "") - return when { - cleanUrl.startsWith(adsUrl) -> true - cleanUrl.contains("?v=12&data=") -> true - else -> false - } - } + val adsUrl = "https://img.cmangapi.com/data-image/index.php" + val cleanUrl = url.replace("\\", "") + return when { + cleanUrl.startsWith(adsUrl) -> true + cleanUrl.contains("?v=12&data=") -> true + else -> false + } + } } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/DuaLeoTruyen.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/DuaLeoTruyen.kt index eb616fc3..5fa5781b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/DuaLeoTruyen.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/DuaLeoTruyen.kt @@ -16,7 +16,7 @@ internal class DuaLeoTruyen(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.DUALEOTRUYEN, 60) { override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("dualeotruyenpm.com") + get() = ConfigKey.Domain("dualeotruyeng.com") override val userAgentKey = ConfigKey.UserAgent(UserAgents.CHROME_DESKTOP) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyenTranh3Q.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyenTranh3Q.kt index 4386991a..8946de90 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyenTranh3Q.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyenTranh3Q.kt @@ -16,7 +16,7 @@ internal class TruyenTranh3Q(context: MangaLoaderContext) : private val relativeTimePattern = Regex("(\\d+)\\s*(phút|giờ|ngày|tuần) trước") private val absoluteTimePattern = Regex("(\\d{2}-\\d{2}-\\d{4})") - override val configKeyDomain = ConfigKey.Domain("truyentranh3q.com") + override val configKeyDomain = ConfigKey.Domain("truyentranh3qq.com") override val availableSortOrders: Set = EnumSet.of( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/VcomycsParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/VcomycsParser.kt index d72e1cac..55825704 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/VcomycsParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/VcomycsParser.kt @@ -23,7 +23,7 @@ internal class VcomycsParser(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.VCOMYCS, 36) { override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("vivicomi5.info") + get() = ConfigKey.Domain("vivicomi6.info") override val availableSortOrders: Set get() = EnumSet.of(SortOrder.UPDATED) 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 96fa3110..f9fb3f4a 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 @@ -11,7 +11,7 @@ import java.util.* @MangaSourceParser("DOCTRUYEN3Q", "DocTruyen3Q", "vi") internal class DocTruyen3Q(context: MangaLoaderContext) : - WpComicsParser(context, MangaParserSource.DOCTRUYEN3Q, "doctruyen3qui12.pro", 36) { + WpComicsParser(context, MangaParserSource.DOCTRUYEN3Q, "doctruyen3qui13.pro", 36) { override val datePattern = "dd/MM/yyyy" @@ -215,17 +215,17 @@ internal class DocTruyen3Q(context: MangaLoaderContext) : override suspend fun getPages(chapter: MangaChapter): List { 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), @@ -249,7 +249,8 @@ internal class DocTruyen3Q(context: MangaLoaderContext) : url.contains("3qui5_banner.jpg") || url.contains("dt3qui8.jpg") || url.contains("3qui10.jpg") || - url.contains("3qui12.jpg") + url.contains("3qui12.jpg") || + url.contains("3qui13.jpg") } private fun availableTags(): Set = setOf( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NewTruyen.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NewTruyen.kt index 013d918e..fc1a3244 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NewTruyen.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NewTruyen.kt @@ -14,7 +14,7 @@ import java.util.* @MangaSourceParser("NEWTRUYEN", "NewTruyen", "vi") internal class NewTruyen(context: MangaLoaderContext) : - WpComicsParser(context, MangaParserSource.NEWTRUYEN, "newtruyentranh1.com", 36) { + WpComicsParser(context, MangaParserSource.NEWTRUYEN, "newtruyentranh2.com", 36) { override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = getAvailableTags(), 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 638cd226..ad1e9741 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 @@ -11,7 +11,7 @@ import java.util.* @MangaSourceParser("TOPTRUYEN", "TopTruyen", "vi") internal class TopTruyen(context: MangaLoaderContext) : - WpComicsParser(context, MangaParserSource.TOPTRUYEN, "www.toptruyentv8.com", 36) { + WpComicsParser(context, MangaParserSource.TOPTRUYEN, "www.toptruyentv9.com", 36) { override val datePattern = "dd/MM/yyyy" @@ -219,18 +219,19 @@ internal class TopTruyen(context: MangaLoaderContext) : val url = img.attrAsRelativeUrlOrNull("src") ?: img.attrAsRelativeUrlOrNull("data-original") ?: return@mapNotNull null - - if (url.contains("toptruyentv.jpg") || - url.contains("follow.png") || + + if (url.contains("toptruyentv.jpg") || + url.contains("follow.png") || url.contains("image_default.png") || url.contains("toptruyentv5.jpg") || url.contains("toptruyentv6.jpg") || url.contains("toptruyentv7.jpg") || url.contains("toptruyentv8.jpg") || - url.contains("img_001_1743221470.png")) { // Remove ads images + url.contains("img_001_1743221470.png") || + url.contains("toptruyentv9.jpg") ) { // Remove ads images return@mapNotNull null } - + MangaPage( id = generateUid(url), url = url,