master
Koitharu 2 years ago
parent c2b2148190
commit f0f50a37b5
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -147,7 +147,7 @@ internal class ExHentaiParser(
val tagsDiv = gLink.nextElementSibling() ?: gLink.parseFailed("tags div not found") val tagsDiv = gLink.nextElementSibling() ?: gLink.parseFailed("tags div not found")
val mainTag = td2.selectFirst("div.cn")?.let { div -> val mainTag = td2.selectFirst("div.cn")?.let { div ->
MangaTag( MangaTag(
title = div.text().toTitleCase(), title = div.text().toTitleCase(Locale.ENGLISH),
key = tagIdByClass(div.classNames()) ?: return@let null, key = tagIdByClass(div.classNames()) ?: return@let null,
source = source, source = source,
) )

@ -186,7 +186,7 @@ internal class MangaPark(context: MangaLoaderContext) :
}, },
tags = tags, tags = tags,
isNsfw = nsfw, isNsfw = nsfw,
chapters = doc.body().select("div.group.flex div.px-2").mapChapters { i, div -> chapters = doc.body().select("div.group.flex div.px-2").mapChapters(reversed = true) { i, div ->
val a = div.selectFirstOrThrow("a") val a = div.selectFirstOrThrow("a")
val href = a.attrAsRelativeUrl("href") val href = a.attrAsRelativeUrl("href")
val dateText = div.selectFirst("span[q:key=Ee_0]")?.text() val dateText = div.selectFirst("span[q:key=Ee_0]")?.text()
@ -247,22 +247,25 @@ internal class MangaPark(context: MangaLoaderContext) :
val doc = webClient.httpGet(chapter.url.toAbsoluteUrl(domain)).parseHtml() val doc = webClient.httpGet(chapter.url.toAbsoluteUrl(domain)).parseHtml()
val script = if (doc.selectFirst("script:containsData(comic-)") != null) { val script = if (doc.selectFirst("script:containsData(comic-)") != null) {
doc.selectFirstOrThrow("script:containsData(comic-)").data() doc.selectFirstOrThrow("script:containsData(comic-)").data()
.substringAfterLast("\"comic-").split("\",\"") .substringAfterLast("\"comic-")
} else { } else {
doc.selectFirstOrThrow("script:containsData(manga-)").data() doc.selectFirstOrThrow("script:containsData(manga-)").data()
.substringAfterLast("\"manga-").split("\",\"") .substringAfterLast("\"manga-")
} }
return script.mapNotNull { url -> return Regex("\"(https?:.+?)\"")
if (!url.startsWith("https://")) { .findAll(script)
return@mapNotNull null .mapNotNullTo(ArrayList()) {
} else { val url = it.groupValues.getOrNull(1) ?: return@mapNotNullTo null
MangaPage( if (url.contains("/comic/") || url.contains("/manga/")) {
id = generateUid(url), MangaPage(
url = url, id = generateUid(url),
preview = null, url = url,
source = source, preview = null,
) source = source,
)
} else {
return@mapNotNullTo null
}
} }
}
} }
} }

@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.util.*
@MangaSourceParser("ISEKAISCAN_EU", "IsekaiScan.to", "en") @MangaSourceParser("ISEKAISCAN_EU", "IsekaiScan.to", "en")
internal class IsekaiScanEuParser(context: MangaLoaderContext) : internal class IsekaiScanEuParser(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.ISEKAISCAN_EU, "m.isekaiscan.to") { MadaraParser(context, MangaSource.ISEKAISCAN_EU, "paragonscans.com") {
override val datePattern = "MM/dd/yyyy" override val datePattern = "MM/dd/yyyy"
override val withoutAjax = true override val withoutAjax = true

@ -14,5 +14,7 @@ internal class Manganato(context: MangaLoaderContext) :
"chapmanganato.to", "chapmanganato.to",
"chapmanganato.com", "chapmanganato.com",
) )
override val otherDomain = configKeyDomain.defaultValue override val otherDomain = "chapmanganato.to"
override val selectPage = ".container-chapter-reader > img"
} }

@ -12,14 +12,14 @@ import java.util.*
@MangaSourceParser("RIZZCOMIC", "RizzComic", "en") @MangaSourceParser("RIZZCOMIC", "RizzComic", "en")
internal class RizzComic(context: MangaLoaderContext) : internal class RizzComic(context: MangaLoaderContext) :
MangaReaderParser(context, MangaSource.RIZZCOMIC, "rizzcomic.com", pageSize = 50, searchPageSize = 20) { MangaReaderParser(context, MangaSource.RIZZCOMIC, "rizzfables.com", pageSize = 50, searchPageSize = 20) {
override val datePattern = "dd MMM yyyy" override val datePattern = "dd MMM yyyy"
override val listUrl = "/series" override val listUrl = "/series"
override val availableSortOrders: Set<SortOrder> = EnumSet.of(SortOrder.ALPHABETICAL) override val availableSortOrders: Set<SortOrder> = EnumSet.of(SortOrder.ALPHABETICAL)
override val availableStates: Set<MangaState> = emptySet() override val availableStates: Set<MangaState> = emptySet()
override val isMultipleTagsSupported = false override val isMultipleTagsSupported = false
override val isSearchSupported = false override val isSearchSupported = true
override val isTagsExclusionSupported = false override val isTagsExclusionSupported = false
// TODO Query created in json // TODO Query created in json

@ -55,7 +55,7 @@ class FaviconParser(
private suspend fun parseManifest(url: String): List<Favicon> { private suspend fun parseManifest(url: String): List<Favicon> {
val json = webClient.httpGet(url).parseJson() val json = webClient.httpGet(url).parseJson()
val icons = json.getJSONArray("icons") val icons = json.optJSONArray("icons") ?: return emptyList()
return icons.mapJSON { jo -> return icons.mapJSON { jo ->
Favicon( Favicon(
url = jo.getString("src").resolveLink(), url = jo.getString("src").resolveLink(),

Loading…
Cancel
Save