private async Task <bool> InsertAnime(VoiceActingRole voiceActingRole) { var existingAnime = await animeRepository.GetAsync(voiceActingRole.Anime.MalId); if (existingAnime == null) { try { JikanDotNet.Anime animeFullData = await SendSingleAnimeRequest(voiceActingRole.Anime.MalId, 0); string titleSynonym = string.Empty; if (animeFullData != null) { logger.Log($"Parsed anime with id:{animeFullData.MalId}"); if (animeFullData.TitleSynonyms.Any()) { titleSynonym = string.Join(';', animeFullData.TitleSynonyms.ToArray()); } animeRepository.Add( new Data.Model.Anime { MalId = animeFullData.MalId, ImageUrl = EmptyStringIfPlaceholder(animeFullData.ImageURL), Title = animeFullData.Title, Popularity = animeFullData.Members, About = animeFullData.Synopsis, JapaneseTitle = animeFullData.TitleJapanese, EnglishTitle = animeFullData.TitleEnglish, AiringDate = animeFullData.Aired.From.HasValue ? animeFullData.Aired.From.Value.ToString("dd-MM-yyyy") : null, StatusId = await MatchAnimeStatus(animeFullData.Status), TypeId = await MatchAnimeType(animeFullData.Type), SeasonId = await MatchSeason(animeFullData.Premiered) } ); await animeRepository.CommitAsync(); return(true); } return(false); } catch (Exception ex) { logger.Log($"Error during inserting anime {voiceActingRole.Anime.Name} with id {voiceActingRole.Character.MalId}: {ex.Message}"); return(false); } } else { return(true); //already inserted } }
private async Task <bool> InsertCharacter(VoiceActingRole voiceActingRole) { var existingCharacter = await characterRepository.GetAsync(voiceActingRole.Character.MalId); if (existingCharacter == null) { try { JikanDotNet.Character characterFullData = await SendSingleCharacterRequest(voiceActingRole.Character.MalId, 0); string nicknames = string.Empty; if (characterFullData != null) { logger.Log($"Parsed id:{characterFullData.MalId}"); if (characterFullData.Nicknames.Any()) { nicknames = string.Join(';', characterFullData.Nicknames.ToArray()); } characterRepository.Add( new Data.Model.Character { MalId = characterFullData.MalId, ImageUrl = EmptyStringIfPlaceholder(characterFullData.ImageURL), Name = characterFullData.Name, Popularity = characterFullData.MemberFavorites, About = characterFullData.About, NameKanji = characterFullData.NameKanji, Nicknames = nicknames } ); await characterRepository.CommitAsync(); return(true); } return(false); } catch (Exception ex) { logger.Log($"Error during inserting character {voiceActingRole.Anime.Name} with id {voiceActingRole.Anime.MalId}: {ex.Message}"); return(false); } } else { return(true); //already inserted } }
private async Task InsertRole(long seiyuuMalId, VoiceActingRole voiceActingRole, IReadOnlyList <Role> seiyuuRoles) { try { if (!seiyuuRoles.Any(x => x.AnimeId.Equals(voiceActingRole.Anime.MalId) && x.CharacterId.Equals(voiceActingRole.Character.MalId))) { bool isCharacterInDatabase = true; bool isAnimeInDatabase = true; if (await animeRepository.GetAsync(voiceActingRole.Anime.MalId) == null) { isAnimeInDatabase = await InsertAnime(voiceActingRole); } if (await characterRepository.GetAsync(voiceActingRole.Character.MalId) == null) { isCharacterInDatabase = await InsertCharacter(voiceActingRole); } if (isAnimeInDatabase && isCharacterInDatabase) { roleRepository.Add(new Role() { LanguageId = 1, // Always japanese for now RoleTypeId = voiceActingRole.Role.Equals("Main") ? 1 : 2, AnimeId = voiceActingRole.Anime.MalId, CharacterId = voiceActingRole.Character.MalId, SeiyuuId = seiyuuMalId }); await roleRepository.CommitAsync(); logger.Log($"Inserted {voiceActingRole.Character.Name} in {voiceActingRole.Anime.Name}"); } } } catch (Exception ex) { logger.Log($"Error during inserting with anime {voiceActingRole.Anime.Name}, character {voiceActingRole.Character.Name}: {ex.Message}"); } }