public IList<Sub> GetCandidateSubs(Video video, bool searchInComments, Dictionary<string, string> cache) { Console.WriteLine(); Console.WriteLine("Text used to seach subtitle is: {0}", video.GetSearchString()); Console.WriteLine("Release Group to match: {0}", video.ReleaseGroup); this.login(); var candidateSubs = new List<Sub>(); var subdivxClient = new CookieAwareWebClient(this.loginCookies); subdivxClient.Headers["User-Agent"] = "Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))"; var page = 1; while (page > 0) { var url = this.GetUrl(video.GetSearchString(), page); string output; if (cache.ContainsKey(url)) { output = cache[url]; } else { output = subdivxClient.DownloadString(url); cache.Add(url, output); } var doc = new HtmlDocument(); doc.LoadHtml(output); var subsHtmlNodes = doc.DocumentNode.Descendants("div").Where(div => div.GetAttributeValue("id", string.Empty).Equals("buscador_detalle")); if (subsHtmlNodes.Count() == 0) { page = -1; } else { foreach (var subHtmlNode in subsHtmlNodes) { var subComments = string.Empty; if (searchInComments) { subComments = this.GetSubComments(subdivxClient, subHtmlNode); } var sub = new Sub(subHtmlNode, subComments); if (sub.Matches(video)) { candidateSubs.Add(sub); } } } page++; } candidateSubs.Sort(new Sub.SubComparer()); return candidateSubs; }