Ejemplo n.º 1
0
        public static Anime AnimeCons(AnimeListEntry entry, Jikan jikan)
        {
            var anime = new Anime(entry);

            JikanDotNet.Anime _anime = jikan.GetAnime(anime.MalId).Result;
            return(anime);
        }
Ejemplo n.º 2
0
        private async Task UpdateAnime(Data.Model.Anime anime, JikanDotNet.Anime animeParsedData)
        {
            anime.Title         = animeParsedData.Title;
            anime.About         = animeParsedData.Synopsis;
            anime.EnglishTitle  = animeParsedData.TitleEnglish;
            anime.JapaneseTitle = animeParsedData.TitleJapanese;
            anime.Popularity    = animeParsedData.Members;

            anime.ImageUrl = EmptyStringIfPlaceholder(animeParsedData.ImageURL);

            if (animeParsedData.Aired.From.HasValue)
            {
                anime.AiringDate = animeParsedData.Aired.From.Value.ToString("dd-MM-yyyy");
            }

            if (animeParsedData.TitleSynonyms.Count > 0)
            {
                anime.TitleSynonyms = string.Join(';', animeParsedData.TitleSynonyms);
            }

            anime.TypeId = await MatchAnimeType(animeParsedData.Type);

            anime.StatusId = await MatchAnimeStatus(animeParsedData.Status);

            anime.SeasonId = string.IsNullOrEmpty(animeParsedData.Premiered) ?
                             await MatchSeason(animeParsedData.Aired.From) :
                             await MatchSeason(animeParsedData.Premiered);

            animeRepository.Update(anime);

            await animeRepository.CommitAsync();
        }
Ejemplo n.º 3
0
        public async Task UpdateAllAnime()
        {
            logger.Log("Started UpdateAllAnime job.");

            int  page            = 0;
            int  pageSize        = 100;
            long totalAnimeCount = await animeRepository.CountAsync(x => true);

            while (page * pageSize < totalAnimeCount)
            {
                var animeCollection = await animeRepository.GetOrderedPageAsync(PredicateBuilder.True <Data.Model.Anime>(), "MalId ASC", page, pageSize);

                foreach (Data.Model.Anime anime in animeCollection.Results)
                {
                    JikanDotNet.Anime animeFullData = await SendSingleAnimeRequest(anime.MalId, 0);

                    if (animeFullData != null)
                    {
                        logger.Log($"Parsed anime with id {anime.MalId}: {anime.Title}");

                        await UpdateAnime(anime, animeFullData);
                    }
                    else
                    {
                        logger.Log($"Error on {anime.MalId} - not found");
                        continue;
                    }
                }

                page++;
            }
            logger.Log("Finished UpdateAllAnime job.");
        }
Ejemplo n.º 4
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
            }
        }
Ejemplo n.º 5
0
        public async Task SuggestAnime(CommandContext ctx)
        {
            IJikan jikan = new Jikan();

            JikanDotNet.Anime RandomAnime = null;
            int AnimeID = 0;

            Console.WriteLine("SuggestAnime");
            do
            {
                AnimeID = getRandom();

                Task <JikanDotNet.Anime> task = jikan.GetAnime(AnimeID);
                Task continutation            = task.ContinueWith(t =>
                {
                    Console.WriteLine("Result : " + t.Result);
                    RandomAnime = t.Result;
                });
                continutation.Wait();
            } while (Object.ReferenceEquals(null, RandomAnime));


            string Desc = "Episodes :tv:        : {0}\n\n" +
                          "Duration :clock1:    : {1}\n\n" +
                          "Score    :star:      : {2}\n\n" +
                          "Rating   :underage:  : {3}\n";


            var AnimeDesc = string.Format(Desc, RandomAnime.Episodes,
                                          RandomAnime.Duration, RandomAnime.Score, RandomAnime.Rating);


            var embed = new DiscordEmbedBuilder
            {
                Title       = RandomAnime.Title,
                Description = AnimeDesc,
                ImageUrl    = RandomAnime.ImageURL,
            };

            await ctx.RespondAsync(ctx.User.Mention, embed : embed);
        }
Ejemplo n.º 6
0
        private async Task <JikanDotNet.Anime> SendSingleAnimeRequest(long malId, short retryCount)
        {
            JikanDotNet.Anime anime = null;
            await Task.Delay(3000 + retryCount * 10000);

            try
            {
                anime = await jikan.GetAnime(malId);
            }
            catch (Exception ex)
            {
                if (retryCount < 10)
                {
                    if (ex.InnerException is JikanRequestException && (ex.InnerException as JikanRequestException).ResponseCode == System.Net.HttpStatusCode.TooManyRequests)
                    {
                        retryCount++;
                        return(await SendSingleAnimeRequest(malId, retryCount));
                    }
                }
            }

            return(anime);
        }