Beispiel #1
0
        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);
        }
Beispiel #2
0
 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);
        }