From f809d724a05b5cfce9d7ee1973145ea0c3cee455 Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Thu, 5 Jun 2025 20:09:55 +0800 Subject: [PATCH] Reapply "Store pToken in `GalleryPreview` and refine parser" (#2390) This reverts commit 5b8d3a282481a22633243423f8d29fe02908572e. Reason for revert: Reland with fix Also clear invalid pToken --- .../ehviewer/client/data/GalleryPreview.kt | 15 ++++--- .../client/parser/GalleryDetailParser.kt | 44 ++++++------------- .../com/hippo/ehviewer/coil/Extensions.kt | 5 ++- .../hippo/ehviewer/legacy/SpiderInfoCompat.kt | 12 ++--- .../com/hippo/ehviewer/spider/SpiderInfo.kt | 2 - .../com/hippo/ehviewer/spider/SpiderQueen.kt | 34 ++++++-------- .../ui/screen/GalleryDetailContent.kt | 2 +- 7 files changed, 48 insertions(+), 66 deletions(-) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/client/data/GalleryPreview.kt b/app/src/main/kotlin/com/hippo/ehviewer/client/data/GalleryPreview.kt index 50c373c39..f9b181e68 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/client/data/GalleryPreview.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/client/data/GalleryPreview.kt @@ -15,26 +15,31 @@ */ package com.hippo.ehviewer.client.data -import com.hippo.ehviewer.client.keyToUrl +import com.hippo.ehviewer.client.getThumbKey +import com.hippo.ehviewer.client.getV2PreviewKey sealed interface GalleryPreview { val url: String val imageKey: String val position: Int + val pToken: String } data class V1GalleryPreview( - override val imageKey: String, + override val url: String, override val position: Int, + override val pToken: String, ) : GalleryPreview { - override val url get() = keyToUrl(imageKey) + override val imageKey get() = getThumbKey(url) } data class V2GalleryPreview( override val url: String, - override val imageKey: String, override val position: Int, + override val pToken: String, val offsetX: Int, val clipWidth: Int, val clipHeight: Int, -) : GalleryPreview +) : GalleryPreview { + override val imageKey get() = getV2PreviewKey(url) +} diff --git a/app/src/main/kotlin/com/hippo/ehviewer/client/parser/GalleryDetailParser.kt b/app/src/main/kotlin/com/hippo/ehviewer/client/parser/GalleryDetailParser.kt index ff36b0112..1d1553c69 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/client/parser/GalleryDetailParser.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/client/parser/GalleryDetailParser.kt @@ -17,7 +17,6 @@ package com.hippo.ehviewer.client.parser import arrow.core.Either import arrow.core.getOrElse -import arrow.core.unzip import com.hippo.ehviewer.EhDB import com.hippo.ehviewer.Settings import com.hippo.ehviewer.client.EhFilter @@ -40,7 +39,6 @@ import com.hippo.ehviewer.client.exception.OffensiveException import com.hippo.ehviewer.client.exception.ParseException import com.hippo.ehviewer.client.exception.PiningException import com.hippo.ehviewer.client.getThumbKey -import com.hippo.ehviewer.client.getV2PreviewKey import com.hippo.ehviewer.util.toEpochMillis import com.hippo.ehviewer.util.toFloatOrDefault import com.hippo.ehviewer.util.toIntOrDefault @@ -57,25 +55,21 @@ import org.jsoup.select.NodeTraversor object GalleryDetailParser { private val PATTERN_ERROR = Regex("
([^<]+)
") - private val PATTERN_DETAIL = Regex( - "var gid = (\\d+);.+?var token = \"([a-f0-9]+)\";.+?var apiuid = ([\\-\\d]+);.+?var apikey = \"([a-f0-9]+)\";", - RegexOption.DOT_MATCHES_ALL, - ) + private val PATTERN_DETAIL = + Regex("var gid = (\\d+);\\s+var token = \"([a-f0-9]+)\";\\s+var apiuid = ([\\-\\d]+);\\s+var apikey = \"([a-f0-9]+)\";") private val PATTERN_TORRENT = Regex("]*onclick=\"return popUp\\('([^']+)'[^)]+\\)\">Torrent Download \\((\\d+)\\)") private val PATTERN_ARCHIVE = Regex("]*onclick=\"return popUp\\('([^']+)'[^)]+\\)\">Archive Download") - private val PATTERN_COVER = Regex("width:(\\d+)px; height:(\\d+)px.+?url\\((.+?)\\)") + private val PATTERN_COVER = Regex("(\\d+)\\D+(\\d+)[^(]+\\(([^)]+)") private val PATTERN_PAGES = Regex("