mirror of
https://github.com/hjdhnx/dr_py.git
synced 2025-04-06 15:54:01 -04:00
update
This commit is contained in:
parent
413a30b324
commit
a09569b2d6
@ -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)
|
17
doc/写源教程.md
17
doc/写源教程.md
@ -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
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;
|
||||
}
|
16
js/007影视.js
16
js/007影视.js
@ -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
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
|
Loading…
x
Reference in New Issue
Block a user