fix(latest): parse Kagane series cover IDs

This commit is contained in:
2026-08-10 01:13:40 +07:00
parent d1801f4f2a
commit 65edb92415
2 changed files with 16 additions and 8 deletions
+12 -4
View File
@@ -165,16 +165,24 @@ var singleQuotedMetaAttrRe = regexp.MustCompile(`(?is)([a-z][a-z0-9:_-]*)\s*=\s*
// the target detail entry avoids matching posters from recommended results.
var comixInitialDataRe = regexp.MustCompile(`(?is)<script\b[^>]*\bid\s*=\s*["']initial-data["'][^>]*>(.*?)</script>`)
// kagane's browser-fetched series response carries this published cover URL.
// Decode the top-level field, not merely an image-shaped URL elsewhere in JSON.
// kagane's browser-fetched series response publishes cover image IDs under
// series_covers. The API's canonical compressed image route is the only URL
// form accepted by the store and browser fetcher; no rendition is guessed.
func kaganeCoverURL(body string) string {
var response struct {
Cover string `json:"cover"`
SeriesCovers []struct {
ImageID string `json:"image_id"`
} `json:"series_covers"`
}
if err := json.Unmarshal([]byte(body), &response); err != nil {
return ""
}
return publishedCoverURL(response.Cover)
for _, cover := range response.SeriesCovers {
if kaganeImageIDRe.MatchString(cover.ImageID) {
return "https://kagane.to/api/v2/image/" + cover.ImageID + "/compressed"
}
}
return ""
}
func comixCoverURL(seriesURL, body string) string {