Skip to content

Commit

Permalink
v0.11.1
Browse files Browse the repository at this point in the history
- wire依赖注入改造
  - downloader
  - database
  - renamer
  - parser
  - filter
- 从database中分离出client notifier
  • Loading branch information
wetor committed Jan 29, 2024
1 parent dfe5391 commit 856f43f
Show file tree
Hide file tree
Showing 41 changed files with 1,143 additions and 986 deletions.
78 changes: 32 additions & 46 deletions cmd/animego/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@ import (
"github.com/wetor/AnimeGo/internal/animego/anisource/bangumi"
"github.com/wetor/AnimeGo/internal/animego/anisource/mikan"
"github.com/wetor/AnimeGo/internal/animego/anisource/themoviedb"
"github.com/wetor/AnimeGo/internal/animego/clientnotifier"
"github.com/wetor/AnimeGo/internal/animego/database"
"github.com/wetor/AnimeGo/internal/animego/downloader"
"github.com/wetor/AnimeGo/internal/animego/feed"
"github.com/wetor/AnimeGo/internal/animego/filter"
"github.com/wetor/AnimeGo/internal/animego/parser"
"github.com/wetor/AnimeGo/internal/animego/renamer"
"github.com/wetor/AnimeGo/internal/api"
"github.com/wetor/AnimeGo/internal/constant"
"github.com/wetor/AnimeGo/internal/logger"
"github.com/wetor/AnimeGo/internal/models"
Expand Down Expand Up @@ -172,8 +172,6 @@ func Main() {
Key: config.Setting.Key.Themoviedb,
Host: config.Advanced.AniData.Themoviedb.Redirect,
}
bgmSource := wire.GetBangumi(bgmOpts, tmdbOpts)
mikanSource := wire.GetMikan(mikanOpts, bgmOpts, tmdbOpts)
// ===============================================================================================================
// 初始化插件 gpython
plugin.Init(&plugin.Options{
Expand Down Expand Up @@ -203,84 +201,72 @@ func Main() {
clientSrv.Start()

// ===============================================================================================================
// 初始化renamer配置
renamer.Init(&renamer.Options{
WG: &wg,
RefreshSecond: config.RefreshSecond,
})
// 第一个启用的rename插件
var rename api.RenamerPlugin
var renamePlugin *models.Plugin
for _, p := range configs.ConvertPluginInfo(config.Plugin.Rename) {
if p.Enable {
rename = renamer.NewRenamePlugin(&p)
renamePlugin = &p
break
}
}
// 初始化rename
renameSrv := renamer.NewManager(rename)
renameSrv := wire.GetRenamer(&renamer.Options{
WG: &wg,
RefreshSecond: config.RefreshSecond,
}, renamePlugin)
// 启动rename
renameSrv.Start(ctx)

// ===============================================================================================================
// 初始化database配置
database.Init(&database.Options{
DownloaderConf: database.DownloaderConf{
RefreshSecond: config.RefreshSecond,
DownloadPath: xpath.P(config.DownloadPath),
SavePath: xpath.P(config.SavePath),
Category: config.Category,
Tag: config.Tag,
Rename: config.Advanced.Download.Rename,
},
})
downloadCallback := &database.Callback{}
databaseSrv, err := database.NewDatabase(bolt, renameSrv, downloadCallback)
databaseInst, err := wire.GetDatabase(&database.Options{
SavePath: xpath.P(config.SavePath),
}, bolt)
if err != nil {
panic(err)
}

// ===============================================================================================================
// 初始化downloader配置
downloader.Init(&downloader.Options{
// 初始化downloader

downloadCallback := &clientnotifier.Callback{}
downloaderSrv := wire.GetDownloader(&downloader.Options{
RefreshSecond: config.RefreshSecond,
Category: config.Category,
Tag: config.Tag,
AllowDuplicateDownload: config.Download.AllowDuplicateDownload,
WG: &wg,
})
// 初始化downloader
downloaderSrv := downloader.NewManager(clientSrv, databaseSrv, databaseSrv)
}, clientSrv, &clientnotifier.Options{
DownloadPath: xpath.P(config.DownloadPath),
SavePath: xpath.P(config.SavePath),
Rename: config.Advanced.Download.Rename,
Callback: downloadCallback,
}, databaseInst, renameSrv)

downloadCallback.Renamed = func(data any) error {
return downloaderSrv.Delete(data.(string))
}
// 启动downloader
downloaderSrv.Start(ctx)

// ===============================================================================================================
// 初始化parser配置
parser.Init(&parser.Options{
TMDBFailSkip: config.Default.TMDBFailSkip,
TMDBFailUseTitleSeason: config.Default.TMDBFailUseTitleSeason,
TMDBFailUseFirstSeason: config.Default.TMDBFailUseFirstSeason,
})
// 第一个启用的parser插件
var parse api.ParserPlugin
var parsePlugin *models.Plugin
for _, p := range configs.ConvertPluginInfo(config.Plugin.Parser) {
if p.Enable {
parse = parser.NewParserPlugin(&p, false)
parsePlugin = &p
break
}
}
// 初始化parser
parserSrv := parser.NewManager(parse, mikanSource, bgmSource)
// 初始化filter

// ===============================================================================================================
// 初始化filter配置
filter.Init(&filter.Options{
filterSrv := wire.GetFilter(&filter.Options{
DelaySecond: config.Advanced.Feed.DelaySecond,
})
// 初始化filter
filterSrv := filter.NewManager(downloaderSrv, parserSrv)
}, downloaderSrv, &parser.Options{
TMDBFailSkip: config.Default.TMDBFailSkip,
TMDBFailUseTitleSeason: config.Default.TMDBFailUseTitleSeason,
TMDBFailUseFirstSeason: config.Default.TMDBFailUseFirstSeason,
}, parsePlugin, mikanOpts, bgmOpts, tmdbOpts)
for _, p := range configs.ConvertPluginInfo(config.Plugin.Filter) {
filterSrv.Add(&p)
}
Expand All @@ -305,7 +291,7 @@ func Main() {
Name: "database",
StartRun: false,
Task: schedule.NewRefreshTask(&schedule.RefreshOptions{
Database: databaseSrv,
Database: databaseInst,
Cron: config.Advanced.Database.RefreshDatabaseCron,
}),
})
Expand Down Expand Up @@ -335,7 +321,7 @@ func Main() {
BangumiCache: bangumiCache,
BangumiCacheLock: &bangumiCacheMutex,
FilterManager: filterSrv,
DatabaseCacheDeleter: databaseSrv,
DatabaseCacheDeleter: databaseInst,
},
WebSocketOptions: &websocket.Options{
WG: &wg,
Expand Down
2 changes: 1 addition & 1 deletion internal/animego/anisource/bangumi.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ func (m Bangumi) Parse(opts *models.AnimeParseOptions) (anime *models.AnimeEntit
var tmdbID int

switch input := opts.Input.(type) {
case models.MikanEntity:
case *models.MikanEntity:
bgmID = input.BangumiID
mikanID = input.MikanID
case int:
Expand Down
11 changes: 8 additions & 3 deletions internal/animego/anisource/mikan.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,16 @@ func NewMikanSource(aniData *mikan.Mikan, bangumiSource *Bangumi) *Mikan {

func (m Mikan) Parse(opts *models.AnimeParseOptions) (anime *models.AnimeEntity, err error) {
var mikanEntity = &mikan.Entity{}
var mikanUrl string
switch input := opts.Input.(type) {
case string:
mikanUrl = input
}

// ------------------- 获取bangumiID -------------------
if opts.AnimeParseOverride == nil || !opts.OverrideMikan() {
log.Debugf("[AniSource] 解析Mikan,%s", opts.Input)
entity, err := m.aniData.ParseCache(opts.Input)
log.Debugf("[AniSource] 解析Mikan,%s", mikanUrl)
entity, err := m.aniData.ParseCache(mikanUrl)
if err != nil {
return nil, err
}
Expand All @@ -49,7 +54,7 @@ func (m Mikan) Parse(opts *models.AnimeParseOptions) (anime *models.AnimeEntity,
}
// ------------------- 通过bangumiID获取信息 -------------------
return m.bangumiSource.Parse(&models.AnimeParseOptions{
Input: models.MikanEntity{
Input: &models.MikanEntity{
MikanID: mikanEntity.MikanID,
BangumiID: mikanEntity.BangumiID,
},
Expand Down
12 changes: 12 additions & 0 deletions internal/animego/clientnotifier/models.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package clientnotifier

type Callback struct {
Renamed func(data any) error
}

type Options struct {
DownloadPath string
SavePath string
Rename string
Callback *Callback
}
Loading

0 comments on commit 856f43f

Please sign in to comment.