/// <summary> /// 1.开始列表获取 /// </summary> /// <param name="pageNum"></param> /// <param name="typeNum"></param> /// <param name="iType"></param> public ListStart(int pageNum, int typeNum, LiuXingType iType) { // 得到地址 var path = UrlCodeHelper.GetListHttpPath(pageNum, typeNum, iType); if (string.IsNullOrEmpty(path)) return; iType.Sign = iType.Type != LiuXingEnum.M1905ComListItem ? "Get" : "M1905List"; StartList(path, iType); }
/// <summary> /// 解析地址并启动复制或者点播 /// </summary> /// <param name="resultstr"></param> /// <param name="iType"></param> public static void GetThisDrl(string resultstr, LiuXingType iType) { if (string.IsNullOrEmpty(resultstr) || iType == null) return; // 二次解析地址 iType.Data.Drl = ListFile.JieUrls(resultstr, iType); if (iType.Data.Drl == null || iType.Data.Drl.Count <= 0) return; // 判断是否是执行复制地址 if (iType.IsCopy) { VodCopyHelper.CopyThisUrl(iType.Data.Drl); } // 判断是否是执行点播地址 else { // 启动点播 VodCopyHelper.StartToVod(iType.Data.Drl, iType.Data); } }
/// <summary> /// 5.图片下载 /// </summary> /// <param name="tag"></param> /// <param name="imageurl"></param> /// <param name="iType"></param> public static void StartImageDown(LiuXingData tag, string imageurl, LiuXingType iType) { if (string.IsNullOrEmpty(imageurl)) return; using ( var imgdown = new System.Net.WebClient { Encoding = iType.Encoding, Proxy = iType.Proxy }) { if (!string.IsNullOrEmpty(imageurl)) { var iClass = new LiuXingType { Encoding = iType.Encoding, Proxy = iType.Proxy, Type = iType.Type, Data = tag }; var image = FileCachoHelper.ImageCacho(imageurl); if (image != null) { iClass.Img = image; GoToDisPlay(iClass); } else { try { var imguri = new System.Uri(imageurl); imgdown.Headers.Add(System.Net.HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1581.2 Safari/537.36"); imgdown.DownloadDataAsync(imguri, iClass); imgdown.DownloadDataCompleted += Imgdown_DownloadDataCompleted; } // ReSharper disable EmptyGeneralCatchClause catch // ReSharper restore EmptyGeneralCatchClause { // System.Windows.Forms.MessageBox.Show(exception.Message+zuiReDatas[i].Name+zuiReDatas[i].Img+i); } } } } }
/// <summary> /// 开始下载链接地址页面数据 /// </summary> /// <param name="isCopy"></param> /// <param name="iType"></param> public static void GetThisUrl(bool isCopy, LiuXingType iType) { if (iType == null) return; if (iType.Data == null) return; if (string.IsNullOrEmpty(iType.Data.Url)) return; using ( var urldown = new WebClient { Encoding = iType.Encoding, Proxy = iType.Proxy }) { var iClass = new LiuXingType { Type = iType.Type, Encoding = iType.Encoding, Proxy = iType.Proxy, Data = iType.Data, IsCopy = isCopy }; urldown.DownloadStringAsync(new Uri(iType.Data.Url), iClass); urldown.DownloadStringCompleted += urldown_DownloadStringCompleted; } }
/// <summary> /// 播放列表 - 读取数据 /// </summary> /// <returns></returns> public static System.Collections.Generic.List<LiuXingType> ReadThisVodList() { #region 播放列表 - 读取数据 var thisData = new System.Collections.Generic.List<LiuXingType>(); if (System.IO.Directory.Exists(PublicStatic.LiuXingVideoRecordCacheDir)) { var dllfiles = ToFileNamesWithPath(PublicStatic.LiuXingVideoRecordCacheDir, "*.klist"); if (dllfiles == null || dllfiles.Length <= 0) return null; foreach (var dllfile in dllfiles) { if (System.IO.File.Exists(dllfile)) { var origintxt = ReadFile(dllfile); if (!string.IsNullOrEmpty(origintxt)) { origintxt = TestVodSafe.DES_Dec_Str(origintxt, PublicStatic.KcPlayerUserXunLeiInfoKeys[0], PublicStatic.KcPlayerUserXunLeiInfoKeys[1]); if (!string.IsNullOrEmpty(origintxt)) { var tag = JsonMapper.ToObject<LiuXingData>(origintxt); if (tag != null) { var type = new LiuXingType { Data = tag, Img = ImageCacho(tag.Img) }; thisData.Add(type); } } } } } } else { System.IO.Directory.CreateDirectory(PublicStatic.LiuXingVideoRecordCacheDir); } return thisData; #endregion }
/// <summary> /// 二次解析资源地址 /// </summary> /// <param name="vodUrlStr"></param> /// <param name="iType"></param> /// <returns></returns> public static List<string> JieUrls(string vodUrlStr, LiuXingType iType) { var tagurls = new List<string>(); switch (iType.Type) { // 迅播影院正常列表 case LiuXingEnum.XunboSearchItem: case LiuXingEnum.XunboListItem: { #region case LiuXingEnum.XunboListItem: string urllists = StringRegexHelper.GetSingle(vodUrlStr, "<script>var GvodUrls = \"", "\";</script>"); if (string.IsNullOrEmpty(urllists)) return null; if (urllists.Contains("###")) { string[] urltemps = urllists.Split("###".ToCharArray()); for (int i = 0; i < urltemps.Length; i++) { tagurls.Add(HttpUtility.HtmlDecode(urltemps[i])); } } else { tagurls.Add(HttpUtility.HtmlDecode(urllists)); } #endregion } break; // 人人影视正常列表 case LiuXingEnum.YYetListItem: { #region case LiuXingEnum.YYetListItem: string urllists = StringRegexHelper.GetSingle(vodUrlStr, "<ul class=\"resod_list\" season=\"0\" style=\"display:none;\">", "</ul>"); if (string.IsNullOrEmpty(urllists)) return null; if (urllists.Contains("type=\"ed2k\"")) { var orignli = StringRegexHelper.GetValue(urllists, "type=\"ed2k\" href=\"", "\""); if (orignli == null || orignli.Count <= 0) return null; foreach (string v in orignli) { if (!tagurls.Contains(v)) { tagurls.Add(v); } } } if (urllists.Contains("thunder=\"")) { var orignli = StringRegexHelper.GetValue(urllists, "thunder=\"", "\""); if (orignli == null || orignli.Count <= 0) return null; foreach (string v in orignli) { if (!tagurls.Contains(v)) { tagurls.Add(v); } } } var yyets = new System.Collections.Generic.List<string>(); foreach (string tagurl in tagurls) { if (!string.IsNullOrEmpty(tagurl)) { if (tagurl.StartsWith("ed2k") || tagurl.StartsWith("ED2K") || tagurl.StartsWith("http") || tagurl.StartsWith("magnet") || tagurl.StartsWith("thunder") || tagurl.StartsWith("flashget") || tagurl.StartsWith("flashget")) { yyets.Add(System.Web.HttpUtility.HtmlDecode(tagurl)); } } } tagurls = yyets; #endregion } break; } return Helper.UrlCodeHelper.GetDecodeList(tagurls); }
/// <summary> /// /// </summary> /// <param name="pageNum"></param> /// <param name="typeNum"></param> /// <param name="iType"></param> /// <returns></returns> public static string GetListHttpPath(int pageNum, int typeNum, LiuXingType iType) { #region GetListHttpPath - 合成正常列表所需的请求地址 var pathtemp = new System.Text.StringBuilder(); switch (iType.Type) { // 迅播影院正常列表 case LiuXingEnum.XunboListItem: { #region case LiuXingType.XunboListItem: if (pageNum == 1) { switch (PublicStatic.AnSortType) { case SortType.AnGengXin: { pathtemp.Append(string.Format("{0}{1}.html", PublicStatic.AnGengXin, typeNum)); } break; case SortType.AnReDu: { pathtemp.Append(string.Format("{0}{1}.html", PublicStatic.AnReDu, typeNum)); } break; case SortType.AnPengFeng: { pathtemp.Append(string.Format("{0}{1}.html", PublicStatic.AnPengFeng, typeNum)); } break; case SortType.AnShiJian: { pathtemp.Append(string.Format("{0}{1}", PublicStatic.AnShiJian, pageNum)); } break; } } else { switch (PublicStatic.AnSortType) { case SortType.AnGengXin: { pathtemp.Append(string.Format("{0}{1}_{2}.html", PublicStatic.AnGengXin, typeNum, pageNum)); } break; case SortType.AnReDu: { pathtemp.Append(string.Format("{0}{1}_{2}.html", PublicStatic.AnReDu, typeNum, pageNum)); } break; case SortType.AnPengFeng: { pathtemp.Append(string.Format("{0}{1}_{2}.html", PublicStatic.AnPengFeng, typeNum, pageNum)); } break; case SortType.AnShiJian: { pathtemp.Append(string.Format("{0}{1}", PublicStatic.AnShiJian, pageNum)); } break; } } #endregion } break; // 人人影视正常列表 case LiuXingEnum.YYetListItem: { #region case LiuXingType.YYetListItem: switch (PublicStatic.AnSortType) { case SortType.AnGengXin: { pathtemp.Append(string.Format("{0}{1}&channel=movie&format=HR-HDTV&sort=update", PublicStatic.YYetsListHost, pageNum)); } break; case SortType.AnReDu: { pathtemp.Append(string.Format("{0}{1}&channel=movie&format=HR-HDTV&sort=views", PublicStatic.YYetsListHost, pageNum)); } break; case SortType.AnPengFeng: { pathtemp.Append(string.Format("{0}{1}&channel=movie&format=HR-HDTV&sort=score", PublicStatic.YYetsListHost, pageNum)); } break; } #endregion } break; case LiuXingEnum.YYetSearchItem: { #region case LiuXingEnum.YYetSearchItem: pathtemp.Append(@"http://www.yyets.com/php/search/index?type=resource&keyword="); pathtemp.Append(PublicStatic.SearchWord); #endregion } break; case LiuXingEnum.PiaoHuaSearchItem: { #region case LiuXingEnum.PiaoHuaSearchItem: pathtemp.Append(@"http://www.xiaobajiew.com/index.php?s=video/search&submit=搜索&wd="); pathtemp.Append(System.Web.HttpUtility.UrlEncode(PublicStatic.SearchWord)); #endregion } break; case LiuXingEnum.DyfmSearchItem: { #region case LiuXingEnum.DyfmSearchItem: pathtemp.Append(@"http://dianying.fm/search?key="); pathtemp.Append(System.Web.HttpUtility.UrlEncode(PublicStatic.SearchWord)); #endregion } break; case LiuXingEnum.XunboSearchItem: { #region case LiuXingEnum.XunboSearchItem: pathtemp.Append(@"http://www.2tu.cc/search.asp?searchword="); pathtemp.Append(System.Web.HttpUtility.UrlEncode(PublicStatic.SearchWord, System.Text.Encoding.Default).ToUpper()); #endregion } break; case LiuXingEnum.TorrentKittySearchItem: { #region case LiuXingEnum.TorrentKittySearchItem: pathtemp.Append(@"http://www.torrentkitty.com/search/"); pathtemp.Append(PublicStatic.SearchWord); pathtemp.Append("/"); pathtemp.Append(pageNum); #endregion } break; case LiuXingEnum.M1905ComListItem: { #region case LiuXingEnum.M1905ComListItem: pathtemp.Append(@"http://zbyk.m1905.com/service/index.php/Api/Apiql/filmlist"); #endregion } break; case LiuXingEnum.LuYiXia: { #region case LiuXingEnum.LuYiXia: pathtemp.Append(@"http://api.kcplayer.com:7383/watching/getdata?s=0&e=1&filter=false"); #endregion } break; case LiuXingEnum.ZhangYuSearchItem: { #region case LiuXingEnum.ZhangYuSearchItem: pathtemp.Append(@"http://www.happygolife.com/ajax/search?p=1&s="); pathtemp.Append(System.Web.HttpUtility.UrlEncode(PublicStatic.SearchWord)); #endregion } break; case LiuXingEnum.DyfmHotApi: { #region case LiuXingEnum.DyfmHotApi: pathtemp.Append(@"http://dianying.fm/kankan?cmd=next"); #endregion } break; case LiuXingEnum.EverybodyWatch: { #region case LiuXingEnum.EverybodyWatch: pathtemp.Append(@"http://api.kcplayer.com:7383/watching/getdata?s=" + 50 * (pageNum-1) + "&e="+50 * (pageNum+1)+"&filter=IsFilter"); #endregion } break; } return pathtemp.ToString(); #endregion }
/// <summary> /// AnalyzeData - 解析数据数据模型 /// </summary> /// <param name="celllistr"></param> /// <param name="iType"></param> /// <returns></returns> public static LiuXingData AnalyzeData(string celllistr, LiuXingType iType) { #region AnalyzeData - 解析数据数据模型 if (string.IsNullOrEmpty(celllistr)) return null; if (iType == null) return null; var cellitem = new LiuXingData(); try { switch (iType.Type) { // 迅播影院正常列表 case LiuXingEnum.XunboSearchItem: case LiuXingEnum.XunboListItem: { cellitem = GetXunboListItem(celllistr); } break; // 人人影视正常列表 case LiuXingEnum.YYetListItem: { cellitem = GetYYetListItem(celllistr); } break; case LiuXingEnum.DyfmSearchItem: { cellitem = GetDianYingFmItem(celllistr); } break; case LiuXingEnum.PiaoHuaSearchItem: { cellitem = GetPiaoHuaSearchItem(celllistr); } break; case LiuXingEnum.YYetSearchItem: { cellitem = GetYYetSearchItem(celllistr); } break; case LiuXingEnum.TorrentKittySearchItem: { cellitem = GetTorrentKittySearchItem(celllistr); } break; case LiuXingEnum.M1905ComListItem: { cellitem = GetM1905ComListItem(celllistr); } break; case LiuXingEnum.DyfmHotApi: { cellitem = GetDyFmHotApi(celllistr); } break; } // 清理不必要的链接 cellitem.Drl = UrlCodeHelper.GetDecodeList(cellitem.Drl); return cellitem; } catch { return null; } #endregion }
/// <summary> /// 1.开始列表获取 /// </summary> /// <param name="path"></param> /// <param name="iType"></param> public static void StartList(string path, LiuXingType iType) { if (string.IsNullOrEmpty(path)) return; // 解析数据 using ( var datadown = new System.Net.WebClient { Encoding = iType.Encoding, Proxy = iType.Proxy } ) { datadown.Headers.Add(System.Net.HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1581.2 Safari/537.36"); if (iType.Sign.Contains("M1905List")) { datadown.Headers.Add("order", "listorder"); datadown.Headers.Add("videotype", "3"); datadown.Headers.Add(System.Net.HttpRequestHeader.ContentType, "application/x-www-form-urlencoded"); datadown.UploadStringAsync(new System.Uri(path), "POST", "page=1&pagesize=10&order=listorder&videotype=3", iType); datadown.UploadStringCompleted += Datadown_UploadStringCompleted; } else { if (iType.Sign.Contains("M1905Second")) { datadown.Headers.Add("filmid", iType.Sign.Split(',')[1]); datadown.Headers.Add(System.Net.HttpRequestHeader.ContentType, "application/x-www-form-urlencoded"); datadown.UploadStringAsync(new System.Uri(UrlCodeHelper.GetListHttpPath(0, 0, iType).Replace("filmlist", "filmdetail")), "POST", "filmid=" + iType.Sign.Split(',')[1], iType); datadown.UploadStringCompleted += Datadown_UploadStringCompleted; } else { if (iType.Type == LiuXingEnum.ZhangYuSearchItem) { datadown.Headers.Add("Cookie", "Hm_lvt_69521636d966ad606a32d89b1d70ee73=1376875963,1376889226; Hm_lpvt_69521636d966ad606a32d89b1d70ee73=1376889233; ce=gY1lvwT"); } if (iType.Type == LiuXingEnum.DyfmHotApi) { datadown.Headers.Add("Cookie", "last_visit=" + System.Guid.NewGuid().ToString().Replace("-", "").Substring(0, 24) + "Hm_lpvt_10701d9b4e040e37e58bee7e1ec1d252=1376902145"); } datadown.DownloadStringAsync(new System.Uri(path), iType); datadown.DownloadStringCompleted += Datadown_DownloadStringCompleted; } } } }
/// <summary> /// 5.图片下载 /// </summary> /// <param name="zuiReDatas"></param> /// <param name="iType"></param> private static void StartImageDown(System.Collections.Generic.List<LiuXingData> zuiReDatas, LiuXingType iType) { if (zuiReDatas.Count <= 0) { return; } // 遍历数据中的图片 for (var i = 0; i < zuiReDatas.Count; i++) { if (iType.Type == LiuXingEnum.M1905ComListItem) { if (!string.IsNullOrEmpty(zuiReDatas[i].Url)) { iType.Sign = "M1905Second," + zuiReDatas[i].Url; StartList(UrlCodeHelper.GetListHttpPath(0, 0, iType), iType); } else { StartImageDown(zuiReDatas[i], zuiReDatas[i].Img, iType); } } else { StartImageDown(zuiReDatas[i], zuiReDatas[i].Img, iType); } } }
/// <summary> /// 4.一级数据解析 /// </summary> /// <param name="resultstr"></param> /// <param name="iType"></param> private static void JieXiOne(string resultstr, LiuXingType iType) { var zuiReDatas = new System.Collections.Generic.List<LiuXingData>(); switch (iType.Type) { // 迅播影院正常列表 case LiuXingEnum.XunboListItem: case LiuXingEnum.XunboSearchItem: { #region case LiuXingEnum.XunboListItem: // 得到 <ul class=\"piclist\"> ~ </ul> var orignlis = StringRegexHelper.GetSingle(resultstr, "<ul class=\"piclist\">", "</ul>"); if (string.IsNullOrEmpty(orignlis)) { return; } // 得到 <li> ~ </li> var orignli = StringRegexHelper.GetValue(orignlis, "<li>", "</li>"); if (orignli == null || orignli.Count <= 0) return; for (var i = 0; i < orignli.Count; i++) { var celllistr = orignli[i]; if (string.IsNullOrEmpty(celllistr)) continue; var tempcell = DataTagHelper.AnalyzeData(celllistr, iType); if (tempcell != null) { zuiReDatas.Add(tempcell); } } // 开始下载图片 StartImageDown(zuiReDatas, iType); return; #endregion } // 人人影视正常列表 case LiuXingEnum.YYetListItem: { #region case LiuXingEnum.YYetListItem: // 得到<ul class="boxPadd dashed"> ~ </ul> var orignlis = StringRegexHelper.GetSingle(resultstr, "<ul class=\"boxPadd dashed\">", "</ul>"); if (string.IsNullOrEmpty(orignlis)) { return; } // 得到 <li> ~ </li> var orignli = StringRegexHelper.GetValue(orignlis, "<li ", "</li>"); if (orignli == null || orignli.Count <= 0) { return; } for (var i = 0; i < orignli.Count; i++) { var celllistr = orignli[i]; if (!string.IsNullOrEmpty(celllistr)) { var tag = DataTagHelper.AnalyzeData(celllistr, iType); if (tag != null) { zuiReDatas.Add(tag); } } } // 开始下载图片 StartImageDown(zuiReDatas, iType); return; #endregion } case LiuXingEnum.YYetSearchItem: { #region case LiuXingEnum.YYetSearchItem: if (!string.IsNullOrEmpty(iType.Sign) && iType.Sign.Contains("YYetSearchSecond")) { // 解析影视资料页的数据并生成模型 var tag = DataTagHelper.AnalyzeData(resultstr, iType); if (tag == null) return; if (!string.IsNullOrEmpty(tag.Img)) { using ( var imgdown = new System.Net.WebClient { Encoding = iType.Encoding, Proxy = iType.Proxy }) { iType.Data = tag; imgdown.DownloadDataAsync(new System.Uri(tag.Img), iType); imgdown.DownloadDataCompleted += Imgdown_DownloadDataCompleted; } } } else { // 得到<ul class=\"allsearch dashed boxPadd6\"> ~ </ul> string orignlis = StringRegexHelper.GetSingle(resultstr, "<ul class=\"allsearch dashed boxPadd6\">", "</ul>"); if (string.IsNullOrEmpty(orignlis)) { return; } // 得到 <li> ~ </li> var orignli = StringRegexHelper.GetValue(orignlis, "<a href=\"", "\" target=\"_blank\">"); if (orignli == null || orignli.Count <= 0) return; // 解析数据 for (int i = 0; i < orignli.Count; i++) { iType.Sign = "YYetSearchSecond"; StartList(orignli[i], iType); } } return; #endregion } case LiuXingEnum.PiaoHuaSearchItem: { #region case LiuXingEnum.PiaoHuaSearchItem: if (!string.IsNullOrEmpty(iType.Sign) && iType.Sign.Contains("PiaoHuaSearchSecond")) { // 解析影视资料页的数据并生成模型 var tag = DataTagHelper.AnalyzeData(resultstr, iType); if (tag == null) return; if (!string.IsNullOrEmpty(tag.Img)) { using ( var imgdown = new System.Net.WebClient { Encoding = iType.Encoding, Proxy = iType.Proxy }) { iType.Data = tag; imgdown.DownloadDataAsync(new System.Uri(tag.Img), iType); imgdown.DownloadDataCompleted += Imgdown_DownloadDataCompleted; } } } else { // 得到<ul class=\"allsearch dashed boxPadd6\"> ~ </ul> string orignlis = StringRegexHelper.GetSingle(resultstr, "<ul class=\"relist clearfix\">", "</ul>"); if (string.IsNullOrEmpty(orignlis)) { return; } // 得到 <li> ~ </li> var orignli = StringRegexHelper.GetValue(orignlis, "<li>", "</li>"); if (orignli == null || orignli.Count <= 0) return; // 得到Url列表 var listurls = new System.Collections.Generic.List<string>(); foreach (var v in orignli) { var orign = StringRegexHelper.GetSingle(v, "<div class=\"minfo_op\"><a href=\"", "\" class=\"info\">下载"); if (!string.IsNullOrEmpty(orign)) { listurls.Add(orign); } } if (listurls.Count <= 0) return; // 解析数据 foreach (var listurl in listurls) { var listtemp = listurl; if (!string.IsNullOrEmpty(listtemp)) { iType.Sign = "PiaoHuaSearchSecond"; StartList(listurl, iType); } } } return; #endregion } case LiuXingEnum.DyfmSearchItem: { #region case LiuXingEnum.DyfmSearchItem: if (!string.IsNullOrEmpty(iType.Sign) && iType.Sign.Contains("DyfmSecond")) { // 解析影视资料页的数据并生成模型 var tag = DataTagHelper.AnalyzeData(resultstr, iType); if (tag == null) return; if (!string.IsNullOrEmpty(tag.Img)) { using ( var imgdown = new System.Net.WebClient { Encoding = iType.Encoding, Proxy = iType.Proxy }) { iType.Data = tag; imgdown.DownloadDataAsync(new System.Uri(tag.Img), iType); imgdown.DownloadDataCompleted += Imgdown_DownloadDataCompleted; } } } else { if (!string.IsNullOrEmpty(iType.Sign) && iType.Sign.Contains("DyfmSearchItemDOCTYPE")) { // 得到 <li> ~ </li> var orignli = StringRegexHelper.GetValue(resultstr, "<li>", "</li>"); if (orignli == null || orignli.Count <= 0) return; // 得到影片页地址 var urls = new System.Collections.Generic.List<string>(); for (var i = 0; i < orignli.Count; i++) { var urlkey = StringRegexHelper.GetSingle(orignli[i], "<a target=\"_blank\" href=\"", "\">"); if (!string.IsNullOrEmpty(urlkey)) { var urltemp = "http://dianying.fm" + urlkey; urls.Add(urltemp); } } if (urls.Count > 0) { foreach (string url in urls) { if (!string.IsNullOrEmpty(url)) { iType.Sign = "DyfmSecond"; StartList(url, iType); } } } } else { // 得到<ul class=\"x-movie-list nav nav-pills\" style=\"padding-top:0;\"> ~ </ul> string orignlis = StringRegexHelper.GetSingle(resultstr, "var apiURL = '", "'"); orignlis = string.Format("http://dianying.fm/{0}?page=1", orignlis); if (string.IsNullOrEmpty(orignlis)) { return; } iType.Sign = "DyfmSearchItemDOCTYPE"; StartList(orignlis, iType); } } return; #endregion } case LiuXingEnum.TorrentKittySearchItem: { #region case LiuXingEnum.TorrentKittySearchItem: // 得到<ul class=\"allsearch dashed boxPadd6\"> ~ </ul> string orignlis = StringRegexHelper.GetSingle(resultstr, "<table id=\"archiveResult\">", "</table>"); orignlis = orignlis.Replace("<tbody>", ""); if (string.IsNullOrEmpty(orignlis)) { return; } // 得到 <li> ~ </li> var orignli = StringRegexHelper.GetValue(orignlis, "Detail", "Open"); if (orignli == null || orignli.Count <= 0) return; // 解析数据 foreach (string v in orignli) { LiuXingData tag = DataTagHelper.AnalyzeData(v, iType); if (tag != null) { zuiReDatas.Add(tag); } } // 开始下载图片 StartImageDown(zuiReDatas, iType); return; #endregion } case LiuXingEnum.M1905ComListItem: { #region case LiuXingEnum.M1905ComListItem: if (resultstr.Contains("flashurl")) { var tag = DataTagHelper.AnalyzeData(resultstr, iType); zuiReDatas.Add(tag); } else { var films = StringRegexHelper.GetValue(resultstr, "<film>", "</film>"); if (films == null || films.Count <= 0) return; foreach (var film in films) { var tag = DataTagHelper.AnalyzeData(film, iType); zuiReDatas.Add(tag); } } // 开始下载图片 StartImageDown(zuiReDatas, iType); return; #endregion } case LiuXingEnum.LuYiXia: { #region case LiuXingEnum.LuYiXia: if (string.IsNullOrEmpty(resultstr)) { AutoCloseDlg.ShowMessageBoxTimeout(@"噢噢!众人一起撸,管子都断了,捏捏泥鳅等修复!", @"亲,不好意思", System.Windows.Forms.MessageBoxButtons.OK, 1000); return; } var urllists = new System.Collections.Generic.List<string> { StringRegexHelper.GetSingle(resultstr, "\"Url\":\"", "\",\"Gcid\":") }; if (urllists.Count <= 0) { AutoCloseDlg.ShowMessageBoxTimeout(@"噢噢!众人一起撸,管子都断了,捏捏泥鳅等修复!", @"亲,不好意思", System.Windows.Forms.MessageBoxButtons.OK, 1000); return; } VodCopyHelper.StartToVod(urllists, new LiuXingData()); return; #endregion } case LiuXingEnum.ZhangYuSearchItem: { #region case LiuXingEnum.ZhangYuSearchItem: var zhangyuapi = JsonMapper.ToObject<ZhangYuApi>(resultstr); if (zhangyuapi != null) { var zhangyuapihtml = zhangyuapi.html; if (!string.IsNullOrEmpty(zhangyuapihtml)) { var dataurls = StringRegexHelper.GetValue(zhangyuapihtml, "<span class=\"p reslink\"", "<span class"); if (dataurls != null && dataurls.Count > 0) { foreach (var dataurl in dataurls) { if (!string.IsNullOrEmpty(dataurl)) { var url = StringRegexHelper.GetSingle(dataurl, "data-url=\"", "\""); if (!string.IsNullOrEmpty(url)) { if (url.Contains("_id=") && url.Contains("&")) { url = StringRegexHelper.GetSingle(url, "id=", "&"); if (!string.IsNullOrEmpty(url)) { var name = StringRegexHelper.GetSingle(dataurl, "data-title=\"", "\""); if (!string.IsNullOrEmpty(name)) { name = UrlCodeHelper.GetClearVideoName(name); url = "magnet:?xt=urn:btih:" + url; zuiReDatas.Add(new LiuXingData { Name = name, HDs = QualityHelper.GetHdsSign(name), Drl = new System.Collections.Generic.List<string> { url }, Img = "http://www.qq7.com/uploads/allimg/120510/1s31110w-31.jpg" }); } } } } } } if (zuiReDatas.Count > 0) { // 开始下载图片 StartImageDown(zuiReDatas, iType); } } } } return; #endregion } case LiuXingEnum.DyfmHotApi: { #region case LiuXingEnum.DyfmHotApi: var tag = DataTagHelper.AnalyzeData(resultstr, iType); if (tag != null) { zuiReDatas.Add(tag); } if (zuiReDatas.Count > 0) { StartImageDown(zuiReDatas,iType); } return; #endregion } case LiuXingEnum.EverybodyWatch: { #region case LiuXingEnum.EverybodyWatch: // 二次请求数据 if (resultstr.Contains("bigshot_url")) { //var oldimg = iType.Data.Img; var newimg = StringRegexHelper.GetSingle(resultstr, "\"bigshot_url\": \"", "\"}"); if (!string.IsNullOrEmpty(newimg)) { iType.Data.Img = newimg; if (!string.IsNullOrEmpty(iType.Data.Img)) { StartImageDown(iType.Data, newimg, iType); } } } else { // 一次请求数据 System.Collections.Generic.List<ApiItem> apiItems; try { apiItems = JsonMapper.ToObject<System.Collections.Generic.List<ApiItem>>(resultstr); } catch { apiItems = null; } if (apiItems == null || apiItems.Count <= 0) return; foreach (var apiItem in apiItems) { LiuXingData tag; try { tag = new LiuXingData { Name = apiItem.MovieName, Img = string.Format("http://i.vod.xunlei.com/req_screenshot?req_list={0}", apiItem.Gcid), HDs = "未知", Drl = new System.Collections.Generic.List<string> { apiItem.Url } }; } catch (System.Exception) { tag = null; } if (tag != null) { zuiReDatas.Add(tag); } } if (zuiReDatas.Count <= 0) return; foreach (var zuiReData in zuiReDatas) { iType.Data = zuiReData; StartList(zuiReData.Img, iType); } } return; #endregion } } }
/// <summary> /// 7.显示影片信息 /// </summary> /// <param name="tag"></param> private static void GoToDisPlay(LiuXingType tag) { if (tag != null) { if (tag.Type == LiuXingEnum.DyfmHotApi) { PublicStatic.ThisHot.BackgroundImage = tag.Img; } else { switch (PublicStatic.DisPlayStyle) { case LiuXingStyle.DisPlayTile: { MainInterFace.Owner.Parent.Invoke( new System.Windows.Forms.MethodInvoker (() => { var ssss = new MetroForTile(tag); if (PublicStatic.LiuXingCon != null && PublicStatic.LiuXingCon.Visible) { try { PublicStatic.LiuXingCon.Controls.Add(ssss); } // ReSharper disable EmptyGeneralCatchClause catch // ReSharper restore EmptyGeneralCatchClause { } } } )); } break; } } } }
/// <summary> /// 操作面板 - 点播 /// </summary> private void PlayBtnBestVodPath() { #region 操作面板 - 点播 if (Type == null || ITag == null) return; // 如果有点播资源就直接点播 if (ITag.Drl != null && ITag.Drl.Count > 0) { VodCopyHelper.StartToVod(ITag.Drl, ITag); } else { // 否则直接执行获取连接并点播 var iClass = new LiuXingType { Type = Type.Type, Proxy = Type.Proxy, Encoding = Type.Encoding, Data = ITag }; ListUrl.GetThisUrl(false, iClass); } #endregion }
/// <summary> /// 操作面板 - 链接 /// </summary> private void CopyBtnAllVodPath() { #region 操作面板 - 链接 if (Type == null || ITag == null) return; // 如果有复制的就直接复制 if (ITag.Drl != null && ITag.Drl.Count > 0) { VodCopyHelper.CopyThisUrl(ITag.Drl); } else { // 否则执行获取连接并复制链接 var iClass = new LiuXingType { Type = Type.Type, Proxy = Type.Proxy, Encoding = Type.Encoding, Data = ITag }; ListUrl.GetThisUrl(true, iClass); } #endregion }
// ReSharper restore InconsistentNaming public MetroForTile(LiuXingType iType) { if(iType == null) return; Type = iType; if (iType.Data == null) return; ITag = iType.Data; BackColor = PublicStatic.FontColor[1]; Location = new System.Drawing.Point(1, 1); switch (iType.Type) { case LiuXingEnum.EverybodyWatch: { Size = new System.Drawing.Size(256+30, 145); new MetroForList( this, false, "", new System.Collections.Generic.List<object> { "详情,Button","复制,Button","点播,Button,TI" + Helper.QualityHelper.GetHdsSign(iType.Data.HDs) + "-P" }, null, 58, 47, PublicStatic.MainColor[PublicStatic.MainIndex], PublicStatic.FontColor[1], PublicStatic.SegoeFont, new System.Drawing.Point(Size.Width - 60, 0), AsideList_ListItemTxt_MouseClick ); // 影片海报 if (iType.Img != null) { try { var imageview = new EPicBox { Size = new System.Drawing.Size(256, 145), BackColor = PublicStatic.FontColor[1], Image = iType.Img, SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage }; Controls.Add(imageview); var tempname = iType.Data.Name; if (tempname.Length > 25) { tempname = tempname.Substring(0, 25); } new HDarge( imageview, tempname, new System.Drawing.Font(PublicStatic.SegoeFont, 16F), new System.Drawing.Size(Size.Width - 57, 40), new System.Drawing.Point(0, Size.Height-40), //PublicStatic.MainColor[PublicStatic.MainIndex], //System.Drawing.Color.FromArgb(48, 48, 48), PublicStatic.FontColor[1], System.Drawing.Color.FromArgb(48, 0, 0, 0), System.Drawing.ContentAlignment.MiddleCenter, System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left ); //imageview.MouseClick += imageview_MouseClick; } // ReSharper disable EmptyGeneralCatchClause catch // ReSharper restore EmptyGeneralCatchClause { } } } break; case LiuXingEnum.DyfmSearchItem: case LiuXingEnum.PiaoHuaSearchItem: case LiuXingEnum.TorrentKittySearchItem: case LiuXingEnum.XunboSearchItem: case LiuXingEnum.YYetSearchItem: case LiuXingEnum.ZhangYuSearchItem: { Size = new System.Drawing.Size(435*2, 40); var tempname = iType.Data.Name; if (tempname.Length > 25) { tempname = tempname.Substring(0, 25); } new MetroForList( this, true, tempname, null, null, Size.Width - 102*3-1, 38, PublicStatic.MainColor[PublicStatic.MainIndex], PublicStatic.FontColor[1], PublicStatic.SegoeFont, new System.Drawing.Point(0, 0), AsideList_ListItemTxt_MouseClick ); new MetroForList( this, true, "", new System.Collections.Generic.List<object> { "详情,Button","复制,Button","点播,Button,TI" + Helper.QualityHelper.GetHdsSign(iType.Data.HDs) + "-P" }, null, 101, 38, PublicStatic.MainColor[PublicStatic.MainIndex], PublicStatic.FontColor[1], PublicStatic.SegoeFont, new System.Drawing.Point(Size.Width - 102 * 3-1, 0), AsideList_ListItemTxt_MouseClick ); } break; default: { Size = new System.Drawing.Size(435, 210); // 影片得分 if (!string.IsNullOrEmpty(iType.Data.Cos)) { new HDarge( this, iType.Data.Cos, new System.Drawing.Font(PublicStatic.SegoeFont, 12F), new System.Drawing.Size(40, 25), new System.Drawing.Point(-2, 44 + 24 + 45 + 25 + 20 - 135), PublicStatic.FontColor[1], PublicStatic.MainColor[PublicStatic.MainIndex], System.Drawing.ContentAlignment.MiddleCenter, System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left ); } // 影片海报 if (iType.Img != null) { try { var imageview = new EPicBox() { Size = new System.Drawing.Size(150, 210), BackColor = PublicStatic.FontColor[1], Image = iType.Img, SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage }; Controls.Add(imageview); //imageview.MouseClick += imageview_MouseClick; } // ReSharper disable EmptyGeneralCatchClause catch // ReSharper restore EmptyGeneralCatchClause { } } // 影片标题 if (!string.IsNullOrEmpty(iType.Data.Name)) { var tempname = iType.Data.Name; if (tempname.Contains("/")) { tempname = tempname.Split("/".ToCharArray())[0]; } new HDarge( this, tempname, new System.Drawing.Font(PublicStatic.SegoeFont, 22F), new System.Drawing.Size(Size.Width - 150, 60), new System.Drawing.Point(150, 0), PublicStatic.MainColor[PublicStatic.MainIndex], //System.Drawing.Color.FromArgb(48, 48, 48), PublicStatic.FontColor[1], System.Drawing.ContentAlignment.MiddleCenter, System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left ).Controls.Add(new HDarge( this, "", new System.Drawing.Font(PublicStatic.SegoeFont, 14F), new System.Drawing.Size(Size.Width - 150 - 16, 1), new System.Drawing.Point(8, 59), System.Drawing.Color.Transparent, PublicStatic.MainColor[PublicStatic.MainIndex], System.Drawing.ContentAlignment.MiddleLeft, System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left )); } // 影片演员 if (!string.IsNullOrEmpty(iType.Data.Car)) { new HDarge( this, "主演:" + iType.Data.Car, new System.Drawing.Font(PublicStatic.SegoeFont, 12F), new System.Drawing.Size(Size.Width - 150 - 16, 50), new System.Drawing.Point(150 + 8, 45 + 25), PublicStatic.FontColor[0], //System.Drawing.Color.FromArgb(48, 48, 48), System.Drawing.Color.Transparent, System.Drawing.ContentAlignment.MiddleLeft, System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left ); } // 影片年代 if (!string.IsNullOrEmpty(iType.Data.Tim)) { new HDarge( this, "年代:" + iType.Data.Tim, new System.Drawing.Font(PublicStatic.SegoeFont, 12F), new System.Drawing.Size((Size.Width - 150 - 16) / 2, 25), new System.Drawing.Point(150 + 8, 45 + 25 + 45), PublicStatic.FontColor[0], //System.Drawing.Color.FromArgb(48, 48, 48), System.Drawing.Color.Transparent, System.Drawing.ContentAlignment.MiddleLeft, System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left ); } // 影片地区 if (!string.IsNullOrEmpty(iType.Data.Loc)) { new HDarge( this, "地区:" + iType.Data.Loc, new System.Drawing.Font(PublicStatic.SegoeFont, 12F), new System.Drawing.Size((Size.Width - 150 - 16) / 2, 25), new System.Drawing.Point(150 + 8 + (Size.Width - 150 - 16) / 2, 45 + 25 + 45), PublicStatic.FontColor[0], //System.Drawing.Color.FromArgb(48, 48, 48), System.Drawing.Color.Transparent, System.Drawing.ContentAlignment.MiddleLeft, System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left ); } // 影片类型 if (!string.IsNullOrEmpty(iType.Data.Typ)) { new HDarge( this, "类型:" + iType.Data.Typ, new System.Drawing.Font(PublicStatic.SegoeFont, 12F), new System.Drawing.Size((Size.Width - 150 - 16) / 2, 25), new System.Drawing.Point(150 + 8, 45 + 25 + 45 + 25), PublicStatic.FontColor[0], //System.Drawing.Color.FromArgb(48, 48, 48), System.Drawing.Color.Transparent, System.Drawing.ContentAlignment.MiddleLeft, System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left ); } // 影片更新 if (!string.IsNullOrEmpty(iType.Data.Upt)) { new HDarge( this, "更新:" + iType.Data.Upt, new System.Drawing.Font(PublicStatic.SegoeFont, 12F), new System.Drawing.Size((Size.Width - 150 - 16) / 2, 25), new System.Drawing.Point(150 + 8 + (Size.Width - 150 - 16) / 2, 45 + 25 + 45 + 25), PublicStatic.FontColor[0], //System.Drawing.Color.FromArgb(48, 48, 48), System.Drawing.Color.Transparent, System.Drawing.ContentAlignment.MiddleLeft, System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left ); } // 影片点播 if (!string.IsNullOrEmpty(iType.Data.HDs)) { // iType.Data.HDs new MetroForList( this, true, "", new System.Collections.Generic.List<object> { "详情,Button","复制,Button","点播,Button,TI" + Helper.QualityHelper.GetHdsSign(iType.Data.HDs) + "-P" }, null, (Size.Width - 150 - 8) / 3, 31, PublicStatic.MainColor[PublicStatic.MainIndex], PublicStatic.FontColor[1], PublicStatic.SegoeFont, new System.Drawing.Point(152, 40 + 25 * 5 + 2 * 5 + 1), AsideList_ListItemTxt_MouseClick ); new MetroForList( this, true, "", new System.Collections.Generic.List<object> { "资 源,Select", "简 介", "评 价" }, null, 138, 31, PublicStatic.MainColor[PublicStatic.MainIndex], PublicStatic.FontColor[1], PublicStatic.SegoeFont, new System.Drawing.Point(412, 1), AsideList_ListItemTxt_MouseClick ); } // 加载面板 new HPanel { Size = new System.Drawing.Size(435 + 2, 210 + 2), BackColor = PublicStatic.FontColor[1] }.Controls.Add(this); } break; } // 滚轮聚焦 if (PublicStatic.SearchBox.Focused) { PublicStatic.LiuXingCon.Invoke( new System.Windows.Forms.MethodInvoker (() => PublicStatic.LiuXingCon.Focus())); } }