From ae60e8cbd54e60cac497366eec8d4d4d36fe6ebe Mon Sep 17 00:00:00 2001 From: Taumer Date: Thu, 2 Feb 2017 18:02:02 +0300 Subject: [PATCH] Fix Mangachan issue from #628 (#667) --- .../source/online/russian/Mangachan.kt | 46 +++++++++++-------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/russian/Mangachan.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/russian/Mangachan.kt index 3444418ac..0868e4cdc 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/russian/Mangachan.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/russian/Mangachan.kt @@ -28,16 +28,21 @@ class Mangachan : ParsedHttpSource() { } override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + var pageNum = 1 + when { + page < 1 -> pageNum = 1 + page >= 1 -> pageNum = page + } val url = if (query.isNotEmpty()) { - "$baseUrl/?do=search&subaction=search&story=$query" + "$baseUrl/?do=search&subaction=search&story=$query&search_start=$pageNum" } else { val filt = filters.filterIsInstance().filter { !it.isIgnored() } if (filt.isNotEmpty()) { var genres = "" filt.forEach { genres += (if (it.isExcluded()) "-" else "") + it.id + '+' } - "$baseUrl/tags/${genres.dropLast(1)}" + "$baseUrl/tags/${genres.dropLast(1)}?offset=${20 * (pageNum - 1)}" } else { - "$baseUrl/?do=search&subaction=search&story=$query" + "$baseUrl/?do=search&subaction=search&story=$query&search_start=$pageNum" } } return GET(url, headers) @@ -85,28 +90,29 @@ class Mangachan : ParsedHttpSource() { override fun searchMangaParse(response: Response): MangasPage { val document = response.asJsoup() + var hasNextPage = false + val mangas = document.select(searchMangaSelector()).map { element -> searchMangaFromElement(element) } - // FIXME -// val allIgnore = filters.all { it.state == Filter.TriState.STATE_IGNORE } -// searchMangaNextPageSelector().let { selector -> -// if (page.nextPageUrl.isNullOrEmpty() && allIgnore) { -// val onClick = document.select(selector).first()?.attr("onclick") -// val pageNum = onClick?.substring(23, onClick.indexOf("); return(false)")) -// page.nextPageUrl = searchMangaInitialUrl(query, emptyList()) + "&search_start=" + pageNum -// } -// } -// -// searchGenresNextPageSelector().let { selector -> -// if (page.nextPageUrl.isNullOrEmpty() && !allIgnore) { -// val url = document.select(selector).first()?.attr("href") -// page.nextPageUrl = searchMangaInitialUrl(query, filters) + url -// } -// } + val nextSearchPage = document.select(searchMangaNextPageSelector()) + if (nextSearchPage.isNotEmpty()) { + val query = document.select("input#searchinput").first().attr("value") + val pageNum = nextSearchPage.let { selector -> + val onClick = selector.attr("onclick") + onClick?.split("""\\d+""") + } + nextSearchPage.attr("href", "$baseUrl/?do=search&subaction=search&story=$query&search_start=$pageNum") + hasNextPage = true + } - return MangasPage(mangas, false) + val nextGenresPage = document.select(searchGenresNextPageSelector()) + if (nextGenresPage.isNotEmpty()) { + hasNextPage = true + } + + return MangasPage(mangas, hasNextPage) } override fun mangaDetailsParse(document: Document): SManga {