Skip to content

Add MTL Arabic (mtlarabic.com) - #270

Merged
mrissaoussama merged 3 commits into
NovelSourcery:mainfrom
hamedhani1998:add-mtlarabic
Sep 29, 2026
Merged

mrissaoussama merged 3 commits into
NovelSourcery:mainfrom
hamedhani1998:add-mtlarabic

Conversation

@hamedhani1998

@hamedhani1998 hamedhani1998 commented Sep 26, 2026 •

Copy link
Copy Markdown
Contributor

Checklist

  • versionCode bumped in src/ar/riwyat/build.gradle.kts (6 → 7)
  • baseVersionCode bumped in lib-multisrc/madaranovel/build.gradle.kts (7 → 8)
  • Source id, name, baseUrl and deeplink unchanged
  • No web_hi_res_512.png added
  • :src:ar:riwyat:assembleDebug / spotlessCheck pass
  • All 36 madaranovel-themed extensions build (:lib-multisrc:madaranovel:spotlessCheck passes)

Adds مكتبة الخيال, an Arabic web-novel library.

Notes on the site

  • No browse API. /novels and /novel-details are server-rendered and ship their payload as a <script type="application/json"> island; both are read from there.
  • Chapters come from an API. The detail page embeds only the first 100 chapters 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 (no gaps, no duplicates).
  • SManga.url holds the numeric id, not 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 honours only -num_chapters and latest_update; any other sort value is accepted in the query string and then ignored, so a "sort by title" popular tab is silently a duplicate of Latest.

Verified

  • Listing, latest, search (with category + sort filters), details, chapter pagination, and chapter text all exercised against the live site
  • Chapter list contiguous 1..1771, every entry carrying a date
  • :src:ar:mtlarabic:assembleDebug and spotlessCheck pass
  • Built against lib 1.6, using the suspend API directly

🤖 Generated with Claude Code

hamedhani1998 and others added 3 commits September 26, 2026 13:37
مكتبة الخيال — 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>
@mrissaoussama
mrissaoussama merged commit e992d32 into NovelSourcery:main Sep 29, 2026
2 checks passed
@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Oct 7, 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