fix(bakamh): fix unable to load chapter (#11180)

* fix(bakamh): fix unable to load chapter

* refactor(bakamh): optimize chapter list parsing logic

- Consolidate chapter selectors into single method
This commit is contained in:
marioplus 2025-10-23 18:33:31 +08:00 committed by Draff
parent 284d807f53
commit 7d754490b8
Signed by: Draff
GPG Key ID: E8A89F3211677653
2 changed files with 35 additions and 7 deletions

View File

@ -3,7 +3,7 @@ ext {
extClass = '.Bakamh'
themePkg = 'madara'
baseUrl = 'https://bakamh.com'
overrideVersionCode = 3
overrideVersionCode = 4
isNsfw = true
}

View File

@ -2,7 +2,9 @@ package eu.kanade.tachiyomi.extension.zh.bakamh
import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.Headers
import okhttp3.Response
import org.jsoup.nodes.Element
import java.text.SimpleDateFormat
import java.util.Locale
@ -15,16 +17,42 @@ class Bakamh : Madara(
) {
override val mangaDetailsSelectorStatus = ".post-content_item:contains(状态) .summary-content"
override fun chapterListSelector() = "div.tab-content li:has(a[data-chapter-url])"
override fun headersBuilder(): Headers.Builder {
return super.headersBuilder()
.add("Accept-Language", "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7")
}
override fun chapterFromElement(element: Element) = SChapter.create().apply {
val urlElement = element.selectFirst(chapterUrlSelector)!!
url = urlElement.attr("abs:data-chapter-url")
name = urlElement.text()
override fun chapterListSelector() = ".chapter-loveYou, li a[onclick], li a"
override fun chapterListParse(response: Response): List<SChapter> {
val mangaUrl = response.request.url.toString().lowercase()
val doc = response.asJsoup()
return doc.select(chapterListSelector())
.mapNotNull { paresChapter(it, mangaUrl) }
}
fun paresChapter(element: Element, mangaUrl: String): SChapter? {
// current url attribute
if (element.hasAttr("storage-chapter-url")) {
return SChapter.create().apply {
url = element.absUrl("storage-chapter-url")
name = element.text()
chapter_number = 0F
}
}
// compatibility operation for modified versions
return element.attributes()
.find { attr ->
val value = attr.value.lowercase()
value.startsWith(mangaUrl) && value != mangaUrl
}
?.let { attr ->
SChapter.create().apply {
url = element.absUrl(attr.key)
name = element.text()
chapter_number = 0F
}
}
}
}