using System; using System.Collections.Generic; using System.Text; using System.Web; using System.Linq; using HtmlAgilityPack; namespace MovieTube.Client.Scraper { public class Youtube : VideoScraperBase { //private static readonly YouTubeRequestSettings settings = new YouTubeRequestSettings("test", null) { AutoPaging = true, Maximum = 100 }; protected override string OnScrape(string url, HtmlNode elem) { try { var input = SubstringBetween(elem.InnerHtml, "url_encoded_fmt_stream_map=", "&"); if(String.IsNullOrEmpty(input.Trim())) input = SubstringBetween(elem.InnerHtml, "url_encoded_fmt_stream_map="); var expression = HttpUtility.UrlDecode(input); var tokens = expression.Split(',').FirstOrDefault(x => x.Contains("quality=medium")).Split('&'); var newUrl = tokens.FirstOrDefault(x => x.StartsWith("url")); if (!String.IsNullOrEmpty(newUrl)) { newUrl = newUrl.Split('=')[1]; return HttpUtility.UrlDecode(newUrl); } } catch (Exception ex) { throw; } throw new Exception("File Not Found"); //var version = HttpUtility.ParseQueryString(new Uri(url).Query).Get("video_id"); //newUrl = String.Format("http://www.youtube.com/watch?v={0}", version); //elem = Get(url); //var start = elem.InnerHtml.IndexOf("url_encoded_fmt_stream_map"); //var end = elem.InnerHtml.IndexOf("", start); //var script = elem.InnerHtml.Substring(start, end - start); //start = script.IndexOf("url=") + 4; //end = script.IndexOf("0026", start) - 2; //url = script.Substring(start, end - start); //return System.Web.HttpUtility.UrlDecode(url); //elem = Get(newUrl); //var script = SubstringBetween(elem.InnerHtml, "url_encoded_fmt_stream_map", ""); //newUrl = SubstringBetween(script, "url=", "0026"); //return System.Web.HttpUtility.UrlDecode(newUrl); } //private string GetVideoById(string id) //{ // var request = new YouTubeRequest(settings); // var url = new Uri(YouTubeQuery.CreateVideoUri(id)); // Feed