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:
parent
284d807f53
commit
7d754490b8
@ -3,7 +3,7 @@ ext {
|
|||||||
extClass = '.Bakamh'
|
extClass = '.Bakamh'
|
||||||
themePkg = 'madara'
|
themePkg = 'madara'
|
||||||
baseUrl = 'https://bakamh.com'
|
baseUrl = 'https://bakamh.com'
|
||||||
overrideVersionCode = 3
|
overrideVersionCode = 4
|
||||||
isNsfw = true
|
isNsfw = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,9 @@ package eu.kanade.tachiyomi.extension.zh.bakamh
|
|||||||
|
|
||||||
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
||||||
import eu.kanade.tachiyomi.source.model.SChapter
|
import eu.kanade.tachiyomi.source.model.SChapter
|
||||||
|
import eu.kanade.tachiyomi.util.asJsoup
|
||||||
import okhttp3.Headers
|
import okhttp3.Headers
|
||||||
|
import okhttp3.Response
|
||||||
import org.jsoup.nodes.Element
|
import org.jsoup.nodes.Element
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
@ -15,16 +17,42 @@ class Bakamh : Madara(
|
|||||||
) {
|
) {
|
||||||
override val mangaDetailsSelectorStatus = ".post-content_item:contains(状态) .summary-content"
|
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 {
|
override fun headersBuilder(): Headers.Builder {
|
||||||
return super.headersBuilder()
|
return super.headersBuilder()
|
||||||
.add("Accept-Language", "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7")
|
.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 {
|
override fun chapterListSelector() = ".chapter-loveYou, li a[onclick], li a"
|
||||||
val urlElement = element.selectFirst(chapterUrlSelector)!!
|
|
||||||
url = urlElement.attr("abs:data-chapter-url")
|
override fun chapterListParse(response: Response): List<SChapter> {
|
||||||
name = urlElement.text()
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user