From a9fc534ea76919de1ca51e1348cf87237ab9addb Mon Sep 17 00:00:00 2001 From: Draken <131387159+dragonx943@users.noreply.github.com> Date: Tue, 30 Jul 2024 13:27:41 +0700 Subject: [PATCH] Remove dead sources + Change domain (#955) * Delete src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyentranhLHParser.kt * Update NetTruyen.kt * Delete src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenAA.kt * Delete src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenX.kt * Delete src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/Nettruyenmax.kt * Update NetTruyen.kt * Update NhatTruyenVN * Delete src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NhatTruyenSS.kt --- .../parsers/site/vi/TruyentranhLHParser.kt | 185 ------------------ .../parsers/site/wpcomics/vi/NetTruyen.kt | 9 +- .../parsers/site/wpcomics/vi/NetTruyenX.kt | 10 - .../parsers/site/wpcomics/vi/Nettruyenmax.kt | 12 -- .../parsers/site/wpcomics/vi/NhatTruyenSS.kt | 10 - .../vi/{NetTruyenAA.kt => NhatTruyenVN.kt} | 6 +- .../parsers/site/wpcomics/vi/Nhattruyenmin.kt | 10 - 7 files changed, 5 insertions(+), 237 deletions(-) delete mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyentranhLHParser.kt delete mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenX.kt delete mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/Nettruyenmax.kt delete mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NhatTruyenSS.kt rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/{NetTruyenAA.kt => NhatTruyenVN.kt} (60%) delete mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/Nhattruyenmin.kt diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyentranhLHParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyentranhLHParser.kt deleted file mode 100644 index a4896e73..00000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyentranhLHParser.kt +++ /dev/null @@ -1,185 +0,0 @@ -package org.koitharu.kotatsu.parsers.site.vi - -import androidx.collection.ArrayMap -import androidx.collection.ArraySet -import kotlinx.coroutines.sync.Mutex -import kotlinx.coroutines.sync.withLock -import org.koitharu.kotatsu.parsers.Broken -import org.koitharu.kotatsu.parsers.MangaLoaderContext -import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.PagedMangaParser -import org.koitharu.kotatsu.parsers.config.ConfigKey -import org.koitharu.kotatsu.parsers.model.* -import org.koitharu.kotatsu.parsers.util.* -import java.text.SimpleDateFormat -import java.util.* - -@Broken -@MangaSourceParser("TRUYENTRANHLH", "TruyentranhLH", "vi") -class TruyentranhLHParser(context: MangaLoaderContext) : - PagedMangaParser(context, source = MangaParserSource.TRUYENTRANHLH, pageSize = 18) { - - override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain("truyenlh.com") - override val availableSortOrders: Set = EnumSet.allOf(SortOrder::class.java) - override val availableStates: Set = - EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.PAUSED) - - private val mutex = Mutex() - private var tagCache: Map? = null - - override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { - - val url = urlBuilder().apply { - addPathSegment("tim-kiem") - addQueryParameter("page", page.toString()) - when (filter) { - - is MangaListFilter.Search -> { - addQueryParameter("q", filter.query) - } - - is MangaListFilter.Advanced -> { - - addQueryParameter( - "sort", - when (filter.sortOrder) { - SortOrder.UPDATED -> "update" - SortOrder.NEWEST -> "new" - SortOrder.RATING -> "like" - SortOrder.POPULARITY -> "top" - SortOrder.ALPHABETICAL -> "az" - SortOrder.ALPHABETICAL_DESC -> "za" - }, - ) - - if (filter.states.isNotEmpty()) { - filter.states.oneOrThrowIfMany()?.let { - addQueryParameter( - "status", - when (it) { - MangaState.ONGOING -> "1" - MangaState.FINISHED -> "3" - MangaState.PAUSED -> "2" - else -> "0" - }, - ) - } - } - - if (filter.tags.isNotEmpty()) { - val tagsQuery = filter.tags.joinToString(separator = ",") { it.key } - addEncodedQueryParameter("accept_genres", tagsQuery) - } - } - - null -> { - addQueryParameter("sort", "update") - } - } - - }.build() - - return webClient.httpGet(url).parseHtml() - .select(".container .card.card-dark .row > .thumb-item-flow") - .mapNotNull { - val a = it.selectFirstOrThrow(".thumb-wrapper a") - Manga( - id = generateUid(a.attrAsRelativeUrl("href")), - url = a.attrAsRelativeUrl("href"), - publicUrl = a.attrAsAbsoluteUrl("href"), - title = it.select(".thumb_attr.series-title").text(), - altTitle = null, - rating = RATING_UNKNOWN, - isNsfw = false, - coverUrl = a.selectFirst("div[data-bg]")?.attrAsAbsoluteUrl("data-bg").orEmpty(), - tags = emptySet(), - state = null, - author = null, - source = source, - ) - } - } - - override suspend fun getDetails(manga: Manga): Manga { - val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() - val infoHeaderEl = docs.selectFirst("main.section-body") - val infoEl = docs.selectFirst("main.section-body .series-information") - val tags = infoEl?.select(".info-item:contains(Thể loại) > .info-value > a")?.mapNotNullToSet { - getOrCreateTagMap()[it.text().trim()] - } - val state = when (infoEl?.selectFirst(".info-item:contains(Tình trạng) > .info-value")?.text()) { - "Đang tiến hành" -> MangaState.ONGOING - "Đã hoàn thành" -> MangaState.FINISHED - "Tạm ngưng" -> MangaState.PAUSED - else -> null - } - val rating = infoHeaderEl?.let { - val like = it.selectFirst("#like .block.feature-name")?.text()?.toIntOrNull() - val disLike = it.selectFirst("#dislike .block.feature-name")?.text()?.toIntOrNull() - when { - like == null || disLike == null -> RATING_UNKNOWN - like == 0 && disLike == 0 -> RATING_UNKNOWN - else -> like.toFloat() / (like + disLike) - } - } - val chapterDateFormat = SimpleDateFormat("dd/MM/yyyy", Locale.US) - - return manga.copy( - altTitle = infoEl?.selectFirst(".info-item:contains(Tên khác) > .info-value")?.text(), - author = infoEl?.select(".info-item:contains(Tác giả) > .info-value")?.joinToString { it.text() }, - tags = tags ?: emptySet(), - state = state, - rating = rating ?: RATING_UNKNOWN, - description = infoHeaderEl?.selectFirst(".series-summary .summary-content")?.html(), - chapters = docs.select("ul.list-chapters.at-series > a").mapChapters(reversed = true) { index, element -> - MangaChapter( - id = generateUid(element.attrAsRelativeUrl("href")), - name = element.selectFirst(".chapter-name")?.text()?.trim().orEmpty(), - number = index + 1f, - volume = 0, - url = element.attrAsRelativeUrl("href"), - scanlator = null, - uploadDate = chapterDateFormat.tryParse(element.selectFirst(".chapter-time")?.text()), - branch = null, - source = source, - ) - }, - ) - } - - override suspend fun getPages(chapter: MangaChapter): List { - val url = chapter.url.toAbsoluteUrl(domain) - return webClient.httpGet(url).parseHtml().select("#chapter-content > img").mapNotNull { - val imageUrl = it.attrAsRelativeUrlOrNull("data-src") - ?: it.attrAsRelativeUrlOrNull("src") - ?: return@mapNotNull null - MangaPage( - id = generateUid(imageUrl), - url = imageUrl, - preview = null, - source = source, - ) - } - } - - override suspend fun getAvailableTags(): Set { - return ArraySet(getOrCreateTagMap().values) - } - - private suspend fun getOrCreateTagMap(): Map = mutex.withLock { - tagCache?.let { return it } - val docs = webClient.httpGet("/tim-kiem".toAbsoluteUrl(domain)).parseHtml() - val tags = docs.select(".search-border-left .row > .search-gerne_item").mapNotNull { - MangaTag( - title = it.text().trim(), - key = it.selectFirst("label[data-genre-id]") - ?.attr("data-genre-id") - ?.trim() ?: return@mapNotNull null, - source = source, - ) - } - val tagMap = tags.associateByTo(ArrayMap(tags.size)) { it.title } - tagCache = tagMap - return tagMap - } -} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyen.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyen.kt index 68118826..101ef545 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyen.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyen.kt @@ -8,13 +8,8 @@ import org.koitharu.kotatsu.parsers.site.wpcomics.WpComicsParser @MangaSourceParser("NETTRUYEN", "NetTruyen", "vi") internal class NetTruyen(context: MangaLoaderContext) : - WpComicsParser(context, MangaParserSource.NETTRUYEN, "www.nettruyenlive.com", 36) { + WpComicsParser(context, MangaParserSource.NETTRUYEN, "nettruyenaa.com") { override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain( - "www.nettruyenaz.com", - "www.nettruyenlive.com", - "www.nettruyenio.com", - "www.nettruyento.com", - "nettruyento.com", - "nettruyenin.com", + "nettruyenssr.com", ) } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenX.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenX.kt deleted file mode 100644 index c9e4dbfe..00000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenX.kt +++ /dev/null @@ -1,10 +0,0 @@ -package org.koitharu.kotatsu.parsers.site.wpcomics.vi - -import org.koitharu.kotatsu.parsers.MangaLoaderContext -import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.site.wpcomics.WpComicsParser - -@MangaSourceParser("NETTRUYENX", "NetTruyenX", "vi") -internal class NetTruyenX(context: MangaLoaderContext) : - WpComicsParser(context, MangaParserSource.NETTRUYENX, "nettruyenx.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/Nettruyenmax.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/Nettruyenmax.kt deleted file mode 100644 index 342ed8ae..00000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/Nettruyenmax.kt +++ /dev/null @@ -1,12 +0,0 @@ -package org.koitharu.kotatsu.parsers.site.wpcomics.vi - -import org.koitharu.kotatsu.parsers.Broken -import org.koitharu.kotatsu.parsers.MangaLoaderContext -import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.site.wpcomics.WpComicsParser - -@Broken -@MangaSourceParser("NETTRUYENMAX", "NettruyenBing", "vi") -internal class Nettruyenmax(context: MangaLoaderContext) : - WpComicsParser(context, MangaParserSource.NETTRUYENMAX, "www.nettruyentt.com", 36) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NhatTruyenSS.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NhatTruyenSS.kt deleted file mode 100644 index 98424c24..00000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NhatTruyenSS.kt +++ /dev/null @@ -1,10 +0,0 @@ -package org.koitharu.kotatsu.parsers.site.wpcomics.vi - -import org.koitharu.kotatsu.parsers.MangaLoaderContext -import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.site.wpcomics.WpComicsParser - -@MangaSourceParser("NETTRUYENSS", "NhatTruyenSS", "vi") -internal class NhatTruyenSS(context: MangaLoaderContext) : - WpComicsParser(context, MangaParserSource.NETTRUYENSS, "www.nhattruyenss.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenAA.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NhatTruyenVN.kt similarity index 60% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenAA.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NhatTruyenVN.kt index 68e77975..6530654f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenAA.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NhatTruyenVN.kt @@ -5,6 +5,6 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.wpcomics.WpComicsParser -@MangaSourceParser("NETTRUYENAA", "NetTruyenAA", "vi") -internal class NetTruyenAA(context: MangaLoaderContext) : - WpComicsParser(context, MangaParserSource.NETTRUYENAA, "nettruyenaa.com") +@MangaSourceParser("NHATTRUYENVN", "NhatTruyenVN", "vi") +internal class NhattruyenVN(context: MangaLoaderContext) : + WpComicsParser(context, MangaParserSource.NHATTRUYENVN, "nhattruyenvn.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/Nhattruyenmin.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/Nhattruyenmin.kt deleted file mode 100644 index a3db3d2c..00000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/Nhattruyenmin.kt +++ /dev/null @@ -1,10 +0,0 @@ -package org.koitharu.kotatsu.parsers.site.wpcomics.vi - -import org.koitharu.kotatsu.parsers.MangaLoaderContext -import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.site.wpcomics.WpComicsParser - -@MangaSourceParser("NHATTRUYENMIN", "NhatTruyenVn", "vi") -internal class Nhattruyenmin(context: MangaLoaderContext) : - WpComicsParser(context, MangaParserSource.NHATTRUYENMIN, "nhattruyenvn.com")