提交 7c47eece 编写于 作者: H hjdhnx

升级新版本

上级 5a3ad357
无法预览此类型文件
......@@ -4,7 +4,7 @@
# Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------
# Date : 2022/8/25
import json
# import bs4
import requests
import re
import math
......@@ -542,7 +542,7 @@ class CMS:
'd': self.d,
'getParse': self.d.getParse,
'saveParse': self.d.saveParse,
'jsp': jsp, 'setDetail': setDetail,
'jsp': jsp,'jq':jsp,'setDetail': setDetail,
})
ctx = py_ctx
jscode = getPreJs() + p.strip().replace('js:', '', 1)
......@@ -608,14 +608,16 @@ class CMS:
desc = ''
p5 = getPP(p,5,pp,4)
links = [pd(item2, _p5) if not self.detailUrl else pdfh(item2, _p5) for _p5 in p5.split('+')]
link = '$'.join(links)
vid = '$'.join(links)
if len(p) > 6 and p[6]:
p6 = getPP(p,6,pp,5)
content = pdfh(item2, p6)
else:
content = ''
if self.二级 == '*':
vid = vid + '@@' + title + '@@' + img
videos.append({
"vod_id": link,
"vod_id": vid,
"vod_name": title,
"vod_pic": img,
"vod_remarks": desc,
......@@ -647,14 +649,16 @@ class CMS:
p4 = getPP(p,4,pp,4)
# link = pd(item, p[4])
links = [pd(item, _p5) if not self.detailUrl else pdfh(item, _p5) for _p5 in p4.split('+')]
link = '$'.join(links)
vid = '$'.join(links)
if len(p) > 5 and p[5]:
p5 = getPP(p,5,pp,5)
content = pdfh(item, p5)
else:
content = ''
if self.二级 == '*':
vid = vid + '@@' + title + '@@' + img
videos.append({
"vod_id": link,
"vod_id": vid,
"vod_name": title,
"vod_pic": img,
"vod_remarks": desc,
......@@ -673,7 +677,7 @@ class CMS:
return self.blank()
result['list'] = videos
# print(videos)
print(videos)
result['no_use'] = {
'code': 1,
'msg': '数据列表',
......@@ -776,7 +780,7 @@ class CMS:
'detailUrl':self.detailUrl or '', # 详情页链接
'getParse': self.d.getParse,
'saveParse': self.d.saveParse,
'jsp': jsp, 'setDetail': setDetail,
'jsp': jsp,'jq':jsp, 'setDetail': setDetail,
})
ctx = py_ctx
# print(ctx)
......@@ -812,6 +816,9 @@ class CMS:
if is_json:
html = self.dealJson(html)
html = json.loads(html)
# else:
# soup = bs4.BeautifulSoup(html, 'lxml')
# html = soup.prettify()
# print(html)
# with open('1.html',mode='w+',encoding='utf-8') as f:
# f.write(html)
......@@ -829,8 +836,12 @@ class CMS:
link = '$'.join(links)
content = '' if len(p) < 6 else pdfh(item, p[5])
# sid = self.regStr(sid, "/video/(\\S+).html")
vod_id = f'{fyclass}${link}' if self.detailUrl else link # 分类,播放链接
if self.二级 == '*':
vod_id = vod_id+'@@'+title+'@@'+img
videos.append({
"vod_id": f'{fyclass}${link}' if self.detailUrl else link,# 分类,播放链接
"vod_id": vod_id,
"vod_name": title,
"vod_pic": img,
"vod_remarks": desc,
......@@ -856,7 +867,8 @@ class CMS:
# *args是不定长参数 列表
# ** args是不定长参数字典
p = parse_str # 二级传递解析表达式 js的obj json对象
detailUrl = kwargs.get('detailUrl','') # 不定长字典传递的二级详情页vod_id原始数据
detailUrl = kwargs.get('detailUrl','') # 不定长字典传递的二级详情页vod_id详情处理数据
orId = kwargs.get('orId','') # 不定长字典传递的二级详情页vod_id原始数据
url = kwargs.get('url','') # 不定长字典传递的二级详情页链接智能拼接数据
vod = kwargs.get('vod',self.blank_vod()) # 最终要返回的二级详情页数据 默认空
html = kwargs.get('html','') # 不定长字典传递的源码(如果不传才会在下面程序中去获取)
......@@ -864,6 +876,13 @@ class CMS:
jsp = kwargs.get('jsp','') # jsp = jsoup(self.url) 传递的jsp解析
fyclass = kwargs.get('fyclass','') # 二级传递的分类名称,可以得知进去的类别
play_url = self.play_url
vod_name = '片名'
vod_pic = ''
# print('二级url:',url)
if self.二级 == '*':
extra = orId.split('@@')
vod_name = extra[1] if len(extra) > 1 else vod_name
vod_pic = extra[2] if len(extra) > 2 else vod_pic
if self.play_json:
play_url = play_url.replace('&play_url=', '&type=json&play_url=')
if p == '*': # 解析表达式为*默认一级直接变播放
......@@ -872,8 +891,10 @@ class CMS:
vod['vod_actor'] = '没有二级,只有一级链接直接嗅探播放'
# vod['vod_content'] = url if not show_name else f'({self.id}) {url}'
vod['vod_content'] = url
vod['vod_id'] = detailUrl
vod['vod_play_url'] = '嗅探播放$' + play_url + url
vod['vod_id'] = orId
vod['vod_name'] = vod_name
vod['vod_pic'] = vod_pic
vod['vod_play_url'] = '嗅探播放$' + play_url + url.split('@@')[0]
elif not p or (not isinstance(p, dict) and not isinstance(p, str)) or (isinstance(p, str) and not str(p).startswith('js:')):
pass
......@@ -883,8 +904,8 @@ class CMS:
pdfa = jsp.pjfa if is_json else jsp.pdfa
pd = jsp.pj if is_json else jsp.pd
pq = jsp.pq
vod['vod_id'] = detailUrl
if not html: # 没传递html参数接下来智能获取
vod['vod_id'] = orId
if not html: # 没传递html参数接detailUrl下来智能获取
r = requests.get(url, headers=self.headers, timeout=self.timeout,verify=False)
html = self.checkHtml(r)
if is_json:
......@@ -936,7 +957,7 @@ class CMS:
'd': self.d,
'getParse': self.d.getParse,
'saveParse': self.d.saveParse,
'jsp': jsp, 'setDetail': setDetail,'play_url':play_url
'jsp': jsp,'jq':jsp, 'setDetail': setDetail,'play_url':play_url
})
init_flag['ctx'] = True
if p.get('重定向') and str(p['重定向']).startswith('js:'):
......@@ -1064,7 +1085,8 @@ class CMS:
def detailOneVod(self,id,fyclass='',show_name=False):
vod = self.blank_vod()
detailUrl = str(id)
orId = str(id)
detailUrl = orId.split('@@')[0]
# print(detailUrl)
if not detailUrl.startswith('http') and not '/' in detailUrl:
url = self.detailUrl.replace('fyid', detailUrl).replace('fyclass',fyclass)
......@@ -1076,7 +1098,7 @@ class CMS:
logger.info(f'进入详情页: {url}')
try:
p = self.二级 # 解析
jsp = jsoup(self.url)
jsp = jsoup(url) if url.startswith('http') else jsoup(self.url)
is_js = isinstance(p,str) and str(p).startswith('js:') # 是js
if is_js:
headers['Referer'] = getHome(url)
......@@ -1094,7 +1116,7 @@ class CMS:
'd': self.d,
'getParse': self.d.getParse,
'saveParse': self.d.saveParse,
'jsp':jsp,'setDetail':setDetail,'play_url':play_url
'jsp':jsp,'jq':jsp,'setDetail':setDetail,'play_url':play_url
})
ctx = py_ctx
# print(ctx)
......@@ -1110,11 +1132,11 @@ class CMS:
else:
vod = self.blank_vod()
else:
vod = self.二级渲染(p,detailUrl=detailUrl,url=url,vod=vod,show_name=show_name,jsp=jsp,fyclass=fyclass)
vod = self.二级渲染(p,detailUrl=detailUrl,orId=orId,url=url,vod=vod,show_name=show_name,jsp=jsp,fyclass=fyclass)
except Exception as e:
logger.info(f'{self.getName()}获取单个详情页{detailUrl}出错{e}')
if not vod.get('vod_id'):
vod['vod_id'] = detailUrl
vod['vod_id'] = orId
# print(vod)
return vod
......@@ -1124,6 +1146,7 @@ class CMS:
:param array:
:return:
"""
# print('进入二级')
t1 = time()
array = array if len(array) <= self.limit else array[(fypage-1)*self.limit:min(self.limit*fypage,len(array))]
thread_pool = ThreadPoolExecutor(min(self.limit,len(array))) # 定义线程池来启动多线程执行此任务
......@@ -1163,7 +1186,7 @@ class CMS:
# p = self.一级.split(';') if self.搜索 == '*' and self.一级 else self.搜索.split(';') # 解析
p = self.一级 if self.搜索 == '*' and self.一级 else self.搜索
pp = self.一级.split(';')
jsp = jsoup(self.url)
jsp = jsoup(url) if url.startswith('http') else jsoup(self.url)
videos = []
is_js = isinstance(p, str) and str(p).startswith('js:') # 是js
......@@ -1184,7 +1207,7 @@ class CMS:
# 详情页链接
'getParse': self.d.getParse,
'saveParse': self.d.saveParse,
'jsp': jsp, 'setDetail': setDetail,
'jsp': jsp,'jq':jsp, 'setDetail': setDetail,
})
ctx = py_ctx
# print(ctx)
......@@ -1261,8 +1284,11 @@ class CMS:
link = '$'.join(links)
# print(content)
# sid = self.regStr(sid, "/video/(\\S+).html")
vod_id = link
if self.二级 == '*':
vod_id = vod_id + '@@' + title + '@@' + img
videos.append({
"vod_id": link,
"vod_id": vod_id,
"vod_name": title,
"vod_pic": img,
"vod_remarks": desc,
......@@ -1335,6 +1361,7 @@ class CMS:
'getParse':self.d.getParse,
'saveParse':self.d.saveParse,
'jsp': jsp,
'jq': jsp,
'pdfh': self.d.jsp.pdfh,
'pdfa': self.d.jsp.pdfa, 'pd': self.d.jsp.pd,'play_url':self.play_url
})
......
muban.mxone5.二级.tabs = '.module-tab-item';
muban.mxone5.二级.lists = '.module-player-list:eq(#id)&&.scroll-content&&a';
var rule = Object.assign(muban.mxone5,{
title:'Fun4K',
host:'https://www.fun4k.com',
url:'/vod/fyclass--------fypage---/',
searchUrl:'/vodsearch/**----------fypage---/',
class_parse:'.nav ul li;a&&Text;a&&href;.*/(.*?)/',
cate_exclude: 'Bilibili|虎牙',
headers:{
'User-Agent':'PC_UA',
},
});
\ No newline at end of file
var rule = {
title:'JRKAN直播',
host:'http://jrkankan.com',
url:'/fyclass',
searchUrl:'',
searchable:0,
quickSearch:0,
class_name:'全部',
class_url:'/',
headers:{
'User-Agent':'MOBILE_UA'
},
timeout:5000,
play_parse:true,
lazy:'',
limit:6,
double:false,
推荐:'*',
// 一级播放线路x3 可自行切换
// 一级:'.loc_match .d-touch;li&&Text;img&&src;.lab_time&&Text;a:eq(0)&&href',//play.sportsteam365.com
一级:'.loc_match .d-touch;li&&Text;img&&src;.lab_time&&Text;a:eq(1)&&href',//play.sportsteam333.com
// 一级:'.loc_match .d-touch;li&&Text;img&&src;.lab_time&&Text;a:eq(2)&&href',//play.sportsteam666.com
二级:{title:'.sub_list ul li:lt(5)&&Text;.sub_list ul li:lt(2)&&Text',img:'img&&src',desc:';;;.lab_team_home&&Text;.lab_team_away&&Text',content:'.sub_list ul li:lt(2)&&Text',tabs:'',tab_text:'',lists:'.sub_channel a',list_text:'a&&data-group',list_url:'a&&data-play'},
搜索:'',
}
\ No newline at end of file
var rule={
var rule = {
title:'RP影视',
host:'https://mac.rp123.top',
url:'/vodshow/fyclass--------fypage---/',
searchUrl:'/vodsearch/**----------fypage---/',
searchable:2,
quickSearch:0,
filterable:0,
host:'https://mac.rp123.top',
url:'/vodshow/fyclass--hits------fypage---/',
searchUrl:'/vodsearch/-------------/?wd=**',
searchable:2,//是否启用全局搜索,
quickSearch:0,//是否启用快速搜索,
filterable:0,//是否启用分类筛选,
headers:{'User-Agent':'MOBILE_UA',},
class_name:'电影&电视剧&综艺&动漫&纪录片&4K专区',
class_url:'1&2&3&4&35&40',
play_parse:true,
lazy:'',
limit:6,
推荐:'.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href',
double:true, // 推荐内容是否双层定位
一级:'body a.module-poster-item.module-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href',
二级:{"title":"h1&&Text;.module-info-tag&&Text","img":".lazyload&&data-original","desc":".module-info-item:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(3)&&Text","content":".module-info-introduction&&Text","tabs":".module-tab-item.tab-item","lists":".module-play-list:eq(#id) a"},
搜索:'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
推荐:'.module-poster-item;*;*;*;*',
一级:'.module-poster-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href',
二级:{"title":"h1&&Text;.module-info-tag-link a&&Text","img":".alignnone&&src","desc":";;;.module-info-items div:eq(4) a&&Text;.module-info-items div:eq(3) a&&Text","content":".show-desc&&Text","tabs":".module-tab-items-box span","lists":".module-play-list:eq(#id) a"},
搜索:'.module-card-item-poster;img&&alt;.lazyload&&data-original;.module-item-note&&Text;a&&href',
}
\ No newline at end of file
3.9.14beta2
\ No newline at end of file
3.9.15
\ No newline at end of file
......@@ -11,6 +11,6 @@ class_name:'电影&电视剧&综艺&动漫',
class_url:'1&2&3&4',
推荐:'.list-a.size;a&&title;.lazy&&data-original;.list-remarks&&Text;a&&href',
一级:'.list-a.size&&ul li;a&&title;.lazy&&data-original;.list-remarks&&Text;a&&href',
二级:{"title":"h2&&a&&Text","img":".lazyload&&data-original","desc":";.data:eq(0) a:eq(2)&&Text;.data:eq(0) a:eq(1)&&Text;.data:eq(2)&&Text;.data:eq(3)&&Text","content":".play-bottom.cor4&&Text","tabs":".swiper-wrapper&&a","lists":".content-playlist:eq(#id) a"},
二级:{"title":"h2&&Text;.play-news&&Text","img":".lazyload&&data-original","desc":";;;.play-top p span:eq(0)&&Text;.play-top p span:eq(1)&&Text","content":".play-bottom&&Text","tabs":".swiper-wrapper a","lists":".content-playlist:eq(#id) a"},
搜索:'.myui-vodlist__media.clearfix li;*;*;*;*',
}
\ No newline at end of file
var rule = {
title:'学生球赛录像',
编码:'gb18030',
host:'http://www.xsm2b.com',
url:'/fyclass/fypage.html',
searchUrl:'',
searchable:0,
quickSearch:0,
class_name:'录像&足球视频&篮球视频&综合视频',
class_url:'matchvideo&footballvideo&basketballvideo&othervideo',
headers:{
'User-Agent':'MOBILE_UA'
},
timeout:5000,
play_parse:true,
lazy:'',
limit:6,
double:false,
//推荐:'*',
一级:"js:pdfa=jsp.pdfa;pdfa=jsp.pdfa;pd=jsp.pd;let d=[];log(input);let html=request(input);let list=pdfa(html,'.text_list li');let burl=input.match(/(.*)\\/.*?.html/)[1];log(burl);MY_URL=burl;print(list);list.forEach(function(it){d.push({title:pdfh(it,'a&&Text'),desc:pdfh(it,'.date&&Text'),url:pd(it,'a&&href')})});setResult(d)",
// 一级:'.text_list li;a&&Text;;.date&&Text;a&&href',
二级:'*',
搜索:'',
}
\ No newline at end of file
var rule = {
title:'有声小说吧',
编码:'gb2312',
编码:'gb18030',
host:'http://m.ysxs8.vip',
url:'/downlist/fyclass_fypage.html',
searchUrl:'/search.asp?page=fypage&searchword=**&searchtype=-1',
......
......@@ -7,13 +7,16 @@ var rule = {
title:'荐片',
host:'http://api2.rinhome.com',
homeUrl:'',//网站的首页链接,用于分类获取和推荐获取
url:'/api/crumb/list?area=0&sort=hot&category_id=fyclass&page=fypage&type=0&limit=24&year=0',
url:'/api/crumb/list?area=0&category_id=fyclass&page=fypage&type=0&limit=24&fyfilter',
class_name:'全部&电影&电视剧&动漫&综艺',
class_url:'0&1&2&3&4',
detailUrl:'/api/node/detail?channel=wandoujia&token=&id=fyid',//二级详情拼接链接(json格式用)
searchUrl:'/api/video/search?key=**&page=fypage',
searchable:2,
quickSearch:0,
filterable:1,
filter:{'0': [{'key': 'year', 'name': '年代', 'value': [{'n': '全部', 'v': '0'}, {'n': '2022', 'v': '101'}, {'n': '2021', 'v': '118'}, {'n': '2020', 'v': '16'}, {'n': '2019', 'v': '7'}, {'n': '2018', 'v': '2'}, {'n': '2017', 'v': '3'}, {'n': '2016', 'v': '22'}]}, {'key': 'sort', 'name': '排序', 'value': [{'n': '热门', 'v': 'hot'}, {'n': '评分', 'v': 'rating'}, {'n': '更新', 'v': 'update'}]}], '1': [{'key': 'year', 'name': '年代', 'value': [{'n': '全部', 'v': '0'}, {'n': '2022', 'v': '101'}, {'n': '2021', 'v': '118'}, {'n': '2020', 'v': '16'}, {'n': '2019', 'v': '7'}, {'n': '2018', 'v': '2'}, {'n': '2017', 'v': '3'}, {'n': '2016', 'v': '22'}]}, {'key': 'sort', 'name': '排序', 'value': [{'n': '热门', 'v': 'hot'}, {'n': '评分', 'v': 'rating'}, {'n': '更新', 'v': 'update'}]}], '2': [{'key': 'year', 'name': '年代', 'value': [{'n': '全部', 'v': '0'}, {'n': '2022', 'v': '101'}, {'n': '2021', 'v': '118'}, {'n': '2020', 'v': '16'}, {'n': '2019', 'v': '7'}, {'n': '2018', 'v': '2'}, {'n': '2017', 'v': '3'}, {'n': '2016', 'v': '22'}]}, {'key': 'sort', 'name': '排序', 'value': [{'n': '热门', 'v': 'hot'}, {'n': '评分', 'v': 'rating'}, {'n': '更新', 'v': 'update'}]}], '3': [{'key': 'year', 'name': '年代', 'value': [{'n': '全部', 'v': '0'}, {'n': '2022', 'v': '101'}, {'n': '2021', 'v': '118'}, {'n': '2020', 'v': '16'}, {'n': '2019', 'v': '7'}, {'n': '2018', 'v': '2'}, {'n': '2017', 'v': '3'}, {'n': '2016', 'v': '22'}]}, {'key': 'sort', 'name': '排序', 'value': [{'n': '热门', 'v': 'hot'}, {'n': '评分', 'v': 'rating'}, {'n': '更新', 'v': 'update'}]}], '4': [{'key': 'year', 'name': '年代', 'value': [{'n': '全部', 'v': '0'}, {'n': '2022', 'v': '101'}, {'n': '2021', 'v': '118'}, {'n': '2020', 'v': '16'}, {'n': '2019', 'v': '7'}, {'n': '2018', 'v': '2'}, {'n': '2017', 'v': '3'}, {'n': '2016', 'v': '22'}]}, {'key': 'sort', 'name': '排序', 'value': [{'n': '热门', 'v': 'hot'}, {'n': '评分', 'v': 'rating'}, {'n': '更新', 'v': 'update'}]}]},
filter_url:'sort={{fl.sort or "hot"}}&year={{fl.year or "0"}}',
headers:{
'User-Agent':'jianpian-android/350',
'JPAUTH':'y261ow7kF2dtzlxh1GS9EB8nbTxNmaK/QQIAjctlKiEv'
......
var rule = {
title:'酷奇MV',
host:'https://www.kuqimv.com',
homeUrl:'/play/',
url:'/play/fyclass_fypage.html',
searchUrl:'/search.php?key=**',
searchable:2,
quickSearch:0,
class_parse:'.m_bor li;a&&Text;a&&href;/play/(\\d+)_1.html',
headers:{
'User-Agent':'MOBILE_UA'
},
timeout:5000,
play_parse:true,
lazy:'',
limit:6,
double:false,
推荐:'*',
一级:'.mv_list li;.name&&Text;.pic img&&src;.singer&&Text;a&&href',
二级:'*',
搜索:'.play_xg li;*;*;*;*',
}
......@@ -33,7 +33,7 @@ function init_test(){
}
let rule = {};
const VERSION = '3.9.14beta2';
const VERSION = '3.9.15';
/** 已知问题记录
* 1.影魔的jinjia2引擎不支持 {{fl}}对象直接渲染 (有能力解决的话尽量解决下,支持对象直接渲染字符串转义,如果加了|safe就不转义)[影魔牛逼,最新的文件发现这问题已经解决了]
* Array.prototype.append = Array.prototype.push; 这种js执行后有毛病,for in 循环列表会把属性给打印出来 (这个大毛病需要重点排除一下)
......@@ -83,7 +83,7 @@ var _pdfh;
var _pdfa;
var _pd;
// const DOM_CHECK_ATTR = ['url', 'src', 'href', 'data-original', 'data-src'];
const DOM_CHECK_ATTR = /(url|src|href|data-original|data-src)$/;
const DOM_CHECK_ATTR = /(url|src|href|data-original|data-src|data-play)$/;
const SELECT_REGEX = /:eq|:lt|:gt|#/g;
const SELECT_REGEX_A = /:eq|:lt|:gt/g;
......@@ -1190,12 +1190,16 @@ function homeVodParse(homeVodObj){
} else{
content = '';
}
let vid = links.join('$');
if(rule.二级==='*'){
vid = vid+'@@'+title+'@@'+img;
}
let vod = {
vod_name: title,
vod_pic: img,
vod_remarks: desc,
vod_content: content,
vod_id: links.join('$')
vod_id: vid
};
// print(vod);
d.push(vod);
......@@ -1238,12 +1242,16 @@ function homeVodParse(homeVodObj){
}else{
content = ''
}
let vid = links.join('$');
if(rule.二级==='*'){
vid = vid+'@@'+title+'@@'+img;
}
let vod = {
vod_name: title,
vod_pic: img,
vod_remarks: desc,
vod_content: content,
vod_id: links.join('$')
vod_id: vid
};
d.push(vod);
......@@ -1370,10 +1378,17 @@ function categoryParse(cateObj) {
});
let link = links.join('$');
let vod_id = rule.detailUrl?MY_CATE+'$'+link:link;
let vod_name = _pdfh(it, p[1]).replace(/\n|\t/g,'').trim();
let vod_pic = _pd(it, p[2],MY_URL);
if(rule.二级==='*'){
vod_id = vod_id+'@@'+vod_name+'@@'+vod_pic;
}
d.push({
'vod_id': vod_id,
'vod_name': _pdfh(it, p[1]).replace(/\n|\t/g,'').trim(),
'vod_pic': _pd(it, p[2],MY_URL),
'vod_name': vod_name,
'vod_pic': vod_pic,
'vod_remarks': _pdfh(it, p[3]).replace(/\n|\t/g,'').trim(),
});
});
......@@ -1478,10 +1493,16 @@ function searchParse(searchObj) {
}else{
content = '';
}
let vod_id = link;
let vod_name = _pdfh(it, p1).replace(/\n|\t/g,'').trim();
let vod_pic = _pd(it, p2,MY_URL);
if(rule.二级==='*'){
vod_id = vod_id+'@@'+vod_name+'@@'+vod_pic;
}
let ob = {
'vod_id': link,
'vod_name': _pdfh(it, p1).replace(/\n|\t/g,'').trim(),
'vod_pic': _pd(it, p2,MY_URL),
'vod_id': vod_id,
'vod_name': vod_name,
'vod_pic': vod_pic,
'vod_remarks': _pdfh(it, p3).replace(/\n|\t/g,'').trim(),
'vod_content': content.replace(/\n|\t/g,'').trim(),
};
......@@ -1510,11 +1531,22 @@ function searchParse(searchObj) {
*/
function detailParse(detailObj){
fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
let orId = detailObj.orId;
let vod_name = '片名';
let vod_pic = '';
let vod_id = orId;
if(rule.二级==='*'){
// vod_id = orId.split('@@')[0]; // 千万不能分割
let extra = orId.split('@@');
vod_name = extra.length>1?extra[1]:vod_name;
vod_pic = extra.length>2?extra[2]:vod_pic;
}
// print(vod_pic);
let vod = {
vod_id: detailObj.orId, //"id",
vod_name: "片名",
vod_pic: "",
type_name: "剧情",
vod_id: vod_id, //"id",
vod_name: vod_name,
vod_pic: vod_pic,
type_name: "类型",
vod_year: "年份",
vod_area: "地区",
vod_remarks: "更新信息",
......@@ -1536,7 +1568,7 @@ function detailParse(detailObj){
vod.vod_remarks = detailUrl;
vod.vod_actor = '没有二级,只有一级链接直接嗅探播放';
vod.vod_content = MY_URL;
vod.vod_play_url = '嗅探播放$' + MY_URL;
vod.vod_play_url = '嗅探播放$' + MY_URL.split('@@')[0];
}else if(typeof(p)==='string'&&p.trim().startsWith('js:')){
const TYPE = 'detail';
var input = MY_URL;
......@@ -1706,7 +1738,7 @@ function detailParse(detailObj){
vod.vod_play_url = vod_play_url;
}
if(!vod.vod_id){
vod.vod_id = detailObj.orId;
vod.vod_id = vod_id;
}
// print(vod);
return JSON.stringify({
......@@ -1955,7 +1987,7 @@ function detail(vod_url) {
fyclass = tmp[0];
vod_url = tmp[1];
}
let detailUrl = vod_url;
let detailUrl = vod_url.split('@@')[0];
let url;
if(!detailUrl.startsWith('http')&&!detailUrl.includes('/')){
url = rule.detailUrl.replaceAll('fyid', detailUrl).replaceAll('fyclass',fyclass);
......
import cheerio from"https://gitcode.net/qq_32394351/dr_py/-/raw/master/libs/cheerio.min.js";import"https://gitcode.net/qq_32394351/dr_py/-/raw/master/libs/crypto-js.js";import"https://gitcode.net/qq_32394351/dr_py/-/raw/master/libs/drT.js";function init_test(){console.log("init_test_start");console.log("当前版本号:"+VERSION);console.log(RKEY);console.log(JSON.stringify(rule));console.log("init_test_end")}let rule={};const VERSION="3.9.14beta2";const MOBILE_UA="Mozilla/5.0 (Linux; Android 11; M2007J3SC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36";const PC_UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36";const UA="Mozilla/5.0";const UC_UA="Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36";const IOS_UA="Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1";const RULE_CK="cookie";const CATE_EXCLUDE="首页|留言|APP|下载|资讯|新闻|动态";const TAB_EXCLUDE="猜你|喜欢|APP|下载|剧情|热播";const OCR_RETRY=3;const OCR_API="http://cms.nokia.press:5706/parse/ocr";if(typeof MY_URL==="undefined"){var MY_URL}var RKEY;var fetch;var print;var log;var rule_fetch_params;var fetch_params;var oheaders;var _pdfh;var _pdfa;var _pd;const DOM_CHECK_ATTR=/(url|src|href|data-original|data-src)$/;const SELECT_REGEX=/:eq|:lt|:gt|#/g;const SELECT_REGEX_A=/:eq|:lt|:gt/g;if(typeof Object.assign!="function"){Object.assign=function(){var target=arguments[0];for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target}}if(!String.prototype.includes){String.prototype.includes=function(search,start){if(typeof start!=="number"){start=0}if(start+search.length>this.length){return false}else{return this.indexOf(search,start)!==-1}}}if(!Array.prototype.includes){Object.defineProperty(Array.prototype,"includes",{value:function(searchElement,fromIndex){if(this==null){throw new TypeError('"this" is null or not defined')}var o=Object(this);var len=o.length>>>0;if(len===0){return false}var n=fromIndex|0;var k=Math.max(n>=0?n:len-Math.abs(n),0);while(k<len){if(o[k]===searchElement){return true}k++}return false}})}if(typeof String.prototype.startsWith!="function"){String.prototype.startsWith=function(prefix){return this.slice(0,prefix.length)===prefix}}if(typeof String.prototype.endsWith!="function"){String.prototype.endsWith=function(suffix){return this.indexOf(suffix,this.length-suffix.length)!==-1}}Object.prototype.myValues=function(obj){if(obj==null){throw new TypeError("Cannot convert undefined or null to object")}var res=[];for(var k in obj){if(obj.hasOwnProperty(k)){res.push(obj[k])}}return res};if(typeof Object.prototype.values!="function"){Object.prototype.values=function(obj){if(obj==null){throw new TypeError("Cannot convert undefined or null to object")}var res=[];for(var k in obj){if(obj.hasOwnProperty(k)){res.push(obj[k])}}return res}}if(typeof Array.prototype.join!="function"){Array.prototype.join=function(emoji){emoji=emoji||"";let self=this;let str="";let i=0;if(!Array.isArray(self)){throw String(self)+"is not Array"}if(self.length===0){return""}if(self.length===1){return String(self[0])}i=1;str=this[0];for(;i<self.length;i++){str+=String(emoji)+String(self[i])}return str}}String.prototype.rstrip=function(chars){let regex=new RegExp(chars+"$");return this.replace(regex,"")};Array.prototype.append=Array.prototype.push;String.prototype.strip=String.prototype.trim;function 是否正版(vipUrl){let flag=new RegExp("qq.com|iqiyi.com|youku.com|mgtv.com|bilibili.com|sohu.com|ixigua.com|pptv.com|miguvideo.com|le.com|1905.com|fun.tv");return flag.test(vipUrl)}function urlDeal(vipUrl){if(!vipUrl){return""}if(!是否正版(vipUrl)){return vipUrl}if(!/miguvideo/.test(vipUrl)){vipUrl=vipUrl.split("#")[0].split("?")[0]}return vipUrl}function setResult(d){if(!Array.isArray(d)){return[]}VODS=[];d.forEach(function(it){let obj={vod_id:it.url||"",vod_name:it.title||"",vod_remarks:it.desc||"",vod_content:it.content||"",vod_pic:it.pic_url||it.img||""};let keys=Object.keys(it);if(keys.includes("tname")){obj.type_name=it.tname||""}if(keys.includes("tid")){obj.type_id=it.tid||""}if(keys.includes("year")){obj.vod_year=it.year||""}if(keys.includes("actor")){obj.vod_actor=it.actor||""}if(keys.includes("director")){obj.vod_director=it.director||""}if(keys.includes("area")){obj.vod_area=it.area||""}VODS.push(obj)});return VODS}function setResult2(res){VODS=res.list||[];return VODS}function setHomeResult(res){if(!res||typeof res!=="object"){return[]}return setResult(res.list)}function rc(js){if(js==="maomi_aes.js"){var a=CryptoJS.enc.Utf8.parse("625222f9149e961d");var t=CryptoJS.enc.Utf8.parse("5efdtf6060e2o330");return{De:function(word){word=CryptoJS.enc.Hex.parse(word);return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(word),a,{iv:t,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)},En:function(word){var Encrypted=CryptoJS.AES.encrypt(word,a,{iv:t,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7});return Encrypted.ciphertext.toString()}}}return{}}function maoss(jxurl,ref,key){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));eval(getCryptoJS());try{var getVideoInfo=function(text){return CryptoJS.AES.decrypt(text,key,{iv:iv,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)};var token_key=key==undefined?"dvyYRQlnPRCMdQSe":key;if(ref){var html=request(jxurl,{headers:{Referer:ref}})}else{var html=request(jxurl)}if(html.indexOf("&btwaf=")!=-1){html=request(jxurl+"&btwaf"+html.match(/&btwaf(.*?)"/)[1],{headers:{Referer:ref}})}var token_iv=html.split('_token = "')[1].split('"')[0];var key=CryptoJS.enc.Utf8.parse(token_key);var iv=CryptoJS.enc.Utf8.parse(token_iv);eval(html.match(/var config = {[\s\S]*?}/)[0]+"");if(!config.url.startsWith("http")){config.url=CryptoJS.AES.decrypt(config.url,key,{iv:iv,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)}return config.url}catch(e){return""}}function urlencode(str){str=(str+"").toString();return encodeURIComponent(str).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A").replace(/%20/g,"+")}function base64Encode(text){return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(text))}function base64Decode(text){return CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(text))}function md5(text){return CryptoJS.MD5(text).toString()}function getCryptoJS(){return'console.log("CryptoJS已装载");'}let VODS=[];let VOD={};let TABS=[];let LISTS=[];globalThis.encodeUrl=urlencode;globalThis.urlencode=urlencode;function urljoin(fromPath,nowPath){fromPath=fromPath||"";nowPath=nowPath||"";return joinUrl(fromPath,nowPath)}var urljoin2=urljoin;const defaultParser={pdfh:pdfh,pdfa:pdfa,pd(html,parse,uri){let ret=this.pdfh(html,parse);if(typeof uri==="undefined"||!uri){uri=""}if(DOM_CHECK_ATTR.test(parse)){if(/http/.test(ret)){ret=ret.substr(ret.indexOf("http"))}else{ret=urljoin(MY_URL,ret)}}return ret}};function pdfh2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print("html对象转文本发生了错误:"+e.message)}let result=defaultParser.pdfh(html2,parse);let option=parse.includes("&&")?parse.split("&&").slice(-1)[0]:parse.split(" ").slice(-1)[0];if(/style/.test(option.toLowerCase())&&/url\(/.test(result)){try{result=result.match(/url\((.*?)\)/)[1]}catch(e){}}return result}function pdfa2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print("html对象转文本发生了错误:"+e.message)}return defaultParser.pdfa(html2,parse)}function pd2(html,parse,uri){let ret=pdfh2(html,parse);if(typeof uri==="undefined"||!uri){uri=""}if(DOM_CHECK_ATTR.test(parse)){if(/http/.test(ret)){ret=ret.substr(ret.indexOf("http"))}else{ret=urljoin(MY_URL,ret)}}return ret}const parseTags={jsp:{pdfh:pdfh2,pdfa:pdfa2,pd:pd2},json:{pdfh(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}parse=parse.split("||");for(let ps of parse){let ret=cheerio.jp(ps,html);if(Array.isArray(ret)){ret=ret[0]||""}else{ret=ret||""}if(ret&&typeof ret!=="string"){ret=ret.toString()}if(ret){return ret}}return""},pdfa(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}let ret=cheerio.jp(parse,html);if(Array.isArray(ret)&&Array.isArray(ret[0])&&ret.length===1){return ret[0]||[]}return ret||[]},pd(html,parse){let ret=parseTags.json.pdfh(html,parse);if(ret){return urljoin(MY_URL,ret)}return ret}},jq:{pdfh(html,parse,base_url){if(!parse||!parse.trim()){return""}let eleFind=typeof html==="object";let option=undefined;if(eleFind&&parse.startsWith("body&&")){parse=parse.substr(6);if(parse.indexOf("&&")<0){option=parse.trim();parse="*=*"}}if(parse.indexOf("&&")>-1){let sp=parse.split("&&");option=sp[sp.length-1];sp.splice(sp.length-1);if(sp.length>1){for(let i in sp){if(!SELECT_REGEX.test(sp[i])){sp[i]=sp[i]+":eq(0)"}}}else{if(!SELECT_REGEX.test(sp[0])){sp[0]=sp[0]+":eq(0)"}}parse=sp.join(" ")}let result="";const $=eleFind?html.rr:cheerio.load(html);let ret=eleFind?parse==="*=*"||$(html.ele).is(parse)?html.ele:$(html.ele).find(parse):$(parse);if(option){if(option==="Text"){result=$(ret).text()}else if(option==="Html"){result=$(ret).html()}else{result=$(ret).attr(option);if(/style/.test(option.toLowerCase())&&/url\(/.test(result)){try{result=result.match(/url\((.*?)\)/)[1]}catch(e){}}}if(result&&base_url&&DOM_CHECK_ATTR.test(option)){if(/http/.test(result)){result=result.substr(result.indexOf("http"))}else{result=urljoin(base_url,result)}}}else{result=$(ret).toString()}return result},pdfa(html,parse){if(!parse||!parse.trim()){print("!parse");return[]}let eleFind=typeof html==="object";if(parse.indexOf("&&")>-1){let sp=parse.split("&&");for(let i in sp){if(!SELECT_REGEX_A.test(sp[i])&&i<sp.length-1){if(sp[i]!=="body"){sp[i]=sp[i]+":first"}}}parse=sp.join(" ")}const $=eleFind?html.rr:cheerio.load(html);let ret=eleFind?$(html.ele).is(parse)?html.ele:$(html.ele).find(parse):$(parse);let result=[];if(ret){ret.each(function(idx,ele){result.push({rr:$,ele:ele})})}return result},pd(html,parse,uri){return parseTags.jq.pdfh(html,parse,MY_URL)}},getParse(p0){if(p0.startsWith("jsp:")){return this.jsp}else if(p0.startsWith("json:")){return this.json}else if(p0.startsWith("jq:")){return this.jq}else{return this.jq}}};const stringify=JSON.stringify;const jsp=parseTags.jsp;const jq=parseTags.jq;function readFile(filePath){filePath=filePath||"./uri.min.js";var fd=os.open(filePath);var buffer=new ArrayBuffer(1024);var len=os.read(fd,buffer,0,1024);console.log(len);let text=String.fromCharCode.apply(null,new Uint8Array(buffer));console.log(text);return text}function dealJson(html){try{html=html.trim();if(!(html.startsWith("{")&&html.endsWith("}")||html.startsWith("[")&&html.endsWith("]"))){html="{"+html.match(/.*?\{(.*)\}/m)[1]+"}"}}catch(e){}try{html=JSON.parse(html)}catch(e){}return html}var OcrApi={api:OCR_API,classification:function(img){let code="";try{let html=request(this.api,{data:{img:img},headers:{"User-Agent":PC_UA},method:"POST"},true);html=JSON.parse(html);code=html.url||""}catch(e){}return code}};function verifyCode(url){let cnt=0;let host=getHome(url);let cookie="";while(cnt<OCR_RETRY){try{let yzm_url=`${host}/index.php/verify/index.html`;console.log(`验证码链接:${yzm_url}`);let hhtml=request(yzm_url,{withHeaders:true,toBase64:true},true);let json=JSON.parse(hhtml);if(!cookie){let setCk=Object.keys(json).find(it=>it.toLowerCase()==="set-cookie");cookie=setCk?json[setCk].split(";")[0]:""}console.log("cookie:"+cookie);let img=json.body;let code=OcrApi.classification(img);console.log(`第${cnt+1}次验证码识别结果:${code}`);let submit_url=`${host}/index.php/ajax/verify_check?type=search&verify=${code}`;console.log(submit_url);let html=request(submit_url,{headers:{Cookie:cookie,"User-Agent":MOBILE_UA},method:"POST"});html=JSON.parse(html);if(html.msg==="ok"){console.log(`第${cnt+1}次验证码提交成功`);return cookie}else if(html.msg!=="ok"&&cnt+1>=OCR_RETRY){cookie=""}}catch(e){console.log(`第${cnt+1}次验证码提交失败:${e.message}`);if(cnt+1>=OCR_RETRY){cookie=""}}cnt+=1}return cookie}function setItem(k,v){local.set(RKEY,k,v);console.log(`规则${RKEY}设置${k} => ${v}`)}function getItem(k,v){return local.get(RKEY,k)||v}function clearItem(k){local.delete(RKEY,k)}function getHome(url){if(!url){return""}let tmp=url.split("//");url=tmp[0]+"//"+tmp[1].split("/")[0];try{url=decodeURIComponent(url)}catch(e){}return url}function buildUrl(url,obj){obj=obj||{};if(url.indexOf("?")<0){url+="?"}let param_list=[];let keys=Object.keys(obj);keys.forEach(it=>{param_list.push(it+"="+obj[it])});let prs=param_list.join("&");if(keys.length>0&&!url.endsWith("?")){url+="&"}url+=prs;return url}function require(url){eval(request(url))}function request(url,obj,ocr_flag){ocr_flag=ocr_flag||false;if(typeof obj==="undefined"||!obj||obj==={}){if(!fetch_params||!fetch_params.headers){let headers={"User-Agent":MOBILE_UA};if(rule.headers){Object.assign(headers,rule.headers)}fetch_params.headers=headers}if(!fetch_params.headers.Referer){fetch_params.headers.Referer=getHome(url)}obj=fetch_params}else{let headers=obj.headers||{};let keys=Object.keys(headers).map(it=>it.toLowerCase());if(!keys.includes("user-agent")){headers["User-Agent"]=MOBILE_UA}if(!keys.includes("referer")){headers["Referer"]=getHome(url)}obj.headers=headers}if(rule.encoding&&rule.encoding!=="utf-8"&&!ocr_flag){if(!obj.headers.hasOwnProperty("Content-Type")){obj.headers["Content-Type"]="text/html; charset="+rule.encoding}}if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="string"){let data={};obj.body.split("&").forEach(it=>{data[it.split("=")[0]]=it.split("=")[1]});obj.data=data;delete obj.body}else if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="object"){obj.data=obj.body;delete obj.body}if(!url){return obj.withHeaders?"{}":""}if(obj.toBase64){obj.buffer=2;delete obj.toBase64}console.log(JSON.stringify(obj.headers));console.log("request:"+url);let res=req(url,obj);let html=res.content||"";if(obj.withHeaders){let htmlWithHeaders=res.headers;htmlWithHeaders.body=html;return JSON.stringify(htmlWithHeaders)}else{return html}}function post(url,obj){obj.method="POST";return request(url,obj)}fetch=request;print=function(data){data=data||"";if(typeof data!=="string"){try{data=JSON.stringify(data)}catch(e){console.log("print:"+e.message)}}if(typeof data!=="string"){console.log(typeof data+":"+data.length)}else{console.log(data)}};log=print;function checkHtml(html,url,obj){if(/\?btwaf=/.test(html)){let btwaf=html.match(/btwaf(.*?)"/)[1];url=url.split("#")[0]+"?btwaf"+btwaf;html=request(url,obj)}return html}function getCode(url,obj){let html=request(url,obj);html=checkHtml(html,url,obj);return html}function getHtml(url){let obj={};if(rule.headers){obj.headers=rule.headers}let cookie=getItem(RULE_CK,"");if(cookie){if(obj.headers&&!Object.keys(obj.headers).map(it=>it.toLowerCase()).includes("cookie")){obj.headers["Cookie"]=cookie}else if(!obj.headers){obj.headers={Cookie:cookie}}}let html=getCode(url,obj);return html}function homeParse(homeObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let classes=[];if(homeObj.class_name&&homeObj.class_url){let names=homeObj.class_name.split("&");let urls=homeObj.class_url.split("&");let cnt=Math.min(names.length,urls.length);for(let i=0;i<cnt;i++){classes.push({type_id:urls[i],type_name:names[i]})}}if(homeObj.class_parse){let p=homeObj.class_parse.split(";");let _ps=parseTags.getParse(p[0]);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;MY_URL=rule.url;if(p.length>=3){try{let html=getHtml(homeObj.MY_URL);if(html){homeHtmlCache=html;let list=_pdfa(html,p[0]);if(list&&list.length>0){list.forEach((it,idex)=>{try{let name=_pdfh(it,p[1]);if(homeObj.cate_exclude&&new RegExp(homeObj.cate_exclude).test(name)){return}let url=_pd(it,p[2]);if(p.length>3&&p[3]){let exp=new RegExp(p[3]);url=url.match(exp)[1]}classes.push({type_id:url.trim(),type_name:name.trim()})}catch(e){console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`)}})}}}catch(e){console.log(e.message)}}}classes=classes.filter(it=>!homeObj.cate_exclude||!new RegExp(homeObj.cate_exclude).test(it.type_name));let resp={class:classes};if(homeObj.filter){resp.filters=homeObj.filter}console.log(JSON.stringify(resp));return JSON.stringify(resp)}function getPP(p,pn,pp,ppn){let ps=p[pn]==="*"&&pp.length>ppn?pp[ppn]:p[pn];return ps}function homeVodParse(homeVodObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];MY_URL=homeVodObj.homeUrl;console.log(MY_URL);let t1=(new Date).getTime();let p=homeVodObj.推荐;print("p:"+p);if(p==="*"&&rule.一级){p=rule.一级;homeVodObj.double=false}if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级.split(";");if(p.startsWith("js:")){const TYPE="home";var input=MY_URL;const HOST=rule.host;eval(p.replace("js:",""));d=VODS}else{p=p.split(";");if(!homeVodObj.double&&p.length<5){return"{}"}else if(homeVodObj.double&&p.length<6){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");let html=homeHtmlCache||getHtml(MY_URL);homeHtmlCache=undefined;if(is_json){html=dealJson(html)}try{console.log("double:"+homeVodObj.double);if(homeVodObj.double){let items=_pdfa(html,p0);for(let item of items){let items2=_pdfa(item,p[1]);for(let item2 of items2){try{let p2=getPP(p,2,pp,1);let title=_pdfh(item2,p2);let img="";try{let p3=getPP(p,3,pp,2);img=_pd(item2,p3)}catch(e){}let desc="";try{let p4=getPP(p,4,pp,3);desc=_pdfh(item2,p4)}catch(e){}let p5=getPP(p,5,pp,4);let links=[];for(let _p5 of p5.split("+")){let link=!homeVodObj.detailUrl?_pd(item2,_p5,MY_URL):_pdfh(item2,_p5);links.push(link)}let content;if(p.length>6&&p[6]){let p6=getPP(p,6,pp,5);content=_pdfh(item2,p6)}else{content=""}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:links.join("$")};d.push(vod)}catch(e){console.log("首页列表处理发生错误:"+e.message)}}}}else{let items=_pdfa(html,p0);for(let item of items){try{let p1=getPP(p,1,pp,1);let title=_pdfh(item,p1);let img="";try{let p2=getPP(p,2,pp,2);img=_pd(item,p2,MY_URL)}catch(e){}let desc="";try{let p3=getPP(p,3,pp,3);desc=_pdfh(item,p3)}catch(e){}let p4=getPP(p,4,pp,4);let links=[];for(let _p5 of p4.split("+")){let link=!homeVodObj.detailUrl?_pd(item,_p5,MY_URL):_pdfh(item,_p5);links.push(link)}let content;if(p.length>5&&p[5]){let p5=getPP(p,5,pp,5);content=_pdfh(item,p5)}else{content=""}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:links.join("$")};d.push(vod)}catch(e){}}}}catch(e){}}let t2=(new Date).getTime();console.log("加载首页推荐耗时:"+(t2-t1)+"毫秒");return JSON.stringify({list:d})}function categoryParse(cateObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let p=cateObj.一级;if(!p||typeof p!=="string"){return"{}"}let d=[];let url=cateObj.url.replaceAll("fyclass",cateObj.tid);if(rule.filter_url){if(!/fyfilter/.test(url)){if(!url.endsWith("&")&&!rule.filter_url.startsWith("&")){url+="&"}url+=rule.filter_url}else{url=url.replace("fyfilter",rule.filter_url)}let fl=cateObj.filter?cateObj.extend:{};if(rule.filter_def&&typeof rule.filter_def==="object"){try{if(Object.keys(rule.filter_def).length>0&&rule.filter_def.hasOwnProperty(cateObj.tid)){let self_fl_def=rule.filter_def[cateObj.tid];if(self_fl_def&&typeof self_fl_def==="object"){let fl_def=JSON.parse(JSON.stringify(self_fl_def));fl=Object.assign(fl_def,fl)}}}catch(e){print("合并不同分类对应的默认筛选出错:"+e.message)}}let new_url;new_url=cheerio.jinja2(url,{fl:fl});if(/object Object/.test(new_url)){new_url=drT.renderText(url,fl)}url=new_url}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",cateObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.replaceAll("fypage",cateObj.pg)}}if(cateObj.pg===1&&url.includes("[")&&url.includes("]")){url=url.split("[")[1].split("]")[0]}else if(cateObj.pg>1&&url.includes("[")&&url.includes("]")){url=url.split("[")[0]}MY_URL=url;console.log(MY_URL);p=p.trim();const MY_CATE=cateObj.tid;if(p.startsWith("js:")){var MY_FL=cateObj.extend;const TYPE="cate";var input=MY_URL;const MY_PAGE=cateObj.pg;var desc="";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let _ps=parseTags.getParse(p[0]);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p[0].startsWith("json:");p[0]=p[0].replace(/^(jsp:|json:|jq:)/,"");try{let html=getHtml(MY_URL);if(html){if(is_json){html=dealJson(html)}let list=_pdfa(html,p[0]);list.forEach(it=>{let links=p[4].split("+").map(p4=>{return!rule.detailUrl?_pd(it,p4,MY_URL):_pdfh(it,p4)});let link=links.join("$");let vod_id=rule.detailUrl?MY_CATE+"$"+link:link;d.push({vod_id:vod_id,vod_name:_pdfh(it,p[1]).replace(/\n|\t/g,"").trim(),vod_pic:_pd(it,p[2],MY_URL),vod_remarks:_pdfh(it,p[3]).replace(/\n|\t/g,"").trim()})})}}catch(e){console.log(e.message)}}return d.length<1?"{}":JSON.stringify({page:parseInt(cateObj.pg),pagecount:999,limit:20,total:999,list:d})}function searchParse(searchObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];if(!searchObj.searchUrl){return"{}"}let p=searchObj.搜索==="*"&&rule.一级?rule.一级:searchObj.搜索;if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级.split(";");let url=searchObj.searchUrl.replaceAll("**",searchObj.wd).replaceAll("fypage",searchObj.pg);MY_URL=url;console.log(MY_URL);if(p.startsWith("js:")){const TYPE="search";const MY_PAGE=searchObj.pg;const KEY=searchObj.wd;var input=MY_URL;var detailUrl=rule.detailUrl||"";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");try{let html=getHtml(MY_URL);if(html){if(/系统安全验证|输入验证码/.test(html)){let cookie=verifyCode(MY_URL);if(cookie){console.log(`本次成功过验证,cookie:${cookie}`);setItem(RULE_CK,cookie)}else{console.log(`本次自动过搜索验证失败,cookie:${cookie}`)}html=getHtml(MY_URL)}if(!html.includes(searchObj.wd)){console.log("搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码");console.log(html)}if(is_json){html=dealJson(html)}console.log(JSON.stringify(html));console.log(html);let list=_pdfa(html,p0);list.forEach(it=>{let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let links=p4.split("+").map(_p4=>{return!rule.detailUrl?_pd(it,_p4,MY_URL):_pdfh(it,_p4)});let link=links.join("$");let content;if(p.length>5&&p[5]){let p5=getPP(p,5,pp,5);content=_pdfh(it,p5)}else{content=""}let ob={vod_id:link,vod_name:_pdfh(it,p1).replace(/\n|\t/g,"").trim(),vod_pic:_pd(it,p2,MY_URL),vod_remarks:_pdfh(it,p3).replace(/\n|\t/g,"").trim(),vod_content:content.replace(/\n|\t/g,"").trim()};d.push(ob)})}}catch(e){print("搜索发生错误:"+e.message);return"{}"}}return JSON.stringify({page:parseInt(searchObj.pg),pagecount:10,limit:20,total:100,list:d})}function detailParse(detailObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let vod={vod_id:detailObj.orId,vod_name:"片名",vod_pic:"",type_name:"剧情",vod_year:"年份",vod_area:"地区",vod_remarks:"更新信息",vod_actor:"主演",vod_director:"导演",vod_content:"简介"};let p=detailObj.二级;let url=detailObj.url;let detailUrl=detailObj.detailUrl;let fyclass=detailObj.fyclass;let tab_exclude=detailObj.tab_exclude;let html=detailObj.html||"";MY_URL=url;console.log(MY_URL);if(p==="*"){vod.vod_play_from="道长在线";vod.vod_remarks=detailUrl;vod.vod_actor="没有二级,只有一级链接直接嗅探播放";vod.vod_content=MY_URL;vod.vod_play_url="嗅探播放$"+MY_URL}else if(typeof p==="string"&&p.trim().startsWith("js:")){const TYPE="detail";var input=MY_URL;var play_url="";eval(p.trim().replace("js:",""));vod=VOD;console.log(JSON.stringify(vod))}else if(p&&typeof p==="object"){if(!html){html=getHtml(MY_URL)}let _impJQP=true;let _ps;if(p.is_json){_ps=parseTags.json;html=dealJson(html);_impJQP=false}else if(p.is_jsp){_ps=parseTags.jsp}else if(p.is_jq){_ps=parseTags.jq}else{_ps=parseTags.jq}if(_impJQP){let c$=cheerio.load(html);html={rr:c$,ele:c$("html")[0]}}_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;if(p.title){let p1=p.title.split(";");vod.vod_name=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();let type_name=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").replace(/ /g,"").trim():"";vod.type_name=type_name||vod.type_name}if(p.desc){try{let p1=p.desc.split(";");vod.vod_remarks=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();vod.vod_year=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").trim():"";vod.vod_area=p1.length>2?_pdfh(html,p1[2]).replace(/\n|\t/g,"").trim():"";vod.vod_actor=p1.length>3?_pdfh(html,p1[3]).replace(/\n|\t/g,"").trim():"";vod.vod_director=p1.length>4?_pdfh(html,p1[4]).replace(/\n|\t/g,"").trim():""}catch(e){}}if(p.content){try{let p1=p.content.split(";");vod.vod_content=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim()}catch(e){}}if(p.img){try{let p1=p.img.split(";");vod.vod_pic=_pd(html,p1[0],MY_URL)}catch(e){}}let vod_play_from="$$$";let playFrom=[];if(p.重定向&&p.重定向.startsWith("js:")){print("开始执行重定向代码:"+p.重定向);html=eval(p.重定向.replace("js:",""));if(_impJQP){let c$=cheerio.load(html);html={rr:c$,ele:c$("html")[0]}}}if(p.tabs){if(p.tabs.startsWith("js:")){print("开始执行tabs代码:"+p.tabs);if(html&&typeof html!=="string"){try{html=html.rr(html.ele).toString()}catch(e){}}var input=MY_URL;eval(p.tabs.replace("js:",""));playFrom=TABS}else{let p_tab=p.tabs.split(";")[0];let vHeader=_pdfa(html,p_tab);console.log(vHeader.length);let tab_text=p.tab_text||"body&&Text";for(let v of vHeader){let v_title=_pdfh(v,tab_text).trim();console.log(v_title);if(tab_exclude&&new RegExp(tab_exclude).test(v_title)){continue}playFrom.push(v_title)}}console.log(JSON.stringify(playFrom))}else{playFrom=["道长在线"]}vod.vod_play_from=playFrom.join(vod_play_from);let vod_play_url="$$$";let vod_tab_list=[];if(p.lists){if(p.lists.startsWith("js:")){print("开始执行lists代码:"+p.lists);if(html&&typeof html!=="string"){try{html=html.rr(html.ele).toString()}catch(e){}}var input=MY_URL;var play_url="";eval(p.lists.replace("js:",""));vod_play_url=LISTS.map(it=>it.join("#")).join(vod_play_url)}else{let list_text=p.list_text||"body&&Text";let list_url=p.list_url||"a&&href";let is_tab_js=p.tabs.trim().startsWith("js:");for(let i=0;i<playFrom.length;i++){let tab_name=playFrom[i];let tab_ext=p.tabs.split(";").length>1&&!is_tab_js?p.tabs.split(";")[1]:"";let p1=p.lists.replaceAll("#idv",tab_name).replaceAll("#id",i);tab_ext=tab_ext.replaceAll("#idv",tab_name).replaceAll("#id",i);console.log(p1);let vodList=[];try{vodList=_pdfa(html,p1);console.log("len(vodList):"+vodList.length)}catch(e){}let new_vod_list=[];let tabName=tab_ext?_pdfh(html,tab_ext):tab_name;console.log(tabName);vodList.forEach(it=>{new_vod_list.push(_pdfh(it,list_text).trim()+"$"+_pd(it,list_url,MY_URL))});let vlist=new_vod_list.join("#");vod_tab_list.push(vlist)}vod_play_url=vod_tab_list.join(vod_play_url)}}vod.vod_play_url=vod_play_url}if(!vod.vod_id){vod.vod_id=detailObj.orId}return JSON.stringify({list:[vod]})}function tellIsJx(url){try{let is_vip=!/\.(m3u8|mp4|m4a)$/.test(url.split("?")[0])&&是否正版(url);return is_vip?1:0}catch(e){return 1}}function playParse(playObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));MY_URL=playObj.url;if(!/http/.test(MY_URL)){try{MY_URL=base64Decode(MY_URL)}catch(e){}}MY_URL=decodeURIComponent(MY_URL);var input=MY_URL;let common_play={parse:1,url:input,jx:tellIsJx(input)};let lazy_play;if(!rule.play_parse||!rule.lazy){lazy_play=common_play}else if(rule.play_parse&&rule.lazy&&typeof rule.lazy==="string"){try{let lazy_code=rule.lazy.replace("js:","").trim();print("开始执行js免嗅=>"+lazy_code);eval(lazy_code);lazy_play=typeof input==="object"?input:{parse:1,jx:tellIsJx(input),url:input}}catch(e){print("js免嗅错误:"+e.message);lazy_play=common_play}}else{lazy_play=common_play}if(Array.isArray(rule.play_json)&&rule.play_json.length>0){let web_url=lazy_play.url;for(let pjson of rule.play_json){if(pjson.re&&(pjson.re==="*"||web_url.match(new RegExp(pjson.re)))){if(pjson.json&&typeof pjson.json==="object"){let base_json=pjson.json;lazy_play=Object.assign(lazy_play,base_json);break}}}}else if(rule.play_json&&!Array.isArray(rule.play_json)){let base_json={jx:1,parse:1};lazy_play=Object.assign(lazy_play,base_json)}else if(!rule.play_json){let base_json={jx:0,parse:1};lazy_play=Object.assign(lazy_play,base_json)}console.log(JSON.stringify(lazy_play));return JSON.stringify(lazy_play)}function init(ext){console.log("init");try{if(typeof globalThis.mubanJs==="undefined"){let mubanJs=request("https://gitcode.net/qq_32394351/dr_py/-/raw/master/js/模板.js",{"User-Agent":MOBILE_UA});mubanJs=mubanJs.replace("export default","(function() {return muban;}()) // export default");globalThis.mubanJs=mubanJs}let muban=eval(globalThis.mubanJs);if(typeof ext=="object"){rule=ext}else if(typeof ext=="string"){if(ext.startsWith("http")){let js=request(ext,{method:"GET"});if(js){eval(js.replace("var rule","rule"))}}}else{eval(ext.replace("var rule","rule"))}if(rule.模板&&muban.hasOwnProperty(rule.模板)){print("继承模板:"+rule.模板);rule=Object.assign(muban[rule.模板],rule)}let rule_cate_excludes=(rule.cate_exclude||"").split("|").filter(it=>it.trim());let rule_tab_excludes=(rule.tab_exclude||"").split("|").filter(it=>it.trim());rule_cate_excludes=rule_cate_excludes.concat(CATE_EXCLUDE.split("|").filter(it=>it.trim()));rule_tab_excludes=rule_tab_excludes.concat(TAB_EXCLUDE.split("|").filter(it=>it.trim()));rule.cate_exclude=rule_cate_excludes.join("|");rule.tab_exclude=rule_tab_excludes.join("|");rule.host=(rule.host||"").rstrip("/");rule.url=rule.url||"";rule.double=rule.double||false;rule.homeUrl=rule.homeUrl||"";rule.detailUrl=rule.detailUrl||"";rule.searchUrl=rule.searchUrl||"";rule.homeUrl=rule.host&&rule.homeUrl?urljoin(rule.host,rule.homeUrl):rule.homeUrl||rule.host;rule.detailUrl=rule.host&&rule.detailUrl?urljoin(rule.host,rule.detailUrl):rule.detailUrl;if(rule.url.includes("[")&&rule.url.includes("]")){let u1=rule.url.split("[")[0];let u2=rule.url.split("[")[1].split("]")[0];rule.url=rule.host&&rule.url?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.url}else{rule.url=rule.host&&rule.url?urljoin(rule.host,rule.url):rule.url}rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,rule.searchUrl):rule.searchUrl;rule.timeout=rule.timeout||5e3;rule.encoding=rule.编码||rule.encoding||"utf-8";rule.play_json=rule.hasOwnProperty("play_json")?rule.play_json:[];if(rule.headers&&typeof rule.headers==="object"){try{let header_keys=Object.keys(rule.headers);for(let k of header_keys){if(k.toLowerCase()==="user-agent"){let v=rule.headers[k];console.log(v);if(["MOBILE_UA","PC_UA","UC_UA","IOS_UA","UA"].includes(v)){rule.headers[k]=eval(v)}}}}catch(e){console.log("处理headers发生错误:"+e.message)}}rule_fetch_params={headers:rule.headers||false,timeout:rule.timeout,encoding:rule.encoding};oheaders=rule.headers||{};RKEY=typeof key!=="undefined"&&key?key:"drpy_"+(rule.title||rule.host);init_test()}catch(e){console.log("init_test发生错误:"+e.message)}}let homeHtmlCache=undefined;function home(filter){console.log("home");let homeObj={filter:rule.filter||false,MY_URL:rule.homeUrl,class_name:rule.class_name||"",class_url:rule.class_url||"",class_parse:rule.class_parse||"",cate_exclude:rule.cate_exclude};return homeParse(homeObj)}function homeVod(params){console.log("homeVod");let homeVodObj={"推荐":rule.推荐,double:rule.double,homeUrl:rule.homeUrl,detailUrl:rule.detailUrl};return homeVodParse(homeVodObj)}function category(tid,pg,filter,extend){let cateObj={url:rule.url,"一级":rule.一级,tid:tid,pg:parseInt(pg),filter:filter,extend:extend};return categoryParse(cateObj)}function detail(vod_url){let orId=vod_url;let fyclass="";if(vod_url.indexOf("$")>-1){let tmp=vod_url.split("$");fyclass=tmp[0];vod_url=tmp[1]}let detailUrl=vod_url;let url;if(!detailUrl.startsWith("http")&&!detailUrl.includes("/")){url=rule.detailUrl.replaceAll("fyid",detailUrl).replaceAll("fyclass",fyclass)}else if(detailUrl.includes("/")){url=urljoin(rule.homeUrl,detailUrl)}else{url=detailUrl}let detailObj={orId:orId,url:url,"二级":rule.二级,detailUrl:detailUrl,fyclass:fyclass,tab_exclude:rule.tab_exclude};return detailParse(detailObj)}function play(flag,id,flags){let playObj={url:id,flag:flag,flags:flags};return playParse(playObj)}function search(wd,quick){let searchObj={searchUrl:rule.searchUrl,"搜索":rule.搜索,wd:wd,pg:1,quick:quick};return searchParse(searchObj)}function DRPY(){return{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search}}export default{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,DRPY:DRPY};
\ No newline at end of file
import cheerio from"https://gitcode.net/qq_32394351/dr_py/-/raw/master/libs/cheerio.min.js";import"https://gitcode.net/qq_32394351/dr_py/-/raw/master/libs/crypto-js.js";import"https://gitcode.net/qq_32394351/dr_py/-/raw/master/libs/drT.js";function init_test(){console.log("init_test_start");console.log("当前版本号:"+VERSION);console.log(RKEY);console.log(JSON.stringify(rule));console.log("init_test_end")}let rule={};const VERSION="3.9.15";const MOBILE_UA="Mozilla/5.0 (Linux; Android 11; M2007J3SC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36";const PC_UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36";const UA="Mozilla/5.0";const UC_UA="Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36";const IOS_UA="Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1";const RULE_CK="cookie";const CATE_EXCLUDE="首页|留言|APP|下载|资讯|新闻|动态";const TAB_EXCLUDE="猜你|喜欢|APP|下载|剧情|热播";const OCR_RETRY=3;const OCR_API="http://cms.nokia.press:5706/parse/ocr";if(typeof MY_URL==="undefined"){var MY_URL}var RKEY;var fetch;var print;var log;var rule_fetch_params;var fetch_params;var oheaders;var _pdfh;var _pdfa;var _pd;const DOM_CHECK_ATTR=/(url|src|href|data-original|data-src|data-play)$/;const SELECT_REGEX=/:eq|:lt|:gt|#/g;const SELECT_REGEX_A=/:eq|:lt|:gt/g;if(typeof Object.assign!="function"){Object.assign=function(){var target=arguments[0];for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target}}if(!String.prototype.includes){String.prototype.includes=function(search,start){if(typeof start!=="number"){start=0}if(start+search.length>this.length){return false}else{return this.indexOf(search,start)!==-1}}}if(!Array.prototype.includes){Object.defineProperty(Array.prototype,"includes",{value:function(searchElement,fromIndex){if(this==null){throw new TypeError('"this" is null or not defined')}var o=Object(this);var len=o.length>>>0;if(len===0){return false}var n=fromIndex|0;var k=Math.max(n>=0?n:len-Math.abs(n),0);while(k<len){if(o[k]===searchElement){return true}k++}return false}})}if(typeof String.prototype.startsWith!="function"){String.prototype.startsWith=function(prefix){return this.slice(0,prefix.length)===prefix}}if(typeof String.prototype.endsWith!="function"){String.prototype.endsWith=function(suffix){return this.indexOf(suffix,this.length-suffix.length)!==-1}}Object.prototype.myValues=function(obj){if(obj==null){throw new TypeError("Cannot convert undefined or null to object")}var res=[];for(var k in obj){if(obj.hasOwnProperty(k)){res.push(obj[k])}}return res};if(typeof Object.prototype.values!="function"){Object.prototype.values=function(obj){if(obj==null){throw new TypeError("Cannot convert undefined or null to object")}var res=[];for(var k in obj){if(obj.hasOwnProperty(k)){res.push(obj[k])}}return res}}if(typeof Array.prototype.join!="function"){Array.prototype.join=function(emoji){emoji=emoji||"";let self=this;let str="";let i=0;if(!Array.isArray(self)){throw String(self)+"is not Array"}if(self.length===0){return""}if(self.length===1){return String(self[0])}i=1;str=this[0];for(;i<self.length;i++){str+=String(emoji)+String(self[i])}return str}}String.prototype.rstrip=function(chars){let regex=new RegExp(chars+"$");return this.replace(regex,"")};Array.prototype.append=Array.prototype.push;String.prototype.strip=String.prototype.trim;function 是否正版(vipUrl){let flag=new RegExp("qq.com|iqiyi.com|youku.com|mgtv.com|bilibili.com|sohu.com|ixigua.com|pptv.com|miguvideo.com|le.com|1905.com|fun.tv");return flag.test(vipUrl)}function urlDeal(vipUrl){if(!vipUrl){return""}if(!是否正版(vipUrl)){return vipUrl}if(!/miguvideo/.test(vipUrl)){vipUrl=vipUrl.split("#")[0].split("?")[0]}return vipUrl}function setResult(d){if(!Array.isArray(d)){return[]}VODS=[];d.forEach(function(it){let obj={vod_id:it.url||"",vod_name:it.title||"",vod_remarks:it.desc||"",vod_content:it.content||"",vod_pic:it.pic_url||it.img||""};let keys=Object.keys(it);if(keys.includes("tname")){obj.type_name=it.tname||""}if(keys.includes("tid")){obj.type_id=it.tid||""}if(keys.includes("year")){obj.vod_year=it.year||""}if(keys.includes("actor")){obj.vod_actor=it.actor||""}if(keys.includes("director")){obj.vod_director=it.director||""}if(keys.includes("area")){obj.vod_area=it.area||""}VODS.push(obj)});return VODS}function setResult2(res){VODS=res.list||[];return VODS}function setHomeResult(res){if(!res||typeof res!=="object"){return[]}return setResult(res.list)}function rc(js){if(js==="maomi_aes.js"){var a=CryptoJS.enc.Utf8.parse("625222f9149e961d");var t=CryptoJS.enc.Utf8.parse("5efdtf6060e2o330");return{De:function(word){word=CryptoJS.enc.Hex.parse(word);return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(word),a,{iv:t,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)},En:function(word){var Encrypted=CryptoJS.AES.encrypt(word,a,{iv:t,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7});return Encrypted.ciphertext.toString()}}}return{}}function maoss(jxurl,ref,key){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));eval(getCryptoJS());try{var getVideoInfo=function(text){return CryptoJS.AES.decrypt(text,key,{iv:iv,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)};var token_key=key==undefined?"dvyYRQlnPRCMdQSe":key;if(ref){var html=request(jxurl,{headers:{Referer:ref}})}else{var html=request(jxurl)}if(html.indexOf("&btwaf=")!=-1){html=request(jxurl+"&btwaf"+html.match(/&btwaf(.*?)"/)[1],{headers:{Referer:ref}})}var token_iv=html.split('_token = "')[1].split('"')[0];var key=CryptoJS.enc.Utf8.parse(token_key);var iv=CryptoJS.enc.Utf8.parse(token_iv);eval(html.match(/var config = {[\s\S]*?}/)[0]+"");if(!config.url.startsWith("http")){config.url=CryptoJS.AES.decrypt(config.url,key,{iv:iv,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)}return config.url}catch(e){return""}}function urlencode(str){str=(str+"").toString();return encodeURIComponent(str).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A").replace(/%20/g,"+")}function base64Encode(text){return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(text))}function base64Decode(text){return CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(text))}function md5(text){return CryptoJS.MD5(text).toString()}function getCryptoJS(){return'console.log("CryptoJS已装载");'}let VODS=[];let VOD={};let TABS=[];let LISTS=[];globalThis.encodeUrl=urlencode;globalThis.urlencode=urlencode;function urljoin(fromPath,nowPath){fromPath=fromPath||"";nowPath=nowPath||"";return joinUrl(fromPath,nowPath)}var urljoin2=urljoin;const defaultParser={pdfh:pdfh,pdfa:pdfa,pd(html,parse,uri){let ret=this.pdfh(html,parse);if(typeof uri==="undefined"||!uri){uri=""}if(DOM_CHECK_ATTR.test(parse)){if(/http/.test(ret)){ret=ret.substr(ret.indexOf("http"))}else{ret=urljoin(MY_URL,ret)}}return ret}};function pdfh2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print("html对象转文本发生了错误:"+e.message)}let result=defaultParser.pdfh(html2,parse);let option=parse.includes("&&")?parse.split("&&").slice(-1)[0]:parse.split(" ").slice(-1)[0];if(/style/.test(option.toLowerCase())&&/url\(/.test(result)){try{result=result.match(/url\((.*?)\)/)[1]}catch(e){}}return result}function pdfa2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print("html对象转文本发生了错误:"+e.message)}return defaultParser.pdfa(html2,parse)}function pd2(html,parse,uri){let ret=pdfh2(html,parse);if(typeof uri==="undefined"||!uri){uri=""}if(DOM_CHECK_ATTR.test(parse)){if(/http/.test(ret)){ret=ret.substr(ret.indexOf("http"))}else{ret=urljoin(MY_URL,ret)}}return ret}const parseTags={jsp:{pdfh:pdfh2,pdfa:pdfa2,pd:pd2},json:{pdfh(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}parse=parse.split("||");for(let ps of parse){let ret=cheerio.jp(ps,html);if(Array.isArray(ret)){ret=ret[0]||""}else{ret=ret||""}if(ret&&typeof ret!=="string"){ret=ret.toString()}if(ret){return ret}}return""},pdfa(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}let ret=cheerio.jp(parse,html);if(Array.isArray(ret)&&Array.isArray(ret[0])&&ret.length===1){return ret[0]||[]}return ret||[]},pd(html,parse){let ret=parseTags.json.pdfh(html,parse);if(ret){return urljoin(MY_URL,ret)}return ret}},jq:{pdfh(html,parse,base_url){if(!parse||!parse.trim()){return""}let eleFind=typeof html==="object";let option=undefined;if(eleFind&&parse.startsWith("body&&")){parse=parse.substr(6);if(parse.indexOf("&&")<0){option=parse.trim();parse="*=*"}}if(parse.indexOf("&&")>-1){let sp=parse.split("&&");option=sp[sp.length-1];sp.splice(sp.length-1);if(sp.length>1){for(let i in sp){if(!SELECT_REGEX.test(sp[i])){sp[i]=sp[i]+":eq(0)"}}}else{if(!SELECT_REGEX.test(sp[0])){sp[0]=sp[0]+":eq(0)"}}parse=sp.join(" ")}let result="";const $=eleFind?html.rr:cheerio.load(html);let ret=eleFind?parse==="*=*"||$(html.ele).is(parse)?html.ele:$(html.ele).find(parse):$(parse);if(option){if(option==="Text"){result=$(ret).text()}else if(option==="Html"){result=$(ret).html()}else{result=$(ret).attr(option);if(/style/.test(option.toLowerCase())&&/url\(/.test(result)){try{result=result.match(/url\((.*?)\)/)[1]}catch(e){}}}if(result&&base_url&&DOM_CHECK_ATTR.test(option)){if(/http/.test(result)){result=result.substr(result.indexOf("http"))}else{result=urljoin(base_url,result)}}}else{result=$(ret).toString()}return result},pdfa(html,parse){if(!parse||!parse.trim()){print("!parse");return[]}let eleFind=typeof html==="object";if(parse.indexOf("&&")>-1){let sp=parse.split("&&");for(let i in sp){if(!SELECT_REGEX_A.test(sp[i])&&i<sp.length-1){if(sp[i]!=="body"){sp[i]=sp[i]+":first"}}}parse=sp.join(" ")}const $=eleFind?html.rr:cheerio.load(html);let ret=eleFind?$(html.ele).is(parse)?html.ele:$(html.ele).find(parse):$(parse);let result=[];if(ret){ret.each(function(idx,ele){result.push({rr:$,ele:ele})})}return result},pd(html,parse,uri){return parseTags.jq.pdfh(html,parse,MY_URL)}},getParse(p0){if(p0.startsWith("jsp:")){return this.jsp}else if(p0.startsWith("json:")){return this.json}else if(p0.startsWith("jq:")){return this.jq}else{return this.jq}}};const stringify=JSON.stringify;const jsp=parseTags.jsp;const jq=parseTags.jq;function readFile(filePath){filePath=filePath||"./uri.min.js";var fd=os.open(filePath);var buffer=new ArrayBuffer(1024);var len=os.read(fd,buffer,0,1024);console.log(len);let text=String.fromCharCode.apply(null,new Uint8Array(buffer));console.log(text);return text}function dealJson(html){try{html=html.trim();if(!(html.startsWith("{")&&html.endsWith("}")||html.startsWith("[")&&html.endsWith("]"))){html="{"+html.match(/.*?\{(.*)\}/m)[1]+"}"}}catch(e){}try{html=JSON.parse(html)}catch(e){}return html}var OcrApi={api:OCR_API,classification:function(img){let code="";try{let html=request(this.api,{data:{img:img},headers:{"User-Agent":PC_UA},method:"POST"},true);html=JSON.parse(html);code=html.url||""}catch(e){}return code}};function verifyCode(url){let cnt=0;let host=getHome(url);let cookie="";while(cnt<OCR_RETRY){try{let yzm_url=`${host}/index.php/verify/index.html`;console.log(`验证码链接:${yzm_url}`);let hhtml=request(yzm_url,{withHeaders:true,toBase64:true},true);let json=JSON.parse(hhtml);if(!cookie){let setCk=Object.keys(json).find(it=>it.toLowerCase()==="set-cookie");cookie=setCk?json[setCk].split(";")[0]:""}console.log("cookie:"+cookie);let img=json.body;let code=OcrApi.classification(img);console.log(`第${cnt+1}次验证码识别结果:${code}`);let submit_url=`${host}/index.php/ajax/verify_check?type=search&verify=${code}`;console.log(submit_url);let html=request(submit_url,{headers:{Cookie:cookie,"User-Agent":MOBILE_UA},method:"POST"});html=JSON.parse(html);if(html.msg==="ok"){console.log(`第${cnt+1}次验证码提交成功`);return cookie}else if(html.msg!=="ok"&&cnt+1>=OCR_RETRY){cookie=""}}catch(e){console.log(`第${cnt+1}次验证码提交失败:${e.message}`);if(cnt+1>=OCR_RETRY){cookie=""}}cnt+=1}return cookie}function setItem(k,v){local.set(RKEY,k,v);console.log(`规则${RKEY}设置${k} => ${v}`)}function getItem(k,v){return local.get(RKEY,k)||v}function clearItem(k){local.delete(RKEY,k)}function getHome(url){if(!url){return""}let tmp=url.split("//");url=tmp[0]+"//"+tmp[1].split("/")[0];try{url=decodeURIComponent(url)}catch(e){}return url}function buildUrl(url,obj){obj=obj||{};if(url.indexOf("?")<0){url+="?"}let param_list=[];let keys=Object.keys(obj);keys.forEach(it=>{param_list.push(it+"="+obj[it])});let prs=param_list.join("&");if(keys.length>0&&!url.endsWith("?")){url+="&"}url+=prs;return url}function require(url){eval(request(url))}function request(url,obj,ocr_flag){ocr_flag=ocr_flag||false;if(typeof obj==="undefined"||!obj||obj==={}){if(!fetch_params||!fetch_params.headers){let headers={"User-Agent":MOBILE_UA};if(rule.headers){Object.assign(headers,rule.headers)}fetch_params.headers=headers}if(!fetch_params.headers.Referer){fetch_params.headers.Referer=getHome(url)}obj=fetch_params}else{let headers=obj.headers||{};let keys=Object.keys(headers).map(it=>it.toLowerCase());if(!keys.includes("user-agent")){headers["User-Agent"]=MOBILE_UA}if(!keys.includes("referer")){headers["Referer"]=getHome(url)}obj.headers=headers}if(rule.encoding&&rule.encoding!=="utf-8"&&!ocr_flag){if(!obj.headers.hasOwnProperty("Content-Type")){obj.headers["Content-Type"]="text/html; charset="+rule.encoding}}if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="string"){let data={};obj.body.split("&").forEach(it=>{data[it.split("=")[0]]=it.split("=")[1]});obj.data=data;delete obj.body}else if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="object"){obj.data=obj.body;delete obj.body}if(!url){return obj.withHeaders?"{}":""}if(obj.toBase64){obj.buffer=2;delete obj.toBase64}console.log(JSON.stringify(obj.headers));console.log("request:"+url);let res=req(url,obj);let html=res.content||"";if(obj.withHeaders){let htmlWithHeaders=res.headers;htmlWithHeaders.body=html;return JSON.stringify(htmlWithHeaders)}else{return html}}function post(url,obj){obj.method="POST";return request(url,obj)}fetch=request;print=function(data){data=data||"";if(typeof data!=="string"){try{data=JSON.stringify(data)}catch(e){console.log("print:"+e.message)}}if(typeof data!=="string"){console.log(typeof data+":"+data.length)}else{console.log(data)}};log=print;function checkHtml(html,url,obj){if(/\?btwaf=/.test(html)){let btwaf=html.match(/btwaf(.*?)"/)[1];url=url.split("#")[0]+"?btwaf"+btwaf;html=request(url,obj)}return html}function getCode(url,obj){let html=request(url,obj);html=checkHtml(html,url,obj);return html}function getHtml(url){let obj={};if(rule.headers){obj.headers=rule.headers}let cookie=getItem(RULE_CK,"");if(cookie){if(obj.headers&&!Object.keys(obj.headers).map(it=>it.toLowerCase()).includes("cookie")){obj.headers["Cookie"]=cookie}else if(!obj.headers){obj.headers={Cookie:cookie}}}let html=getCode(url,obj);return html}function homeParse(homeObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let classes=[];if(homeObj.class_name&&homeObj.class_url){let names=homeObj.class_name.split("&");let urls=homeObj.class_url.split("&");let cnt=Math.min(names.length,urls.length);for(let i=0;i<cnt;i++){classes.push({type_id:urls[i],type_name:names[i]})}}if(homeObj.class_parse){let p=homeObj.class_parse.split(";");let _ps=parseTags.getParse(p[0]);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;MY_URL=rule.url;if(p.length>=3){try{let html=getHtml(homeObj.MY_URL);if(html){homeHtmlCache=html;let list=_pdfa(html,p[0]);if(list&&list.length>0){list.forEach((it,idex)=>{try{let name=_pdfh(it,p[1]);if(homeObj.cate_exclude&&new RegExp(homeObj.cate_exclude).test(name)){return}let url=_pd(it,p[2]);if(p.length>3&&p[3]){let exp=new RegExp(p[3]);url=url.match(exp)[1]}classes.push({type_id:url.trim(),type_name:name.trim()})}catch(e){console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`)}})}}}catch(e){console.log(e.message)}}}classes=classes.filter(it=>!homeObj.cate_exclude||!new RegExp(homeObj.cate_exclude).test(it.type_name));let resp={class:classes};if(homeObj.filter){resp.filters=homeObj.filter}console.log(JSON.stringify(resp));return JSON.stringify(resp)}function getPP(p,pn,pp,ppn){let ps=p[pn]==="*"&&pp.length>ppn?pp[ppn]:p[pn];return ps}function homeVodParse(homeVodObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];MY_URL=homeVodObj.homeUrl;console.log(MY_URL);let t1=(new Date).getTime();let p=homeVodObj.推荐;print("p:"+p);if(p==="*"&&rule.一级){p=rule.一级;homeVodObj.double=false}if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级.split(";");if(p.startsWith("js:")){const TYPE="home";var input=MY_URL;const HOST=rule.host;eval(p.replace("js:",""));d=VODS}else{p=p.split(";");if(!homeVodObj.double&&p.length<5){return"{}"}else if(homeVodObj.double&&p.length<6){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");let html=homeHtmlCache||getHtml(MY_URL);homeHtmlCache=undefined;if(is_json){html=dealJson(html)}try{console.log("double:"+homeVodObj.double);if(homeVodObj.double){let items=_pdfa(html,p0);for(let item of items){let items2=_pdfa(item,p[1]);for(let item2 of items2){try{let p2=getPP(p,2,pp,1);let title=_pdfh(item2,p2);let img="";try{let p3=getPP(p,3,pp,2);img=_pd(item2,p3)}catch(e){}let desc="";try{let p4=getPP(p,4,pp,3);desc=_pdfh(item2,p4)}catch(e){}let p5=getPP(p,5,pp,4);let links=[];for(let _p5 of p5.split("+")){let link=!homeVodObj.detailUrl?_pd(item2,_p5,MY_URL):_pdfh(item2,_p5);links.push(link)}let content;if(p.length>6&&p[6]){let p6=getPP(p,6,pp,5);content=_pdfh(item2,p6)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log("首页列表处理发生错误:"+e.message)}}}}else{let items=_pdfa(html,p0);for(let item of items){try{let p1=getPP(p,1,pp,1);let title=_pdfh(item,p1);let img="";try{let p2=getPP(p,2,pp,2);img=_pd(item,p2,MY_URL)}catch(e){}let desc="";try{let p3=getPP(p,3,pp,3);desc=_pdfh(item,p3)}catch(e){}let p4=getPP(p,4,pp,4);let links=[];for(let _p5 of p4.split("+")){let link=!homeVodObj.detailUrl?_pd(item,_p5,MY_URL):_pdfh(item,_p5);links.push(link)}let content;if(p.length>5&&p[5]){let p5=getPP(p,5,pp,5);content=_pdfh(item,p5)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){}}}}catch(e){}}let t2=(new Date).getTime();console.log("加载首页推荐耗时:"+(t2-t1)+"毫秒");return JSON.stringify({list:d})}function categoryParse(cateObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let p=cateObj.一级;if(!p||typeof p!=="string"){return"{}"}let d=[];let url=cateObj.url.replaceAll("fyclass",cateObj.tid);if(rule.filter_url){if(!/fyfilter/.test(url)){if(!url.endsWith("&")&&!rule.filter_url.startsWith("&")){url+="&"}url+=rule.filter_url}else{url=url.replace("fyfilter",rule.filter_url)}let fl=cateObj.filter?cateObj.extend:{};if(rule.filter_def&&typeof rule.filter_def==="object"){try{if(Object.keys(rule.filter_def).length>0&&rule.filter_def.hasOwnProperty(cateObj.tid)){let self_fl_def=rule.filter_def[cateObj.tid];if(self_fl_def&&typeof self_fl_def==="object"){let fl_def=JSON.parse(JSON.stringify(self_fl_def));fl=Object.assign(fl_def,fl)}}}catch(e){print("合并不同分类对应的默认筛选出错:"+e.message)}}let new_url;new_url=cheerio.jinja2(url,{fl:fl});if(/object Object/.test(new_url)){new_url=drT.renderText(url,fl)}url=new_url}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",cateObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.replaceAll("fypage",cateObj.pg)}}if(cateObj.pg===1&&url.includes("[")&&url.includes("]")){url=url.split("[")[1].split("]")[0]}else if(cateObj.pg>1&&url.includes("[")&&url.includes("]")){url=url.split("[")[0]}MY_URL=url;console.log(MY_URL);p=p.trim();const MY_CATE=cateObj.tid;if(p.startsWith("js:")){var MY_FL=cateObj.extend;const TYPE="cate";var input=MY_URL;const MY_PAGE=cateObj.pg;var desc="";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let _ps=parseTags.getParse(p[0]);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p[0].startsWith("json:");p[0]=p[0].replace(/^(jsp:|json:|jq:)/,"");try{let html=getHtml(MY_URL);if(html){if(is_json){html=dealJson(html)}let list=_pdfa(html,p[0]);list.forEach(it=>{let links=p[4].split("+").map(p4=>{return!rule.detailUrl?_pd(it,p4,MY_URL):_pdfh(it,p4)});let link=links.join("$");let vod_id=rule.detailUrl?MY_CATE+"$"+link:link;let vod_name=_pdfh(it,p[1]).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p[2],MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}d.push({vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p[3]).replace(/\n|\t/g,"").trim()})})}}catch(e){console.log(e.message)}}return d.length<1?"{}":JSON.stringify({page:parseInt(cateObj.pg),pagecount:999,limit:20,total:999,list:d})}function searchParse(searchObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];if(!searchObj.searchUrl){return"{}"}let p=searchObj.搜索==="*"&&rule.一级?rule.一级:searchObj.搜索;if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级.split(";");let url=searchObj.searchUrl.replaceAll("**",searchObj.wd).replaceAll("fypage",searchObj.pg);MY_URL=url;console.log(MY_URL);if(p.startsWith("js:")){const TYPE="search";const MY_PAGE=searchObj.pg;const KEY=searchObj.wd;var input=MY_URL;var detailUrl=rule.detailUrl||"";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");try{let html=getHtml(MY_URL);if(html){if(/系统安全验证|输入验证码/.test(html)){let cookie=verifyCode(MY_URL);if(cookie){console.log(`本次成功过验证,cookie:${cookie}`);setItem(RULE_CK,cookie)}else{console.log(`本次自动过搜索验证失败,cookie:${cookie}`)}html=getHtml(MY_URL)}if(!html.includes(searchObj.wd)){console.log("搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码");console.log(html)}if(is_json){html=dealJson(html)}console.log(JSON.stringify(html));console.log(html);let list=_pdfa(html,p0);list.forEach(it=>{let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let links=p4.split("+").map(_p4=>{return!rule.detailUrl?_pd(it,_p4,MY_URL):_pdfh(it,_p4)});let link=links.join("$");let content;if(p.length>5&&p[5]){let p5=getPP(p,5,pp,5);content=_pdfh(it,p5)}else{content=""}let vod_id=link;let vod_name=_pdfh(it,p1).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p2,MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}let ob={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p3).replace(/\n|\t/g,"").trim(),vod_content:content.replace(/\n|\t/g,"").trim()};d.push(ob)})}}catch(e){print("搜索发生错误:"+e.message);return"{}"}}return JSON.stringify({page:parseInt(searchObj.pg),pagecount:10,limit:20,total:100,list:d})}function detailParse(detailObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let orId=detailObj.orId;let vod_name="片名";let vod_pic="";let vod_id=orId;if(rule.二级==="*"){let extra=orId.split("@@");vod_name=extra.length>1?extra[1]:vod_name;vod_pic=extra.length>2?extra[2]:vod_pic}let vod={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,type_name:"类型",vod_year:"年份",vod_area:"地区",vod_remarks:"更新信息",vod_actor:"主演",vod_director:"导演",vod_content:"简介"};let p=detailObj.二级;let url=detailObj.url;let detailUrl=detailObj.detailUrl;let fyclass=detailObj.fyclass;let tab_exclude=detailObj.tab_exclude;let html=detailObj.html||"";MY_URL=url;console.log(MY_URL);if(p==="*"){vod.vod_play_from="道长在线";vod.vod_remarks=detailUrl;vod.vod_actor="没有二级,只有一级链接直接嗅探播放";vod.vod_content=MY_URL;vod.vod_play_url="嗅探播放$"+MY_URL.split("@@")[0]}else if(typeof p==="string"&&p.trim().startsWith("js:")){const TYPE="detail";var input=MY_URL;var play_url="";eval(p.trim().replace("js:",""));vod=VOD;console.log(JSON.stringify(vod))}else if(p&&typeof p==="object"){if(!html){html=getHtml(MY_URL)}let _impJQP=true;let _ps;if(p.is_json){_ps=parseTags.json;html=dealJson(html);_impJQP=false}else if(p.is_jsp){_ps=parseTags.jsp}else if(p.is_jq){_ps=parseTags.jq}else{_ps=parseTags.jq}if(_impJQP){let c$=cheerio.load(html);html={rr:c$,ele:c$("html")[0]}}_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;if(p.title){let p1=p.title.split(";");vod.vod_name=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();let type_name=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").replace(/ /g,"").trim():"";vod.type_name=type_name||vod.type_name}if(p.desc){try{let p1=p.desc.split(";");vod.vod_remarks=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();vod.vod_year=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").trim():"";vod.vod_area=p1.length>2?_pdfh(html,p1[2]).replace(/\n|\t/g,"").trim():"";vod.vod_actor=p1.length>3?_pdfh(html,p1[3]).replace(/\n|\t/g,"").trim():"";vod.vod_director=p1.length>4?_pdfh(html,p1[4]).replace(/\n|\t/g,"").trim():""}catch(e){}}if(p.content){try{let p1=p.content.split(";");vod.vod_content=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim()}catch(e){}}if(p.img){try{let p1=p.img.split(";");vod.vod_pic=_pd(html,p1[0],MY_URL)}catch(e){}}let vod_play_from="$$$";let playFrom=[];if(p.重定向&&p.重定向.startsWith("js:")){print("开始执行重定向代码:"+p.重定向);html=eval(p.重定向.replace("js:",""));if(_impJQP){let c$=cheerio.load(html);html={rr:c$,ele:c$("html")[0]}}}if(p.tabs){if(p.tabs.startsWith("js:")){print("开始执行tabs代码:"+p.tabs);if(html&&typeof html!=="string"){try{html=html.rr(html.ele).toString()}catch(e){}}var input=MY_URL;eval(p.tabs.replace("js:",""));playFrom=TABS}else{let p_tab=p.tabs.split(";")[0];let vHeader=_pdfa(html,p_tab);console.log(vHeader.length);let tab_text=p.tab_text||"body&&Text";for(let v of vHeader){let v_title=_pdfh(v,tab_text).trim();console.log(v_title);if(tab_exclude&&new RegExp(tab_exclude).test(v_title)){continue}playFrom.push(v_title)}}console.log(JSON.stringify(playFrom))}else{playFrom=["道长在线"]}vod.vod_play_from=playFrom.join(vod_play_from);let vod_play_url="$$$";let vod_tab_list=[];if(p.lists){if(p.lists.startsWith("js:")){print("开始执行lists代码:"+p.lists);if(html&&typeof html!=="string"){try{html=html.rr(html.ele).toString()}catch(e){}}var input=MY_URL;var play_url="";eval(p.lists.replace("js:",""));vod_play_url=LISTS.map(it=>it.join("#")).join(vod_play_url)}else{let list_text=p.list_text||"body&&Text";let list_url=p.list_url||"a&&href";let is_tab_js=p.tabs.trim().startsWith("js:");for(let i=0;i<playFrom.length;i++){let tab_name=playFrom[i];let tab_ext=p.tabs.split(";").length>1&&!is_tab_js?p.tabs.split(";")[1]:"";let p1=p.lists.replaceAll("#idv",tab_name).replaceAll("#id",i);tab_ext=tab_ext.replaceAll("#idv",tab_name).replaceAll("#id",i);console.log(p1);let vodList=[];try{vodList=_pdfa(html,p1);console.log("len(vodList):"+vodList.length)}catch(e){}let new_vod_list=[];let tabName=tab_ext?_pdfh(html,tab_ext):tab_name;console.log(tabName);vodList.forEach(it=>{new_vod_list.push(_pdfh(it,list_text).trim()+"$"+_pd(it,list_url,MY_URL))});let vlist=new_vod_list.join("#");vod_tab_list.push(vlist)}vod_play_url=vod_tab_list.join(vod_play_url)}}vod.vod_play_url=vod_play_url}if(!vod.vod_id){vod.vod_id=vod_id}return JSON.stringify({list:[vod]})}function tellIsJx(url){try{let is_vip=!/\.(m3u8|mp4|m4a)$/.test(url.split("?")[0])&&是否正版(url);return is_vip?1:0}catch(e){return 1}}function playParse(playObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));MY_URL=playObj.url;if(!/http/.test(MY_URL)){try{MY_URL=base64Decode(MY_URL)}catch(e){}}MY_URL=decodeURIComponent(MY_URL);var input=MY_URL;let common_play={parse:1,url:input,jx:tellIsJx(input)};let lazy_play;if(!rule.play_parse||!rule.lazy){lazy_play=common_play}else if(rule.play_parse&&rule.lazy&&typeof rule.lazy==="string"){try{let lazy_code=rule.lazy.replace("js:","").trim();print("开始执行js免嗅=>"+lazy_code);eval(lazy_code);lazy_play=typeof input==="object"?input:{parse:1,jx:tellIsJx(input),url:input}}catch(e){print("js免嗅错误:"+e.message);lazy_play=common_play}}else{lazy_play=common_play}if(Array.isArray(rule.play_json)&&rule.play_json.length>0){let web_url=lazy_play.url;for(let pjson of rule.play_json){if(pjson.re&&(pjson.re==="*"||web_url.match(new RegExp(pjson.re)))){if(pjson.json&&typeof pjson.json==="object"){let base_json=pjson.json;lazy_play=Object.assign(lazy_play,base_json);break}}}}else if(rule.play_json&&!Array.isArray(rule.play_json)){let base_json={jx:1,parse:1};lazy_play=Object.assign(lazy_play,base_json)}else if(!rule.play_json){let base_json={jx:0,parse:1};lazy_play=Object.assign(lazy_play,base_json)}console.log(JSON.stringify(lazy_play));return JSON.stringify(lazy_play)}function init(ext){console.log("init");try{if(typeof globalThis.mubanJs==="undefined"){let mubanJs=request("https://gitcode.net/qq_32394351/dr_py/-/raw/master/js/模板.js",{"User-Agent":MOBILE_UA});mubanJs=mubanJs.replace("export default","(function() {return muban;}()) // export default");globalThis.mubanJs=mubanJs}let muban=eval(globalThis.mubanJs);if(typeof ext=="object"){rule=ext}else if(typeof ext=="string"){if(ext.startsWith("http")){let js=request(ext,{method:"GET"});if(js){eval(js.replace("var rule","rule"))}}}else{eval(ext.replace("var rule","rule"))}if(rule.模板&&muban.hasOwnProperty(rule.模板)){print("继承模板:"+rule.模板);rule=Object.assign(muban[rule.模板],rule)}let rule_cate_excludes=(rule.cate_exclude||"").split("|").filter(it=>it.trim());let rule_tab_excludes=(rule.tab_exclude||"").split("|").filter(it=>it.trim());rule_cate_excludes=rule_cate_excludes.concat(CATE_EXCLUDE.split("|").filter(it=>it.trim()));rule_tab_excludes=rule_tab_excludes.concat(TAB_EXCLUDE.split("|").filter(it=>it.trim()));rule.cate_exclude=rule_cate_excludes.join("|");rule.tab_exclude=rule_tab_excludes.join("|");rule.host=(rule.host||"").rstrip("/");rule.url=rule.url||"";rule.double=rule.double||false;rule.homeUrl=rule.homeUrl||"";rule.detailUrl=rule.detailUrl||"";rule.searchUrl=rule.searchUrl||"";rule.homeUrl=rule.host&&rule.homeUrl?urljoin(rule.host,rule.homeUrl):rule.homeUrl||rule.host;rule.detailUrl=rule.host&&rule.detailUrl?urljoin(rule.host,rule.detailUrl):rule.detailUrl;if(rule.url.includes("[")&&rule.url.includes("]")){let u1=rule.url.split("[")[0];let u2=rule.url.split("[")[1].split("]")[0];rule.url=rule.host&&rule.url?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.url}else{rule.url=rule.host&&rule.url?urljoin(rule.host,rule.url):rule.url}rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,rule.searchUrl):rule.searchUrl;rule.timeout=rule.timeout||5e3;rule.encoding=rule.编码||rule.encoding||"utf-8";rule.play_json=rule.hasOwnProperty("play_json")?rule.play_json:[];if(rule.headers&&typeof rule.headers==="object"){try{let header_keys=Object.keys(rule.headers);for(let k of header_keys){if(k.toLowerCase()==="user-agent"){let v=rule.headers[k];console.log(v);if(["MOBILE_UA","PC_UA","UC_UA","IOS_UA","UA"].includes(v)){rule.headers[k]=eval(v)}}}}catch(e){console.log("处理headers发生错误:"+e.message)}}rule_fetch_params={headers:rule.headers||false,timeout:rule.timeout,encoding:rule.encoding};oheaders=rule.headers||{};RKEY=typeof key!=="undefined"&&key?key:"drpy_"+(rule.title||rule.host);init_test()}catch(e){console.log("init_test发生错误:"+e.message)}}let homeHtmlCache=undefined;function home(filter){console.log("home");let homeObj={filter:rule.filter||false,MY_URL:rule.homeUrl,class_name:rule.class_name||"",class_url:rule.class_url||"",class_parse:rule.class_parse||"",cate_exclude:rule.cate_exclude};return homeParse(homeObj)}function homeVod(params){console.log("homeVod");let homeVodObj={"推荐":rule.推荐,double:rule.double,homeUrl:rule.homeUrl,detailUrl:rule.detailUrl};return homeVodParse(homeVodObj)}function category(tid,pg,filter,extend){let cateObj={url:rule.url,"一级":rule.一级,tid:tid,pg:parseInt(pg),filter:filter,extend:extend};return categoryParse(cateObj)}function detail(vod_url){let orId=vod_url;let fyclass="";if(vod_url.indexOf("$")>-1){let tmp=vod_url.split("$");fyclass=tmp[0];vod_url=tmp[1]}let detailUrl=vod_url.split("@@")[0];let url;if(!detailUrl.startsWith("http")&&!detailUrl.includes("/")){url=rule.detailUrl.replaceAll("fyid",detailUrl).replaceAll("fyclass",fyclass)}else if(detailUrl.includes("/")){url=urljoin(rule.homeUrl,detailUrl)}else{url=detailUrl}let detailObj={orId:orId,url:url,"二级":rule.二级,detailUrl:detailUrl,fyclass:fyclass,tab_exclude:rule.tab_exclude};return detailParse(detailObj)}function play(flag,id,flags){let playObj={url:id,flag:flag,flags:flags};return playParse(playObj)}function search(wd,quick){let searchObj={searchUrl:rule.searchUrl,"搜索":rule.搜索,wd:wd,pg:1,quick:quick};return searchParse(searchObj)}function DRPY(){return{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search}}export default{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,DRPY:DRPY};
\ No newline at end of file
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# File : 荐片筛选.py
# Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------
# Date : 2022/10/22
def getFilters():
fyyear = '全部&2022&2021&2020&2019&2018&2017&2016'.split('&')
fyyeark = '0&101&118&16&7&2&3&22'.split('&')
fysort = '热门&评分&更新'.split('&')
fysortK = 'hot&rating&update'.split('&')
fyclass='0&1&2&3&4'
fy_dict = {}
for i in fyclass.split('&'):
fy_dict[i] = [{
'key': 'year',
'name': '年代',
'value': [{'n':fyyear[j],'v':fyyeark[j]} for j in range(len(fyyear))]
},{
'key': 'sort',
'name': '排序',
'value': [{'n':fysort[k],'v':fysortK[k]} for k in range(len(fysort))]
}]
print(fy_dict)
if __name__ == '__main__':
getFilters()
......@@ -47,6 +47,12 @@
[dockerfile教程](https://blog.csdn.net/qq_46158060/article/details/125718218)
[获取本地设备信息](https://blog.csdn.net/cui_yonghua/article/details/125508991)
[获取本地设备信息](https://m.jb51.net/article/140716.htm)
###### 2022/10/22
- [X] 新增几个直播源
- [X] 优化没有二级的情况自动带入一级图片和标题 @@分割
- [X] 修复 JRKAN直播 二级智能拼接链接不正常的问题
- [X] 学生录像一级用js重写(urljoin没毛病.网址结构有问题,只能如此了,仅支持js1)
- [X] 完善荐片源的筛选
###### 2022/10/21
- [X] 源新增了play_json属性和与之对应的哔哩直播,jrs看直播等源
- [X] 修复俊版无法搜索问题(还需要壳子彻底解决console.log函数问题,无法打印大数据)
......
{
"classes": [
{
"type_name": "搞笑",
"type_id": "搞笑"
},
{
"type_name": "鬼畜",
"type_id": "鬼畜"
},
{
"type_name": "Sports",
"type_id": "球星"
},
{
"type_name": "戏曲",
"type_id": "戏曲"
},
{
"type_name": "演唱会",
"type_id": "演唱会"
},
{
"type_name": "动物世界",
"type_id": "动物世界"
},
{
"type_name": "假窗白噪音",
"type_id": "窗白噪音"
},
{
"type_name": "相声小品",
"type_id": "相声小品"
},
{
"type_name": "儿童",
"type_id": "儿童"
}
],
"filter": {
"搞笑": [
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"鬼畜": [
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"球星": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "球星"
},
{
"n": "梅西",
"v": "梅西"
},
{
"n": "C罗",
"v": "C罗"
},
{
"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": "皇马"
},
{
"n": "巴萨",
"v": "巴萨"
},
{
"n": "巴黎圣日耳曼",
"v": "巴黎圣日耳曼"
},
{
"n": "曼联",
"v": "曼联"
},
{
"n": "曼城",
"v": "曼城"
},
{
"n": "NBA",
"v": "NBA"
},
{
"n": "詹姆斯",
"v": "詹姆斯"
},
{
"n": "库里",
"v": "库里"
},
{
"n": "杜兰特",
"v": "杜兰特"
},
{
"n": "UFC",
"v": "UFC"
},
{
"n": "斯诺克",
"v": "斯诺克"
},
{
"n": "网球",
"v": "网球"
},
{
"n": "F1",
"v": "F1"
},
{
"n": "高尔夫",
"v": "高尔夫"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"相声小品": [
{
"key": "tid",
"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": "宋小宝"
},
{
"n": "赵丽蓉",
"v": "赵丽蓉"
},
{
"n": "郭达",
"v": "郭达"
},
{
"n": "潘长江",
"v": "潘长江"
},
{
"n": "郭冬临",
"v": "郭冬临"
},
{
"n": "严顺开",
"v": "严顺开"
},
{
"n": "文松",
"v": "文松"
},
{
"n": "开心麻花",
"v": "开心麻花"
},
{
"n": "屌丝男士",
"v": "屌丝男士"
},
{
"n": "喜剧综艺",
"v": "喜剧综艺"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"儿童": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "儿童"
},
{
"n": "教育",
"v": "儿童教育"
},
{
"n": "歌曲",
"v": "儿童歌曲"
},
{
"n": "舞蹈",
"v": "儿童舞蹈"
},
{
"n": "成语故事",
"v": "儿童成语故事"
},
{
"n": "音乐",
"v": "儿童音乐"
},
{
"n": "儿童MV",
"v": "儿童MV"
},
{
"n": "贝乐虎",
"v": "贝乐虎"
},
{
"n": "宝宝巴士",
"v": "宝宝巴士"
},
{
"n": "儿童好声音",
"v": "儿童好声音"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"动物世界": [
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"戏曲": [
{
"key": "tid",
"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": "武安平调"
},
{
"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": "高甲戏"
},
{
"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": "藏剧"
},
{
"n": "皮影戏",
"v": "皮影戏"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"窗白噪音": [
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"演唱会": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "演唱会"
},
{
"n": "周杰伦",
"v": "周杰伦"
},
{
"n": "陈奕迅",
"v": "陈奕迅"
},
{
"n": "Beyond",
"v": "Beyond"
},
{
"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": "洛天依"
},
{
"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": "杨千嬅"
},
{
"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": "谭咏麟"
},
{
"n": "凤凰传奇",
"v": "凤凰传奇"
},
{
"n": "容祖儿",
"v": "容祖儿"
},
{
"n": "周传雄",
"v": "周传雄"
},
{
"n": "SHE",
"v": "SHE"
},
{
"n": "苏打绿",
"v": "苏打绿"
},
{
"n": "五月天",
"v": "五月天"
},
{
"n": "张国荣",
"v": "张国荣"
},
{
"n": "梅艳芳",
"v": "梅艳芳"
},
{
"n": "孙燕姿",
"v": "孙燕姿"
},
{
"n": "李健",
"v": "李健"
},
{
"n": "华晨宇",
"v": "华晨宇"
},
{
"n": "袁娅维",
"v": "袁娅维"
},
{
"n": "大张伟",
"v": "大张伟"
},
{
"n": "TFBOYS",
"v": "TFBOYS"
},
{
"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": "李圣杰"
},
{
"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": "崔健"
},
{
"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": "谢霆锋"
},
{
"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": "By2",
"v": "By2"
},
{
"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": "金池"
},
{
"n": "屠洪刚",
"v": "屠洪刚"
},
{
"n": "戴荃",
"v": "戴荃"
},
{
"n": "郭采洁",
"v": "郭采洁"
},
{
"n": "罗志祥",
"v": "罗志祥"
},
{
"n": "王力宏",
"v": "王力宏"
},
{
"n": "林肯公园",
"v": "林肯公园"
},
{
"n": "迈克尔杰克逊",
"v": "迈克尔杰克逊"
},
{
"n": "泰勒·斯威夫特",
"v": "泰勒·斯威夫特"
},
{
"n": "阿黛尔",
"v": "阿黛尔"
},
{
"n": "BIGBANG",
"v": "BIGBANG"
},
{
"n": "LadyGaga",
"v": "LadyGaga"
},
{
"n": "贾斯丁比伯",
"v": "贾斯丁比伯"
},
{
"n": "中岛美雪",
"v": "中岛美雪"
},
{
"n": "仓木麻衣",
"v": "仓木麻衣"
},
{
"n": "后街男孩",
"v": "后街男孩"
},
{
"n": "布兰妮",
"v": "布兰妮"
},
{
"n": "夜愿乐队",
"v": "夜愿乐队"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
]
}
}
\ No newline at end of file
ewogICJzaXRlcyI6IFsKICAgIHsKICAgICAgImtleSI6ICJaamRyIiwKICAgICAgIm5hbWUiOiAi6L+95Ymn6L6+5Lq6IiwKICAgICAgInR5cGUiOiAzLAogICAgICAiYXBpIjogImNzcF9aamRyIiwKICAgICAgInNlYXJjaGFibGUiOiAxLAogICAgICAicXVpY2tTZWFyY2giOiAxLAogICAgICAiZmlsdGVyYWJsZSI6IDEKICAgIH0sCiAgICB7CiAgICAgICJrZXkiOiAiQXVldGUiLAogICAgICAibmFtZSI6ICLlpaXnibkiLAogICAgICAidHlwZSI6IDMsCiAgICAgICJhcGkiOiAiY3NwX0F1ZXRlIiwKICAgICAgInNlYXJjaGFibGUiOiAxLAogICAgICAicXVpY2tTZWFyY2giOiAxLAogICAgICAiZmlsdGVyYWJsZSI6IDEKICAgIH0sCiAgICB7CiAgICAgICJrZXkiOiAiQmlsaSIsCiAgICAgICJuYW1lIjogIuWTlOWTqSIsCiAgICAgICJ0eXBlIjogMywKICAgICAgImFwaSI6ICJjc3BfQmlsaSIsCiAgICAgICJzZWFyY2hhYmxlIjogMSwKICAgICAgInF1aWNrU2VhcmNoIjogMSwKICAgICAgImZpbHRlcmFibGUiOiAxLAogICAgICAiZXh0IjogImh0dHA6Ly9ob21lLmp1bmRpZS50b3A6ODEvcmF5L2pzb24vYmlsaS5qc29uIgogICAgfSwKICAgIHsKICAgICAgImtleSI6ICJDb2tlbXYiLAogICAgICAibmFtZSI6ICLlj6/kuZAiLAogICAgICAidHlwZSI6IDMsCiAgICAgICJhcGkiOiAiY3NwX0Nva2VtdiIsCiAgICAgICJzZWFyY2hhYmxlIjogMSwKICAgICAgInF1aWNrU2VhcmNoIjogMSwKICAgICAgImZpbHRlcmFibGUiOiAxCiAgICB9LAogICAgewogICAgICAia2V5IjogIkN6c2FwcCIsCiAgICAgICJuYW1lIjogIuWOgumVvyIsCiAgICAgICJ0eXBlIjogMywKICAgICAgImFwaSI6ICJjc3BfQ3pzYXBwIiwKICAgICAgInNlYXJjaGFibGUiOiAxLAogICAgICAicXVpY2tTZWFyY2giOiAxLAogICAgICAiZmlsdGVyYWJsZSI6IDEKICAgIH0sCiAgICB7CiAgICAgICJrZXkiOiAiR2l0Y2FmZSIsCiAgICAgICJuYW1lIjogIue6uOadoSIsCiAgICAgICJ0eXBlIjogMywKICAgICAgImFwaSI6ICJjc3BfR2l0Y2FmZSIsCiAgICAgICJzZWFyY2hhYmxlIjogMSwKICAgICAgInF1aWNrU2VhcmNoIjogMSwKICAgICAgImZpbHRlcmFibGUiOiAxLAogICAgICAiZXh0IjogImh0dHA6Ly/liJrliJoubGl2ZS9qc29uL2FsaXRva2VuLmpzb24iCiAgICB9LAogICAgewogICAgICAia2V5IjogIklmMTAxIiwKICAgICAgIm5hbWUiOiAiMTAxIiwKICAgICAgInR5cGUiOiAzLAogICAgICAiYXBpIjogImNzcF9JZjEwMSIsCiAgICAgICJzZWFyY2hhYmxlIjogMSwKICAgICAgInF1aWNrU2VhcmNoIjogMSwKICAgICAgImZpbHRlcmFibGUiOiAxCiAgICB9LAogICAgewogICAgICAia2V5IjogIklLYW4iLAogICAgICAibmFtZSI6ICLniLHnnIsiLAogICAgICAidHlwZSI6IDMsCiAgICAgICJhcGkiOiAiY3NwX0lLYW4iLAogICAgICAic2VhcmNoYWJsZSI6IDEsCiAgICAgICJxdWlja1NlYXJjaCI6IDEsCiAgICAgICJmaWx0ZXJhYmxlIjogMQogICAgfSwKICAgIHsKICAgICAgImtleSI6ICJLdWFpa2FuIiwKICAgICAgIm5hbWUiOiAi5b+r55yLIiwKICAgICAgInR5cGUiOiAzLAogICAgICAiYXBpIjogImNzcF9LdWFpa2FuIiwKICAgICAgInNlYXJjaGFibGUiOiAxLAogICAgICAicXVpY2tTZWFyY2giOiAxLAogICAgICAiZmlsdGVyYWJsZSI6IDEKICAgIH0sCiAgICB7CiAgICAgICJrZXkiOiAiS3VueXUiLAogICAgICAibmFtZSI6ICLkuIPkuIMiLAogICAgICAidHlwZSI6IDMsCiAgICAgICJhcGkiOiAiY3NwX0t1bnl1NzciLAogICAgICAic2VhcmNoYWJsZSI6IDEsCiAgICAgICJxdWlja1NlYXJjaCI6IDEsCiAgICAgICJmaWx0ZXJhYmxlIjogMQogICAgfSwKICAgIHsKICAgICAgImtleSI6ICJMaWIiLAogICAgICAibmFtZSI6ICJMaWJ2aW8iLAogICAgICAidHlwZSI6IDMsCiAgICAgICJhcGkiOiAiY3NwX0xpYiIsCiAgICAgICJzZWFyY2hhYmxlIjogMSwKICAgICAgInF1aWNrU2VhcmNoIjogMSwKICAgICAgImZpbHRlcmFibGUiOiAxCiAgICB9LAogICAgewogICAgICAia2V5IjogIkxpdGVBcHBsZSIsCiAgICAgICJuYW1lIjogIuiLueaenCIsCiAgICAgICJ0eXBlIjogMywKICAgICAgImFwaSI6ICJjc3BfTGl0ZUFwcGxlIiwKICAgICAgInNlYXJjaGFibGUiOiAxLAogICAgICAicXVpY2tTZWFyY2giOiAxLAogICAgICAiZmlsdGVyYWJsZSI6IDEKICAgIH0sCiAgICB7CiAgICAgICJrZXkiOiAiU21keXkiLAogICAgICAibmFtZSI6ICLnpZ7pqawiLAogICAgICAidHlwZSI6IDMsCiAgICAgICJhcGkiOiAiY3NwX1NtZHl5IiwKICAgICAgInNlYXJjaGFibGUiOiAxLAogICAgICAicXVpY2tTZWFyY2giOiAxLAogICAgICAiZmlsdGVyYWJsZSI6IDEKICAgIH0sCiAgICB7CiAgICAgICJrZXkiOiAiU1AzNjAiLAogICAgICAibmFtZSI6ICJTUDM2MCIsCiAgICAgICJ0eXBlIjogMywKICAgICAgImFwaSI6ICJjc3BfU1AzNjAiLAogICAgICAic2VhcmNoYWJsZSI6IDEsCiAgICAgICJxdWlja1NlYXJjaCI6IDEsCiAgICAgICJmaWx0ZXJhYmxlIjogMQogICAgfSwKICAgIHsKICAgICAgImtleSI6ICJYaWFvaCIsCiAgICAgICJuYW1lIjogIlhpYW9oIiwKICAgICAgInR5cGUiOiAzLAogICAgICAiYXBpIjogImNzcF9YaWFvaCIsCiAgICAgICJzZWFyY2hhYmxlIjogMSwKICAgICAgInF1aWNrU2VhcmNoIjogMSwKICAgICAgImZpbHRlcmFibGUiOiAxCiAgICB9LAogICAgewogICAgICAia2V5IjogIlpoYW96eSIsCiAgICAgICJuYW1lIjogIui1hOa6kCIsCiAgICAgICJ0eXBlIjogMywKICAgICAgImFwaSI6ICJjc3BfWmhhb3p5IiwKICAgICAgInNlYXJjaGFibGUiOiAxLAogICAgICAicXVpY2tTZWFyY2giOiAxLAogICAgICAiZmlsdGVyYWJsZSI6IDEsCiAgICAgICJleHQiOiAiaHR0cDovL+WImuWImi5saXZlL2pzb24vYWxpdG9rZW4uanNvbiIKICAgIH0sCiAgICB7CiAgICAgICJrZXkiOiAiQWxpUFMiLAogICAgICAibmFtZSI6ICLnm5jmkJwiLAogICAgICAidHlwZSI6IDMsCiAgICAgICJhcGkiOiAiY3NwX0FsaVBTIiwKICAgICAgInNlYXJjaGFibGUiOiAxLAogICAgICAicXVpY2tTZWFyY2giOiAxLAogICAgICAiZmlsdGVyYWJsZSI6IDEsCiAgICAgICJleHQiOiAiaHR0cDovL+WImuWImi5saXZlL2pzb24vYWxpdG9rZW4uanNvbiIKICAgIH0sCiAgICB7CiAgICAgICJrZXkiOiAiWnh6aiIsCiAgICAgICJuYW1lIjogIuWcqOe6vyIsCiAgICAgICJ0eXBlIjogMywKICAgICAgImFwaSI6ICJjc3BfWnh6aiIsCiAgICAgICJzZWFyY2hhYmxlIjogMSwKICAgICAgInF1aWNrU2VhcmNoIjogMSwKICAgICAgImZpbHRlcmFibGUiOiAxCiAgICB9LAogICAgewogICAgICAia2V5IjogInB1c2hfYWdlbnQiLAogICAgICAibmFtZSI6ICJQdXNoQWdlbnQiLAogICAgICAidHlwZSI6IDMsCiAgICAgICJhcGkiOiAiY3NwX1B1c2hBZ2VudCIsCiAgICAgICJzZWFyY2hhYmxlIjogMSwKICAgICAgInF1aWNrU2VhcmNoIjogMSwKICAgICAgImZpbHRlcmFibGUiOiAxLAogICAgICAiZXh0IjogImh0dHA6Ly/liJrliJoubGl2ZS9qc29uL2FsaXRva2VuLmpzb24iCiAgICB9CiAgXSwKICAibGl2ZXMiOiBbCiAgICB7CiAgICAgICJncm91cCI6ICJyZWRpcmVjdCIsCiAgICAgICJjaGFubmVscyI6IFsKICAgICAgICB7CiAgICAgICAgICAibmFtZSI6ICJyZWRpcmVjdCIsCiAgICAgICAgICAidXJscyI6IFsKICAgICAgICAgICAgInByb3h5Oi8vZG89bGl2ZSZ0eXBlPXR4dCZleHQ9YUhSMGNEb3ZMMmh2YldVdWFuVnVaR2xsTG5SdmNEbzRNUzl5WVhrdmRIWnNhWFpsTG5SNGRBPT0iCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICBdCiAgICB9CiAgXSwKICAicGFyc2VzIjogWwogICAgewogICAgICAibmFtZSI6ICLop6PmnpDogZrlkIgiLAogICAgICAidHlwZSI6IDMsCiAgICAgICJ1cmwiOiAiRGVtbyIKICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIkpzb27lubblj5EiLAogICAgICAidHlwZSI6IDIsCiAgICAgICJ1cmwiOiAiUGFyYWxsZWwiCiAgICB9LAogICAgewogICAgICAibmFtZSI6ICJKc29u6L2u6K+iIiwKICAgICAgInR5cGUiOiAyLAogICAgICAidXJsIjogIlNlcXVlbmNlIgogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAi5Y+v6YGH5LiN5Y+v5rGCIiwKICAgICAgInR5cGUiOiAxLAogICAgICAidXJsIjogImh0dHA6Ly9uZXdqaWV4aS5nb3RrYS50b3Ava2V5dTMucGhwP3VybD0iLAogICAgICAiZXh0IjogewogICAgICAgICJmbGFnIjogWwogICAgICAgICAgInFxIiwKICAgICAgICAgICLohb7orq8iLAogICAgICAgICAgInFpeWkiLAogICAgICAgICAgIueIseWlh+iJuiIsCiAgICAgICAgICAi5aWH6Im6IiwKICAgICAgICAgICJ5b3VrdSIsCiAgICAgICAgICAi5LyY6YW3IiwKICAgICAgICAgICJtZ3R2IiwKICAgICAgICAgICLoipLmnpwiLAogICAgICAgICAgImxldHYiLAogICAgICAgICAgIuS5kOinhiIsCiAgICAgICAgICAicHB0diIsCiAgICAgICAgICAiUFBUViIsCiAgICAgICAgICAic29odSIsCiAgICAgICAgICAiYmlsaWJpbGkiLAogICAgICAgICAgIuWTlOWTqeWTlOWTqSIsCiAgICAgICAgICAi5ZOU5ZOpIgogICAgICAgIF0sCiAgICAgICAgImhlYWRlciI6IHsKICAgICAgICAgICJVc2VyLUFnZW50IjogIm9raHR0cC80LjEuMCIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogImJvenJjIiwKICAgICAgInR5cGUiOiAwLAogICAgICAidXJsIjogImh0dHBzOi8vanguYm96cmMuY29tOjQ0MzMvcGxheWVyLz91cmw9IiwKICAgICAgImV4dCI6IHsKICAgICAgICAiZmxhZyI6IFsKICAgICAgICAgICJxcSIsCiAgICAgICAgICAi6IW+6K6vIiwKICAgICAgICAgICJxaXlpIiwKICAgICAgICAgICLniLHlpYfoiboiLAogICAgICAgICAgIuWlh+iJuiIsCiAgICAgICAgICAieW91a3UiLAogICAgICAgICAgIuS8mOmFtyIsCiAgICAgICAgICAibWd0diIsCiAgICAgICAgICAi6IqS5p6cIiwKICAgICAgICAgICJsZXR2IiwKICAgICAgICAgICJsZXNoaSIsCiAgICAgICAgICAiTFMiLAogICAgICAgICAgInBwdHYiLAogICAgICAgICAgIlBQVFYiLAogICAgICAgICAgInNvaHUiLAogICAgICAgICAgImJpbGliaWxpIiwKICAgICAgICAgICLlk5Tlk6nlk5Tlk6kiLAogICAgICAgICAgIuWTlOWTqSIKICAgICAgICBdLAogICAgICAgICJoZWFkZXIiOiB7CiAgICAgICAgICAiVXNlci1BZ2VudCI6ICIiCiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICJyeDIiLAogICAgICAidHlwZSI6IDEsCiAgICAgICJ1cmwiOiAiaHR0cDovL3J4angua3Vhbmp2LmNvbS9hbGxtM3U4LnBocD91cmw9IgogICAgfQogIF0sCiAgImZsYWdzIjogWwogICAgInlvdWt1IiwKICAgICJxcSIsCiAgICAiaXFpeWkiLAogICAgInFpeWkiLAogICAgImxldHYiLAogICAgInNvaHUiLAogICAgInR1ZG91IiwKICAgICJwcHR2IiwKICAgICJtZ3R2IiwKICAgICJ3YXN1IiwKICAgICJiaWxpYmlsaSIsCiAgICAiY3NtM3U4IgogIF0sCiAgImlqayI6IFsKICAgIHsKICAgICAgImdyb3VwIjogIui9r+ino+eggSIsCiAgICAgICJvcHRpb25zIjogWwogICAgICAgIHsKICAgICAgICAgICJjYXRlZ29yeSI6IDQsCiAgICAgICAgICAibmFtZSI6ICJvcGVuc2xlcyIsCiAgICAgICAgICAidmFsdWUiOiAiMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJjYXRlZ29yeSI6IDQsCiAgICAgICAgICAibmFtZSI6ICJvdmVybGF5LWZvcm1hdCIsCiAgICAgICAgICAidmFsdWUiOiAiODQyMjI1MjM0IgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogNCwKICAgICAgICAgICJuYW1lIjogImZyYW1lZHJvcCIsCiAgICAgICAgICAidmFsdWUiOiAiMSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJjYXRlZ29yeSI6IDQsCiAgICAgICAgICAibmFtZSI6ICJzb3VuZHRvdWNoIiwKICAgICAgICAgICJ2YWx1ZSI6ICIxIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogNCwKICAgICAgICAgICJuYW1lIjogInN0YXJ0LW9uLXByZXBhcmVkIiwKICAgICAgICAgICJ2YWx1ZSI6ICIxIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogMSwKICAgICAgICAgICJuYW1lIjogImh0dHAtZGV0ZWN0LXJhbmdldXBwb3J0IiwKICAgICAgICAgICJ2YWx1ZSI6ICIwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogMSwKICAgICAgICAgICJuYW1lIjogImZmbGFncyIsCiAgICAgICAgICAidmFsdWUiOiAiZmFzdHNlZWsiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiAyLAogICAgICAgICAgIm5hbWUiOiAic2tpcF9sb29wX2ZpbHRlciIsCiAgICAgICAgICAidmFsdWUiOiAiNDgiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiA0LAogICAgICAgICAgIm5hbWUiOiAicmVjb25uZWN0IiwKICAgICAgICAgICJ2YWx1ZSI6ICIxIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogNCwKICAgICAgICAgICJuYW1lIjogImVuYWJsZS1hY2N1cmF0ZWVlayIsCiAgICAgICAgICAidmFsdWUiOiAiMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJjYXRlZ29yeSI6IDQsCiAgICAgICAgICAibmFtZSI6ICJtZWRpYWNvZGVjIiwKICAgICAgICAgICJ2YWx1ZSI6ICIwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogNCwKICAgICAgICAgICJuYW1lIjogIm1lZGlhY29kZWMtYXV0by1yb3RhdGUiLAogICAgICAgICAgInZhbHVlIjogIjAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiA0LAogICAgICAgICAgIm5hbWUiOiAibWVkaWFjb2RlYy1oYW5kbGUtcmVzb2x1dGlvbi1jaGFuZ2UiLAogICAgICAgICAgInZhbHVlIjogIjAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiA0LAogICAgICAgICAgIm5hbWUiOiAibWVkaWFjb2RlYy1oZXZjIiwKICAgICAgICAgICJ2YWx1ZSI6ICIwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogMSwKICAgICAgICAgICJuYW1lIjogImRuc19jYWNoZV90aW1lb3V0IiwKICAgICAgICAgICJ2YWx1ZSI6ICI2MDAwMDAwMDAiCiAgICAgICAgfQogICAgICBdCiAgICB9LAogICAgewogICAgICAiZ3JvdXAiOiAi56Gs6Kej56CBIiwKICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogNCwKICAgICAgICAgICJuYW1lIjogIm9wZW5zbGVzIiwKICAgICAgICAgICJ2YWx1ZSI6ICIwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogNCwKICAgICAgICAgICJuYW1lIjogIm92ZXJsYXktZm9ybWF0IiwKICAgICAgICAgICJ2YWx1ZSI6ICI4NDIyMjUyMzQiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiA0LAogICAgICAgICAgIm5hbWUiOiAiZnJhbWVkcm9wIiwKICAgICAgICAgICJ2YWx1ZSI6ICIxIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogNCwKICAgICAgICAgICJuYW1lIjogInNvdW5kdG91Y2giLAogICAgICAgICAgInZhbHVlIjogIjEiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiA0LAogICAgICAgICAgIm5hbWUiOiAic3RhcnQtb24tcHJlcGFyZWQiLAogICAgICAgICAgInZhbHVlIjogIjEiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiAxLAogICAgICAgICAgIm5hbWUiOiAiaHR0cC1kZXRlY3QtcmFuZ2V1cHBvcnQiLAogICAgICAgICAgInZhbHVlIjogIjAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiAxLAogICAgICAgICAgIm5hbWUiOiAiZmZsYWdzIiwKICAgICAgICAgICJ2YWx1ZSI6ICJmYXN0c2VlayIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJjYXRlZ29yeSI6IDIsCiAgICAgICAgICAibmFtZSI6ICJza2lwX2xvb3BfZmlsdGVyIiwKICAgICAgICAgICJ2YWx1ZSI6ICI0OCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJjYXRlZ29yeSI6IDQsCiAgICAgICAgICAibmFtZSI6ICJyZWNvbm5lY3QiLAogICAgICAgICAgInZhbHVlIjogIjEiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiA0LAogICAgICAgICAgIm5hbWUiOiAiZW5hYmxlLWFjY3VyYXRlZWVrIiwKICAgICAgICAgICJ2YWx1ZSI6ICIwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogNCwKICAgICAgICAgICJuYW1lIjogIm1lZGlhY29kZWMiLAogICAgICAgICAgInZhbHVlIjogIjEiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiA0LAogICAgICAgICAgIm5hbWUiOiAibWVkaWFjb2RlYy1hdXRvLXJvdGF0ZSIsCiAgICAgICAgICAidmFsdWUiOiAiMSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJjYXRlZ29yeSI6IDQsCiAgICAgICAgICAibmFtZSI6ICJtZWRpYWNvZGVjLWhhbmRsZS1yZXNvbHV0aW9uLWNoYW5nZSIsCiAgICAgICAgICAidmFsdWUiOiAiMSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJjYXRlZ29yeSI6IDQsCiAgICAgICAgICAibmFtZSI6ICJtZWRpYWNvZGVjLWhldmMiLAogICAgICAgICAgInZhbHVlIjogIjEiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiAxLAogICAgICAgICAgIm5hbWUiOiAiZG5zX2NhY2hlX3RpbWVvdXQiLAogICAgICAgICAgInZhbHVlIjogIjYwMDAwMDAwMCIKICAgICAgICB9CiAgICAgIF0KICAgIH0KICBdLAogICJhZHMiOiBbCiAgICAibWltZy4wYzFxMGwuY24iLAogICAgInd3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbSIsCiAgICAid3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tIiwKICAgICJtYy51c2lobmJjcS5jbiIsCiAgICAibWcuZzFtbTNkLmNuIiwKICAgICJtc2NzLnN2YWV1emguY24iLAogICAgImNuenouaGh0dG0udG9wIiwKICAgICJ0cC52aW51eGhvbWUuY29tIiwKICAgICJjbnp6Lm1tc3RhdC5jb20iLAogICAgInd3dy5iYWlodWlsbHEuY29tIiwKICAgICJzMjMuY256ei5jb20iLAogICAgInozLmNuenouY29tIiwKICAgICJjLmNuenouY29tIiwKICAgICJzdGoudjF2by50b3AiLAogICAgInoxMi5jbnp6LmNvbSIsCiAgICAiaW1nLm1vc2Zsb3dlci5jbiIsCiAgICAidGlwcy5nYW1ldnZpcC5jb20iLAogICAgImVod2UueWhkdG5zLmNvbSIsCiAgICAieGRuLmNxcWMzLmNvbSIsCiAgICAid3d3LmppeHVua3l5LmNuIiwKICAgICJzcC5jaGVtYWNpZC5jbiIsCiAgICAiaG0uYmFpZHUuY29tIiwKICAgICJzOS5jbnp6LmNvbSIsCiAgICAiejYuY256ei5jb20iLAogICAgInVtLmNhdnVjLmNvbSIsCiAgICAibWF2Lm1hdnV6LmNvbSIsCiAgICAid29md2suYW9pZGYzLmNvbSIsCiAgICAiejUuY256ei5jb20iLAogICAgInhjLmh1YmVpamllc2hpa2ouY24iLAogICAgInRqLnRpYW53ZW5odS5jb20iLAogICAgInhnLmdhcnM1Ny5jbiIsCiAgICAiay5qaW54aXV6aGlsdi5jb20iLAogICAgImNkbi5ib290Y3NzLmNvbSIsCiAgICAicHBsLnh1bnpodW8xMjMuY29tIiwKICAgICJ4b21rLmppYW5nanVubWgudG9wIiwKICAgICJpbWcueHVuemh1bzEyMy5jb20iLAogICAgInoxLmNuenouY29tIiwKICAgICJzMTMuY256ei5jb20iLAogICAgInhnLmh1YXRhaXNhbmdhby5jbiIsCiAgICAiejcuY256ei5jb20iLAogICAgInhnLmh1YXRhaXNhbmdhby5jbiIsCiAgICAiejIuY256ei5jb20iLAogICAgInM5Ni5jbnp6LmNvbSIsCiAgICAicTExLmNuenouY29tIiwKICAgICJ0aHkuZGFjZWRzZmEuY24iLAogICAgInhnLndoc2Jwdy5jbiIsCiAgICAiczE5LmNuenouY29tIiwKICAgICJ6OC5jbnp6LmNvbSIsCiAgICAiczQuY256ei5jb20iLAogICAgImY1dy5hczEyZGYudG9wIiwKICAgICJhZTAxLmFsaWNkbi5jb20iLAogICAgInd3dy45MjQyNC5jbiIsCiAgICAiay53dWRlamlhLmNvbSIsCiAgICAidml2b3ZpcC5tbXN6eGMudG9wIiwKICAgICJxaXUueGl4aXFpdS5jb20iLAogICAgImNkbmpzLmhuZmVueHVuLmNvbSIsCiAgICAiY21zLnFkd2dodC5jb20iCiAgXSwKICAic3BpZGVyIjogImh0dHBzOi8vZ2l0ZWEuY29tL1RhbmdzYW45OTk5OS9Ob1dhci9yYXcvYnJhbmNoL21haW4vY3VzdG9tX3NwaWRlci50eHQiCn0=
\ No newline at end of file
......@@ -58,7 +58,9 @@ class jsoup:
ret = re.search('url\((.*?)\)',ret,re.M|re.S).groups()[0]
except:
pass
if ret and add_url and option in ['url','src','href','data-original','data-src']:
pd_list = 'url|src|href|data-original|data-src|data-play'.split('|')
# pd_list = 'url|src|href|data-original|data-src'.split('|')
if ret and add_url and option in pd_list:
if 'http' in ret:
ret = ret[ret.find('http'):]
else:
......@@ -91,6 +93,7 @@ class jsoup:
# 节点转字符串
# print(str(etree.tostring(result[0], pretty_print=True), 'utf-8'))
# res = [item for item in result.items()]
# print(res)
res = [item.outerHtml() for item in result.items()] # 这个才是对的!!str() item str(etree.tostring 统统错误
# res = [str(item) for item in result.items()]
# res = [str(etree.tostring(item, pretty_print=True), 'utf-8') for item in result]
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册