From 78723bb195edfde4e77e5604cee6ef67e75051d9 Mon Sep 17 00:00:00 2001 From: achmad Date: Wed, 13 May 2026 23:17:48 +0700 Subject: [PATCH] =?UTF-8?q?feat:=20implement=20phase=204=20batch=20?= =?UTF-8?q?=E2=80=94=2021=20en/=20base-class=20wrapper=20sources?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 6 Madara: boratscans, bunmanga, cucumbermanga, decadencescans, linkmanga, sleepytranslations. 15 MadTheme: beehentai, boxmanhwa, kaliscancom, kaliscanio, mangabuddy, mangabuddyme, mangacute, mangafab, mangaforest, mangamonk, mangasaga, mangaspin, mangaxyz, manhuanow, manhuasite. Also corrects base-class annotations in phase4-standalone.md for sources previously misidentified as Madara (arcrelight=MangAdventure; atsumaru, aurora, azcomic, broccolisoup, buttsmithy, clonemanga, clowncorps=HttpSource). --- cmd/server/main.go | 21 +++++++++ docs/phase4-standalone.md | 44 +++++++++---------- sources/en/beehentai/beehentai.go | 16 +++++++ sources/en/boratscans/boratscans.go | 17 +++++++ sources/en/boxmanhwa/boxmanhwa.go | 16 +++++++ sources/en/bunmanga/bunmanga.go | 16 +++++++ sources/en/cucumbermanga/cucumbermanga.go | 17 +++++++ sources/en/decadencescans/decadencescans.go | 17 +++++++ sources/en/kaliscancom/kaliscancom.go | 16 +++++++ sources/en/kaliscanio/kaliscanio.go | 16 +++++++ sources/en/linkmanga/linkmanga.go | 16 +++++++ sources/en/mangabuddy/mangabuddy.go | 16 +++++++ sources/en/mangabuddyme/mangabuddyme.go | 16 +++++++ sources/en/mangacute/mangacute.go | 16 +++++++ sources/en/mangafab/mangafab.go | 16 +++++++ sources/en/mangaforest/mangaforest.go | 16 +++++++ sources/en/mangamonk/mangamonk.go | 16 +++++++ sources/en/mangasaga/mangasaga.go | 16 +++++++ sources/en/mangaspin/mangaspin.go | 16 +++++++ sources/en/mangaxyz/mangaxyz.go | 16 +++++++ sources/en/manhuanow/manhuanow.go | 16 +++++++ sources/en/manhuasite/manhuasite.go | 16 +++++++ .../sleepytranslations/sleepytranslations.go | 16 +++++++ 23 files changed, 382 insertions(+), 22 deletions(-) create mode 100644 sources/en/beehentai/beehentai.go create mode 100644 sources/en/boratscans/boratscans.go create mode 100644 sources/en/boxmanhwa/boxmanhwa.go create mode 100644 sources/en/bunmanga/bunmanga.go create mode 100644 sources/en/cucumbermanga/cucumbermanga.go create mode 100644 sources/en/decadencescans/decadencescans.go create mode 100644 sources/en/kaliscancom/kaliscancom.go create mode 100644 sources/en/kaliscanio/kaliscanio.go create mode 100644 sources/en/linkmanga/linkmanga.go create mode 100644 sources/en/mangabuddy/mangabuddy.go create mode 100644 sources/en/mangabuddyme/mangabuddyme.go create mode 100644 sources/en/mangacute/mangacute.go create mode 100644 sources/en/mangafab/mangafab.go create mode 100644 sources/en/mangaforest/mangaforest.go create mode 100644 sources/en/mangamonk/mangamonk.go create mode 100644 sources/en/mangasaga/mangasaga.go create mode 100644 sources/en/mangaspin/mangaspin.go create mode 100644 sources/en/mangaxyz/mangaxyz.go create mode 100644 sources/en/manhuanow/manhuanow.go create mode 100644 sources/en/manhuasite/manhuasite.go create mode 100644 sources/en/sleepytranslations/sleepytranslations.go diff --git a/cmd/server/main.go b/cmd/server/main.go index c9a368e..ca411bf 100755 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -89,6 +89,27 @@ import ( _ "goyomi/sources/en/toonitube" _ "goyomi/sources/en/topmanhua" _ "goyomi/sources/en/yaoihub" + _ "goyomi/sources/en/beehentai" + _ "goyomi/sources/en/boratscans" + _ "goyomi/sources/en/boxmanhwa" + _ "goyomi/sources/en/bunmanga" + _ "goyomi/sources/en/cucumbermanga" + _ "goyomi/sources/en/decadencescans" + _ "goyomi/sources/en/kaliscancom" + _ "goyomi/sources/en/kaliscanio" + _ "goyomi/sources/en/linkmanga" + _ "goyomi/sources/en/mangabuddy" + _ "goyomi/sources/en/mangabuddyme" + _ "goyomi/sources/en/mangacute" + _ "goyomi/sources/en/mangafab" + _ "goyomi/sources/en/mangaforest" + _ "goyomi/sources/en/mangamonk" + _ "goyomi/sources/en/mangasaga" + _ "goyomi/sources/en/mangaspin" + _ "goyomi/sources/en/mangaxyz" + _ "goyomi/sources/en/manhuanow" + _ "goyomi/sources/en/manhuasite" + _ "goyomi/sources/en/sleepytranslations" ) func main() { diff --git a/docs/phase4-standalone.md b/docs/phase4-standalone.md index ebd49d2..c80b1a5 100755 --- a/docs/phase4-standalone.md +++ b/docs/phase4-standalone.md @@ -175,7 +175,7 @@ Detailed implementation notes for complex sources are in the **Notes** section a - [ ] `en/anisascans` - [ ] `en/apcomics` - [x] `en/aquamanga` -- [ ] `en/arcrelight` → base: Madara +- [ ] `en/arcrelight` → base: MangAdventure - [x] `en/arenascans` - [ ] `en/armageddon` - [x] `en/artlapsa` @@ -196,12 +196,12 @@ Detailed implementation notes for complex sources are in the **Notes** section a - [ ] `en/bakkinselfhosted` - [ ] `en/batcave` - [ ] `en/battleinfivesecondsaftermeeting` -- [ ] `en/beehentai` → base: MadTheme +- [x] `en/beehentai` → base: MadTheme - [ ] `en/bookwalker` ⚠️ see notes -- [ ] `en/boratscans` → base: Madara -- [ ] `en/boxmanhwa` → base: MadTheme +- [x] `en/boratscans` → base: Madara +- [x] `en/boxmanhwa` → base: MadTheme - [ ] `en/broccolisoup` → base: Madara -- [ ] `en/bunmanga` → base: Madara +- [x] `en/bunmanga` → base: Madara - [ ] `en/buttsmithy` → base: Madara - [ ] `en/clonemanga` → base: Madara - [ ] `en/clowncorps` → base: Madara @@ -218,7 +218,7 @@ Detailed implementation notes for complex sources are in the **Notes** section a - [x] `en/comicsland` - [ ] `en/comix` - [x] `en/crowscans` -- [ ] `en/cucumbermanga` → base: Madara +- [x] `en/cucumbermanga` → base: Madara - [ ] `en/culturedworks` - [ ] `en/cutiecomics` - [x] `en/dankefurslesen` @@ -227,7 +227,7 @@ Detailed implementation notes for complex sources are in the **Notes** section a - [ ] `en/darkscience` - [ ] `en/darthsdroids` - [ ] `en/deathtollscans` -- [ ] `en/decadencescans` → base: Madara +- [x] `en/decadencescans` → base: Madara - [ ] `en/dflowscans` - [ ] `en/digitalcomicmuseum` - [x] `en/divascans` @@ -302,8 +302,8 @@ Detailed implementation notes for complex sources are in the **Notes** section a - [ ] `en/jnovel` - [ ] `en/kagane` - [x] `en/kaizenscan` -- [ ] `en/kaliscancom` → base: MadTheme -- [ ] `en/kaliscanio` → base: MadTheme +- [x] `en/kaliscancom` → base: MadTheme +- [x] `en/kaliscanio` → base: MadTheme - [x] `en/kaliscanme` - [ ] `en/kappabeast` - [ ] `en/kaynscans` @@ -325,7 +325,7 @@ Detailed implementation notes for complex sources are in the **Notes** section a - [ ] `en/likemanga` - [ ] `en/likemangain` - [ ] `en/lilymanga` -- [ ] `en/linkmanga` → base: Madara +- [x] `en/linkmanga` → base: Madara - [ ] `en/loadingartist` - [ ] `en/luascans` - [ ] `en/luminaretranslations` @@ -343,11 +343,11 @@ Detailed implementation notes for complex sources are in the **Notes** section a - [ ] `en/mangablaze` - [ ] `en/mangabolt` - [ ] `en/mangabtt` -- [ ] `en/mangabuddy` → base: MadTheme -- [ ] `en/mangabuddyme` → base: MadTheme +- [x] `en/mangabuddy` → base: MadTheme +- [x] `en/mangabuddyme` → base: MadTheme - [ ] `en/mangaclash` - [ ] `en/mangacloud` -- [ ] `en/mangacute` → base: MadTheme +- [x] `en/mangacute` → base: MadTheme - [ ] `en/mangadass` - [ ] `en/mangade` - [ ] `en/mangademon` @@ -355,8 +355,8 @@ Detailed implementation notes for complex sources are in the **Notes** section a - [ ] `en/mangadistrict` - [ ] `en/mangadotnet` - [ ] `en/mangadrama` -- [ ] `en/mangafab` → base: MadTheme -- [ ] `en/mangaforest` → base: MadTheme +- [x] `en/mangafab` → base: MadTheme +- [x] `en/mangaforest` → base: MadTheme - [ ] `en/mangaforfreecom` - [ ] `en/mangafox` - [ ] `en/mangafoxfun` → base: MangaHub @@ -379,7 +379,7 @@ Detailed implementation notes for complex sources are in the **Notes** section a - [ ] `en/mangamaniacs` - [ ] `en/mangamo` - [ ] `en/mangamob` -- [ ] `en/mangamonk` → base: MadTheme +- [x] `en/mangamonk` → base: MadTheme - [ ] `en/manganel` → base: MangaHub - [ ] `en/manganelo` - [ ] `en/manganow` @@ -393,26 +393,26 @@ Detailed implementation notes for complex sources are in the **Notes** section a - [ ] `en/mangareadercc` - [ ] `en/mangareadersite` → base: MangaHub - [ ] `en/mangareadorg` -- [ ] `en/mangasaga` → base: MadTheme +- [x] `en/mangasaga` → base: MadTheme - [ ] `en/mangasect` -- [ ] `en/mangaspin` → base: MadTheme +- [x] `en/mangaspin` → base: MadTheme - [ ] `en/mangasushi` - [ ] `en/mangatellers` - [ ] `en/mangatoday` → base: MangaHub - [ ] `en/mangatown` - [ ] `en/mangatrend` - [ ] `en/mangatx` -- [ ] `en/mangaxyz` → base: MadTheme +- [x] `en/mangaxyz` → base: MadTheme - [ ] `en/manhuafast` - [ ] `en/manhuafastnet` - [ ] `en/manhuahot` - [ ] `en/manhuanext` -- [ ] `en/manhuanow` → base: MadTheme +- [x] `en/manhuanow` → base: MadTheme - [ ] `en/manhuaplus` - [ ] `en/manhuaplusorg` - [ ] `en/manhuarush` - [ ] `en/manhuascanus` -- [ ] `en/manhuasite` → base: MadTheme +- [x] `en/manhuasite` → base: MadTheme - [ ] `en/manhuatop` - [ ] `en/manhuaus` - [ ] `en/manhuazonghe` @@ -538,7 +538,7 @@ Detailed implementation notes for complex sources are in the **Notes** section a - [ ] `en/shojoscans` - [x] `en/sirenscans` - [ ] `en/skymanga` -- [ ] `en/sleepytranslations` → base: MangaThemesia +- [x] `en/sleepytranslations` → base: Madara - [ ] `en/solarandsundry` - [ ] `en/spmanhwa` - [ ] `en/spyfakku` diff --git a/sources/en/beehentai/beehentai.go b/sources/en/beehentai/beehentai.go new file mode 100644 index 0000000..7456c07 --- /dev/null +++ b/sources/en/beehentai/beehentai.go @@ -0,0 +1,16 @@ +package beehentai + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madtheme" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "BeeHentai", + BaseURL: "https://beehentai.com", + Lang: "en", + }) +} + +func init() { registry.Register(New()) } diff --git a/sources/en/boratscans/boratscans.go b/sources/en/boratscans/boratscans.go new file mode 100644 index 0000000..0fc1c3c --- /dev/null +++ b/sources/en/boratscans/boratscans.go @@ -0,0 +1,17 @@ +package boratscans + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madara" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "Borat Scans", + BaseURL: "https://boratscans.com", + Lang: "en", + UseNewChapterEndpoint: true, + }) +} + +func init() { registry.Register(New()) } diff --git a/sources/en/boxmanhwa/boxmanhwa.go b/sources/en/boxmanhwa/boxmanhwa.go new file mode 100644 index 0000000..9dc3462 --- /dev/null +++ b/sources/en/boxmanhwa/boxmanhwa.go @@ -0,0 +1,16 @@ +package boxmanhwa + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madtheme" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "BoxManhwa", + BaseURL: "https://boxmanhwa.com", + Lang: "en", + }) +} + +func init() { registry.Register(New()) } diff --git a/sources/en/bunmanga/bunmanga.go b/sources/en/bunmanga/bunmanga.go new file mode 100644 index 0000000..f72e49b --- /dev/null +++ b/sources/en/bunmanga/bunmanga.go @@ -0,0 +1,16 @@ +package bunmanga + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madara" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "Bun Manga", + BaseURL: "https://bunmanga.com", + Lang: "en", + }) +} + +func init() { registry.Register(New()) } diff --git a/sources/en/cucumbermanga/cucumbermanga.go b/sources/en/cucumbermanga/cucumbermanga.go new file mode 100644 index 0000000..38e4c8e --- /dev/null +++ b/sources/en/cucumbermanga/cucumbermanga.go @@ -0,0 +1,17 @@ +package cucumbermanga + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madara" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "Cucumber Manga", + BaseURL: "https://cucumbermanga.com", + Lang: "en", + UseNewChapterEndpoint: true, + }) +} + +func init() { registry.Register(New()) } diff --git a/sources/en/decadencescans/decadencescans.go b/sources/en/decadencescans/decadencescans.go new file mode 100644 index 0000000..5b21dd3 --- /dev/null +++ b/sources/en/decadencescans/decadencescans.go @@ -0,0 +1,17 @@ +package decadencescans + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madara" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "Decadence Scans", + BaseURL: "https://reader.decadencescans.com", + Lang: "en", + UseNewChapterEndpoint: true, + }) +} + +func init() { registry.Register(New()) } diff --git a/sources/en/kaliscancom/kaliscancom.go b/sources/en/kaliscancom/kaliscancom.go new file mode 100644 index 0000000..7b2e5ae --- /dev/null +++ b/sources/en/kaliscancom/kaliscancom.go @@ -0,0 +1,16 @@ +package kaliscancom + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madtheme" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "KaliScan.com", + BaseURL: "https://kaliscan.com", + Lang: "en", + }) +} + +func init() { registry.Register(New()) } diff --git a/sources/en/kaliscanio/kaliscanio.go b/sources/en/kaliscanio/kaliscanio.go new file mode 100644 index 0000000..3214172 --- /dev/null +++ b/sources/en/kaliscanio/kaliscanio.go @@ -0,0 +1,16 @@ +package kaliscanio + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madtheme" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "KaliScan.io", + BaseURL: "https://kaliscan.io", + Lang: "en", + }) +} + +func init() { registry.Register(New()) } diff --git a/sources/en/linkmanga/linkmanga.go b/sources/en/linkmanga/linkmanga.go new file mode 100644 index 0000000..16cb760 --- /dev/null +++ b/sources/en/linkmanga/linkmanga.go @@ -0,0 +1,16 @@ +package linkmanga + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madara" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "LinkManga", + BaseURL: "https://linkmanga.com", + Lang: "en", + }) +} + +func init() { registry.Register(New()) } diff --git a/sources/en/mangabuddy/mangabuddy.go b/sources/en/mangabuddy/mangabuddy.go new file mode 100644 index 0000000..764ce29 --- /dev/null +++ b/sources/en/mangabuddy/mangabuddy.go @@ -0,0 +1,16 @@ +package mangabuddy + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madtheme" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "MangaBuddy", + BaseURL: "https://mangabuddy.com", + Lang: "en", + }) +} + +func init() { registry.Register(New()) } diff --git a/sources/en/mangabuddyme/mangabuddyme.go b/sources/en/mangabuddyme/mangabuddyme.go new file mode 100644 index 0000000..19d0262 --- /dev/null +++ b/sources/en/mangabuddyme/mangabuddyme.go @@ -0,0 +1,16 @@ +package mangabuddyme + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madtheme" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "MangaBuddy.me", + BaseURL: "https://mangabuddy.me", + Lang: "en", + }) +} + +func init() { registry.Register(New()) } diff --git a/sources/en/mangacute/mangacute.go b/sources/en/mangacute/mangacute.go new file mode 100644 index 0000000..f6124b9 --- /dev/null +++ b/sources/en/mangacute/mangacute.go @@ -0,0 +1,16 @@ +package mangacute + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madtheme" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "MangaCute", + BaseURL: "https://mangacute.com", + Lang: "en", + }) +} + +func init() { registry.Register(New()) } diff --git a/sources/en/mangafab/mangafab.go b/sources/en/mangafab/mangafab.go new file mode 100644 index 0000000..6b15f0b --- /dev/null +++ b/sources/en/mangafab/mangafab.go @@ -0,0 +1,16 @@ +package mangafab + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madtheme" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "MangaFab", + BaseURL: "https://mangafab.com", + Lang: "en", + }) +} + +func init() { registry.Register(New()) } diff --git a/sources/en/mangaforest/mangaforest.go b/sources/en/mangaforest/mangaforest.go new file mode 100644 index 0000000..5655c81 --- /dev/null +++ b/sources/en/mangaforest/mangaforest.go @@ -0,0 +1,16 @@ +package mangaforest + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madtheme" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "MangaForest", + BaseURL: "https://mangaforest.me", + Lang: "en", + }) +} + +func init() { registry.Register(New()) } diff --git a/sources/en/mangamonk/mangamonk.go b/sources/en/mangamonk/mangamonk.go new file mode 100644 index 0000000..7c31246 --- /dev/null +++ b/sources/en/mangamonk/mangamonk.go @@ -0,0 +1,16 @@ +package mangamonk + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madtheme" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "MangaMonk", + BaseURL: "https://mangamonk.com", + Lang: "en", + }) +} + +func init() { registry.Register(New()) } diff --git a/sources/en/mangasaga/mangasaga.go b/sources/en/mangasaga/mangasaga.go new file mode 100644 index 0000000..dc3baeb --- /dev/null +++ b/sources/en/mangasaga/mangasaga.go @@ -0,0 +1,16 @@ +package mangasaga + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madtheme" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "MangaSaga", + BaseURL: "https://mangasaga.com", + Lang: "en", + }) +} + +func init() { registry.Register(New()) } diff --git a/sources/en/mangaspin/mangaspin.go b/sources/en/mangaspin/mangaspin.go new file mode 100644 index 0000000..635e848 --- /dev/null +++ b/sources/en/mangaspin/mangaspin.go @@ -0,0 +1,16 @@ +package mangaspin + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madtheme" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "MangaSpin", + BaseURL: "https://mangaspin.com", + Lang: "en", + }) +} + +func init() { registry.Register(New()) } diff --git a/sources/en/mangaxyz/mangaxyz.go b/sources/en/mangaxyz/mangaxyz.go new file mode 100644 index 0000000..e8d327d --- /dev/null +++ b/sources/en/mangaxyz/mangaxyz.go @@ -0,0 +1,16 @@ +package mangaxyz + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madtheme" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "MangaXYZ", + BaseURL: "https://mangaxyz.com", + Lang: "en", + }) +} + +func init() { registry.Register(New()) } diff --git a/sources/en/manhuanow/manhuanow.go b/sources/en/manhuanow/manhuanow.go new file mode 100644 index 0000000..fc7fa7b --- /dev/null +++ b/sources/en/manhuanow/manhuanow.go @@ -0,0 +1,16 @@ +package manhuanow + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madtheme" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "ManhuaNow", + BaseURL: "https://manhuanow.com", + Lang: "en", + }) +} + +func init() { registry.Register(New()) } diff --git a/sources/en/manhuasite/manhuasite.go b/sources/en/manhuasite/manhuasite.go new file mode 100644 index 0000000..e858f0f --- /dev/null +++ b/sources/en/manhuasite/manhuasite.go @@ -0,0 +1,16 @@ +package manhuasite + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madtheme" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "ManhuaSite", + BaseURL: "https://manhuasite.com", + Lang: "en", + }) +} + +func init() { registry.Register(New()) } diff --git a/sources/en/sleepytranslations/sleepytranslations.go b/sources/en/sleepytranslations/sleepytranslations.go new file mode 100644 index 0000000..62c186c --- /dev/null +++ b/sources/en/sleepytranslations/sleepytranslations.go @@ -0,0 +1,16 @@ +package sleepytranslations + +import ( + "goyomi/internal/registry" + base "goyomi/sources/base/madara" +) + +func New() *base.Source { + return base.New(base.Config{ + Name: "Sleepy Translations", + BaseURL: "https://sleepytranslations.com", + Lang: "en", + }) +} + +func init() { registry.Register(New()) }