Paginate popular and search responses in MangaPlus (#18719)

* Paginate popular and search responses in MangaPlus.

* Remove Log debugging info.
This commit is contained in:
Alessandro Jean 2023-10-25 17:07:16 -03:00 committed by GitHub
parent ae81ee5ded
commit afba087eb4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 4 deletions

View File

@ -6,7 +6,7 @@ ext {
extName = 'MANGA Plus by SHUEISHA'
pkgNameSuffix = 'all.mangaplus'
extClass = '.MangaPlusFactory'
extVersionCode = 48
extVersionCode = 49
}
dependencies {

View File

@ -81,6 +81,7 @@ class MangaPlus(
override fun popularMangaRequest(page: Int): Request {
val newHeaders = headersBuilder()
.set("Referer", "$baseUrl/manga_list/hot")
.set("X-Page", page.toString())
.build()
return GET("$API_URL/title_list/ranking?format=json", newHeaders)
@ -98,7 +99,13 @@ class MangaPlus(
titleCache = titleList.associateBy(Title::titleId)
return MangasPage(titleList.map(Title::toSManga), hasNextPage = false)
val page = response.request.headers["X-Page"]!!.toInt()
val pageList = titleList
.drop((page - 1) * LISTING_ITEMS_PER_PAGE)
.take(LISTING_ITEMS_PER_PAGE)
val hasNextPage = (page + 1) * LISTING_ITEMS_PER_PAGE <= titleList.size
return MangasPage(pageList.map(Title::toSManga), hasNextPage)
}
override fun latestUpdatesRequest(page: Int): Request {
@ -146,6 +153,7 @@ class MangaPlus(
val newHeaders = headersBuilder()
.set("Referer", "$baseUrl/manga_list/all")
.set("X-Page", page.toString())
.build()
val apiUrl = "$API_URL/title_list/allV2".toHttpUrl().newBuilder()
@ -205,7 +213,13 @@ class MangaPlus(
title.author.orEmpty().contains(filter, ignoreCase = true)
}
return MangasPage(searchResults.map(Title::toSManga), hasNextPage = false)
val page = response.request.headers["X-Page"]!!.toInt()
val pageList = searchResults
.drop((page - 1) * LISTING_ITEMS_PER_PAGE)
.take(LISTING_ITEMS_PER_PAGE)
val hasNextPage = (page + 1) * LISTING_ITEMS_PER_PAGE <= searchResults.size
return MangasPage(pageList.map(Title::toSManga), hasNextPage)
}
// Remove the '#' and map to the new url format used in website.
@ -413,7 +427,9 @@ class MangaPlus(
companion object {
private const val API_URL = "https://jumpg-webapi.tokyo-cdn.com/api"
private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " +
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
private const val LISTING_ITEMS_PER_PAGE = 20
private const val QUALITY_PREF_KEY = "imageResolution"
private val QUALITY_PREF_ENTRY_VALUES = arrayOf("low", "high", "super_high")