[Ahen] Fix chapters parsing

Koitharu 2 years ago
parent f794f411b7
commit 7dd9658864
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -131,6 +131,8 @@ internal abstract class GroupleParser(
if (chaptersList == null && root.getElementsContainingOwnText(NO_CHAPTERS).isEmpty()) {
root.parseFailed("No chapters found")
}
val hashRegex = Regex("window.user_hash\\s*=\\s*\'([^\']+)\'")
val userHash = doc.select("script").firstNotNullOfOrNull { it.html().findGroupValue(hashRegex) }
return manga.copy(
source = newSource,
title = doc.metaValue("name") ?: manga.title,
@ -153,7 +155,7 @@ internal abstract class GroupleParser(
chapters = chaptersList?.select("a.chapter-link")
?.flatMapChapters(reversed = true) { a ->
val tr = a.selectFirstParent("tr") ?: return@flatMapChapters emptyList()
val href = a.attrAsRelativeUrl("href")
val href = a.attrAsRelativeUrl("href").setQueryParam("d", userHash)
val number = tr.attr("data-num").toFloatOrNull()?.div(10f) ?: 0f
val volume = tr.attr("data-vol").toIntOrNull() ?: 0
if (translations.isNullOrEmpty() || a.attr("data-translations").isEmpty()) {
@ -497,7 +499,8 @@ internal abstract class GroupleParser(
return result
}
private fun String.setQueryParam(name: String, value: String): String {
private fun String.setQueryParam(name: String, value: String?): String {
if (value == null) return this
return toAbsoluteUrl(domain)
.toHttpUrl()
.newBuilder()

@ -169,7 +169,9 @@ public fun String.substringBetweenLast(from: String, to: String, fallbackValue:
}
}
public fun String.find(regex: Regex) = regex.find(this)?.value
public fun String.find(regex: Regex): String? = regex.find(this)?.value
public fun String.findGroupValue(regex: Regex): String? = regex.find(this)?.groupValues?.getOrNull(1)
public fun String.removeSuffix(suffix: Char): String {
if (lastOrNull() == suffix) {

Loading…
Cancel
Save