コード例 #1
0
            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);
            }
コード例 #2
0
            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());
            }
コード例 #3
0
            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);
            }
コード例 #4
0
            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);
            }
コード例 #5
0
            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));
            }