fix pagination komikcast

pull/223/head
devi 3 years ago
parent 87d4326411
commit be3812fa2f

@ -33,7 +33,7 @@ internal abstract class MangaReaderParser(
private var tagCache: ArrayMap<String, MangaTag>? = null
private val mutex = Mutex()
private var lastSearchPage = 1
protected open var lastSearchPage = 1
protected open val selectChapter = "#chapterlist > ul > li"
override suspend fun getDetails(manga: Manga): Manga {

@ -16,8 +16,6 @@ internal class SwaTeam(context: MangaLoaderContext) :
override val selectMangalist = ".listupd .bs .bsx"
override val selectMangaListImg = "img"
private var lastSearchPage = 1
// Tag doesn't work on manga page ( it comes from website )
override suspend fun getListPage(
page: Int,

@ -23,7 +23,8 @@ internal class Zahard(context: MangaLoaderContext) :
override val sortOrders: Set<SortOrder>
get() = EnumSet.of(SortOrder.NEWEST)
private var lastSearchPage = 1
override suspend fun getListPage(
page: Int,
query: String?,

@ -19,6 +19,58 @@ internal class Komikcast(context: MangaLoaderContext) :
override val datePattern = "MMM d, yyyy"
override val sourceLocale: Locale = Locale.ENGLISH
override suspend fun getListPage(
page: Int,
query: String?,
tags: Set<MangaTag>?,
sortOrder: SortOrder,
): List<Manga> {
if (!query.isNullOrEmpty()) {
if (page > lastSearchPage) {
return emptyList()
}
val url = buildString {
append("https://")
append(domain)
append("/page/")
append(page)
append("/?s=")
append(query.urlEncoded())
}
val docs = webClient.httpGet(url).parseHtml()
lastSearchPage = docs.selectFirst(".pagination .next")
?.previousElementSibling()
?.text()?.toIntOrNull() ?: 1
return parseMangaList(docs)
}
val sortQuery = when (sortOrder) {
SortOrder.ALPHABETICAL -> "title"
SortOrder.NEWEST -> "latest"
SortOrder.POPULARITY -> "popular"
SortOrder.UPDATED -> "update"
else -> ""
}
val tagKey = "genre[]".urlEncoded()
val tagQuery =
if (tags.isNullOrEmpty()) "" else tags.joinToString(separator = "&", prefix = "&") { "$tagKey=${it.key}" }
val url = buildString {
append("https://")
append(domain)
append(listUrl)
append("/page/")
append(page)
append("/?order=")
append(sortQuery)
append(tagQuery)
}
return parseMangaList(webClient.httpGet(url).parseHtml())
}
override suspend fun getDetails(manga: Manga): Manga {
val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml()
val dateFormat = SimpleDateFormat(datePattern, sourceLocale)

Loading…
Cancel
Save