public async override Task <IEnumerable <MovieTorrent> > GetMovieTorrentsAsync(string title, int year, bool exactTitle) { var imdbMoviesInfo = await ImdbRequester.GetImdbMoviesInfoAsync(title); var imdbMovieInfo = imdbMoviesInfo?.SingleOrDefault(m => m.OriginalTitle.StartsWith(title, StringComparison.OrdinalIgnoreCase) && m.Year == year.ToString()); if (imdbMovieInfo == null) { return(null); } var searchUrl = $"{baseUrl}/recherche/" + imdbMovieInfo.FrenchTitle.ToLower().Replace(":", ""); var doc = await HttpRequester.GetHtmlDocumentAsync(searchUrl); var searchResultList = doc.DocumentNode.SelectNodes("//table[@class='table table-hover']//td//div[@class='maxi']"); var result = new List <MovieTorrent>(); if (searchResultList == null) { return(result); } var getTorrentTasks = new List <Task>(); foreach (var node in searchResultList) { doc = new HtmlDocument(); doc.LoadHtml(node.InnerHtml); var mediaInfo = doc.DocumentNode.SelectSingleNode("/i"); if (mediaInfo != null && mediaInfo.Attributes["class"].Value == "Films") { var linkNode = doc.DocumentNode.SelectSingleNode("/a"); if (linkNode != null && ((exactTitle && linkNode.InnerText.Replace(" ", "").Contains(imdbMovieInfo.FrenchTitle.Replace(" ", ""), StringComparison.OrdinalIgnoreCase)) || linkNode.InnerText.ContainsWords(title.Split(" "))) && linkNode.InnerText.Contains("FRENCH") && linkNode.InnerText.EndsWith(year.ToString()) && !linkNode.InnerText.Contains("MD") && (linkNode.InnerText.Contains("720p") || linkNode.InnerText.Contains("1080p") || linkNode.InnerText.Contains("DVDRIP") || linkNode.InnerText.Contains("WEBRIP")) ) { getTorrentTasks.Add(new Task(() => { result.Add(new MovieTorrent() { Quality = linkNode.InnerText.GetMovieQuality(), DownloadUrl = GetTorrentLink(baseUrl + linkNode.Attributes["href"].Value) }); })); } } } getTorrentTasks.ForEach(t => t.Start()); Task.WaitAll(getTorrentTasks.ToArray()); return(result); }
public async override Task <IEnumerable <MovieTorrent> > GetMovieTorrentsAsync(string title, int year, bool exactTitle) { var imdbMoviesInfo = await ImdbRequester.GetImdbMoviesInfoAsync(title); var imdbMovieInfo = imdbMoviesInfo?.SingleOrDefault(m => m.OriginalTitle.StartsWith(title, StringComparison.OrdinalIgnoreCase) && m.Year == year.ToString()); if (imdbMovieInfo == null) { return(null); } var searchUrl = baseUrl + "index.php?do=search&subaction=search"; var htmlPage = await HttpRequester.PostAsync(searchUrl, new { search = imdbMovieInfo.FrenchTitle }); if (string.IsNullOrEmpty(htmlPage)) { return(null); } var doc = new HtmlDocument(); doc.LoadHtml(htmlPage); var searchResultList = doc.DocumentNode.SelectNodes("//table[contains(@class,'film-table')]"); var result = new List <MovieTorrent>(); if (searchResultList == null) { return(result); } var getTorrentTasks = new List <Task>(); foreach (var node in searchResultList) { doc = new HtmlDocument(); doc.LoadHtml(node.InnerHtml); var linkNode = doc.DocumentNode.SelectSingleNode("/a"); if (linkNode != null && ((exactTitle && linkNode.InnerText.Contains(imdbMovieInfo.FrenchTitle, StringComparison.OrdinalIgnoreCase)) || linkNode.InnerText.ContainsWords(title.Split(" "))) && linkNode.InnerText.Contains("FRENCH") && linkNode.InnerText.EndsWith(year.ToString()) && !linkNode.InnerText.Contains("MD") && (linkNode.InnerText.Contains("720p") || linkNode.InnerText.Contains("1080p") || linkNode.InnerText.Contains("DVDRIP") || linkNode.InnerText.Contains("WEBRIP")) ) { getTorrentTasks.Add(new Task(() => { var torrentLink = GetTorrentLink(linkNode.Attributes["href"].Value); if (!string.IsNullOrEmpty(torrentLink)) { result.Add(new MovieTorrent() { Quality = linkNode.InnerText.GetMovieQuality(), DownloadUrl = torrentLink }); } })); } } getTorrentTasks.ForEach(t => t.Start()); Task.WaitAll(getTorrentTasks.ToArray()); return(result); }