feat: add ja.soraraw - #668
Open
kinboy56 wants to merge 6 commits into
Open
Conversation
kinboy56
marked this pull request as draft
August 3, 2026 09:54
kinboy56
marked this pull request as ready for review
August 3, 2026 22:20
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implementation Notes
queried.
/search?q=is statically generated and ignores the query — the browser downloads acatalogue and filters it itself. The api host does expose
/search, but it answers 500 for everyquery (
Unknown column 'Manga.number_views' in 'ORDER BY'), and/mangasignores every queryparameter it was tried with. The dump is 13 pages of 2000 entries, about 4.7 MB over the wire
with the gzip the host serves.
config.hidesFiltersWhileSearchingisset.
modefield.modedescribes how the site'sown reader lays a series out, not what kind of comic it is: across 31 series measured, every
horizontalone held page-shaped art, but so did a third of theverticalones — ordinaryjapanese manga that would otherwise open in a continuous scroll. The overseas genres track the
content instead, appearing on 2 of 7021
horizontalseries and 644 of 979verticalones across8000 catalogue entries, which matches the share of
verticalseries that really are webtoons.are cut into page-shaped chunks about as often as into tall strips, so the shape of a page says
nothing about whether the panels are meant to run together.
across the catalogue, 47 held webp and 3 held jpg, with nothing in the page list telling the two
apart.
also carries the name of the file on each image server, encrypted with a key the site's scripts
derive at runtime; the order and id fields are handed out in the clear and are enough.
tried and dropped: genre names are not unique (41 of the 1834 the site lists are used by more
than one genre), and the ones that read as suggestive are already flagged as adult by the site
itself, so a name-based guess disagreed with the site more often than it added anything.
MangaStatus::Unknownratherthan falling back to ongoing.
source.
Known limitation: chapters served as one stacked image
A small share of chapters are served as a single image holding every page of the chapter stacked on
top of each other. Those are handed over whole, so the reader shows them as one very tall page.
Measured on "BLUE GIANT MOMENTUM":
5 of that series' 71 chapters are affected, and other series are too — "となりの黒川さん" serves
chapter 49 as one 800x24003 image holding 21 pages. Nothing in the response separates the two
cases: every chapter carries
mode: "image", and a stacked chapter lists exactly one page named001_{id}like any short chapter would, so only the shape of the image itself gives it away.Splitting them was implemented and works up to the point of display. The page count comes out right
and the cuts land exactly on the page boundaries — scanning the difference between neighbouring
pixel rows around every expected cut put all 23 boundaries of the blue giant image at an offset of
0 (row difference 88.5 at the cuts against 15.5 inside a page), and all 20 of the kurokawa image
likewise. On device, however, every slice rendered blank while the page count stayed correct. Both
ways of handing the slices over behaved identically:
PageContent::Imagefromget_page_listPageContextper slice and cutting inPageImageProcessorSince neither renders, the splitting is left out of this PR rather than shipped broken, and the
affected chapters remain readable as a single tall page. I am leaving the decision on how to proceed with this limitation to the reviewer.
Test Plan
18 tests cover the functionality against the live site:
vertical, and the adult flagCode quality checks passed:
cargo test,cargo fmt,cargo clippy, andaidoku verify.