/// <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()); }
/// <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()); }
/// <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); }
/// <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); }