public async Task <IEnumerable <ReleaseInfo> > PerformQuery(TorznabQuery query) { query = SanitizeQuery(query); var uriSearch = CreateSearchUri(query.SearchTerm); var htmlSearch = await requester.MakeRequest(uriSearch); var moviesInfoUris = movieSearchScraper.Extract(htmlSearch); var infoHtmlTasks = moviesInfoUris.Select(async u => await requester.MakeRequest(u)); var infoHtmls = await Task.WhenAll(infoHtmlTasks); var movies = infoHtmls.Select(h => movieInfoScraper.Extract(h)); var tasks = movies.Select(async m => { var html = await requester.MakeRequest(m.Link); return(new KeyValuePair <MTReleaseInfo, IHtmlDocument>(m, html)); }); var moviesWithHtml = await Task.WhenAll(tasks.ToArray()); movies = moviesWithHtml.Select(movieWithHtml => { var movie = movieWithHtml.Key; var html = movieWithHtml.Value; movie.Link = movieDownloadScraper.Extract(html); movie.Guid = movieWithHtml.Key.Link; return(movie); }); if (query.Year != null) { movies = movies.Where(m => m.Year == query.Year); } return(movies); }
private async Task <List <Season> > GetSeasons(TorznabQuery query) { var seasonHtml = await requester.MakeRequest(CreateSearchUri(query.SanitizedSearchTerm)); var seasons = tvShowScraper.Extract(seasonHtml); if (query.Season != 0) { seasons = seasons.Where(s => s.Number == query.Season); } if (query.Categories.Count() != 0) { seasons = seasons.Where(s => new List <int>(query.Categories).Contains(s.Category.ID)); } return(seasons.ToList()); }
public async Task <IEnumerable <ReleaseInfo> > PerformQuery(TorznabQuery query) { var html = await requester.MakeRequest(NewTorrentsUri); var episodesAndSeasonsUri = rssScraper.Extract(html); Task.WaitAll(episodesAndSeasonsUri.ToList().Select(async epAndSeasonUri => { var episode = epAndSeasonUri.Key; var seasonUri = epAndSeasonUri.Value; await AddMejorTorrentIDs(episode, seasonUri); }).ToArray()); var episodes = episodesAndSeasonsUri.Select(epAndSeason => epAndSeason.Key).ToList(); await downloadGenerator.AddDownloadLinks(episodes); return(episodes); }
private async Task <IEnumerable <MTReleaseInfo> > FetchMovies(TorznabQuery query) { var uriSearch = CreateSearchUri(query.SearchTerm); var htmlSearch = await requester.MakeRequest(uriSearch); var moviesInfoUris = movieSearchScraper.Extract(htmlSearch); var infoHtmlTasks = moviesInfoUris.Select(async u => await requester.MakeRequest(u)); var infoHtmls = await Task.WhenAll(infoHtmlTasks); var movies = infoHtmls.Select(h => movieInfoScraper.Extract(h)); var tasks = movies.Select(async m => { var html = await requester.MakeRequest(m.Link); return(new KeyValuePair <MTReleaseInfo, IHtmlDocument>(m, html)); }); var moviesWithHtml = await Task.WhenAll(tasks.ToArray()); movies = moviesWithHtml.Select(movieWithHtml => { var movie = movieWithHtml.Key; var html = movieWithHtml.Value; movie.Link = movieDownloadScraper.Extract(html); movie.Guid = movieWithHtml.Key.Link; return(movie); }); if (query.Year != null) { movies = movies .Where(m => m.Year == query.Year || m.Year == query.Year + 1 || m.Year == query.Year - 1) .Select(m => { m.TitleOriginal = m.TitleOriginal.Replace("(" + m.Year + ")", "(" + query.Year + ")"); return(m); }); } return(movies); }
public async Task <IHtmlDocument> MakeRequest(IEnumerable <string> ids) { var downloadHtmlTasks = new List <Task <IHtmlDocument> >(); var formData = new List <KeyValuePair <string, string> >(); int index = 1; ids.ToList().ForEach(id => { var episodeID = new KeyValuePair <string, string>("episodios[" + index + "]", id); formData.Add(episodeID); index++; }); formData.Add(new KeyValuePair <string, string>("total_capis", index.ToString())); formData.Add(new KeyValuePair <string, string>("tabla", "series")); return(await r.MakeRequest(DownloadUri, RequestType.POST, formData)); }