feat: add ja.spoilerplus - #684
Open
kinboy56 wants to merge 1 commit into
Open
Conversation
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.
Adds a source for https://spoilerplus.tv, a Japanese raw manga site. Fix #17
The site runs the same CMS and image infrastructure as
ja.mangarawjp(samePOST /api/v1/get/cendpoint, sameimg-cdn.stackpathcdn.appCDN, samepage-descrambling scheme), but ships a different theme, so only the request and
descrambling logic are shared in spirit — the HTML parsing is written against
this site's markup.
Notes on the implementation
the ordering as hex bytes XORed with the site's own domain string, so
spoilerplus.tvis the key. The order travels to the image throughPageContext, andPageImageProcessorreassembles the grid on a canvas ofthe original image's dimensions.
templates/wpcomicswas not used. The theme is NetTruyen-based and itsdefault selectors do match, but the template does not forward
PageImageProcessor, and images here are useless without descrambling.Changing the template to support that would risk regressions in the seven
sources already using it, so the source is written standalone.
chapter segments as raw UTF-8, and a raw UTF-8 path is answered with a 404.
Since
encode_urialso escapes%, passing the mixed form straight throughturns
%20into%2520. Keys are therefore decoded on the way in (to_key)and encoded on the way out (
url_for), so both href forms collapse to onekey.
alternative-titles row the same
li.row.statusclasses as the publicationstatus row, so selecting by class alone reads the alternative title as the
status. The row is picked by its
状態label instead; a regression testcovers this. An unrecognised value maps to
MangaStatus::Unknownrather thanfalling back to
Ongoing.html().Element::data()returnsNonefor every<script>on these pages, and the reader'swindow.MangaId/
window.CNumbervalues are what key the image API.contentRatingis 2 (adult). The genre list carries permanentEcchiand
エロいcategories, consistent with the sibling sites on the same CMS.that the ordering paths cannot be applied to, so
config.hidesFiltersWhileSearchingis set and a non-empty query wins over whatever sort value is still stored.
Deliberately left out
date_uploadedis not set. The site mixes relative (1日前) and absolute(
2026年07月30日) forms, and only the absolute one is parseable — the samereason it is unset in
ja.mangarawjp./genre/<name>/exists, but the list changes on the site'sside, so it would need
DynamicFiltersrather than a hardcoded list. Leftfor a follow-up.
Test plan
cargo fmtcargo clippy --releasecargo test --release(17 passed)aidoku package && aidoku verify package.aixdescrambled pages.