Madtheme: fix chapters fetching (#7270)

* add chapters fetch preferences

* bump

* remove fetching preferences and call both enpoints

* remove const

* fix
This commit is contained in:
dngonz 2025-01-23 01:58:59 +01:00 committed by Draff
parent 936a7f1fde
commit 3f86aa1c40
No known key found for this signature in database
GPG Key ID: E8A89F3211677653
2 changed files with 22 additions and 10 deletions

View File

@ -2,4 +2,4 @@ plugins {
id("lib-multisrc")
}
baseVersionCode = 15
baseVersionCode = 16

View File

@ -13,6 +13,7 @@ import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import eu.kanade.tachiyomi.util.asJsoup
import kotlinx.serialization.json.Json
import okhttp3.Headers
import okhttp3.HttpUrl
import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
import okhttp3.OkHttpClient
@ -183,18 +184,19 @@ abstract class MadTheme(
val bookId = script.data().substringAfter("bookId = ").substringBefore(";")
val bookSlug = script.data().substringAfter("bookSlug = \"").substringBefore("\";")
// Find by bookId, if no result then try with slug
var chapterRequest =
client.newCall(GET("$baseUrl/api/manga/$bookId/chapters?source=detail", headers))
.execute()
// At this moment we can not decide which endpoint has the chapters, so we call both.
val idRequest = client.newCall(GET(buildChapterUrl(bookId), headers)).execute()
val slugRequest = client.newCall(GET(buildChapterUrl(bookSlug), headers)).execute()
if (chapterRequest.code !in 200..299) {
chapterRequest =
client.newCall(GET("$baseUrl/api/manga/$bookSlug/chapters?source=detail", headers))
.execute()
// By default the id request will be the final, due to some extension don't even has slug fetch.
var finalDocument = idRequest.asJsoup().select(chapterListSelector())
val slugDocument = slugRequest.asJsoup().select(chapterListSelector())
if (finalDocument.size < slugDocument.size) {
finalDocument = slugDocument
}
return chapterRequest.asJsoup().select("#chapter-list > li").map {
return finalDocument.map {
SChapter.create().apply {
url = it.selectFirst("a")!!.absUrl("href").removePrefix(baseUrl)
name = it.selectFirst(".chapter-title")!!.text()
@ -203,6 +205,16 @@ abstract class MadTheme(
}
}
private fun buildChapterUrl(fetchByParam: String): HttpUrl {
return baseUrl.toHttpUrl().newBuilder().apply {
addPathSegment("api")
addPathSegment("manga")
addPathSegment(fetchByParam)
addPathSegment("chapters")
addQueryParameter("source", "detail")
}.build()
}
override fun chapterListRequest(manga: SManga): Request =
MANGA_ID_REGEX.find(manga.url)?.groupValues?.get(1)?.let { mangaId ->
val url = "$baseUrl/service/backend/chaplist/".toHttpUrl().newBuilder()