Skip to content

Commit ae2021d

Browse files
authored
Merge pull request #355 from EhPanda-Team/develop
Bugfix
2 parents 211ffd9 + c0749f3 commit ae2021d

File tree

4 files changed

+76
-53
lines changed

4 files changed

+76
-53
lines changed

.github/workflows/deploy.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
types: [closed]
77
env:
88
DEVELOPER_DIR: /Applications/Xcode_15.0.1.app
9-
APP_VERSION: '2.7.3'
9+
APP_VERSION: '2.7.4'
1010
SCHEME_NAME: 'EhPanda'
1111
ALTSTORE_JSON_PATH: './AltStore.json'
1212
BUILDS_PATH: '/tmp/action-builds'

EhPanda/App/Tools/Parser.swift

Lines changed: 42 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -312,23 +312,47 @@ struct Parser {
312312
static func parseGalleryDetail(doc: HTMLDocument, gid: String) throws -> (GalleryDetail, GalleryState) {
313313
func parsePreviewConfig(doc: HTMLDocument) throws -> PreviewConfig {
314314
guard let previewMode = try? parsePreviewMode(doc: doc),
315-
let gdoNode = doc.at_xpath("//div [@id='gdo']"),
316-
let rows = gdoNode.at_xpath("//div [@id='gdo2']")?.xpath("//div")
315+
let gpcText = doc.at_xpath("//p [@class='gpc']")?.text,
316+
let rangeA = gpcText.range(of: "Showing 1 - "),
317+
let rangeB = gpcText.range(of: " of "),
318+
let singlePageCount = Int(gpcText[rangeA.upperBound..<rangeB.lowerBound])
317319
else { throw AppError.parseFailed }
318320

319-
for rowLink in rows where rowLink.className == "ths nosel" {
320-
guard let rowsCount = Int(
321-
rowLink.text?.replacingOccurrences(
322-
of: " rows", with: "") ?? ""
323-
) else { throw AppError.parseFailed }
321+
if previewMode == "gdtl" {
322+
switch singlePageCount {
323+
case _ where singlePageCount <= 20:
324+
return .large(rows: 4)
324325

325-
if previewMode == "gdtl" {
326-
return .large(rows: rowsCount)
327-
} else {
328-
return .normal(rows: rowsCount)
326+
case _ where singlePageCount <= 50:
327+
return .large(rows: 10)
328+
329+
case _ where singlePageCount <= 100:
330+
return .large(rows: 20)
331+
332+
case _ where singlePageCount <= 200:
333+
return .large(rows: 40)
334+
335+
default:
336+
return .large(rows: 4)
337+
}
338+
} else {
339+
switch singlePageCount {
340+
case _ where singlePageCount <= 40:
341+
return .normal(rows: 4)
342+
343+
case _ where singlePageCount <= 100:
344+
return .normal(rows: 10)
345+
346+
case _ where singlePageCount <= 200:
347+
return .normal(rows: 20)
348+
349+
case _ where singlePageCount <= 400:
350+
return .normal(rows: 40)
351+
352+
default:
353+
return .normal(rows: 4)
329354
}
330355
}
331-
throw AppError.parseFailed
332356
}
333357

334358
func parseCoverURL(node: XMLElement?) throws -> URL {
@@ -741,14 +765,13 @@ struct Parser {
741765
}
742766

743767
static func parsePreviewMode(doc: HTMLDocument) throws -> String {
744-
guard let gdoNode = doc.at_xpath("//div [@id='gdo']"),
745-
let gdo4Node = gdoNode.at_xpath("//div [@id='gdo4']")
746-
else { return "gdtm" }
747-
748-
for link in gdo4Node.xpath("//div") where link.text == "Large" {
749-
return link["class"] == "ths nosel" ? "gdtl" : "gdtm"
768+
if doc.at_xpath("//div [@class='gdtm']") != nil {
769+
return "gdtm"
770+
} else if doc.at_xpath("//div [@class='gdtl']") != nil {
771+
return "gdtl"
772+
} else {
773+
throw AppError.parseFailed
750774
}
751-
return "gdtm"
752775
}
753776

754777
static func parseMPVKeys(doc: HTMLDocument) throws -> (String, [Int: String]) {

0 commit comments

Comments
 (0)