aboutsummaryrefslogtreecommitdiff
path: root/services
diff options
context:
space:
mode:
authorBobby <[email protected]>2026-02-03 15:17:34 +0530
committerBobby <[email protected]>2026-02-03 15:17:34 +0530
commit7aa298f90fb17bc915f15a90180feb8434d596a0 (patch)
tree084e93e769591cb47eb453ca2adf3e78646d4e73 /services
parentfb233706694e73774751f2481bf7b5df57b98fd9 (diff)
downloadmetachan-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.go10
-rw-r--r--services/anime/service.go4
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",