public static Anime AnimeCons(AnimeListEntry entry, Jikan jikan) { var anime = new Anime(entry); JikanDotNet.Anime _anime = jikan.GetAnime(anime.MalId).Result; return(anime); }
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(); }
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."); }
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 } }
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); }
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); }