diff options
| author | Bobby <[email protected]> | 2025-05-07 01:00:52 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2025-05-07 01:00:52 +0530 |
| commit | f656ab2350f5bbaa8465278b0842a0c052858a86 (patch) | |
| tree | d30eb944c99aa52e93a78bfd8df0f05fff24f30b /utils | |
| parent | 328fce93d5d7607576cf1735df3032ecdfe9c2e8 (diff) | |
| download | metachan-f656ab2350f5bbaa8465278b0842a0c052858a86.tar.xz metachan-f656ab2350f5bbaa8465278b0842a0c052858a86.zip | |
Airing Schedule and Next Airing Episode in Anime
Diffstat (limited to 'utils')
| -rw-r--r-- | utils/anime/anime.go | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/utils/anime/anime.go b/utils/anime/anime.go index 997ff39..e5b7186 100644 --- a/utils/anime/anime.go +++ b/utils/anime/anime.go @@ -75,6 +75,9 @@ func GetAnimeDetails(animeMapping *entities.AnimeMapping) (*types.Anime, error) characters := getAnimeCharacters(characterResponse) + nextAiringEpisode := getNextAiringEpisode(anilistAnime) + schedule := getAnimeSchedule(anilistAnime) + animeDetails := &types.Anime{ MALID: malID, Titles: types.AnimeTitles{ @@ -142,7 +145,9 @@ func GetAnimeDetails(animeMapping *entities.AnimeMapping) (*types.Anime, error) Aired: len(episodes.Data), Episodes: episodeData, }, - Characters: characters, + NextAiringEpisode: nextAiringEpisode, + AiringSchedule: schedule, + Characters: characters, Mappings: types.AnimeMappings{ AniDB: animeMapping.AniDB, Anilist: animeMapping.Anilist, @@ -254,3 +259,32 @@ func generateLicensors(genericPLS []types.JikanGenericMALStructure) []types.Anim } return licensors } + +func getNextAiringEpisode(anilistAnime *types.AnilistAnimeResponse) types.AnimeAiringEpisode { + if anilistAnime.Data.Media.NextAiringEpisode.ID == 0 { + return types.AnimeAiringEpisode{} + } + + return types.AnimeAiringEpisode{ + TimeUntilAiring: anilistAnime.Data.Media.NextAiringEpisode.TimeUntilAiring, + Episode: anilistAnime.Data.Media.NextAiringEpisode.Episode, + AiringAt: anilistAnime.Data.Media.NextAiringEpisode.AiringAt, + } +} + +func getAnimeSchedule(anilistAnime *types.AnilistAnimeResponse) []types.AnimeAiringEpisode { + if anilistAnime.Data.Media.AiringSchedule.Nodes == nil { + return nil + } + + schedule := make([]types.AnimeAiringEpisode, len(anilistAnime.Data.Media.AiringSchedule.Nodes)) + for i, episode := range anilistAnime.Data.Media.AiringSchedule.Nodes { + schedule[i] = types.AnimeAiringEpisode{ + TimeUntilAiring: episode.TimeUntilAiring, + Episode: episode.Episode, + AiringAt: episode.AiringAt, + } + } + + return schedule +} |
