diff --git a/build.gradle b/build.gradle
index b8d86236e..cbf87048a 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 7e7280ba5..b18a0dad6 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 06acadeb4..ab7d471db 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 286372bc9..13feeebf7 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 675204455..0bde4f090 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"
|