1
0
mirror of https://github.com/hjdhnx/dr_py.git synced 2025-04-06 15:54:01 -04:00
This commit is contained in:
晚风拂柳颜 2023-07-04 11:45:34 +08:00
parent 413a30b324
commit a09569b2d6
6 changed files with 130 additions and 5 deletions

@ -372,7 +372,8 @@ def vod_home():
# print(jscode)
ctx.eval(jscode)
js_ret = ctx.get('rule')
ruleDict = ujson.loads(js_ret.json())
rule_json = js_ret.json() # 规则的json字符串
ruleDict = ujson.loads(rule_json)
except Exception as e:
logger.info(f'{e}')
return R.failed('爬虫规则加载失败')
@ -455,5 +456,6 @@ def vod_home():
# print(data)
return jsonify(data)
# return jsonify({'rule':rule,'js_code':js_code})
logger.info(rule_json)
home_data = cms.homeContent(pg)
return jsonify(home_data)

@ -98,7 +98,7 @@ var rule = Object.assign(muban.mxpro,{
title:'鸭奈飞',
host:'https://yanetflix.com',
url:'/index.php/vod/show/id/fyclass/page/fypage.html',
class_parse:'.navbar-items li:gt(1):lt(6);a&&Text;a&&href;.*/(.*?).html',
class_parse:`.navbar-items li:gt(1):lt(6);a&&Text;a&&href;.*/(.*?).html`,
});
```
模板继承写法(新)
@ -107,8 +107,21 @@ var rule = {
title:'cokemv',
模板:'mxpro',
host:'https://cokemv.me',
class_parse:'.navbar-items li:gt(1):lt(7);a&&Text;a&&href;/(\\d+).html',
class_parse:`.navbar-items li:gt(1):lt(7);a&&Text;a&&href;/(\\d+).html`,
}
```
源正则写法说明
```text
属性class_parse按;分隔后取[3]为分类的正则字符串。
这里的正则跟js的/.*/这种写法相比,由于是字符串,需要实现字符串标准。
比如想实现 /(\d+)/ 那么字符串写法为 (\\d+)
原理是 new RegExp('(\\d+)') = /(\d+)/
属性lazy由于是纯js代码实现,不存在正则转义问题。
每个源的属性对应的值如果是字符串,可以用反引号``包含起来。
避免内部出现单双引号混用等需\转义问题
```
js:内置变量
input,html,VODS,VOD,TABS,LISTS,MY_CATE,MY_FL

44
jiexi/斗鱼.js Normal file

@ -0,0 +1,44 @@
js:
//输入的vipUrl如:https://m.douyu.com/312212?dyshid=0-00000003333&dyshci=1
function getSign(script, rid, did, tt){
let result = script.match(/(function ub98484234.*)\s(var.*)/)[0];
let func_ub9 = result.replace(/eval.*;}/, 'strc;}', result);
eval(func_ub9);
let res = ub98484234();
let v = res.match(/v=(\d+)/)[0].replace("v=", '');
let rb = md5(rid + did + tt + v);
let func_sign = res.replace(/return rt;}\);?/, 'return rt;}');
func_sign = func_sign.replace('(function (', 'function sign(');
func_sign = func_sign.replace('CryptoJS.MD5(cb).toString()', '"' + rb + '"');
eval(func_sign);
let params = sign(rid, did, tt) + "&ver=219032101&rid={}&rate=-1&rid="+rid;
return params
}
// log(env);
// fetch_params.headers.Referer = vipUrl;
try {
// realUrl = null;
let html = request(vipUrl);
// log(html);
let rid = html.match(/rid":(.*?),"vipId/)[1];
log(rid);
// let tt = Date.parse(new Date()).toString().substr(0, 10);
let tt = Math.round(new Date().getTime()/1000).toString();
let did = '10000000000000000000000000001501';
let param_body = getSign(html, rid, did, tt);
log(param_body);
let stream_json = request('https://m.douyu.com/api/room/ratestream', {headers: {
'Content-Type': 'application/x-www-form-urlencoded',
}, body: param_body, method:'POST'});
log(stream_json);
let stream = JSON.parse(stream_json).data;
realUrl = stream.url;
log('解析到真实播放地址:'+realUrl);
}catch (e) {
log('解析发生错误:'+e.message);
realUrl = vipUrl;
}

@ -24,7 +24,21 @@ var rule = {
"20":[{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}]
},
class_parse: '.stui-header__menu li:gt(0):lt(9);a&&Text;a&&href;.*/(.*?).html',
lazy:"js:var html=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);log(html);var url=html.url;if(html.encrypt=='1'){url=unescape(url)}else if(html.encrypt=='2'){url=unescape(base64Decode(url))}if(/m3u8|mp4/.test(url)){input=url}else if(/qq|iqiyi/.test(url)){input={jx:0,url:'https://jx.m3u8.tv/jiexi/?url='+url,parse:1,header:JSON.stringify({'user-agent':'Mozilla/5.0'})}}else{input}",
lazy:`js:var html=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);
log(html);
var url=html.url;
if(html.encrypt=='1'){
url=unescape(url)
}else if(html.encrypt=='2'){
url=unescape(base64Decode(url))
}
if(/m3u8|mp4/.test(url)){
input=url
}else if(/qq|iqiyi/.test(url)){
input={jx:0,url:'https://jx.m3u8.tv/jiexi/?url='+url,parse:1,header:JSON.stringify({'user-agent':'Mozilla/5.0'})}
}else{
input
}`,
// searchUrl:'/search/**----------fypage---.html',
searchUrl:'/index.php/ajax/suggest?mid=1&wd=**&pg=fypage',

52
js/LIBVIO2.js Normal file

@ -0,0 +1,52 @@
// 永久网址https://libvio.app
muban.首图2.二级.title = 'h1&&Text;.data:eq(0)&&Text'
muban.首图2.二级.desc = '.data.hidden-xs&&Text;;;.data:eq(1)&&Text;.data:eq(4)&&Text'
muban.首图2.二级.content = '.detail-content&&Text'
var rule = {
title:'LIBVIO',
模板:'首图2',
// host:'https://tv.libvio.cc',
host:'https://libvio.app',
hostJs:'print(HOST);let html=request(HOST,{headers:{"User-Agent":PC_UA}});let src=jsp.pdfh(html,"li:eq(0)&&a:eq(0)&&href");print(src);HOST=src',
// url:'/type/fyclass-fypage.html',
url:'/show/fyclassfyfilter.html',
// url:'/show_fyclassfyfilter.html',
filterable:1,//是否启用分类筛选,
filter_url:'-{{fl.area}}-{{fl.by}}--{{fl.lang}}----fypage---{{fl.year}}',
filter: {
"1":[{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"中国大陆","v":"中国大陆"},{"n":"中国香港","v":"中国香港"},{"n":"中国台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"意大利","v":"意大利"},{"n":"西班牙","v":"西班牙"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"法语","v":"法语"},{"n":"德语","v":"德语"},{"n":"其它","v":"其它"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
"2":[{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"中国大陆","v":"中国大陆"},{"n":"中国台湾","v":"中国台湾"},{"n":"中国香港","v":"中国香港"},{"n":"韩国","v":"韩国"},{"n":"日本","v":"日本"},{"n":"美国","v":"美国"},{"n":"泰国","v":"泰国"},{"n":"英国","v":"英国"},{"n":"新加坡","v":"新加坡"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
"4":[{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"中国","v":"中国"},{"n":"日本","v":"日本"},{"n":"欧美","v":"欧美"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
"27":[{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
"15":[{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
"16":[{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"美国","v":"美国"},{"n":"英国","v":"英国"},{"n":"德国","v":"德国"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}]
},
headers:{//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent':'MOBILE_UA'
},
class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
// class_parse:'.stui-header__menu li;a&&Text;a&&href;/.*_(\\d+).html',
tab_exclude:'夸克网盘|百度云盘',
pagecount:{"27":1},
lazy:`js:
var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);
var url = html.url;
var from = html.from;
var next = html.link_next;
var id = html.id;
var nid = html.nid;
var paurl = request("https://libvio.cc/static/player/" + from + ".js").match(/ src=\\"(.*?)\\'/)[1];
if (/https/.test(paurl)) {
var purl = paurl + url + "&next=" + next + "&id=" + id + "&nid=" + nid;
input = {
jx: 0,
url: request(purl).match(/var .* = \\'(.*?)\\'/)[1],
parse: 1
}
}`,
searchUrl:'/index.php/ajax/suggest?mid=1&wd=**',
detailUrl:'/detail/fyid.html', //非必填,二级详情拼接链接
// detailUrl:'/detail_fyid.html', //非必填,二级详情拼接链接
// searchUrl:'/search/**----------fypage---.html',
搜索:'json:list;name;pic;;id',
}

@ -1 +1 @@
3.9.46beta2
3.9.46beta3