From 69669f0a50cc484f402901095c87571b831c4844 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E7=99=BD-=E7=99=BD?= Date: Fri, 25 Oct 2024 20:34:55 +0800 Subject: [PATCH] Fix archive download --- app/src/main/kotlin/com/hippo/ehviewer/client/EhEngine.kt | 2 +- app/src/main/kotlin/com/hippo/ehviewer/client/EhUrl.kt | 4 ++-- .../kotlin/com/hippo/ehviewer/client/parser/ArchiveParser.kt | 5 ++--- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/client/EhEngine.kt b/app/src/main/kotlin/com/hippo/ehviewer/client/EhEngine.kt index ad9a3d39b..1a8a1d2db 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/client/EhEngine.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/client/EhEngine.kt @@ -306,7 +306,7 @@ object EhEngine { suspend fun getFavoriteNote(gid: Long, token: String) = ehRequest(EhUrl.getAddFavorites(gid, token), EhUrl.getGalleryDetailUrl(gid, token)) .fetchUsingAsText(FavoritesParser::parseNote) - suspend fun downloadArchive(gid: Long, token: String, or: String, res: String, isHAtH: Boolean): String? { + suspend fun downloadArchive(gid: Long, token: String, or: String?, res: String, isHAtH: Boolean): String? { val url = EhUrl.getDownloadArchive(gid, token, or) val referer = EhUrl.getGalleryDetailUrl(gid, token) val request = ehRequest(url, referer, EhUrl.origin) { diff --git a/app/src/main/kotlin/com/hippo/ehviewer/client/EhUrl.kt b/app/src/main/kotlin/com/hippo/ehviewer/client/EhUrl.kt index 8ef49a682..9ab93744f 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/client/EhUrl.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/client/EhUrl.kt @@ -125,10 +125,10 @@ object EhUrl { addQueryParameter("act", "addfav") }.buildString() - fun getDownloadArchive(gid: Long, token: String, or: String) = ehUrl("archiver.php") { + fun getDownloadArchive(gid: Long, token: String, or: String?) = ehUrl("archiver.php") { addQueryParameter("gid", "$gid") addQueryParameter("token", token) - addQueryParameter("or", or) + addQueryParameterIfNotBlank("or", or) }.buildString() fun getTagDefinitionUrl(tag: String) = "https://ehwiki.org/wiki/" + tag.replace(' ', '_') diff --git a/app/src/main/kotlin/com/hippo/ehviewer/client/parser/ArchiveParser.kt b/app/src/main/kotlin/com/hippo/ehviewer/client/parser/ArchiveParser.kt index e1870a710..60b4b1065 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/client/parser/ArchiveParser.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/client/parser/ArchiveParser.kt @@ -35,8 +35,7 @@ object ArchiveParser { "You do not have enough funds to download this archive." fun parse(body: String, maybeFunds: Funds?): Result { - val m = PATTERN_HATH_FORM.find(body)!! - val paramOr = m.groupValues[1] + val paramOr = PATTERN_HATH_FORM.find(body)?.groupValues[1] val archiveList = ArrayList() Jsoup.parse(body).select("#db>div>div").forEach { element -> if (element.childrenSize() > 0 && !element.attr("style").contains("color:#CCCCCC")) { @@ -78,7 +77,7 @@ object ArchiveParser { // TODO: Check more errors } - data class Result(val paramOr: String, val archiveList: List, val funds: Funds) + data class Result(val paramOr: String?, val archiveList: List, val funds: Funds) } class Archive(