private static void GenerateDownloadInfos(IResourceInfo[] res, StringBuilder sb) { foreach (var info in res) { switch (info.ResourceType) { case ResourceType.BitTorrent: sb.Append("磁力链:"); break; case ResourceType.Ed2K: sb.Append("电驴下载:"); break; case ResourceType.NetDisk: if (info.NetDiskData == null) { continue; } switch (info.NetDiskData.NetDiskType) { case NetDiskType.Unknown: sb.Append("网盘下载:"); break; case NetDiskType.BaiduDesk: sb.Append("百度网盘:"); break; case NetDiskType.XlShare: sb.Append("迅雷快传:"); break; case NetDiskType.QqXf: sb.Append("QQ旋风分享:"); break; case NetDiskType.QihuShare: sb.Append("360网盘分享:"); break; case NetDiskType.Weiyun: sb.Append("微云分享:"); break; } break; case ResourceType.MultiResource: GenerateDownloadInfos(info.SubResources, sb); continue; } sb.Append("【"); sb.Append(info.Title); sb.AppendLine("】"); sb.AppendLine(BrtUtility.BuildDetailLink(info)); sb.AppendLine(); } }
/// <summary> /// 加载内容 /// </summary> public override void LookupTorrentContents(IResourceInfo torrent) { var url = GetDetailUrl(torrent); var htmlContext = NetworkClient.Create <string>(HttpMethod.Get, url, _referUrl).Send(); if (!htmlContext.IsValid()) { return; } var html = htmlContext.Result.SearchStringTag("<th>文件名</th></tr>", "</table>"); if (string.IsNullOrEmpty(html)) { return; } var charPos = 0; var row = ""; while (!string.IsNullOrEmpty((row = html.SearchStringTag("<tr", "</tr>", ref charPos)))) { var m = Regex.Match(row, @"<td>([\.\d]+(\s| )+\w+)</td>.*?<td>(.*?)</td>", RegexOptions.IgnoreCase); if (!m.Success) { continue; } var path = m.GetGroupValue(3); var size = m.GetGroupValue(1); AddFileNode(torrent, BrtUtility.ClearString(path), null, BrtUtility.ClearString(size)); } }
/// <summary> /// 加载内容 /// </summary> public override void LookupTorrentContents(IResourceInfo torrent) { var url = GetDetailUrl(torrent); var htmlContext = NetworkClient.Create <string>(HttpMethod.Get, url, ReferUrlPage).Send(); if (!htmlContext.IsValid()) { return; } var html = htmlContext.Result.SearchStringTag("id=\"filelist\">", "</ul>"); if (string.IsNullOrEmpty(html)) { return; } var charPos = 0; var row = ""; while (!string.IsNullOrEmpty((row = html.SearchStringTag("<li", "</li>", ref charPos)))) { var m = Regex.Match(row, "<span.*?>([^<]+)</span><span.*?>([^<]+)</span>", RegexOptions.IgnoreCase | RegexOptions.Singleline); if (!m.Success) { continue; } var path = m.GetGroupValue(1); var size = m.GetGroupValue(2); AddFileNode(torrent, BrtUtility.ClearString(path), null, BrtUtility.ClearString(size)); } }
private void Itemq_Click(object sender, EventArgs e) { var reses = Current; if (reses == null || !reses.Any()) { return; } foreach (var info in reses) { var link = BrtUtility.BuildDetailLink(info); if (link.IsNullOrEmpty()) { continue; } var slink = "qqdl://" + Convert.ToBase64String(Encoding.UTF8.GetBytes(link)); try { Process.Start(slink); } catch (Exception) { return; } } }
void CheckV6Speed() { var reg = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(@"v6player\shell\open\command"); if (reg == null) { return; } var command = (reg.GetValue("") ?? "").ToString(); var filepath = DownUtility.GetFilePath(command); if (filepath.IsNullOrEmpty()) { return; } reg.Close(); var item = new ToolStripMenuItem("使用V6Player下载", Properties.Resources.v6Speed_16); item.Click += (s, e) => { var reses = Current; if (reses == null || !reses.Any()) { return; } foreach (var info in reses) { var link = BrtUtility.BuildDetailLink(info); if (link.IsNullOrEmpty()) { continue; } try { Process.Start(filepath, link); } catch (Exception) { return; } } }; _parentItem.DropDownItems.Add(item); }
void CheckThunder() { var reg = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey("thunder"); if (reg == null) { return; } reg.Close(); var item = new ToolStripMenuItem("使用迅雷下载", Properties.Resources.thunder_16); item.Click += (s, e) => { var reses = Current; if (reses == null || !reses.Any()) { return; } foreach (var info in reses) { var link = BrtUtility.BuildDetailLink(info); if (link.IsNullOrEmpty()) { continue; } var slink = "thunder://" + Convert.ToBase64String(Encoding.UTF8.GetBytes($"AA{link}ZZ")); try { Process.Start(slink); } catch (Exception) { return; } } }; _parentItem.DropDownItems.Add(item); }
void CheckuTorrent() { var path = Environment.ExpandEnvironmentVariables("%AppData%\\uTorrent\\uTorrent.exe"); if (!File.Exists(path)) { return; } var item = new ToolStripMenuItem("用uTorrent下载(仅支持BT资源)", Properties.Resources.uTorrent_16_16_32); item.Click += (s, e) => { var reses = Current; if (reses == null || !reses.Any()) { return; } foreach (var info in reses.Where(x => x.ResourceType == ResourceType.BitTorrent)) { var link = BrtUtility.BuildDetailLink(info); if (link.IsNullOrEmpty()) { continue; } try { Process.Start(path, "\"" + link + "\""); } catch (Exception) { return; } } }; _parentItem.DropDownItems.Add(item); }
private void LaunchCustomeItem(object sender, EventArgs e) { var reses = Current; if (reses == null || !reses.Any()) { return; } var dp = _option.DownloadParameters.GetValue(((sender as ToolStripMenuItem).Tag as string) ?? ""); if (dp == null) { return; } foreach (var info in reses) { var link = BrtUtility.BuildDetailLink(info); if (link.IsNullOrEmpty()) { continue; } var path = BindInfo(dp.Path, info, link); var parameter = BindInfo(dp.Parameter, info, link); try { Process.Start(path, parameter); } catch (Exception) { return; } } }
protected override void LoadSubResourcesCore(ResourceInfo resource) { if (resource.SubResources != null) { return; } var url = GetDetailUrl(resource); var ctx = NetworkClient.Create <HtmlDocument>(HttpMethod.Get, url).Send(); if (!ctx.IsValid()) { return; } var nodes = ctx.Result.DocumentNode.SelectNodes("//table[@id='emuleFile']//tr[position()>1 and position()<last()]"); if (nodes == null) { return; } var subRes = new List <IResourceInfo>(); foreach (var node in nodes) { var link = node.SelectSingleNode("td[2]/a"); if (link == null) { continue; } var title = link.GetAttributeValue("title", ""); var linkvalue = link.GetAttributeValue("href", ""); if (linkvalue.StartsWith("ed2k://")) { //电驴资源 //ed2k://|file|%5BPBS.%E8%87%AA%E7%84%B6S27E01.%E7%99%BD%E9%9B%AA%E9%B9%B0%E7%8B%BC%5DPBS.Nature.S27E01.White.Falcon.White.Wolf.2008.720p.HDTV.AC3-SoS.avi|1772847104|d645fc5169c7646d7f13c958704f1f54|h=cidyzfagvpgfpunxdlxvhyfxyrwe3t3s|/ var reg = Regex.Match(linkvalue, "\\|file\\|([^\\|]+)\\|(\\d+)\\|([a-z\\d]+)", RegexOptions.IgnoreCase); if (!reg.Success) { continue; } var filename = BrtUtility.ClearString(UD(reg.GetGroupValue(1))); var hash = reg.GetGroupValue(3); var filesize = reg.GetGroupValue(2).ToInt64(); var res = CreateResourceInfo(hash, filename, ResourceType.Ed2K); res.DownloadSizeValue = filesize; subRes.Add(res); } else if (linkvalue.StartsWith("magnet:")) { //磁力链 //magnet:?xt=urn:btih:47fc15e7d5f3ad834f6f2152d0983cd07bafad9d&dn=菲洛梅娜.Philomena.2013.BD1080P.X264.AAC.english.CHS-ENG.Mp4Ba[ICILI.COM] var reg = Regex.Match(linkvalue, "btih:([a-f\\d]{40})", RegexOptions.IgnoreCase); if (!reg.Success) { continue; } var filename = BrtUtility.ClearString(UD(title)); var hash = reg.GetGroupValue(1); var res = CreateResourceInfo(hash, filename, ResourceType.BitTorrent); res.DownloadSizeValue = null; subRes.Add(res); } } resource.SubResources = subRes.ToArray(); base.LoadSubResourcesCore(resource); }