Example #1
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);
        }
Example #2
0
        public async Task LoadAsync(bool refresh = false)
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;

            if (IsMultiSeason)
            {
                FeaturedVideo = await _animeService.GetLatestEpisodeAsync();

                var seasons = await _seasonService.ListAsync(new DataServices.ListRequest {
                    Skip = refresh ? 0 : Seasons.Count
                });

                Seasons.Clear();
                Seasons.AddRange(seasons);

                foreach (var season in Seasons)
                {
                    var episodes = await _animeService.ListEpisodeBySeasonAsync(new ListEpisodeBySeasonRequest { SeasonId = season.Id, Take = 5 });

                    season.Episodes.AddRange(episodes);
                }
            }
            else
            {
                List <Anime> animes = null;
                if (DataSource.ToLower() == "tvspecials")
                {
                    FeaturedVideo = await _animeService.GetLatestTvSpecialAsync();

                    animes = await _animeService.ListTvSpecialsAsync(new DataServices.ListRequest {
                        Skip = refresh ? 0 : Animes.Count
                    });
                }
                else if (DataSource.ToLower() == "movies")
                {
                    FeaturedVideo = await _animeService.GetLatestMovieAsync();

                    animes = await _animeService.ListMoviesAsync(new DataServices.ListRequest {
                        Skip = refresh ? 0 : Animes.Count
                    });
                }

                if (animes != null)
                {
                    Animes.Clear();
                    Animes.AddRange(animes);
                }
            }

            IsBusy = false;
        }
        public async Task LoadAsync()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;

            _appDataStorage.SaveAnime(Anime);

            List <Anime> animes = null;

            switch (AnimeType.ToLower())
            {
            case "stories":
                animes = await _animeService.ListStoriesAsync(new DataServices.ListRequest {
                    Skip = Animes.Count
                });

                break;

            case "tvspecials":
                animes = await _animeService.ListTvSpecialsAsync(new DataServices.ListRequest {
                    Skip = Animes.Count
                });

                break;

            case "movies":
                animes = await _animeService.ListMoviesAsync(new DataServices.ListRequest {
                    Skip = Animes.Count
                });

                break;
            }

            Animes.Clear();
            Animes.AddRange(animes);

            var seasons = await _seasonService.ListAsync(new DataServices.ListRequest {
                Skip = Seasons.Count
            });

            Seasons.Clear();
            Seasons.AddRange(seasons);

            IsBusy = false;
        }
Example #4
0
        private async Task LoadSeasonCatalogueAsync()
        {
            try
            {
                IsSeasonCatalogue = true;
                //remove EndDate, essa informação não existe nos animes da temporada
                FilterData.Orders.RemoveAt(FilterData.Orders.Count - 1);

                await App.DelayRequest();

                var results = await App.Jikan.GetSeason();

                results.RequestCached = true;

                var favoritedEntries = await results.SeasonEntries.ConvertCatalogueAnimesToFavoritedAsync(_settingsPreferences.ShowNSFW);

                _originalCollection = favoritedEntries.OrderByDescending(p => p.Anime.Score).ToList();
                Animes.AddRange(_originalCollection);

                await App.DelayRequest();

                var seasonArchive = await App.Jikan.GetSeasonArchive();

                int minYear = seasonArchive.Archives.Min(p => p.Year);
                int maxYear = seasonArchive.Archives.Max(p => p.Year);

                Lazy <ResourceManager> ResMgr = new Lazy <ResourceManager>(
                    () => new ResourceManager(typeof(Lang.Lang)));

                string selectedSeason = ResMgr.Value.GetString(results.SeasonName);

                Seasons name = (JikanDotNet.Seasons)Enum.Parse(typeof(JikanDotNet.Seasons), results.SeasonName);
                SeasonData = new SeasonData(results.SeasonYear, selectedSeason, minYear, maxYear);
            }
            catch (JikanRequestException ex)
            {
                ex.SaveExceptionData();
            }
            catch (OperationCanceledException ex)
            {
            }
            catch (Exception ex)
            {
                ex.SaveExceptionData();
            }
        }
Example #5
0
        public async Task LoadAsync(bool refresh = false)
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;

            var animes = await _animeService.ListEpisodeBySeasonAsync(new ListEpisodeBySeasonRequest { Skip = refresh ? 0 : Animes.Count, SeasonId = Season.Id });

            if (animes != null)
            {
                Animes.Clear();
                Animes.AddRange(animes);
            }

            IsBusy = false;
        }
Example #6
0
        private async Task <bool> LoadByGenreAsync()
        {
            await App.DelayRequest(4);

            //TODO: entradas por aqui de gêneros como super power são convertidas para supernatural(o valor não muda, mas o MAL me manda os gêneros errados pra esse tipo)
            //ficar de olho e ver se é apenas mais um problema no MAL
            bool hasFinishedLoading = false;

            try
            {
                AnimeGenre animeGenre = await App.Jikan.GetAnimeGenre(_currentGenre.Value, _pageCount ++);

                if (animeGenre != null)
                {
                    animeGenre.RequestCached = true;

                    IList <FavoritedAnime> favoritedSubEntries = await animeGenre.Anime
                                                                 .ConvertCatalogueAnimesToFavoritedAsync(_settingsPreferences.ShowNSFW);

                    _originalCollection.AddRange(favoritedSubEntries);
                    Animes.AddRange(favoritedSubEntries);

                    hasFinishedLoading = false;
                }
                else
                {
                    RemainingAnimeCount = -1;
                    hasFinishedLoading  = true;
                }
            }
            catch (JikanRequestException ex)
            {
                ex.SaveExceptionData();
            }
            catch (OperationCanceledException ex)
            { }
            catch (Exception ex)
            {
                ex.SaveExceptionData();
            }

            return(hasFinishedLoading);
        }