aboutsummaryrefslogtreecommitdiff
path: root/utils/anime/anime.go
diff options
context:
space:
mode:
authorBobby <[email protected]>2025-05-07 00:46:21 +0530
committerBobby <[email protected]>2025-05-07 00:46:21 +0530
commit328fce93d5d7607576cf1735df3032ecdfe9c2e8 (patch)
tree6d0d6b36d7f46112bbaa4e2788f7624301649390 /utils/anime/anime.go
parent8cc063b4f65c2181fde4c567f2cdc82a75cca9bf (diff)
downloadmetachan-328fce93d5d7607576cf1735df3032ecdfe9c2e8.tar.xz
metachan-328fce93d5d7607576cf1735df3032ecdfe9c2e8.zip
Added characters and streaming to anime
Diffstat (limited to 'utils/anime/anime.go')
-rw-r--r--utils/anime/anime.go35
1 files changed, 34 insertions, 1 deletions
diff --git a/utils/anime/anime.go b/utils/anime/anime.go
index ab10323..997ff39 100644
--- a/utils/anime/anime.go
+++ b/utils/anime/anime.go
@@ -27,7 +27,7 @@ func GetAnimeDetails(animeMapping *entities.AnimeMapping) (*types.Anime, error)
return nil, fmt.Errorf("failed to get anime episodes: %w", err)
}
- episodeData, err := generateEpisodeDataWithDescriptions(
+ episodeData, _ := generateEpisodeDataWithDescriptions(
episodes.Data,
anime.Data.Title,
anime.Data.TitleEnglish,
@@ -68,6 +68,13 @@ func GetAnimeDetails(animeMapping *entities.AnimeMapping) (*types.Anime, error)
}
}
+ characterResponse, err := getAnimeCharactersViaJikan(malID)
+ if err != nil {
+ return nil, fmt.Errorf("failed to get anime characters: %w", err)
+ }
+
+ characters := getAnimeCharacters(characterResponse)
+
animeDetails := &types.Anime{
MALID: malID,
Titles: types.AnimeTitles{
@@ -135,6 +142,7 @@ func GetAnimeDetails(animeMapping *entities.AnimeMapping) (*types.Anime, error)
Aired: len(episodes.Data),
Episodes: episodeData,
},
+ Characters: characters,
Mappings: types.AnimeMappings{
AniDB: animeMapping.AniDB,
Anilist: animeMapping.Anilist,
@@ -161,6 +169,31 @@ func getEpisodeCount(malAnime *types.JikanAnimeResponse, anilistAnime *types.Ani
return episodes
}
+func getAnimeCharacters(characterResponse *types.JikanAnimeCharacterResponse) []types.AnimeCharacter {
+ characters := make([]types.AnimeCharacter, len(characterResponse.Data))
+ for i, character := range characterResponse.Data {
+ characters[i] = types.AnimeCharacter{
+ MALID: character.Character.MALID,
+ URL: character.Character.URL,
+ ImageURL: character.Character.Images.JPG.ImageURL,
+ Name: character.Character.Name,
+ Role: character.Role,
+ VoiceActors: make([]types.AnimeVoiceActor, len(character.VoiceActors)),
+ }
+
+ for j, voiceActor := range character.VoiceActors {
+ characters[i].VoiceActors[j] = types.AnimeVoiceActor{
+ MALID: voiceActor.Person.MALID,
+ URL: voiceActor.Person.URL,
+ Image: voiceActor.Person.Images.JPG.ImageURL,
+ Name: voiceActor.Person.Name,
+ Language: voiceActor.Language,
+ }
+ }
+ }
+ return characters
+}
+
func generateGenres(genres, explicitGenres []types.JikanGenericMALStructure) []types.AnimeGenres {
animeGenres := make([]types.AnimeGenres, len(genres)+len(explicitGenres))
counter := 0