feat(latest): extract per-site covers (#58) #67

Merged
sulthan merged 4 commits from issue-58-cover-extraction into main 2026-08-10 01:43:57 +07:00
Owner

Closes #58

Summary

  • Add pure per-Site cover extraction beside latest-chapter parsing for all six Sites.
  • Read Asura, Demonic, LightNovelWorld, and NovelFull metadata; read the Comix target detail state; read Kagane's browser-fetched series_covers[].image_id JSON.
  • Preserve published cover URLs, percent-encode Demonic raw spaces, select Comix's smaller published medium, and avoid thumbnail rendition URL synthesis.
  • Add live-source fixtures plus no-cover and Cloudflare challenge coverage for every Site.

Correctness

  • Scope Comix extraction to the requested series detail key, avoiding recommended posters.
  • Parse Kagane's current live API shape and emit its canonical compressed image route from the published image ID; unrelated JSON fields are ignored.
  • Validate Kagane image IDs against the existing UUID-shaped route constraint.
  • Keep extraction pure; storage, polling, and wire integration remain outside issue #58.

Acceptance criteria

  • Cover extraction exists for all six Sites in the existing latest parser module.
  • Each Site has a live-source fixture with source URL and date.
  • Comix reads the state blob, not metadata.
  • Demonic raw spaces are percent-encoded.
  • Comix returns the smaller published rendition.
  • No-cover pages return empty.
  • Cloudflare challenge pages return empty.
  • No thumbnail URL is synthesized by editing a published URL.
  • go test ./... passes.

Verification

  • go test ./...
  • go vet ./...
  • git diff --check

Parent issues #47 and #55 remain open as requested.

Closes #58 ## Summary - Add pure per-Site cover extraction beside latest-chapter parsing for all six Sites. - Read Asura, Demonic, LightNovelWorld, and NovelFull metadata; read the Comix target detail state; read Kagane's browser-fetched `series_covers[].image_id` JSON. - Preserve published cover URLs, percent-encode Demonic raw spaces, select Comix's smaller published `medium`, and avoid thumbnail rendition URL synthesis. - Add live-source fixtures plus no-cover and Cloudflare challenge coverage for every Site. ## Correctness - Scope Comix extraction to the requested series detail key, avoiding recommended posters. - Parse Kagane's current live API shape and emit its canonical compressed image route from the published image ID; unrelated JSON fields are ignored. - Validate Kagane image IDs against the existing UUID-shaped route constraint. - Keep extraction pure; storage, polling, and wire integration remain outside issue #58. ## Acceptance criteria - [x] Cover extraction exists for all six Sites in the existing latest parser module. - [x] Each Site has a live-source fixture with source URL and date. - [x] Comix reads the state blob, not metadata. - [x] Demonic raw spaces are percent-encoded. - [x] Comix returns the smaller published rendition. - [x] No-cover pages return empty. - [x] Cloudflare challenge pages return empty. - [x] No thumbnail URL is synthesized by editing a published URL. - [x] `go test ./...` passes. ## Verification - `go test ./...` - `go vet ./...` - `git diff --check` Parent issues #47 and #55 remain open as requested.
sulthan added 1 commit 2026-08-10 01:05:39 +07:00
sulthan added 1 commit 2026-08-10 01:14:17 +07:00
sulthan added 1 commit 2026-08-10 01:20:51 +07:00
sulthan added 1 commit 2026-08-10 01:42:04 +07:00
sulthan merged commit b6b88bde8a into main 2026-08-10 01:43:57 +07:00
Sign in to join this conversation.