Exemplo n.º 1
0
        /// <summary>
        /// Gets all episodes for a given series.
        /// Handles the paged calls and returns all of them.
        /// </summary>
        /// <param name="series">The series to look up</param>
        /// <returns>A list of all episodes for the given series.</returns>
        public async Task <Episode[]> QueryEpisodes(int seriesID, Dictionary <string, string> searchparams = null)
        {
            EpisodesResponse response = await QueryEpisodes(seriesID, 1, searchparams);

            if (response == null)
            {
                return(null);
            }

            if (response.PageInfo == null)
            {
                return(response.Episodes);
            }

            if (response.PageInfo.First == response.PageInfo.Last)
            {
                return(response.Episodes);
            }

            List <Episode> episodes = new List <Episode>(response.Episodes);

            while (response.PageInfo.Next > 0)
            {
                response = await QueryEpisodes(seriesID, response.PageInfo.Next.Value, searchparams);

                if (response.Episodes != null && response.Episodes.Length > 0)
                {
                    episodes.AddRange(response.Episodes);
                }
            }

            return(episodes.ToArray());
        }
Exemplo n.º 2
0
        /// <summary>
        /// Gets all episodes for a given series.
        /// Handles the paged calls and returns all of them.
        /// </summary>
        /// <param name="series">The series to look up</param>
        /// <returns>A list of all episodes for the given series.</returns>
        public async Task <Episode[]> GetAllEpisodes(int seriesID)
        {
            EpisodesResponse response = await GetEpisodes(seriesID);

            if (response == null)
            {
                return(null);
            }

            if (response.PageInfo == null)
            {
                return(response.Episodes);
            }

            if (response.PageInfo.First == response.PageInfo.Last)
            {
                return(response.Episodes);
            }

            List <Episode> episodes = new List <Episode>(response.Episodes);

            int page     = response.PageInfo.First.Value;
            int lastPage = response.PageInfo.Last.Value;

            while (page <= lastPage)
            {
                response = Task.Run(async() => { return(await GetEpisodes(seriesID, page++)); }).Result;
                //var task = GetEpisodes(seriesID, page++);
                //task.Wait();
                //response = task.Result;

                if (response.Episodes != null && response.Episodes.Length > 0)
                {
                    episodes.AddRange(response.Episodes);
                }
            }
            //foreach (Episode ep in response.Episodes)
            //{
            //    if (!episodes.Contains(ep))
            //        episodes.Add(ep);
            //}
            //episodes;
            return(episodes.Distinct().ToArray());
        }
Exemplo n.º 3
0
        /// <summary>
        /// Gets the episodes for a series. This is paged by 100 results a page.
        /// </summary>
        /// <param name="seriesID">The series to look up</param>
        /// <param name="page">The paged results for the episodes</param>
        /// <returns>The list of episodes and page data.</returns>
        public async Task <EpisodesResponse> GetEpisodes(int seriesID, int page = 1)
        {
            LastError = "";
            if (!await CheckTokenAsync())
            {
                return(null);
            }

            string pagequery = "";

            if (page > 0)
            {
                pagequery = "?page=" + page;
            }

            EpisodesResponse result = await MakeRequestAsync <EpisodesResponse>("series/" + seriesID + "/episodes" + pagequery, null, Requestmethods.get);

            if (result.Error != null)
            {
                if (result.Error.Equals("Resource not found", StringComparison.CurrentCultureIgnoreCase))
                {
                    result          = new EpisodesResponse();
                    result.Episodes = new Episode[0];
                    result.Errors   = null;
                    result.PageInfo = null;
                    return(result);
                }
                LastError = result.Error;
                return(null);
            }

            for (int i = 0; i < result.Episodes.Length; i++)
            {
                result.Episodes[i].ThumbUrl = ImageBaseURL + result.Episodes[i].ThumbUrl;
            }

            return(result);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Searches the list of episodes in a series by the given search parameters. This is paged by 100 results a page.
        /// </summary>
        /// <param name="series">The series to lookup</param>
        /// <param name="searchparams">The parameters of </param>
        /// <param name="page">The page of search results</param>
        /// <returns>The list of episodes and page data.</returns>
        public async Task <EpisodesResponse> QueryEpisodes(int seriesID, int page = 1, Dictionary <string, string> searchparams = null)
        {
            LastError = "";
            if (!await CheckTokenAsync())
            {
                return(null);
            }

            if (searchparams == null || searchparams.Count == 0)
            {
                LastError = "search params cannot be empty when searching for episodes!";
                return(null);
            }

            EpisodesResponse result = await MakeRequestAsync <EpisodesResponse>("series/" + seriesID + "/episodes/query" + BuildQueryString(searchparams), null, Requestmethods.get);

            if (result.Error != null)
            {
                if (result.Error.Equals("Resource not found", StringComparison.CurrentCultureIgnoreCase))
                {
                    result          = new EpisodesResponse();
                    result.Episodes = new Episode[0];
                    result.Errors   = null;
                    result.PageInfo = null;
                    return(result);
                }
                LastError = result.Error;
                return(null);
            }

            for (int i = 0; i < result.Episodes.Length; i++)
            {
                result.Episodes[i].ThumbUrl = ImageBaseURL + result.Episodes[i].ThumbUrl;
            }

            return(result);
        }