private async Task <long?> MatchSeasonByDateAsync(DateTime?airingDate) { (string, int)? season = JikanParserHelper.GetSeasonPartsByAiringDate(airingDate); if (season is null) { return(null); } var foundSeason = await _seasonRepository.GetAsync(x => x.Name.ToLower().Equals(season.Value.Item1.ToLower()) && x.Year.Equals(season.Value.Item2)); return(foundSeason?.Id); }
private async Task UpdateAnimeAsync(Anime animeToUpdate, MalAnimeUpdateData malAnimeUpdateData) { animeToUpdate.Title = malAnimeUpdateData.Title; animeToUpdate.About = malAnimeUpdateData.About; animeToUpdate.EnglishTitle = malAnimeUpdateData.EnglishTitle; animeToUpdate.KanjiTitle = malAnimeUpdateData.JapaneseTitle; animeToUpdate.Popularity = malAnimeUpdateData.Popularity; animeToUpdate.ImageUrl = malAnimeUpdateData.ImageUrl; animeToUpdate.AiringDate = malAnimeUpdateData.AiringDate ?? animeToUpdate.AiringDate; animeToUpdate.TitleSynonyms = !string.IsNullOrWhiteSpace(malAnimeUpdateData.TitleSynonyms) ? malAnimeUpdateData.TitleSynonyms : animeToUpdate.TitleSynonyms; animeToUpdate.StatusId = JikanParserHelper.GetUpdatedAnimeStatus(animeToUpdate.StatusId, malAnimeUpdateData.Status); animeToUpdate.TypeId = JikanParserHelper.GetUpdatedAnimeType(animeToUpdate.TypeId, malAnimeUpdateData.Type); animeToUpdate.SeasonId = string.IsNullOrEmpty(malAnimeUpdateData.Season) ? await MatchSeasonByDateAsync(malAnimeUpdateData.AiringDate) : await MatchSeasonBySeasonAsync(malAnimeUpdateData.Season); }
public async Task InsertSingleSeiyuu(UpdateSeiyuuMessage updateSeiyuuMessage) { var seiyuuToUpdate = await _seiyuuRepository.GetAsync(updateSeiyuuMessage.MalId); if (seiyuuToUpdate != null) { return; } var updateData = await _malApiService.GetSeiyuuDataAsync(updateSeiyuuMessage.MalId); if (updateData == null || !JikanParserHelper.IsJapanese(updateData.JapaneseName) || !updateData.VoiceActingRoles.Any()) { return; } await InsertSeiyuuAsync(updateSeiyuuMessage, updateData); await InsertRolesAsync(updateSeiyuuMessage, updateData.VoiceActingRoles); }
private async Task <Anime> InsertAnimeAsync(long malId) { var existingAnime = await _animeRepository.GetAsync(malId); if (existingAnime != null) { return(existingAnime); } var parsedData = await _malApiService.GetAnimeDataAsync(malId); if (parsedData is null) { return(null); } var newAnime = new Anime { Id = Guid.NewGuid(), MalId = malId, Title = parsedData.Title, ImageUrl = parsedData.ImageUrl, About = parsedData.About, AiringDate = parsedData.AiringDate ?? DateTime.MinValue, EnglishTitle = parsedData.EnglishTitle, KanjiTitle = parsedData.JapaneseTitle, Popularity = parsedData.Popularity, TitleSynonyms = !string.IsNullOrWhiteSpace(parsedData.TitleSynonyms) ? parsedData.TitleSynonyms : string.Empty, StatusId = JikanParserHelper.GetUpdatedAnimeStatus(null, parsedData.Status), TypeId = JikanParserHelper.GetUpdatedAnimeType(null, parsedData.Type), SeasonId = string.IsNullOrEmpty(parsedData.Season) ? await MatchSeasonByDateAsync(parsedData.AiringDate) : await MatchSeasonBySeasonAsync(parsedData.Season) }; await _animeRepository.AddAsync(newAnime); Console.WriteLine($"Inserted anime with malId {malId} ({parsedData.Title})"); return(newAnime); }