site/vi: Update sources domain
This commit is contained in:
2
.github/workflows/test-branch.yml
vendored
2
.github/workflows/test-branch.yml
vendored
@@ -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
|
||||
|
||||
2
.github/workflows/test-parsers.yml
vendored
2
.github/workflows/test-parsers.yml
vendored
@@ -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
|
||||
|
||||
@@ -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<SortOrder>
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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<SortOrder> =
|
||||
EnumSet.of(
|
||||
|
||||
@@ -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<SortOrder>
|
||||
get() = EnumSet.of(SortOrder.UPDATED)
|
||||
|
||||
@@ -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<MangaPage> {
|
||||
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<MangaTag> = setOf(
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user