Пример #1
0
        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();
            }
        }
Пример #2
0
        /// <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|&nbsp;)+\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));
            }
        }
Пример #3
0
        /// <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));
            }
        }
Пример #4
0
        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;
                }
            }
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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;
                }
            }
        }
Пример #9
0
        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);
        }