static string youKuSwf = "http://player.youku.com/player.php/"; //-----一般优酷视频播放地址都包含的一段 #endregion Fields #region Methods public string[] GetVideoInfo(string url) { string[] result = new string[3]; if (url.Trim() == "") return result; #region 优酷视频地址 if (url.ToLower().Contains(youKuSwf)) //包含优酷视频前缀 { YouKuSwf yks = new YouKuSwf(); result = yks.GetVideoInfo(url); } #region 优酷视频网页地址 else if (url.ToLower().Contains(youKuHtml))//包含优酷网页前缀 { YouKuHtml ykl = new YouKuHtml(); result = ykl.GetVideoInfo(url); } #endregion #endregion #region 土豆地址 else if (url.ToLower().Contains(tuDouMain))//包含土豆网页前缀 { if (url.ToLower().Contains(".swf")) { TuDouSwf ts = new TuDouSwf(); result = ts.GetVideoInfo(url); } else { TuDouHtml th = new TuDouHtml(); result = th.GetVideoInfo(url); } } else { //扩展: } #endregion return result; }
static string htuDouVideoUrlId = "http://v2.tudou.com/v?vn=02&st=1%2C2&it={0}"; //-------根据lid查询视频地址需要的id #endregion Fields #region Methods public override string[] GetVideoInfo(string url) { Result[0] = url;//网页地址 string lid = ""; //1.规则的网页地址:即带html后缀 if (url.ToLower().Contains(".html")) { //A:http://www.tudou.com/playlist/p/a64151i123974208.html (playlist后面包含a) //B:http://www.tudou.com/playlist/p/l14818376i123661980.html?union_id=100493_100001_02_01 (playlist后面l) string fileName = string.Empty; fileName = GetVideoIdFromUrl(url); #region L if (fileName.ToLower().StartsWith("l")) { int iindex = fileName.ToLower().IndexOf("i"); if (iindex < 0) iindex = fileName.Length - 1; int lindex = fileName.ToLower().IndexOf("l"); if (lindex >= 0) { lid = fileName.Substring(lindex + 1, iindex - lindex - 1); } else { lid = ""; } //获取视频地址 string vedioSl = GetSomething(GetResultFromUrl(CombineStr(htuDouVideoUrlId, lid)), "cd=\"[\\S]+\""); if (vedioSl != "") { Result[1] = CombineStr(htuDouVideoUrlById, vedioSl.Remove(0, 4).Replace("\"", "")); } else { Result[1] = url; } //获取缩略图 string newurl = CombineStr(htuDouThumUrl, lid); string picUrl = GetSomething(GetResultFromUrl(newurl).Replace(@"\/", "/"), "http://([\\w]+[./]*)+"); //if (System.IO.Path.GetFileNameWithoutExtension(picUrl).ToLower() == "p") //{ if (picUrl != "") { Result[2] = picUrl.Replace(System.IO.Path.GetFileName(picUrl), string.Empty) + "w" + System.IO.Path.GetExtension(picUrl); } else { Result[2] = "服务器没有该视频的缩略图"; } } #endregion #region A else if (fileName.ToLower().StartsWith("a")) { string lvid = string.Empty; string iid = string.Empty; if (fileName.ToLower().Trim().IndexOf("i") > 0) { lvid = fileName.Trim().Substring(1, fileName.ToLower().Trim().IndexOf("i") - 1); iid = fileName.Trim().Remove(0, fileName.ToLower().Trim().IndexOf("i") + 1); } else { lvid = fileName.Trim().Remove(0, fileName.ToLower().Trim().IndexOf("a") + 1); } string html = GetResultFromUrl(url); string aCode = string.Empty; aCode = GetSomething(html, "aid_code[ ]*=[ ]*acode[ ]*=[ ]*'[\\w_-]*'"); aCode = aCode.Remove(0, aCode.IndexOf("'")).Replace("'", ""); if (iid == "") { Result[1] = CombineStr(htuDouVideoAUrlS, aCode); } else { Result[1] = CombineStr(htuDouVideoAUrl, aCode, iid); } Result[2] = GetSomething(GetResultFromUrl(CombineStr(htuDouVideoAImng, lvid)).Replace(@"\/", "/"), hypeLinkRegxStr); } #endregion } else if (url.ToLower().StartsWith(htuDouContainUrl)) { int paIndex = url.IndexOf('?'); string[] directs = url.Remove(paIndex > 0 ? paIndex : url.Length - 1).Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries); string param = string.Empty;//获取地址中的id比如获取http://www.tudou.com/programs/view/uuxZVpkDtUw/?union_id=100493_100001_02_01中uuxZVpkDtUw if (directs.Length > 0) param = directs[directs.Length - 1]; //-----------------------------------得到视频地址--------------------------------- Result[1] = CombineStr(htuDouVideoUrlByKey, param); //接下来得到缩略图,调用方法获取视频缩略图 TuDouSwf ts = new TuDouSwf(); Result[2]=ts.GetVideoInfo(CombineStr(htuDouVideoUrlByKey, param))[2]; } else //其他情况 { // } return Result; }