Exemple #1
0
        /// <summary>
        /// Finds the closest anime (based on the user query)
        /// </summary>
        public void GetAndSetToClosestAnime()
        {
            searchResultOfAnime = jikanInterface.SearchAnime(_animeName).Result;
            if (searchResultOfAnime == null)
            {
                GetAndSetToRandomAnime();
            }
            else
            {
                _animeName = searchResultOfAnime.Results.First().Title;
                _malId     = searchResultOfAnime.Results.First().MalId;
                anime      = jikanInterface.GetAnime(_malId).Result;

                //If NSFW content is looked up, search up another anime
                if (anime.Rating.Contains("Rx"))
                {
                    GetAndSetToRandomAnime();
                }
                else
                {
                    animeName       = _animeName;
                    _scoreOfAnime   = (float)searchResultOfAnime.Results.First().Score;
                    _reviewsOfAnime = jikanInterface.GetAnimeReviews(_malId).Result;
                    _animePictures  = jikanInterface.GetAnimePictures(_malId).Result;
                }
            }
        }
Exemple #2
0
        public async Task SearchAnime_NonEmptyQuery_ShouldReturnNotNullSearchAnime(string query)
        {
            // When
            AnimeSearchResult returnedAnime = await _jikan.SearchAnime(query);

            // Then
            returnedAnime.Should().NotBeNull();
        }
Exemple #3
0
        public async Task SearchAnime_DanganronpaQuery_ShouldReturnDanganronpaAnime()
        {
            // When
            AnimeSearchResult danganronpaAnime = await _jikan.SearchAnime("danganronpa");

            // Then
            danganronpaAnime.ResultLastPage.Should().Be(20);
        }
Exemple #4
0
        public async Task SearchAnime_GirlQuerySecondPage_ShouldFindGirlAnime()
        {
            // When
            AnimeSearchResult returnedAnime = await _jikan.SearchAnime("girl", 2);

            // Then
            returnedAnime.Results.Select(x => x.Title).Should().Contain("Sakura-sou no Pet na Kanojo");
        }
Exemple #5
0
        public async Task <AnimeSearchEntry> GetAnimeFromSearch(string title)
        {
            IJikan            jikan    = new Jikan();
            AnimeSearchResult searches = await jikan.SearchAnime(title);

            var anime = searches.Results.First();

            return(anime);
        }
        public void ShouldReturnHaibaneRenmeiAnime()
        {
            AnimeSearchResult haibaneRenmei = Task.Run(() => jikan.SearchAnime("haibane")).Result;

            Assert.Equal("Haibane Renmei", haibaneRenmei.Results.First().Title);
            Assert.Equal("TV", haibaneRenmei.Results.First().Type);
            Assert.Equal(13, haibaneRenmei.Results.First().Episodes);
            Assert.Equal(387, haibaneRenmei.Results.First().MalId);
        }
        public async Task SearchAnime_HaibaneQuery_ShouldReturnHaibaneRenmeiAnime()
        {
            AnimeSearchResult haibaneRenmei = await jikan.SearchAnime("haibane");

            Assert.Equal("Haibane Renmei", haibaneRenmei.Results.First().Title);
            Assert.Equal("TV", haibaneRenmei.Results.First().Type);
            Assert.Equal(13, haibaneRenmei.Results.First().Episodes);
            Assert.Equal(387, haibaneRenmei.Results.First().MalId);
        }
Exemple #8
0
        private async Task <bool> LoadGlobalCatalogueAsync()
        {
            await App.DelayRequest(4);

            try
            {
                AnimeSearchResult anime = null;

                if (string.IsNullOrWhiteSpace(SearchQuery))
                {
                    anime = await App.Jikan.SearchAnime(_animeSearchConfig, _pageCount ++);
                }
                else if (SearchQuery?.Length > 0)
                {
                    ResetSearchConfig(_settingsPreferences.ShowNSFW, AnimeSearchSortable.Title, SortDirection.Descending);
                    anime = await App.Jikan.SearchAnime(SearchQuery, _pageCount ++, _animeSearchConfig);
                }

                Console.WriteLine($"Page count {_pageCount}");

                if (anime?.Results != null)
                {
                    anime.RequestCached = true;

                    IList <FavoritedAnime> animes = await anime.Results.ConvertAnimeSearchEntryToAnimeSubEntry()
                                                    .ConvertCatalogueAnimesToFavoritedAsync(_settingsPreferences.ShowNSFW);

                    var toAddAnimes      = new List <FavoritedAnime>();
                    var equalityComparer = new FavoriteAnimeEqualityComparer();

                    foreach (var item in animes)
                    {
                        if (!Animes.Contains(item, equalityComparer))
                        {
                            toAddAnimes.Add(item);
                        }
                    }

                    _originalCollection.AddRange(toAddAnimes);
                    Animes.AddRange(toAddAnimes);

                    return(false);
                }
            }
            catch (JikanRequestException ex)
            {
                ex.SaveExceptionData();
            }
            catch (OperationCanceledException ex)
            { }
            catch (Exception ex)
            {
                ex.SaveExceptionData();
            }

            return(true);
        }
        public async Task SearchAnime_BlameMechaConfig_ShouldFilterBleachMecha()
        {
            var searchConfig = new AnimeSearchConfig();

            searchConfig.Genres.Add(GenreSearch.Mecha);

            AnimeSearchResult returnedAnime = await jikan.SearchAnime("Blame", searchConfig);

            Assert.Contains("Blame! Movie", returnedAnime.Results.Select(x => x.Title));
        }
        public async Task SearchAnime_OnePieceAiringQuery_ShouldReturnAiringOnePieceAnime()
        {
            AnimeSearchConfig searchConfig = new AnimeSearchConfig()
            {
                Status = AiringStatus.Airing
            };

            AnimeSearchResult onePieceAnime = await jikan.SearchAnime("one p", searchConfig);

            Assert.Equal("One Piece", onePieceAnime.Results.First().Title);
        }
        public async Task SearchAnime_TVConfig_ShouldReturnNotNullSearchAnime(string query)
        {
            var searchConfig = new AnimeSearchConfig
            {
                Type = AnimeType.TV
            };

            AnimeSearchResult returnedAnime = await jikan.SearchAnime(query, searchConfig);

            Assert.NotNull(returnedAnime);
        }
        public async Task SearchAnime_DanganronpaTVConfig_ShouldReturnDanganronpaAnime()
        {
            var searchConfig = new AnimeSearchConfig
            {
                Type = AnimeType.TV
            };

            AnimeSearchResult danganronpaAnime = await jikan.SearchAnime("danganronpa", searchConfig);

            Assert.Equal(1, danganronpaAnime.ResultLastPage);
        }
        public async Task SearchAnime_OneSortByIdConfig_ShouldSortByIdHachimitsuFirst()
        {
            var searchConfig = new AnimeSearchConfig
            {
                OrderBy       = AnimeSearchSortable.Id,
                SortDirection = SortDirection.Ascending
            };

            AnimeSearchResult returnedAnime = await jikan.SearchAnime("one", searchConfig);

            Assert.Equal("Hachimitsu to Clover", returnedAnime.Results.First().Title);
        }
        public async Task SearchAnime_VioletIncorrectProducerConfig_ShouldNotFilter()
        {
            var searchConfig = new AnimeSearchConfig
            {
                ProducerId = -1
            };

            AnimeSearchResult returnedAnime = await jikan.SearchAnime("violet", searchConfig);

            Assert.Contains("Violence Jack: Jigoku Gai-hen", returnedAnime.Results.Select(x => x.Title));
            Assert.Contains("Violet Evergarden", returnedAnime.Results.Select(x => x.Title));
        }
Exemple #15
0
        public async Task SearchAnime_BlameMechaConfig_ShouldFilterBleachMecha()
        {
            // Given
            var searchConfig = new AnimeSearchConfig();

            searchConfig.Genres.Add(GenreSearch.Mecha);

            // When
            AnimeSearchResult returnedAnime = await _jikan.SearchAnime("Blame", searchConfig);

            // Then
            returnedAnime.Results.Select(x => x.Title).Should().Contain("Blame! Movie");
        }
        public async Task SearchAnime_FairyTailTVAbove8Config_ShouldFilterFairyTailAnimeScore()
        {
            var searchConfig = new AnimeSearchConfig
            {
                Type  = AnimeType.TV,
                Score = 8
            };

            AnimeSearchResult fairyTailAnime = await jikan.SearchAnime("Fairy Tail", searchConfig);

            Assert.Equal("Fairy Tail (2014)", fairyTailAnime.Results.First().Title);
            Assert.Equal("Fairy Tail: Final Series", fairyTailAnime.Results.Skip(1).First().Title);
        }
        public async Task SearchAnime_VioletProducerKyotoAnimationConfig_ShouldReturnVEGAsTop3()
        {
            var searchConfig = new AnimeSearchConfig
            {
                ProducerId = 2
            };

            AnimeSearchResult returnedAnime = await jikan.SearchAnime("violet", searchConfig);

            Assert.Contains("Evergarden", returnedAnime.Results.First().Title);
            Assert.Contains("Evergarden", returnedAnime.Results.Skip(1).First().Title);
            Assert.Contains("Evergarden", returnedAnime.Results.Skip(2).First().Title);
        }
        public async Task SearchAnime_BleachAfter2017Config_ShouldFilterBleachAfter2017()
        {
            System.DateTime configDate   = new System.DateTime(2018, 1, 1);
            var             searchConfig = new AnimeSearchConfig
            {
                StartDate = configDate
            };

            AnimeSearchResult returnedAnime = await jikan.SearchAnime("Bleach", searchConfig);

            Assert.Contains("Full Metal Panic! Invisible Victory", returnedAnime.Results.Select(x => x.Title));
            Assert.Contains("Beatless", returnedAnime.Results.Select(x => x.Title));
        }
        public async Task SearchAnime_BlameMechaMovieConfig_ShouldFilterBleachMechaMovie()
        {
            var searchConfig = new AnimeSearchConfig
            {
                Type = AnimeType.Movie
            };

            searchConfig.Genres.Add(GenreSearch.Mecha);

            AnimeSearchResult returnedAnime = await jikan.SearchAnime("Blame", searchConfig);

            Assert.Equal("Blame! Movie", returnedAnime.Results.First().Title);
        }
Exemple #20
0
        public async Task SearchAnime_DanganronpaTVConfig_ShouldReturnDanganronpaAnime()
        {
            // Given
            var searchConfig = new AnimeSearchConfig
            {
                Type = AnimeType.TV
            };

            // When
            AnimeSearchResult danganronpaAnime = await _jikan.SearchAnime("danganronpa", searchConfig);

            // Then
            danganronpaAnime.ResultLastPage.Should().Be(2);
        }
Exemple #21
0
        public async Task SearchAnime_OnePieceAiringQuery_ShouldReturnAiringOnePieceAnime()
        {
            // Given
            AnimeSearchConfig searchConfig = new AnimeSearchConfig()
            {
                Status = AiringStatus.Airing
            };

            // When
            AnimeSearchResult onePieceAnime = await _jikan.SearchAnime("one p", searchConfig);

            // Then
            onePieceAnime.Results.First().Title.Should().Be("One Piece");
        }
        public async Task SearchAnime_OneSortByMembersConfig_ShouldSortByPopularityOPMFirst()
        {
            var searchConfig = new AnimeSearchConfig
            {
                OrderBy       = AnimeSearchSortable.Members,
                SortDirection = SortDirection.Descending
            };

            AnimeSearchResult returnedAnime = await jikan.SearchAnime("one", searchConfig);

            Assert.Contains("One Piece", returnedAnime.Results.Select(x => x.Title));
            Assert.Contains("One Punch Man", returnedAnime.Results.Select(x => x.Title));
            Assert.Equal("One Punch Man", returnedAnime.Results.First().Title);
        }
Exemple #23
0
        public async Task SearchAnime_TVConfig_ShouldReturnNotNullSearchAnime(string query)
        {
            // Given
            var searchConfig = new AnimeSearchConfig
            {
                Type = AnimeType.TV
            };

            // When
            AnimeSearchResult returnedAnime = await _jikan.SearchAnime(query, searchConfig);

            // Then
            returnedAnime.Should().Be(returnedAnime);
        }
Exemple #24
0
        public async Task mal(string keys)
        {
            // Initialize JikanWrapper
            IJikan jikan = new Jikan(true);

            // Send request to search anime with "haibane" key word
            AnimeSearchResult animeSearchResult = await jikan.SearchAnime(keys);

            await ReplyAsync(animeSearchResult.Results.First().Title);

            //// Send request to search anime with "gundam" key word, second page of results
            //animeSearchResult = await jikan.SearchAnime(keys, 2);

            //AnimeSearchConfig animeSearchConfig = new AnimeSearchConfig()
            //{
            //    Type = AnimeType.Movie,
            //    Score = 7
            //};
            //await ReplyAsync(animeSearchResult.Results.First().Title);
            //// Send request to search anime with "gundam" key word, movies with score bigger than 7 only.
            //animeSearchResult = await jikan.SearchAnime(keys, animeSearchConfig);

            //animeSearchConfig = new AnimeSearchConfig()
            //{
            //    Genres = { GenreSearch.Action, GenreSearch.Adventure },
            //    GenreIncluded = true
            //};
            //await ReplyAsync(animeSearchResult.Results.First().Title);
            //// Send request to search anime with "samurai" key word, with action and/or adventure genre.
            //animeSearchResult = await jikan.SearchAnime(keys, animeSearchConfig);

            //animeSearchConfig = new AnimeSearchConfig()
            //{
            //    Genres = { GenreSearch.Mecha, GenreSearch.Romance },
            //    GenreIncluded = false
            //};
            //await ReplyAsync(animeSearchResult.Results.First().Title);
            //// Send request to search anime with "samurai" key word, without mecha and/or romance genre.
            //animeSearchResult = await jikan.SearchAnime(keys, animeSearchConfig);
            //animeSearchConfig = new AnimeSearchConfig()

            //{
            //    Rating = AgeRating.RX
            //};
            //await ReplyAsync(animeSearchResult.Results.First().Title);
            //// Send request to search anime with "xxx" key word, adult anime only, second page of results
            //animeSearchResult = await jikan.SearchAnime(keys, 2, animeSearchConfig);
            //await ReplyAsync(animeSearchResult.Results.First().Title);
        }
        public async Task SearchAnime_EmptyQueryActionTvAnimeSecondPage_ShouldFindAzurLaneAndBaccano()
        {
            var searchConfig = new AnimeSearchConfig
            {
                Type   = AnimeType.TV,
                Genres = new List <GenreSearch> {
                    GenreSearch.Action
                }
            };

            AnimeSearchResult returnedAnime = await jikan.SearchAnime(searchConfig, 2);

            Assert.Contains("Azur Lane", returnedAnime.Results.Select(x => x.Title));
            Assert.Contains("Baccano!", returnedAnime.Results.Select(x => x.Title));
        }
Exemple #26
0
        public async Task SearchAnime_OneSortByIdConfig_ShouldSortByIdHachimitsuFirst()
        {
            // Given
            var searchConfig = new AnimeSearchConfig
            {
                OrderBy       = AnimeSearchSortable.Id,
                SortDirection = SortDirection.Ascending
            };

            // When
            AnimeSearchResult returnedAnime = await _jikan.SearchAnime("one", searchConfig);

            // Then
            returnedAnime.Results.First().Title.Should().Be("Hachimitsu to Clover");
        }
        private async void SearchButton_Click(object sender, EventArgs e)
        {
            WriteDebugLabel("Searching");

            EnableAnimeBox();
            AnimeSearchResult asr = await SearchAnime();

            if (asr != null)
            {
                foreach (AnimeSearchEntry r in asr.Results)
                {
                    AnimeBox.Items.Add(r.Title);
                }
            }
        }
        public async Task SearchAnime_EmptyQueryActionTvAnimeFirstPage_ShouldFindAfroSamuraiAndAjin()
        {
            var searchConfig = new AnimeSearchConfig
            {
                Type   = AnimeType.TV,
                Genres = new List <GenreSearch> {
                    GenreSearch.Action
                }
            };

            AnimeSearchResult returnedAnime = await jikan.SearchAnime(searchConfig, 1);

            Assert.Contains("Ajin", returnedAnime.Results.Select(x => x.Title));
            Assert.Contains("Afro Samurai", returnedAnime.Results.Select(x => x.Title));
        }
        public async Task SearchAnime_OneQueryActionCompletedAnimeSecondPage_ShouldReturnNotEmptyCollection()
        {
            var searchConfig = new AnimeSearchConfig
            {
                Status = AiringStatus.Completed,
                Genres = new List <GenreSearch> {
                    GenreSearch.Action
                }
            };

            AnimeSearchResult returnedAnime = await jikan.SearchAnime("one", 2, searchConfig);

            Assert.NotNull(returnedAnime);
            Assert.NotEmpty(returnedAnime.Results);
        }
Exemple #30
0
        public async Task SearchAnime_HaibaneQuery_ShouldReturnHaibaneRenmeiAnime()
        {
            // When
            AnimeSearchResult result = await _jikan.SearchAnime("haibane");

            // Then
            var firstResult = result.Results.First();

            using (new AssertionScope())
            {
                firstResult.Title.Should().Be("Haibane Renmei");
                firstResult.Type.Should().Be("TV");
                firstResult.Episodes.Should().Be(13);
                firstResult.MalId.Should().Be(387);
            }
        }