Skip to content

feat: add Anime Anyway plugin (english) - #2421

Merged
rajarsheechatterjee merged 2 commits into
lnreader:masterfrom
pdmacinnes:feat/anime-anyway-plugin
Aug 16, 2026
Merged

feat: add Anime Anyway plugin (english)#2421
rajarsheechatterjee merged 2 commits into
lnreader:masterfrom
pdmacinnes:feat/anime-anyway-plugin

Conversation

@pdmacinnes

@pdmacinnes pdmacinnes commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a plugin for Anime Anyway, a fan-translation site publishing continuation volumes of Classroom of the Elite: Year 3 plus an original collab web novel, High School Syndrome. Each volume is exposed as its own novel (matching how the light novels are actually published — each volume is a distinct book), currently 4: Year 3 Vol. 2/3/4 and High School Syndrome.

  • Reads the site's own embedded Next.js page data (__NEXT_DATA__) instead of scraping rendered HTML — chapter lists and chapter bodies (Sanity Portable Text) come straight from the JSON the site was built from, with no dependency on the Next.js build id so it keeps working across the site's redeploys.
  • Catalogue is built from the homepage's own volume list, one novel per volume — no hardcoded list, so it keeps working as the site adds more volumes or series.
  • Year N Vol. M volume titles get a Classroom of the Elite: display prefix (display-only; paths stay the site's own real slugs) since the site's own titles don't name the franchise.
  • Icon sourced from the site's own logo, cropped to 96x96.

Test plan

  • tsc --noEmit, eslint, prettier --check all clean
  • npm run check:plugin -- plugins/english/animeAnyway.ts — all 4 live-check steps pass
  • Manually verified against the live site: popularNovels returns all 4 volumes; searchNovels('classroom') returns all 3 COTE volumes, searchNovels('syndrome') returns just the collab; parseNovel returns each volume's own chapters only, in order; chapter rendering produces correct <p>/<strong>/<em>/<hr>/<img> HTML with working cdn.sanity.io image URLs; missing novel/chapter paths degrade gracefully instead of throwing
  • Tested end-to-end in the Plugin Playground (npm run dev) and on a real device via LNReader's mobile app (custom repository pointed at a local build, per the README's "From Localhost" testing method)

Reads the site's embedded Next.js page data (__NEXT_DATA__) instead of
scraping rendered HTML: volume/chapter lists and chapter bodies (Sanity
Portable Text) come straight from the JSON the site itself was built
from. Volumes titled "Year N Vol. M" are grouped into one novel per
year since no single page represents an entire year; everything else
is its own standalone novel.
Each Classroom of the Elite volume is published as its own distinct
book, so list them separately instead of merging same-year volumes
into one novel. Drops the grouping/synthetic-path machinery entirely
-- every novel path is now just the site's own real volkeyword.
@rajarsheechatterjee
rajarsheechatterjee merged commit 632cf2e into lnreader:master Aug 16, 2026
3 checks passed
@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Aug 19, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants