搜索
查看: 1835|回复: 1

[网络] 自动抓取下载链接、调用百度网盘批量离线下载(已更新)

  [复制链接]

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13973
发表于 2018-8-10 20:14:21 | 显示全部楼层 |阅读模式
自动抓取网页上的下载链接、可以自己编写模式匹配筛选链接。
可以调用百度网盘批量离线下载(也可以解决百度网盘报ed2k链接不合法的问题)。

pan.png
import win.ui;
/*DSG{{*/
var winform = win.form(text="网页下载链接提取工具";right=824;bottom=636)
winform.add(
btnAddPattern={cls=
"button";text="添加";left=655;top=51;right=726;bottom=80;dr=1;dt=1;z=12};
btnGet={cls=
"button";text="提取下载链接";left=414;top=181;right=651;bottom=213;dr=1;dt=1;z=3};
btnWeb={cls=
"button";text="帮助";left=734;top=51;right=805;bottom=80;dr=1;dt=1;z=6};
button={cls=
"button";text="百度网盘批量离线下载";left=508;top=596;right=745;bottom=628;db=1;dr=1;z=10};
cbPattern={cls=
"combobox";left=181;top=51;right=647;bottom=77;dl=1;dr=1;dt=1;edge=1;items={};mode="dropdown";z=7};
edit={cls=
"edit";left=26;top=222;right=811;bottom=589;db=1;dl=1;dr=1;dt=1;edge=1;hscroll=1;multiline=1;vscroll=1;z=1};
editFilter={cls=
"edit";text="S01E";left=181;top=144;right=647;bottom=171;dl=1;dr=1;dt=1;edge=1;z=9};
editPattern={cls=
"edit";left=181;top=81;right=647;bottom=138;dl=1;dr=1;dt=1;edge=1;multiline=1;z=11};
editUrl={cls=
"edit";text="http://www.meijumi.vip/usa/katong/5754.html";left=181;top=16;right=647;bottom=43;dl=1;dr=1;dt=1;edge=1;z=2};
static={cls=
"static";text="抓取网址:";left=87;top=19;right=179;bottom=41;align="right";dl=1;dt=1;transparent=1;z=4};
static2={cls=
"static";text="模式匹配(用于查找链接):";left=6;top=56;right=179;bottom=78;align="right";dl=1;dt=1;transparent=1;z=5};
static3={cls=
"static";text="结果中必须包含:";left=61;top=151;right=179;bottom=173;align="right";dl=1;dt=1;transparent=1;z=8}
)
/*}}*/

winform.cbPattern.items ={
   
`ed2k\://[^\s"']+`;
   
`<@magnet:?xt=urn:btih:@>[^\s\p]+`;
   
`href\s*=\s*((["']).*?\2)`;
   
`lambda(s) string.indexOf(s,"1080p") && string.indexOf(s,"s01")`;
   
`\<li\s+.+?\</li>`
}

import web.rest.jsonClient;
winform.btnGet.oncommand =
function(id,event){
    winform.btnGet.disabledText =
"正在抓取...";
    winform.edit.text =
"";
    winform.edit.redraw();
   
   
//获取用于查找的模式匹配数组
    var parttern = {};
   
if(#winform.cbPattern.text ) table.push(parttern,winform.cbPattern.text)
   
for line in string.lines(winform.editPattern.text) {
        
if(#line) {
            
if(string.find(line,"lambda")){
                table.push(parttern,
eval(line));
            }
            
else {
                table.push(parttern,line);
//如果用户指定了多个模式匹配,添加到查询条件中
            }
        }
    }
   
//取第一个捕获分组,并自动去除首尾引号
    table.push(parttern,lambda(v) string.trim(v,`"'`) );
   
   
//抓取下载链接
    var http = web.rest.jsonClient();
   
var magnet = http.api(winform.editUrl.text,,parttern);
   
var urls = magnet.get();

   
if(urls){
        
var f = winform.editFilter.text;
        
if(#f){
            
//筛选结果
            urls = table.filter(urls,function(v){
               
return string.find(v,f);
            })  
            
            urls = table.unique(urls);
        }
        
        winform.edit.text = string.join(urls,
'\r\n');   
    }

    winform.btnGet.disabledText =
null;
}

import process;
winform.btnWeb.oncommand =
function(id,event){
    process.openUrl(
"http://bbs.aardio.com/forum.php?mod=viewthread&tid=172&from=portal");
}

import baidu.pan;
winform.button.oncommand =
function(id,event){
    winform.button.disabledText =
"正在下载"
   
var str = winform.edit.text;
   
   
for url in string.lines(str) {
        
if(!..inet.url.is(url) ) continue ;
        
if(!baidu.pan.down(url) ){
            winform.msgboxErr(
"请先打开百度网盘客户端,并切换到离线下载存储目录")
            
break;
        }
    }
   
    winform.button.disabledText =
null;
}

winform.btnAddPattern.oncommand =
function(id,event){
    winform.editPattern.print(winform.cbPattern.text)
    winform.cbPattern.text =
"";
}

winform.show();
win.loopMessage();



回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13973
 楼主| 发表于 2018-8-10 20:15:20 | 显示全部楼层
运行此代码需要新版百度网盘客户端,新版 baidu.pan 扩展库。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-10-22 06:04 , Processed in 0.062500 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表