diff --git a/base/files/custom_spider_tang.jar b/base/files/custom_spider_tang.jar new file mode 100644 index 0000000000000000000000000000000000000000..b240b4ffcda30f82ef7117a72f2098786cbb86cc Binary files /dev/null and b/base/files/custom_spider_tang.jar differ diff --git a/base/rules.db b/base/rules.db index 9ae427adf60628c62864ef184f7cbe0521f1ef3b..2d613f3ed6d740fcce83058614d644825c023c2e 100644 Binary files a/base/rules.db and b/base/rules.db differ diff --git a/controllers/cms.py b/controllers/cms.py index b2515684e09069b511c1c308fa473aaffafe18d2..704cb61c7965d6bf37f174a01e501399cb385a8f 100644 --- a/controllers/cms.py +++ b/controllers/cms.py @@ -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 }) diff --git a/js/Fun4K.js b/js/Fun4K.js new file mode 100644 index 0000000000000000000000000000000000000000..d86497cb9d68f8c280adf3270ed09dfabc3f89aa --- /dev/null +++ b/js/Fun4K.js @@ -0,0 +1,13 @@ +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 diff --git "a/js/JRKAN\347\233\264\346\222\255.js" "b/js/JRKAN\347\233\264\346\222\255.js" new file mode 100644 index 0000000000000000000000000000000000000000..1f6a19ee49b8d11c8f926fd8e6f0435653e073ac --- /dev/null +++ "b/js/JRKAN\347\233\264\346\222\255.js" @@ -0,0 +1,25 @@ +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 diff --git "a/js/RP\345\275\261\350\247\206.js" "b/js/RP\345\275\261\350\247\206.js" index 54f63c2ca9ad1761049fec78afb751f1f209790f..c481f39365b03241b9e68b319faa8070934cd02b 100644 --- "a/js/RP\345\275\261\350\247\206.js" +++ "b/js/RP\345\275\261\350\247\206.js" @@ -1,21 +1,16 @@ - -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 diff --git a/js/version.txt b/js/version.txt index c92a3b3813e99a923c71d2eaec65840624dd601f..f9b7d5dfb0fc7d4d194dc8b63bd97ac906fb8cd0 100644 --- a/js/version.txt +++ b/js/version.txt @@ -1 +1 @@ -3.9.14beta2 \ No newline at end of file +3.9.15 \ No newline at end of file diff --git "a/js/\345\206\262TMTV[\351\243\236].js" "b/js/\345\206\262TMTV[\351\243\236].js" index ec699f8ad6e4f3a44d1d126aef26da8d83187e97..d010b0f4b86a064b0d571f764ae37993290731d5 100644 --- "a/js/\345\206\262TMTV[\351\243\236].js" +++ "b/js/\345\206\262TMTV[\351\243\236].js" @@ -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 diff --git "a/js/\345\255\246\347\224\237\347\220\203\350\265\233\345\275\225\345\203\217[js1].js" "b/js/\345\255\246\347\224\237\347\220\203\350\265\233\345\275\225\345\203\217[js1].js" new file mode 100644 index 0000000000000000000000000000000000000000..83088c95855017a9ff5e89980cb45b9e717d84c4 --- /dev/null +++ "b/js/\345\255\246\347\224\237\347\220\203\350\265\233\345\275\225\345\203\217[js1].js" @@ -0,0 +1,24 @@ +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 diff --git "a/js/\346\234\211\345\243\260\345\260\217\350\257\264\345\220\247.js" "b/js/\346\234\211\345\243\260\345\260\217\350\257\264\345\220\247.js" index 1e79705c02602534ad98172d69ce36a2331c045f..c7bbffa493755cb8517b7213ebc8b379c81a7554 100644 --- "a/js/\346\234\211\345\243\260\345\260\217\350\257\264\345\220\247.js" +++ "b/js/\346\234\211\345\243\260\345\260\217\350\257\264\345\220\247.js" @@ -1,6 +1,6 @@ var rule = { title:'有声小说吧', - 编码:'gb2312', + 编码:'gb18030', host:'http://m.ysxs8.vip', url:'/downlist/fyclass_fypage.html', searchUrl:'/search.asp?page=fypage&searchword=**&searchtype=-1', diff --git "a/js/\350\215\220\347\211\207.js" "b/js/\350\215\220\347\211\207.js" index 0ca80a652640952ba78ed65ed681da6cc4274353..3ea86a51b00b8f9f9bf29ecb5d44a1fc4d4c1aef 100644 --- "a/js/\350\215\220\347\211\207.js" +++ "b/js/\350\215\220\347\211\207.js" @@ -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' diff --git "a/js/\351\205\267\345\245\207MV.js" "b/js/\351\205\267\345\245\207MV.js" new file mode 100644 index 0000000000000000000000000000000000000000..7e9509e38119775b224e42b9919898b0424e94ba --- /dev/null +++ "b/js/\351\205\267\345\245\207MV.js" @@ -0,0 +1,22 @@ +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;*;*;*;*', +} diff --git a/libs/drpy.js b/libs/drpy.js index 5ac68909b8bda4114b18c496e78412bf3d5fe267..e578bb284f3744a895e686a5ae818077e7d52800 100644 --- a/libs/drpy.js +++ b/libs/drpy.js @@ -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); diff --git a/libs/drpy.min.js b/libs/drpy.min.js index f0e03f077f254d0976cac3610c19433716062738..09d9fa5718f2f3bf51d45a25ba0771d520dfe52a 100644 --- a/libs/drpy.min.js +++ b/libs/drpy.min.js @@ -1 +1 @@ -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;ithis.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-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])&&iit.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=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;i1&&!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;ithis.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-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])&&iit.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=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;i1&&!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 diff --git "a/py/\350\215\220\347\211\207\347\255\233\351\200\211.py" "b/py/\350\215\220\347\211\207\347\255\233\351\200\211.py" new file mode 100644 index 0000000000000000000000000000000000000000..b7ef7959e0f8124ca70e9a567d87f9c2524a0385 --- /dev/null +++ "b/py/\350\215\220\347\211\207\347\255\233\351\200\211.py" @@ -0,0 +1,28 @@ +#!/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() diff --git a/readme.md b/readme.md index 374d6d339c00210e0a806369979bfea5f569287e..9df9dc8c3b8f69436a65b0b7c87f0f32822ab406 100644 --- a/readme.md +++ b/readme.md @@ -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函数问题,无法打印大数据) diff --git a/txt/json/bili.json b/txt/json/bili.json new file mode 100644 index 0000000000000000000000000000000000000000..fbcaabf93a0facbff7916be1f0cdb4aa3cce18eb --- /dev/null +++ b/txt/json/bili.json @@ -0,0 +1,1440 @@ +{ + "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 diff --git a/txt/json/tang.json b/txt/json/tang.json new file mode 100644 index 0000000000000000000000000000000000000000..2e6b0dd090026c2a1483e5b6a7cf1bb52fafa599 --- /dev/null +++ b/txt/json/tang.json @@ -0,0 +1 @@ +ewogICJzaXRlcyI6IFsKICAgIHsKICAgICAgImtleSI6ICJaamRyIiwKICAgICAgIm5hbWUiOiAi6L+95Ymn6L6+5Lq6IiwKICAgICAgInR5cGUiOiAzLAogICAgICAiYXBpIjogImNzcF9aamRyIiwKICAgICAgInNlYXJjaGFibGUiOiAxLAogICAgICAicXVpY2tTZWFyY2giOiAxLAogICAgICAiZmlsdGVyYWJsZSI6IDEKICAgIH0sCiAgICB7CiAgICAgICJrZXkiOiAiQXVldGUiLAogICAgICAibmFtZSI6ICLlpaXnibkiLAogICAgICAidHlwZSI6IDMsCiAgICAgICJhcGkiOiAiY3NwX0F1ZXRlIiwKICAgICAgInNlYXJjaGFibGUiOiAxLAogICAgICAicXVpY2tTZWFyY2giOiAxLAogICAgICAiZmlsdGVyYWJsZSI6IDEKICAgIH0sCiAgICB7CiAgICAgICJrZXkiOiAiQmlsaSIsCiAgICAgICJuYW1lIjogIuWTlOWTqSIsCiAgICAgICJ0eXBlIjogMywKICAgICAgImFwaSI6ICJjc3BfQmlsaSIsCiAgICAgICJzZWFyY2hhYmxlIjogMSwKICAgICAgInF1aWNrU2VhcmNoIjogMSwKICAgICAgImZpbHRlcmFibGUiOiAxLAogICAgICAiZXh0IjogImh0dHA6Ly9ob21lLmp1bmRpZS50b3A6ODEvcmF5L2pzb24vYmlsaS5qc29uIgogICAgfSwKICAgIHsKICAgICAgImtleSI6ICJDb2tlbXYiLAogICAgICAibmFtZSI6ICLlj6/kuZAiLAogICAgICAidHlwZSI6IDMsCiAgICAgICJhcGkiOiAiY3NwX0Nva2VtdiIsCiAgICAgICJzZWFyY2hhYmxlIjogMSwKICAgICAgInF1aWNrU2VhcmNoIjogMSwKICAgICAgImZpbHRlcmFibGUiOiAxCiAgICB9LAogICAgewogICAgICAia2V5IjogIkN6c2FwcCIsCiAgICAgICJuYW1lIjogIuWOgumVvyIsCiAgICAgICJ0eXBlIjogMywKICAgICAgImFwaSI6ICJjc3BfQ3pzYXBwIiwKICAgICAgInNlYXJjaGFibGUiOiAxLAogICAgICAicXVpY2tTZWFyY2giOiAxLAogICAgICAiZmlsdGVyYWJsZSI6IDEKICAgIH0sCiAgICB7CiAgICAgICJrZXkiOiAiR2l0Y2FmZSIsCiAgICAgICJuYW1lIjogIue6uOadoSIsCiAgICAgICJ0eXBlIjogMywKICAgICAgImFwaSI6ICJjc3BfR2l0Y2FmZSIsCiAgICAgICJzZWFyY2hhYmxlIjogMSwKICAgICAgInF1aWNrU2VhcmNoIjogMSwKICAgICAgImZpbHRlcmFibGUiOiAxLAogICAgICAiZXh0IjogImh0dHA6Ly/liJrliJoubGl2ZS9qc29uL2FsaXRva2VuLmpzb24iCiAgICB9LAogICAgewogICAgICAia2V5IjogIklmMTAxIiwKICAgICAgIm5hbWUiOiAiMTAxIiwKICAgICAgInR5cGUiOiAzLAogICAgICAiYXBpIjogImNzcF9JZjEwMSIsCiAgICAgICJzZWFyY2hhYmxlIjogMSwKICAgICAgInF1aWNrU2VhcmNoIjogMSwKICAgICAgImZpbHRlcmFibGUiOiAxCiAgICB9LAogICAgewogICAgICAia2V5IjogIklLYW4iLAogICAgICAibmFtZSI6ICLniLHnnIsiLAogICAgICAidHlwZSI6IDMsCiAgICAgICJhcGkiOiAiY3NwX0lLYW4iLAogICAgICAic2VhcmNoYWJsZSI6IDEsCiAgICAgICJxdWlja1NlYXJjaCI6IDEsCiAgICAgICJmaWx0ZXJhYmxlIjogMQogICAgfSwKICAgIHsKICAgICAgImtleSI6ICJLdWFpa2FuIiwKICAgICAgIm5hbWUiOiAi5b+r55yLIiwKICAgICAgInR5cGUiOiAzLAogICAgICAiYXBpIjogImNzcF9LdWFpa2FuIiwKICAgICAgInNlYXJjaGFibGUiOiAxLAogICAgICAicXVpY2tTZWFyY2giOiAxLAogICAgICAiZmlsdGVyYWJsZSI6IDEKICAgIH0sCiAgICB7CiAgICAgICJrZXkiOiAiS3VueXUiLAogICAgICAibmFtZSI6ICLkuIPkuIMiLAogICAgICAidHlwZSI6IDMsCiAgICAgICJhcGkiOiAiY3NwX0t1bnl1NzciLAogICAgICAic2VhcmNoYWJsZSI6IDEsCiAgICAgICJxdWlja1NlYXJjaCI6IDEsCiAgICAgICJmaWx0ZXJhYmxlIjogMQogICAgfSwKICAgIHsKICAgICAgImtleSI6ICJMaWIiLAogICAgICAibmFtZSI6ICJMaWJ2aW8iLAogICAgICAidHlwZSI6IDMsCiAgICAgICJhcGkiOiAiY3NwX0xpYiIsCiAgICAgICJzZWFyY2hhYmxlIjogMSwKICAgICAgInF1aWNrU2VhcmNoIjogMSwKICAgICAgImZpbHRlcmFibGUiOiAxCiAgICB9LAogICAgewogICAgICAia2V5IjogIkxpdGVBcHBsZSIsCiAgICAgICJuYW1lIjogIuiLueaenCIsCiAgICAgICJ0eXBlIjogMywKICAgICAgImFwaSI6ICJjc3BfTGl0ZUFwcGxlIiwKICAgICAgInNlYXJjaGFibGUiOiAxLAogICAgICAicXVpY2tTZWFyY2giOiAxLAogICAgICAiZmlsdGVyYWJsZSI6IDEKICAgIH0sCiAgICB7CiAgICAgICJrZXkiOiAiU21keXkiLAogICAgICAibmFtZSI6ICLnpZ7pqawiLAogICAgICAidHlwZSI6IDMsCiAgICAgICJhcGkiOiAiY3NwX1NtZHl5IiwKICAgICAgInNlYXJjaGFibGUiOiAxLAogICAgICAicXVpY2tTZWFyY2giOiAxLAogICAgICAiZmlsdGVyYWJsZSI6IDEKICAgIH0sCiAgICB7CiAgICAgICJrZXkiOiAiU1AzNjAiLAogICAgICAibmFtZSI6ICJTUDM2MCIsCiAgICAgICJ0eXBlIjogMywKICAgICAgImFwaSI6ICJjc3BfU1AzNjAiLAogICAgICAic2VhcmNoYWJsZSI6IDEsCiAgICAgICJxdWlja1NlYXJjaCI6IDEsCiAgICAgICJmaWx0ZXJhYmxlIjogMQogICAgfSwKICAgIHsKICAgICAgImtleSI6ICJYaWFvaCIsCiAgICAgICJuYW1lIjogIlhpYW9oIiwKICAgICAgInR5cGUiOiAzLAogICAgICAiYXBpIjogImNzcF9YaWFvaCIsCiAgICAgICJzZWFyY2hhYmxlIjogMSwKICAgICAgInF1aWNrU2VhcmNoIjogMSwKICAgICAgImZpbHRlcmFibGUiOiAxCiAgICB9LAogICAgewogICAgICAia2V5IjogIlpoYW96eSIsCiAgICAgICJuYW1lIjogIui1hOa6kCIsCiAgICAgICJ0eXBlIjogMywKICAgICAgImFwaSI6ICJjc3BfWmhhb3p5IiwKICAgICAgInNlYXJjaGFibGUiOiAxLAogICAgICAicXVpY2tTZWFyY2giOiAxLAogICAgICAiZmlsdGVyYWJsZSI6IDEsCiAgICAgICJleHQiOiAiaHR0cDovL+WImuWImi5saXZlL2pzb24vYWxpdG9rZW4uanNvbiIKICAgIH0sCiAgICB7CiAgICAgICJrZXkiOiAiQWxpUFMiLAogICAgICAibmFtZSI6ICLnm5jmkJwiLAogICAgICAidHlwZSI6IDMsCiAgICAgICJhcGkiOiAiY3NwX0FsaVBTIiwKICAgICAgInNlYXJjaGFibGUiOiAxLAogICAgICAicXVpY2tTZWFyY2giOiAxLAogICAgICAiZmlsdGVyYWJsZSI6IDEsCiAgICAgICJleHQiOiAiaHR0cDovL+WImuWImi5saXZlL2pzb24vYWxpdG9rZW4uanNvbiIKICAgIH0sCiAgICB7CiAgICAgICJrZXkiOiAiWnh6aiIsCiAgICAgICJuYW1lIjogIuWcqOe6vyIsCiAgICAgICJ0eXBlIjogMywKICAgICAgImFwaSI6ICJjc3BfWnh6aiIsCiAgICAgICJzZWFyY2hhYmxlIjogMSwKICAgICAgInF1aWNrU2VhcmNoIjogMSwKICAgICAgImZpbHRlcmFibGUiOiAxCiAgICB9LAogICAgewogICAgICAia2V5IjogInB1c2hfYWdlbnQiLAogICAgICAibmFtZSI6ICJQdXNoQWdlbnQiLAogICAgICAidHlwZSI6IDMsCiAgICAgICJhcGkiOiAiY3NwX1B1c2hBZ2VudCIsCiAgICAgICJzZWFyY2hhYmxlIjogMSwKICAgICAgInF1aWNrU2VhcmNoIjogMSwKICAgICAgImZpbHRlcmFibGUiOiAxLAogICAgICAiZXh0IjogImh0dHA6Ly/liJrliJoubGl2ZS9qc29uL2FsaXRva2VuLmpzb24iCiAgICB9CiAgXSwKICAibGl2ZXMiOiBbCiAgICB7CiAgICAgICJncm91cCI6ICJyZWRpcmVjdCIsCiAgICAgICJjaGFubmVscyI6IFsKICAgICAgICB7CiAgICAgICAgICAibmFtZSI6ICJyZWRpcmVjdCIsCiAgICAgICAgICAidXJscyI6IFsKICAgICAgICAgICAgInByb3h5Oi8vZG89bGl2ZSZ0eXBlPXR4dCZleHQ9YUhSMGNEb3ZMMmh2YldVdWFuVnVaR2xsTG5SdmNEbzRNUzl5WVhrdmRIWnNhWFpsTG5SNGRBPT0iCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICBdCiAgICB9CiAgXSwKICAicGFyc2VzIjogWwogICAgewogICAgICAibmFtZSI6ICLop6PmnpDogZrlkIgiLAogICAgICAidHlwZSI6IDMsCiAgICAgICJ1cmwiOiAiRGVtbyIKICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIkpzb27lubblj5EiLAogICAgICAidHlwZSI6IDIsCiAgICAgICJ1cmwiOiAiUGFyYWxsZWwiCiAgICB9LAogICAgewogICAgICAibmFtZSI6ICJKc29u6L2u6K+iIiwKICAgICAgInR5cGUiOiAyLAogICAgICAidXJsIjogIlNlcXVlbmNlIgogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAi5Y+v6YGH5LiN5Y+v5rGCIiwKICAgICAgInR5cGUiOiAxLAogICAgICAidXJsIjogImh0dHA6Ly9uZXdqaWV4aS5nb3RrYS50b3Ava2V5dTMucGhwP3VybD0iLAogICAgICAiZXh0IjogewogICAgICAgICJmbGFnIjogWwogICAgICAgICAgInFxIiwKICAgICAgICAgICLohb7orq8iLAogICAgICAgICAgInFpeWkiLAogICAgICAgICAgIueIseWlh+iJuiIsCiAgICAgICAgICAi5aWH6Im6IiwKICAgICAgICAgICJ5b3VrdSIsCiAgICAgICAgICAi5LyY6YW3IiwKICAgICAgICAgICJtZ3R2IiwKICAgICAgICAgICLoipLmnpwiLAogICAgICAgICAgImxldHYiLAogICAgICAgICAgIuS5kOinhiIsCiAgICAgICAgICAicHB0diIsCiAgICAgICAgICAiUFBUViIsCiAgICAgICAgICAic29odSIsCiAgICAgICAgICAiYmlsaWJpbGkiLAogICAgICAgICAgIuWTlOWTqeWTlOWTqSIsCiAgICAgICAgICAi5ZOU5ZOpIgogICAgICAgIF0sCiAgICAgICAgImhlYWRlciI6IHsKICAgICAgICAgICJVc2VyLUFnZW50IjogIm9raHR0cC80LjEuMCIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogImJvenJjIiwKICAgICAgInR5cGUiOiAwLAogICAgICAidXJsIjogImh0dHBzOi8vanguYm96cmMuY29tOjQ0MzMvcGxheWVyLz91cmw9IiwKICAgICAgImV4dCI6IHsKICAgICAgICAiZmxhZyI6IFsKICAgICAgICAgICJxcSIsCiAgICAgICAgICAi6IW+6K6vIiwKICAgICAgICAgICJxaXlpIiwKICAgICAgICAgICLniLHlpYfoiboiLAogICAgICAgICAgIuWlh+iJuiIsCiAgICAgICAgICAieW91a3UiLAogICAgICAgICAgIuS8mOmFtyIsCiAgICAgICAgICAibWd0diIsCiAgICAgICAgICAi6IqS5p6cIiwKICAgICAgICAgICJsZXR2IiwKICAgICAgICAgICJsZXNoaSIsCiAgICAgICAgICAiTFMiLAogICAgICAgICAgInBwdHYiLAogICAgICAgICAgIlBQVFYiLAogICAgICAgICAgInNvaHUiLAogICAgICAgICAgImJpbGliaWxpIiwKICAgICAgICAgICLlk5Tlk6nlk5Tlk6kiLAogICAgICAgICAgIuWTlOWTqSIKICAgICAgICBdLAogICAgICAgICJoZWFkZXIiOiB7CiAgICAgICAgICAiVXNlci1BZ2VudCI6ICIiCiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICJyeDIiLAogICAgICAidHlwZSI6IDEsCiAgICAgICJ1cmwiOiAiaHR0cDovL3J4angua3Vhbmp2LmNvbS9hbGxtM3U4LnBocD91cmw9IgogICAgfQogIF0sCiAgImZsYWdzIjogWwogICAgInlvdWt1IiwKICAgICJxcSIsCiAgICAiaXFpeWkiLAogICAgInFpeWkiLAogICAgImxldHYiLAogICAgInNvaHUiLAogICAgInR1ZG91IiwKICAgICJwcHR2IiwKICAgICJtZ3R2IiwKICAgICJ3YXN1IiwKICAgICJiaWxpYmlsaSIsCiAgICAiY3NtM3U4IgogIF0sCiAgImlqayI6IFsKICAgIHsKICAgICAgImdyb3VwIjogIui9r+ino+eggSIsCiAgICAgICJvcHRpb25zIjogWwogICAgICAgIHsKICAgICAgICAgICJjYXRlZ29yeSI6IDQsCiAgICAgICAgICAibmFtZSI6ICJvcGVuc2xlcyIsCiAgICAgICAgICAidmFsdWUiOiAiMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJjYXRlZ29yeSI6IDQsCiAgICAgICAgICAibmFtZSI6ICJvdmVybGF5LWZvcm1hdCIsCiAgICAgICAgICAidmFsdWUiOiAiODQyMjI1MjM0IgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogNCwKICAgICAgICAgICJuYW1lIjogImZyYW1lZHJvcCIsCiAgICAgICAgICAidmFsdWUiOiAiMSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJjYXRlZ29yeSI6IDQsCiAgICAgICAgICAibmFtZSI6ICJzb3VuZHRvdWNoIiwKICAgICAgICAgICJ2YWx1ZSI6ICIxIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogNCwKICAgICAgICAgICJuYW1lIjogInN0YXJ0LW9uLXByZXBhcmVkIiwKICAgICAgICAgICJ2YWx1ZSI6ICIxIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogMSwKICAgICAgICAgICJuYW1lIjogImh0dHAtZGV0ZWN0LXJhbmdldXBwb3J0IiwKICAgICAgICAgICJ2YWx1ZSI6ICIwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogMSwKICAgICAgICAgICJuYW1lIjogImZmbGFncyIsCiAgICAgICAgICAidmFsdWUiOiAiZmFzdHNlZWsiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiAyLAogICAgICAgICAgIm5hbWUiOiAic2tpcF9sb29wX2ZpbHRlciIsCiAgICAgICAgICAidmFsdWUiOiAiNDgiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiA0LAogICAgICAgICAgIm5hbWUiOiAicmVjb25uZWN0IiwKICAgICAgICAgICJ2YWx1ZSI6ICIxIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogNCwKICAgICAgICAgICJuYW1lIjogImVuYWJsZS1hY2N1cmF0ZWVlayIsCiAgICAgICAgICAidmFsdWUiOiAiMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJjYXRlZ29yeSI6IDQsCiAgICAgICAgICAibmFtZSI6ICJtZWRpYWNvZGVjIiwKICAgICAgICAgICJ2YWx1ZSI6ICIwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogNCwKICAgICAgICAgICJuYW1lIjogIm1lZGlhY29kZWMtYXV0by1yb3RhdGUiLAogICAgICAgICAgInZhbHVlIjogIjAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiA0LAogICAgICAgICAgIm5hbWUiOiAibWVkaWFjb2RlYy1oYW5kbGUtcmVzb2x1dGlvbi1jaGFuZ2UiLAogICAgICAgICAgInZhbHVlIjogIjAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiA0LAogICAgICAgICAgIm5hbWUiOiAibWVkaWFjb2RlYy1oZXZjIiwKICAgICAgICAgICJ2YWx1ZSI6ICIwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogMSwKICAgICAgICAgICJuYW1lIjogImRuc19jYWNoZV90aW1lb3V0IiwKICAgICAgICAgICJ2YWx1ZSI6ICI2MDAwMDAwMDAiCiAgICAgICAgfQogICAgICBdCiAgICB9LAogICAgewogICAgICAiZ3JvdXAiOiAi56Gs6Kej56CBIiwKICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogNCwKICAgICAgICAgICJuYW1lIjogIm9wZW5zbGVzIiwKICAgICAgICAgICJ2YWx1ZSI6ICIwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogNCwKICAgICAgICAgICJuYW1lIjogIm92ZXJsYXktZm9ybWF0IiwKICAgICAgICAgICJ2YWx1ZSI6ICI4NDIyMjUyMzQiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiA0LAogICAgICAgICAgIm5hbWUiOiAiZnJhbWVkcm9wIiwKICAgICAgICAgICJ2YWx1ZSI6ICIxIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogNCwKICAgICAgICAgICJuYW1lIjogInNvdW5kdG91Y2giLAogICAgICAgICAgInZhbHVlIjogIjEiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiA0LAogICAgICAgICAgIm5hbWUiOiAic3RhcnQtb24tcHJlcGFyZWQiLAogICAgICAgICAgInZhbHVlIjogIjEiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiAxLAogICAgICAgICAgIm5hbWUiOiAiaHR0cC1kZXRlY3QtcmFuZ2V1cHBvcnQiLAogICAgICAgICAgInZhbHVlIjogIjAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiAxLAogICAgICAgICAgIm5hbWUiOiAiZmZsYWdzIiwKICAgICAgICAgICJ2YWx1ZSI6ICJmYXN0c2VlayIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJjYXRlZ29yeSI6IDIsCiAgICAgICAgICAibmFtZSI6ICJza2lwX2xvb3BfZmlsdGVyIiwKICAgICAgICAgICJ2YWx1ZSI6ICI0OCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJjYXRlZ29yeSI6IDQsCiAgICAgICAgICAibmFtZSI6ICJyZWNvbm5lY3QiLAogICAgICAgICAgInZhbHVlIjogIjEiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiA0LAogICAgICAgICAgIm5hbWUiOiAiZW5hYmxlLWFjY3VyYXRlZWVrIiwKICAgICAgICAgICJ2YWx1ZSI6ICIwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNhdGVnb3J5IjogNCwKICAgICAgICAgICJuYW1lIjogIm1lZGlhY29kZWMiLAogICAgICAgICAgInZhbHVlIjogIjEiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiA0LAogICAgICAgICAgIm5hbWUiOiAibWVkaWFjb2RlYy1hdXRvLXJvdGF0ZSIsCiAgICAgICAgICAidmFsdWUiOiAiMSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJjYXRlZ29yeSI6IDQsCiAgICAgICAgICAibmFtZSI6ICJtZWRpYWNvZGVjLWhhbmRsZS1yZXNvbHV0aW9uLWNoYW5nZSIsCiAgICAgICAgICAidmFsdWUiOiAiMSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJjYXRlZ29yeSI6IDQsCiAgICAgICAgICAibmFtZSI6ICJtZWRpYWNvZGVjLWhldmMiLAogICAgICAgICAgInZhbHVlIjogIjEiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY2F0ZWdvcnkiOiAxLAogICAgICAgICAgIm5hbWUiOiAiZG5zX2NhY2hlX3RpbWVvdXQiLAogICAgICAgICAgInZhbHVlIjogIjYwMDAwMDAwMCIKICAgICAgICB9CiAgICAgIF0KICAgIH0KICBdLAogICJhZHMiOiBbCiAgICAibWltZy4wYzFxMGwuY24iLAogICAgInd3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbSIsCiAgICAid3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tIiwKICAgICJtYy51c2lobmJjcS5jbiIsCiAgICAibWcuZzFtbTNkLmNuIiwKICAgICJtc2NzLnN2YWV1emguY24iLAogICAgImNuenouaGh0dG0udG9wIiwKICAgICJ0cC52aW51eGhvbWUuY29tIiwKICAgICJjbnp6Lm1tc3RhdC5jb20iLAogICAgInd3dy5iYWlodWlsbHEuY29tIiwKICAgICJzMjMuY256ei5jb20iLAogICAgInozLmNuenouY29tIiwKICAgICJjLmNuenouY29tIiwKICAgICJzdGoudjF2by50b3AiLAogICAgInoxMi5jbnp6LmNvbSIsCiAgICAiaW1nLm1vc2Zsb3dlci5jbiIsCiAgICAidGlwcy5nYW1ldnZpcC5jb20iLAogICAgImVod2UueWhkdG5zLmNvbSIsCiAgICAieGRuLmNxcWMzLmNvbSIsCiAgICAid3d3LmppeHVua3l5LmNuIiwKICAgICJzcC5jaGVtYWNpZC5jbiIsCiAgICAiaG0uYmFpZHUuY29tIiwKICAgICJzOS5jbnp6LmNvbSIsCiAgICAiejYuY256ei5jb20iLAogICAgInVtLmNhdnVjLmNvbSIsCiAgICAibWF2Lm1hdnV6LmNvbSIsCiAgICAid29md2suYW9pZGYzLmNvbSIsCiAgICAiejUuY256ei5jb20iLAogICAgInhjLmh1YmVpamllc2hpa2ouY24iLAogICAgInRqLnRpYW53ZW5odS5jb20iLAogICAgInhnLmdhcnM1Ny5jbiIsCiAgICAiay5qaW54aXV6aGlsdi5jb20iLAogICAgImNkbi5ib290Y3NzLmNvbSIsCiAgICAicHBsLnh1bnpodW8xMjMuY29tIiwKICAgICJ4b21rLmppYW5nanVubWgudG9wIiwKICAgICJpbWcueHVuemh1bzEyMy5jb20iLAogICAgInoxLmNuenouY29tIiwKICAgICJzMTMuY256ei5jb20iLAogICAgInhnLmh1YXRhaXNhbmdhby5jbiIsCiAgICAiejcuY256ei5jb20iLAogICAgInhnLmh1YXRhaXNhbmdhby5jbiIsCiAgICAiejIuY256ei5jb20iLAogICAgInM5Ni5jbnp6LmNvbSIsCiAgICAicTExLmNuenouY29tIiwKICAgICJ0aHkuZGFjZWRzZmEuY24iLAogICAgInhnLndoc2Jwdy5jbiIsCiAgICAiczE5LmNuenouY29tIiwKICAgICJ6OC5jbnp6LmNvbSIsCiAgICAiczQuY256ei5jb20iLAogICAgImY1dy5hczEyZGYudG9wIiwKICAgICJhZTAxLmFsaWNkbi5jb20iLAogICAgInd3dy45MjQyNC5jbiIsCiAgICAiay53dWRlamlhLmNvbSIsCiAgICAidml2b3ZpcC5tbXN6eGMudG9wIiwKICAgICJxaXUueGl4aXFpdS5jb20iLAogICAgImNkbmpzLmhuZmVueHVuLmNvbSIsCiAgICAiY21zLnFkd2dodC5jb20iCiAgXSwKICAic3BpZGVyIjogImh0dHBzOi8vZ2l0ZWEuY29tL1RhbmdzYW45OTk5OS9Ob1dhci9yYXcvYnJhbmNoL21haW4vY3VzdG9tX3NwaWRlci50eHQiCn0= \ No newline at end of file diff --git a/utils/htmlParser.py b/utils/htmlParser.py index 09bda878f7c4729782ba3c0145dc0affdb497e9f..ee96e67756c0a047255a2358f7d0c4c28c409006 100644 --- a/utils/htmlParser.py +++ b/utils/htmlParser.py @@ -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]