diff --git a/src/vi/hentaicube/build.gradle b/src/vi/hentaicube/build.gradle index 7acd2eb3b..109529026 100644 --- a/src/vi/hentaicube/build.gradle +++ b/src/vi/hentaicube/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.HentaiCB' themePkg = 'madara' baseUrl = 'https://hentaicube.xyz' - overrideVersionCode = 11 + overrideVersionCode = 12 isNsfw = true } diff --git a/src/vi/hentaicube/src/eu/kanade/tachiyomi/extension/vi/hentaicube/HentaiCB.kt b/src/vi/hentaicube/src/eu/kanade/tachiyomi/extension/vi/hentaicube/HentaiCB.kt index 2b5f37904..0313f3865 100644 --- a/src/vi/hentaicube/src/eu/kanade/tachiyomi/extension/vi/hentaicube/HentaiCB.kt +++ b/src/vi/hentaicube/src/eu/kanade/tachiyomi/extension/vi/hentaicube/HentaiCB.kt @@ -1,8 +1,15 @@ package eu.kanade.tachiyomi.extension.vi.hentaicube 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.SManga +import okhttp3.HttpUrl.Companion.toHttpUrl import org.jsoup.nodes.Document +import rx.Observable import java.text.SimpleDateFormat import java.util.Locale @@ -12,6 +19,46 @@ class HentaiCB : Madara("CBHentai", "https://hentaicube.xyz", "vi", SimpleDateFo 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 { + 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 { return super.pageListParse(document).distinctBy { it.imageUrl } }