From 2fee9908c33a719d4f96eb0f3da9896144bb125a Mon Sep 17 00:00:00 2001
From: Liu <18409283+ls125781003@users.noreply.github.com>
Date: Thu, 9 Jan 2025 13:49:57 +0800
Subject: [PATCH] 0108
fix
---
南风/api.json | 1394 ++++++++-
.../491cbabc17362406a4ddc6f64ac6ad3f.js} | 0
.../6c0debf8abd68630086d31eb3f1dd285.js} | 0
.../9af1556538d03232337fae7e59741289.js} | 0
.../ab53c890d5a64daafcf2b7631d21c1b9.js} | 0
南风/api/drpy2.min.js | 1 +
.../e9af2d0f3bf60d8b67b45615a9c474a3.js} | 0
南风/js/lib/drpy2.min.js | 1 -
南风/{sub => json}/Bili.json | 0
南风/{sub => json}/Blixq.json | 0
南风/{sub => json}/Blixs.json | 0
南风/{sub => json}/alist.json | 0
南风/{sub => json}/douban.json | 0
南风/{sub => json}/jianpian.json | 0
南风/{sub => json}/wogg.json | 0
南风/{sub => json}/youtube.json | 0
南风/{sub => json}/初中课堂.json | 0
南风/{sub => json}/小学课堂.json | 0
南风/{sub => json}/少儿教育.json | 0
南风/{sub => json}/网盘集合.json | 0
南风/{sub => json}/高中课堂.json | 0
南风/lives/{live.txt => Yoursmile.txt} | 0
南风/{jars/Yoursmile.jar => spider.jar} | Bin
南风/sub/NanFeng.gif | Bin 48708 -> 0 bytes
天微/lives/天微livev1.txt | 454 +--
小米/lives/平台直播.txt | 2702 ++++++++--------
欧歌/api.json | 4 +-
欧歌/jars/csp_woog.jar | Bin 368994 -> 368994 bytes
欧歌/json/{农民影视.json => nmys.json} | 0
欧歌/lives/o.txt | 2529 +++++++--------
潇洒/JS/56动漫.js | 56 +-
潇洒/JS/Anime1.js | 4 +-
潇洒/JS/NT动漫.js | 1038 ++++++-
潇洒/JS/三六零弹幕.js | 146 +-
潇洒/JS/优酷弹幕.js | 205 +-
潇洒/JS/动漫岛.js | 1118 ++++++-
潇洒/JS/动漫巴士.js | 24 +-
潇洒/JS/动画片大全.js | 57 +-
潇洒/JS/去看吧.js | 1138 ++++++-
潇洒/JS/奇米动漫.js | 1180 ++++++-
潇洒/JS/好看动漫.js | 58 +-
潇洒/JS/小熊弹幕.js | 210 +-
潇洒/JS/小虎斑弹幕.js | 46 +-
潇洒/JS/巨人弹幕.js | 211 +-
潇洒/JS/异世界.js | 252 +-
潇洒/JS/怡萱动漫.js | 794 ++++-
潇洒/JS/机器人.js | 190 +-
潇洒/JS/梦米弹幕.js | 184 +-
潇洒/JS/爱奇艺弹幕.js | 1387 +--------
潇洒/JS/爱弹幕.js | 790 ++++-
潇洒/JS/看了么.js | 845 ++++-
潇洒/JS/碟调影视.js | 47 +-
潇洒/JS/米兔弹幕.js | 225 +-
潇洒/JS/腾讯弹幕.js | 220 +-
潇洒/JS/芒果弹幕.js | 241 +-
潇洒/JS/花子动漫.js | 902 +++++-
潇洒/JS/茶杯狐.js | 1366 +++++++-
潇洒/JS/路漫漫.js | 363 ++-
潇洒/JS/达达龟.js | 611 +++-
潇洒/JS/追剧弹幕.js | 184 +-
潇洒/JS/追剧迷.js | 36 +-
潇洒/JS/采集之王.js | 39 +-
潇洒/JS/魔力高清.js | 603 +++-
潇洒/api.json | 23 +-
潇洒/spider.jar | Bin 1941903 -> 1941903 bytes
潇洒/wex.jar | Bin 467285 -> 467285 bytes
饭太硬/lives/IPV6①.txt | 21 +-
饭太硬/lives/平台直播.txt | 2738 +++++++++--------
骚零/api.json | 61 +-
骚零/api/drpy2.min.js | 74 +-
骚零/api/gbk.js | 79 +-
骚零/api/jinja.js | 577 ----
骚零/api/json5.js | 1737 -----------
骚零/api/node-rsa.js | 2 -
骚零/api/pako.min.js | 2 -
骚零/js/jp.js | 150 -
骚零/spider.jar | Bin 613670 -> 631979 bytes
77 files changed, 16839 insertions(+), 10480 deletions(-)
rename 南风/{js/lib/gbk.js => api/491cbabc17362406a4ddc6f64ac6ad3f.js} (100%)
rename 南风/{js/lib/模板.js => api/6c0debf8abd68630086d31eb3f1dd285.js} (100%)
rename 南风/{js/lib/cheerio.min.js => api/9af1556538d03232337fae7e59741289.js} (100%)
rename 南风/{js/lib/crypto-js.js => api/ab53c890d5a64daafcf2b7631d21c1b9.js} (100%)
create mode 100644 南风/api/drpy2.min.js
rename 南风/{js/lib/jsencrypt.js => api/e9af2d0f3bf60d8b67b45615a9c474a3.js} (100%)
delete mode 100644 南风/js/lib/drpy2.min.js
rename 南风/{sub => json}/Bili.json (100%)
rename 南风/{sub => json}/Blixq.json (100%)
rename 南风/{sub => json}/Blixs.json (100%)
rename 南风/{sub => json}/alist.json (100%)
rename 南风/{sub => json}/douban.json (100%)
rename 南风/{sub => json}/jianpian.json (100%)
rename 南风/{sub => json}/wogg.json (100%)
rename 南风/{sub => json}/youtube.json (100%)
rename 南风/{sub => json}/初中课堂.json (100%)
rename 南风/{sub => json}/小学课堂.json (100%)
rename 南风/{sub => json}/少儿教育.json (100%)
rename 南风/{sub => json}/网盘集合.json (100%)
rename 南风/{sub => json}/高中课堂.json (100%)
rename 南风/lives/{live.txt => Yoursmile.txt} (100%)
rename 南风/{jars/Yoursmile.jar => spider.jar} (100%)
delete mode 100644 南风/sub/NanFeng.gif
rename 欧歌/json/{农民影视.json => nmys.json} (100%)
delete mode 100644 骚零/api/jinja.js
delete mode 100644 骚零/api/json5.js
delete mode 100644 骚零/api/node-rsa.js
delete mode 100644 骚零/api/pako.min.js
delete mode 100644 骚零/js/jp.js
diff --git a/南风/api.json b/南风/api.json
index 98e1b58..9886953 100644
--- a/南风/api.json
+++ b/南风/api.json
@@ -1,121 +1,1275 @@
{
- "spider": "./jars/Yoursmile.jar",
- "wallpaper": "https://深色壁纸.xxooo.cf/",
-
- "sites":[
-{"key":"csp_DouDou","name":"🔍豆瓣┃本接口免费-🈲贩卖","type":3,"api":"csp_DouDou","searchable":0,"filterable":1,"changeable":1,"ext":{"commonConfig":"file://TV/peizhi.json","filter":"./sub/douban.json"}},
-{"key":"ConfigCenter","name":"🅿网盘配置中心","type":3,"api":"csp_ConfigCenter","searchable":0,"changeable":0,"ext":{"commonConfig":"file://TV/peizhi.json"}},
-{"key":"csp_Jpys","name":"🥇金牌","type":3,"api":"csp_Jpys","playerType":2,"searchable":1,"quickSearch":1,"changeable":1},
-{"key":"csp_TianTian","name":"🦉天天","type":3,"api":"csp_TianTian","searchable":1,"quickSearch":1,"filterable":1},
-{"key":"csp_ReBo","name":"☀️热播","type":3,"api":"csp_ReBo","searchable":1,"quickSearch":1,"filterable":1},
-{"key":"csp_LiteApple","name":"🍎小苹果","type":3,"api":"csp_LiteApple","searchable":1,"quickSearch":1,"filterable":1,"changeable":1},
-{"key":"csp_Czsapp","name":"🏭厂长","type":3,"api":"csp_Czsapp","playerType":2,"searchable":1,"quickSearch":1,"filterable":1,"ext":"http://www.czzyvideo.com"},
-{"key":"csp_SuBaiBai","name":"🏳️素白白","type":3,"api":"csp_SuBaiBai","searchable":1,"quickSearch":1,"filterable":1,"ext":"http://subaibai.com"},
-{"key":"瓜子","name":"🍉瓜子","type":3,"api":"csp_Gz360","searchable":1,"quickSearch":1,"filterable":1},
-{"key":"csp_Nongm","name":"👩🌾农民","type":3,"api":"csp_Nongm","searchable":1,"quickSearch":1,"filterable":1,"ext":"https://wwgz.cn"},
-{"key":"csp_Fantuan","name":"🍙饭团","type":3,"api":"csp_Fantuan","searchable":1,"quickSearch":1,"filterable":1,"click":"document.querySelector(\"#playleft iframe\").contentWindow.document.querySelector(\"#start\").click();","ext":"https://www.fantuan.vip"},
-{"key":"csp_AppRZ","name":"🕵忍者","type":3,"playerType":"2","api":"csp_AppRZ","searchable":1,"quickSearch":1,"filterable":1,"ext":"http://rzys.xyz/"},
-{"key":"csp_SaoHuo","name":"🔥骚火","type":3,"api":"csp_SaoHuo","playerType":2,"searchable":1,"quickSearch":1,"filterable":1},
-{"key":"csp_Qiyou","name":"🦌奇优","type":3,"api":"csp_Qiyou","searchable":1,"quickSearch":1,"filterable":1,"ext":"http://www.dyxz2.com/"},
-{"key":"csp_Tvyb","name":"☁️TVB云播","type":3,"api":"csp_Tvyb","playerType":2,"searchable":1,"quickSearch":1,"filterable":1,"ext":"http://www.tvyun01.com/"},
-{"key":"csp_Jiaozi","name":"🥣饺子","type":3,"api":"csp_Jiaozi","searchable":1,"quickSearch":1,"filterable":1},
-{"key":"csp_DiDuan","name":"📺低端","type":3,"api":"csp_Ddrk","searchable":1,"quickSearch":1,"filterable":0},
-{"key":"csp_Kuaikan","name":"👀快看","type":3,"api":"csp_Kuaikan","searchable":1,"quickSearch":1,"filterable":1},
-{"key":"csp_Zxzj","name":"🏚️在线","type":3,"api":"csp_Zxzj","searchable":1,"quickSearch":1,"changeable":1,"ext":"https://www.zxzjys.com/"},
-{"key":"csp_Auete","name":"🐼奥特","type":3,"api":"csp_Auete","searchable":1,"quickSearch":1,"filterable":1,"ext":"https://auete.com/"},
-{"key":"csp_Jianpian","name":"🧲荐片","type":3,"api":"csp_Jianpian","searchable":1,"quickSearch":1,"filterable":1,"ext":"./sub/jianpian.json"},
-{"key":"csp_SixV","name":"🧲新6V","type":3,"api":"csp_SixV","searchable":1,"quickSearch":1,"filterable":0,"ext":"https://www.xb6v.com/"},
-{"key":"csp_SP360","name":"💘360","type":3,"api":"csp_SP360","searchable":1,"quickSearch":1,"filterable":1,"changeable":1},
-{"key":"csp_Anime1","name":"🌸Anime动漫","type":3,"api":"csp_Anime1","searchable":1,"quickSearch":1,"filterable":1},
-{"key":"csp_Dm84","name":"🚌动漫巴士","type":3,"api":"csp_Dm84","searchable":1,"quickSearch":1,"filterable":1},
-{"key":"csp_Alllive","name":"📽️一直播","type":3,"api":"csp_Alllive","playerType":2,"searchable":0,"quickSearch":0,"changeable":0},
-{"key":"csp_Kanqiu","name":"⚾看球","type":3,"api":"csp_Kanqiu","searchable":1,"quickSearch":1,"changeable":0,"gridview":3,"style":{"type":"list"}},
-{"key":"csp_Kugou","name":"🐶酷狗","type":3,"api":"csp_Kugou","playerType":2,"ext":{"classes":[{"type_name":"酷狗","type_id":"kugou"}]}},
-{"key":"csp_BookTing","name":"📚听书","type":3,"playerType":2,"api":"csp_BookTing","searchable":0,"ext":"https://m.ting275.com","style":{"type":"rect","ratio":1.333}},
-{"key":"Aid","name":"🚑急救教学","type":3,"api":"csp_FirstAid","searchable":0,"quickSearch":0,"filterable":0,"changeable":0},
-
-{"key":"玩偶gg","name":"👽玩偶哥哥","type":3,"api":"csp_Wogg","searchable":1,"changeable":0,"ext":{"commonConfig":"file://TV/peizhi.json","siteUrl":"https://www.wogg.net","filter":"./sub/wogg.json"}},
-{"key":"多多","name":"🌟多多影音","type":3,"api":"csp_kongbai","searchable":1,"changeable":0,"ext":{"commonConfig":"file://TV/peizhi.json","siteUrl":"https://tv.yydsys.top","filter":"./sub/wogg.json"}},
-{"key":"蜡笔","name":"🖍︎蜡笔","type":3,"api":"csp_kongbai","searchable":1,"changeable":0,"ext":{"commonConfig":"file://TV/peizhi.json","siteUrl":"https://duopan.fun","filter":"./sub/wogg.json"}},
-{"key":"至臻","name":"💯至臻","type":3,"api":"csp_kongbai","searchable":1,"changeable":0,"ext":{"commonConfig":"file://TV/peizhi.json","siteUrl":"https://mihdr.top","filter":"./sub/wogg.json"}},
-{"key":"木偶","name":"🧸木偶","type":3,"api":"csp_kongbai","searchable":1,"changeable":0,"ext":{"commonConfig":"file://TV/peizhi.json","siteUrl":"http://mogg.xn--yetu07f.top","filter":"./sub/wogg.json"}},
-{"key":"MIUC","name":"💌MIUC","type":3,"api":"csp_kongbai","searchable":1,"changeable":0,"ext":{"commonConfig":"file://TV/peizhi.json","siteUrl":"http://www.mucpan.cc/","filter":"./sub/wogg.json"}},
-{"key":"闪电","name":"⚡闪电","type":3,"api":"csp_kongbai","searchable":1,"changeable":0,"ext":{"commonConfig":"file://TV/peizhi.json","siteUrl":"http://1.95.79.193","filter":"./sub/wogg.json"}},
-{"key":"盘Ta","name":"🍥盘Ta","type":3,"api":"csp_PanTa","searchable":1,"filterable":0,"switchable":0,"ext":{"siteUrl":"https://www.91panta.cn/","commonConfig":"file://TV/peizhi.json"}},
-{"key":"星剧社","name":"⭐️星剧社","type":3,"api":"csp_Star","searchable":1,"filterable":0,"switchable":0,"ext":{"commonConfig":"file://TV/peizhi.json"}},
-{"key":"易搜","name":"🆎易搜","type":3,"api":"csp_YiSo","searchable":1,"filterable":0,"switchable":0,"ext":{"cookie":"satoken=0eedba28-be8a-4f01-81af-2d8d44808ecf","commonConfig":"file://TV/peizhi.json"}},
-{"key":"csp_PanSearch","name":"📀盘搜索","type":3,"api":"csp_PanSearch","searchable":1,"changeable":0,"ext":{"commonConfig":"file://TV/peizhi.json"}},
-{"key":"纸条搜","name":"📜小纸条","type":3,"api":"csp_XiaoZhiTiao","searchable":1,"changeable":0,"ext":{"commonConfig":"file://TV/peizhi.json"}},
-{"key":"AList","name":"🅰AList","type":3,"api":"csp_AList","searchable":1,"changeable":0,"ext":"./sub/alist.json"},
-{"key":"网盘集合","name":"🅿网盘集合|4K","type":3,"api":"csp_网盘集合","searchable":1,"filterable":0,"switchable":0,"ext":{"commonConfig":"file://TV/peizhi.json","share":"./sub/网盘集合.json"}},
-{"key":"Youtube","name":"⚡Youtube(墙外)","type":3,"api":"csp_Youtube","searchable":1,"changeable":1,"style":{"type":"rect","ratio":1.433},"ext":{"json":"./sub/youtube.json","cookie":"file://TV/youtubecookie.json"}},
-{"key":"Tg | 豆瓣","name":"🅿Tg|豆瓣(墙外)","type":3,"api":"csp_TgYunDouBanPan","searchable":1,"changeable":0,"ext":{"siteUrl":"http://127.0.0.1:9999","channelUsername":"hao115,guaguale115,longzbija,dianyingshare,XiangxiuNB,yunpanpan,kuakeyun,zaihuayun,Quark_Movies,alyp_4K_Movies,vip115hot,yunpanshare,ucwangpan,Quark_Share_Channel,Aliyundrive_Share_Channel,shareAliyun,ikiviyyp,wanwansubchat,wangpanziyuan2021,alyp_1,quanziyuanshe","commonConfig":"file://TV/peizhi.json","filter":"./sub/douban.json"}},
-{"key":"TgYunPan|本地","name":"🅿TgYunPan|本地(墙外)","type":3,"api":"csp_TgYunPanLocal","searchable":1,"filterable":0,"switchable":0,"ext":{"channelUsername":"hao115,guaguale115,dianyingshare,XiangxiuNB,yunpanpan,kuakeyun,zaihuayun,Quark_Movies,alyp_4K_Movies,vip115hot,yunpanshare,ucwangpan,Quark_Share_Channel,Aliyundrive_Share_Channel,shareAliyun,ikiviyyp,wanwansubchat,wangpanziyuan2021,alyp_1,quanziyuanshe","commonConfig":"file://TV/peizhi.json"}},
-{"key":"push_agent","name":"🍭推送","type":3,"api":"csp_Push","searchable":0,"quickSearch":0,"ext":{"commonConfig":"file://TV/peizhi.json"}},
-
-{"key":"虎牙直播","name":"🐯虎牙直播","type":3,"api":"./js/lib/drpy2.min.js","searchable":0,"quickSearch":0,"filterable":0,"ext":"./js/虎牙直播.js"},
-{"key":"斗鱼直播","name":"🐟斗鱼直播","type":3,"api":"./js/lib/drpy2.min.js","searchable":0,"quickSearch":0,"filterable":0,"ext":"./js/斗鱼直播.js"},
-{"key":"有声小说吧","name":"📚有声小说吧","type":3,"api":"./js/lib/drpy2.min.js","playerType":"2","searchable":0,"quickSearch":0,"filterable":0,"ext":"./js/有声小说吧.js"},
-{"key":"JRKAN直播","name":"🏀JRKAN直播","type":3,"api":"./js/lib/drpy2.min.js","searchable":0,"quickSearch":0,"filterable":0,"ext":"./js/JRKAN直播.js"},
-{"key":"88看球","name":"⚽88看球","type":3,"api":"./js/lib/drpy2.min.js","searchable":0,"quickSearch":0,"filterable":0,"ext":"./js/88看球.js"},
-{"key":"酷奇MV","name":"🎸酷奇MV","type":3,"api":"csp_XBPQ","searchable":0,"quickSearch":0,"filterable":1,"ext":{"主页url":"https://www.kuqimv.com","直接播放":"1","短视频":"1","分类":"华语高清$1#日韩精选$2#欧美MV$3#高清现场$4#影视MV$5#夜店视频$6#车模视频$7#热舞视频$8#美女写真$9#美女打碟$10","分类url":"https://www.kuqimv.com/play/{cateId}_{catePg}.html;;z","数组":"
&&","标题":"title=\"&&\"","副标题":"target=\"play\">&&<","搜索模式":"1","搜索url":"https://www.kuqimv.com/search.php?key={wd}"}},
-{"key":"csp_Bili","name":"🅱️哔哩哔哩","type":3,"api":"csp_Bili","searchable":1,"quickSearch":1,"filterable":1,"ext":"./sub/Bili.json"},
-{"key":"相声小品","name":"🅱️相声小品","type":3,"api":"csp_Bili","searchable":0,"quickSearch":0,"filterable":1,"ext":"./sub/Blixs.json"},
-{"key":"戏曲","name":"🅱️戏曲","type":3,"api":"csp_Bili","searchable":0,"quickSearch":0,"filterable":1,"ext":"./sub/Blixq.json"},
-{"key":"少儿","name":"🅱️少儿","type":3,"api":"csp_Bili","searchable":0,"quickSearch":0,"filterable":1,"ext":"./sub/少儿教育.json"},
-{"key":"小学","name":"🅱️小学","type":3,"api":"csp_Bili","searchable":0,"quickSearch":0,"filterable":1,"ext":"./sub/小学课堂.json"},
-{"key":"初中","name":"🅱️初中","type":3,"api":"csp_Bili","searchable":0,"quickSearch":0,"filterable":1,"ext":"./sub/初中课堂.json"},
-{"key":"高中","name":"🅱️高中","type":3,"api":"csp_Bili","searchable":0,"quickSearch":0,"filterable":1,"ext":"./sub/高中课堂.json"}
-],
-"parses": [{
- "name": "Web聚合",
- "type": 3,
- "url": "Web"
- }, {
- "name": "Json聚合",
- "type": 3,
- "url": "Demo"
- }, {
- "name": "云",
- "type": 0,
- "url": "https://yparse.ik9.cc/index.php?url=",
- "ext": {
- "flag": ["qq", "腾讯", "qiyi", "爱奇艺", "奇艺", "youku", "优酷", "mgtv", "芒果", "letv", "乐视", "pptv", "PPTV", "sohu", "bilibili", "哔哩哔哩", "哔哩"],"header":{"User-Agent":"okhttp/4.1.0"}
- }
- }, {
- "name": "云2",
- "type": 0,
- "url": "https://jx.yparse.com/index.php?url=",
- "ext": {
- "flag": ["qq", "腾讯", "qiyi", "爱奇艺", "奇艺", "youku", "优酷", "mgtv", "芒果", "letv", "乐视", "pptv", "PPTV", "sohu", "bilibili", "哔哩哔哩", "哔哩"],"header":{"User-Agent":"okhttp/4.1.0"}
- }
- }, {
- "name": "m3u8TV",
- "type": 0,
- "url": "https://jx.m3u8.tv/jiexi/?url=",
- "ext": {
- "flag": ["qq", "腾讯", "qiyi", "爱奇艺", "奇艺", "youku", "优酷", "mgtv", "芒果", "letv", "乐视", "pptv", "PPTV", "sohu", "bilibili", "哔哩哔哩", "哔哩"],"header":{"User-Agent":"okhttp/4.1.0"}
- }
- }, {
- "name": "虾米",
- "type": 0,
- "url": "https://jx.xyflv.cc/?url=",
- "ext": {
- "flag": ["qq", "腾讯", "qiyi", "爱奇艺", "奇艺", "youku", "优酷", "mgtv", "芒果", "letv", "乐视", "pptv", "PPTV", "sohu", "bilibili", "哔哩哔哩", "哔哩"]
- }
- }, {
- "name": "虾米2",
- "type": 0,
- "url": "https://jx.xmflv.com/?url=",
- "ext": {
- "flag": ["qq", "腾讯", "qiyi", "爱奇艺", "奇艺", "youku", "优酷", "mgtv", "芒果", "letv", "乐视", "pptv", "PPTV", "sohu", "bilibili", "哔哩哔哩", "哔哩"]
- }
- }],
- "lives":[{"name":"Yoursmile","type":0,"url":"./lives/live.txt","playerType":1,"ua":"okhttp/3.15","epg":"http://epg.51zmt.top:8000/api/diyp/?ch={name}&date={date}","logo":"https://epg.112114.xyz/logo/{name}.png"}
- ],
- "logo":"./sub/NanFeng.gif",
- "rules":[{"name":"proxy","hosts":["raw.githubusercontent.com","googlevideo.com","cdn.v82u1l.com","cdn.iz8qkg.com","cdn.kin6c1.com","c.biggggg.com","c.olddddd.com","haiwaikan.com","www.histar.tv","youtube.com","uhibo.com",".*boku.*",".*nivod.*",".*ulivetv.*"]},{"name":"海外看","hosts":["haiwaikan"],"regex":["10.0099","10.3333","16.0599","8.1748","12.33","10.85"]},{"name":"cl","hosts":["magnet"],"regex":["最 新","直 播","更 新"]},{"name":"火山嗅探","hosts":["huoshan.com"],"regex":["item_id="]},{"name":"抖音嗅探","hosts":["douyin.com"],"regex":["is_play_url="]},{"name":"农民嗅探","hosts":["toutiaovod.com"],"regex":["video/tos/cn"]},{"name":"新视觉嗅探","hosts":["muzhi-video.bj.bcebos.com"],"regex":["202403/"]},{"name":"七新嗅探","hosts":["api.52wyb.com"],"regex":["m3u8?pt=m3u8"]},{"name":"夜市","hosts":["yeslivetv.com"],"script":["document.getElementsByClassName('vjs-big-play-button')[0].click()"]},{"name":"毛驴","hosts":["www.maolvys.com"],"script":["document.getElementsByClassName('swal-button swal-button--confirm')[0].click()"]},{"name":"czzy","hosts":["10086.cn"],"regex":["/storageWeb/servlet/downloadServlet"]}],
- "doh":[{"name":"Google","url":"https://dns.google/dns-query","ips":["8.8.4.4","8.8.8.8"]},{"name":"Cloudflare","url":"https://cloudflare-dns.com/dns-query","ips":["1.1.1.1","1.0.0.1","2606:4700:4700::1111","2606:4700:4700::1001"]},{"name":"AdGuard","url":"https://dns.adguard.com/dns-query","ips":["94.140.14.140","94.140.14.141"]},{"name":"DNSWatch","url":"https://resolver2.dns.watch/dns-query","ips":["84.200.69.80","84.200.70.40"]},{"name":"Quad9","url":"https://dns.quad9.net/dns-quer","ips":["9.9.9.9","149.112.112.112"]}],
- "flags":["youku","qq","QQ","iqiyi","qiyi","letv","sohu","tudou","pptv","PPTV","mgtv","ltnb","rx","SLYS4k","BYGA","BYGB","luanzi","dxzy","QEYSS","aliyun","AliS","122","chuangying","CL4K","xfyun","wuduzy","wasu","bilibili","renrenmi","xmm","xigua","m1905","funshion","优酷","芒果","腾讯","爱奇艺","奇艺","哔哩哔哩","哔哩","西瓜视频","腾讯视频","奇艺视频","优酷视频","芒果视频","乐视视频","FY","fy","FeiYun","feiyun","飞云"],
- "ijk":[{"group":"软解码","options":[{"category":4,"name":"opensles","value":"0"},{"category":4,"name":"overlay-format","value":"842225234"},{"category":4,"name":"framedrop","value":"1"},{"category":4,"name":"soundtouch","value":"1"},{"category":4,"name":"start-on-prepared","value":"1"},{"category":1,"name":"http-detect-rangeupport","value":"0"},{"category":1,"name":"fflags","value":"fastseek"},{"category":2,"name":"skip_loop_filter","value":"48"},{"category":4,"name":"reconnect","value":"1"},{"category":4,"name":"enable-accurateeek","value":"0"},{"category":4,"name":"mediacodec","value":"0"},{"category":4,"name":"mediacodec-auto-rotate","value":"0"},{"category":4,"name":"mediacodec-handle-resolution-change","value":"0"},{"category":4,"name":"mediacodec-hevc","value":"0"},{"category":1,"name":"dns_cache_timeout","value":"600000000"}]},{"group":"硬解码","options":[{"category":4,"name":"opensles","value":"0"},{"category":4,"name":"overlay-format","value":"842225234"},{"category":4,"name":"framedrop","value":"1"},{"category":4,"name":"soundtouch","value":"1"},{"category":4,"name":"start-on-prepared","value":"1"},{"category":1,"name":"http-detect-rangeupport","value":"0"},{"category":1,"name":"fflags","value":"fastseek"},{"category":2,"name":"skip_loop_filter","value":"48"},{"category":4,"name":"reconnect","value":"1"},{"category":4,"name":"enable-accurateeek","value":"0"},{"category":4,"name":"mediacodec","value":"1"},{"category":4,"name":"mediacodec-auto-rotate","value":"1"},{"category":4,"name":"mediacodec-handle-resolution-change","value":"1"},{"category":4,"name":"mediacodec-hevc","value":"1"},{"category":1,"name":"dns_cache_timeout","value":"600000000"}]}],
- "ads":["mozai.4gtv.tv","pv.vipwm.cc"]}
+ "spider": "./spider.jar",
+ "wallpaper": "https://深色壁纸.xxooo.cf/",
+ "sites": [
+ {
+ "key": "csp_DouDou",
+ "name": "🔍豆瓣┃本接口免费-🈲贩卖",
+ "type": 3,
+ "api": "csp_DouDou",
+ "searchable": 0,
+ "filterable": 1,
+ "changeable": 1,
+ "ext": {
+ "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
+ "filter": "./json/douban.json"
+ }
+ },
+ {
+ "key": "ConfigCenter",
+ "name": "🅿网盘配置中心",
+ "type": 3,
+ "api": "csp_ConfigCenter",
+ "searchable": 0,
+ "changeable": 0,
+ "ext": {
+ "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json"
+ }
+ },
+ {
+ "key": "csp_Jpys",
+ "name": "🥇金牌",
+ "type": 3,
+ "api": "csp_Jpys",
+ "playerType": 2,
+ "searchable": 1,
+ "quickSearch": 1,
+ "changeable": 1
+ },
+ {
+ "key": "csp_TianTian",
+ "name": "🦉天天",
+ "type": 3,
+ "api": "csp_TianTian",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1
+ },
+ {
+ "key": "csp_ReBo",
+ "name": "☀️热播",
+ "type": 3,
+ "api": "csp_ReBo",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1
+ },
+ {
+ "key": "csp_LiteApple",
+ "name": "🍎小苹果",
+ "type": 3,
+ "api": "csp_LiteApple",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "changeable": 1
+ },
+ {
+ "key": "csp_Czsapp",
+ "name": "🏭厂长",
+ "type": 3,
+ "api": "csp_Czsapp",
+ "playerType": 2,
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": "http://www.czzyvideo.com"
+ },
+ {
+ "key": "csp_SuBaiBai",
+ "name": "🏳️素白白",
+ "type": 3,
+ "api": "csp_SuBaiBai",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": "http://subaibai.com"
+ },
+ {
+ "key": "瓜子",
+ "name": "🍉瓜子",
+ "type": 3,
+ "api": "csp_Gz360",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1
+ },
+ {
+ "key": "csp_Nongm",
+ "name": "👩🌾农民",
+ "type": 3,
+ "api": "csp_Nongm",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": "https://wwgz.cn"
+ },
+ {
+ "key": "csp_Fantuan",
+ "name": "🍙饭团",
+ "type": 3,
+ "api": "csp_Fantuan",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "click": "document.querySelector(\"#playleft iframe\").contentWindow.document.querySelector(\"#start\").click();",
+ "ext": "https://www.fantuan.vip"
+ },
+ {
+ "key": "csp_AppRZ",
+ "name": "🕵忍者",
+ "type": 3,
+ "playerType": "2",
+ "api": "csp_AppRZ",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": "http://rzys.xyz/"
+ },
+ {
+ "key": "csp_SaoHuo",
+ "name": "🔥骚火",
+ "type": 3,
+ "api": "csp_SaoHuo",
+ "playerType": 2,
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1
+ },
+ {
+ "key": "csp_Qiyou",
+ "name": "🦌奇优",
+ "type": 3,
+ "api": "csp_Qiyou",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": "http://www.dyxz2.com/"
+ },
+ {
+ "key": "csp_Tvyb",
+ "name": "☁️TVB云播",
+ "type": 3,
+ "api": "csp_Tvyb",
+ "playerType": 2,
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": "http://www.tvyun01.com/"
+ },
+ {
+ "key": "csp_Jiaozi",
+ "name": "🥣饺子",
+ "type": 3,
+ "api": "csp_Jiaozi",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1
+ },
+ {
+ "key": "csp_DiDuan",
+ "name": "📺低端",
+ "type": 3,
+ "api": "csp_Ddrk",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 0
+ },
+ {
+ "key": "csp_Kuaikan",
+ "name": "👀快看",
+ "type": 3,
+ "api": "csp_Kuaikan",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1
+ },
+ {
+ "key": "csp_Zxzj",
+ "name": "🏚️在线",
+ "type": 3,
+ "api": "csp_Zxzj",
+ "searchable": 1,
+ "quickSearch": 1,
+ "changeable": 1,
+ "ext": "https://www.zxzjys.com/"
+ },
+ {
+ "key": "csp_Auete",
+ "name": "🐼奥特",
+ "type": 3,
+ "api": "csp_Auete",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": "https://auete.com/"
+ },
+ {
+ "key": "csp_Jianpian",
+ "name": "🧲荐片",
+ "type": 3,
+ "api": "csp_Jianpian",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": "./json/jianpian.json"
+ },
+ {
+ "key": "csp_SixV",
+ "name": "🧲新6V",
+ "type": 3,
+ "api": "csp_SixV",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 0,
+ "ext": "https://www.xb6v.com/"
+ },
+ {
+ "key": "csp_SP360",
+ "name": "💘360",
+ "type": 3,
+ "api": "csp_SP360",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "changeable": 1
+ },
+ {
+ "key": "csp_Anime1",
+ "name": "🌸Anime动漫",
+ "type": 3,
+ "api": "csp_Anime1",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1
+ },
+ {
+ "key": "csp_Dm84",
+ "name": "🚌动漫巴士",
+ "type": 3,
+ "api": "csp_Dm84",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1
+ },
+ {
+ "key": "csp_Alllive",
+ "name": "📽️一直播",
+ "type": 3,
+ "api": "csp_Alllive",
+ "playerType": 2,
+ "searchable": 0,
+ "quickSearch": 0,
+ "changeable": 0
+ },
+ {
+ "key": "csp_Kanqiu",
+ "name": "⚾看球",
+ "type": 3,
+ "api": "csp_Kanqiu",
+ "searchable": 1,
+ "quickSearch": 1,
+ "changeable": 0,
+ "gridview": 3,
+ "style": {
+ "type": "list"
+ }
+ },
+ {
+ "key": "csp_Kugou",
+ "name": "🐶酷狗",
+ "type": 3,
+ "api": "csp_Kugou",
+ "playerType": 2,
+ "ext": {
+ "classes": [
+ {
+ "type_name": "酷狗",
+ "type_id": "kugou"
+ }
+ ]
+ }
+ },
+ {
+ "key": "csp_BookTing",
+ "name": "📚听书",
+ "type": 3,
+ "playerType": 2,
+ "api": "csp_BookTing",
+ "searchable": 0,
+ "ext": "https://m.ting275.com",
+ "style": {
+ "type": "rect",
+ "ratio": 1.333
+ }
+ },
+ {
+ "key": "Aid",
+ "name": "🚑急救教学",
+ "type": 3,
+ "api": "csp_FirstAid",
+ "searchable": 0,
+ "quickSearch": 0,
+ "filterable": 0,
+ "changeable": 0
+ },
+ {
+ "key": "玩偶gg",
+ "name": "👽玩偶哥哥",
+ "type": 3,
+ "api": "csp_Wogg",
+ "searchable": 1,
+ "changeable": 0,
+ "ext": {
+ "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
+ "siteUrl": "https://www.wogg.net",
+ "filter": "./json/wogg.json"
+ }
+ },
+ {
+ "key": "多多",
+ "name": "🌟多多影音",
+ "type": 3,
+ "api": "csp_kongbai",
+ "searchable": 1,
+ "changeable": 0,
+ "ext": {
+ "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
+ "siteUrl": "https://tv.yydsys.top",
+ "filter": "./json/wogg.json"
+ }
+ },
+ {
+ "key": "蜡笔",
+ "name": "🖍︎蜡笔",
+ "type": 3,
+ "api": "csp_kongbai",
+ "searchable": 1,
+ "changeable": 0,
+ "ext": {
+ "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
+ "siteUrl": "https://duopan.fun",
+ "filter": "./json/wogg.json"
+ }
+ },
+ {
+ "key": "至臻",
+ "name": "💯至臻",
+ "type": 3,
+ "api": "csp_kongbai",
+ "searchable": 1,
+ "changeable": 0,
+ "ext": {
+ "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
+ "siteUrl": "https://mihdr.top",
+ "filter": "./json/wogg.json"
+ }
+ },
+ {
+ "key": "木偶",
+ "name": "🧸木偶",
+ "type": 3,
+ "api": "csp_kongbai",
+ "searchable": 1,
+ "changeable": 0,
+ "ext": {
+ "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
+ "siteUrl": "http://mogg.xn--yetu07f.top",
+ "filter": "./json/wogg.json"
+ }
+ },
+ {
+ "key": "MIUC",
+ "name": "💌MIUC",
+ "type": 3,
+ "api": "csp_kongbai",
+ "searchable": 1,
+ "changeable": 0,
+ "ext": {
+ "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
+ "siteUrl": "http://www.mucpan.cc/",
+ "filter": "./json/wogg.json"
+ }
+ },
+ {
+ "key": "闪电",
+ "name": "⚡闪电",
+ "type": 3,
+ "api": "csp_kongbai",
+ "searchable": 1,
+ "changeable": 0,
+ "ext": {
+ "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
+ "siteUrl": "http://1.95.79.193",
+ "filter": "./json/wogg.json"
+ }
+ },
+ {
+ "key": "盘Ta",
+ "name": "🍥盘Ta",
+ "type": 3,
+ "api": "csp_PanTa",
+ "searchable": 1,
+ "filterable": 0,
+ "switchable": 0,
+ "ext": {
+ "siteUrl": "https://www.91panta.cn/",
+ "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json"
+ }
+ },
+ {
+ "key": "星剧社",
+ "name": "⭐️星剧社",
+ "type": 3,
+ "api": "csp_Star",
+ "searchable": 1,
+ "filterable": 0,
+ "switchable": 0,
+ "ext": {
+ "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json"
+ }
+ },
+ {
+ "key": "易搜",
+ "name": "🆎易搜",
+ "type": 3,
+ "api": "csp_YiSo",
+ "searchable": 1,
+ "filterable": 0,
+ "switchable": 0,
+ "ext": {
+ "cookie": "satoken=0eedba28-be8a-4f01-81af-2d8d44808ecf",
+ "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json"
+ }
+ },
+ {
+ "key": "csp_PanSearch",
+ "name": "📀盘搜索",
+ "type": 3,
+ "api": "csp_PanSearch",
+ "searchable": 1,
+ "changeable": 0,
+ "ext": {
+ "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json"
+ }
+ },
+ {
+ "key": "纸条搜",
+ "name": "📜小纸条",
+ "type": 3,
+ "api": "csp_XiaoZhiTiao",
+ "searchable": 1,
+ "changeable": 0,
+ "ext": {
+ "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json"
+ }
+ },
+ {
+ "key": "AList",
+ "name": "🅰AList",
+ "type": 3,
+ "api": "csp_AList",
+ "searchable": 1,
+ "changeable": 0,
+ "ext": "./json/alist.json"
+ },
+ {
+ "key": "网盘集合",
+ "name": "🅿网盘集合|4K",
+ "type": 3,
+ "api": "csp_网盘集合",
+ "searchable": 1,
+ "filterable": 0,
+ "switchable": 0,
+ "ext": {
+ "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
+ "share": "./json/网盘集合.json"
+ }
+ },
+ {
+ "key": "Youtube",
+ "name": "⚡Youtube(墙外)",
+ "type": 3,
+ "api": "csp_Youtube",
+ "searchable": 1,
+ "changeable": 1,
+ "style": {
+ "type": "rect",
+ "ratio": 1.433
+ },
+ "ext": {
+ "json": "./json/youtube.json",
+ "cookie": "http://127.0.0.1:9978/file/TVBox/youtubecookie.json"
+ }
+ },
+ {
+ "key": "Tg | 豆瓣",
+ "name": "🅿Tg|豆瓣(墙外)",
+ "type": 3,
+ "api": "csp_TgYunDouBanPan",
+ "searchable": 1,
+ "changeable": 0,
+ "ext": {
+ "siteUrl": "http://127.0.0.1:9999",
+ "channelUsername": "hao115,guaguale115,longzbija,dianyingshare,XiangxiuNB,yunpanpan,kuakeyun,zaihuayun,Quark_Movies,alyp_4K_Movies,vip115hot,yunpanshare,ucwangpan,Quark_Share_Channel,Aliyundrive_Share_Channel,shareAliyun,ikiviyyp,wanwansubchat,wangpanziyuan2021,alyp_1,quanziyuanshe",
+ "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
+ "filter": "./json/douban.json"
+ }
+ },
+ {
+ "key": "TgYunPan|本地",
+ "name": "🅿TgYunPan|本地(墙外)",
+ "type": 3,
+ "api": "csp_TgYunPanLocal",
+ "searchable": 1,
+ "filterable": 0,
+ "switchable": 0,
+ "ext": {
+ "channelUsername": "hao115,guaguale115,dianyingshare,XiangxiuNB,yunpanpan,kuakeyun,zaihuayun,Quark_Movies,alyp_4K_Movies,vip115hot,yunpanshare,ucwangpan,Quark_Share_Channel,Aliyundrive_Share_Channel,shareAliyun,ikiviyyp,wanwansubchat,wangpanziyuan2021,alyp_1,quanziyuanshe",
+ "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json"
+ }
+ },
+ {
+ "key": "push_agent",
+ "name": "🍭推送",
+ "type": 3,
+ "api": "csp_Push",
+ "searchable": 0,
+ "quickSearch": 0,
+ "ext": {
+ "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json"
+ }
+ },
+ {
+ "key": "虎牙直播",
+ "name": "🐯虎牙直播",
+ "type": 3,
+ "api": "./api/drpy2.min.js",
+ "searchable": 0,
+ "quickSearch": 0,
+ "filterable": 0,
+ "ext": "./js/虎牙直播.js"
+ },
+ {
+ "key": "斗鱼直播",
+ "name": "🐟斗鱼直播",
+ "type": 3,
+ "api": "./api/drpy2.min.js",
+ "searchable": 0,
+ "quickSearch": 0,
+ "filterable": 0,
+ "ext": "./js/斗鱼直播.js"
+ },
+ {
+ "key": "有声小说吧",
+ "name": "📚有声小说吧",
+ "type": 3,
+ "api": "./api/drpy2.min.js",
+ "playerType": "2",
+ "searchable": 0,
+ "quickSearch": 0,
+ "filterable": 0,
+ "ext": "./js/有声小说吧.js"
+ },
+ {
+ "key": "JRKAN直播",
+ "name": "🏀JRKAN直播",
+ "type": 3,
+ "api": "./api/drpy2.min.js",
+ "searchable": 0,
+ "quickSearch": 0,
+ "filterable": 0,
+ "ext": "./js/JRKAN直播.js"
+ },
+ {
+ "key": "88看球",
+ "name": "⚽88看球",
+ "type": 3,
+ "api": "./api/drpy2.min.js",
+ "searchable": 0,
+ "quickSearch": 0,
+ "filterable": 0,
+ "ext": "./js/88看球.js"
+ },
+ {
+ "key": "酷奇MV",
+ "name": "🎸酷奇MV",
+ "type": 3,
+ "api": "csp_XBPQ",
+ "searchable": 0,
+ "quickSearch": 0,
+ "filterable": 1,
+ "ext": {
+ "主页url": "https://www.kuqimv.com",
+ "直接播放": "1",
+ "短视频": "1",
+ "分类": "华语高清$1#日韩精选$2#欧美MV$3#高清现场$4#影视MV$5#夜店视频$6#车模视频$7#热舞视频$8#美女写真$9#美女打碟$10",
+ "分类url": "https://www.kuqimv.com/play/{cateId}_{catePg}.html;;z",
+ "数组": "&&",
+ "标题": "title=\"&&\"",
+ "副标题": "target=\"play\">&&<",
+ "搜索模式": "1",
+ "搜索url": "https://www.kuqimv.com/search.php?key={wd}"
+ }
+ },
+ {
+ "key": "csp_Bili",
+ "name": "🅱️哔哩哔哩",
+ "type": 3,
+ "api": "csp_Bili",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": "./json/Bili.json"
+ },
+ {
+ "key": "相声小品",
+ "name": "🅱️相声小品",
+ "type": 3,
+ "api": "csp_Bili",
+ "searchable": 0,
+ "quickSearch": 0,
+ "filterable": 1,
+ "ext": "./json/Blixs.json"
+ },
+ {
+ "key": "戏曲",
+ "name": "🅱️戏曲",
+ "type": 3,
+ "api": "csp_Bili",
+ "searchable": 0,
+ "quickSearch": 0,
+ "filterable": 1,
+ "ext": "./json/Blixq.json"
+ },
+ {
+ "key": "少儿",
+ "name": "🅱️少儿",
+ "type": 3,
+ "api": "csp_Bili",
+ "searchable": 0,
+ "quickSearch": 0,
+ "filterable": 1,
+ "ext": "./json/少儿教育.json"
+ },
+ {
+ "key": "小学",
+ "name": "🅱️小学",
+ "type": 3,
+ "api": "csp_Bili",
+ "searchable": 0,
+ "quickSearch": 0,
+ "filterable": 1,
+ "ext": "./json/小学课堂.json"
+ },
+ {
+ "key": "初中",
+ "name": "🅱️初中",
+ "type": 3,
+ "api": "csp_Bili",
+ "searchable": 0,
+ "quickSearch": 0,
+ "filterable": 1,
+ "ext": "./json/初中课堂.json"
+ },
+ {
+ "key": "高中",
+ "name": "🅱️高中",
+ "type": 3,
+ "api": "csp_Bili",
+ "searchable": 0,
+ "quickSearch": 0,
+ "filterable": 1,
+ "ext": "./json/高中课堂.json"
+ }
+ ],
+ "parses": [
+ {
+ "name": "Web聚合",
+ "type": 3,
+ "url": "Web"
+ },
+ {
+ "name": "Json聚合",
+ "type": 3,
+ "url": "Demo"
+ },
+ {
+ "name": "云",
+ "type": 0,
+ "url": "https://yparse.ik9.cc/index.php?url=",
+ "ext": {
+ "flag": [
+ "qq",
+ "腾讯",
+ "qiyi",
+ "爱奇艺",
+ "奇艺",
+ "youku",
+ "优酷",
+ "mgtv",
+ "芒果",
+ "letv",
+ "乐视",
+ "pptv",
+ "PPTV",
+ "sohu",
+ "bilibili",
+ "哔哩哔哩",
+ "哔哩"
+ ],
+ "header": {
+ "User-Agent": "okhttp/4.1.0"
+ }
+ }
+ },
+ {
+ "name": "云2",
+ "type": 0,
+ "url": "https://jx.yparse.com/index.php?url=",
+ "ext": {
+ "flag": [
+ "qq",
+ "腾讯",
+ "qiyi",
+ "爱奇艺",
+ "奇艺",
+ "youku",
+ "优酷",
+ "mgtv",
+ "芒果",
+ "letv",
+ "乐视",
+ "pptv",
+ "PPTV",
+ "sohu",
+ "bilibili",
+ "哔哩哔哩",
+ "哔哩"
+ ],
+ "header": {
+ "User-Agent": "okhttp/4.1.0"
+ }
+ }
+ },
+ {
+ "name": "m3u8TV",
+ "type": 0,
+ "url": "https://jx.m3u8.tv/jiexi/?url=",
+ "ext": {
+ "flag": [
+ "qq",
+ "腾讯",
+ "qiyi",
+ "爱奇艺",
+ "奇艺",
+ "youku",
+ "优酷",
+ "mgtv",
+ "芒果",
+ "letv",
+ "乐视",
+ "pptv",
+ "PPTV",
+ "sohu",
+ "bilibili",
+ "哔哩哔哩",
+ "哔哩"
+ ],
+ "header": {
+ "User-Agent": "okhttp/4.1.0"
+ }
+ }
+ },
+ {
+ "name": "虾米",
+ "type": 0,
+ "url": "https://jx.xyflv.cc/?url=",
+ "ext": {
+ "flag": [
+ "qq",
+ "腾讯",
+ "qiyi",
+ "爱奇艺",
+ "奇艺",
+ "youku",
+ "优酷",
+ "mgtv",
+ "芒果",
+ "letv",
+ "乐视",
+ "pptv",
+ "PPTV",
+ "sohu",
+ "bilibili",
+ "哔哩哔哩",
+ "哔哩"
+ ]
+ }
+ },
+ {
+ "name": "虾米2",
+ "type": 0,
+ "url": "https://jx.xmflv.com/?url=",
+ "ext": {
+ "flag": [
+ "qq",
+ "腾讯",
+ "qiyi",
+ "爱奇艺",
+ "奇艺",
+ "youku",
+ "优酷",
+ "mgtv",
+ "芒果",
+ "letv",
+ "乐视",
+ "pptv",
+ "PPTV",
+ "sohu",
+ "bilibili",
+ "哔哩哔哩",
+ "哔哩"
+ ]
+ }
+ }
+ ],
+ "lives": [
+ {
+ "name": "Yoursmile",
+ "type": 0,
+ "url": "./lives/Yoursmile.txt",
+ "epg": "http://epg.51zmt.top:8000/api/diyp/?ch={name}&date={date}"
+ },
+ {
+ "name": "feiyang.allinone",
+ "type": 0,
+ "url": "http://127.0.0.1:35457/tv.m3u",
+ "epg": "http://epg.51zmt.top:8000/api/diyp/?ch={name}&date={date}"
+ },
+ {
+ "name": "feiyang.tptv",
+ "type": 0,
+ "url": "http://127.0.0.1:35457/tptv.m3u",
+ "epg": "http://epg.51zmt.top:8000/api/diyp/?ch={name}&date={date}"
+ },
+ {
+ "name": "feiyang.migu",
+ "type": 0,
+ "url": "http://127.0.0.1:35457/migu.m3u",
+ "epg": "http://epg.51zmt.top:8000/api/diyp/?ch={name}&date={date}"
+ },
+ {
+ "name": "feiyang.miguevent",
+ "type": 0,
+ "url": "http://127.0.0.1:35457/miguevent.m3u",
+ "epg": "http://epg.51zmt.top:8000/api/diyp/?ch={name}&date={date}"
+ },
+ {
+ "name": "feiyang.bililive",
+ "type": 0,
+ "url": "http://127.0.0.1:35457/bililive.m3u",
+ "epg": "http://epg.51zmt.top:8000/api/diyp/?ch={name}&date={date}"
+ },
+ {
+ "name": "feiyang.huyayqk",
+ "type": 0,
+ "url": "http://127.0.0.1:35457/huyayqk.m3u",
+ "epg": "http://epg.51zmt.top:8000/api/diyp/?ch={name}&date={date}"
+ },
+ {
+ "name": "feiyang.douyuyqk",
+ "type": 0,
+ "url": "http://127.0.0.1:35457/douyuyqk.m3u",
+ "epg": "http://epg.51zmt.top:8000/api/diyp/?ch={name}&date={date}"
+ },
+ {
+ "name": "feiyang.yylunbo",
+ "type": 0,
+ "url": "http://127.0.0.1:35457/yylunbo.m3u",
+ "epg": "http://epg.51zmt.top:8000/api/diyp/?ch={name}&date={date}"
+ }
+ ],
+ "logo": "https://github.moeyy.xyz/https://raw.githubusercontent.com/yoursmile66/TVBox/main/sub/NanFeng.gif",
+ "rules": [
+ {
+ "name": "proxy",
+ "hosts": [
+ "raw.githubusercontent.com",
+ "googlevideo.com",
+ "cdn.v82u1l.com",
+ "cdn.iz8qkg.com",
+ "cdn.kin6c1.com",
+ "c.biggggg.com",
+ "c.olddddd.com",
+ "haiwaikan.com",
+ "www.histar.tv",
+ "youtube.com",
+ "uhibo.com",
+ ".*boku.*",
+ ".*nivod.*",
+ ".*ulivetv.*"
+ ]
+ },
+ {
+ "name": "海外看",
+ "hosts": [
+ "haiwaikan"
+ ],
+ "regex": [
+ "10.0099",
+ "10.3333",
+ "16.0599",
+ "8.1748",
+ "12.33",
+ "10.85"
+ ]
+ },
+ {
+ "name": "cl",
+ "hosts": [
+ "magnet"
+ ],
+ "regex": [
+ "最 新",
+ "直 播",
+ "更 新"
+ ]
+ },
+ {
+ "name": "火山嗅探",
+ "hosts": [
+ "huoshan.com"
+ ],
+ "regex": [
+ "item_id="
+ ]
+ },
+ {
+ "name": "抖音嗅探",
+ "hosts": [
+ "douyin.com"
+ ],
+ "regex": [
+ "is_play_url="
+ ]
+ },
+ {
+ "name": "农民嗅探",
+ "hosts": [
+ "toutiaovod.com"
+ ],
+ "regex": [
+ "video/tos/cn"
+ ]
+ },
+ {
+ "name": "新视觉嗅探",
+ "hosts": [
+ "muzhi-video.bj.bcebos.com"
+ ],
+ "regex": [
+ "202403/"
+ ]
+ },
+ {
+ "name": "七新嗅探",
+ "hosts": [
+ "api.52wyb.com"
+ ],
+ "regex": [
+ "m3u8?pt=m3u8"
+ ]
+ },
+ {
+ "name": "夜市",
+ "hosts": [
+ "yeslivetv.com"
+ ],
+ "script": [
+ "document.getElementsByClassName('vjs-big-play-button')[0].click()"
+ ]
+ },
+ {
+ "name": "毛驴",
+ "hosts": [
+ "www.maolvys.com"
+ ],
+ "script": [
+ "document.getElementsByClassName('swal-button swal-button--confirm')[0].click()"
+ ]
+ },
+ {
+ "name": "czzy",
+ "hosts": [
+ "10086.cn"
+ ],
+ "regex": [
+ "/storageWeb/servlet/downloadServlet"
+ ]
+ }
+ ],
+ "doh": [
+ {
+ "name": "Google",
+ "url": "https://dns.google/dns-query",
+ "ips": [
+ "8.8.4.4",
+ "8.8.8.8"
+ ]
+ },
+ {
+ "name": "Cloudflare",
+ "url": "https://cloudflare-dns.com/dns-query",
+ "ips": [
+ "1.1.1.1",
+ "1.0.0.1",
+ "2606:4700:4700::1111",
+ "2606:4700:4700::1001"
+ ]
+ },
+ {
+ "name": "AdGuard",
+ "url": "https://dns.adguard.com/dns-query",
+ "ips": [
+ "94.140.14.140",
+ "94.140.14.141"
+ ]
+ },
+ {
+ "name": "DNSWatch",
+ "url": "https://resolver2.dns.watch/dns-query",
+ "ips": [
+ "84.200.69.80",
+ "84.200.70.40"
+ ]
+ },
+ {
+ "name": "Quad9",
+ "url": "https://dns.quad9.net/dns-quer",
+ "ips": [
+ "9.9.9.9",
+ "149.112.112.112"
+ ]
+ }
+ ],
+ "flags": [
+ "youku",
+ "qq",
+ "QQ",
+ "iqiyi",
+ "qiyi",
+ "letv",
+ "sohu",
+ "tudou",
+ "pptv",
+ "PPTV",
+ "mgtv",
+ "ltnb",
+ "rx",
+ "SLYS4k",
+ "BYGA",
+ "BYGB",
+ "luanzi",
+ "dxzy",
+ "QEYSS",
+ "aliyun",
+ "AliS",
+ "122",
+ "chuangying",
+ "CL4K",
+ "xfyun",
+ "wuduzy",
+ "wasu",
+ "bilibili",
+ "renrenmi",
+ "xmm",
+ "xigua",
+ "m1905",
+ "funshion",
+ "优酷",
+ "芒果",
+ "腾讯",
+ "爱奇艺",
+ "奇艺",
+ "哔哩哔哩",
+ "哔哩",
+ "西瓜视频",
+ "腾讯视频",
+ "奇艺视频",
+ "优酷视频",
+ "芒果视频",
+ "乐视视频",
+ "FY",
+ "fy",
+ "FeiYun",
+ "feiyun",
+ "飞云"
+ ],
+ "ijk": [
+ {
+ "group": "软解码",
+ "options": [
+ {
+ "category": 4,
+ "name": "opensles",
+ "value": "0"
+ },
+ {
+ "category": 4,
+ "name": "overlay-format",
+ "value": "842225234"
+ },
+ {
+ "category": 4,
+ "name": "framedrop",
+ "value": "1"
+ },
+ {
+ "category": 4,
+ "name": "soundtouch",
+ "value": "1"
+ },
+ {
+ "category": 4,
+ "name": "start-on-prepared",
+ "value": "1"
+ },
+ {
+ "category": 1,
+ "name": "http-detect-rangeupport",
+ "value": "0"
+ },
+ {
+ "category": 1,
+ "name": "fflags",
+ "value": "fastseek"
+ },
+ {
+ "category": 2,
+ "name": "skip_loop_filter",
+ "value": "48"
+ },
+ {
+ "category": 4,
+ "name": "reconnect",
+ "value": "1"
+ },
+ {
+ "category": 4,
+ "name": "enable-accurateeek",
+ "value": "0"
+ },
+ {
+ "category": 4,
+ "name": "mediacodec",
+ "value": "0"
+ },
+ {
+ "category": 4,
+ "name": "mediacodec-auto-rotate",
+ "value": "0"
+ },
+ {
+ "category": 4,
+ "name": "mediacodec-handle-resolution-change",
+ "value": "0"
+ },
+ {
+ "category": 4,
+ "name": "mediacodec-hevc",
+ "value": "0"
+ },
+ {
+ "category": 1,
+ "name": "dns_cache_timeout",
+ "value": "600000000"
+ }
+ ]
+ },
+ {
+ "group": "硬解码",
+ "options": [
+ {
+ "category": 4,
+ "name": "opensles",
+ "value": "0"
+ },
+ {
+ "category": 4,
+ "name": "overlay-format",
+ "value": "842225234"
+ },
+ {
+ "category": 4,
+ "name": "framedrop",
+ "value": "1"
+ },
+ {
+ "category": 4,
+ "name": "soundtouch",
+ "value": "1"
+ },
+ {
+ "category": 4,
+ "name": "start-on-prepared",
+ "value": "1"
+ },
+ {
+ "category": 1,
+ "name": "http-detect-rangeupport",
+ "value": "0"
+ },
+ {
+ "category": 1,
+ "name": "fflags",
+ "value": "fastseek"
+ },
+ {
+ "category": 2,
+ "name": "skip_loop_filter",
+ "value": "48"
+ },
+ {
+ "category": 4,
+ "name": "reconnect",
+ "value": "1"
+ },
+ {
+ "category": 4,
+ "name": "enable-accurateeek",
+ "value": "0"
+ },
+ {
+ "category": 4,
+ "name": "mediacodec",
+ "value": "1"
+ },
+ {
+ "category": 4,
+ "name": "mediacodec-auto-rotate",
+ "value": "1"
+ },
+ {
+ "category": 4,
+ "name": "mediacodec-handle-resolution-change",
+ "value": "1"
+ },
+ {
+ "category": 4,
+ "name": "mediacodec-hevc",
+ "value": "1"
+ },
+ {
+ "category": 1,
+ "name": "dns_cache_timeout",
+ "value": "600000000"
+ }
+ ]
+ }
+ ],
+ "ads": [
+ "mozai.4gtv.tv",
+ "pv.vipwm.cc"
+ ]
+}
\ No newline at end of file
diff --git a/南风/js/lib/gbk.js b/南风/api/491cbabc17362406a4ddc6f64ac6ad3f.js
similarity index 100%
rename from 南风/js/lib/gbk.js
rename to 南风/api/491cbabc17362406a4ddc6f64ac6ad3f.js
diff --git a/南风/js/lib/模板.js b/南风/api/6c0debf8abd68630086d31eb3f1dd285.js
similarity index 100%
rename from 南风/js/lib/模板.js
rename to 南风/api/6c0debf8abd68630086d31eb3f1dd285.js
diff --git a/南风/js/lib/cheerio.min.js b/南风/api/9af1556538d03232337fae7e59741289.js
similarity index 100%
rename from 南风/js/lib/cheerio.min.js
rename to 南风/api/9af1556538d03232337fae7e59741289.js
diff --git a/南风/js/lib/crypto-js.js b/南风/api/ab53c890d5a64daafcf2b7631d21c1b9.js
similarity index 100%
rename from 南风/js/lib/crypto-js.js
rename to 南风/api/ab53c890d5a64daafcf2b7631d21c1b9.js
diff --git a/南风/api/drpy2.min.js b/南风/api/drpy2.min.js
new file mode 100644
index 0000000..4c928a7
--- /dev/null
+++ b/南风/api/drpy2.min.js
@@ -0,0 +1 @@
+import cheerio from"./9af1556538d03232337fae7e59741289.js";import"./ab53c890d5a64daafcf2b7631d21c1b9.js";import"./e9af2d0f3bf60d8b67b45615a9c474a3.js";import 模板 from"./6c0debf8abd68630086d31eb3f1dd285.js";import{gbkTool}from"./491cbabc17362406a4ddc6f64ac6ad3f.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")}function pre(){if(typeof rule.预处理==="string"&&rule.预处理&&rule.预处理.trim()){let code=rule.预处理.trim();console.log("执行预处理代码:"+code);if(code.startsWith("js:")){code=code.replace("js:","")}try{eval(code)}catch(e){console.log("预处理执行失败:"+e.message)}}}let rule={};let vercode=typeof pdfl==="function"?"drpy2.1":"drpy2";const VERSION=vercode+" 3.9.49beta40 202400426";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="猜你|喜欢|下载|剧情|热播";const OCR_RETRY=3;const OCR_API="http://drpy.nokia.press:8028/ocr/drpy/text";if(typeof MY_URL==="undefined"){var MY_URL}var HOST;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|-original|-src|-play|-url|style)$/;const SPECIAL_URL=/^(ftp|magnet|thunder|ws):/;const NOADD_INDEX=/:eq|:lt|:gt|:first|:last|^body$|^#/;const URLJOIN_ATTR=/(url|src|href|-original|-src|-play|-url|style)$/;const SELECT_REGEX=/:eq|:lt|:gt|#/g;const SELECT_REGEX_A=/:eq|:lt|:gt/g;if(typeof Object.assign!="function"){Object.assign=function(){let target=arguments[0];for(let 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{new_m3u8_body.push(it)})}}new_m3u8_body=new_m3u8_body.join("\n").trim();m3u8_text=[m3u8_start,new_m3u8_body,m3u8_end].join("\n").trim();return m3u8_text}function fixAdM3u8Ai(m3u8_url){let ts=(new Date).getTime();function b(s1,s2){let i=0;while(iit.startsWith("#")?it:urljoin(m3u8_url,it)).join("\n");let last_url=m3u8.split("\n").slice(-1)[0];if(last_url.includes(".m3u8")&&last_url!==m3u8_url){m3u8_url=last_url;m3u8=request(m3u8_url)}let s=m3u8.trim().split("\n").filter(it=>it.trim()).join("\n");let ss=s.split("\n");let firststr=ss.find(x=>!x.startsWith("#"));let maxl=0;let firststrlen=firststr.length;let ml=Math.round(ss.length/2).toString().length;let laststr=ss.toReversed().find(x=>{if(!x.startsWith("#")){let k=b(reverseString(firststr),reverseString(x));maxl=b(firststr,x);if(firststrlen-maxl<=ml+k){return true}}return false});log("最后一条切片:"+laststr);let ad_urls=[];for(let i=0;i=end){return lists}let first=lists[start];let second=lists[end];if(key){try{first=first[key];second=second[key]}catch(e){}}if(option&&typeof option==="function"){try{first=option(first);second=option(second)}catch(e){}}first+="";second+="";if(first.match(/(\d+)/)&&second.match(/(\d+)/)){let num1=Number(first.match(/(\d+)/)[1]);let num2=Number(second.match(/(\d+)/)[1]);if(num1>num2){lists.reverse()}}return lists}let VODS=[];let VOD={};let TABS=[];let LISTS=[];globalThis.encodeUrl=urlencode;globalThis.urlencode=urlencode;function urljoin(fromPath,nowPath){fromPath=fromPath||"";nowPath=nowPath||"";return joinUrl(fromPath,nowPath)}var urljoin2=urljoin;const defaultParser={pdfh:pdfh,pdfa:pdfa,pd:pd};function pdfh2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print("html对象转文本发生了错误:"+e.message)}let result=defaultParser.pdfh(html2,parse);let option=parse.includes("&&")?parse.split("&&").slice(-1)[0]:parse.split(" ").slice(-1)[0];if(/style/.test(option.toLowerCase())&&/url\(/.test(result)){try{result=result.match(/url\((.*?)\)/)[1];result=result.replace(/^['|"](.*)['|"]$/,"$1")}catch(e){}}return result}function pdfa2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print("html对象转文本发生了错误:"+e.message)}return defaultParser.pdfa(html2,parse)}function pd2(html,parse,uri){let ret=pdfh2(html,parse);if(typeof uri==="undefined"||!uri){uri=""}if(DOM_CHECK_ATTR.test(parse)&&!SPECIAL_URL.test(ret)){if(/http/.test(ret)){ret=ret.slice(ret.indexOf("http"))}else{ret=urljoin(MY_URL,ret)}}return ret}const parseTags={jsp:{pdfh:pdfh2,pdfa:pdfa2,pd:pd2},json:{pdfh(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}parse=parse.split("||");for(let ps of parse){let ret=cheerio.jp(ps,html);if(Array.isArray(ret)){ret=ret[0]||""}else{ret=ret||""}if(ret&&typeof ret!=="string"){ret=ret.toString()}if(ret){return ret}}return""},pdfa(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}let ret=cheerio.jp(parse,html);if(Array.isArray(ret)&&Array.isArray(ret[0])&&ret.length===1){return ret[0]||[]}return ret||[]},pd(html,parse){let ret=parseTags.json.pdfh(html,parse);if(ret){return urljoin(MY_URL,ret)}return ret}},jq:{pdfh(html,parse){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();let result=defaultParser.pdfh(html,parse);return result},pdfa(html,parse){if(!html||!parse||!parse.trim()){return[]}parse=parse.trim();let result=defaultParser.pdfa(html,parse);print(`pdfa解析${parse}=>${result.length}`);return result},pd(html,parse,base_url){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();base_url=base_url||MY_URL;return defaultParser.pd(html,parse,base_url)}},getParse(p0){if(p0.startsWith("jsp:")){return this.jsp}else if(p0.startsWith("json:")){return this.json}else if(p0.startsWith("jq:")){return this.jq}else{return this.jq}}};const stringify=JSON.stringify;const jsp=parseTags.jsp;const jq=parseTags.jq;function readFile(filePath){filePath=filePath||"./uri.min.js";var fd=os.open(filePath);var buffer=new ArrayBuffer(1024);var len=os.read(fd,buffer,0,1024);console.log(len);let text=String.fromCharCode.apply(null,new Uint8Array(buffer));console.log(text);return text}function dealJson(html){try{html=html.trim();if(!(html.startsWith("{")&&html.endsWith("}")||html.startsWith("[")&&html.endsWith("]"))){html="{"+html.match(/.*?\{(.*)\}/m)[1]+"}"}}catch(e){}try{html=JSON.parse(html)}catch(e){}return html}var OcrApi={api:OCR_API,classification:function(img){let code="";try{log("通过drpy_ocr验证码接口过验证...");let html=request(OCR_API,{data:{img:img},headers:{"User-Agent":PC_UA},method:"POST"},true);code=html||""}catch(e){log(`OCR识别验证码发生错误:${e.message}`)}return code}};function verifyCode(url){let cnt=0;let host=getHome(url);let cookie="";while(cntit.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)}if(!fetch_params){fetch_params={}}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.hasOwnProperty("content-type")){obj.headers["Content-Type"]="text/html; charset="+rule.encoding}}if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="string"){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="application/x-www-form-urlencoded; charset="+rule.encoding}}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}if(obj.redirect===false){obj.redirect=0}console.log(JSON.stringify(obj.headers));console.log("request:"+url+`|method:${obj.method||"GET"}|body:${obj.body||""}`);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=="object"&&Object.keys(data).length>0){try{data=JSON.stringify(data);console.log(data)}catch(e){console.log(typeof data+":"+data.length);return}}else if(typeof data=="object"&&Object.keys(data).length<1){console.log("null object")}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;print("宝塔验证访问链接:"+url);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")){log("历史无cookie,新增过验证后的cookie");obj.headers["Cookie"]=cookie}else if(obj.headers&&obj.headers.cookie&&obj.headers.cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有小写过期的cookie,更新过验证后的cookie")}else if(obj.headers&&obj.headers.Cookie&&obj.headers.Cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有大写过期的cookie,更新过验证后的cookie")}else if(!obj.headers){obj.headers={Cookie:cookie};log("历史无headers,更新过验证后的含cookie的headers")}}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;i0){classes=list}}}catch(e){console.log(e.message)}}else if(p.length>=3&&!is_json){try{let html=getHtml(homeObj.MY_URL);if(html){homeHtmlCache=html;let list=_pdfa(html,p0);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){try{let ps=p[pn]==="*"&&pp.length>ppn?pp[ppn]:p[pn];return ps}catch(e){return""}}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;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);let p1=getPP(p,1,pp,0);let p2=getPP(p,2,pp,1);let p3=getPP(p,3,pp,2);let p4=getPP(p,4,pp,3);let p5=getPP(p,5,pp,4);let p6=getPP(p,6,pp,5);for(let item of items){let items2=_pdfa(item,p1);for(let item2 of items2){try{let title=_pdfh(item2,p2);let img="";try{img=_pd(item2,p3)}catch(e){}let desc="";try{desc=_pdfh(item2,p4)}catch(e){}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]){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);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 p5=getPP(p,5,pp,5);for(let item of items){try{let title=_pdfh(item,p1);let img="";try{img=_pd(item,p2,MY_URL)}catch(e){}let desc="";try{desc=_pdfh(item,p3)}catch(e){}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]){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){console.log("首页列表单层定位处理发生错误:"+e.message)}}}}catch(e){}}let t2=(new Date).getTime();console.log("加载首页推荐耗时:"+(t2-t1)+"毫秒");if(rule.图片替换&&rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}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(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]}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});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)}}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)}}if(rule.图片替换&&rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}let pagecount=0;if(rule.pagecount&&typeof rule.pagecount==="object"&&rule.pagecount.hasOwnProperty(MY_CATE)){print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`);pagecount=parseInt(rule.pagecount[MY_CATE])}let nodata={list:[{vod_name:"无数据,防无限请求",vod_id:"no_data",vod_remarks:"不要点,会崩的",vod_pic:"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"}],total:1,pagecount:1,page:1,limit:1};let vod=d.length<1?JSON.stringify(nodata):JSON.stringify({page:parseInt(cateObj.pg),pagecount:pagecount||999,limit:20,total:999,list:d});return vod}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);if(searchObj.pg===1&&url.includes("[")&&url.includes("]")&&!url.includes("#")){url=url.split("[")[1].split("]")[0]}else if(searchObj.pg>1&&url.includes("[")&&url.includes("]")&&!url.includes("#")){url=url.split("[")[0]}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",searchObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.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 req_method=MY_URL.split(";").length>1?MY_URL.split(";")[1].toLowerCase():"get";let html;if(req_method==="post"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`post=》rurl:${rurl},params:${params}`);let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else if(req_method==="postjson"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`postjson-》rurl:${rurl},params:${params}`);try{params=JSON.parse(params)}catch(e){params="{}"}let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else{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)}let list=_pdfa(html,p0);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 p5=getPP(p,5,pp,5);list.forEach(it=>{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]){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"{}"}}if(rule.图片替换&&rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}return JSON.stringify({page:parseInt(searchObj.pg),pagecount:10,limit:20,total:100,list:d})}function detailParse(detailObj){let t1=(new Date).getTime();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;if(detailObj.二级访问前){try{print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`);eval(detailObj.二级访问前.trim().replace("js:",""))}catch(e){print(`二级访问前执行代码出现错误:${e.message}`)}}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"){let tt1=(new Date).getTime();if(!html){html=getHtml(MY_URL)}print(`二级${MY_URL}仅获取源码耗时:${(new Date).getTime()-tt1}毫秒`);let _ps;if(p.is_json){print("二级是json");_ps=parseTags.json;html=dealJson(html)}else if(p.is_jsp){print("二级是jsp");_ps=parseTags.jsp}else if(p.is_jq){print("二级是jq");_ps=parseTags.jq}else{print("二级默认jq");_ps=parseTags.jq}let tt2=(new Date).getTime();print(`二级${MY_URL}获取并装载源码耗时:${tt2-tt1}毫秒`);_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(p.tabs){if(p.tabs.startsWith("js:")){print("开始执行tabs代码:"+p.tabs);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";let new_map={};for(let v of vHeader){let v_title=_pdfh(v,tab_text).trim();if(!v_title){v_title="线路空"}console.log(v_title);if(tab_exclude&&new RegExp(tab_exclude).test(v_title)){continue}if(!new_map.hasOwnProperty(v_title)){new_map[v_title]=1}else{new_map[v_title]+=1}if(new_map[v_title]>1){v_title+=Number(new_map[v_title]-1)}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);try{var input=MY_URL;var play_url="";eval(p.lists.replace("js:",""));for(let i in LISTS){if(LISTS.hasOwnProperty(i)){try{LISTS[i]=LISTS[i].map(it=>it.split("$").slice(0,2).join("$"))}catch(e){print("格式化LISTS发生错误:"+e.message)}}}vod_play_url=LISTS.map(it=>it.join("#")).join(vod_play_url)}catch(e){print("js执行lists: 发生错误:"+e.message)}}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);let tabName=tab_ext?_pdfh(html,tab_ext):tab_name;console.log(tabName);let new_vod_list=[];let tt1=(new Date).getTime();if(typeof pdfl==="function"){new_vod_list=pdfl(html,p1,list_text,list_url,MY_URL)}else{let vodList=[];try{vodList=_pdfa(html,p1);console.log("len(vodList):"+vodList.length)}catch(e){}for(let i=0;i0){new_vod_list=forceOrder(new_vod_list,"",x=>x.split("$")[0]);console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date).getTime()-tt1}毫秒`)}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(rule.图片替换&&rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];vod.vod_pic=vod.vod_pic.replace(replace_from,replace_to)}if(rule.图片来源&&vod.vod_pic&&vod.vod_pic.startsWith("http")){vod.vod_pic=vod.vod_pic+rule.图片来源}if(!vod.vod_id||vod_id.includes("$")&&vod.vod_id!==vod_id){vod.vod_id=vod_id}let t2=(new Date).getTime();console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`);vod=vodDeal(vod);return JSON.stringify({list:[vod]})}function get_tab_index(vod){let obj={};vod.vod_play_from.split("$$$").forEach((it,index)=>{obj[it]=index});return obj}function vodDeal(vod){let vod_play_from=vod.vod_play_from.split("$$$");let vod_play_url=vod.vod_play_url.split("$$$");let tab_removed_list=vod_play_from;let tab_ordered_list=vod_play_from;let tab_renamed_list=vod_play_from;let tab_list=vod_play_from;let play_ordered_list=vod_play_url;if(rule.tab_remove&&rule.tab_remove.length>0||rule.tab_order&&rule.tab_order.length>0){let tab_index_dict=get_tab_index(vod);if(rule.tab_remove&&rule.tab_remove.length>0){tab_removed_list=vod_play_from.filter(it=>!rule.tab_remove.includes(it));tab_list=tab_removed_list}if(rule.tab_order&&rule.tab_order.length>0){let tab_order=rule.tab_order;tab_ordered_list=tab_removed_list.sort((a,b)=>{return(tab_order.indexOf(a)===-1?9999:tab_order.indexOf(a))-(tab_order.indexOf(b)===-1?9999:tab_order.indexOf(b))});tab_list=tab_ordered_list}play_ordered_list=tab_list.map(it=>vod_play_url[tab_index_dict[it]])}if(rule.tab_rename&&typeof rule.tab_rename==="object"&Object.keys(rule.tab_rename).length>0){tab_renamed_list=tab_list.map(it=>rule.tab_rename[it]||it);tab_list=tab_renamed_list}vod.vod_play_from=tab_list.join("$$$");vod.vod_play_url=play_ordered_list.join("$$$");return 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;var MY_FLAG=playObj.flag;if(!/http/.test(MY_URL)){try{MY_URL=base64Decode(MY_URL)}catch(e){}}MY_URL=decodeURIComponent(MY_URL);var input=MY_URL;var flag=MY_FLAG;let common_play={parse:1,url:input,flag:flag,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 proxyParse(proxyObj){var input=proxyObj.params;if(proxyObj.proxy_rule){log("准备执行本地代理规则:\n"+proxyObj.proxy_rule);try{eval(proxyObj.proxy_rule);if(input&&input!==proxyObj.params&&Array.isArray(input)&&input.length===3){return input}else{return[404,"text/plain","Not Found"]}}catch(e){return[500,"text/plain","代理规则错误:"+e.message]}}else{return[404,"text/plain","Not Found"]}}function isVideoParse(isVideoObj){var input=isVideoObj.url;if(!isVideoObj.t){let re_matcher=new RegExp(isVideoObj.isVideo,"i");return re_matcher.test(input)}else{try{eval(isVideoObj.isVideo);if(typeof input==="boolean"){return input}else{return false}}catch(e){log("执行嗅探规则发生错误:"+e.message);return false}}}function init(ext){console.log("init");try{let muban=模板.getMubans();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("/");HOST=rule.host;if(rule.hostJs){console.log(`检测到hostJs,准备执行...`);try{eval(rule.hostJs);rule.host=HOST.rstrip("/")}catch(e){console.log(`执行${rule.hostJs}获取host发生错误:`+e.message)}}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.homeUrl=cheerio.jinja2(rule.homeUrl,{rule:rule});rule.detailUrl=rule.host&&rule.detailUrl?urljoin(rule.host,rule.detailUrl):rule.detailUrl;rule.二级访问前=rule.二级访问前||"";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}if(rule.searchUrl.includes("[")&&rule.searchUrl.includes("]")&&!rule.searchUrl.includes("#")){let u1=rule.searchUrl.split("[")[0];let u2=rule.searchUrl.split("[")[1].split("]")[0];rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.searchUrl}else{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.search_encoding=rule.搜索编码||rule.search_encoding||"";rule.图片来源=rule.图片来源||"";rule.图片替换=rule.图片替换||"";rule.play_json=rule.hasOwnProperty("play_json")?rule.play_json:[];rule.pagecount=rule.hasOwnProperty("pagecount")?rule.pagecount:{};rule.proxy_rule=rule.hasOwnProperty("proxy_rule")?rule.proxy_rule:"";rule.sniffer=rule.hasOwnProperty("sniffer")?rule.sniffer:"";rule.sniffer=!!(rule.sniffer&&rule.sniffer!=="0"&&rule.sniffer!=="false");rule.isVideo=rule.hasOwnProperty("isVideo")?rule.isVideo:"";rule.tab_remove=rule.hasOwnProperty("tab_remove")?rule.tab_remove:[];rule.tab_order=rule.hasOwnProperty("tab_order")?rule.tab_order:[];rule.tab_rename=rule.hasOwnProperty("tab_rename")?rule.tab_rename:{};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)}}else if(k.toLowerCase()==="cookie"){let v=rule.headers[k];if(v&&v.startsWith("http")){console.log(v);try{v=fetch(v);console.log(v);rule.headers[k]=v}catch(e){console.log(`从${v}获取cookie发生错误:`+e.message)}}}}}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);pre();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="";log("orId:"+orId);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.二级,"二级访问前":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,pg){if(rule.search_encoding){if(rule.search_encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.search_encoding)}}else if(rule.encoding&&rule.encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.encoding)}let searchObj={searchUrl:rule.searchUrl,"搜索":rule.搜索,wd:wd,pg:pg||1,quick:quick};return searchParse(searchObj)}function proxy(params){if(rule.proxy_rule&&rule.proxy_rule.trim()){rule.proxy_rule=rule.proxy_rule.trim()}if(rule.proxy_rule.startsWith("js:")){rule.proxy_rule=rule.proxy_rule.replace("js:","")}let proxyObj={params:params,proxy_rule:rule.proxy_rule};return proxyParse(proxyObj)}function sniffer(){let enable_sniffer=rule.sniffer||false;if(enable_sniffer){log("开始执行辅助嗅探代理规则...")}return enable_sniffer}function isVideo(url){let t=0;let is_video;if(rule.isVideo&&rule.isVideo.trim()){is_video=rule.isVideo.trim()}if(is_video.startsWith("js:")){is_video=is_video.replace("js:","");t=1}let isVideoObj={url:url,isVideo:is_video,t:t};let result=isVideoParse(isVideoObj);if(result){log("成功执行辅助嗅探规则并检测到视频地址:\n"+rule.isVideo)}return result}function DRPY(){return{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,sniffer:sniffer,isVideo:isVideo}}export default{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,sniffer:sniffer,isVideo:isVideo,DRPY:DRPY};
\ No newline at end of file
diff --git a/南风/js/lib/jsencrypt.js b/南风/api/e9af2d0f3bf60d8b67b45615a9c474a3.js
similarity index 100%
rename from 南风/js/lib/jsencrypt.js
rename to 南风/api/e9af2d0f3bf60d8b67b45615a9c474a3.js
diff --git a/南风/js/lib/drpy2.min.js b/南风/js/lib/drpy2.min.js
deleted file mode 100644
index 04dc2e0..0000000
--- a/南风/js/lib/drpy2.min.js
+++ /dev/null
@@ -1 +0,0 @@
-import cheerio from"https://ghproxy.net/https://raw.githubusercontent.com/yoursmile66/TVBox/main/js/lib/cheerio.min.js";import"https://ghproxy.net/https://raw.githubusercontent.com/yoursmile66/TVBox/main/js/lib/crypto-js.js";import"https://ghproxy.net/https://raw.githubusercontent.com/yoursmile66/TVBox/main/js/lib/jsencrypt.js";import 模板 from"https://ghproxy.net/https://raw.githubusercontent.com/yoursmile66/TVBox/main/js/lib/模板.js";import{gbkTool}from"https://ghproxy.net/https://raw.githubusercontent.com/yoursmile66/TVBox/main/js/lib/gbk.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")}function pre(){if(typeof rule.预处理==="string"&&rule.预处理&&rule.预处理.trim()){let code=rule.预处理.trim();console.log("执行预处理代码:"+code);if(code.startsWith("js:")){code=code.replace("js:","")}try{eval(code)}catch(e){console.log("预处理执行失败:"+e.message)}}}let rule={};let vercode=typeof pdfl==="function"?"drpy2.1":"drpy2";const VERSION=vercode+" 3.9.49beta40 202400426";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="猜你|喜欢|下载|剧情|热播";const OCR_RETRY=3;const OCR_API="http://drpy.nokia.press:8028/ocr/drpy/text";if(typeof MY_URL==="undefined"){var MY_URL}var HOST;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|-original|-src|-play|-url|style)$/;const SPECIAL_URL=/^(ftp|magnet|thunder|ws):/;const NOADD_INDEX=/:eq|:lt|:gt|:first|:last|^body$|^#/;const URLJOIN_ATTR=/(url|src|href|-original|-src|-play|-url|style)$/;const SELECT_REGEX=/:eq|:lt|:gt|#/g;const SELECT_REGEX_A=/:eq|:lt|:gt/g;if(typeof Object.assign!="function"){Object.assign=function(){let target=arguments[0];for(let 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{new_m3u8_body.push(it)})}}new_m3u8_body=new_m3u8_body.join("\n").trim();m3u8_text=[m3u8_start,new_m3u8_body,m3u8_end].join("\n").trim();return m3u8_text}function fixAdM3u8Ai(m3u8_url){let ts=(new Date).getTime();function b(s1,s2){let i=0;while(iit.startsWith("#")?it:urljoin(m3u8_url,it)).join("\n");let last_url=m3u8.split("\n").slice(-1)[0];if(last_url.includes(".m3u8")&&last_url!==m3u8_url){m3u8_url=last_url;m3u8=request(m3u8_url)}let s=m3u8.trim().split("\n").filter(it=>it.trim()).join("\n");let ss=s.split("\n");let firststr=ss.find(x=>!x.startsWith("#"));let maxl=0;let firststrlen=firststr.length;let ml=Math.round(ss.length/2).toString().length;let laststr=ss.toReversed().find(x=>{if(!x.startsWith("#")){let k=b(reverseString(firststr),reverseString(x));maxl=b(firststr,x);if(firststrlen-maxl<=ml+k){return true}}return false});log("最后一条切片:"+laststr);let ad_urls=[];for(let i=0;i=end){return lists}let first=lists[start];let second=lists[end];if(key){try{first=first[key];second=second[key]}catch(e){}}if(option&&typeof option==="function"){try{first=option(first);second=option(second)}catch(e){}}first+="";second+="";if(first.match(/(\d+)/)&&second.match(/(\d+)/)){let num1=Number(first.match(/(\d+)/)[1]);let num2=Number(second.match(/(\d+)/)[1]);if(num1>num2){lists.reverse()}}return lists}let VODS=[];let VOD={};let TABS=[];let LISTS=[];globalThis.encodeUrl=urlencode;globalThis.urlencode=urlencode;function urljoin(fromPath,nowPath){fromPath=fromPath||"";nowPath=nowPath||"";return joinUrl(fromPath,nowPath)}var urljoin2=urljoin;const defaultParser={pdfh:pdfh,pdfa:pdfa,pd:pd};function pdfh2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print("html对象转文本发生了错误:"+e.message)}let result=defaultParser.pdfh(html2,parse);let option=parse.includes("&&")?parse.split("&&").slice(-1)[0]:parse.split(" ").slice(-1)[0];if(/style/.test(option.toLowerCase())&&/url\(/.test(result)){try{result=result.match(/url\((.*?)\)/)[1];result=result.replace(/^['|"](.*)['|"]$/,"$1")}catch(e){}}return result}function pdfa2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print("html对象转文本发生了错误:"+e.message)}return defaultParser.pdfa(html2,parse)}function pd2(html,parse,uri){let ret=pdfh2(html,parse);if(typeof uri==="undefined"||!uri){uri=""}if(DOM_CHECK_ATTR.test(parse)&&!SPECIAL_URL.test(ret)){if(/http/.test(ret)){ret=ret.slice(ret.indexOf("http"))}else{ret=urljoin(MY_URL,ret)}}return ret}const parseTags={jsp:{pdfh:pdfh2,pdfa:pdfa2,pd:pd2},json:{pdfh(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}parse=parse.split("||");for(let ps of parse){let ret=cheerio.jp(ps,html);if(Array.isArray(ret)){ret=ret[0]||""}else{ret=ret||""}if(ret&&typeof ret!=="string"){ret=ret.toString()}if(ret){return ret}}return""},pdfa(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}let ret=cheerio.jp(parse,html);if(Array.isArray(ret)&&Array.isArray(ret[0])&&ret.length===1){return ret[0]||[]}return ret||[]},pd(html,parse){let ret=parseTags.json.pdfh(html,parse);if(ret){return urljoin(MY_URL,ret)}return ret}},jq:{pdfh(html,parse){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();let result=defaultParser.pdfh(html,parse);return result},pdfa(html,parse){if(!html||!parse||!parse.trim()){return[]}parse=parse.trim();let result=defaultParser.pdfa(html,parse);print(`pdfa解析${parse}=>${result.length}`);return result},pd(html,parse,base_url){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();base_url=base_url||MY_URL;return defaultParser.pd(html,parse,base_url)}},getParse(p0){if(p0.startsWith("jsp:")){return this.jsp}else if(p0.startsWith("json:")){return this.json}else if(p0.startsWith("jq:")){return this.jq}else{return this.jq}}};const stringify=JSON.stringify;const jsp=parseTags.jsp;const jq=parseTags.jq;function readFile(filePath){filePath=filePath||"./uri.min.js";var fd=os.open(filePath);var buffer=new ArrayBuffer(1024);var len=os.read(fd,buffer,0,1024);console.log(len);let text=String.fromCharCode.apply(null,new Uint8Array(buffer));console.log(text);return text}function dealJson(html){try{html=html.trim();if(!(html.startsWith("{")&&html.endsWith("}")||html.startsWith("[")&&html.endsWith("]"))){html="{"+html.match(/.*?\{(.*)\}/m)[1]+"}"}}catch(e){}try{html=JSON.parse(html)}catch(e){}return html}var OcrApi={api:OCR_API,classification:function(img){let code="";try{log("通过drpy_ocr验证码接口过验证...");let html=request(OCR_API,{data:{img:img},headers:{"User-Agent":PC_UA},method:"POST"},true);code=html||""}catch(e){log(`OCR识别验证码发生错误:${e.message}`)}return code}};function verifyCode(url){let cnt=0;let host=getHome(url);let cookie="";while(cntit.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)}if(!fetch_params){fetch_params={}}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.hasOwnProperty("content-type")){obj.headers["Content-Type"]="text/html; charset="+rule.encoding}}if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="string"){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="application/x-www-form-urlencoded; charset="+rule.encoding}}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}if(obj.redirect===false){obj.redirect=0}console.log(JSON.stringify(obj.headers));console.log("request:"+url+`|method:${obj.method||"GET"}|body:${obj.body||""}`);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=="object"&&Object.keys(data).length>0){try{data=JSON.stringify(data);console.log(data)}catch(e){console.log(typeof data+":"+data.length);return}}else if(typeof data=="object"&&Object.keys(data).length<1){console.log("null object")}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;print("宝塔验证访问链接:"+url);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")){log("历史无cookie,新增过验证后的cookie");obj.headers["Cookie"]=cookie}else if(obj.headers&&obj.headers.cookie&&obj.headers.cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有小写过期的cookie,更新过验证后的cookie")}else if(obj.headers&&obj.headers.Cookie&&obj.headers.Cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有大写过期的cookie,更新过验证后的cookie")}else if(!obj.headers){obj.headers={Cookie:cookie};log("历史无headers,更新过验证后的含cookie的headers")}}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;i0){classes=list}}}catch(e){console.log(e.message)}}else if(p.length>=3&&!is_json){try{let html=getHtml(homeObj.MY_URL);if(html){homeHtmlCache=html;let list=_pdfa(html,p0);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){try{let ps=p[pn]==="*"&&pp.length>ppn?pp[ppn]:p[pn];return ps}catch(e){return""}}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;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);let p1=getPP(p,1,pp,0);let p2=getPP(p,2,pp,1);let p3=getPP(p,3,pp,2);let p4=getPP(p,4,pp,3);let p5=getPP(p,5,pp,4);let p6=getPP(p,6,pp,5);for(let item of items){let items2=_pdfa(item,p1);for(let item2 of items2){try{let title=_pdfh(item2,p2);let img="";try{img=_pd(item2,p3)}catch(e){}let desc="";try{desc=_pdfh(item2,p4)}catch(e){}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]){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);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 p5=getPP(p,5,pp,5);for(let item of items){try{let title=_pdfh(item,p1);let img="";try{img=_pd(item,p2,MY_URL)}catch(e){}let desc="";try{desc=_pdfh(item,p3)}catch(e){}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]){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){console.log("首页列表单层定位处理发生错误:"+e.message)}}}}catch(e){}}let t2=(new Date).getTime();console.log("加载首页推荐耗时:"+(t2-t1)+"毫秒");if(rule.图片替换&&rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}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(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]}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});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)}}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)}}if(rule.图片替换&&rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}let pagecount=0;if(rule.pagecount&&typeof rule.pagecount==="object"&&rule.pagecount.hasOwnProperty(MY_CATE)){print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`);pagecount=parseInt(rule.pagecount[MY_CATE])}let nodata={list:[{vod_name:"无数据,防无限请求",vod_id:"no_data",vod_remarks:"不要点,会崩的",vod_pic:"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"}],total:1,pagecount:1,page:1,limit:1};let vod=d.length<1?JSON.stringify(nodata):JSON.stringify({page:parseInt(cateObj.pg),pagecount:pagecount||999,limit:20,total:999,list:d});return vod}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);if(searchObj.pg===1&&url.includes("[")&&url.includes("]")&&!url.includes("#")){url=url.split("[")[1].split("]")[0]}else if(searchObj.pg>1&&url.includes("[")&&url.includes("]")&&!url.includes("#")){url=url.split("[")[0]}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",searchObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.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 req_method=MY_URL.split(";").length>1?MY_URL.split(";")[1].toLowerCase():"get";let html;if(req_method==="post"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`post=》rurl:${rurl},params:${params}`);let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else if(req_method==="postjson"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`postjson-》rurl:${rurl},params:${params}`);try{params=JSON.parse(params)}catch(e){params="{}"}let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else{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)}let list=_pdfa(html,p0);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 p5=getPP(p,5,pp,5);list.forEach(it=>{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]){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"{}"}}if(rule.图片替换&&rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}return JSON.stringify({page:parseInt(searchObj.pg),pagecount:10,limit:20,total:100,list:d})}function detailParse(detailObj){let t1=(new Date).getTime();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;if(detailObj.二级访问前){try{print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`);eval(detailObj.二级访问前.trim().replace("js:",""))}catch(e){print(`二级访问前执行代码出现错误:${e.message}`)}}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"){let tt1=(new Date).getTime();if(!html){html=getHtml(MY_URL)}print(`二级${MY_URL}仅获取源码耗时:${(new Date).getTime()-tt1}毫秒`);let _ps;if(p.is_json){print("二级是json");_ps=parseTags.json;html=dealJson(html)}else if(p.is_jsp){print("二级是jsp");_ps=parseTags.jsp}else if(p.is_jq){print("二级是jq");_ps=parseTags.jq}else{print("二级默认jq");_ps=parseTags.jq}let tt2=(new Date).getTime();print(`二级${MY_URL}获取并装载源码耗时:${tt2-tt1}毫秒`);_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(p.tabs){if(p.tabs.startsWith("js:")){print("开始执行tabs代码:"+p.tabs);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";let new_map={};for(let v of vHeader){let v_title=_pdfh(v,tab_text).trim();if(!v_title){v_title="线路空"}console.log(v_title);if(tab_exclude&&new RegExp(tab_exclude).test(v_title)){continue}if(!new_map.hasOwnProperty(v_title)){new_map[v_title]=1}else{new_map[v_title]+=1}if(new_map[v_title]>1){v_title+=Number(new_map[v_title]-1)}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);try{var input=MY_URL;var play_url="";eval(p.lists.replace("js:",""));for(let i in LISTS){if(LISTS.hasOwnProperty(i)){try{LISTS[i]=LISTS[i].map(it=>it.split("$").slice(0,2).join("$"))}catch(e){print("格式化LISTS发生错误:"+e.message)}}}vod_play_url=LISTS.map(it=>it.join("#")).join(vod_play_url)}catch(e){print("js执行lists: 发生错误:"+e.message)}}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);let tabName=tab_ext?_pdfh(html,tab_ext):tab_name;console.log(tabName);let new_vod_list=[];let tt1=(new Date).getTime();if(typeof pdfl==="function"){new_vod_list=pdfl(html,p1,list_text,list_url,MY_URL)}else{let vodList=[];try{vodList=_pdfa(html,p1);console.log("len(vodList):"+vodList.length)}catch(e){}for(let i=0;i0){new_vod_list=forceOrder(new_vod_list,"",x=>x.split("$")[0]);console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date).getTime()-tt1}毫秒`)}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(rule.图片替换&&rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];vod.vod_pic=vod.vod_pic.replace(replace_from,replace_to)}if(rule.图片来源&&vod.vod_pic&&vod.vod_pic.startsWith("http")){vod.vod_pic=vod.vod_pic+rule.图片来源}if(!vod.vod_id||vod_id.includes("$")&&vod.vod_id!==vod_id){vod.vod_id=vod_id}let t2=(new Date).getTime();console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`);vod=vodDeal(vod);return JSON.stringify({list:[vod]})}function get_tab_index(vod){let obj={};vod.vod_play_from.split("$$$").forEach((it,index)=>{obj[it]=index});return obj}function vodDeal(vod){let vod_play_from=vod.vod_play_from.split("$$$");let vod_play_url=vod.vod_play_url.split("$$$");let tab_removed_list=vod_play_from;let tab_ordered_list=vod_play_from;let tab_renamed_list=vod_play_from;let tab_list=vod_play_from;let play_ordered_list=vod_play_url;if(rule.tab_remove&&rule.tab_remove.length>0||rule.tab_order&&rule.tab_order.length>0){let tab_index_dict=get_tab_index(vod);if(rule.tab_remove&&rule.tab_remove.length>0){tab_removed_list=vod_play_from.filter(it=>!rule.tab_remove.includes(it));tab_list=tab_removed_list}if(rule.tab_order&&rule.tab_order.length>0){let tab_order=rule.tab_order;tab_ordered_list=tab_removed_list.sort((a,b)=>{return(tab_order.indexOf(a)===-1?9999:tab_order.indexOf(a))-(tab_order.indexOf(b)===-1?9999:tab_order.indexOf(b))});tab_list=tab_ordered_list}play_ordered_list=tab_list.map(it=>vod_play_url[tab_index_dict[it]])}if(rule.tab_rename&&typeof rule.tab_rename==="object"&Object.keys(rule.tab_rename).length>0){tab_renamed_list=tab_list.map(it=>rule.tab_rename[it]||it);tab_list=tab_renamed_list}vod.vod_play_from=tab_list.join("$$$");vod.vod_play_url=play_ordered_list.join("$$$");return 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;var MY_FLAG=playObj.flag;if(!/http/.test(MY_URL)){try{MY_URL=base64Decode(MY_URL)}catch(e){}}MY_URL=decodeURIComponent(MY_URL);var input=MY_URL;var flag=MY_FLAG;let common_play={parse:1,url:input,flag:flag,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 proxyParse(proxyObj){var input=proxyObj.params;if(proxyObj.proxy_rule){log("准备执行本地代理规则:\n"+proxyObj.proxy_rule);try{eval(proxyObj.proxy_rule);if(input&&input!==proxyObj.params&&Array.isArray(input)&&input.length===3){return input}else{return[404,"text/plain","Not Found"]}}catch(e){return[500,"text/plain","代理规则错误:"+e.message]}}else{return[404,"text/plain","Not Found"]}}function isVideoParse(isVideoObj){var input=isVideoObj.url;if(!isVideoObj.t){let re_matcher=new RegExp(isVideoObj.isVideo,"i");return re_matcher.test(input)}else{try{eval(isVideoObj.isVideo);if(typeof input==="boolean"){return input}else{return false}}catch(e){log("执行嗅探规则发生错误:"+e.message);return false}}}function init(ext){console.log("init");try{let muban=模板.getMubans();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("/");HOST=rule.host;if(rule.hostJs){console.log(`检测到hostJs,准备执行...`);try{eval(rule.hostJs);rule.host=HOST.rstrip("/")}catch(e){console.log(`执行${rule.hostJs}获取host发生错误:`+e.message)}}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.homeUrl=cheerio.jinja2(rule.homeUrl,{rule:rule});rule.detailUrl=rule.host&&rule.detailUrl?urljoin(rule.host,rule.detailUrl):rule.detailUrl;rule.二级访问前=rule.二级访问前||"";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}if(rule.searchUrl.includes("[")&&rule.searchUrl.includes("]")&&!rule.searchUrl.includes("#")){let u1=rule.searchUrl.split("[")[0];let u2=rule.searchUrl.split("[")[1].split("]")[0];rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.searchUrl}else{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.search_encoding=rule.搜索编码||rule.search_encoding||"";rule.图片来源=rule.图片来源||"";rule.图片替换=rule.图片替换||"";rule.play_json=rule.hasOwnProperty("play_json")?rule.play_json:[];rule.pagecount=rule.hasOwnProperty("pagecount")?rule.pagecount:{};rule.proxy_rule=rule.hasOwnProperty("proxy_rule")?rule.proxy_rule:"";rule.sniffer=rule.hasOwnProperty("sniffer")?rule.sniffer:"";rule.sniffer=!!(rule.sniffer&&rule.sniffer!=="0"&&rule.sniffer!=="false");rule.isVideo=rule.hasOwnProperty("isVideo")?rule.isVideo:"";rule.tab_remove=rule.hasOwnProperty("tab_remove")?rule.tab_remove:[];rule.tab_order=rule.hasOwnProperty("tab_order")?rule.tab_order:[];rule.tab_rename=rule.hasOwnProperty("tab_rename")?rule.tab_rename:{};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)}}else if(k.toLowerCase()==="cookie"){let v=rule.headers[k];if(v&&v.startsWith("http")){console.log(v);try{v=fetch(v);console.log(v);rule.headers[k]=v}catch(e){console.log(`从${v}获取cookie发生错误:`+e.message)}}}}}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);pre();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="";log("orId:"+orId);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.二级,"二级访问前":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,pg){if(rule.search_encoding){if(rule.search_encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.search_encoding)}}else if(rule.encoding&&rule.encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.encoding)}let searchObj={searchUrl:rule.searchUrl,"搜索":rule.搜索,wd:wd,pg:pg||1,quick:quick};return searchParse(searchObj)}function proxy(params){if(rule.proxy_rule&&rule.proxy_rule.trim()){rule.proxy_rule=rule.proxy_rule.trim()}if(rule.proxy_rule.startsWith("js:")){rule.proxy_rule=rule.proxy_rule.replace("js:","")}let proxyObj={params:params,proxy_rule:rule.proxy_rule};return proxyParse(proxyObj)}function sniffer(){let enable_sniffer=rule.sniffer||false;if(enable_sniffer){log("开始执行辅助嗅探代理规则...")}return enable_sniffer}function isVideo(url){let t=0;let is_video;if(rule.isVideo&&rule.isVideo.trim()){is_video=rule.isVideo.trim()}if(is_video.startsWith("js:")){is_video=is_video.replace("js:","");t=1}let isVideoObj={url:url,isVideo:is_video,t:t};let result=isVideoParse(isVideoObj);if(result){log("成功执行辅助嗅探规则并检测到视频地址:\n"+rule.isVideo)}return result}function DRPY(){return{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,sniffer:sniffer,isVideo:isVideo}}export default{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,sniffer:sniffer,isVideo:isVideo,DRPY:DRPY};
\ No newline at end of file
diff --git a/南风/sub/Bili.json b/南风/json/Bili.json
similarity index 100%
rename from 南风/sub/Bili.json
rename to 南风/json/Bili.json
diff --git a/南风/sub/Blixq.json b/南风/json/Blixq.json
similarity index 100%
rename from 南风/sub/Blixq.json
rename to 南风/json/Blixq.json
diff --git a/南风/sub/Blixs.json b/南风/json/Blixs.json
similarity index 100%
rename from 南风/sub/Blixs.json
rename to 南风/json/Blixs.json
diff --git a/南风/sub/alist.json b/南风/json/alist.json
similarity index 100%
rename from 南风/sub/alist.json
rename to 南风/json/alist.json
diff --git a/南风/sub/douban.json b/南风/json/douban.json
similarity index 100%
rename from 南风/sub/douban.json
rename to 南风/json/douban.json
diff --git a/南风/sub/jianpian.json b/南风/json/jianpian.json
similarity index 100%
rename from 南风/sub/jianpian.json
rename to 南风/json/jianpian.json
diff --git a/南风/sub/wogg.json b/南风/json/wogg.json
similarity index 100%
rename from 南风/sub/wogg.json
rename to 南风/json/wogg.json
diff --git a/南风/sub/youtube.json b/南风/json/youtube.json
similarity index 100%
rename from 南风/sub/youtube.json
rename to 南风/json/youtube.json
diff --git a/南风/sub/初中课堂.json b/南风/json/初中课堂.json
similarity index 100%
rename from 南风/sub/初中课堂.json
rename to 南风/json/初中课堂.json
diff --git a/南风/sub/小学课堂.json b/南风/json/小学课堂.json
similarity index 100%
rename from 南风/sub/小学课堂.json
rename to 南风/json/小学课堂.json
diff --git a/南风/sub/少儿教育.json b/南风/json/少儿教育.json
similarity index 100%
rename from 南风/sub/少儿教育.json
rename to 南风/json/少儿教育.json
diff --git a/南风/sub/网盘集合.json b/南风/json/网盘集合.json
similarity index 100%
rename from 南风/sub/网盘集合.json
rename to 南风/json/网盘集合.json
diff --git a/南风/sub/高中课堂.json b/南风/json/高中课堂.json
similarity index 100%
rename from 南风/sub/高中课堂.json
rename to 南风/json/高中课堂.json
diff --git a/南风/lives/live.txt b/南风/lives/Yoursmile.txt
similarity index 100%
rename from 南风/lives/live.txt
rename to 南风/lives/Yoursmile.txt
diff --git a/南风/jars/Yoursmile.jar b/南风/spider.jar
similarity index 100%
rename from 南风/jars/Yoursmile.jar
rename to 南风/spider.jar
diff --git a/南风/sub/NanFeng.gif b/南风/sub/NanFeng.gif
deleted file mode 100644
index c3ce363383310f8e0529156bb3725e6b47e88e21..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 48708
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%0D+nB)m6PWC_MM84
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