aboutsummaryrefslogtreecommitdiff
path: root/utils/anime/anime.go
diff options
context:
space:
mode:
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