aboutsummaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorBobby <[email protected]>2025-05-07 01:00:52 +0530
committerBobby <[email protected]>2025-05-07 01:00:52 +0530
commitf656ab2350f5bbaa8465278b0842a0c052858a86 (patch)
treed30eb944c99aa52e93a78bfd8df0f05fff24f30b /utils
parent328fce93d5d7607576cf1735df3032ecdfe9c2e8 (diff)
downloadmetachan-f656ab2350f5bbaa8465278b0842a0c052858a86.tar.xz
metachan-f656ab2350f5bbaa8465278b0842a0c052858a86.zip
Airing Schedule and Next Airing Episode in Anime
Diffstat (limited to 'utils')
-rw-r--r--utils/anime/anime.go36
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
+}