public IObservable<TorrentMovieSource> Work(TorrentSite site, CancellationToken cancellationToken)
        {
            var torrents = TorrentList.GetTorrents(site, cancellationToken).Result;
            var movies = torrents.Select(torrent => GetMovie(torrent, cancellationToken));

            return movies.Merge();
        }
Example #2
0
        public static async Task<IObservable<TorrentEntry>> GetTorrents(TorrentSite site, CancellationToken cancellationToken)
        {
            var document = await PirateRequest.OpenAsync(new Uri(site.ListUrl), cancellationToken);
            var entries = document.QuerySelectorAll(site.ListItemSelector)
                .Select(c => new { Text = c.TextContent, Href = c.GetAttribute("href")?.Trim().TrimEnd('/') + "/" })
                .Select(m => new TorrentEntry
                {
                    Title = m.Text,
                    Quality = TorrentQualityExtractor.ExtractQuality(m.Text),
                    TorrentPage = site.PageBaseUrl + m.Href,
                    TorrentUri = new Uri(site.PageBaseUrl + m.Href)
                });

            return Observable.ToObservable(FilterMovies(entries));
        }