feat: port 10 en/ sources (7 Madara, 2 Keyoapp, 1 MadTheme)

- manhuahot (Madara, manhuahot.com)
- mangaread (Madara, mangaread.co) — HTTP 522, site appears down
- mangasushi (Madara, mangasushi.org) — new chapter endpoint
- mangagofun (Madara, mangago.fun) — new chapter endpoint
- manhuaplus (Madara, manhuaplus.com) — custom page list selector
- mangareadorg (Madara, mangaread.org)
- mangaowlio (Madara, mangaowl.io) — mangaSubString=read-1
- grimscans (Keyoapp, grimscans.com)
- writerscans (Keyoapp, writerscans.com) — custom popular selector
- mangapuma (MadTheme, mangapuma.com)
This commit is contained in:
achmad
2026-05-14 22:48:39 +07:00
parent 2db6aad209
commit e4fab6a8b1
20 changed files with 256 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
package grimscans
import (
"goyomi/internal/registry"
base "goyomi/sources/base/keyoapp"
)
func New() *base.Source {
return base.New(base.Config{
Name: "Grim Scans",
BaseURL: "https://grimscans.com",
Lang: "en",
})
}
func init() { registry.Register(New()) }
+9
View File
@@ -0,0 +1,9 @@
package grimscans
import (
"testing"
"goyomi/internal/sourcetest"
)
func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Grim Scans", "en") }
+17
View File
@@ -0,0 +1,17 @@
package mangagofun
import (
"goyomi/internal/registry"
base "goyomi/sources/base/madara"
)
func New() *base.Source {
return base.New(base.Config{
Name: "MangaGoFun",
BaseURL: "https://www.mangago.fun",
Lang: "en",
UseNewChapterEndpoint: true,
})
}
func init() { registry.Register(New()) }
+9
View File
@@ -0,0 +1,9 @@
package mangagofun
import (
"testing"
"goyomi/internal/sourcetest"
)
func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaGoFun", "en") }
+18
View File
@@ -0,0 +1,18 @@
package mangaowlio
import (
"goyomi/internal/registry"
base "goyomi/sources/base/madara"
)
func New() *base.Source {
return base.New(base.Config{
Name: "MangaOwlIo",
BaseURL: "https://mangaowl.io",
Lang: "en",
MangaSubString: "read-1",
UseNewChapterEndpoint: true,
})
}
func init() { registry.Register(New()) }
+9
View File
@@ -0,0 +1,9 @@
package mangaowlio
import (
"testing"
"goyomi/internal/sourcetest"
)
func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaOwlIo", "en") }
+16
View File
@@ -0,0 +1,16 @@
package mangapuma
import (
"goyomi/internal/registry"
base "goyomi/sources/base/madtheme"
)
func New() *base.Source {
return base.New(base.Config{
Name: "MangaPuma",
BaseURL: "https://mangapuma.com",
Lang: "en",
})
}
func init() { registry.Register(New()) }
+9
View File
@@ -0,0 +1,9 @@
package mangapuma
import (
"testing"
"goyomi/internal/sourcetest"
)
func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaPuma", "en") }
+16
View File
@@ -0,0 +1,16 @@
package mangaread
import (
"goyomi/internal/registry"
base "goyomi/sources/base/madara"
)
func New() *base.Source {
return base.New(base.Config{
Name: "MangaRead",
BaseURL: "https://mangaread.co",
Lang: "en",
})
}
func init() { registry.Register(New()) }
+9
View File
@@ -0,0 +1,9 @@
package mangaread
import (
"testing"
"goyomi/internal/sourcetest"
)
func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaRead", "en") }
+16
View File
@@ -0,0 +1,16 @@
package mangareadorg
import (
"goyomi/internal/registry"
base "goyomi/sources/base/madara"
)
func New() *base.Source {
return base.New(base.Config{
Name: "MangaReadOrg",
BaseURL: "https://www.mangaread.org",
Lang: "en",
})
}
func init() { registry.Register(New()) }
@@ -0,0 +1,9 @@
package mangareadorg
import (
"testing"
"goyomi/internal/sourcetest"
)
func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaReadOrg", "en") }
+17
View File
@@ -0,0 +1,17 @@
package mangasushi
import (
"goyomi/internal/registry"
base "goyomi/sources/base/madara"
)
func New() *base.Source {
return base.New(base.Config{
Name: "Mangasushi",
BaseURL: "https://mangasushi.org",
Lang: "en",
UseNewChapterEndpoint: true,
})
}
func init() { registry.Register(New()) }
+9
View File
@@ -0,0 +1,9 @@
package mangasushi
import (
"testing"
"goyomi/internal/sourcetest"
)
func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Mangasushi", "en") }
+16
View File
@@ -0,0 +1,16 @@
package manhuahot
import (
"goyomi/internal/registry"
base "goyomi/sources/base/madara"
)
func New() *base.Source {
return base.New(base.Config{
Name: "ManhuaHot",
BaseURL: "https://manhuahot.com",
Lang: "en",
})
}
func init() { registry.Register(New()) }
+9
View File
@@ -0,0 +1,9 @@
package manhuahot
import (
"testing"
"goyomi/internal/sourcetest"
)
func TestSource(t *testing.T) { sourcetest.Run(t, New(), "ManhuaHot", "en") }
+17
View File
@@ -0,0 +1,17 @@
package manhuaplus
import (
"goyomi/internal/registry"
base "goyomi/sources/base/madara"
)
func New() *base.Source {
return base.New(base.Config{
Name: "ManhuaPlus",
BaseURL: "https://manhuaplus.com",
Lang: "en",
PageListParseSelector: ".read-container img",
})
}
func init() { registry.Register(New()) }
+9
View File
@@ -0,0 +1,9 @@
package manhuaplus
import (
"testing"
"goyomi/internal/sourcetest"
)
func TestSource(t *testing.T) { sourcetest.Run(t, New(), "ManhuaPlus", "en") }
+17
View File
@@ -0,0 +1,17 @@
package writerscans
import (
"goyomi/internal/registry"
base "goyomi/sources/base/keyoapp"
)
func New() *base.Source {
return base.New(base.Config{
Name: "Writer Scans",
BaseURL: "https://writerscans.com",
Lang: "en",
PopularSelector: "div:contains(Trending) + div .group.overflow-hidden",
})
}
func init() { registry.Register(New()) }
@@ -0,0 +1,9 @@
package writerscans
import (
"testing"
"goyomi/internal/sourcetest"
)
func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Writer Scans", "en") }