Files
seanime-docker/seanime-2.9.10/internal/core/extensions.go
2025-09-20 14:08:38 +01:00

264 lines
8.3 KiB
Go

package core
import (
"seanime/internal/extension"
"seanime/internal/extension_repo"
manga_providers "seanime/internal/manga/providers"
onlinestream_providers "seanime/internal/onlinestream/providers"
"seanime/internal/torrents/animetosho"
"seanime/internal/torrents/nyaa"
"seanime/internal/torrents/seadex"
"seanime/internal/util"
"github.com/rs/zerolog"
)
func LoadExtensions(extensionRepository *extension_repo.Repository, logger *zerolog.Logger, config *Config) {
//
// Built-in manga providers
//
extensionRepository.ReloadBuiltInExtension(extension.Extension{
ID: "comick",
Name: "ComicK",
Version: "",
ManifestURI: "builtin",
Language: extension.LanguageGo,
Type: extension.TypeMangaProvider,
Author: "Seanime",
Description: "",
Lang: "en",
Icon: "https://raw.githubusercontent.com/5rahim/hibike/main/icons/comick.webp",
}, manga_providers.NewComicK(logger))
extensionRepository.ReloadBuiltInExtension(extension.Extension{
ID: "comick-multi",
Name: "ComicK (Multi)",
Version: "",
ManifestURI: "builtin",
Language: extension.LanguageGo,
Type: extension.TypeMangaProvider,
Author: "Seanime",
Description: "",
Lang: "multi",
Icon: "https://raw.githubusercontent.com/5rahim/hibike/main/icons/comick.webp",
}, manga_providers.NewComicKMulti(logger))
extensionRepository.ReloadBuiltInExtension(extension.Extension{
ID: "mangapill",
Name: "Mangapill",
Version: "",
ManifestURI: "builtin",
Language: extension.LanguageGo,
Type: extension.TypeMangaProvider,
Author: "Seanime",
Lang: "en",
Icon: "https://raw.githubusercontent.com/5rahim/hibike/main/icons/mangapill.png",
}, manga_providers.NewMangapill(logger))
extensionRepository.ReloadBuiltInExtension(extension.Extension{
ID: "weebcentral",
Name: "WeebCentral",
Version: "",
ManifestURI: "builtin",
Language: extension.LanguageGo,
Type: extension.TypeMangaProvider,
Author: "Seanime",
Lang: "en",
Icon: "https://raw.githubusercontent.com/5rahim/hibike/main/icons/weebcentral.png",
}, manga_providers.NewWeebCentral(logger))
extensionRepository.ReloadBuiltInExtension(extension.Extension{
ID: "mangadex",
Name: "Mangadex",
Version: "",
ManifestURI: "builtin",
Language: extension.LanguageGo,
Type: extension.TypeMangaProvider,
Author: "Seanime",
Lang: "en",
Icon: "https://raw.githubusercontent.com/5rahim/hibike/main/icons/mangadex.png",
}, manga_providers.NewMangadex(logger))
//extensionRepository.ReloadBuiltInExtension(extension.Extension{
// ID: "manganato",
// Name: "Manganato",
// Version: "",
// ManifestURI: "builtin",
// Language: extension.LanguageGo,
// Type: extension.TypeMangaProvider,
// Author: "Seanime",
// Lang: "en",
// Icon: "https://raw.githubusercontent.com/5rahim/hibike/main/icons/manganato.png",
//}, manga_providers.NewManganato(logger))
extensionRepository.ReloadBuiltInExtension(extension.Extension{
ID: manga_providers.LocalProvider,
Name: "Local",
Version: "",
ManifestURI: "builtin",
Language: extension.LanguageGo,
Type: extension.TypeMangaProvider,
Author: "Seanime",
Lang: "multi",
Icon: "https://raw.githubusercontent.com/5rahim/hibike/main/icons/local-manga.png",
}, manga_providers.NewLocal(config.Manga.LocalDir, logger))
//
// Built-in online stream providers
//
//extensionRepository.LoadBuiltInOnlinestreamProviderExtension(extension.Extension{
// ID: "gogoanime",
// Name: "Gogoanime",
// Version: "",
// ManifestURI: "builtin",
// Language: extension.LanguageGo,
// Type: extension.TypeOnlinestreamProvider,
// Author: "Seanime",
// Lang: "en",
// Icon: "https://raw.githubusercontent.com/5rahim/hibike/main/icons/gogoanime.png",
//}, onlinestream_providers.NewGogoanime(logger))
//extensionRepository.LoadBuiltInOnlinestreamProviderExtension(extension.Extension{
// ID: "zoro",
// Name: "Hianime",
// Version: "",
// ManifestURI: "builtin",
// Language: extension.LanguageGo,
// Type: extension.TypeOnlinestreamProvider,
// Author: "Seanime",
// Lang: "en",
// Icon: "https://raw.githubusercontent.com/5rahim/hibike/main/icons/hianime.png",
//}, onlinestream_providers.NewZoro(logger))
extensionRepository.ReloadBuiltInExtension(extension.Extension{
ID: "animepahe",
Name: "Animepahe",
Version: "",
ManifestURI: "builtin",
Language: extension.LanguageTypescript,
Type: extension.TypeOnlinestreamProvider,
Author: "Seanime",
Lang: "en",
Icon: "https://raw.githubusercontent.com/5rahim/hibike/main/icons/animepahe.png",
Payload: onlinestream_providers.AnimepahePayload,
}, nil)
//
// Built-in torrent providers
//
nyaaUserConfig := extension.UserConfig{
Version: 1,
Fields: []extension.ConfigField{
{
Name: "apiUrl",
Label: "API URL",
Type: extension.ConfigFieldTypeText,
Default: util.Decode("aHR0cHM6Ly9ueWFhLnNpLz9wYWdlPXJzcyZxPSs="),
},
},
}
extensionRepository.ReloadBuiltInExtension(extension.Extension{
ID: "nyaa",
Name: "Nyaa",
Version: "",
ManifestURI: "builtin",
Language: extension.LanguageGo,
Type: extension.TypeAnimeTorrentProvider,
Author: "Seanime",
Lang: "en",
Icon: "https://raw.githubusercontent.com/5rahim/hibike/main/icons/nyaa.png",
UserConfig: &nyaaUserConfig,
}, nyaa.NewProvider(logger, "anime-eng"))
extensionRepository.ReloadBuiltInExtension(extension.Extension{
ID: "nyaa-non-eng",
Name: "Nyaa (Non-English)",
Version: "",
ManifestURI: "builtin",
Language: extension.LanguageGo,
Type: extension.TypeAnimeTorrentProvider,
Author: "Seanime",
Lang: "multi",
Icon: "https://raw.githubusercontent.com/5rahim/hibike/main/icons/nyaa.png",
UserConfig: &nyaaUserConfig,
}, nyaa.NewProvider(logger, "anime-non-eng"))
extensionRepository.ReloadBuiltInExtension(extension.Extension{
ID: "nyaa-sukebei",
Name: "Nyaa Sukebei",
Version: "",
ManifestURI: "builtin",
Language: extension.LanguageGo,
Type: extension.TypeAnimeTorrentProvider,
Author: "Seanime",
Lang: "en",
Icon: "https://raw.githubusercontent.com/5rahim/hibike/main/icons/nyaa.png",
UserConfig: &extension.UserConfig{
Version: 1,
Fields: []extension.ConfigField{
{
Name: "apiUrl",
Label: "API URL",
Type: extension.ConfigFieldTypeText,
Default: util.Decode("aHR0cHM6Ly9zdWtlYmVpLm55YWEuc2kvP3BhZ2U9cnNzJnE9Kw=="),
},
},
},
}, nyaa.NewSukebeiProvider(logger))
extensionRepository.ReloadBuiltInExtension(extension.Extension{
ID: "animetosho",
Name: "AnimeTosho",
Version: "",
ManifestURI: "builtin",
Language: extension.LanguageGo,
Type: extension.TypeAnimeTorrentProvider,
Author: "Seanime",
Lang: "en",
Icon: "https://raw.githubusercontent.com/5rahim/hibike/main/icons/animetosho.png",
}, animetosho.NewProvider(logger))
extensionRepository.ReloadBuiltInExtension(extension.Extension{
ID: "seadex",
Name: "SeaDex",
Version: "",
ManifestURI: "builtin",
Language: extension.LanguageGo,
Type: extension.TypeAnimeTorrentProvider,
Author: "Seanime",
Lang: "en",
Icon: "https://raw.githubusercontent.com/5rahim/hibike/main/icons/seadex.png",
UserConfig: &extension.UserConfig{
Version: 1,
Fields: []extension.ConfigField{
{
Name: "apiUrl",
Label: "API URL",
Type: extension.ConfigFieldTypeText,
Default: util.Decode("aHR0cHM6Ly9yZWxlYXNlcy5tb2UvYXBpL2NvbGxlY3Rpb25zL2VudHJpZXMvcmVjb3Jkcw=="),
},
},
},
}, seadex.NewProvider(logger))
extensionRepository.ReloadExternalExtensions()
}
func (a *App) AddExtensionBankToConsumers() {
var consumers = []extension.Consumer{
a.MangaRepository,
a.OnlinestreamRepository,
a.TorrentRepository,
}
for _, consumer := range consumers {
consumer.InitExtensionBank(a.ExtensionRepository.GetExtensionBank())
}
}