[DocTruyen5s] Fixes

master
dragonx943 1 year ago
parent 0d5498e60d
commit da02a82d74

@ -1,20 +1,25 @@
package org.koitharu.kotatsu.parsers.site.liliana.vi
import org.jsoup.Jsoup
import org.koitharu.kotatsu.parsers.config.ConfigKey
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaChapter
import org.koitharu.kotatsu.parsers.model.MangaPage
import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.liliana.LilianaParser
import org.koitharu.kotatsu.parsers.util.*
import org.koitharu.kotatsu.parsers.util.json.getBooleanOrDefault
import org.koitharu.kotatsu.parsers.Broken
import org.koitharu.kotatsu.parsers.util.*
@Broken // cant fetch pages
@MangaSourceParser("DOCTRUYEN5S", "DocTruyen5s", "vi")
internal class DocTruyen5s(context: MangaLoaderContext) :
LilianaParser(context, MangaParserSource.DOCTRUYEN5S, "manga.io.vn", 42) {
LilianaParser(context, MangaParserSource.DOCTRUYEN5S, "dongmoe.com", 42) {
override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain("dongmoe.com", "manga.io.vn")
override fun getRequestHeaders() = super.getRequestHeaders().newBuilder()
.add("referer", "no-referrer")
.build()
override suspend fun getPages(chapter: MangaChapter): List<MangaPage> {
val fullUrl = chapter.url.toAbsoluteUrl(domain)
@ -35,8 +40,15 @@ internal class DocTruyen5s(context: MangaLoaderContext) :
val pageListDoc = Jsoup.parse(responseJson.getString("html"))
return pageListDoc.selectOrThrow("div.separator a").map { element ->
val url = element.attr("href")
return pageListDoc.selectOrThrow("div.separator a, div.separator img").mapNotNull { element ->
val originalUrl = element.attr("href").takeIf { it.isNotEmpty() } ?: element.attr("src")
if (originalUrl.isEmpty()) return@mapNotNull null
val workingUrl = addCdnServers(originalUrl).firstOrNull { url ->
checkMangaImgs(url)
}
workingUrl?.let { url ->
MangaPage(
id = generateUid(url),
url = url,
@ -45,4 +57,28 @@ internal class DocTruyen5s(context: MangaLoaderContext) :
)
}
}
}
private fun addCdnServers(url: String): List<String> {
if (!url.startsWith("http")) return emptyList()
val urlFinal = url.replace("https://", "")
return listOf(
url,
"https://proxy.luce.workers.dev/$url",
"https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=$url&container=focus&gadget=a&no_expand=1&resize_h=0&rewriteMime=image/*",
"https://i0.wp.com/$urlFinal",
"https://cdn.statically.io/img/$urlFinal"
)
}
private suspend fun checkMangaImgs(url: String): Boolean {
return try {
val response = webClient.httpHead(url)
val contentType = response.header("Content-Type") ?: ""
contentType.startsWith("image/")
} catch (e: Exception) {
false
}
}
}

Loading…
Cancel
Save