From b9c2949bf60b8373887cf664d1083067141a5189 Mon Sep 17 00:00:00 2001 From: are-are-are <62763969+dejavui@users.noreply.github.com> Date: Sun, 2 Feb 2025 15:28:00 +0700 Subject: [PATCH] Update some domain (#7359) * YuriNeko Update domain and rewrite to overwrite correct domain * TruyenVN update domain * HentaiVNPlus update domain * YuriNeko Use wholeText() * TeamLanhLung update domain * LxHentai update domain * Yurineko Revert code and apply suggestion * LxHentai use wholeText() --- src/vi/hentaivnplus/build.gradle | 4 +-- .../extension/vi/hentaivnplus/HentaiVNPlus.kt | 2 +- src/vi/lxhentai/AndroidManifest.xml | 2 +- src/vi/lxhentai/build.gradle | 2 +- .../extension/vi/lxhentai/LxHentai.kt | 11 ++------ src/vi/teamlanhlung/build.gradle | 4 +-- .../extension/vi/teamlanhlung/TeamLanhLung.kt | 2 +- src/vi/truyenvn/build.gradle | 4 +-- .../extension/vi/truyenvn/TruyenVN.kt | 2 +- src/vi/yurineko/AndroidManifest.xml | 2 +- src/vi/yurineko/build.gradle | 2 +- .../extension/vi/yurineko/YuriNeko.kt | 10 ++++--- .../extension/vi/yurineko/dto/ChapterDto.kt | 4 +-- .../extension/vi/yurineko/dto/MangaDto.kt | 28 ++++++------------- 14 files changed, 32 insertions(+), 47 deletions(-) diff --git a/src/vi/hentaivnplus/build.gradle b/src/vi/hentaivnplus/build.gradle index c9bf81dd7..3b263518d 100644 --- a/src/vi/hentaivnplus/build.gradle +++ b/src/vi/hentaivnplus/build.gradle @@ -2,8 +2,8 @@ ext { extName = 'HentaiVN.plus' extClass = '.HentaiVNPlus' themePkg = 'madara' - baseUrl = 'https://hentaivn.li' - overrideVersionCode = 6 + baseUrl = 'https://hentaivn.tech' + overrideVersionCode = 7 isNsfw = true } diff --git a/src/vi/hentaivnplus/src/eu/kanade/tachiyomi/extension/vi/hentaivnplus/HentaiVNPlus.kt b/src/vi/hentaivnplus/src/eu/kanade/tachiyomi/extension/vi/hentaivnplus/HentaiVNPlus.kt index 37003d1ba..5b34412e1 100644 --- a/src/vi/hentaivnplus/src/eu/kanade/tachiyomi/extension/vi/hentaivnplus/HentaiVNPlus.kt +++ b/src/vi/hentaivnplus/src/eu/kanade/tachiyomi/extension/vi/hentaivnplus/HentaiVNPlus.kt @@ -14,7 +14,7 @@ import java.util.Locale class HentaiVNPlus : Madara( "HentaiVN.plus", - "https://hentaivn.li", + "https://hentaivn.tech", "vi", dateFormat = SimpleDateFormat("MM/dd/yyyy", Locale.ROOT), ), diff --git a/src/vi/lxhentai/AndroidManifest.xml b/src/vi/lxhentai/AndroidManifest.xml index c15458995..152869cfe 100644 --- a/src/vi/lxhentai/AndroidManifest.xml +++ b/src/vi/lxhentai/AndroidManifest.xml @@ -14,7 +14,7 @@ diff --git a/src/vi/lxhentai/build.gradle b/src/vi/lxhentai/build.gradle index 9c936ea77..975230036 100644 --- a/src/vi/lxhentai/build.gradle +++ b/src/vi/lxhentai/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'LXHentai' extClass = '.LxHentai' - extVersionCode = 14 + extVersionCode = 15 isNsfw = true } diff --git a/src/vi/lxhentai/src/eu/kanade/tachiyomi/extension/vi/lxhentai/LxHentai.kt b/src/vi/lxhentai/src/eu/kanade/tachiyomi/extension/vi/lxhentai/LxHentai.kt index 3513722c0..882693d0f 100644 --- a/src/vi/lxhentai/src/eu/kanade/tachiyomi/extension/vi/lxhentai/LxHentai.kt +++ b/src/vi/lxhentai/src/eu/kanade/tachiyomi/extension/vi/lxhentai/LxHentai.kt @@ -19,7 +19,6 @@ import okhttp3.OkHttpClient import okhttp3.Request import org.jsoup.nodes.Document import org.jsoup.nodes.Element -import org.jsoup.select.Evaluator import rx.Observable import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -30,7 +29,7 @@ class LxHentai : ParsedHttpSource(), ConfigurableSource { override val name = "LXHentai" - private val defaultBaseUrl = "https://lxmanga.info" + private val defaultBaseUrl = "https://lxmanga.cloud" override val baseUrl by lazy { getPrefBaseUrl() } @@ -129,13 +128,7 @@ class LxHentai : ParsedHttpSource(), ConfigurableSource { genre = document.selectFirst("div.grow div.mt-2 > span:contains(Thể loại:) + span")!! .select("a") .joinToString { it.text().trim(',', ' ') } - description = document.select("p:contains(Tóm tắt) ~ p").joinToString("\n") { - it.run { - select(Evaluator.Tag("br")).prepend("\\n") - this.text().replace("\\n", "\n").replace("\n ", "\n") - } - }.trim() - + description = document.select("p:contains(Tóm tắt) ~ p").joinToString("\n") { it.wholeText() }.trim() thumbnail_url = document.selectFirst(".cover")?.attr("style")?.let { IMAGE_REGEX.find(it)?.groups?.get(1)?.value } diff --git a/src/vi/teamlanhlung/build.gradle b/src/vi/teamlanhlung/build.gradle index 60bfbfd2f..33afad54c 100644 --- a/src/vi/teamlanhlung/build.gradle +++ b/src/vi/teamlanhlung/build.gradle @@ -2,8 +2,8 @@ ext { extName = 'Team Lanh Lung' extClass = '.TeamLanhLung' themePkg = 'a3manga' - baseUrl = 'https://teamlanhlungday.shop' - overrideVersionCode = 15 + baseUrl = 'https://teamlanhlung1.shop' + overrideVersionCode = 16 isNsfw = true } diff --git a/src/vi/teamlanhlung/src/eu/kanade/tachiyomi/extension/vi/teamlanhlung/TeamLanhLung.kt b/src/vi/teamlanhlung/src/eu/kanade/tachiyomi/extension/vi/teamlanhlung/TeamLanhLung.kt index b626f8306..aebe84ab5 100644 --- a/src/vi/teamlanhlung/src/eu/kanade/tachiyomi/extension/vi/teamlanhlung/TeamLanhLung.kt +++ b/src/vi/teamlanhlung/src/eu/kanade/tachiyomi/extension/vi/teamlanhlung/TeamLanhLung.kt @@ -2,4 +2,4 @@ package eu.kanade.tachiyomi.extension.vi.teamlanhlung import eu.kanade.tachiyomi.multisrc.a3manga.A3Manga -class TeamLanhLung : A3Manga("Team Lạnh Lùng", "https://teamlanhlungday.shop", "vi") +class TeamLanhLung : A3Manga("Team Lạnh Lùng", "https://teamlanhlung1.shop", "vi") diff --git a/src/vi/truyenvn/build.gradle b/src/vi/truyenvn/build.gradle index 96fd793aa..3a1aa8f46 100644 --- a/src/vi/truyenvn/build.gradle +++ b/src/vi/truyenvn/build.gradle @@ -2,8 +2,8 @@ ext { extName = 'TruyenVN' extClass = '.TruyenVN' themePkg = 'madara' - baseUrl = 'https://truyenvn.la' - overrideVersionCode = 10 + baseUrl = 'https://truyenvn.li' + overrideVersionCode = 11 isNsfw = true } diff --git a/src/vi/truyenvn/src/eu/kanade/tachiyomi/extension/vi/truyenvn/TruyenVN.kt b/src/vi/truyenvn/src/eu/kanade/tachiyomi/extension/vi/truyenvn/TruyenVN.kt index 01a9fb010..7bc1b903f 100644 --- a/src/vi/truyenvn/src/eu/kanade/tachiyomi/extension/vi/truyenvn/TruyenVN.kt +++ b/src/vi/truyenvn/src/eu/kanade/tachiyomi/extension/vi/truyenvn/TruyenVN.kt @@ -14,7 +14,7 @@ import java.util.Locale class TruyenVN : Madara( "TruyenVN", - "https://truyenvn.la", + "https://truyenvn.li", "vi", dateFormat = SimpleDateFormat("dd/MM/yyyy", Locale.ROOT), ), diff --git a/src/vi/yurineko/AndroidManifest.xml b/src/vi/yurineko/AndroidManifest.xml index b2fb696d5..e0ac1498b 100644 --- a/src/vi/yurineko/AndroidManifest.xml +++ b/src/vi/yurineko/AndroidManifest.xml @@ -12,7 +12,7 @@ - diff --git a/src/vi/yurineko/build.gradle b/src/vi/yurineko/build.gradle index 034321ea5..18ae13c72 100644 --- a/src/vi/yurineko/build.gradle +++ b/src/vi/yurineko/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'YuriNeko' extClass = '.YuriNeko' - extVersionCode = 6 + extVersionCode = 7 isNsfw = true } diff --git a/src/vi/yurineko/src/eu/kanade/tachiyomi/extension/vi/yurineko/YuriNeko.kt b/src/vi/yurineko/src/eu/kanade/tachiyomi/extension/vi/yurineko/YuriNeko.kt index 2b7bf387c..34bdb6422 100644 --- a/src/vi/yurineko/src/eu/kanade/tachiyomi/extension/vi/yurineko/YuriNeko.kt +++ b/src/vi/yurineko/src/eu/kanade/tachiyomi/extension/vi/yurineko/YuriNeko.kt @@ -40,7 +40,7 @@ class YuriNeko : HttpSource(), ConfigurableSource { override val name = "YuriNeko" - private val defaultDomain = "yurineko.click" + private val defaultDomain = "yurineko.site" override val baseUrl by lazy { "https://${getPrefDomain()}" } @@ -50,6 +50,8 @@ class YuriNeko : HttpSource(), ConfigurableSource { private val apiUrl by lazy { "https://api.${getPrefDomain()}" } + private val storageUrl by lazy { "https://storage.${getPrefDomain()}" } + override val client = network.cloudflareClient.newBuilder() .rateLimit(3, 1, TimeUnit.SECONDS) .addInterceptor(::authIntercept) @@ -98,7 +100,7 @@ class YuriNeko : HttpSource(), ConfigurableSource { override fun popularMangaParse(response: Response): MangasPage { val mangaListDto = response.parseAs() val currentPage = response.request.url.queryParameter("page")!!.toFloat() - return mangaListDto.toMangasPage(currentPage) + return mangaListDto.toMangasPage(currentPage, storageUrl) } override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException() @@ -188,7 +190,7 @@ class YuriNeko : HttpSource(), ConfigurableSource { override fun mangaDetailsRequest(manga: SManga): Request = GET("$baseUrl${manga.url}") override fun mangaDetailsParse(response: Response): SManga = - response.parseAs().toSManga() + response.parseAs().toSManga(storageUrl) override fun chapterListRequest(manga: SManga): Request = GET("$apiUrl${manga.url}") @@ -201,7 +203,7 @@ class YuriNeko : HttpSource(), ConfigurableSource { override fun pageListRequest(chapter: SChapter): Request = GET("$apiUrl${chapter.url}") override fun pageListParse(response: Response): List = - response.parseAs().toPageList() + response.parseAs().toPageList(storageUrl) override fun imageUrlParse(response: Response): String = throw UnsupportedOperationException() diff --git a/src/vi/yurineko/src/eu/kanade/tachiyomi/extension/vi/yurineko/dto/ChapterDto.kt b/src/vi/yurineko/src/eu/kanade/tachiyomi/extension/vi/yurineko/dto/ChapterDto.kt index 18e2c8627..2b6075b4c 100644 --- a/src/vi/yurineko/src/eu/kanade/tachiyomi/extension/vi/yurineko/dto/ChapterDto.kt +++ b/src/vi/yurineko/src/eu/kanade/tachiyomi/extension/vi/yurineko/dto/ChapterDto.kt @@ -48,7 +48,7 @@ data class ReadResponseDto( val chapterInfo: ChapterDto, val url: List, ) { - fun toPageList(): List = this@ReadResponseDto + fun toPageList(storageUrl: String): List = this@ReadResponseDto .url - .mapIndexed { index, url -> Page(index, imageUrl = "https://storage.yurineko.my" + url) } + .mapIndexed { index, url -> Page(index, imageUrl = storageUrl + url) } } diff --git a/src/vi/yurineko/src/eu/kanade/tachiyomi/extension/vi/yurineko/dto/MangaDto.kt b/src/vi/yurineko/src/eu/kanade/tachiyomi/extension/vi/yurineko/dto/MangaDto.kt index b342cdb71..d252263ae 100644 --- a/src/vi/yurineko/src/eu/kanade/tachiyomi/extension/vi/yurineko/dto/MangaDto.kt +++ b/src/vi/yurineko/src/eu/kanade/tachiyomi/extension/vi/yurineko/dto/MangaDto.kt @@ -4,7 +4,6 @@ import eu.kanade.tachiyomi.source.model.MangasPage import eu.kanade.tachiyomi.source.model.SManga import kotlinx.serialization.Serializable import org.jsoup.Jsoup -import org.jsoup.select.Evaluator import kotlin.math.ceil @Serializable @@ -28,26 +27,17 @@ data class MangaDto( val lastChapter: ChapterDto? = null, val chapters: List? = null, ) { - fun toSManga(): SManga = SManga.create().apply { + fun toSManga(storageUrl: String): SManga = SManga.create().apply { val dto = this@MangaDto url = "/manga/${dto.id}" title = dto.originalName author = dto.author.joinToString(", ") { author -> author.name } - - val descElem = Jsoup.parseBodyFragment(dto.description) - description = if (descElem.select("p").any()) { - Jsoup.parse(dto.description).select("p").joinToString("\n") { - it.run { - select(Evaluator.Tag("br")).prepend("\\n") - this.text().replace("\\n", "\n").replace("\n ", "\n") - } - }.trim() + val descElem = Jsoup.parseBodyFragment(dto.description).select("p") + .joinToString("\n") { it.wholeText() }.trim() + description = if (dto.otherName.isNotEmpty()) { + "Tên khác: ${dto.otherName}\n\n" + descElem } else { - dto.description - } - - if (dto.otherName.isNotEmpty()) { - description = "Tên khác: ${dto.otherName}\n\n" + description + descElem } genre = dto.tag.joinToString(", ") { tag -> tag.name } @@ -61,7 +51,7 @@ data class MangaDto( 7 -> SManga.CANCELLED // "Ngừng xuất bản" -> No more publications else -> SManga.UNKNOWN } - thumbnail_url = "https://storage.yurineko.my/" + dto.thumbnail + thumbnail_url = "$storageUrl/" + dto.thumbnail initialized = true } } @@ -71,10 +61,10 @@ data class MangaListDto( val result: List, val resultCount: Int, ) { - fun toMangasPage(currentPage: Float = 1f): MangasPage { + fun toMangasPage(currentPage: Float = 1f, storageUrl: String): MangasPage { val dto = this@MangaListDto return MangasPage( - dto.result.map { it.toSManga() }, + dto.result.map { it.toSManga(storageUrl) }, currentPage + 1f <= ceil(dto.resultCount.toFloat() / 20f), ) }