Add 8 all/ sources (7 Masonry, 1 Madara) and 38 en/ sources spanning Madara, MangaThemesia, MadTheme, Keyoapp, and Guya bases, plus 8 earlier all/ standalone sources from the previous session (ahottie, akuma, allporncomicsco, asmhentai, baobua, beauty3600000, buondua, comicfury, comicgrowl, comicklive, comicsvalley, comikey, commitstrip, coomer). Also annotates phase4-standalone.md with base-class tags for 43 additional unimplemented en/ sources identified in a full scan.
20 KiB
Executable File
Phase 4 — Standalone Sources
Complete port checklist. Check a box when the source passes a basic smoke test (popular/latest list returns ≥1 result, or detail+pages resolve for a known URL).
After implementing each source: mark its checkbox [x] in this doc and add it to the import list in cmd/server/main.go.
Important: Source Types
Base Sources (lib-multisrc)
Shared implementations in:
/Users/achmad/Documents/Belajar/Android/extensions-source/lib-multisrc//Users/achmad/Documents/Belajar/Web/goyomi/sources/base/
These are the core implementations that standalone sources may use.
Standalone Sources (all/ and en/)
Individual extensions in:
/Users/achmad/Documents/Belajar/Android/extensions-source/src/all//Users/achmad/Documents/Belajar/Android/extensions-source/src/en/
These may or may not use a base source from lib-multisrc — and even when they do, they often add their own
implementation on top (overriding methods, adding extra parsing, custom filters, etc.).
When porting, check if the Kotlin source extends a base class (e.g., MangaReader, Madara, ComicGeek) —
if so, use the corresponding Go base implementation as the foundation, then layer the source-specific overrides.
Otherwise, implement fully standalone.
Reference:
/Users/achmad/Documents/Belajar/Android/extensions-source/src/all//Users/achmad/Documents/Belajar/Android/extensions-source/src/en/
Detailed implementation notes for complex sources are in the Notes section at the bottom.
sources/all/ — 125 sources
all/ahottieall/akumaall/allporncomicscoall/asmhentaiall/baobuaall/beauty3600000all/buonduaall/comicfuryall/comicgrowlall/comickliveall/comicskingdom⚠️ no Kotlin reference found — skipall/comicsvalleyall/comikeyall/commitstripall/coomerall/coronaexall/cosplayteleall/cubariall/danbooru⚠️ see notesall/deviantartall/dragonballmultiverseall/e621⚠️ see notesall/elitebabesall/everiacluball/everiaclubcomall/femjoyhunterall/foamgirlall/foolslidecustomizableall/fourkhdall/ftvhunterall/fuwayomiall/globalcomix⚠️ see notesall/grabberzoneall/hdoujinall/hennojinall/hentai3all/hentaicosplayall/hentaienvyall/hentaieraall/hentaifoxall/hentaihandall/hentairoxall/hentaizapall/hniscantradall/holonometriaall/honeytoonall/imhentaiall/izneoall/jjcosall/joymiihuball/junmeituall/kemono⚠️ see notesall/kiutakuall/kodokustudioall/koharuall/komga⚠️ see notesall/lanraragiall/leagueoflegendsall/lunaranimeall/luscious⚠️ see notesall/magicaltranslatorsall/manga18meall/mangaballall/mangacrazyall/mangadex⚠️ see notesall/mangadraftall/mangafireall/mangaforfreeall/mangaplus⚠️ see notesall/mangapluscreatorsall/mangataroall/mangatoonall/mangaupall/mangoall/manhuarmall/manhwa18ccall/manhwa18netall/manhwa18uncensoredall/manhwaclubnetall/manhwadashrawall/mayotuneall/metarthunterall/miauscanall/misskonall/mitakuall/myreadingmangaall/namicomiall/nhentaicom⚠️ see notesall/nhentaixxxall/niaddall/ninemangaall/novelcoolall/ososedkiall/pandachaikaall/peppercarrotall/photos18all/pixiv⚠️ see notesall/playmatehunterall/pornpicsall/projectsukiall/qtoonall/rokuhentaiall/sakuramanhwaall/sandraandwooall/seraphicdeviltryall/simplycosplayall/simplyhentaiall/stashapp⚠️ see notesall/taddyinkall/tappytoonall/thelibraryofoharaall/thunderscansall/toomicsall/twicomiall/uncensoredmanhwaall/vinnieVeritasall/webtoons⚠️ see notesall/xarthunterall/xasiatalbumsall/xgmnall/xinmeituluall/xiutakuall/xkcdall/yabaiall/yaoimangaonlineall/yellownoteall/yskcomics
sources/en/ — 430 sources
en/akaicomicen/alandalen/allanime⚠️ see notesen/allporncomicen/allporncomicioen/anisascansen/apcomicsen/aquamangaen/arcrelight→ base: Madaraen/arenascansen/armageddonen/artlapsaen/arvencomicsen/arvenscansen/aryascansen/asiatoonen/asmotoonen/assortedscansen/asurascans⚠️ see notesen/athreascansen/atsumaru→ base: Madaraen/aurora→ base: Madaraen/azcomic→ base: Madaraen/azukien/baektoonsen/bakkin⚠️ see notesen/bakkinselfhosteden/batcaveen/battleinfivesecondsaftermeetingen/beehentai→ base: MadThemeen/bookwalker⚠️ see notesen/boratscans→ base: Madaraen/boxmanhwa→ base: MadThemeen/broccolisoup→ base: Madaraen/bunmanga→ base: Madaraen/buttsmithy→ base: Madaraen/clonemanga→ base: Madaraen/clowncorps→ base: Madaraen/cmanhuaen/cocomicen/coffeemanga→ base: Madara (complex)en/collectedcuriosen/comicasuraen/comiccxen/comichubfreeen/comickfanen/comickibaen/comiclanden/comicslanden/comixen/crowscansen/cucumbermanga→ base: Madaraen/culturedworksen/cutiecomicsen/dankefurslesenen/darklegacycomicsen/darkscansen/darkscienceen/darthsdroidsen/deathtollscansen/decadencescans→ base: Madaraen/dflowscansen/digitalcomicmuseumen/divascansen/doujinioen/doujinsen/dragonteaen/drakescansen/dynastyen/eggporncomicsen/egscomicsen/eighteenporncomicen/eightmusesen/elanschoolen/elftoonen/epicmangaen/erisscansen/ero18xen/erofusen/erosscansen/evascansen/evilflowersen/existentialcomicsen/explosmen/ezmangaen/fablescansen/fairyscansen/firescans→ base: Madara (complex)en/flamecomicsen/frierenonlineen/gakamangasen/galaxydegenscansen/galaxymangaen/gedecomixen/gingertoonen/godaen/gourmetscansen/greedscansen/grimscansen/grrlpoweren/gunnerkriggcourten/guya⚠️ see notesen/gwtben/hachirumien/hadesscansen/harimangaen/hentai3zccen/hentai4freeen/hentaidexen/hentaihereen/hentaikunen/hentainexusen/hentairead→ base: Madara (complex)en/hentaireadioen/hentaiscoen/hentaixcomicen/hentaixdickgirlen/hentaixyurien/hentaraen/heytoonen/hijalascansen/hiperdexen/hiveworksen/hm2den/honkaiimpacten/hotcomicsen/hyakuroen/infernalvoidscansen/infinityscansen/irovedouten/isekaiscantopen/jinmangasen/jnovelen/kaganeen/kaizenscanen/kaliscancom→ base: MadThemeen/kaliscanio→ base: MadThemeen/kaliscanmeen/kappabeasten/kaynscansen/keenspoten/kenscansen/kewnscansen/killsixbilliondemonsen/kingcomixen/kingofshojoen/kissmangainen/kmangaen/kodanshaen/ksgroupscansen/kunmangaen/kuramangaen/lagoonscansen/leslievictimsen/lhtranslationen/likemangaen/likemangainen/lilymangaen/linkmanga→ base: Madaraen/loadingartisten/luascansen/luminaretranslationsen/lunatoonsen/madaradexen/madarascansen/madokamien/magusmangaen/mahouirexnohentaikarteen/manga18cluben/manga18freeen/manga18fxen/manga18xen/mangabaten/mangablazeen/mangabolten/mangabtten/mangabuddy→ base: MadThemeen/mangabuddyme→ base: MadThemeen/mangaclashen/mangaclouden/mangacute→ base: MadThemeen/mangadassen/mangadeen/mangademonen/mangadiaen/mangadistricten/mangadotneten/mangadramaen/mangafab→ base: MadThemeen/mangaforest→ base: MadThemeen/mangaforfreecomen/mangafoxen/mangafoxfun→ base: MangaHuben/mangafreaken/mangafreeen/mangaggen/mangagoen/mangagofunen/mangaheen/mangahenen/mangahentaien/mangahereen/mangahereonl→ base: MangaHuben/mangahubio→ base: MangaHuben/mangakaen/mangakakaloten/mangakakalotfun→ base: MangaHuben/mangakatanaen/mangakissen/mangamaniacsen/mangamoen/mangamoben/mangamonk→ base: MadThemeen/manganel→ base: MangaHuben/manganeloen/manganowen/mangaonlinefun→ base: MangaHuben/mangaowlioen/mangapandaonl→ base: MangaHuben/mangapillen/mangapumaen/mangarawcluben/mangareaden/mangareaderccen/mangareadersite→ base: MangaHuben/mangareadorgen/mangasaga→ base: MadThemeen/mangasecten/mangaspin→ base: MadThemeen/mangasushien/mangatellersen/mangatoday→ base: MangaHuben/mangatownen/mangatrenden/mangatxen/mangaxyz→ base: MadThemeen/manhuafasten/manhuafastneten/manhuahoten/manhuanexten/manhuanow→ base: MadThemeen/manhuaplusen/manhuaplusorgen/manhuarushen/manhuascanusen/manhuasite→ base: MadThemeen/manhuatopen/manhuausen/manhuazongheen/manhwa18en/manhwa18orgen/manhwa68en/manhwabuddyen/manhwaclanen/manhwacomicsen/manhwadenen/manhwageten/manhwahuben/manhwajoyen/manhwalikeen/manhwaloveren/manhwamanhuaen/manhwareaden/manhwareadsen/manhwatoonen/manhwatopen/manhwaxen/manhwaxxlen/manhwazen/manhwazoneen/mantaen/megatokyoen/mehgazoneen/meitoonen/mgjinxen/mgreadioen/milftoonen/mistscansen/mlbbloreen/monochromecustomen/monochromescansen/multpornen/murimscanen/myhentaicomicsen/myhentaigalleryen/necroscansen/newmanhwaen/nexcomicen/nikatoonsen/nineanimeen/ninehentaien/ninekonen/novel24hen/novelcrowen/noxenscansen/nuxscansen/nyanukafeen/nyrascansen/nyxscansen/octopusmangaen/oglafen/ohjoysextoyen/omegascansen/onemangaco→ base: MangaHuben/onemangainfo→ base: MangaHuben/onepunchmanonlineen/onlythebesthentaien/ootsen/oppaistreamen/orchisasiaen/orionscansen/paradisescansen/paragonscansen/paritehaberen/patchfridayen/pawmangaen/petrotechsocietyen/philiascansen/plutoscansen/pmscansen/porncomixen/qiscansen/questionablecontenten/ragescansen/randowizen/ravenscansen/razureen/rdscansen/readallcomicscomen/readattackontitanshingekinokyojinmangaen/readberserkmangaen/readblackclovermangaonlineen/readbokunoheroacademiamyheroacademiamangaen/readchainsawmanmangaonlineen/readcomiconlineen/readcomicsonlineen/readfairytailedenszeromangaonlineen/readhaikyuumangaonlineen/readjujutsukaisenmangaonlineen/readkingdommangaonlineen/readnanatsunotaizai7deadlysinsmangaonlineen/readnarutoborutosamurai8mangaonlineen/readonepiecemangaonlineen/readonepunchmanmangaonlinetwoen/readsololevelingmangamanhwaonlineen/readtokyoghoulretokyoghoulmangaonlineen/readvagabondmangaen/reallifecomicsen/reimangaen/renascansen/resetscansen/restscansen/retsuen/revivalscansen/rinkocomicsen/ritharscansen/rizzcomicen/rizzcomicunoriginalen/rokaricomicsen/roliascanen/rosesquadscansen/ryumangaen/s2mangaen/sanascansen/saturdaymorningbreakfastcomicsen/schlockmercenaryen/setsuscansen/shibamangaen/shojoscansen/sirenscansen/skymangaen/sleepytranslations→ base: MangaThemesiaen/solarandsundryen/spmanhwaen/spyfakkuen/stonescapeen/sunshinebutterflyscansen/supermegaen/suryascansen/swordscomicen/tapasticen/tcbscansen/tcbscansunoriginalen/teamshadowien/templescanen/theblanken/theduckwebcomicsen/thepropertyofhateen/timelesstoonsen/todaymangaen/toon18en/toongoden/toonilyen/toonilymeen/toonitubeen/toonizyen/topmanhuaen/topmanhuafanen/topmanhuaneten/tritiniascansen/utoonen/valirscansen/vanillascansen/vgpersonen/vizshonenjumpen/voycemeen/vyvymangaen/vyvymangaorgen/warforrayubaen/wearehungeren/webcomicsen/webdexscansen/webnovelen/webtoonscanen/webtoonxyzen/weebcentralen/whalemangaen/witchscansen/woopreaden/writerscansen/wuxiaworlden/xlecxen/xomangaen/xoxocomicsen/yakshacomicsen/yaoihoten/yaoihuben/yaoiscanen/yaoitoonen/yoraien/zazamangaen/zinchanmangaen/zinchanmangacomen/zinmangaen/zinmanganet
Notes — Complex Sources
Project Requirement: HTTP Client Selection
When porting sources from Kotlin to Go, ALWAYS check the Kotlin reference to determine whether the source needs:
- Normal HTTP client (
goyomi/internal/httpclient) - for REST APIs returning JSON - FlareSolverr client (
goyomi/internal/httpclient/flare) - for JavaScript-rendered pages (usesnetwork.cloudflareClientin Kotlin)
Check in Kotlin: override val client = network.cloudflareClient or network.cloudflareClient.newBuilder() → needs FlareSolverr
all/mangadex ⚠️
- Rate limit: 5 req/s (
golang.org/x/time/rate) GetPopularManga—GET /manga?order[rating]=desc&includes[]=cover_art&limit=20&offset={(n-1)*20}GetLatestUpdates—GET /manga?order[updatedAt]=desc&includes[]=cover_artGetSearchManga— tag filters (includedTags[],excludedTags[]), demographic, content rating, status, sortGetMangaDetails—GET /manga/{id}?includes[]=cover_art&includes[]=author&includes[]=artist; cover URL from relationshipsGetChapterList—GET /manga/{id}/feed?translatedLanguage[]=en&limit=500; paginate until all chapters fetchedGetPageList—GET /at-home/server/{chapterId}→{baseUrl}/{quality}/{hash}/{filename}; quality =dataordata-saverGetFilterList—GET /manga/tag; cache tag list- Language configurable via
MANGADEX_LANGenv var (defaulten)
all/nhentaicom ⚠️
- FlareSolverr required
GetPageList— extract JSON blob fromdocument.getElementById(...)in<script>tag; reconstruct URLs as{imageServer}/galleries/{mediaId}/{pageNum}.{ext}
all/kemono ⚠️
- FlareSolverr required
- Service + creator = manga; posts = chapters; attachment files = pages
- File URLs: prefix relative paths with
{base}/data GetChapterList— paginate in 50-post increments via?o={offset}
all/komga ⚠️
- Self-hosted;
KOMGA_BASE_URL,KOMGA_USERNAME,KOMGA_PASSWORDenv vars; Basic Auth - Series = manga; Books = chapters; pages via
GET /api/v1/books/{bookId}/pages/{n}/thumbnail
all/e621 ⚠️
- Optional Basic Auth (
E621_USERNAME,E621_API_KEY); required for Gold content - Pools = manga; posts = pages;
GET /pools.json,GET /posts.json?tags=pool:{id}
all/danbooru ⚠️
- Optional Basic Auth; free accounts limited to 2 tags per search
- Pools = manga; pool post_ids = pages; image URL from
file_urlfield
all/pixiv ⚠️
- Auth:
PIXIV_PHPSESSIDenv var → Cookie header GetPageList—GET /ajax/illust/{illustId}/pages; extracturls.original- Must set
Referer: https://www.pixiv.net/on all image requests or get 403
all/luscious ⚠️
- GraphQL POST to
https://members.luscious.net/graphql/playground - Albums = manga;
SearchAlbumPicturespaginated for page list
all/mangaplus ⚠️
- JSON endpoint:
GET https://jumpg-webapi.tokyo-cdn.com/api/title_detail?title_id={id} GetPageList— XOR page URL decryption using per-pageencryptionKey(hex string); implement inGetImageURL- Required header:
Origin: https://mangaplus.shueisha.co.jp
all/stashapp ⚠️
- Self-hosted;
STASHAPP_BASE_URL,STASHAPP_API_KEYenv vars - GraphQL POST to
{base}/graphql;ApiKeyheader
all/globalcomix ⚠️
- Signed CDN URLs with short expiry — do NOT cache
image_urlin DB; always fetch fresh page URLs
all/webtoons ⚠️
- HMAC-SHA256
Sec-Webtoon-Client-Dataheader:HMAC-SHA256(fixedKey, "{url}_{timestamp}")→ base64; fixed key in extension source - Web API:
https://global.apis.naver.com/webtoonSvc/v1/...
en/allanime ⚠️
- GraphQL POST to
https://api.allanime.day/api - Episode-based chapters;
episodeStringused as chapter number - Multiple CDN quality tiers in page response; pick highest
en/asurascans ⚠️
- FlareSolverr required
- Page selector varies by layout version; check extension source for current selector
en/bakkin ⚠️
- No list/search; all manga from a single JSON URL; enumerate from object keys
GetSearchMangadoes client-side title filtering only
en/bookwalker ⚠️
- DRM-protected; metadata only
GetPageListreturns empty slice; pages not accessible without purchase
en/guya ⚠️
GET {base}/api/get_all_series/returns all manga at once; no pagination- Scanlation group filter applied client-side in response parsing