Madokami: Fix Manga details failed to load on deep subdirectory (#15989)

* Update Madokami.kt

* Update Madokami.kt

* Update build.gradle

* Update Madokami.kt

* Update Madokami.kt

* Update Madokami.kt
This commit is contained in:
mage-goo 2023-04-09 21:11:15 +07:00 committed by GitHub
parent fc472f4c5e
commit 5022738fc0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 3 deletions

View File

@ -6,7 +6,7 @@ ext {
extName = 'Madokami'
pkgNameSuffix = 'en.madokami'
extClass = '.Madokami'
extVersionCode = 6
extVersionCode = 7
}
apply from: "$rootDir/common.gradle"

View File

@ -86,10 +86,17 @@ class Madokami : ConfigurableSource, ParsedHttpSource() {
override fun mangaDetailsRequest(manga: SManga): Request {
val url = (baseUrl + manga.url).toHttpUrlOrNull()!!
if (url.pathSize > 5 && url.pathSegments[0] == "Manga" && url.pathSegments[1].length == 1) {
return authenticate(GET(url.newBuilder().removePathSegment(5).build().toUrl().toExternalForm(), headers))
val builder = url.newBuilder()
for (i in 5 until url.pathSize) { builder.removePathSegment(5) }
return authenticate(GET(builder.build().toUrl().toExternalForm(), headers))
}
if (url.pathSize > 2 && url.pathSegments[0] == "Raws") {
return authenticate(GET(url.newBuilder().removePathSegment(2).build().toUrl().toExternalForm(), headers))
val builder = url.newBuilder()
// to accomodate path pattern of /Raws/Magz/Series, this will remove all latter path segments that starts with !
// will fails if there's ever manga with ! prefix, but for now it works
var i = url.pathSize - 1
while (url.pathSegments[i].startsWith("!") && i >= 2) { builder.removePathSegment(i); i--; }
return authenticate(GET(builder.build().toUrl().toExternalForm(), headers))
}
return authenticate(GET(url.toUrl().toExternalForm(), headers))
}
@ -109,6 +116,8 @@ class Madokami : ConfigurableSource, ParsedHttpSource() {
return manga
}
override fun getMangaUrl(manga: SManga) = "$baseUrl/" + manga.url.trimStart('/')
override fun chapterListRequest(manga: SManga) = authenticate(GET("$baseUrl/" + manga.url, headers))
override fun chapterListParse(response: Response): List<SChapter> = super.chapterListParse(response).reversed()