CBHentai: fix uri path changed & search failed with special characters (#7671)

* CBHentai: fix uri path changed

also fix altNameSelector

* extract regex

* move comment

* fix search

* HttpUrlBuilder
This commit is contained in:
Cuong-Tran 2025-02-20 21:45:13 +07:00 committed by Draff
parent 10aa286c04
commit 63558a4cdb
No known key found for this signature in database
GPG Key ID: E8A89F3211677653
2 changed files with 48 additions and 1 deletions

View File

@ -3,7 +3,7 @@ ext {
extClass = '.HentaiCB' extClass = '.HentaiCB'
themePkg = 'madara' themePkg = 'madara'
baseUrl = 'https://hentaicube.xyz' baseUrl = 'https://hentaicube.xyz'
overrideVersionCode = 11 overrideVersionCode = 12
isNsfw = true isNsfw = true
} }

View File

@ -1,8 +1,15 @@
package eu.kanade.tachiyomi.extension.vi.hentaicube package eu.kanade.tachiyomi.extension.vi.hentaicube
import eu.kanade.tachiyomi.multisrc.madara.Madara import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.asObservableSuccess
import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.MangasPage
import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SManga
import okhttp3.HttpUrl.Companion.toHttpUrl
import org.jsoup.nodes.Document import org.jsoup.nodes.Document
import rx.Observable
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Locale import java.util.Locale
@ -12,6 +19,46 @@ class HentaiCB : Madara("CBHentai", "https://hentaicube.xyz", "vi", SimpleDateFo
override val filterNonMangaItems = false override val filterNonMangaItems = false
// Changed from 'manga' to 'read'
override val mangaSubString = "read"
override val altNameSelector = ".post-content_item:contains(Tên khác) .summary-content"
override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> {
if (query.startsWith(URL_SEARCH_PREFIX)) {
val mangaUrl = baseUrl.toHttpUrl().newBuilder().apply {
addPathSegment("manga")
addPathSegment(query.substringAfter(URL_SEARCH_PREFIX))
}.build()
return client.newCall(GET(mangaUrl, headers))
.asObservableSuccess().map { response ->
val manga = mangaDetailsParse(response).apply {
setUrlWithoutDomain(mangaUrl.toString())
}
MangasPage(listOf(manga), false)
}
}
// Special characters causing search to fail
val queryFixed = query
.replace("", "-")
.replace("", "'")
.replace("", "\"")
.replace("", "\"")
.replace("", "...")
return super.fetchSearchManga(page, queryFixed, filters)
}
private val oldMangaUrlRegex = Regex("""^$baseUrl/read/""")
// Change old entries from 'read' to 'manga'
override fun getMangaUrl(manga: SManga): String {
return super.getMangaUrl(manga)
.replace(oldMangaUrlRegex, "$baseUrl/manga/")
}
override fun pageListParse(document: Document): List<Page> { override fun pageListParse(document: Document): List<Page> {
return super.pageListParse(document).distinctBy { it.imageUrl } return super.pageListParse(document).distinctBy { it.imageUrl }
} }