feat: use cached anime data for recommendations to show english titles when possible

This commit is contained in:
2026-04-08 17:31:45 +02:00
parent 9072348159
commit 6dfc1e9fa8

View File

@@ -50,9 +50,15 @@ func (c *Client) GetRecommendations(animeID int, limit int) ([]Anime, error) {
for i := 0; i < max; i++ { for i := 0; i < max; i++ {
rec := result.Data[i] rec := result.Data[i]
// Map the recommendation data directly into an Anime struct. // Try to see if we already have the full anime details in our local cache.
// By doing this locally, we avoid N additional rate-limited API calls // If we do, we can use it to get the English title without making an API call!
// which was destroying the Jikan limit buckets. var fullAnime Anime
animeCacheKey := fmt.Sprintf("anime:%d", rec.Entry.MalID)
if c.getCache(animeCacheKey, &fullAnime) {
animes = append(animes, fullAnime)
} else {
// Otherwise, map the basic recommendation data directly into an Anime struct.
anime := Anime{ anime := Anime{
MalID: rec.Entry.MalID, MalID: rec.Entry.MalID,
Title: rec.Entry.Title, Title: rec.Entry.Title,
@@ -71,9 +77,9 @@ func (c *Client) GetRecommendations(animeID int, limit int) ([]Anime, error) {
}, },
}, },
} }
animes = append(animes, anime) animes = append(animes, anime)
} }
}
c.setCache(cacheKey, animes, time.Hour*24) c.setCache(cacheKey, animes, time.Hour*24)
return animes, nil return animes, nil