提交 e4cfbbba 编写于 作者: H hjdhnx

增加了用户自定义解析配置,不会随系统升级覆盖

上级 f035b3a8
......@@ -3,7 +3,7 @@
# 可以使用Python的 # 单行注释
{
"spider": "{{host}}/files/bc.jar",
"spider": "{{ host }}/files/custom_spider.jar",
"sites":[
{
"key":"t4",
......
# 这是用户自定义解析列表,不会被系统升级覆盖
# 0123,对应,普通解析,json解析,并发多json解析,聚合解析,参数3不填默认0
# flags是线路名称标识,会自动拦截并走以下的解析
# 名称,链接,类型,ua (ua不填默认 Mozilla/5.0) 可以手动填 Dart/2.14 (dart:io)
虾米,https://dm.xmflv.com:4433/?url=
\ No newline at end of file
......@@ -178,16 +178,16 @@ class CMS:
def blank_vod(self):
return {
"vod_id": "",
"vod_name": "",
"vod_pic": "",
"type_name": "",
"vod_year": "",
"vod_area": "",
"vod_remarks": "",
"vod_actor": "",
"vod_director": "",
"vod_content": ""
"vod_id": "id",
"vod_name": "片名",
"vod_pic": "",# 图片
"type_name": "剧情",
"vod_year": "年份",
"vod_area": "地区",
"vod_remarks": "更新信息",
"vod_actor": "主演",
"vod_director": "导演",
"vod_content": "简介"
}
def jsoup(self):
......@@ -468,9 +468,11 @@ class CMS:
"vod_name": title,
"vod_pic": img,
"vod_remarks": desc,
"vod_content": content,
"type_id": 1,
"type_name": "首页推荐",
"no_use":{
"vod_content": content,
"type_id": 1,
"type_name": "首页推荐",
},
})
except:
pass
......@@ -491,21 +493,25 @@ class CMS:
"vod_name": title,
"vod_pic": img,
"vod_remarks": desc,
"vod_content": content,
"type_id": 1,
"type_name": "首页推荐",
"no_use": {
"vod_content": content,
"type_id": 1,
"type_name": "首页推荐",
},
})
except:
pass
# result['list'] = videos[min((fypage-1)*self.limit,len(videos)-1):min(fypage*self.limit,len(videos))]
result['list'] = videos
result['code'] = 1
result['msg'] = '数据列表'
result['page'] = fypage
result['pagecount'] = math.ceil(len(videos)/self.limit)
result['limit'] = self.limit
result['total'] = len(videos)
result['now_count'] = len(result['list'])
result['no_use'] = {
'code':1,
'msg':'数据列表',
'page':fypage,
'pagecount':math.ceil(len(videos)/self.limit),
'limit':self.limit,
'total':len(videos),
'now_count':len(result['list']),
}
return result
except Exception as e:
logger.info(f'首页内容获取失败:{e}')
......@@ -768,7 +774,6 @@ class CMS:
# print(vod_play_url)
except Exception as e:
logger.info(f'{self.getName()}获取单个详情页{detailUrl}出错{e}')
# print(vod)
return vod
def detailContent(self, fypage, array):
......@@ -867,7 +872,7 @@ class CMS:
"vod_name": title,
"vod_pic": img,
"vod_remarks": desc,
"vod_content": content,
"vod_content": content, # 无用参数
})
except:
pass
......@@ -880,7 +885,9 @@ class CMS:
return result
def playContent(self, play_url,jxs=None,flag=None):
# flag参数只有类型为4的时候才有,可以忽略
# logger.info('播放免嗅地址: ' + self.play_url)
# 注意:全局flags里的视频没法执行免嗅代码,因为会自动拦截去调用解析: url=yoursite:5705/vod?play_url=xxxx
if not jxs:
jxs = []
try:
......
......@@ -12,11 +12,12 @@ var rule = {
class_name:'电视剧&电影&综艺&动漫',
class_url:'2&1&3&4',
limit:5,
// play_parse:true,
play_parse:true,
lazy:'js:input=input.split("?")[0];log(input);',
// 疑似t4专用的
lazy:'js:input={parse: 1, playUrl: "", jx: 1, url: input.split("?")[0]}',
// lazy:'js:input={parse: 1, playUrl: "", jx: 1, url: input.split("?")[0]}',
// 手动调用解析请求json的url,此lazy不方便
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',
// 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',
推荐:'json:data;title;cover;comment;cat+ent_id;description',
一级:'json:data.movies;title;cover;pubdate;id;description',
// 二级:{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"},
......
......@@ -69,11 +69,10 @@ def getRules(path='cache'):
logger.info(f'自动配置装载耗时:{get_interval(t1)}毫秒')
return rules
def getJxs(path='js'):
with open(f'{path}/解析.conf',encoding='utf-8') as f:
data = f.read().strip()
def jxTxt2Json(text:str):
data = text.strip().split('\n')
jxs = []
for i in data.split('\n'):
for i in data:
i = i.strip()
dt = i.split(',')
if not i.startswith('#'):
......@@ -83,9 +82,27 @@ def getJxs(path='js'):
'type':dt[2] if len(dt) > 2 else 0,
'ua':dt[3] if len(dt) > 3 else UA,
})
# jxs = [{'name':dt.split(',')[0],'url':dt.split(',')[1]} for dt in data.split('\n')]
# jxs = list(filter(lambda x:not str(x['name']).strip().startswith('#'),jxs))
# print(jxs)
return jxs
def getJxs(path='js'):
custom_jx = 'base/解析.conf'
if not os.path.exists(custom_jx):
with open(custom_jx,'w+',encoding='utf-8') as f1:
msg = """# 这是用户自定义解析列表,不会被系统升级覆盖
# 0123,对应,普通解析,json解析,并发多json解析,聚合解析,参数3不填默认0
# flags是线路名称标识,会自动拦截并走以下的解析
# 名称,链接,类型,ua (ua不填默认 Mozilla/5.0) 可以手动填 Dart/2.14 (dart:io)
虾米,https://dm.xmflv.com:4433/?url=
"""
f1.write(msg)
with open(f'{path}/解析.conf',encoding='utf-8') as f:
text = f.read()
jxs = jxTxt2Json(text)
with open(custom_jx,encoding='utf-8') as f2:
text = f2.read()
jxs2 = jxTxt2Json(text)
jxs.extend(jxs2)
print(f'共计{len(jxs)}条解析')
return jxs
......
3.3.3
\ No newline at end of file
3.3.4
\ No newline at end of file
# 0123,对应,普通解析,json解析,并发多json解析,聚合解析,参数3不填默认0
# flags是线路名称标识,会自动拦截并走以下的解析
# 名称,链接,类型,ua (ua不填默认 Mozilla/5.0) 可以手动填 Dart/2.14 (dart:io)
# Json并发|轮询,,2
# 解析聚合,,3
轮询,Sequence,2
并发,Parallel,2
# 聚合,Demo,3
BT5V,https://rx.bt5v.com/json/jsonindex.php/?url=,1
爱酷,https://cache.json.icu/home/api?type=ys&uid=292796&key=fnoryABDEFJNPQV269&url=,1
ok解析,https://okjx.cc/?url=
......
......@@ -25,14 +25,14 @@
"filterable": {{ rule.filterable }}
}{% endif %}{% if loop.last==False %},{% endif %}{% endfor %}],
"parses": [{
"name": "免解嗅探",
"name": "Ⓤ免",
"type": 0,
"url": "",
"header": {
"User-Agent": "Mozilla/5.0"
}
},{
"name": "免解JSON",
"name": "Ⓙ免",
"type": 1,
"url": "",
"header": {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册