diff options
| author | Bobby <[email protected]> | 2026-02-03 15:17:34 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2026-02-03 15:17:34 +0530 |
| commit | 7aa298f90fb17bc915f15a90180feb8434d596a0 (patch) | |
| tree | 084e93e769591cb47eb453ca2adf3e78646d4e73 /services | |
| parent | fb233706694e73774751f2481bf7b5df57b98fd9 (diff) | |
| download | metachan-7aa298f90fb17bc915f15a90180feb8434d596a0.tar.xz metachan-7aa298f90fb17bc915f15a90180feb8434d596a0.zip | |
Enhance episode ID generation and task management: include MAL ID and episode number for uniqueness, and update AnimeSync task to run weekly with last run tracking
Diffstat (limited to 'services')
| -rw-r--r-- | services/anime/helpers.go | 10 | ||||
| -rw-r--r-- | services/anime/service.go | 4 |
2 files changed, 8 insertions, 6 deletions
diff --git a/services/anime/helpers.go b/services/anime/helpers.go index 2c81116..2e735b0 100644 --- a/services/anime/helpers.go +++ b/services/anime/helpers.go @@ -16,7 +16,7 @@ import ( "time" ) -func generateEpisodeID(titles types.EpisodeTitles) string { +func generateEpisodeID(malID int, episodeNumber int, titles types.EpisodeTitles) string { var title string if titles.English != "" { title = titles.English @@ -26,11 +26,13 @@ func generateEpisodeID(titles types.EpisodeTitles) string { title = titles.Japanese } - hash := md5.Sum([]byte(title)) + // Include MAL ID and episode number to ensure uniqueness across all anime + uniqueString := fmt.Sprintf("%d-%d-%s", malID, episodeNumber, title) + hash := md5.Sum([]byte(uniqueString)) return fmt.Sprintf("%x", hash) } -func generateBasicEpisodes(episodes []jikan.JikanAnimeEpisode) []types.AnimeSingleEpisode { +func generateBasicEpisodes(malID int, episodes []jikan.JikanAnimeEpisode) []types.AnimeSingleEpisode { var animeEpisodes []types.AnimeSingleEpisode for _, episode := range episodes { @@ -41,7 +43,7 @@ func generateBasicEpisodes(episodes []jikan.JikanAnimeEpisode) []types.AnimeSing } animeEpisodes = append(animeEpisodes, types.AnimeSingleEpisode{ - ID: generateEpisodeID(titles), + ID: generateEpisodeID(malID, episode.MALID, titles), Titles: titles, Aired: episode.Aired, Score: episode.Score, diff --git a/services/anime/service.go b/services/anime/service.go index a22752b..ff7d0a6 100644 --- a/services/anime/service.go +++ b/services/anime/service.go @@ -227,7 +227,7 @@ func (s *Service) GetAnimeDetailsWithSource(mapping *entities.AnimeMapping, sour Prefix: "AnimeAPI", }) // Fallback to basic episode generation - basicEpisodes := generateBasicEpisodes(episodes.Data) + basicEpisodes := generateBasicEpisodes(anime.Data.MALID, episodes.Data) enrichedEpisodes = basicEpisodes } } else { @@ -265,7 +265,7 @@ func (s *Service) GetAnimeDetailsWithSource(mapping *entities.AnimeMapping, sour // Fallback to TMDB if TVDB failed or wasn't available if usedfallback { - basicEpisodes := generateBasicEpisodes(episodes.Data) + basicEpisodes := generateBasicEpisodes(anime.Data.MALID, episodes.Data) logger.Log(fmt.Sprintf("Generated basic episodes: %d", len(basicEpisodes)), logger.LogOptions{ Level: logger.Debug, Prefix: "AnimeAPI", |
