private async Task <IEnumerable <Addic7edResult> > ParseMovie(string movie, CancellationToken cancellationToken) { using (var res = await GetResponse($"movie/{movie}", cancellationToken).ConfigureAwait(false)) { var titlePattern = "<title>.*?Download (.+?) subtitles.*?</title>"; var verPattern = "Version (.+?),.*?MBs"; var langPattern = "class=\"language\">(.*?)<"; var downPattern = "<a class=\"buttonDownload\" href=\"/(.*?)\">"; var matches = GetMatches(res.Content, new[] { verPattern, langPattern, downPattern, titlePattern }); var results = new List <Addic7edResult>(); for (int i = 0; i < matches.FirstOrDefault().Count; i++) { var result = new Addic7edResult { Version = matches[0][i].Groups[1].Value, Language = NormalizeLanguage(matches[1][i].Groups[1].Value), Download = matches[2][i].Groups[1].Value, Title = matches[3][0].Groups[1].Value }; results.Add(result); } return(results); } }
private IEnumerable <Addic7edResult> ParseEpisode(HttpResponseInfo res) { var trPattern = "<tr class=\"epeven completed\">(.*?)</tr>"; var tdPattern = "<td.*?>(.*?)</td>"; var trMatches = GetMatches(res.Content, trPattern); var episodes = new List <Addic7edResult>(); foreach (Match tr in trMatches) { var tds = Regex.Matches(tr.Groups[1].Value, tdPattern); var result = new Addic7edResult { Season = tds[0].Groups[1].Value, Episode = tds[1].Groups[1].Value, Title = (Regex.Match(tds[2].Groups[1].Value, "<a.*?>(.+?)</a>")).Groups[1].Value, Language = NormalizeLanguage(tds[3].Groups[1].Value), Version = tds[4].Groups[1].Value, Completed = tds[5].Groups[1].Value, HearingImpaired = tds[6].Groups[1].Value, Corrected = tds[7].Groups[1].Value, HD = tds[8].Groups[1].Value, Download = (Regex.Match(tds[9].Groups[1].Value, "<a href=\"/(.+?)\">Download</a>")).Groups[1].Value, Multi = tds[10].Groups[1].Value }; episodes.Add(result); } return(episodes); }