Sources
Every one of the 38 registered manga sources, how they plug in, and how to add a verified one.
lanRegistry
Each source is a Source subclass in mangasurf/sources/, registered in sources/__init__.py. The CLI, GUI and HTTP API all pick a new source up automatically — no wiring elsewhere.
info The README source table and this page are generated from the live registry, so the row count can't drift from the code.
add_circleAdd a new source
1. write mangasurf/sources/<name>.py # a Source subclass
2. import it in mangasurf/sources/__init__.py and append to SOURCE_CLASSES
3. done — search, browse and download pick it up automatically
Your source implements the four methods the download engine relies on:
search(query, **filters)→ list of search resultsget_manga_info(url)→ title / cover / description / tagsget_chapters(url)→ chapters, oldest firstget_chapter_images(chapter)→ ordered page image URLs
tuneCapabilities
| Attribute | Meaning |
|---|---|
supports_search | can search by query |
supports_browse | offers trending / latest discovery |
supports_genres | exposes a genre list for filtering |
supports_language | shows a translation-language filter |
supports_scanlator | multiple releases per chapter number |
default_series_type | manga / manhwa / manhua fallback |
cover_needs_referer | cover CDN blocks hotlinks; proxy via Python |
needs_flaresolverr | Cloudflare-protected; needs FlareSolverr |
adult_only | adult-exclusive; hidden behind Safe mode |
lockSafe mode
Sources flagged adult_only = True are hidden from filtered searches unless Safe mode is on. This keeps general-audience browsing clean while leaving adult sources one toggle away.
southDead / Cloudflare sites
warning A source whose domain 404s, doesn't resolve, or sits behind Cloudflare should set needs_flaresolverr = True or not be registered at all. Unverified sources fail silently and drag every search down.
If a site is behind Cloudflare, start the solver on port 8191 and it will be bypassed automatically: python start_flaresolverr.py.