From 016ced24e0a673a1564bf2bf655a34bb6647ad15 Mon Sep 17 00:00:00 2001 From: Naga <94557604+NagaYZ@users.noreply.github.com> Date: Wed, 13 Mar 2024 00:13:02 +0100 Subject: [PATCH] added pagination --- .idea/.gitignore | 2 ++ .../parsers/site/nepnep/NepnepParser.kt | 26 ++++++++++++++----- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/.idea/.gitignore b/.idea/.gitignore index 26d33521..8f00030d 100644 --- a/.idea/.gitignore +++ b/.idea/.gitignore @@ -1,3 +1,5 @@ # Default ignored files /shelf/ /workspace.xml +# GitHub Copilot persisted chat sessions +/copilot/chatSessions diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/NepnepParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/NepnepParser.kt index 5de7975c..610f3b0c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/NepnepParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/NepnepParser.kt @@ -3,6 +3,7 @@ package org.koitharu.kotatsu.parsers.site.nepnep import okhttp3.Headers import org.json.JSONArray import org.json.JSONObject +import org.jsoup.nodes.Document import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaParser import org.koitharu.kotatsu.parsers.config.ConfigKey @@ -12,9 +13,12 @@ import org.koitharu.kotatsu.parsers.util.* import org.koitharu.kotatsu.parsers.util.json.getStringOrNull import org.koitharu.kotatsu.parsers.util.json.mapJSONIndexed import org.koitharu.kotatsu.parsers.util.json.toJSONList +import org.koitharu.kotatsu.parsers.util.SoftSuspendLazy +import org.koitharu.kotatsu.parsers.util.SuspendLazy import java.text.SimpleDateFormat import java.util.* + internal abstract class NepnepParser( context: MangaLoaderContext, source: MangaSource, @@ -31,19 +35,22 @@ internal abstract class NepnepParser( .add("User-Agent", UserAgents.CHROME_DESKTOP) .build() + private lateinit var docCache: Document + private var mangaListCache: List = emptyList() + data class MangaWithLastUpdate( val manga: Manga, val lastUpdate: Long, val views: String ) override suspend fun getList(offset: Int, filter: MangaListFilter?): List { - if (offset > 0) { - return emptyList() + val doc = if (::docCache.isInitialized) { + docCache + }else{ + webClient.httpGet("https://$domain/search/").parseHtml() } - val doc = webClient.httpGet("https://$domain/search/").parseHtml() - val json = JSONArray( - doc.selectFirstOrThrow("script:containsData(MainFunction)").data() + val json = JSONArray(doc.selectFirstOrThrow("script:containsData(MainFunction)").data() .substringAfter("vm.Directory = ") .substringBefore("vm.GetIntValue") .trim() @@ -116,7 +123,7 @@ internal abstract class NepnepParser( } } } - return mangaWithLastUpdateList.map { it.manga } + return mangaWithLastUpdateList.map { it.manga }.subList(offset, (offset + 30).coerceAtMost(mangaWithLastUpdateList.size)) } private fun addManga(href: String, imgUrl: String, m: JSONObject): Manga { @@ -136,8 +143,13 @@ internal abstract class NepnepParser( ) } + override suspend fun getAvailableTags(): Set { - val doc = webClient.httpGet("https://$domain/search/").parseHtml() + val doc = if (::docCache.isInitialized) { + docCache + }else{ + webClient.httpGet("https://$domain/search/").parseHtml() + } val tags = doc.selectFirstOrThrow("script:containsData(vm.AvailableFilters)").data() .substringAfter("\"Genre\"") .substringAfter('[')