@@ -147,7 +147,7 @@ internal class ExHentaiParser(
|
||||
val tagsDiv = gLink.nextElementSibling() ?: gLink.parseFailed("tags div not found")
|
||||
val mainTag = td2.selectFirst("div.cn")?.let { div ->
|
||||
MangaTag(
|
||||
title = div.text().toTitleCase(),
|
||||
title = div.text().toTitleCase(Locale.ENGLISH),
|
||||
key = tagIdByClass(div.classNames()) ?: return@let null,
|
||||
source = source,
|
||||
)
|
||||
|
||||
@@ -186,7 +186,7 @@ internal class MangaPark(context: MangaLoaderContext) :
|
||||
},
|
||||
tags = tags,
|
||||
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 href = a.attrAsRelativeUrl("href")
|
||||
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 script = if (doc.selectFirst("script:containsData(comic-)") != null) {
|
||||
doc.selectFirstOrThrow("script:containsData(comic-)").data()
|
||||
.substringAfterLast("\"comic-").split("\",\"")
|
||||
.substringAfterLast("\"comic-")
|
||||
} else {
|
||||
doc.selectFirstOrThrow("script:containsData(manga-)").data()
|
||||
.substringAfterLast("\"manga-").split("\",\"")
|
||||
.substringAfterLast("\"manga-")
|
||||
}
|
||||
return script.mapNotNull { url ->
|
||||
if (!url.startsWith("https://")) {
|
||||
return@mapNotNull null
|
||||
} else {
|
||||
MangaPage(
|
||||
id = generateUid(url),
|
||||
url = url,
|
||||
preview = null,
|
||||
source = source,
|
||||
)
|
||||
return Regex("\"(https?:.+?)\"")
|
||||
.findAll(script)
|
||||
.mapNotNullTo(ArrayList()) {
|
||||
val url = it.groupValues.getOrNull(1) ?: return@mapNotNullTo null
|
||||
if (url.contains("/comic/") || url.contains("/manga/")) {
|
||||
MangaPage(
|
||||
id = generateUid(url),
|
||||
url = url,
|
||||
preview = null,
|
||||
source = source,
|
||||
)
|
||||
} else {
|
||||
return@mapNotNullTo null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.util.*
|
||||
|
||||
@MangaSourceParser("ISEKAISCAN_EU", "IsekaiScan.to", "en")
|
||||
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 withoutAjax = true
|
||||
|
||||
@@ -14,5 +14,7 @@ internal class Manganato(context: MangaLoaderContext) :
|
||||
"chapmanganato.to",
|
||||
"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")
|
||||
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 listUrl = "/series"
|
||||
|
||||
override val availableSortOrders: Set<SortOrder> = EnumSet.of(SortOrder.ALPHABETICAL)
|
||||
override val availableStates: Set<MangaState> = emptySet()
|
||||
override val isMultipleTagsSupported = false
|
||||
override val isSearchSupported = false
|
||||
override val isSearchSupported = true
|
||||
override val isTagsExclusionSupported = false
|
||||
|
||||
// TODO Query created in json
|
||||
|
||||
@@ -55,7 +55,7 @@ class FaviconParser(
|
||||
|
||||
private suspend fun parseManifest(url: String): List<Favicon> {
|
||||
val json = webClient.httpGet(url).parseJson()
|
||||
val icons = json.getJSONArray("icons")
|
||||
val icons = json.optJSONArray("icons") ?: return emptyList()
|
||||
return icons.mapJSON { jo ->
|
||||
Favicon(
|
||||
url = jo.getString("src").resolveLink(),
|
||||
|
||||
Reference in New Issue
Block a user