Repository navigation
Add MTL Arabic (mtlarabic.com) - #270
Merged
Merged
Conversation
مكتبة الخيال — an Arabic web-novel library.
Built against lib 1.6, using the suspend API directly (the *Request/*Parse
pair is deprecated and final in KeiSource).
The site has no browse API: /novels and /novel-details ship their payload as a
<script type="application/json"> island, so both are read from there. Chapters
are the exception — the detail page embeds only the first 100 and ignores
?page=, so the list is walked through /api/novels/{id}/chapters, the endpoint
behind the site's own pager. Verified contiguous across a 1771-chapter novel.
SManga.url holds the numeric id rather than the slug: the slugs are Arabic and
need percent-encoding, and hand-encoding them is where this goes wrong.
Popular is the chapter-count sort. The site only honours -num_chapters and
latest_update; any other sort value is accepted in the query string and then
ignored, which silently made Popular a duplicate of Latest.
Two defects, both reported from the device rather than from the test run.
The site's pages are text/html with the payload in a
<script type="application/json"> island, but the response body was being
handed straight to the JSON decoder, which then choked on a document
starting with <!DOCTYPE html>:
Expected start of the object '{' but instead found '<'
The chapter API is the one endpoint that answers with bare JSON, so it keeps
the plain path. All four reads now go through parseAsIsland.
coverUrl returned "/images/novels/<name>", a path with no host. A thumbnail_url
has to be absolute or the cover renders empty; the images themselves were fine.
The placeholder card shipped with the source reads as an unfinished extension in the source list. This is the real artwork: a phoenix rising from an open book, at all five densities. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Checklist
versionCodebumped insrc/ar/riwyat/build.gradle.kts(6→7)baseVersionCodebumped inlib-multisrc/madaranovel/build.gradle.kts(7→8)id, name,baseUrland deeplink unchangedweb_hi_res_512.pngadded:src:ar:riwyat:assembleDebug/spotlessCheckpassmadaranovel-themed extensions build (:lib-multisrc:madaranovel:spotlessCheckpasses)Adds مكتبة الخيال, an Arabic web-novel library.
Notes on the site
/novelsand/novel-detailsare server-rendered and ship their payload as a<script type="application/json">island; both are read from there.?page=, so the list is walked through/api/novels/{id}/chapters— the endpoint behind the site's own pager. Verified contiguous across a 1771-chapter novel (no gaps, no duplicates).SManga.urlholds the numeric id, not the slug. The slugs are Arabic and need percent-encoding, and hand-encoding them is where this goes wrong.-num_chaptersandlatest_update; any othersortvalue is accepted in the query string and then ignored, so a "sort by title" popular tab is silently a duplicate of Latest.Verified
:src:ar:mtlarabic:assembleDebugandspotlessCheckpasssuspendAPI directly🤖 Generated with Claude Code