From cf0073202377352c8cfc8f169d63bcc54719deab Mon Sep 17 00:00:00 2001 From: Koitharu Date: Thu, 5 Jan 2023 11:26:39 +0200 Subject: [PATCH] Misc parsers fixes --- build.gradle | 5 ++- buildSrc/src/main/resources/report.html | 31 +++++++++++++++++++ .../kotatsu/parsers/site/ComickFunParser.kt | 2 +- .../kotatsu/parsers/site/ExHentaiParser.kt | 9 ++++-- .../kotatsu/parsers/site/NudeMoonParser.kt | 5 ++- 5 files changed, 47 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index b8d86236..cbf87048 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,5 @@ +import tasks.ReportGenerateTask + plugins { id 'java-library' id 'org.jetbrains.kotlin.jvm' @@ -68,4 +70,5 @@ dependencies { testImplementation 'io.webfolder:quickjs:1.1.0' } -tasks.register('generateTestsReport') \ No newline at end of file +//noinspection ConfigurationAvoidance +task generateTestsReport(type: ReportGenerateTask) \ No newline at end of file diff --git a/buildSrc/src/main/resources/report.html b/buildSrc/src/main/resources/report.html index 7e7280ba..b18a0dad 100644 --- a/buildSrc/src/main/resources/report.html +++ b/buildSrc/src/main/resources/report.html @@ -51,6 +51,22 @@ data-bs-toggle="modal" style="cursor: pointer;"> + {% elseif case.failure.type == 'java.net.SocketTimeoutException' or case.failure.type == + 'java.net.UnknownHostException' %} + + + + {% elseif case.failure.type == 'org.koitharu.kotatsu.parsers.exception.CloudFlareProtectedException' %} + + + + {% elseif case.failure.type == 'org.koitharu.kotatsu.parsers.exception.AuthRequiredException' %} + + + {% else %} @@ -88,6 +104,21 @@ + + + + + + + + + + + + + + + diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ComickFunParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ComickFunParser.kt index 06acadeb..ab7d471d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ComickFunParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ComickFunParser.kt @@ -24,7 +24,7 @@ private const val CHAPTERS_LIMIT = 99999 @MangaSourceParser("COMICK_FUN", "ComicK") internal class ComickFunParser(override val context: MangaLoaderContext) : MangaParser(MangaSource.COMICK_FUN) { - override val configKeyDomain = ConfigKey.Domain("comick.fun", null) + override val configKeyDomain = ConfigKey.Domain("comick.app", null) override val sortOrders: Set = EnumSet.of( SortOrder.POPULARITY, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ExHentaiParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ExHentaiParser.kt index 286372bc..13feeebf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ExHentaiParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ExHentaiParser.kt @@ -58,9 +58,9 @@ internal class ExHentaiParser( init { context.cookieJar.insertCookies(DOMAIN_AUTHORIZED, "nw=1", "sl=dm_2") context.cookieJar.insertCookies(DOMAIN_UNAUTHORIZED, "nw=1", "sl=dm_2") + paginator.firstPage = 0 } - override suspend fun getListPage( page: Int, query: String?, @@ -68,11 +68,16 @@ internal class ExHentaiParser( sortOrder: SortOrder, ): List { var search = query?.urlEncoded().orEmpty() + val next = nextPages.get(page, 0L) + if (page > 0 && next == 0L) { + assert(false) { "Page timestamp not found" } + return emptyList() + } val url = buildString { append("https://") append(getDomain()) append("/?next=") - append(nextPages.get(page, 0L)) + append(next) if (!tags.isNullOrEmpty()) { var fCats = 0 for (tag in tags) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NudeMoonParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NudeMoonParser.kt index 67520445..0bde4f09 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NudeMoonParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NudeMoonParser.kt @@ -18,7 +18,10 @@ internal class NudeMoonParser( override val context: MangaLoaderContext, ) : MangaParser(MangaSource.NUDEMOON), MangaParserAuthProvider { - override val configKeyDomain = ConfigKey.Domain("nude-moon.net", null) + override val configKeyDomain = ConfigKey.Domain( + defaultValue = "nude-moon.org", + presetValues = arrayOf("nude-moon.org", "nude-moon.net"), + ) override val authUrl: String get() = "https://${getDomain()}/index.php"