From 37ce0a323abd2c9d471e0491c0eeaac42249b953 Mon Sep 17 00:00:00 2001 From: hjdhnx Date: Thu, 8 Sep 2022 14:58:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=9D=E8=AF=95=E5=A2=9E=E5=8A=A0=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E8=87=AA=E5=8A=A8=E8=BF=87=E5=AE=9D=E5=A1=94=E9=AA=8C?= =?UTF-8?q?=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/cms.py | 43 ++++++++++++------ ...07\347\217\215\345\274\202\345\205\275.js" | 3 +- libs/pre.js | 19 ++++++++ models/rules.db | Bin 40960 -> 40960 bytes ...07\350\211\272\344\270\200\347\272\247.js" | 3 +- 5 files changed, 53 insertions(+), 15 deletions(-) diff --git a/controllers/cms.py b/controllers/cms.py index 7ff72e1..4cb5b2c 100644 --- a/controllers/cms.py +++ b/controllers/cms.py @@ -3,6 +3,7 @@ # File : cms.py # Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------ # Date : 2022/8/25 +import json import requests import re @@ -301,6 +302,25 @@ class CMS: else: return '' + def checkHtml(self,r): + r.encoding = self.encoding + html = r.text + if html.find('?btwaf=') > -1: + btwaf = re.search('btwaf(.*?)"',html,re.M|re.I).groups()[0] + url = r.url.split('#')[0]+'?btwaf'+btwaf + # print(f'需要过宝塔验证:{url}') + cookies_dict = requests.utils.dict_from_cookiejar(r.cookies) + cookie_str = ';'.join([f'{k}={cookies_dict[k]}' for k in cookies_dict]) + self.headers['cookie'] = cookie_str + r = requests.get(url, headers=self.headers, timeout=self.timeout) + r.encoding = self.encoding + html = r.text + if html.find('?btwaf=') < 0: + self.saveCookie(cookie_str) + + # print(html) + return html + def saveParse(self, play_url,real_url): if not self.db: msg = '未提供数据库连接' @@ -367,8 +387,7 @@ class CMS: else: new_classes = [] r = requests.get(self.homeUrl, headers=self.headers, timeout=self.timeout) - r.encoding = self.encoding - html = r.text + html = self.checkHtml(r) # print(html) # print(self.headers) if self.class_parse and not has_cache: @@ -558,10 +577,9 @@ class CMS: items = [] try: r = requests.get(url, headers=self.headers, timeout=self.timeout) - r.encoding = self.encoding - print(r.url) - # html = r.text - html = r.json() if is_json else r.text + html = self.checkHtml(r) + if is_json: + html = json.loads(html) # print(html) items = pdfa(html,p[0].replace('json:','',1)) except: @@ -657,10 +675,9 @@ class CMS: obj = {} vod_name = '' r = requests.get(url, headers=self.headers, timeout=self.timeout) - r.encoding = self.encoding - # html = r.text - html = r.json() if is_json else r.text - # print(html) + html = self.checkHtml(r) + if is_json: + html = json.loads(html) if p.get('title'): p1 = p['title'].split(';') vod_name = pdfh(html,p1[0]).replace('\n',' ') @@ -808,9 +825,9 @@ class CMS: videos = [] try: r = requests.get(url, headers=self.headers,timeout=self.timeout) - r.encoding = self.encoding - # html = r.text - html = r.json() if is_json else r.text + html = self.checkHtml(r) + if is_json: + html = json.loads(html) # print(html) if not is_json and html.find('输入验证码') > -1: cookie = verifyCode(url,self.headers,self.timeout,self.retry_count,self.ocr_api) diff --git "a/js/\345\245\207\347\217\215\345\274\202\345\205\275.js" "b/js/\345\245\207\347\217\215\345\274\202\345\205\275.js" index ecededc..73aede6 100644 --- "a/js/\345\245\207\347\217\215\345\274\202\345\205\275.js" +++ "b/js/\345\245\207\347\217\215\345\274\202\345\205\275.js" @@ -21,7 +21,8 @@ var rule = { lazy:'js:input="https://cache.json.icu/home/api?type=ys&uid=292796&key=fnoryABDEFJNPQV269&url="+input.split("?")[0];log(input);let html=JSON.parse(request(input));log(html);input=html.url||input', // 推荐:'.list_item;img&&alt;img&&src;a&&Text;a&&data-float', // 一级:'json:.data.list;.name;.imageUrl;.latestOrder;.albumId', - 一级:'js:let d=[];if(cateID==="16"){input=input.replace("channel_id=16","channel_id=1").split("three_category_id")[0];input+="three_category_id=27401"}else if(cateID==="5"){input=input.replace("data_type=1","data_type=2")}let html=fetch(input,fetch_params);let json=JSON.parse(html);if(json.code==="A00003"){fetch_params.headers["user-agent"]=PC_UA;json=JSON.parse(fetch(input,fetch_params))}json.data.list.forEach(function(data){if(data.channelId===1){desc=data.hasOwnProperty("score")?data.score+"分\\t":""}else if(data.channelId===2||data.channelId===4){if(data.latestOrder===data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"集全"}else{if(data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"/"+data.videoCount+"集"}else{desc="更新至 "+data.latestOrder+"集"}}}else if(data.channelId===6){desc=data.period+"期"}else if(data.channelId===5){desc=data.focus}else{if(data.latestOrder){desc="更新至 第"+data.latestOrder+"期"}else if(data.period){desc=data.period}else{desc=data.focus}}url=cateID+"$"+data.albumId;d.push({url:url,title:data.name,desc:desc,pic_url:data.imageUrl.replace(".jpg","_390_520.jpg?caplist=jpg,webp")})});setResult(d);', + 一级:'js:let d=[];if(cateID==="16"){input=input.replace("channel_id=16","channel_id=1").split("three_category_id")[0];input+="three_category_id=27401"}else if(cateID==="5"){input=input.replace("data_type=1","data_type=2")}let html=request(input);let json=JSON.parse(html);if(json.code==="A00003"){fetch_params.headers["user-agent"]=PC_UA;json=JSON.parse(fetch(input,fetch_params))}json.data.list.forEach(function(data){if(data.channelId===1){desc=data.hasOwnProperty("score")?data.score+"分\\t":""}else if(data.channelId===2||data.channelId===4){if(data.latestOrder===data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"集全"}else{if(data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"/"+data.videoCount+"集"}else{desc="更新至 "+data.latestOrder+"集"}}}else if(data.channelId===6){desc=data.period+"期"}else if(data.channelId===5){desc=data.focus}else{if(data.latestOrder){desc="更新至 第"+data.latestOrder+"期"}else if(data.period){desc=data.period}else{desc=data.focus}}url=cateID+"$"+data.albumId;d.push({url:url,title:data.name,desc:desc,pic_url:data.imageUrl.replace(".jpg","_390_520.jpg?caplist=jpg,webp")})});setResult(d);', + // 一级:'js:let d=[];if(cateID==="16"){input=input.replace("channel_id=16","channel_id=1").split("three_category_id")[0];input+="three_category_id=27401"}else if(cateID==="5"){input=input.replace("data_type=1","data_type=2")}let html=fetch(input,fetch_params);let json=JSON.parse(html);if(json.code==="A00003"){fetch_params.headers["user-agent"]=PC_UA;json=JSON.parse(fetch(input,fetch_params))}json.data.list.forEach(function(data){if(data.channelId===1){desc=data.hasOwnProperty("score")?data.score+"分\\t":""}else if(data.channelId===2||data.channelId===4){if(data.latestOrder===data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"集全"}else{if(data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"/"+data.videoCount+"集"}else{desc="更新至 "+data.latestOrder+"集"}}}else if(data.channelId===6){desc=data.period+"期"}else if(data.channelId===5){desc=data.focus}else{if(data.latestOrder){desc="更新至 第"+data.latestOrder+"期"}else if(data.period){desc=data.period}else{desc=data.focus}}url=cateID+"$"+data.albumId;d.push({url:url,title:data.name,desc:desc,pic_url:data.imageUrl.replace(".jpg","_390_520.jpg?caplist=jpg,webp")})});setResult(d);', // 一级:'json:.data.list;.name;.imageUrl;.playUrl;.latestOrder', // 二级:{is_json:1,"title":"data.title;data.moviecategory[0]+data.moviecategory[1]","img":"data.cdncover","desc":"data.area[0];data.director[0]","content":"data.description","tabs":"data.playlink_sites;data.playlinksdetail.#idv.quality","lists":"data.playlinksdetail.#idv.default_url"}, 二级:{is_json:1,"title":"data.name+data.subtitle;data.latestOrder","img":"data.imageUrl","desc":"data.categories;data.areas","content":"data.description","tabs":"data.name","lists":"data.playlinksdetail.#idv.default_url"}, diff --git a/libs/pre.js b/libs/pre.js index 1e8b198..f7aad6e 100644 --- a/libs/pre.js +++ b/libs/pre.js @@ -161,4 +161,23 @@ function maoss(jxurl, ref, key) { } catch (e) { return ''; } +} + +function request(url,obj){ + if(typeof(fetch_params)!=='undefined'){ + obj = obj?Object.assign(fetch_params,obj):fetch_params; + }else{ + obj = obj||{} + } + // print(obj); + if(typeof(fetch)!==undefined){ + let html = fetch(url,obj); + if (/\?btwaf=/.test(html)) {//宝塔验证 + url=url.split('#')[0]+'?btwaf'+html.match(/btwaf(.*?)\"/)[1]; + log("宝塔验证跳转到:"+url); + html = fetch(url, obj); + } + return html + } + return '' } \ No newline at end of file diff --git a/models/rules.db b/models/rules.db index cdc11959bd264a4d48bf101268a7f1ea526dcdb9..8baf4fc801d9781903212783b1c35f751ce8ca68 100644 GIT binary patch delta 147 zcmZoTz|?SnX@WH4l!-FVtWy~DyeDi-naj_{a)?2Sxpy+VfG!tvFG~rF9Sa`|-^NCN zX3ly^b_V%y`9}W9r$o#h%@WfrjZIQaOw28l4Gk?#EDbCyER)SF%uNi9%?(nGZIewb z5={(}jFTuPRFx)K delta 67 zcmZoTz|?SnX@WFk%S0Jx))odm#)yq6bNSi01sSAR_$IRp=yI_fVku#