Example #1
0
        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);
        }
Example #2
0
        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);
        }