# Phase 3 — Base Source Implementations Complete port checklist for all 68 bases in `/Users/achmad/Documents/Belajar/Android/extensions-source/lib-multisrc/`. Each base goes into `sources/base/{name}/`. Check a box when the base compiles and at least one derived source passes a smoke test. Detailed implementation notes for complex bases are in the **Notes** section at the bottom. --- ## All Bases — 68 total - [ ] `base/bakkin` ⚠️ see notes - [ ] `base/colorlibanime` - [ ] `base/comicaso` - [ ] `base/comiciviewer` - [ ] `base/eromuse` - [ ] `base/ezmanhwa` - [ ] `base/fansubscat` - [ ] `base/fmreader` ⚠️ see notes - [ ] `base/foolslide` ⚠️ see notes - [ ] `base/fuzzydoodle` - [ ] `base/galleryadults` - [ ] `base/gattsu` - [ ] `base/gigaviewer` ⚠️ see notes - [ ] `base/gmanga` ⚠️ see notes - [ ] `base/goda` - [ ] `base/gravureblogger` - [ ] `base/greenshit` - [ ] `base/grouple` ⚠️ see notes - [ ] `base/guya` ⚠️ see notes - [ ] `base/heancms` ⚠️ see notes - [ ] `base/hentaihand` ⚠️ see notes - [ ] `base/hotcomics` - [ ] `base/iken` ⚠️ see notes - [ ] `base/initmanga` - [ ] `base/kemono` ⚠️ see notes - [ ] `base/keyoapp` - [ ] `base/lectormoe` ⚠️ see notes - [ ] `base/libgroup` ⚠️ see notes - [ ] `base/liliana` ⚠️ see notes - [ ] `base/madara` ⚠️ see notes - [ ] `base/madtheme` ⚠️ see notes - [ ] `base/manga18` - [ ] `base/mangabox` - [ ] `base/mangacatalog` - [ ] `base/mangadventure` ⚠️ see notes - [ ] `base/mangahub` ⚠️ see notes - [ ] `base/mangareader` ⚠️ see notes - [ ] `base/mangataro` - [ ] `base/mangathemesia` ⚠️ see notes - [ ] `base/mangawork` - [ ] `base/mangaworld` ⚠️ see notes - [ ] `base/mangotheme` ⚠️ see notes - [ ] `base/manhwaz` - [ ] `base/masonry` - [ ] `base/mccms` - [ ] `base/mmlook` ⚠️ see notes - [ ] `base/mmrcms` ⚠️ see notes - [ ] `base/monochrome` - [ ] `base/multichan` - [ ] `base/natsuid` - [ ] `base/oceanwp` - [ ] `base/paprika` - [ ] `base/peachscan` - [ ] `base/pizzareader` ⚠️ see notes - [ ] `base/raijinscans` - [ ] `base/scanr` - [ ] `base/scanreader` ⚠️ see notes - [ ] `base/senkuro` ⚠️ see notes - [ ] `base/sinmh` - [ ] `base/spicytheme` - [ ] `base/stalkercms` - [ ] `base/uzaymanga` - [ ] `base/vercomics` - [ ] `base/wpcomics` ⚠️ see notes - [ ] `base/yuyu` - [ ] `base/zeistmanga` - [ ] `base/zmanga` ⚠️ see notes --- ## Notes — Complex Bases ### `base/heancms` ⚠️ - Config struct: `BaseURL`, `APIURL`, `Lang`, `DateFormat` - `GetPopularManga` — `GET {api}/series?page={n}&order=views` - `GetLatestUpdates` — `GET {api}/series?page={n}&order=latest` - `GetSearchManga` — `GET {api}/series?page={n}&query={q}` - `GetMangaDetails` — `GET {api}/series/{slug}` - `GetChapterList` — `GET {api}/chapter/query?series_slug={s}&limit=9999` - `GetPageList` — `GET {api}/chapter/{slug}` → extract image array - Parse `has_next_page` field from list responses ### `base/hentaihand` ⚠️ - Config struct: `BaseURL`, `Lang` - `GetPopularManga` — `GET {base}/api/comics?page={n}&order_by=popularity` - `GetLatestUpdates` — `GET {base}/api/comics?page={n}&order_by=date` - `GetPageList` — `GET {base}/api/comics/{slug}/chapters/{n}` → images array ### `base/pizzareader` ⚠️ - Config struct: `APIURL`, `Lang` - `GetPageList` — `GET {api}/comics/{comic}/{chapter}` → page URLs - FlareSolverr mode (CF=Yes): inject cookies from clearance ### `base/gmanga` ⚠️ - `GetPopularManga` — `GET {base}/api/releases?page={n}` - `GetSearchManga` — `POST {base}/api/mangas/search` with JSON body `{q, page}` - `GetPageList` — extract chapter page data (may require resolving CDN token) - Handle Arabic/RTL title fields ### `base/mangadventure` ⚠️ - Django manga reader REST API - `GET {base}/api/v2/series/` — list; `GET {base}/api/v2/series/{slug}/` — detail - `GET {base}/api/v2/chapters/?series={slug}` — chapters; `GET {base}/api/v2/chapters/{vol}/{num}/` — pages ### `base/madara` ⚠️ - Config struct: `BaseURL`, `Lang`, `DateFormat`, overridable CSS selectors - `GetPopularManga` — `POST {base}/wp-admin/admin-ajax.php` with `action=madara_load_more`, `vars[paged]={n}` - `GetLatestUpdates` — same AJAX with `vars[meta_key]=_latest_update` - `GetSearchManga` — `GET {base}/?s={q}&post_type=wp-manga` - `GetMangaDetails` — `GET {url}` → parse `.post-title`, `.author-content`, `.genres-content`, `.manga-summary`, `.post-image img` - `GetChapterList` — `POST {url}/ajax/chapters/` → parse chapter list HTML - `GetPageList` — `GET {chapter_url}` → parse `div.reading-content img` - FlareSolverr required; configurable selectors struct (child sources override individual selectors) - Date parsing: relative ("X days ago") + absolute ("MMMM dd, yyyy") formats ### `base/mangathemesia` ⚠️ - Config struct: `BaseURL`, `Lang`, `MangaDir` (e.g. "manga"/"manhwa"), overridable selectors - `GetPopularManga` — `GET {base}/{dir}/?page={n}&order=popular` - `GetChapterList` — parse `#chapterlist li` elements - `GetPageList` — extract `ts_reader.run({...})` JS JSON blob, parse `sources[].images` - FlareSolverr required ### `base/madtheme` ⚠️ - All list types via `GET {base}/search?page={n}&sort=...` - `GetPageList` — parse JSON blob in `