示例#1
0
        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
            }
        }
示例#2
0
        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
            }
        }
示例#3
0
        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}");
            }
        }