diff options
| author | Bobby <[email protected]> | 2026-02-25 10:42:51 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2026-02-25 10:42:51 +0530 |
| commit | c18acfafee26d7d2508848135aa94a524f8dde06 (patch) | |
| tree | e0b4d5e07f872d9252af6d73fb8b108e15a49f91 /utils | |
| parent | 2df69fab61b580b6b329db214ee0025a9d84958d (diff) | |
| download | metachan-c18acfafee26d7d2508848135aa94a524f8dde06.tar.xz metachan-c18acfafee26d7d2508848135aa94a524f8dde06.zip | |
Refactor anime update logic and task management
- Simplified title retrieval in AnimeUpdate and updateAnime functions.
- Updated next airing checks to use new fields directly.
- Removed unnecessary nil checks for titles in various functions.
- Enhanced task management by eliminating redundant LastRun updates.
- Improved dependency handling in triggerDependentTasks for better clarity and performance.
- Streamlined Jikan API response structure by merging related fields.
- Added StopRateLimiters function to rate limiter utilities for better control.
- Refined episode title handling in TMDB and TVDB enrichment functions.
- Introduced Stop method in MultiLimiter for graceful shutdown of rate limiters.
Diffstat (limited to 'utils')
| -rw-r--r-- | utils/api/aniskip/aniskip.go | 4 | ||||
| -rw-r--r-- | utils/api/jikan/jikan.go | 4 | ||||
| -rw-r--r-- | utils/api/tmdb/tmdb.go | 43 | ||||
| -rw-r--r-- | utils/api/tvdb/tvdb.go | 11 | ||||
| -rw-r--r-- | utils/ratelimit/limiter.go | 6 |
5 files changed, 34 insertions, 34 deletions
diff --git a/utils/api/aniskip/aniskip.go b/utils/api/aniskip/aniskip.go index d7cc343..96220d1 100644 --- a/utils/api/aniskip/aniskip.go +++ b/utils/api/aniskip/aniskip.go @@ -39,6 +39,10 @@ var ( } ) +func StopRateLimiters() { + rateLimiter.Stop() +} + func (c *client) getBackOffDuration(attempt int) time.Duration { return time.Duration(float64(c.backoff) * math.Pow(2, float64(attempt-1))) } diff --git a/utils/api/jikan/jikan.go b/utils/api/jikan/jikan.go index c5bb2c8..991186e 100644 --- a/utils/api/jikan/jikan.go +++ b/utils/api/jikan/jikan.go @@ -39,6 +39,10 @@ var ( } ) +func StopRateLimiters() { + rateLimiter.Stop() +} + func (c *client) getBackOffDuration(attempt int) time.Duration { return time.Duration(float64(c.backoff) * math.Pow(2, float64(attempt-1))) } diff --git a/utils/api/tmdb/tmdb.go b/utils/api/tmdb/tmdb.go index 99f6670..f4c233a 100644 --- a/utils/api/tmdb/tmdb.go +++ b/utils/api/tmdb/tmdb.go @@ -312,12 +312,8 @@ func AttachEpisodeDescriptions(anime *entities.Anime) error { return nil } - title := "" - alternativeTitle := "" - if anime.Title != nil { - title = anime.Title.Romaji - alternativeTitle = anime.Title.English - } + title := anime.Title.Romaji + alternativeTitle := anime.Title.English tmdbID := 0 malID := anime.MALID @@ -443,12 +439,10 @@ func AttachEpisodeDescriptions(anime *entities.Anime) error { episode.EpisodeNumber = tmdbEpisodes[i].EpisodeNumber titleForID := "" - if episode.Title != nil { - if episode.Title.English != "" { - titleForID = episode.Title.English - } else if episode.Title.Romaji != "" { - titleForID = episode.Title.Romaji - } + if episode.Title.English != "" { + titleForID = episode.Title.English + } else if episode.Title.Romaji != "" { + titleForID = episode.Title.Romaji } if titleForID == "" && tmdbEpisodes[i].Name != "" { titleForID = tmdbEpisodes[i].Name @@ -565,14 +559,9 @@ func EnrichEpisodeFromMovie(anime *entities.Anime) error { episode := &anime.Episodes[0] - title := "" - alternativeTitle := "" - japaneseTitle := "" - if anime.Title != nil { - title = anime.Title.Romaji - alternativeTitle = anime.Title.English - japaneseTitle = anime.Title.Japanese - } + title := anime.Title.Romaji + alternativeTitle := anime.Title.English + japaneseTitle := anime.Title.Japanese tmdbID := 0 malID := anime.MALID @@ -580,10 +569,7 @@ func EnrichEpisodeFromMovie(anime *entities.Anime) error { tmdbID = anime.Mapping.TMDB } - animeScore := 0.0 - if anime.Scores != nil { - animeScore = anime.Scores.Score - } + animeScore := anime.Scores.Score logger.Debugf("TMDB", "Fetching movie episode data for: %s", title) @@ -622,12 +608,11 @@ func EnrichEpisodeFromMovie(anime *entities.Anime) error { description = noDescription } - if episode.Title == nil { - episode.Title = &entities.Title{} + episode.Title = entities.EpisodeTitle{ + English: movieDetails.Title, + Japanese: japaneseTitle, + Romaji: title, } - episode.Title.English = movieDetails.Title - episode.Title.Japanese = japaneseTitle - episode.Title.Romaji = title movieScore := float64(int((animeScore/2.0)*100)) / 100 diff --git a/utils/api/tvdb/tvdb.go b/utils/api/tvdb/tvdb.go index 5d6f78d..ee8f0a9 100644 --- a/utils/api/tvdb/tvdb.go +++ b/utils/api/tvdb/tvdb.go @@ -152,11 +152,12 @@ func EnrichEpisodesFromTVDB(anime *entities.Anime, tvdbEpisodes []types.TVDBEpis episode := &anime.Episodes[i] - if episode.Title == nil { - episode.Title = &entities.Title{} - } if ep.Name != "" { - episode.Title.English = ep.Name + episode.Title = entities.EpisodeTitle{ + English: ep.Name, + Japanese: episode.Title.Japanese, + Romaji: episode.Title.Romaji, + } } if ep.Image != "" { @@ -181,7 +182,7 @@ func EnrichEpisodesFromTVDB(anime *entities.Anime, tvdbEpisodes []types.TVDBEpis episode.EpisodeLength = float64(ep.Runtime) titleForID := ep.Name - if titleForID == "" && episode.Title != nil { + if titleForID == "" { if episode.Title.English != "" { titleForID = episode.Title.English } else if episode.Title.Romaji != "" { diff --git a/utils/ratelimit/limiter.go b/utils/ratelimit/limiter.go index c99a935..fdf6778 100644 --- a/utils/ratelimit/limiter.go +++ b/utils/ratelimit/limiter.go @@ -54,3 +54,9 @@ func (m *MultiLimiter) Wait() { limiter.Wait() } } + +func (m *MultiLimiter) Stop() { + for _, limiter := range m.limiters { + limiter.Stop() + } +} |
