diff --git a/dc b/dc
index f679cf0..60623f3 100644
--- a/dc
+++ b/dc
@@ -20,6 +20,10 @@
"url": "https://ghproxy.cn/https://raw.githubusercontent.com/ls125781003/xyqonlinerule/main/XYQTVBox.json",
"name": "香雅情演示线路"
},
+ {
+ "url": "https://ghproxy.cn/https://raw.githubusercontent.com/ls125781003/tvboxtg/main/drpy_t3/api.json",
+ "name": "drpy_t3精选"
+ },
{
"url": "https://ghproxy.cn/https://raw.githubusercontent.com/ls125781003/tvboxtg/main/南风/api.json",
"name": "南风"
diff --git a/dc1 b/dc1
index 16bb092..a69aeab 100644
--- a/dc1
+++ b/dc1
@@ -20,6 +20,10 @@
"url": "https://ghproxy.cc/https://raw.githubusercontent.com/ls125781003/xyqonlinerule/main/XYQTVBox.json",
"name": "香雅情演示线路"
},
+ {
+ "url": "https://ghproxy.cc/https://raw.githubusercontent.com/ls125781003/tvboxtg/main/drpy_t3/api.json",
+ "name": "drpy_t3精选"
+ },
{
"url": "https://ghproxy.cc/https://raw.githubusercontent.com/ls125781003/tvboxtg/main/南风/api.json",
"name": "南风"
diff --git a/dc2 b/dc2
index 66eeacf..f7f2307 100644
--- a/dc2
+++ b/dc2
@@ -20,6 +20,10 @@
"url": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/ls125781003/xyqonlinerule/main/XYQTVBox.json",
"name": "香雅情演示线路"
},
+ {
+ "url": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/ls125781003/tvboxtg/main/drpy_t3/api.json",
+ "name": "drpy_t3精选"
+ },
{
"url": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/ls125781003/tvboxtg/main/南风/api.json",
"name": "南风"
diff --git a/drpy_t3/api.json b/drpy_t3/api.json
new file mode 100644
index 0000000..d598f59
--- /dev/null
+++ b/drpy_t3/api.json
@@ -0,0 +1,1078 @@
+{
+ "wallpaper": "https://tuapi.eees.cc/api.php?category=fengjing&type=302",
+ "homepage": "https://github.com/hjdhnx/hipy-server",
+ "homeLogo": "./img/logo500x200-1.png",
+ "spider": "./jar/pg.jar?md5=7633f8ea346c082b7aa163be58aed023",
+ "sites": [
+ {
+ "key": "hipy_js_360影视[官]",
+ "name": "360影视[官](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/360影视[官].js"
+ },
+ {
+ "key": "hipy_js_58动漫[漫]",
+ "name": "58动漫[漫](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/58动漫[漫].js"
+ },
+ {
+ "key": "hipy_js_88看球[球]",
+ "name": "88看球[球](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/88看球[球].js"
+ },
+ {
+ "key": "88Pan",
+ "name": "88网盘|网盘搜索",
+ "type": 3,
+ "api": "csp_EightEight",
+ "timeout": 60,
+ "ext": "./json/tokenm.json$$$https://662688.xyz$$$",
+ "style": {
+ "type": "list",
+ "ratio": 1.1
+ },
+ "order_num": 9999
+ },
+ {
+ "key": "hipy_js_阿里土豆[盘]",
+ "name": "阿里土豆[盘](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/阿里土豆[盘].js"
+ },
+ {
+ "key": "hipy_js_老白故事[box]",
+ "name": "老白故事[box](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/老白故事[box].js"
+ },
+ {
+ "key": "hipy_js_爱看机器人[虫]",
+ "name": "爱看机器人[虫](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/爱看机器人[虫].js"
+ },
+ {
+ "key": "hipy_js_爱看农民[优]",
+ "name": "爱看农民[优](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/爱看农民[优].js"
+ },
+
+ {
+ "key": "hipy_js_爱上你听书网[听]",
+ "name": "爱上你听书网[听](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/爱上你听书网[听].js"
+ },
+ {
+ "key": "hipy_js_贝乐虎[儿]",
+ "name": "贝乐虎[儿](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/贝乐虎[儿].js"
+ },
+ {
+ "key": "Local",
+ "name": "本地",
+ "type": 3,
+ "api": "csp_Local",
+ "order_num": 9999
+ },
+ {
+ "key": "DaPanSo",
+ "name": "大盘搜|网盘搜索",
+ "type": 3,
+ "api": "csp_DaPanSo",
+ "quickSearch": 1,
+ "changeable": 1,
+ "filterable": 1,
+ "timeout": 60,
+ "ext": "./json/tokenm.json$$$https://dapanso.com$$$proxy$$$1",
+ "order_num": 9999
+ },
+ {
+ "key": "hipy_js_豆瓣[官]",
+ "name": "豆瓣[官](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/豆瓣[官].js"
+ },
+ {
+ "key": "hipy_js_好趣网[播]",
+ "name": "好趣网[播](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/好趣网[播].js"
+ },
+ {
+ "key": "hipy_js_黑木耳资源[资]",
+ "name": "黑木耳资源[资](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/黑木耳资源[资].js"
+ },
+
+ {
+ "key": "hipy_js_剧圈圈",
+ "name": "剧圈圈(drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/剧圈圈.js"
+ },
+ {
+ "key": "hipy_js_咖啡影视",
+ "name": "咖啡影视(drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/咖啡影视.js"
+ },
+ {
+ "key": "hipy_js_可可影视[优]",
+ "name": "可可影视[优](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/可可影视[优].js"
+ },
+ {
+ "key": "酷狗",
+ "name": "酷狗",
+ "type": 3,
+ "api": "csp_Kugou",
+ "searchable": 1,
+ "changeable": 0,
+ "order_num": 9999
+ },
+
+ {
+ "key": "QuarkPanso",
+ "name": "夸克盘搜|夸克搜索",
+ "type": 3,
+ "api": "csp_QuarkPanso",
+ "quickSearch": 1,
+ "changeable": 1,
+ "filterable": 1,
+ "timeout": 60,
+ "ext": "./json/tokenm.json",
+ "style": {
+ "type": "list",
+ "ratio": 1.1
+ },
+ "order_num": 9999
+ },
+
+ {
+ "key": "hipy_js_六月听书[听]",
+ "name": "六月听书[听](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/六月听书[听].js"
+ },
+
+
+ {
+ "key": "秒搜",
+ "name": "秒搜|网盘搜索",
+ "type": 3,
+ "api": "csp_MiaoSou",
+ "timeout": 60,
+ "ext": "./json/tokenm.json",
+ "style": {
+ "type": "list",
+ "ratio": 1.1
+ },
+ "order_num": 9999
+ },
+
+ {
+ "key": "hipy_js_南瓜影视[优]",
+ "name": "南瓜影视[优](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/南瓜影视[优].js"
+ },
+
+ {
+ "key": "盘友圈",
+ "name": "盘友圈|网盘搜索",
+ "type": 3,
+ "api": "csp_Panyq",
+ "timeout": 60,
+ "ext": "./json/tokenm.json$$$site$$$proxy",
+ "order_num": 9999
+ },
+ {
+ "key": "PikaSo",
+ "name": "皮卡搜|网盘搜索",
+ "type": 3,
+ "api": "csp_PikaSo",
+ "quickSearch": 1,
+ "changeable": 1,
+ "filterable": 1,
+ "timeout": 60,
+ "ext": "./json/tokenm.json$$$https://www.pikaso.top/$$$None",
+ "style": {
+ "type": "list",
+ "ratio": 1.1
+ },
+ "order_num": 9999
+ },
+ {
+ "key": "Ppxzy",
+ "name": "皮皮虾|网盘",
+ "type": 3,
+ "api": "csp_Ppxzy",
+ "quickSearch": 1,
+ "changeable": 1,
+ "filterable": 1,
+ "timeout": 60,
+ "ext": "./json/tokenm.json$$$https://ppxzy.ink$$$proxy$$$1",
+ "order_num": 9999
+ },
+
+ {
+ "key": "hipy_js_七色番[漫]",
+ "name": "七色番[漫](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/七色番[漫].js"
+ },
+
+ {
+ "key": "Funletu",
+ "name": "趣盘搜|夸克搜索",
+ "type": 3,
+ "api": "csp_Funletu",
+ "quickSearch": 1,
+ "changeable": 1,
+ "filterable": 1,
+ "timeout": 60,
+ "ext": "./json/tokenm.json",
+ "style": {
+ "type": "list",
+ "ratio": 1.1
+ },
+ "order_num": 9999
+ },
+
+ {
+ "key": "hipy_js_360吧[球]",
+ "name": "360吧[球](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/360吧[球].js"
+ },
+
+ {
+ "key": "hipy_js_童趣[儿]",
+ "name": "童趣[儿](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/童趣[儿].js"
+ },
+
+ {
+ "key": "hipy_js_素白白[优]",
+ "name": "素白白[优](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/素白白[优].js"
+ },
+
+ {
+ "key": "hipy_js_兔小贝[儿]",
+ "name": "兔小贝[儿](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/兔小贝[儿].js"
+ },
+ {
+ "key": "push_agent",
+ "name": "推送",
+ "type": 3,
+ "api": "csp_Push",
+ "changeable": 0,
+ "timeout": 30,
+ "ext": "./json/tokenm.json",
+ "order_num": 9999
+ },
+ {
+ "key": "yydsys",
+ "name": "玩你老哥|网盘",
+ "type": 3,
+ "api": "csp_Wobg",
+ "quickSearch": 1,
+ "changeable": 1,
+ "filterable": 1,
+ "timeout": 60,
+ "ext": "./json/tokenm.json$$$https://tv.yydsys.top/$$$proxy$$$1$$$./json/wogg.json",
+ "order_num": 9999
+ },
+
+ {
+ "key": "Wobg",
+ "name": "玩偶表哥|网盘",
+ "type": 3,
+ "api": "csp_Wobg",
+ "quickSearch": 1,
+ "changeable": 1,
+ "filterable": 1,
+ "timeout": 60,
+ "ext": "./json/tokenm.json$$$https://wobge.run.goorm.io$$$proxy$$$1$$$./json/wogg.json",
+ "order_num": 9999
+ },
+ {
+ "key": "hipy_js_玩偶哥哥[盘]",
+ "name": "玩偶哥哥[盘](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/玩偶哥哥[盘].js"
+ },
+ {
+ "key": "Wogg",
+ "name": "玩偶哥哥|网盘",
+ "type": 3,
+ "api": "csp_Wogg",
+ "quickSearch": 1,
+ "changeable": 1,
+ "filterable": 1,
+ "timeout": 60,
+ "ext": "./json/tokenm.json$$$https://wogg.link/$$$proxy$$$1$$$./json/wogg.json",
+ "order_num": 9999
+ },
+
+ {
+ "key": "hipy_js_网飞猫[优]",
+ "name": "网飞猫[优](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/网飞猫[优].js"
+ },
+ {
+ "key": "网盘配置",
+ "name": "网盘及彈幕配置",
+ "type": 3,
+ "api": "csp_Config",
+ "searchable": 0,
+ "changeable": 0,
+ "ext": "./json/tokenm.json",
+ "order_num": 9999
+ },
+
+
+ {
+ "key": "YunSo",
+ "name": "小云搜索|网盘搜索",
+ "type": 3,
+ "api": "csp_YunSo",
+ "quickSearch": 1,
+ "changeable": 1,
+ "filterable": 1,
+ "timeout": 60,
+ "ext": "./json/tokenm.json$$$https://www.yunso.net$$$None$$$1",
+ "style": {
+ "type": "list",
+ "ratio": 1.1
+ },
+ "order_num": 9999
+ },
+
+
+ {
+ "key": "hipy_js_一起看[优]",
+ "name": "一起看[优](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/一起看[优].js"
+ },
+
+ {
+ "key": "Yinyuetai",
+ "name": "音悦台",
+ "type": 3,
+ "api": "csp_Yinyuetai",
+ "searchable": 1,
+ "changeable": 0,
+ "order_num": 9999
+ },
+ {
+ "key": "hipy_js_樱花动漫[漫]",
+ "name": "樱花动漫[漫](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/樱花动漫[漫].js"
+ },
+
+ {
+ "key": "hipy_js_有声绘本网[听]",
+ "name": "有声绘本网[听](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/有声绘本网[听].js"
+ },
+ {
+ "key": "hipy_js_有声小说吧[听]",
+ "name": "有声小说吧[听](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/有声小说吧[听].js"
+ },
+ {
+ "key": "YunPan",
+ "name": "云盘资源|网盘",
+ "type": 3,
+ "api": "csp_YunPan",
+ "timeout": 60,
+ "ext": "./json/tokenm.json$$$None$$$proxy$$$1",
+ "order_num": 9999
+ },
+ {
+ "key": "YunPanOne",
+ "name": "云盘One|网盘搜索",
+ "type": 3,
+ "api": "csp_YunPanOne",
+ "quickSearch": 1,
+ "changeable": 1,
+ "filterable": 1,
+ "timeout": 60,
+ "ext": "./json/tokenm.json$$$None$$$proxy$$$1",
+ "order_num": 9999
+ },
+
+ {
+ "key": "hipy_js_闪雷电",
+ "name": "闪雷电(drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/闪雷电.js"
+ },
+
+ {
+ "key": "hipy_js_i275听书[听]",
+ "name": "i275听书[听](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/i275听书[听].js"
+ },
+
+ {
+ "key": "Iktv",
+ "name": "KTV",
+ "type": 3,
+ "api": "csp_Iktv",
+ "searchable": 1,
+ "changeable": 0,
+ "order_num": 9999
+ },
+
+ {
+ "key": "hipy_js_MuteFun[漫]",
+ "name": "MuteFun[漫](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/MuteFun[漫].js"
+ },
+ {
+ "key": "hipy_js_NT动漫[漫]",
+ "name": "NT动漫[漫](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/NT动漫[漫].js"
+ },
+
+ {
+ "key": "hipy_js_路漫漫[漫]",
+ "name": "路漫漫[漫](drpy_t3)",
+ "type": 3,
+ "api": "./drpy_libs/drpy2.min.js",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "order_num": 0,
+ "ext": "./drpy_js/路漫漫[漫].js"
+ }
+
+ ],
+ "parses": [
+ {
+ "name": "777",
+ "url": "https://jx.777jiexi.com/player/?url=",
+ "type": 0,
+ "ext": {
+ "flag": [
+ "qiyi",
+ "imgo",
+ "爱奇艺",
+ "奇艺",
+ "qq",
+ "qq 预告及花絮",
+ "腾讯",
+ "youku",
+ "优酷",
+ "pptv",
+ "PPTV",
+ "letv",
+ "乐视",
+ "leshi",
+ "mgtv",
+ "芒果",
+ "sohu",
+ "xigua",
+ "fun",
+ "风行"
+ ]
+ },
+ "header": {
+ "User-Agent": "Mozilla/5.0"
+ }
+ },
+ {
+ "name": "8090g",
+ "url": "https://www.8090g.cn/jiexi/?url=",
+ "type": 0,
+ "ext": {
+ "flag": [
+ "qiyi",
+ "imgo",
+ "爱奇艺",
+ "奇艺",
+ "qq",
+ "qq 预告及花絮",
+ "腾讯",
+ "youku",
+ "优酷",
+ "pptv",
+ "PPTV",
+ "letv",
+ "乐视",
+ "leshi",
+ "mgtv",
+ "芒果",
+ "sohu",
+ "xigua",
+ "fun",
+ "风行"
+ ]
+ },
+ "header": {
+ "User-Agent": "Mozilla/5.0"
+ }
+ },
+ {
+ "name": "ik9",
+ "url": "https://yparse.ik9.cc/index.php?url=",
+ "type": 0,
+ "ext": {
+ "flag": [
+ "qiyi",
+ "imgo",
+ "爱奇艺",
+ "奇艺",
+ "qq",
+ "qq 预告及花絮",
+ "腾讯",
+ "youku",
+ "优酷",
+ "pptv",
+ "PPTV",
+ "letv",
+ "乐视",
+ "leshi",
+ "mgtv",
+ "芒果",
+ "sohu",
+ "xigua",
+ "fun",
+ "风行"
+ ]
+ },
+ "header": {
+ "User-Agent": "Mozilla/5.0"
+ }
+ },
+ {
+ "name": "杰森",
+ "url": "https://jx.jsonplayer.com/player/?url=",
+ "type": 0,
+ "ext": {
+ "flag": [
+ "qiyi",
+ "imgo",
+ "爱奇艺",
+ "奇艺",
+ "qq",
+ "qq 预告及花絮",
+ "腾讯",
+ "youku",
+ "优酷",
+ "pptv",
+ "PPTV",
+ "letv",
+ "乐视",
+ "leshi",
+ "mgtv",
+ "芒果",
+ "sohu",
+ "xigua",
+ "fun",
+ "风行"
+ ]
+ },
+ "header": {
+ "User-Agent": "Mozilla/5.0"
+ }
+ },
+ {
+ "name": "阳途",
+ "url": "https://jx.yangtu.top/?url=",
+ "type": 0,
+ "ext": {
+ "flag": [
+ "qiyi",
+ "imgo",
+ "爱奇艺",
+ "奇艺",
+ "qq",
+ "qq 预告及花絮",
+ "腾讯",
+ "youku",
+ "优酷",
+ "pptv",
+ "PPTV",
+ "letv",
+ "乐视",
+ "leshi",
+ "mgtv",
+ "芒果",
+ "sohu",
+ "xigua",
+ "fun",
+ "风行"
+ ]
+ },
+ "header": {
+ "User-Agent": "Mozilla/5.0"
+ }
+ },
+ {
+ "name": "冰豆",
+ "url": "https://bd.jx.cn/?url=",
+ "type": 0,
+ "ext": {
+ "flag": [
+ "qiyi",
+ "imgo",
+ "爱奇艺",
+ "奇艺",
+ "qq",
+ "qq 预告及花絮",
+ "腾讯",
+ "youku",
+ "优酷",
+ "pptv",
+ "PPTV",
+ "letv",
+ "乐视",
+ "leshi",
+ "mgtv",
+ "芒果",
+ "sohu",
+ "xigua",
+ "fun",
+ "风行"
+ ]
+ },
+ "header": {
+ "User-Agent": "Mozilla/5.0"
+ }
+ },
+ {
+ "name": "m3u8TV",
+ "url": "https://jx.m3u8.tv/jiexi/?url=",
+ "type": 0,
+ "ext": {
+ "flag": [
+ "qiyi",
+ "imgo",
+ "爱奇艺",
+ "奇艺",
+ "qq",
+ "qq 预告及花絮",
+ "腾讯",
+ "youku",
+ "优酷",
+ "pptv",
+ "PPTV",
+ "letv",
+ "乐视",
+ "leshi",
+ "mgtv",
+ "芒果",
+ "sohu",
+ "xigua",
+ "fun",
+ "风行"
+ ]
+ },
+ "header": {
+ "User-Agent": "Mozilla/5.0"
+ }
+ },
+ {
+ "name": "听乐",
+ "url": "https://jx.dj6u.com/?url=",
+ "type": 0,
+ "ext": {
+ "flag": [
+ "qiyi",
+ "imgo",
+ "爱奇艺",
+ "奇艺",
+ "qq",
+ "qq 预告及花絮",
+ "腾讯",
+ "youku",
+ "优酷",
+ "pptv",
+ "PPTV",
+ "letv",
+ "乐视",
+ "leshi",
+ "mgtv",
+ "芒果",
+ "sohu",
+ "xigua",
+ "fun",
+ "风行"
+ ]
+ },
+ "header": {
+ "User-Agent": "Mozilla/5.0"
+ }
+ },
+ {
+ "name": "虾米",
+ "url": "https://jx.xmflv.com/?url=",
+ "type": 0,
+ "ext": {
+ "flag": [
+ "qiyi",
+ "imgo",
+ "爱奇艺",
+ "奇艺",
+ "qq",
+ "qq 预告及花絮",
+ "腾讯",
+ "youku",
+ "优酷",
+ "pptv",
+ "PPTV",
+ "letv",
+ "乐视",
+ "leshi",
+ "mgtv",
+ "芒果",
+ "sohu",
+ "xigua",
+ "fun",
+ "风行"
+ ]
+ },
+ "header": {
+ "User-Agent": "Mozilla/5.0"
+ }
+ },
+ {
+ "name": "虾米2",
+ "url": "https://jx.xmflv.cc/?url=",
+ "type": 0,
+ "ext": {
+ "flag": [
+ "qiyi",
+ "imgo",
+ "爱奇艺",
+ "奇艺",
+ "qq",
+ "qq 预告及花絮",
+ "腾讯",
+ "youku",
+ "优酷",
+ "pptv",
+ "PPTV",
+ "letv",
+ "乐视",
+ "leshi",
+ "mgtv",
+ "芒果",
+ "sohu",
+ "xigua",
+ "fun",
+ "风行"
+ ]
+ },
+ "header": {
+ "User-Agent": "Mozilla/5.0"
+ }
+ },
+ {
+ "name": "云析",
+ "url": "https://jx.yparse.com/index.php?url=",
+ "type": 0,
+ "ext": {
+ "flag": [
+ "qiyi",
+ "imgo",
+ "爱奇艺",
+ "奇艺",
+ "qq",
+ "qq 预告及花絮",
+ "腾讯",
+ "youku",
+ "优酷",
+ "pptv",
+ "PPTV",
+ "letv",
+ "乐视",
+ "leshi",
+ "mgtv",
+ "芒果",
+ "sohu",
+ "xigua",
+ "fun",
+ "风行"
+ ]
+ },
+ "header": {
+ "User-Agent": "Mozilla/5.0"
+ }
+ },
+ {
+ "name": "红狐",
+ "url": "https://player.mrgaocloud.com/player/?url=",
+ "type": 0,
+ "ext": {
+ "flag": [
+ "qiyi",
+ "imgo",
+ "爱奇艺",
+ "奇艺",
+ "qq",
+ "qq 预告及花絮",
+ "腾讯",
+ "youku",
+ "优酷",
+ "pptv",
+ "PPTV",
+ "letv",
+ "乐视",
+ "leshi",
+ "mgtv",
+ "芒果",
+ "sohu",
+ "xigua",
+ "fun",
+ "风行"
+ ]
+ },
+ "header": {
+ "User-Agent": "Mozilla/5.0"
+ }
+ }
+ ],
+ "flags": [
+ "imgo",
+ "youku",
+ "qq",
+ "qq 预告及花絮",
+ "iqiyi",
+ "qiyi",
+ "fun",
+ "letv",
+ "leshi",
+ "sohu",
+ "tudou",
+ "xigua",
+ "cntv",
+ "1905",
+ "pptv",
+ "mgtv",
+ "wasu",
+ "bilibili",
+ "renrenmi"
+ ],
+ "lives": [
+ {
+ "name": "cntv",
+ "type": 0,
+ "url": "./lives/live_cntv.txt",
+ "epg": "http://epg.112114.xyz/?ch={name}&date={date}"
+ },
+ {
+ "name": "南风",
+ "type": 0,
+ "url": "./lives/nanfeng.txt",
+ "epg": "http://epg.112114.xyz/?ch={name}&date={date}"
+ },
+ {
+ "name": "飞龙",
+ "type": 0,
+ "url": "./lives/feilong.txt",
+ "epg": "http://epg.112114.xyz/?ch={name}&date={date}"
+ },
+ {
+ "name": "开心",
+ "type": 0,
+ "url": "./lives/开心频道.txt",
+ "epg": "http://epg.112114.xyz/?ch={name}&date={date}"
+ },
+ {
+ "name": "杭州华数",
+ "type": 0,
+ "url": "./lives/杭州华数.m3u",
+ "epg": ""
+ },
+ {
+ "name": "华数2",
+ "type": 0,
+ "url": "./lives/华数2.m3u",
+ "epg": ""
+ }
+ ]
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/360吧[球].js b/drpy_t3/drpy_js/360吧[球].js
new file mode 100644
index 0000000..38ed6fa
--- /dev/null
+++ b/drpy_t3/drpy_js/360吧[球].js
@@ -0,0 +1,69 @@
+globalThis.getVideos = function (link, key) {
+ let html = request(link);
+ let json = JSON.parse(html);
+ let data = json.data;
+ data = data[key];
+ let videos = data.map((n) => {
+ let id = n.url;
+ let name = n.league_name_zh + ' ' + n.home_team_zh + ' VS ' + n.away_team_zh;
+ let pic = n.cover;
+ let remarks = n.nickname;
+ return {
+ vod_id: id,
+ vod_name: name,
+ vod_pic: pic,
+ vod_remarks: remarks,
+ };
+ });
+ return videos
+}
+var rule = {
+ 类型: '影视',//影视|听书|漫画|小说
+ title: '360吧[球]',
+ host: 'https://m.360ba.co/',
+ homeUrl: '/api/web/h5_index',
+ url: '/api/web/live_lists/fyclass',
+ searchUrl: '/api/web/search?keyword=**',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 0,
+ headers: {
+ 'User-Agent': 'MOBILE_UA',
+ },
+ timeout: 5000,
+ class_name: '全部&足球&篮球&综合',
+ class_url: '1&2&3&99',
+ play_parse: true,
+ pagecount: {
+ "1": 1,
+ "2": 1,
+ "3": 1,
+ "99": 1,
+ },
+ lazy: $js.toString(() => {
+ input = {parse: 0, url: input, header: rule.headers};
+ }),
+ 预处理: $js.toString(() => {
+ Object.assign(rule.headers, {
+ 'Referer': rule.host,
+ 'Origin': rule.host,
+ });
+ }),
+ 推荐: $js.toString(() => {
+ VODS = getVideos(input, 'hot_matches');
+
+ }),
+ 一级: $js.toString(() => {
+ VODS = [];
+ if (MY_PAGE <= 1) {
+ VODS = getVideos(input, 'data');
+ }
+ }),
+ 二级: '*',
+ 搜索: $js.toString(() => {
+ VODS = [];
+ if (MY_PAGE <= 1) {
+ VODS = getVideos(input, 'ball');
+ }
+ }),
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/360影视[官].js b/drpy_t3/drpy_js/360影视[官].js
new file mode 100644
index 0000000..d668037
--- /dev/null
+++ b/drpy_t3/drpy_js/360影视[官].js
@@ -0,0 +1,99 @@
+var rule = {
+ title: '360影视[官]',
+ host: 'https://www.360kan.com',
+ homeUrl: 'https://api.web.360kan.com/v1/rank?cat=2&size=9',
+ detailUrl: 'https://api.web.360kan.com/v1/detail?cat=fyclass&id=fyid',
+ searchUrl: 'https://api.so.360kan.com/index?force_v=1&kw=**&from=&pageno=fypage&v_ap=1&tab=all',
+ url: 'https://api.web.360kan.com/v1/fyfilter&size=35&pageno=fypage&callback=',
+ filterable: 1,
+ filter_url: 'filter/list?catid=fyclass&rank={{fl.排序}}&cat={{fl.类型}}&year={{fl.年代}}&area={{fl.地区}}',
+ filter: "H4sIAAAAAAAAA+2YS08jRxCA/4vPHGbMvrK3/IJcor1Eq4gDUqIlbLQhkVYrJINt1jYPA8vLa2MgYJtlMdhAiD1e4z8z3TP+Fxm7Xu0oGs2BQBRx81fVXV3V3VNV7XcxO/b8u3exV5NvY89jXrOjyouxsdj0xE+TJv82MfXr5HDgdCBW6eN+8nggDiA2O4bSrZLK1lCKQDov09TJNOoQeF7u2O2WaB4A6fTcqk5soQ6BbdbWVLtDNgHYZrYm6yHwvNy51z2heQA8r/JebCKwL5kd18mSLwCsmz/1ttZIB2DE5210JL4B8Lyt937WoXkA7Kdzorqb5CcA6dwv+/5ZA3UIbLO+5GfKZBOAfckf+Ye8LwCsW1lQ+QvSAbDNZE7PfySbAOJL1VtdYF+GwDbT126Hzg9h9uVACxdOlRpqyZELxxzpwi2kg/Fk/KjWL8jCbquuit1+taBb5zgCYXSEyjd0+4Y3ZAgc9GUjGEFBA/Dh3KyIDoF0/b1PokNgm9sVXTolmwCy3qa53qY5z19sig6B9+HmT9EhsG65oZwq6QAiH077yu0cGodDHOVw4lb8EcqGPw35uMjHTXlc5HFTbovcNuWWyC1Dbn/F8uCnIX8m8mem/KnIn5ryJyJ/Ysofi/yxKZd4bTNeW+K1zXhtidc247UlLtuMy5K4LDMuS+KyzLgsicuSuHTxSm9/Qs3UzPdvJyfejJy6XllXTl5OnXn01HUp4ffWvGRd7+yjtTcT069+eD0jSw2HuK3c6JCpiZnJX0ZGqfy2qnT985Qx6ufXP07PDBx7ORaL31aJ8o8TUhYQopSM0BQXUvbCykI/2VWtecoSAGxz7lol82QTIFIKXyi6ziLpADj2elUtUdlDiJL6Va6pettcvobAWbBS9s93KQsC8HqN5aBI0noAHPvuut6pUOxDMLdNnV0rp05LDmFEHdYwJNO6QBkfQQpj1b2hm4gQqZm4uyIGcFdFLKwYhRWxsOIXVqj0VkPl9tXuATc8xA9l56Hs/OfKzvitlZ1UU+UPvVqCPgtm/qJKe67jyAhh9ne17J1yKQHgbzWRlakIkrw+q2VuAAHYr7Oe38iQUwBmIk3tGYk0APZ2Y09fcbIE4HmFj+4XfikASE65dNurnFOGwL7MLakSvYQQjHzTPyRfECSHXasGrwfAulZLZ6iMIvC+NNZUqkf7AsBZtfvBn6dyiGC+ys7odYVgFBG9WZAiMgD5AC6Mlx5AlBebf/W716EYEHhes+t36WwRWLde1zkqsQj/j1dZ2AvqtBZcD9IB3EuSGeaPR7eVPwJP/ANODQBRGpdBaQ5uduXSKNXA/EXWN2Q2As/u5FW6RVMBojSFYV+WWljvF6gMIETJcHrlWBpwBNbNLXqZJukAWHfR0SnKcAjsS7ujk7Q1CDxv/0AVqQNFMNpPL8sxAMi1cKTpReCr7VyoOmU/BLaZ6gXfPdkE4AzQWw1WoQwAEOWBoRMn4icC60L+y/KKOV2gTIUQ0rjLvM8V4zEAILqyzvENBojSzntHN1JNEOQhtGg82AD+Vk+zdPTCUsP+UN2mMYKZRnzz4mtRI5Du2xeigt9Gj+ttnoz85zcikjfOktf5MPrfoCm6k3wclkv/scl/aNPvvU2XeG0z3n+3fQ9A4rXMeC2J1zLjtSReS+IdeQYg3FeBnv0LfL9z7fwYAAA=",
+ filter_def: {},
+ headers: {
+ 'User-Agent': 'MOBILE_UA'
+ },
+ timeout: 5000,
+ class_name: '电视剧&电影&综艺&动漫',
+ class_url: '2&1&3&4',
+ limit: 5,
+ multi: 1,
+ searchable: 2,
+ play_parse: true,
+ lazy: 'js:input=input.split("?")[0];log(input);',
+ // 疑似t4专用的
+ // lazy:'js:input={parse: 1, playUrl: "", jx: 1, url: input.split("?")[0]}',
+ // 手动调用解析请求json的url,此lazy不方便
+ // lazy:'js:input="https://cache.json.icu/home/api?type=ys&uid=292796&key=fnoryABDEFJNPQV269&url="+input.split("?")[0];log(input);let html=JSON.parse(request(input));log(html);input=html.url||input',
+ 推荐: 'json:data;title;cover;comment;cat+ent_id;description',
+ 一级: 'json:data.movies;title;cover;pubdate;id;description',
+ 二级: '',
+ 二级: $js.toString(() => {
+ let html = JSON.parse(fetch(input, fetch_params));
+ let data = html.data;
+ let tilte = data.title;
+ let img = data.cdncover;
+ let vod_type = data.moviecategory.join(",");
+ let area = data.area.join(",");
+ let director = data.director.join(",");
+ let actor = data.actor.join(",");
+ let content = data.description;
+ let base_vod = {
+ vod_id: input,
+ vod_name: tilte,
+ type_name: vod_type,
+ vod_actor: actor,
+ vod_director: director,
+ vod_content: content,
+ vod_remarks: area,
+ vod_pic: urljoin2(input, img)
+ };
+ let delta = 50;
+ let vod_play = {};
+ let sites = data.playlink_sites;
+ sites.forEach(function (site) {
+ let playList = "";
+ let vodItems = [];
+ print(data)
+ if (data.allupinfo) {
+ let total = parseInt(data.allupinfo[site]);
+ print(total)
+ for (let j = 1; j < total; j += delta) {
+ let end = Math.min(total, j + delta - 1);
+ print(end)
+ let url2 = buildUrl(input, { start: j, end: end, site: site });
+ let vod_data = JSON.parse(fetch(url2), fetch_params).data;
+ if (vod_data != null) {
+ if (vod_data.allepidetail) {
+ vod_data = vod_data.allepidetail[site];
+ vod_data.forEach(function (item, index) {
+ vodItems.push((item.playlink_num || "") + "$" + urlDeal(item.url || ""))
+ })
+ } else {
+ vod_data = vod_data.defaultepisode;
+ vod_data.forEach(function (item, index) {
+ vodItems.push((item.period || "") + (item.name || "") + "$" + urlDeal(item.url) || "")
+ })
+ }
+ }
+ }
+ } else {
+ let item = data.playlinksdetail[site];
+ vodItems.push((item.sort || "") + "$" + urlDeal(item.default_url || ""))
+ } if (vodItems.length > 0) {
+ playList = vodItems.join("#")
+ } if (playList.length < 1) {
+ return
+ } vod_play[site] = playList
+ });
+ let tabs = Object.keys(vod_play);
+ let playUrls = []; for (let id in tabs) {
+ print("id:" + id); playUrls.push(vod_play[tabs[id]])
+ } if (tabs.length > 0) {
+ let vod_play_from = tabs.join("$$$"); let vod_play_url = playUrls.join("$$$");
+ base_vod.vod_play_from = vod_play_from;
+ base_vod.vod_play_url = vod_play_url
+ }
+ VOD = base_vod;
+ }),
+ 搜索: 'json:data.longData.rows;titleTxt||titlealias;cover;cat_name;cat_id+en_id;description',
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/58动漫[漫].js b/drpy_t3/drpy_js/58动漫[漫].js
new file mode 100644
index 0000000..a0b842d
--- /dev/null
+++ b/drpy_t3/drpy_js/58动漫[漫].js
@@ -0,0 +1,25 @@
+muban.vfed.二级.title = 'h1&&Text;.fed-col-md3:eq(0)&&Text';
+muban.vfed.二级.desc = '.fed-col-md3:eq(3)&&Text;;;.fed-col-md6--span:eq(0)&&Text;.fed-col-md6--span:eq(1)&&Text';
+muban.vfed.二级.tabs = '.nav-tabs&&li';
+muban.vfed.二级.lists = '.myui-content__list:eq(#id)&&li';
+var rule = {
+ title: '58动漫[漫]',
+ 模板: 'vfed',
+ host: 'http://www.ting38.com',
+ url: '/search.php?page=fypage&searchtype=5&tid=fyclassfyfilter',
+ class_parse: '.fed-pops-navbar&&li;a&&Text;a&&href;.*/(.*?).html',
+ play_parse: true,
+ lazy: "js:var html=JSON.parse(request(input).match(/r player_.*?=(.*?))[1]);var url=html.url;if(html.encrypt=='1'){url=unescape(url)}else if(html.encrypt=='2'){url=unescape(base64Decode(url))}if(/m3u8|mp4/.test(url)){input=url}else{input}",
+ limit: 6,
+ filterable: 1,//是否启用分类筛选,
+ filter_url: '&order={{fl.by}}&area={{fl.area}}&year={{fl.year}}',
+ filter: 'H4sIAAAAAAAAA+2TzUrDQBSF32XWWWTSX/sq0kXUAYsmhVCFULKSutJURAzFghu1EQoGLMWmtE+TjOYtzM9k7gU37pPdnO/MvTN3DjMmlPQOx+SM2aRHbKZbRCGmbrBUxZtVtN2l+lI/v2D5NjPDEz+58jOcCuIoBdVUrSFYvkRcA65hToFTzFXgKuL0QPJ0iXgXeBfzDvAO5m3gbcxbwFuYN4E3MYd5KZ6XwrwU5jWGFhM8Xzr9zCme/ciGR+fufRxO/zw699aJtxINRoN0a9k4CkMePAjndDCSBnf9n9s7YRwPDYOZJ9mxfYVodeaVy7xRZ165zJsoc91iOsp8HsQ34T8zj18WyexaUCFKL3mb8a8P4Qkh66YB3+zLukLIW3uvfL4UnhCy5/N7/LQrexZC1i0X33u3rCuE9D4DqBNC3mWyjraP5V0KgbOpv0QVvoTzCxTHT5vwCAAA',
+ filter_def: {
+ 1: {cateId: '1'},
+ 2: {cateId: '2'},
+ 3: {cateId: '3'},
+ 4: {cateId: '4'}
+ },
+ searchUrl: '/search.php?page=fypage&searchword=**&searchtype=',
+ 搜索: '.fed-list-item;a&&title;a&&data-original;.fed-list-remarks&&Text;a&&href',
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/88看球[球].js b/drpy_t3/drpy_js/88看球[球].js
new file mode 100644
index 0000000..8fe4d3a
--- /dev/null
+++ b/drpy_t3/drpy_js/88看球[球].js
@@ -0,0 +1,84 @@
+var rule = {
+ title: "88看球[球]",
+ // host:'http://www.88kanqiu.cc',
+ host: "http://www.88kanqiu.bar",
+ url: "/match/fyclass/live",
+ searchUrl: "",
+ searchable: 0,
+ quickSearch: 0,
+ class_parse: ".nav-pills li;a&&Text;a&&href;/match/(\\d+)/live",
+ headers: {
+ "User-Agent": "PC_UA",
+ },
+ timeout: 5000,
+ play_parse: true,
+ pagecount: {
+ "1": 1,
+ "2": 1,
+ "4": 1,
+ "22": 1,
+ "8": 1,
+ "9": 1,
+ "10": 1,
+ "14": 1,
+ "15": 1,
+ "12": 1,
+ "13": 1,
+ "16": 1,
+ "28": 1,
+ "7": 1,
+ "11": 1,
+ "33": 1,
+ "27": 1,
+ "23": 1,
+ "26": 1,
+ "3": 1,
+ "21": 1,
+ "18": 1
+ },
+ lazy: $js.toString(() => {
+ if (/embed=/.test(input)) {
+ let url = input.match(/embed=(.*?)&/)[1];
+ url = base64Decode(url);
+ input = {
+ jx: 0,
+ url: url.split('#')[0],
+ parse: 0
+ }
+ } else if (/\?url=/.test(input)) {
+ input = {
+ jx: 0,
+ url: input.split('?url=')[1].split('#')[0],
+ parse: 0
+ }
+ } else {
+ input
+ }
+ }),
+ limit: 6,
+ double: false,
+ 推荐: "*",
+ 一级: ".list-group .group-game-item;.d-none&&Text;img&&src;.btn&&Text;a&&href",
+ 二级: {
+ title: ".game-info-container&&Text;.customer-navbar-nav li&&Text",
+ img: "img&&src",
+ desc: ";;;div.team-name:eq(0)&&Text;div.team-name:eq(1)&&Text",
+ content: "div.game-time&&Text",
+ tabs: "js:TABS=['道长在线']",
+ lists: $js.toString(() => {
+ LISTS = [];
+ let html = request(input.replace('play', 'play-url'));
+ let pdata = JSON.parse(html).data;
+ pdata = pdata.slice(6);
+ pdata = pdata.slice(0, -2);
+ pdata = base64Decode(pdata);
+ // log(pdata);
+ let jo = JSON.parse(pdata).links;
+ let d = jo.map(function (it) {
+ return it.name + '$' + urlencode(it.url)
+ });
+ LISTS.push(d)
+ }),
+ },
+ 搜索: "",
+};
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/MuteFun[漫].js b/drpy_t3/drpy_js/MuteFun[漫].js
new file mode 100644
index 0000000..865f718
--- /dev/null
+++ b/drpy_t3/drpy_js/MuteFun[漫].js
@@ -0,0 +1,6 @@
+var rule = {
+ 模板: 'mxpro',
+ title: 'MuteFun[漫]',
+ host: 'https://www.mutedm.com/',
+ class_parse: '.navbar-items li;a&&Text;a&&href;/(\\d+).html',
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/NT动漫[漫].js b/drpy_t3/drpy_js/NT动漫[漫].js
new file mode 100644
index 0000000..a369ba0
--- /dev/null
+++ b/drpy_t3/drpy_js/NT动漫[漫].js
@@ -0,0 +1,41 @@
+var rule = {
+ 类型: '影视',//影视|听书|漫画|小说
+ title: 'NT动漫[漫]',
+ host: 'http://www.ntdm9.com/',
+ url: '/type/fyclass-fypage.html',
+ class_name: '日本&中国&欧美',
+ class_url: 'riben&zhongguo&omei',
+ searchUrl: '/search/**----------fypage---.html',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 1,
+ filter: '',
+ filter_url: '',
+ filter_def: {},
+ headers: {
+ 'User-Agent': 'MOBILE_UA',
+ },
+ timeout: 5000,
+ class_parse: '#side-menu li;a&&Text;a&&href;/(.*?)\.html',
+ cate_exclude: '',
+ play_parse: true,
+ lazy: $js.toString(() => {
+ input = {parse: 1, url: input, js: ''};
+ }),
+ double: true,
+ 推荐: '.blockcontent;ul.ul_li_a5&&li;.anime_icon1_name&&Text;*;.anime_icon1_name1&&Text;*',
+ 一级: '.blockdif2;.cell_imform_name&&Text;img&&src;.newname&&Text;a&&href;.cell_imform_desc&&Text',
+ 二级: {
+ title: 'h4&&Text;.baseblock2&&li:eq(-1)&&Text',
+ img: 'img&&src',
+ desc: '.baseblock2&&li&&Text;.baseblock2&&li:eq(-2)&&Text;.baseblock2&&li:eq(2)&&Text;;',
+ content: '.detail_imform_desc_pre&&p&&Text',
+ tabs: 'ul.title&&li',
+ lists: '.movurl:eq(#id)&&a',
+ tab_text: 'body&&Text',
+ list_text: 'body&&Text',
+ list_url: 'a&&href',
+ list_url_prefix: '',
+ },
+ 搜索: '*',
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/i275听书[听].js b/drpy_t3/drpy_js/i275听书[听].js
new file mode 100644
index 0000000..bd87fef
--- /dev/null
+++ b/drpy_t3/drpy_js/i275听书[听].js
@@ -0,0 +1,61 @@
+var rule = {
+ 类型: '听书',
+ title: 'i275听书',
+ host: 'https://m.ting275.com',
+ // url: '/category/fyclass/2.html?page=fypage',
+ url: '/category/fyclass/fyfilter/fypage.html',
+ filterable: 1,//是否启用分类筛选,
+ filter_url: '{{fl.by}}',
+ filter: {
+ "6": [{"key": "by", "name": "排序", "value": [{"n": "更新", "v": "2"}, {"n": "人气", "v": "3"}]}],
+ "7": [{"key": "by", "name": "排序", "value": [{"n": "更新", "v": "2"}, {"n": "人气", "v": "3"}]}],
+ "8": [{"key": "by", "name": "排序", "value": [{"n": "更新", "v": "2"}, {"n": "人气", "v": "3"}]}],
+ "9": [{"key": "by", "name": "排序", "value": [{"n": "更新", "v": "2"}, {"n": "人气", "v": "3"}]}],
+ "10": [{"key": "by", "name": "排序", "value": [{"n": "更新", "v": "2"}, {"n": "人气", "v": "3"}]}],
+ "11": [{"key": "by", "name": "排序", "value": [{"n": "更新", "v": "2"}, {"n": "人气", "v": "3"}]}],
+ "12": [{"key": "by", "name": "排序", "value": [{"n": "更新", "v": "2"}, {"n": "人气", "v": "3"}]}],
+ "13": [{"key": "by", "name": "排序", "value": [{"n": "更新", "v": "2"}, {"n": "人气", "v": "3"}]}],
+ "14": [{"key": "by", "name": "排序", "value": [{"n": "更新", "v": "2"}, {"n": "人气", "v": "3"}]}],
+ "15": [{"key": "by", "name": "排序", "value": [{"n": "更新", "v": "2"}, {"n": "人气", "v": "3"}]}],
+ "49": [{"key": "by", "name": "排序", "value": [{"n": "更新", "v": "2"}, {"n": "人气", "v": "3"}]}],
+ "50": [{"key": "by", "name": "排序", "value": [{"n": "更新", "v": "2"}, {"n": "人气", "v": "3"}]}],
+ "51": [{"key": "by", "name": "排序", "value": [{"n": "更新", "v": "2"}, {"n": "人气", "v": "3"}]}]
+ },
+ filter_def: {
+ 6: {by: '2'},
+ 7: {by: '2'},
+ 8: {by: '2'},
+ 9: {by: '2'},
+ 10: {by: '2'},
+ 11: {by: '2'},
+ 12: {by: '2'},
+ 13: {by: '2'},
+ 14: {by: '2'},
+ 15: {by: '2'},
+ 49: {by: '2'},
+ 50: {by: '2'},
+ 51: {by: '2'}
+ },
+ searchUrl: '/pc/index/search.html?keyword=**&page=fypage',
+ searchable: 2,
+ quickSearch: 0,
+ headers: {'User-Agent': 'MOBILE_UA'},
+ class_name: '玄幻奇幻&都市言情&宫斗女频&官场商战&武侠仙侠&刑侦推理&探险科幻&重生穿越&恐怖惊悚&文学历史&两性情感&网游竞技&相声评书',
+ class_url: '6&7&8&9&10&11&12&13&14&15&49&50&51',
+ play_parse: true,
+ lazy: '',
+ limit: 6,
+ 推荐: '*',
+ // 一级:'.list-wrapper&&.item-link;h2--span&&Text;img&&data-cfsrc;.status&&Text;a&&href',
+ 一级: '.list-wrapper&&.item-link;h2--span&&Text;img&&src;.status&&Text;a&&href',
+ 二级: {
+ "title": ".book-title&&Text;.text:eq(0)&&Text",
+ // "img":".img&&data-cfsrc",
+ "img": ".img&&src",
+ "desc": ".update-time&&Text;;;.text:eq(1)&&Text;.text:eq(2)&&Text",
+ "content": ".book-intro&&Text",
+ "tabs": ".operate-bar&&.total-num",
+ "lists": ".book-list:eq(#id)&&.list-item"
+ },
+ 搜索: '*',
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/一起看[优].js b/drpy_t3/drpy_js/一起看[优].js
new file mode 100644
index 0000000..5631e66
--- /dev/null
+++ b/drpy_t3/drpy_js/一起看[优].js
@@ -0,0 +1,113 @@
+function verifyLogin(key) {
+ let cnt = 0;
+ let cookie = '';
+ let content = '';
+ let yzm_url = 'https://www.cpldq.com/include/vdimgck.php';
+ log(`验证码链接:${yzm_url}`);
+ let submit_url = 'https://www.cpldq.com/search.php?scheckAC=check&page=1&searchtype=&order=&tid=&area=&year=&letter=&yuyan=&state=&money=&ver=&jq=';
+ log(`post登录链接:${submit_url}`);
+ while (cnt < OCR_RETRY) {
+ try {
+ let {cookie, html} = reqCookie(yzm_url + '?t=' + new Date().getTime(), {toBase64: true});
+ let code = OcrApi.classification(html);
+ let code1 = eval(code.slice(0, -1));
+ log(`第${cnt + 1}次验证码识别结果:${code}->${code1}`);
+ html = post(submit_url, {
+ headers: {Cookie: cookie},
+ body: 'validate=' + code1 + '&searchword=' + key,
+ });
+ if (/相关搜索结果/.test(html)) {
+ content = html;
+ return {cookie, html: content} // 需要返回cookie
+ } else if (!/相关搜索结果/.test(html) && cnt + 1 >= OCR_RETRY) {
+ cookie = ''; // 需要清空返回cookie
+ }
+ } catch (e) {
+ log(`第${cnt + 1}次验证码提交失败:${e.message}`);
+ if (cnt + 1 >= OCR_RETRY) {
+ cookie = '';
+ }
+ }
+ cnt += 1
+ }
+ return {cookie, html: content}
+}
+
+globalThis.verifyLogin = verifyLogin;
+
+var rule = {
+ title: '一起看[优]',
+ host: 'http://www.cpldq.com',
+ url: '/cptype/fyclass-fypage.html',
+ searchUrl: '/search.php?page=fypage&searchword=**&searchtype=',
+ searchable: 0,
+ quickSearch: 0,
+ filterable: 1,
+ filter: '',
+ filter_url: '',
+ headers: {
+ 'User-Agent': 'MOBILE_UA',
+ },
+ timeout: 5000,
+ class_parse: '.sb_login_alert_box&&li;a&&Text;a&&href;/(\\d+)\.html',
+ cate_exclude: '',
+ play_parse: true,
+ lazy: $js.toString(() => {
+ input = {parse: 1, url: input, js: ''};
+ }),
+ double: true,
+ 推荐: '.main&&.bgte1130;ul&&.sb-film-one;*;*;*;*',
+ 一级: '.sb-area-index&&ul&&.qcontainer;i&&Text;.lazy&&data-original;.other&&Text;a&&href',
+ 二级: {
+ title: '.name&&Text;.ct&&dd&&Text',
+ img: '.lazy&&data-original',
+ desc: '.ct&&dd:eq(1)&&Text;.ct&&dd:eq(2)&&Text;.ct&&dt:eq(2)&&Text;.ct&&dt&&Text;',
+ content: 'div.ee&&Text',
+ tabs: '.playfrom&&li',
+ lists: '.playlist:eq(#id)&&ul&&li:not(:contains(滈凊))',
+ tab_text: 'body--sup&&Text',
+ list_text: 'body&&Text',
+ list_url: 'a&&href'
+ },
+ //搜索: '*',
+ 搜索: $js.toString(() => {
+ let cookie = getItem(RULE_CK, '') + ';ssea2_search=ok';
+ log('储存的cookie:' + cookie);
+ let ret = request(MY_URL, {
+ headers: {
+ Cookie: cookie,
+ }
+ });
+ if (/系统安全验证/.test(ret)) {
+ let login = verifyLogin(KEY);
+ cookie = login.cookie;
+ if (cookie) {
+ log(`本次成功过验证,cookie:${cookie}`);
+ setItem(RULE_CK, cookie);
+ } else {
+ log(`本次自动过搜索验证失败,cookie:${cookie}`);
+ }
+ ret = login.html;
+ // ret = request(MY_URL, {
+ // headers: {
+ // Cookie: cookie,
+ // }
+ // });
+ }
+ let d = [];
+ let p = rule.一级.split(';');
+ let arr = pdfa(ret, p[0]);
+ arr.forEach(it => {
+ d.push({
+ title: pdfh(it, p[1]),
+ pic_url: pdfh(it, p[2]),
+ desc: pdfh(it, p[3]),
+
+ url: pdfh(it, p[4]),
+ content: '',
+ });
+
+ });
+ setResult(d);
+ }),
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/七色番[漫].js b/drpy_t3/drpy_js/七色番[漫].js
new file mode 100644
index 0000000..90bd406
--- /dev/null
+++ b/drpy_t3/drpy_js/七色番[漫].js
@@ -0,0 +1,37 @@
+var rule = {
+ title: "七色番[漫]",
+ host: "https://www.7sefun.top",
+ url: "/vodshow/fyclassfyfilter",
+ searchUrl: "/vodsearch/**----------fypage---.html",
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 1,
+ filter: "H4sIAAAAAAAAAO2WS08TURTHv8usWdxb+riw4/2Wh7wNC2JqJCImgkZDMAiI5SEUAlQEUTTEItaCENIH6pfpTNtv4ZQ595xTywJdsZjd/H//c2fm1860d9KQRuWdSeNB8LlRaWRP0ubeklFmjA0/DPL8dHj0SfBycMzG5qtofjZawHYwpsqAXsxkElvZzWUoKOuJ7PYvMxyCGgKuDq+Y34/0UifgutlYbn9ar3MCdoe/c+eLunMCnvPgtZlM63M6QXdW6K21FYEOAnbhvey3Nd05AbvIgZlI6M4JeC9f1uh6EHDdj7Q1p90hYPdx39yJ6c4J2L1cyoZOdOcE9Jtfz28faj8n4LqVaDY8r9c5AbvdlG2sOyfoLv/hNJMMQweB7iVsTW/hvVwG7GYXrZl3unMCdqf7+fefsptfdY0ZJxIJK7RqbST1BGZ0PV7Nxc9ogjKe4+Iou5Fm58CsJ24FJ+6NjjyDXifdeoSn3EyeCWnt6u+pCP095y2d8141FyidC1wxJ0XJnIPYnLf0/ghNDRUmnRc5F4/lotP0ImO+zotsP9X2PD3ihYBfw85P6iDwC9t3k0l/pgtjvs6FCzrMrOgTYp8M5x7iHs4lccm5IC4YlxXI7UPGFXHFeYB4gHM/cT/nPuI+zslXcl9JvpL7SvKV3FeSr+S+knwl9xXkK7ivIF/BfQX5Cu4ryFdwX0G+gvsK8hXcV5Cv4L6CfAX3FeQruK8gX0G+sqJC+14eMq6IK84DxAOc+4n7OfcR93HuJe7lvJx4Oece4h7OJXHJuSDOfRX5Ku6ryFdxX0W+ivsq8lXcV5Gv4r6KfBX3VeSruK8iX8V9Ffkq7qvI1z4s+uGJRaz4G/bDo/N1fniqAFQhqQZSjaQGSA2SWiC1SOqA1CGpB1KPpAFIA5JGII1ImoA0IWkG0oykBUgLklYgrUjagLTRX6D+80PSDqQdSQeQDiSdQDqRdAHpQnIbyG0k3UC6kfQA6UHSC6QXSR+QPiT9QPqRDAAZQDIIZBCJeKHfgcIRf1SslXUztUqPCubiR8VaXrAi5/nIGZxmYsSexv/I5YVMKmUdb0B5f2RinJe5+JwZ0tuv8buPHgcLtzBUZnhuxnbb3VL/x5b6X7fN7obM3ZC5GzJ3Q+ZuyAx3Q+ZuyG7ihmzqDw1f3+kBFQAA",
+ filter_url: "--{{fl.排序}}-{{fl.类型}}-{{fl.语言}}-{{fl.字母}}---fypage---{{fl.年代}}.html",
+ filter_def: "",
+ headers: {
+ "User-Agent": "PC_UA"
+ },
+ timeout: 5000,
+ class_parse: ".side-menu&&a;a&&Text;a&&href;/(\\d+)\\.html",
+ cate_exclude: "",
+ play_parse: true,
+ lazy: $js.toString(() => {
+ input = {parse: 1, url: input, js: '', header: rule.headers, parse_extra: '&is_pc=1'};
+ }),
+ double: false,
+ 推荐: "*;.video-name&&Text;*;.video-time&&Text;*",
+ 一级: ".video.anim;.video-name&&Text;.videoimg&&src;.video-view&&Text;a&&href",
+ 二级: {
+ title: ".video-p-name&&Text;.video-p-sub1:eq(0)&&Text",
+ img: ".author-img&&src",
+ desc: ";;;.video-p-sub1:eq(1)&&Text;.video-p-sub1:eq(3)&&Text",
+ content: ".video-p-subtitle&&Text",
+ tabs: ".chat-stream-bfqs",
+ lists: ".vod-play-list-container:eq(#id) a",
+ tab_text: "body&&Text",
+ list_text: "body&&Text",
+ list_url: "a&&href"
+ },
+ 搜索: ".video.anim;.video-by&&Text;*;.video-time&&Text;a&&href;"
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/兔小贝[儿].js b/drpy_t3/drpy_js/兔小贝[儿].js
new file mode 100644
index 0000000..116cae5
--- /dev/null
+++ b/drpy_t3/drpy_js/兔小贝[儿].js
@@ -0,0 +1,26 @@
+var rule = {
+ title:'兔小贝[儿]',
+ host:'https://www.tuxiaobei.com',
+ homeUrl:'',
+ url:'/list/mip-data?typeId=fyclass&page=fypage&callback=',
+ detailUrl:'/play/fyid',
+ searchUrl:'/search/index?key=**',
+ searchable:2,
+ headers:{
+ 'User-Agent':'MOBILE_UA'
+ },
+ timeout:5000,
+ class_url:'2&3&4&25',
+ class_name:'儿歌&故事&国学&启蒙',
+ //class_name:'#page-viewport&&ul&&li;.text&&Text;a&&href;/(.*)',
+ cate_exclude:'应用',
+ 推荐:'.pic-list.list-box;.items;.text&&Text;mip-img&&src;.all&&Text;a&&href',
+ double:true,
+ limit:5,
+ play_parse:true,
+ lazy:'js:fetch_params.headers["user-agent"] = IOS_UA;let html=fetch(input,fetch_params);let src = jsp.pdfh(html,"body&videoWrap&&video-src");input=src;',
+ // 一级:'json:data.items;name;image;collect_num;category_id+video_id',
+ 一级:'json:data.items;name;image;duration_string;video_id',
+ 二级:'*',
+ 搜索:'.list-con&&.items;.text&&Text;mip-img&&src;.time&&Text;a&&href',
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/六月听书[听].js b/drpy_t3/drpy_js/六月听书[听].js
new file mode 100644
index 0000000..836565d
--- /dev/null
+++ b/drpy_t3/drpy_js/六月听书[听].js
@@ -0,0 +1,28 @@
+var rule = {
+ 类型: '听书',
+ title: '六月听书',
+ host: 'http://m.6yueting.com',
+ url: '/ys/fyclass/o2/pfypage',
+ searchUrl: '/search/index/search?content=**&type=1&pageNum=fypage&pageSize=40',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 0,//是否启用分类筛选,
+ headers: {'User-Agent': 'MOBILE_UA'},
+ class_name: '全部分类&玄幻奇幻&修真武侠&恐怖灵异&古今言情&都市言情&穿越重生&粤语古仔&网游小说&通俗文学&历史纪实&军事&悬疑推理&ebc5系列&官场商战&儿童读物&广播剧&外文原版&评书大全&相声小品&百家讲坛&健康养生&教材&期刊头条&戏曲&脱口秀',
+ class_url: 't0&t1&t2&t3&t4&t28&t5&t6&t7&t11&t12&t13&t14&t18&t15&t16&t17&t22&t8&t9&t10&t20&t21&t23&t24&t27',
+ play_parse: true,
+ lazy: '',
+ limit: 6,
+ 图片来源: '@Referer=http://m.6yueting.com/@User-Agent=MOBILE_UA',
+ 推荐: '*',
+ 一级: '.list-wrapper&&.item-link;h2--span&&Text;img&&src;.status&&Text;a&&href',
+ 二级: {
+ "title": ".book-title&&Text;.text:eq(0)&&Text",
+ "img": ".img&&src",
+ "desc": ".text:eq(3)&&Text;;;.text:eq(1)&&Text;.text:eq(2)&&Text",
+ "content": ".book-intro&&Text",
+ "tabs": ".operate-bar&&.total-num",
+ "lists": ".book-list:eq(#id)&&.list-item"
+ },
+ 搜索: 'js:let d=[];let MY_HOME="http://m.6yueting.com";let html=request(input);html=JSON.parse(html);let list=html.data.content;list.forEach(function(it){d.push({title:it.name.replace(/<.*?>/g,""),img:"http://img.6yueting.com:20001/"+it.coverUrlLocal,url:MY_HOME+"/list/"+it.code,desc:it.cdate,content:it.descXx.replace(/ /g,"")})});setResult(d);',
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/剧圈圈.js b/drpy_t3/drpy_js/剧圈圈.js
new file mode 100644
index 0000000..c424471
--- /dev/null
+++ b/drpy_t3/drpy_js/剧圈圈.js
@@ -0,0 +1,12 @@
+Object.assign(muban.mxpro.二级, {
+ tab_text: 'div--small&&Text',
+});
+var rule = {
+ 模板: 'mxpro',
+ title: '剧圈圈',
+ host: 'https://www.jqqzx.cc/',
+ url: '/vodshow/id/fyclass/page/fypage.html',
+ searchUrl: '/vodsearch**/page/fypage.html',
+ class_parse: '.navbar-items li:gt(1):lt(8);a&&Text;a&&href;.*/(.*?)\.html',
+ cate_exclude: '今日更新|热榜',
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/南瓜影视[优].js b/drpy_t3/drpy_js/南瓜影视[优].js
new file mode 100644
index 0000000..71f75c3
--- /dev/null
+++ b/drpy_t3/drpy_js/南瓜影视[优].js
@@ -0,0 +1,189 @@
+// 注入全局方法 (仅支持tvbox的js1以及c#版drpy的js0,暂不支持drpy官方py版的js0)
+// 注入全局方法 (仅支持tvbox的js1以及c#版drpy的js0,暂不支持drpy官方py版的js0)
+// 注入全局方法 (仅支持tvbox的js1以及c#版drpy的js0,暂不支持drpy官方py版的js0)
+globalThis.getHeaders= function(input){
+ let t = new Date().getTime().toString();
+ let headers = {
+ 'version_name': '1.0.6',
+ 'version_code': '6',
+ 'package_name': 'com.app.nanguatv',
+ 'sign': md5('c431ea542cee9679#uBFszdEM0oL0JRn@' + t).toUpperCase(),
+ 'imei': 'c431ea542cee9679',
+ 'timeMillis': t,
+ 'User-Agent': 'okhttp/4.6.0'
+ };
+ return headers
+}
+
+var rule = {
+ title:'南瓜影视[优]',
+ host:'http://ys.changmengyun.com',
+ homeUrl:'/api.php/provide/vod_rank?app=ylys&sort_type=month&imei=c431ea542cee9679&id=2&page=1',
+ url:'/api.php/provide/vod_list?app=ylys&id=fyclassfyfilter&page=fypage&imei=c431ea542cee9679',
+ detailUrl:'/api.php/provide/vod_detail?app=ylys&imei=c431ea542cee9679&id=fyid',
+ searchUrl:'/api.php/provide/search_result_more?app=ylys&video_name=**&pageSize=20&tid=0&imei=c431ea542cee9679&page=fypage',
+ searchable:2,
+ quickSearch:0,
+ filterable:1,
+ filter_url:'&area={{fl.area}}&year={{fl.year}}&type={{fl.class}}&total={{fl.total or "状态"}}&order={{fl.by or "新上线"}}',
+ filter:{
+ "2":[{"key":"class","name":"类型","value":[{"n":"全部","v":"类型"},{"n":"国产剧","v":"国产剧"},{"n":"港台剧","v":"港台剧"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":"地区"},{"n":"内地","v":"内地"},{"n":"香港地区","v":"香港地区"},{"n":"台湾地区","v":"台湾地区"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":"年份"},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"10年代","v":"10年代"},{"n":"00年代","v":"00年代"},{"n":"90年代","v":"90年代"},{"n":"80年代","v":"80年代"}]},{"key":"by","name":"排序","value":[{"n":"热播榜","v":"热播榜"},{"n":"好评榜","v":"好评榜"},{"n":"新上线","v":"新上线"}]}],
+ "1":[{"key":"class","name":"类型","value":[{"n":"全部","v":"类型"},{"n":"动作片","v":"动作片"},{"n":"喜剧片","v":"喜剧片"},{"n":"爱情片","v":"爱情片"},{"n":"科幻片","v":"科幻片"},{"n":"恐怖片","v":"恐怖片"},{"n":"剧情片","v":"剧情片"},{"n":"战争片","v":"战争片"},{"n":"惊悚片","v":"惊悚片"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":"地区"},{"n":"华语","v":"华语"},{"n":"香港地区","v":"香港地区"},{"n":"美国","v":"美国"},{"n":"欧洲","v":"欧洲"},{"n":"韩国","v":"韩国"},{"n":"日本","v":"日本"},{"n":"台湾地区","v":"台湾地区"},{"n":"泰国","v":"泰国"},{"n":"台湾地区","v":"台湾地区"},{"n":"印度","v":"印度"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":"年份"},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"10年代","v":"10年代"},{"n":"00年代","v":"00年代"},{"n":"90年代","v":"90年代"},{"n":"80年代","v":"80年代"}]},{"key":"by","name":"排序","value":[{"n":"热播榜","v":"热播榜"},{"n":"好评榜","v":"好评榜"},{"n":"新上线","v":"新上线"}]}],
+ "4":[{"key":"class","name":"类型","value":[{"n":"全部","v":"类型"},{"n":"国产漫","v":"国产漫"},{"n":"欧美漫","v":"欧美漫"},{"n":"日韩漫","v":"日韩漫"},{"n":"港台漫","v":"港台漫"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":"地区"},{"n":"中国大陆","v":"中国大陆"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"欧美","v":"欧美"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":"年份"},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"10年代","v":"10年代"},{"n":"00年代","v":"00年代"},{"n":"90年代","v":"90年代"},{"n":"80年代","v":"80年代"}]},{"key":"by","name":"排序","value":[{"n":"热播榜","v":"热播榜"},{"n":"新上线","v":"新上线"}]},{"key":"total","name":"状态","value":[{"n":"全部","v":"状态"},{"n":"连载","v":"连载"},{"n":"完结","v":"完结"}]}],
+ "3":[{"key":"class","name":"类型","value":[{"n":"全部","v":"类型"},{"n":"大陆","v":"大陆"},{"n":"港台","v":"港台"},{"n":"日韩","v":"日韩"},{"n":"欧美","v":"欧美"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":"地区"},{"n":"内地","v":"内地"},{"n":"港台","v":"港台"},{"n":"日韩","v":"日韩"},{"n":"欧美","v":"欧美"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":"年份"},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"10年代","v":"10年代"},{"n":"00年代","v":"00年代"},{"n":"90年代","v":"90年代"},{"n":"80年代","v":"80年代"}]},{"key":"by","name":"排序","value":[{"n":"热播榜","v":"热播榜"},{"n":"新上线","v":"新上线"}]}],
+ "46":[{"key":"class","name":"类型","value":[{"n":"全部","v":"类型"},{"n":"日韩剧","v":"日韩剧"},{"n":"欧美剧","v":"欧美剧"},{"n":"海外剧","v":"海外剧"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":"地区"},{"n":"韩国","v":"韩国"},{"n":"美剧","v":"美剧"},{"n":"日本","v":"日本"},{"n":"泰国","v":"泰国"},{"n":"英国","v":"英国"},{"n":"新加坡","v":"新加坡"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":"年份"},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"10年代","v":"10年代"},{"n":"00年代","v":"00年代"},{"n":"90年代","v":"90年代"},{"n":"80年代","v":"80年代"}]},{"key":"by","name":"排序","value":[{"n":"热播榜","v":"热播榜"},{"n":"好评榜","v":"好评榜"},{"n":"新上线","v":"新上线"}]}]
+ },
+ headers:{
+ "User-Agent":"okhttp/4.6.0"
+ },
+ timeout:5000,
+ class_name:'电视剧&电影&动漫&综艺&海外精选', // /api.php/provide/home_nav
+ class_url:'2&1&4&3&46',
+ limit:20,
+ play_parse:true,
+ lazy:`js:
+ try {
+ function getvideo(url) {
+ let jData = JSON.parse(request(url, {
+ headers: getHeaders(url)
+ }));
+ if (jData.code == 1) {
+ return jData.data.url
+ } else {
+ return 'http://43.154.104.152:1234/jhapi/cs.php?url=' + url.split('=')[1]
+ }
+ }
+ if (/,/.test(input)) {
+ let mjurl = input.split(',')[1]
+ let videoUrl = getvideo(mjurl);
+ input = {
+ jx: 0,
+ url: videoUrl,
+ parse: 0,
+ header: JSON.stringify({
+ 'user-agent': 'Lavf/58.12.100'
+ })
+ }
+ } else {
+ let videoUrl = getvideo(input);
+ if (/jhapi/.test(videoUrl)) {
+ videoUrl = getvideo(videoUrl);
+ input = {
+ jx: 0,
+ url: videoUrl,
+ parse: 0,
+ header: JSON.stringify({
+ 'user-agent': 'Lavf/58.12.100'
+ })
+ }
+ } else {
+ input = {
+ jx: 0,
+ url: videoUrl,
+ parse: 0
+ }
+ }
+ }
+ } catch (e) {
+ log(e.toString())
+ }
+ `,
+ 推荐:`js:
+ var d = [];
+ let html = request(input, {
+ headers: getHeaders(input)
+ });
+ html = JSON.parse(html);
+ html.forEach(function(it) {
+ d.push({
+ title: it.name,
+ img: it.img,
+ desc: it.remarks,
+ url: it.id
+ })
+ });
+ setResult(d);
+ `,
+ 一级:`js:
+ var d = [];
+ let html = request(input, {
+ headers: getHeaders(input)
+ });
+ html = JSON.parse(html);
+ html.list.forEach(function(it) {
+ d.push({
+ title: it.name,
+ img: it.img,
+ desc: it.msg,
+ url: it.id
+ })
+ });
+ setResult(d);
+ `,
+ 二级:`js:
+ var d = [];
+ VOD = {
+ vod_id: input.split('id=')[1]
+ };
+ try {
+ let html = request(input, {
+ headers: getHeaders(input)
+ });
+ html = JSON.parse(html);
+ let node = html.data;
+ VOD = {
+ vod_name: node['name'],
+ vod_pic: node['img'],
+ type_name: node['type'],
+ vod_year: node['year'],
+ vod_remarks: '更新至: ' + node['msg'] + ' / 评分: ' + node['score'],
+ vod_content: node['info'].strip()
+ };
+ let episodes = node.player_info;
+ let playMap = {};
+ if (typeof play_url === 'undefined') {
+ var play_url = ''
+ }
+ episodes.forEach(function(ep) {
+ let playurls = ep['video_info'];
+ playurls.forEach(function(playurl) {
+ let source = ep['show'];
+ if (!playMap.hasOwnProperty(source)) {
+ playMap[source] = []
+ }
+ playMap[source].append(playurl['name'].strip() + '$' + play_url + urlencode(playurl['url']))
+ })
+ });
+ let playFrom = [];
+ let playList = [];
+ Object.keys(playMap)
+ .forEach(function(key) {
+ playFrom.append(key);
+ playList.append(playMap[key].join('#'))
+ });
+ let vod_play_from = playFrom.join('$$$');
+ let vod_play_url = playList.join('$$$');
+ VOD['vod_play_from'] = vod_play_from;
+ VOD['vod_play_url'] = vod_play_url
+ } catch (e) {
+ log('获取二级详情页发生错误:' + e.message)
+ }
+ `,
+ 搜索:`js:
+ var d = [];
+ let html = request(input, {
+ headers: getHeaders(input)
+ });
+ html = JSON.parse(html);
+ html.data.forEach(function(it) {
+ d.push({
+ title: it.video_name,
+ img: it.img,
+ desc: it.qingxidu + '/' + it.category,
+ url: it.id,
+ content: it.blurb
+ })
+ });
+ setResult(d);
+ `,
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/可可影视[优].js b/drpy_t3/drpy_js/可可影视[优].js
new file mode 100644
index 0000000..6855c32
--- /dev/null
+++ b/drpy_t3/drpy_js/可可影视[优].js
@@ -0,0 +1,102 @@
+var rule = {
+ title: '可可影视[优]',
+ host: 'https://www.keke8.app',
+ //host: 'https://keke5.app',
+ // url: '/show/fyclass-----2-fypage.html',
+ url: '/show/fyclass-fyfilter-fypage.html',
+ filter_url: '{{fl.类型}}-{{fl.地区}}-{{fl.语言}}-{{fl.年份}}-{{fl.排序}}',
+ searchUrl: '/search?k=**&page=fypage',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 1,
+ headers: {
+ 'User-Agent': 'MOBILE_UA',
+ },
+ class_parse: '#nav-swiper&&.nav-swiper-slide;a&&Text;a&&href;/(\\w+).html',
+ cate_exclude: 'Netflix|今日更新|专题列表|排行榜',
+ tab_order: ['超清', '蓝光', '极速蓝光'],
+ play_parse: true,
+ lazy: '',
+ limit: 20,
+ 推荐: '.section-box:eq(2)&&.module-box-inner&&.module-item;*;*;*;*',
+ double: false,
+ 一级: '.module-box-inner&&.module-item;.v-item-title:eq(-1)&&Text;img&&data-original;.v-item-bottom&&span&&Text;a&&href',
+ 二级: {
+ title: '.detail-title&&Text;.detail-tags&&a:eq(-2)&&Text',
+ img: '.detail-pic&&img&&data-original',
+ desc: '.detail-info-row-main:eq(-2)&&Text;.detail-tags&&a&&Text;.detail-tags&&a:eq(1)&&Text;.detail-info-row-main:eq(1)&&Text;.detail-info-row-main&&Text',
+ content: '.detail-desc&&Text',
+ tabs: '.source-item-label',
+ lists: '.episode-list:eq(#id) a',
+ },
+ 搜索: '.search-result-list&&a;.title&&Text;*;.search-result-item-header&&Text;a&&href;.desc&&Text',
+ // 图片替换:$js.toString(()=>{
+ // log(input);
+ // input = input.replace(rule.host,'https://vres.a357899.cn');
+ // }),
+ //图片替换: 'https://keke5.app=>https://vres.a357899.cn',
+ 预处理: $js.toString(() => {
+ let html = request(rule.host);
+ let scripts = pdfa(html, 'script');
+ let img_script = scripts.find(it => pdfh(it, 'script&&src').includes('rdul.js'));
+ if (img_script) {
+ let img_url = img_script.match(/src="(.*?)"/)[1];
+ //console.log(img_url);
+ let img_html = request(img_url);
+ let img_host = img_html.match(/'(.*?)'/)[1];
+ log(img_host);
+ rule.图片替换 = rule.host + '=>' + img_host;
+ }
+ }),
+ filter: 'H4sIAAAAAAAAA+2Zz08bRxTH/xefOdgGtTi3HlqpUpVLe6hURREHV4qa0kN/qFWEZLANxhBsEDFx7AIpGEyCf0CQY9bY/md2Ztf/RWf95r0ZR+3LtqGRqviC+LzvzOzs7Nt531k/isQid755FPku+VvkTsS76In9jchMZHHh+6TNvyw8/Dk5briowiJbH6XrQVhBZGkGoneTP3378MGvOnz3068+++Lzr0kV66cyndWiBtJKVRVBDYC0fN3tV1EDQM3LXZgxNaAml4syVdKaBtLSebnyDDUAGjPf8vovcEwA0k63xXUPNQAac+XcK23jmAB0D7U1008Daas7o/IZagA0Zu6p66zjmADUb2tVFC6xHwBphWP/iNYagLRmRzgN1ABQc28O/WZbaxpoLo0Td3CIcwEw2qaf2ydtDLRmBw1vfQ3XDMB6tt5uzzzbAEjLDL2XNdQAUPOXN0XV0ZqGpXuBCmksqm2x6Zg0Jg6TxuL4dFRexUXoNkSlr0PYYnRSlt3WRAsdMg+gLa8Hk2NAiJZlsKWCuCwAtJx7NVk9x+UEoGsfnJl+GmhZNi6MpoHGfPXEaBpotoPXRtNA2uO2cE5QAzBjtu0x23Y/t3s9on4a6N6390W2i/cOQNd7feXXhng9AJMuh3JjqB4GZQwyXXWY8fp7skQPh5jmnCmoDiKHb5xhatHaVSj3OtiC2Np2RHtXZPFNMUxPojb0CirVy/gwiOkqg1dwXdehjcgO0T1nO24PtzENdqr7rYZfT5lUJw6V6pW+ao+DA9BNXh4bTYOVaEbTYCWv0TRYyWs0DVaCWv0Awi6CuL5ye33rfUcOswjxaHxOx8b/WvFZE5+143ETj9vxmInH7HjUxKMUj0XH0zwiLRa9r/4kqEH0zQbRoEHUNEhMNoglEtH76o9pMP9mg/mgwbxpICtXcg9fhUD7ODGxsHJrRzgFs7DEkwvr9W5EMYdXMaNXU7KEL0ncDntpfNJmXf1WRuRw350LpnFvRvX6b8yJpjDmhDMZnHHhjARrFrjizZghrrBzhoczJ0FhovvTEMYMceaEMzVBQaPraQhjQNSWZ56RhjBGkDNfo3RfdFdwLgC3bUAoHLllA8LZhH9rPTgLwVkP1l681ShxJoMzJ9PCOS2cH3DhnH1PhTNfl6llefNy4hxnQqFO/9wpkPsywGzebKHkCh5X1JgTqSzue+dU0AFCGQimaHMnZ5UH/vMUagCkVfKyjFVFQxjj4fUK1rEMgPodPhcV2mQAUPtk8YFKK5Dgf8rMYVGtPW53AHRUcy5Fo4g7PwBtd7/vyKe40hpMOd9Qa0jlfAxhLMJfWqDb+mbAlc23l/N3+1rwbmZg+s1g+s1gan1snlqf/7n1mbst6+M5L0T/CaYzAGnVA9dxvFOqwcQ0t2bb9NZAWuZCFI5Mb8OhDBP36Z8xTNznfa/SFUe0OQHQbPMrXqWJUwUwJffvP/1zBo2zBl8mF378YVFrGmie3M8zjGHiDJosP3NvaEcFmP6cMC0j0zLyIZeRj/55GTFh+ymPUqv+H5R6AJTqu1XRxBOLBppVuajON5jqANTvbOh38tgPgK639tjbPcDrAYQpK+yv28zJij3fMudw9tdt7myf7Yhm2rySAbz3zFEpsvQnK+G0IDwhAAA=',
+ 一级f: `js:
+ let urls = [
+ 'https://keke5.app/show/1-----1-1.html',
+ 'https://keke5.app/show/2-----1-1.html',
+ 'https://keke5.app/show/3-----1-1.html',
+ 'https://keke5.app/show/4-----1-1.html',
+ 'https://keke5.app/show/6-----1-1.html',
+ ];
+ let filters = {};
+ pdfa = jsp.pdfa;
+ pdfh = jsp.pdfh;
+ for(let url of urls){
+ let fclass = url.match(/show\\/(\\d+)-/)[1];
+ console.log(fclass);
+ let html = request(url);
+ let tabs = pdfa(html, '.filter-row');
+ let data = [];
+ for (let tab of tabs) {
+ let title = pdfh(tab, 'strong&&Text').replace(':','');
+ let lis = pdfa(tab, 'a');
+ let _map = {key: title, name: title};
+ let value = [];
+ for (let li of lis) {
+ let n = pdfh(li, 'a&&Text').trim();
+ let v=n;
+ if(/全部|地区|类型/.test(n)){
+ v = '';
+ }else if(/综合/.test(n)){
+ v = '1';
+ }else{
+ v = pdfh(li,'a&&href');
+ try {
+ v = v.match(/-(.*?)1-1\.html/)[1].replace(/-/g,'');
+ }catch (e) {
+ v = v.match(/-(.*?)-1\.html/)[1].replace(/-/g,'');
+ }
+ v = decodeURIComponent(v);
+ }
+ value.push({
+ 'n': n, 'v': v
+ });
+ }
+ _map['value'] = value;
+ data.push(_map);
+ }
+ filters[fclass] = data;
+ }
+ VODS = [filters];
+ console.log(gzip(JSON.stringify(filters)));
+ `,
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/咖啡影视.js b/drpy_t3/drpy_js/咖啡影视.js
new file mode 100644
index 0000000..f9d0e78
--- /dev/null
+++ b/drpy_t3/drpy_js/咖啡影视.js
@@ -0,0 +1,17 @@
+var rule = {
+ 模板: "mxpro",
+ title: "咖啡影视",
+ host: "https://cdnbeijin-aliyun-ys1.cfys.xyz",
+ url: "/vodshow/fyclassfyfilter.html",
+ filterable: 1,
+ filter: "H4sIAAAAAAAAAO2Z208bRxTG/xc/U2lNmkvzlvv9fk+Vh6hCatQ2lZq0UhUhAcaOIYANIjiuza3hForBXEphqeGf8eza/0XXnnO+c1w1K0uhedo3/76zszPfzC7zMfsq1unETn79KvZd16+xkzEzsOglkrGO2POnP3Rp/uXp9z93NS983pCTS/XEUkMOINbdYVWvN+v1TJBKwDUzuFStFKlGwDV/cdTs7lGNAO0wAAH0l35XdQe4Pwtcq5UWzNAy1QjQ3+CaX+EaAfqbKAa9cH8W0C69LmMhUP788T3x1wDU5l+LPwJ4KC1U92fYgwW0S43V8x+4nQW0m1oOHHM7C+2sg9e34k+Mcs0CaolBr+83rlmA972MSe6wdwtcq0+Oee/mqUaAe068rg24fE8L8Le/6o//aSrrbBGMKzJztfdYfQuojaRMZoNrFrD6B9lgDXj1LcisFr3JUcxqE1DrP/D/YCcEmIHKqL9XbBlwi9T9pHElvUbFshly1WvE3M5rZOYW6/kUD8ICpnoh7+2s8VRbkMkqe7v7mKwmYPD7I6ZQ4WFbwBJtvpUaASbyzbrUCNAuN+8VV7idBYxz+oO0I5Bl/0tqBDKWsh5LuaXdcNm4C9zOAtr1Z4KZMml+W4ThZP7Az5T8gTybAcsrPOO9OQia4S1mxhXJ7eoev1gEetlra6XaUo8sO7itZS9Uguv55hbUMkiNAEu7MSc1AixDrmKGc1IWVgulyhbUAkuNQD00qmZBLbByYkFNoVlNyBQ2oOXN2d2q7lXUm8PczhR2Op1fktb8qfQjoh/ReqfonVqPix7XuiO6o/T4V9CDn0o/IfoJrR8X/bjWj4l+TOtHRT+qdfEb137j4jeu/cbFb1z7jYvfuPYbF79x7dcRv47264hfR/t1xK+j/Tri19F+HfHraL+O+HW0X0f8OtqvI34d7dcRv47264jf4GfLg1nKeWvD6sFk/teDCVk/mKdIOAXlNCmnoZwh5QyUs6SchXKOlHNQzpNyHsoFUi5AuUjKRSiXSLkE5TIpl6FcIeUKlKukXIVyjZRrUK6Tch3KDVJuQLlJyk0ot0i5BeU2Kbeh3CHlDpS7pNyFco+Ue1Duk3IfygNSHkB5SMpDKI9IeQTlMSmPoThf8DvQ+KUfFW9kzLgZeVTArY+Kl9uu57akGEgvnwUNuIOq63rl8Zb6t89evpBNYa3fpFMt9Rff/PhTV2MsTzpiwd+tQ8r1YSksLIPbKGh6t02CB9gitZO5zeq2cbGXWGgrx4f8vxGWx8P+3whLnGH5uLo7K4mTQDJ30stzoCNAf29TkvEJVBqVOSNoN6Z8WjpNJYPrEZ+b0E5yDUugYWkxLGWGpcXQ5DpRDsKdmZzlpuBPzdlRQoySXpT0oqQXJb0o6X2+pNd5WEmv3jPgL/bw33oLOqn0T6ukEgAGuHpQK6d597GAdmMlb5DP1Ahk/0h6O5yaCGTf2azuZrHvNEGFifp7HgsBau6yWZ3imgX0V9hQp5EW0G582tvCKbQFtNvZ8dKZqjsmp4otEuZh6/cg+/E8WMA91vtqvUPc2sJnSWVBdglSCobdBLWBB1u6bOANQG1lMZharlmIskyUZfhnlGWiLBNlmViUZQ41yxw5tK/RIXkl7IuznyjVZjkDEeCeI0t+lg84CFDLTvkr+LJqQbbnj3/JrWUnayN8gkaAe87MmgL2JAu4Z8gJl1d01ddhC+gv5Nto2GmeKQfTtMX9WdC1+U1VCwDzObdf/Zu/KhOg3ci0SRe4nQV5kDZMifMfAe5ZGPTynOMIZF7WzUEO89IEtY//jydjhUrVxTGmBRUuPn6K9V85q80BRxksymBRBosyWJTBogx2SBms+x8YQNSAEygAAA==",
+ filter_url: "{{fl.类型}}-{{fl.地区}}-{{fl.排序}}-{{fl.剧情}}-{{fl.语言}}-{{fl.字母}}---fypage---{{fl.年份}}",
+ timeout: 5000,
+ class_parse: ".navbar-items li;a&&Text;a&&href;/(\\d+).html",
+ lazy: $js.toString(() => {
+ input = {parse: 1, url: input, js: ''};
+ }),
+ double: false,
+ 推荐: "a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href",
+ 一级: "a.module-poster-item.module-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href"
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/多多追剧[优].js b/drpy_t3/drpy_js/多多追剧[优].js
new file mode 100644
index 0000000..14e7438
--- /dev/null
+++ b/drpy_t3/drpy_js/多多追剧[优].js
@@ -0,0 +1,24 @@
+var rule = {
+ title: '多多追剧[优]',
+ 模板: '首图',
+ host: 'https://www.ddkk.tv',
+ url: '/channel/fyclass-fypage.html',
+ //searchUrl: '/search/-------------.html?wd=**',
+ detailUrl: '/detail/fyid.html',
+ searchUrl: '/index.php/ajax/suggest?mid=1&wd=**',
+ 搜索: 'json:list;name;pic;en;id',
+ searchable: 1,
+ headers: {
+ 'User-Agent': 'PC_UA',
+ },
+ class_parse: '.myui-header__menu li;a&&Text;a&&href;/(\\d+).html',
+ lazy: $js.toString(() => {
+ input = {
+ parse: 1,
+ url: input,
+ header: {
+ 'User-Agent': PC_UA
+ }
+ }
+ }),
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/天龙影院.js b/drpy_t3/drpy_js/天龙影院.js
new file mode 100644
index 0000000..59f422f
--- /dev/null
+++ b/drpy_t3/drpy_js/天龙影院.js
@@ -0,0 +1,68 @@
+var rule = {
+ author: '小可乐/240701/第一版',
+ title: '天龙影院',
+ 类型: '影视',
+ host: 'https://m.82mao.com',
+ hostJs: '',
+ headers: {'User-Agent': 'MOBILE_UA'},
+ 编码: 'utf-8',
+ timeout: 5000,
+ homeUrl: '/',
+ url: '/List/fyfilter.html',
+ filter_url: '{{fl.cateId}}-{{fl.area}}-{{fl.by}}-{{fl.class}}--{{fl.letter}}---fypage---{{fl.year}}',
+ detailUrl: '',
+ searchUrl: '/Search/**----------fypage---.html',
+ searchable: 1,
+ quickSearch: 0,
+ filterable: 1,
+
+ class_name: '电影&剧集&综艺&动漫',
+ class_url: '17&18&20&48',
+ filter_def: {
+ 17: {cateId: '17'},
+ 18: {cateId: '18'},
+ 20: {cateId: '20'},
+ 48: {cateId: '48'}
+ },
+
+ play_parse: true,
+ parse_url: 'http://cdn.113276.xyz/cs1/?id=',
+ lazy: `js:
+var kcode = JSON.parse(request(input).match(/var player_.*?=(.*?))[1]);
+var kurl = kcode.url;
+if (/m3u8|mp4/.test(kurl)) {
+input = { jx: 0, parse: 0, url: kurl }
+} else {
+input = { jx: 0, parse: 1, url: rule.parse_url+kurl }
+}`,
+
+ limit: 9,
+ double: false,
+ 推荐: '*',
+ 一级: '.list-item;h3&&Text;img&&src;span:eq(0)&&Text;a&&href',
+ 二级: {
+//名称;类型
+ title: '.bread&&Text;.info--label:eq(2)&&Text',
+//图片
+ img: '.pic&&img&&src',
+//主要描述;年份;地区;演员;导演
+ desc: '.info--label:eq(-2)&&Text;.info--label:eq(-1)&&Text;.info--label:eq(2)&&a:eq(-1)&&Text;.info--label:eq(1)&&Text;.info--label:eq(0)&&Text',
+//简介
+ content: '.detail-intro:eq(-1)&&p&&Text',
+//线路数组
+ tabs: 'li.tab-item',
+//线路标题
+ tab_text: 'font--i:eq(0)&&Text',
+//播放数组 选集列表
+ lists: '.series-list:eq(#id)&&a',
+//选集标题
+ list_text: 'body&&Text',
+//选集链接
+ list_url: 'a&&href',
+//链接处理
+ list_url_prefix: ''
+ },
+ 搜索: '*',
+
+ filter: {}
+}
diff --git a/drpy_t3/drpy_js/好趣网[播].js b/drpy_t3/drpy_js/好趣网[播].js
new file mode 100644
index 0000000..7c45b6f
--- /dev/null
+++ b/drpy_t3/drpy_js/好趣网[播].js
@@ -0,0 +1,32 @@
+var rule = {
+ title: '好趣网[播]',
+ 编码: 'GBK',//不填就默认utf-8
+ 搜索编码: 'GBK',//不填则不编码,默认都是按utf-8.可优先于全局编码属性.比如网页源码编码是gbk,这里可以指定utf-8搜索独立编码。多数情况这个属性不填或者填写gbk应对特殊的网站搜索
+ host: 'http://tv.haoqu99.com',
+ url: '/fyclass',
+ searchUrl: '/e/sch/index.php?page=fypage&keyboard=**&sear=1',
+ searchable: 2,//是否启用全局搜索,
+ quickSearch: 0,//是否启用快速搜索,
+ headers: {
+ 'User-Agent': 'MOBILE_UA'
+ },
+ timeout: 5000,//网站的全局请求超时,默认是3000毫秒
+ class_name: '央视&卫视频道&港澳台频道&国外电视台&广东&湖南&江苏&安徽&浙江&北京&辽宁&江西&山东&黑龙江&上海&云南&四川&河南&湖北&福建&重庆&河北&吉林&广西&山西&陕西&宁夏&海南&甘肃&新疆&内蒙古&天津&贵州&青海&西藏',
+ class_url: '1&2&4&5&3/guangdong&3/hunan&3/jiangsu&3/anhui&3/zhejiang&3/beijing&3/liaoning&3/jiangxi&3/shandong&3/heilongjiang&3/shanghai&3/yunnan&3/sichuan&3/henan&3/hubei&3/fujian&3/zhongqing&3/hebei&3/jilin&3/guangxi&3/shan-xi&3/shanxi&3/ningxia&3/hainan&3/gansu&3/xinjiang&3/neimenggu&3/tianjin&3/guizhou&3/qinghai&3/xizang',
+ play_parse: true,
+ // lazy:'js:input=input.replace("tv", "m")',
+ lazy: 'js:var url=jsp.pdfh(request(input),"body&&script&&Html").split("$")[1];input=url',
+ limit: 6,
+ 推荐: '.p-list-sya&&li;.s&&Text;img&&src;;a&&href',
+ 一级: '.bx-sya&&li;span&&Text;img&&src;;a&&href',
+ // 二级: '*',
+ 二级: {
+ "title": "strong.t&&Text;.v-top&&a:eq(1)&&Text",
+ "img": ".drop-panel:eq(1)&&img&&src",
+ "desc": ";;;;",
+ "content": ".drop-panel:eq(1)&&p:eq(2)&&Text",
+ "tabs": "js:TABS=['播放源']",
+ 'lists': 'js:log(TABS);let d=[];pd=jsp.pd;pdfh=jsp.pdfh;pdfa=jsp.pdfa;if(typeof play_url==="undefined"){var play_url=""}function getLists(html){let src=pdfa(html,".tab-list-syb&&li");let list=[];src.forEach(function(it){let title=pdfh(it,".s&&Text");let url="http://m.haoqu99.com/e/extend/tv.php?id="+pd(it,".tab-item&&data-player");list.push({title:title,url:url})});return{list:list,}}var data=getLists(html);var list=data.list;list=list.map(function(item){return(item.title+"$"+item.url)});log("list------------->"+list);LISTS=[list];'
+ },
+ 搜索: 'div.list-box.J-medal&&li;a&&Text;;;a&&href',
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/有声小说吧[听].js b/drpy_t3/drpy_js/有声小说吧[听].js
new file mode 100644
index 0000000..b6366d4
--- /dev/null
+++ b/drpy_t3/drpy_js/有声小说吧[听].js
@@ -0,0 +1,38 @@
+var rule = {
+ 类型: '听书',
+ title: '有声小说吧',
+ 编码: 'gb18030',
+ host: 'http://m.ysxs8.vip',
+ url: '/downlist/fyclass_fypage.html',
+ searchUrl: '/search.asp?page=fypage&searchword=**&searchtype=-1',
+ searchable: 2,
+ quickSearch: 0,
+ headers: {
+ 'User-Agent': 'MOBILE_UA'
+ },
+ timeout: 5000,
+ // homeUrl:'/fenlei/',
+ // class_parse: '.pd-class:eq(0) dd;a&&Text;a&&href;.*/(.*?).html',
+ class_name: '网络玄幻&恐怖悬疑&传统武侠&都市言情&官场刑侦&历史军事&探险盗墓&职场商战&明朝那些事儿&评书下载&相声戏曲&人物传记&广播剧&百家讲坛&外语读物&有声文学&儿童读物&管理营销',
+ class_url: 'r52&r17&r12&r13&r14&r15&r45&r81&r36&r3&r7&r16&r18&r32&r35&r41&r4&r6',
+ play_parse: true,
+ lazy: '',
+ limit: 6,
+ // double:true,
+ 推荐: '.list-ul .list-li;.list-name&&Text;*;.module-slide-author&&Text;*',
+ 一级: '.book-ol&&li;h4&&Text;img&&data-original;.book-meta&&Text;a&&href',
+ 二级: {
+ // title:'h2&&Text;.book-cell .book-rand-a:eq(2)&&Text',
+ title: 'h1&&Text;.book-cell .book-rand-a:eq(0)&&a&&Text',
+ img: '.book img&&src',
+ // desc:';;;;.book-des p&&Text',
+ desc: ';;;.book-rand-a:eq(2)&&Text;.book-des p&&Text',
+ content: '.book-des--p&&Text',
+ tabs: '.playlist-top&&h2',
+ // lists:'js:pd=jsp.pd;let url=pd(html,".bookbutton&&a&&href");log(url);html=request(url);let v=pd(html,".booksite&&script&&Html");var document={};var VideoListJson;VideoListJson=eval(v.split("VideoListJson=")[1].split(",urlinfo")[0]);log(typeof VideoListJson);let list1=VideoListJson[0][1];LISTS=[list1];log(LISTS);',
+ // 有声小说有防盗链,我服了(上面的列表数据正常拿到了,没法播放)
+ // lists:'#playlist:eq(#id)&&ul&&li',
+ lists: '#playlist ul li',
+ },
+ 搜索: '*',
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/有声绘本网[听].js b/drpy_t3/drpy_js/有声绘本网[听].js
new file mode 100644
index 0000000..e22cb9a
--- /dev/null
+++ b/drpy_t3/drpy_js/有声绘本网[听].js
@@ -0,0 +1,21 @@
+var rule = {
+ 类型: '听书',
+ title: '有声绘本网',
+ host: 'https://www.youshenghuiben.com',
+ url: '/fyclass/fypage',
+ searchUrl: '/search.php?&q=**&page=fypage',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 0,
+ headers: {
+ 'User-Agent': 'MOBILE_UA'
+ },
+ timeout: 5000,//网站的全局请求超时,默认是3000毫秒
+ class_parse: '#menu-main&&li:gt(0):lt(7);a&&Text;a&&href;com/(\\w+)',
+ play_parse: true,
+ limit: 6,
+ 推荐: '*',
+ 一级: 'article.excerpt-c5;a&&title;img&&src;.post-like&&Text;a&&href',
+ 二级: '*',
+ 搜索: 'article.excerpt-tw;*;*;time&&Text;*',
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/樱花动漫[漫].js b/drpy_t3/drpy_js/樱花动漫[漫].js
new file mode 100644
index 0000000..b90099a
--- /dev/null
+++ b/drpy_t3/drpy_js/樱花动漫[漫].js
@@ -0,0 +1,8 @@
+var rule = {
+ 模板: '首图',
+ title: '樱花动漫[漫]',
+ host: 'https://katedm.com/',
+ url: '/list/fyclass-fypage.html',
+ searchUrl: '/search/**----------fypage---.html',
+ 搜索: '#searchList li;a&&title;.lazyload&&data-original;.pic-tag&&Text;a&&href',
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/爱上你听书网[听].js b/drpy_t3/drpy_js/爱上你听书网[听].js
new file mode 100644
index 0000000..af34190
--- /dev/null
+++ b/drpy_t3/drpy_js/爱上你听书网[听].js
@@ -0,0 +1,28 @@
+var rule = {
+ 类型: '听书',
+ title: '爱上你听书网',
+ host: 'https://www.230ts.net',
+ url: '/sort/fyclass/fypage.html',
+ searchUrl: '/search.html?searchtype=name&searchword=**&page=fypage',
+ searchable: 2,
+ quickSearch: 0,
+ headers: {
+ 'User-Agent': 'PC_UA'
+ },
+ timeout: 5000,
+ class_parse: '.nav-ol&&li:gt(0):lt(6);a&&Text;a&&href;.*/(\\w+).html',
+ play_parse: true,
+ lazy: 'js:input=input.replace("www","wap")',
+ limit: 6,
+ 推荐: '#myTab_Content1&&li;.tab-book-title&&Text;*;.tab-book-author&&Text;*',
+ 一级: 'ul.list-works&&li;.list-book-dt--span&&Text;.lazy&&data-original;.book-author:eq(2)&&a&&Text;a&&href',
+ 二级: {
+ title: '.book-cover&&alt;.book-info&&dd--span:eq(1)&&Text',
+ img: '.book-cover&&src',
+ desc: '.book-info&&dd:eq(4)&&Text;;;.book-info&&dd--span:eq(3)&&Text;.book-info&&dd--span:eq(2)&&Text',
+ content: '.book-des&&Text',
+ tabs: '.playlist-top&&h2',
+ lists: '#playlist:eq(#id)&&li',
+ },
+ 搜索: '*',
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/爱看农民[优].js b/drpy_t3/drpy_js/爱看农民[优].js
new file mode 100644
index 0000000..9b65653
--- /dev/null
+++ b/drpy_t3/drpy_js/爱看农民[优].js
@@ -0,0 +1,71 @@
+var rule = {
+ author: '小可乐/240527/第一版',
+ title: '爱看农民[优]',
+ host: 'https://m.emsdn.cn',
+ hostJs: $js.toString(() => {
+ print(HOST);
+ let html = request(HOST, {headers: {"User-Agent": PC_UA}});
+ let src = jsp.pdfh(html, "body&&a:eq(0)&&href") || jsp.pdfh(html, "body&&a:eq(0)&&Text");
+ if (src && src.length > 5) {
+ print(src);
+ if (!src.startsWith('http')) {
+ src = 'https://' + src
+ }
+ print("抓到主页:" + src);
+ HOST = src
+ }
+ }),
+ headers: {'User-Agent': 'PC_UA'},
+ 编码: 'utf-8',
+ timeout: 5000,
+ homeUrl: '/',
+ url: '/vod-list-id-fyfilter.html',
+ filter_url: '{{fl.cateId}}-pg-fypage-order--by-{{fl.by or "time"}}-class-0-year-{{fl.year}}-letter-{{fl.letter}}-area-{{fl.area}}-lang-',
+ detailUrl: '',
+ searchUrl: '/vod-search-pg-fypage-wd-**.html',
+ searchable: 1,
+ quickSearch: 1,
+ filterable: 1,
+ class_name: '电影&剧集&综艺&动漫&短剧',
+ class_url: '1&2&3&4&26',
+ filter_def: {
+ 1: {cateId: '1'},
+ 2: {cateId: '2'},
+ 3: {cateId: '3'},
+ 4: {cateId: '4'},
+ 26: {cateId: '26'}
+ },
+ tab_rename: {
+ '播放列表1:(默认)': '默认',
+ '播放列表1:(云播①)': '云播①',
+ '播放列表1:(云播③)': '云播③',
+ '播放列表2:(百度网盘)': '百度网盘'
+ },
+ play_parse: true,
+ lazy: $js.toString(() => {
+ let init_js = `Object.defineProperties(navigator, {platform: {get: () => 'iPhone'}});`;
+ input = {
+ parse: 1,
+ url: input,
+ js: `try{location.href = document.querySelectorAll("iframe")[1].src;}catch(err) {}document.querySelector(".line").click()`,
+ parse_extra: '&init_script=' + encodeURIComponent(base64Encode(init_js)),
+ }
+ }),
+ limit: 12,
+ double: false,
+ 推荐: 'ul.list_06:has(li) li;*;*;*;*',
+ 一级: 'ul.list_01 li;a:eq(0)&&title;img&&src;font&&Text;a:eq(0)&&href',
+ 二级: {
+ "title": ".fen&&h1&&Text;.d_z_y:eq(2)&&font&&Text",
+ "img": ".lef:eq(-1)&&img&&src",
+ "desc": ".d_z_y:eq(-3)&&Text;.d_z_y:eq(-2)&&font&&Text;;.d_z_y:eq(1)&&font&&Text;.d_z_y:eq(0)&&font&&Text",
+ "content": ".jjie&&Text",
+ "tabs": "h2 span",
+ "tab_text": "body&&Text",
+ "lists": ".soyurl:eq(#id)&&a",
+ "list_text": "body&&Text",
+ "list_url": "a&&href"
+ },
+ 搜索: '*',
+ filter: 'H4sIAAAAAAAAA+2YW08TQRTH3/sx9rkPMy0tLW/c7/c7hIeKm0hETKCaEEKiFoQWATXSChYviaUlgpRgiBShX6Y7pd/CrZw959QHQ4K8zVvP79+dmf90dv9nu+AypFEz7lowHprzRo0xGQqbrfcNtzETemTadfH43Pq4ZtdPQ9NPbDC+YMzY2FrOlCKZMrYLaSy6AccyhYtkMboCio+UeNKKpknxo1JcPVaRZVKqSUm/sc7OSQmgop6/Vs/ipARpnmi6YjQp6KLV94VclEm0bhWJqRc7TKLlWamVikVIe30Ti27csNCsGaLtspJZ61Xu39tFQ39Nl7ZfAoXC0Up72+rnEWhQ4HWbWXV26Vx3XeCeXW5YHy5AgwLH/LRPGhS4A4mUSh6ABgVqJ1m6DgrU4lkr9tna/eLIWOOs+wdqN3WVyhdyO87cHKGr9ayV23NcXReOdrV2TCuAgla3xVe3xTV7KWotb2+tMyzWOHIqX9w8LEa3ncGxdr5RyC8VLxIq7vwYVOMsy6fW94gzxXVRcUbmzdAsnRGVOC0lftzwjHiEpwrYn4+Me4l7OfcQ93AuiUvOBXHBuAwil0HOA8QDnFcTr+bcT9zPuY+4j3PyK7lfSX4l9yvJr+R+JfmV3K8kv5L7FeRXcL+C/AruV5Bfwf0K8iu4X0F+BfcryK/gfgX5FdyvIL+C+xXkV3C/gvzaHyvO5bQZDpvsZFqHCXW0fsOTWQugFkkdkDok9UDqkTQAaUDSCKQRSROQJiTNQJqRtABpQdIKpBVJG5A2JO1A2pF0AOlA0gmkE0kXkC4k3UC6kfQA6UHSC6QXSR+QPiT9QPqRDAAZQDIIZBDJEJAhJMNAhpGMABlBMgpkFMkYkLHKU3Fvnj2rNt5auc0bngh6sNlFeMoeAJ+huZzKvgPlwVR4jp6/R0vWqpOBc5OPZ83yYlwTbpfhuW1fQneHnQmFXNruDZwQJ8kO1nKEnmQdycv8pMopSVfR7akO0uVwJcmnuwLdFeiuQHcFuivQXYHuCu6uK/DyrkDHrI5ZHbM6ZnXM6pg1dMz+x5ituu3LN91NViyjfn1j78qBvyT253pQv0brfNf5rvNd57vOd53vd/jnul+/R+uc1Tmrc1bnrKFzVufsXeSsa/E37iRyfV8nAAA='
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/爱看机器人[虫].js b/drpy_t3/drpy_js/爱看机器人[虫].js
new file mode 100644
index 0000000..0ae3f6a
--- /dev/null
+++ b/drpy_t3/drpy_js/爱看机器人[虫].js
@@ -0,0 +1,68 @@
+var rule = {
+ title:'爱看机器人[虫]',
+ // host:'https://v.ikanbot.com',
+ host:'https://v.aikanbot.com',
+ url:'/hot/index-fyclass-fyfilter-p-fypage.html[/hot/index-fyclass-fyfilter.html]',
+ //https://www.ikanbot.com/search?q=%E6%96%97%E7%BD%97%E5%A4%A7&p=2
+ // searchUrl:'/search?q=**&p=fypage',
+ searchUrl:'/search?q=**&p=fypage[/search?q=**]',
+ searchable:2,
+ quickSearch:0,
+ filterable:1,
+ filter_url:'{{fl.tag}}',
+ 图片来源:'@Referer=https://v.ikanbot.com/@User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
+ filter:{
+ "movie":[{"key":"tag","name":"标签","value":[{"n":"热门","v":"热门"},{"n":"最新","v":"最新"},{"n":"经典","v":"经典"},{"n":"豆瓣高分","v":"豆瓣高分"},{"n":"冷门佳片","v":"冷门佳片"},{"n":"华语","v":"华语"},{"n":"欧美","v":"欧美"},{"n":"韩国","v":"韩国"},{"n":"日本","v":"日本"},{"n":"动作","v":"动作"},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"科幻","v":"科幻"},{"n":"悬疑","v":"悬疑"},{"n":"恐怖","v":"恐怖"},{"n":"治愈","v":"治愈"},{"n":"豆瓣top250","v":"豆瓣top250"}]}]
+ ,"tv":[{"key":"tag","name":"标签","value":[{"n":"热门","v":"热门"},{"n":"美剧","v":"美剧"},{"n":"英剧","v":"英剧"},{"n":"韩剧","v":"韩剧"},{"n":"日剧","v":"日剧"},{"n":"国产剧","v":"国产剧"},{"n":"港剧","v":"港剧"},{"n":"日本动画","v":"日本动画"},{"n":"综艺","v":"综艺"},{"n":"纪录片","v":"纪录片"}]}]
+ },
+ filter_def:{
+ movie:{tag:'热门'},
+ tv:{tag:'国产剧'},
+ },
+ filter获取方法:`
+ let value = [];
+ $('ul').eq(2).find('li').each(function() {
+ // console.log($(this).text());
+ let n = $(this).text().trim();
+ value.push({
+ 'n': n, 'v': n
+ });
+ });
+ // 电影执行:
+ let data = {'movie': [{'key': 'tag', 'name': '标签', 'value': value}]};
+ console.log(JSON.stringify(data));
+
+ //剧集执行:
+ let data = {'tv': [{'key': 'tag', 'name': '标签', 'value': value}]};
+ console.log(JSON.stringify(data));
+ `,
+ headers:{'User-Agent':'PC_UA',},
+ class_name:'电影&剧集',
+ class_url:'movie&tv',
+ play_parse:true,
+ double:true,
+ tab_remove:['wjm3u8','ikm3u8','sdm3u8','M3U8','jinyingm3u8','fsm3u8','ukm3u8'],//移除某个线路及相关的选集
+ tab_order:['bfzym3u8','1080zyk','kuaikan','lzm3u8','ffm3u8','snm3u8','qhm3u8','gsm3u8','zuidam3u8','bjm3u8','wolong','xlm3u8','yhm3u8'],//线路顺序,按里面的顺序优先,没写的依次排后面
+ tab_rename:{'bfzym3u8':'暴风','1080zyk':'优质','kuaikan':'快看','lzm3u8':'量子','ffm3u8':'非凡','snm3u8':'索尼','qhm3u8':'奇虎','haiwaikan':'海外看','gsm3u8':'光速','zuidam3u8':'最大','bjm3u8':'八戒','wolong':'卧龙','xlm3u8':'新浪','yhm3u8':'樱花','tkm3u8':'天空','jsm3u8':'极速','wjm3u8':'无尽','sdm3u8':'闪电','kcm3u8':'快车','jinyingm3u8':'金鹰','fsm3u8':'飞速','tpm3u8':'淘片','lem3u8':'鱼乐','dbm3u8':'百度','tomm3u8':'番茄','ukm3u8':'U酷','ikm3u8':'爱坤','hnzym3u8':'红牛资源','hnm3u8':'红牛','68zy_m3u8':'68','kdm3u8':'酷点','bdxm3u8':'北斗星','hhm3u8':'豪华','kbm3u8':'快播'},//线路名替换如:lzm3u8替换为量子资源
+ 推荐:'.v-list;div.item;*;*;*;*', //这里可以为空,这样点播不会有内容
+ // 一级:'.v-list&&div.item;p&&Text;img&&src;;a&&href', //一级的内容是推荐或者点播时候的一级匹配
+ 一级:'.v-list&&div.item;p&&Text;img&&data-src;;a&&href', //一级的内容是推荐或者点播时候的一级匹配
+ // 二级:二级,
+ 二级:'js:eval(unescape(base64Decode("anM6CiAgICAgICAgcGRmaCA9IGpzcC5wZGZoOwogICAgICAgIGZ1bmN0aW9uIGdldFRva2VuKGh0bWwxKSB7CiAgICAgICAgICAgIGxldCBjdXJyZW50SWQgPSBwZGZoKGh0bWwxLCAnI2N1cnJlbnRfaWQmJnZhbHVlJyk7CiAgICAgICAgICAgIGxldCBlVG9rZW4gPSBwZGZoKGh0bWwxLCAnI2VfdG9rZW4mJnZhbHVlJyk7CiAgICAgICAgICAgIGlmICghY3VycmVudElkIHx8ICFlVG9rZW4pIHJldHVybiAnJzsKICAgICAgICAgICAgbGV0IGlkTGVuZ3RoID0gY3VycmVudElkLmxlbmd0aDsKICAgICAgICAgICAgbGV0IHN1YklkID0gY3VycmVudElkLnN1YnN0cmluZyhpZExlbmd0aCAtIDQsIGlkTGVuZ3RoKTsKICAgICAgICAgICAgbGV0IGtleXMgPSBbXTsKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdWJJZC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgbGV0IGN1ckludCA9IHBhcnNlSW50KHN1YklkW2ldKTsKICAgICAgICAgICAgICAgIGxldCBzcGxpdFBvcyA9IGN1ckludCAlIDMgKyAxOwogICAgICAgICAgICAgICAga2V5c1tpXSA9IGVUb2tlbi5zdWJzdHJpbmcoc3BsaXRQb3MsIHNwbGl0UG9zICsgOCk7CiAgICAgICAgICAgICAgICBlVG9rZW4gPSBlVG9rZW4uc3Vic3RyaW5nKHNwbGl0UG9zICsgOCwgZVRva2VuLmxlbmd0aCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGtleXMuam9pbignJyk7CiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIFZPRD17fTsKICAgICAgICAgICAgbGV0IGh0bWwxID0gcmVxdWVzdChpbnB1dCk7CiAgICAgICAgICAgIFZPRC52b2RfaWQgPSBwZGZoKGh0bWwxLCAnI2N1cnJlbnRfaWQmJnZhbHVlJyk7CiAgICAgICAgICAgIFZPRC52b2RfbmFtZSA9IHBkZmgoaHRtbDEsICdoMiYmVGV4dCcpOwogICAgICAgICAgICBWT0Qudm9kX3BpYyA9IHBkZmgoaHRtbDEsICcuaXRlbS1yb290JiZpbWcmJmRhdGEtc3JjJyk7CiAgICAgICAgICAgIFZPRC52b2RfYWN0b3IgPSBwZGZoKGh0bWwxLCAnLm1ldGE6ZXEoNCkmJlRleHQnKTsKICAgICAgICAgICAgVk9ELnZvZF9hcmVhID0gcGRmaChodG1sMSwgJy5tZXRhOmVxKDMpJiZUZXh0Jyk7CiAgICAgICAgICAgIFZPRC52b2RfeWVhciA9IHBkZmgoaHRtbDEsICcubWV0YTplcSgyKSYmVGV4dCcpOwogICAgICAgICAgICBWT0Qudm9kX3JlbWFya3MgPSAnJzsKICAgICAgICAgICAgVk9ELnZvZF9kaXJlY3RvciA9ICcnOwogICAgICAgICAgICBWT0Qudm9kX2NvbnRlbnQgPSBwZGZoKGh0bWwxLCAnI2xpbmUtdGlwcyYmVGV4dCcpOwogICAgICAgICAgICAvLyBsb2coVk9EKTsKICAgICAgICAgICAgdmFyIHZfdGtzID0gZ2V0VG9rZW4oaHRtbDEpOwogICAgICAgICAgICBsb2coJ3ZfdGtzID09PT4gJyArIHZfdGtzKTsKICAgICAgICAgICAgaW5wdXQgPSBIT1NUICsgJy9hcGkvZ2V0UmVzTj92aWRlb0lkPScgKyBpbnB1dC5zcGxpdCgnLycpLnBvcCgpICsgJyZtdHlwZT0yJnRva2VuPScrdl90a3M7CiAgICAgICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCwgewogICAgICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzonTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM18yXzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzEzLjAuMyBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMScsCiAgICAgICAgICAgICAgICAgICAgJ1JlZmVyZXInOiBNWV9VUkwsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBwcmludChodG1sKTsKICAgICAgICAgICAgaHRtbCA9IEpTT04ucGFyc2UoaHRtbCk7CiAgICAgICAgICAgIGxldCBlcGlzb2RlcyA9IGh0bWwuZGF0YS5saXN0OwogICAgICAgICAgICBsZXQgcGxheU1hcCA9IHt9OwogICAgICAgICAgICBpZiAodHlwZW9mIHBsYXlfdXJsID09PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgdmFyIHBsYXlfdXJsID0gJycKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgbWFwID0ge30KICAgICAgICAgICAgbGV0IGFyciA9IFtdCiAgICAgICAgICAgIGxldCBuYW1lID0gewogICAgICAgICAgICAgICAgJ2JmenltM3U4JzogJ+aatOmjjicsCiAgICAgICAgICAgICAgICAnMTA4MHp5ayc6ICfkvJjotKgnLAogICAgICAgICAgICAgICAgJ2t1YWlrYW4nOiAn5b+r55yLJywKICAgICAgICAgICAgICAgICdsem0zdTgnOiAn6YeP5a2QJywKICAgICAgICAgICAgICAgICdmZm0zdTgnOiAn6Z2e5YehJywKICAgICAgICAgICAgICAgICdoYWl3YWlrYW4nOiAn5rW35aSW55yLJywKICAgICAgICAgICAgICAgICdnc20zdTgnOiAn5YWJ6YCfJywKICAgICAgICAgICAgICAgICd6dWlkYW0zdTgnOiAn5pyA5aSnJywKICAgICAgICAgICAgICAgICdiam0zdTgnOiAn5YWr5oiSJywKICAgICAgICAgICAgICAgICdzbm0zdTgnOiAn57Si5bC8JywKICAgICAgICAgICAgICAgICd3b2xvbmcnOiAn5Y2n6b6ZJywKICAgICAgICAgICAgICAgICd4bG0zdTgnOiAn5paw5rWqJywKICAgICAgICAgICAgICAgICd5aG0zdTgnOiAn5qix6IqxJywKICAgICAgICAgICAgICAgICd0a20zdTgnOiAn5aSp56m6JywKICAgICAgICAgICAgICAgICdqc20zdTgnOiAn5p6B6YCfJywKICAgICAgICAgICAgICAgICd3am0zdTgnOiAn5peg5bC9JywKICAgICAgICAgICAgICAgICdzZG0zdTgnOiAn6Zeq55S1JywKICAgICAgICAgICAgICAgICdrY20zdTgnOiAn5b+r6L2mJywKICAgICAgICAgICAgICAgICdqaW55aW5nbTN1OCc6ICfph5HpubAnLAogICAgICAgICAgICAgICAgJ2ZzbTN1OCc6ICfpo57pgJ8nLAogICAgICAgICAgICAgICAgJ3RwbTN1OCc6ICfmt5jniYcnLAogICAgICAgICAgICAgICAgJ2xlbTN1OCc6ICfpsbzkuZAnLAogICAgICAgICAgICAgICAgJ2RibTN1OCc6ICfnmb7luqYnLAogICAgICAgICAgICAgICAgJ3RvbW0zdTgnOiAn55Wq6IyEJywKICAgICAgICAgICAgICAgICd1a20zdTgnOiAnVemFtycsCiAgICAgICAgICAgICAgICAnaWttM3U4JzogJ+eIseWdpCcsCiAgICAgICAgICAgICAgICAnaG56eW0zdTgnOiAn57qi54mb6LWE5rqQJywKICAgICAgICAgICAgICAgICdobm0zdTgnOiAn57qi54mbJywKICAgICAgICAgICAgICAgICc2OHp5X20zdTgnOiAnNjgnLAogICAgICAgICAgICAgICAgJ2tkbTN1OCc6ICfphbfngrknLAogICAgICAgICAgICAgICAgJ2JkeG0zdTgnOiAn5YyX5paX5pifJywKICAgICAgICAgICAgICAgICdxaG0zdTgnOiAn5aWH6JmOJywKICAgICAgICAgICAgICAgICdoaG0zdTgnOiAn6LGq5Y2OJwogICAgICAgICAgICB9OwogICAgICAgICAgICBlcGlzb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGVwKSB7CiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IEpTT04ucGFyc2UoZXBbJ3Jlc0RhdGEnXSk7CiAgICAgICAgICAgICAgICBkYXRhLm1hcCh2YWwgPT4gewogICAgICAgICAgICAgICAgICAgIGlmKCFtYXBbdmFsLmZsYWddKXsKICAgICAgICAgICAgICAgICAgICAgICAgbWFwW3ZhbC5mbGFnXSA9IFt2YWwudXJsLnJlcGxhY2VBbGwoJyMjJywnIycpXQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1hcFt2YWwuZmxhZ10ucHVzaCh2YWwudXJsLnJlcGxhY2VBbGwoJyMjJywnIycpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gbWFwKSB7CiAgICAgICAgICAgICAgICBpZiAoJ2JmenltM3U4JyA9PSBrZXkpIHsKICAgICAgICAgICAgICAgICAgICBhcnIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWc6IG5hbWVba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtYXBba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogMQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCcxMDgwenlrJyA9PSBrZXkpIHsKICAgICAgICAgICAgICAgICAgICBhcnIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWc6IG5hbWVba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtYXBba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogMgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdrdWFpa2FuJyA9PSBrZXkpIHsKICAgICAgICAgICAgICAgICAgICBhcnIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWc6IG5hbWVba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtYXBba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogMwogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdsem0zdTgnID09IGtleSkgewogICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgZmxhZzogbmFtZVtrZXldLAogICAgICAgICAgICAgICAgICAgICAgICB1cmw6IG1hcFtrZXldLAogICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiA0CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2ZmbTN1OCcgPT0ga2V5KSB7CiAgICAgICAgICAgICAgICAgICAgYXJyLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICBmbGFnOiBuYW1lW2tleV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbWFwW2tleV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQ6IDUKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSBlbHNlIGlmICgnc25tM3U4JyA9PSBrZXkpIHsKICAgICAgICAgICAgICAgICAgICBhcnIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWc6IG5hbWVba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtYXBba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogNgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdxaG0zdTgnID09IGtleSkgewogICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgZmxhZzogbmFtZVtrZXldLAogICAgICAgICAgICAgICAgICAgICAgICB1cmw6IG1hcFtrZXldLAogICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiA3CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgYXJyLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICBmbGFnOiAobmFtZVtrZXldKSA/IG5hbWVba2V5XSA6IGtleSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtYXBba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogOAogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYXJyLnNvcnQoKGEsIGIpID0+IGEuc29ydCAtIGIuc29ydCk7CiAgICAgICAgICAgIGxldCBwbGF5RnJvbSA9IFtdOwogICAgICAgICAgICBsZXQgcGxheUxpc3QgPSBbXTsKICAgICAgICAgICAgYXJyLm1hcCh2YWwgPT4gewogICAgICAgICAgICAgICAgaWYgKCEvdW5kZWZpbmVkLy50ZXN0KHZhbC5mbGFnKSkgewogICAgICAgICAgICAgICAgICAgIHBsYXlGcm9tLnB1c2godmFsLmZsYWcpOwogICAgICAgICAgICAgICAgICAgIHBsYXlMaXN0LnB1c2godmFsLnVybCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgICAgIGxldCB2b2RfcGxheV9mcm9tID0gcGxheUZyb20uam9pbignJCQkJyk7CiAgICAgICAgICAgIGxldCB2b2RfcGxheV91cmwgPSBwbGF5TGlzdC5qb2luKCckJCQnKTsKICAgICAgICAgICAgVk9EWyd2b2RfcGxheV9mcm9tJ10gPSB2b2RfcGxheV9mcm9tOwogICAgICAgICAgICBWT0RbJ3ZvZF9wbGF5X3VybCddID0gdm9kX3BsYXlfdXJsOwogICAgICAgICAgICAvLyBsb2coVk9EKTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIGxvZygn6I635Y+W5LqM57qn6K+m5oOF6aG15Y+R55Sf6ZSZ6K+vOicgKyBlLm1lc3NhZ2UpCiAgICAgICAgfQ==")))',
+ // 搜索:'#search-result&&.media;h5&&a&&Text;a&&img&&data-src;.label&&Text;a&&href',//第三个是描述,一般显示更新或者完结
+ 搜索:'.col-md-8&&.media;h5&&a&&Text;a&&img&&data-src;.label&&Text;a&&href',//第三个是描述,一般显示更新或者完结
+ lazy:`
+ if(/\\.m3u8$/.test(input)){
+ input = {
+ parse:0,
+ url:getProxyUrl()+'&url='+input,
+ jx:0
+ }
+ }
+ `,
+ proxy_rule: `js:
+ let url = input.url;
+ let m3u8 = fixAdM3u8Ai(url);
+ input = [200,'application/vnd.apple.mpegurl',m3u8]
+ `
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/玩偶哥哥[盘].js b/drpy_t3/drpy_js/玩偶哥哥[盘].js
new file mode 100644
index 0000000..f433f49
--- /dev/null
+++ b/drpy_t3/drpy_js/玩偶哥哥[盘].js
@@ -0,0 +1,34 @@
+Object.assign(muban.mxone5.二级,{
+ //tabs: '.module-tab-item',
+ lists: '.module-row-one:eq(#id)&&a.module-row-text',
+ list_text:'h4&&Text',
+ list_url:'a&&data-clipboard-text',
+});
+var rule = {
+ title: '玩偶哥哥[盘]',
+ 模板: 'mxone5',
+ host: 'https://www.wogg.net',
+ //url: '/index.php/vod/show/fyclass--------fypage---.html',
+ url: '/index.php/vodshow/fyclass-fyfilter.html',
+ filter_url: '{{fl.area}}-{{fl.by or "time"}}-{{fl.class}}-{{fl.lang}}-{{fl.letter}}---fypage---{{fl.year}}',
+ searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
+ filter: 'H4sIAAAAAAAAA+2a2VIbRxSG30XXTmkGjLc77/u+O+UL2VElrjhOlSGpolxUsUmWsI2AwsgEASZmDwKxhICI4GXUM9JbeKRunTnzD2WNA0kqTl/q+3+d7j7dozlHMy9CZujY1y9C30dbQ8dCjyMt0fPfhA6EnkV+iDqf7eUtMfbK+fxz5OlP0arxmYNFbLbcNVvBzgcz1Paw7QBFeBppbnYDiOSM1RX7dIBQ5dtVOpRx/IqGq5HCitUsdmJZxXMtitUsVkef1T7ktShGA/XMFgsZGEgyGmimX2xuwUCSURRaG4siGc0l8a6YT8JcJKtZStlp8Xrea1GM5tKzZBfAohhbkT245VtRhZFl6qVvRYrRdLPTxe33MF3JKEp8oDw8B1Ekoyhj884aIYpkn7FHVueCPdQPFsnI0tVjdf4CFskodVspEduA1ElWs5RHB6x3U16LYjTQ0MtSMg8DSUZ52V60B38XhWVIDWEypiZLH/DUSEaW3rhIrYBFMjo1O33O9sKpkczdqYw12o87VWVk6d6xf4OlK0YJLPTbW5ndluZR+E9A5Hk0wn4BMjnxOh/0F2Bypjwcr41TCRRWiHZretjaWPI4FHITnLM2t70xJKI1bfeKkYLHoRBt+OpbdChEG/BqGR0KUYz0lJVZ8MaQiNYyPocxFHJP1R/oUMidac4/05wnxpucyE97Y0hEMbpTTpZFYs4bhiiteWrHTmXt5LB32UTdH6P31qsd58veQYmSL7Ze3BrymiTix+lp5Nm37nEqLWVLs+1Bj9NIwfHXBqgECivEthEdCtFhWZlEh0K0jemCeJNGk0vZdvtMErEjgw6F2MH0OSRiR8a3ZolY2sVil9chEU97azTy3E27lV4vp9cCpr3BaDhYC18JE64Cpjai2sjVBlQbuGqianLVQNVgqnkUVAcw9QiqR7h6GNXDXD2E6iGuNqHaxFXMlclzZWKuTJ4rE3Nl8lyZmCuT58rEXJk8VwbmyuC5MjBXBs+VgbkyeK4MzJXBc2VgrgyeKwNzZfBcGZgrg+fKwFwZPFcG5srguTIwVw7w/EZFW1qi7HIR2bS19Cbg5XKcLsVqlPBxUk6AcoKUk6CcJOUUKKdIOQ3KaVLOgHKGlLOgnCXlHCjnSDkPynlSLoBygZSLoFwk5RIol0i5DMplUq6AcoWUq6BcJeUaKNdIuQ7KdVJugHKDlJug3CTlFii3SLkNym1S7oByh5S7oNwl5R4o90i5D8p9Uh6A8oAU46ujoFUIvwQetbK7Re+AyKd8x9+9iVTiPGoNtzxx7LUhivm8lRtk6ndPWprdG/VSt0jEmdr8+Mfn0coMHh4INeyxhW3YtxbWHs/6WljFWFFSzM/4G90qhjrX53KYtb0KvYvoWBddqd06GKV8RoMtFtdFPgsWyT6vHa3XYAdoRwM02AFapQAtYHFzwtcqKeb2mjFreAk2QzKay9u4r+9VjHVT/uMh2e5FsYrir4r30mTFY47fW3ZLFLwx2Y82rH6DFKRRq9f+BGjUhnJObyJGJ7xhiOp25S+3K7rV0K2GbjV0q6FbDd1qfBmtRuMeW43GfWs1yu1Je6Ydqn7JeNHaPe4vWh1Gi13cKeUSXotiFGUga/XAUwLF3EogZm1Aja2YW06sFjf7YLqSsXKv/AGmqxhZ8vNicQwsktFcRlb8D2skoyiD49YaPtyTjKJsbFiJVDE/4HvM4lEojWu/Oj0FpFEyirjcWep4DbEk+8cK+0pLmfI6FGI1nVPlYVFeQeRYmHE2xeuQSJfBugzWZbAug3UZrMtgXQZ/0WXwwT2WwU37VgYHqHEDvMtld2VLE1BMK0YD9c7afXEYSDKy9I3ZC/jOkmRujVb3/alS32ipF14aU4wGej8hRuBfesVooPp/wVuZvP9FLcloLvXfMwrwjpvIOcleg7lIxi1Tq37LlPuww57cLv4Jr3spRlF6x0ViBKJI5h76FZGFPkQxGmikxxqGDkIxN7vLYieN2a0yVvT93X/ky0dGnnrf+xSp/l/sn6jmd12H/ttb1/u63tf1vq73db3PFF3vf9n1ftO+1vv6YtYX8//8YtbFny7+dPEXsPj7Vx/4HtnrE19376xku5VJVp5XFt7ayZfMoG+O+uaob4765qhvjvrm+J+5ObZ9BBHdMT09QAAA',
+ class_parse: '.grid-box&&ul&&li;a&&Text;a&&href;.*/(.*?).html',
+ cate_exclude: '全部影片',
+ 一级: '.module-items .module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
+ lazy: `
+ if (/(pan.quark.cn|www.aliyundrive.com|www.alipan.com)/.test(input)){
+let type="ali";
+if (input.includes("pan.quark.cn")){
+type="quark";
+} else if (input.includes("www.aliyundrive.com") || input.includes("www.alipan.com")){
+type="ali";
+}
+let confirm="";
+//let confirm="&confirm=0";
+input = getProxyUrl().replace('js',type)+'&type=push'+confirm+'&url='+encodeURIComponent(input);
+//input={parse:0,url:input}
+}
+
+ `,
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/童趣[儿].js b/drpy_t3/drpy_js/童趣[儿].js
new file mode 100644
index 0000000..1a4c6de
--- /dev/null
+++ b/drpy_t3/drpy_js/童趣[儿].js
@@ -0,0 +1,81 @@
+var rule = {
+ 类型: '影视',//影视|听书|漫画|小说
+ title: '童趣[儿]',
+ host: 'https://www.boosj.com',
+ url: '/search_res_3362__fyclass_fypage_fyfilter',
+ searchUrl: 'https://search.boosj.com/m_ajax?q=**&p=fypage&typeId=3362',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 1,
+ filter: '',
+ filter_url: '{{fl.by}}.html{{fl.age}}',
+ filter_def: {},
+ headers: {
+ 'User-Agent': 'MOBILE_UA',
+ },
+ timeout: 5000,
+ class_parse: $js.toString(() => {
+ let classes = [{type_id: '', type_name: '全部'}, {type_id: 28, type_name: '辅食'}, {
+ type_id: 582,
+ type_name: '动画'
+ }, {type_id: 3364, type_name: '儿童舞蹈'}, {type_id: 3366, type_name: '少儿英语'}, {
+ type_id: 3367,
+ type_name: '儿童歌曲'
+ }, {type_id: 3622, type_name: '才艺'}, {type_id: 3782, type_name: '播视自制'}, {
+ type_id: 3822,
+ type_name: '故事'
+ }, {type_id: 3842, type_name: '亲子教育'}, {type_id: 4402, type_name: '美术'}, {
+ type_id: 4583,
+ type_name: '其他'
+ }, {type_id: 4762, type_name: '儿童游戏'}, {type_id: 4842, type_name: '识物'}, {
+ type_id: 4843,
+ type_name: '绘本'
+ }, {type_id: 4844, type_name: '古诗'}, {type_id: 4845, type_name: '科普'}, {
+ type_id: 5102,
+ type_name: '儿童玩具'
+ }, {type_id: 5142, type_name: '播视童趣儿童玩具'}];
+ homeObj.filter = {};
+ let jsonData = [
+ {
+ key: 'age',
+ name: '年龄段',
+ value: [
+ {n: '全部', v: ''},
+ {n: '6岁以上', v: '?p367=370'},
+ {n: '3~6岁', v: '?p367=369'},
+ {n: '0~3岁', v: '?p367=368'},
+ ],
+ init: '',
+ },
+ {
+ key: 'by',
+ name: '排序',
+ value: [
+ {n: '全部', v: ''},
+ {n: '最新发布', v: 'lately'},
+ {n: '最多播放', v: 'pop'},
+ {n: '最多评论', v: 'view'},
+ ],
+ init: '',
+ },
+ ];
+ classes.forEach(it => {
+ homeObj.filter[it.type_id] = jsonData;
+ });
+ input = classes
+ }),
+ cate_exclude: '',
+ play_parse: true,
+ lazy: $js.toString(() => {
+ input = {
+ parse: 1, url: input, js: "document.querySelector('video').play();",
+ header: {
+ 'User-Agent': PC_UA,
+ }
+ };
+ }),
+ 推荐: '',
+ 一级: 'body div.bj-col4:has(h3);a&&title;img&&data-original;span.played&&Text;a&&href',
+ 二级: '*',
+ 搜索: 'json:body.result;resourceName;imageUrl;clickNumStr;playUrl',
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/素白白[优].js b/drpy_t3/drpy_js/素白白[优].js
new file mode 100644
index 0000000..c7d6446
--- /dev/null
+++ b/drpy_t3/drpy_js/素白白[优].js
@@ -0,0 +1,75 @@
+// 地址发布页 https://subaibai.vip/
+// 搜索数字验证
+var rule = {
+ title: '素白白[优]',
+ // host:'https://www.subaibaiys.com',
+ host: 'https://subaibai.vip',
+ hostJs: $js.toString(() => {
+ print(HOST);
+ let html = request(HOST, {headers: {"User-Agent": PC_UA}});
+ let src = jsp.pdfh(html, ".go:eq(0)&&a&&href");
+ print(src);
+ HOST = src;
+ }),
+ url: '/fyclassfyfilter',
+ filterable: 1,//是否启用分类筛选,
+ filter_url: '{{fl.area}}{{fl.year}}{{fl.class}}{{fl.cateId}}/page/fypage',
+ filter: 'H4sIAAAAAAAAA5WYWVfbyBLHvwvPw4lMsKWZbzBPd97vmTOnsRtbgyw5WpJAzpwTJpiwJcCEgRD2JCxJIGxZwGxfxi3Z3+KWjKUStEvcPJDYqn91t35dXVXtJ11l66HO/+hzu37575OuAT7Y9UtXnrn810LXT10mK3P4LsZGg8Mz+P6QGR5vCc3wcXWn+WwnfAxfuv766Unrw71owD8cbuvcuVewzGKZmX964YCh28SOf/5JjG/f6VIYvOESzH0VF4e016BuFjz0eXEgalt3+RQ9K19KLm7pol7bTl1c2wUnarncNZGtx3P4C5upE9h6cnhQN9c+3DW85ZV5Yobd7eDyZeokLQecpOVw1yQuS0xxfJA6vltiieFBvHRx514ws4jjn+yL6fQpQr2bnKXlctcsBSsPr266zI78gtpHcfFvMP6cdhqCgBzUI/3ZeWO8RouT8QRbl/oOj3V4ifBF4rdobi3CiwRn06J6Er3L76F/+2wazHHwaMK5FKuTP3w0XVZ07lWsSjf8eQaz23P/9p/f/K/DjY0pyqVPt4o2q5SixdbP1xufDyh1vqQbheiUjFwFnzYpJSs8hC3xbB6pR/9pLn4gF25YbiQc3/afVclh865umZhE6hfLpNTUy/xGuklTspvjBnNnlLqkO64Vh5p4OSqmj0heluN6uIrp94139KuZrv7A091BVDffvSRXYZUthz/2mBHJZ6b8p53isr2QMsf8Nr/cOYRb0n5YCHNi7eZzcUqy6Gdl3Yiln7+J2h4ldbltW1FY+sMz/tN5Sup4ToWbToTN/3s3mJ+lxNy2XD0fSZ9VG+PkbrglWzcMHi/i2YT/9xtKXLBZmUXKsWl/iRz2UXza/LHX9do4pTMgxqIQ8yfH6yfDJFbPNOMcOLMa7JJvn2fliudE0vUNsURugAMZrxvKUHeBmfmY7d5UY2yVcikz29WZ0Q3/xXPsbdUv10lousMcNyYcDF8231ySPKyH0TKCscOUQ5+38SQHE/vBxceU2M3HReDlSErk2pwZcNa6nZL1KHJYXqvXasH2U5JgybLd7n7dKEcea3udi0xLPsBLHos2PNieTVnNj5Ww62BmxkBi8Y2RQzH9Lm3x8C+HjYz0Y6tQWqHq+cv7ZGBzJ5ZvXoXlhxq7YuHAVzOQPynloOW5pagurvzjvyYLSNlz4mPdXDuun85QymLJitfZ3D33n5Lh0Wew/EByA5tns5AvOhRlBvGRaJeXD8RU7YdrMnTd9/pKnhsHQf3kRf3klFBCbTVZLNyD9ipN2A190qPEwKEeNtQ/7XTc0KvMdNOAJHDT7/12c3E01a8EyWMA/m74XTc2hF+Bm5A+BmKH02Zti5B6AzYsKzrh9dMpUZ0U1U5NSEtte0WPDaIacqlY7pT2QrXu2IxHNbJ+tgnbLcYWKLHNHsR90EQ4bnWSlpoJ6TI1pO05jh5v69VIcLHgz1PM+jyjyOyEfEVMrIuxD/VapzLV2h3bgqoSOcByYXyIVtpBz/PE/ovRA3G0RI3NTFaIh55Y9yevIFIIcckzi5i9xNRYML4IKyfUTpgGulm/refjCV4sNFc6VaIWGMt1INpR+6YxtRO82gpqx4THA+bGZVm82BAbc+JgjtAa3mNe7rM8uxg7vPXffRbrGxREs4DMW7dSWmiZ3LklFgfnkE/pPRpgQ2yg5GDeEK/GGjM7sLsQOmKFmixvGVa5D+d6tVk/3/L35+iJoD8P011bv7zWeHosqt+oPeN2YvCNVeAZnH1JCc3Bih23JqD3v241vu/TwV/mj/W8Fenf7gAieAUqu1hl3UwEz/s3weExcIUwJTyY57h4tMTmZpjUyQCFywsf8uCoRPrtOTFaDWZXISkQLqZe5IkJDs7DXwXSzq74/kWs1dpb2vZKPursVWE2S+Q/8EjNf302G9INFANVQlm0OY/7QnEy1ahOUEpul1ncoIrL73St0qFNiTvZkWnIHzRz6I8fxvzgpaClSQ0w07IfxRz8qY9ip1NDfV3DeD7qOvwX3+ms7s9+8L8shWHXFsffCf38Ptjr5zPhkG2X5CPiJIWdr4mv2vLw559DzNBv6+iQYKHPijv3+YOwOKxQOWoIGlxM9KAOzxNZVP9klTjbQNz6y7t0O2DES1is0bsJuwMpfsBqN1KhfHmledTpun5dbCADY1b113bF2pzY79RIXoegZRdRvX7ePBoWM+M0vj5uFHUv6vsgK8LK/QUy1zGvoMO1h2HG848Wg/HT5uur8Op2TiWxfjt5uTr+lz4ZFSu5Pcdv6b2peNx2LTvOjaH4/Zvm2UsxM0LWyxLXUQ5tLlUBSky/sY4DesWtDAq3ppjI5fH1eU7pNuxktwG3PCga9IvCdcPCYxHeCY8W08/EIw5tZqSfXRXVE1Kpu0PcTi4G5O86/STUjhaGxStYvLirc6twO/qBMNh+DcFIVlxTx3Yg+Dgc1glyVLihhldI1H+abC5+E5+pjs22ykn1xULzw24qQLjeJFqw8Bdmcvf7b1wcGhO79D464ZfwTeNf1BqT041hqv3iZjE58uQhvQiTu6XrXYz2phGmc/LkQLLSKxW4W8Ty6SNxOSk+U7ekxuxGY2YEetdIH3/vrA+vyN0362GYZy+/U2gqLP4NCITB9B49dggRLqCR+tsEtMjUPtpFbrp4fwzT1PqpOKOWkUzL4Q/aJPAyFJFBDFiIJ39lM7V5BQm0kfWzeXRpf0/erwf5dXfevl+ffqmfXfy/9+vQ916P0tPbnqH1UbLeR+t92dqD1h7ZmkFrRrYqaFUka+bn2AofJauGVk22qmhVZWsOrTnZmkVrVrYiq4zMKoOsMjKrDLLKyKwyyCojs8ogq4zMSkFWisxKQVaKzEpBVorMSkFWisxKQVaKzEpBVorMSkFWisxKQVaKzEpBVorMSkFWym1WmZ9/jli1PkpWDa23WcEjFa23WcGjHFpvs4JHWbTeZgWPetF6mxU8uo/W26zgUQ9ab7OCRxm03mYFjxS0yqw0ZKXJrDRkpcmsNGSlyaw0ZKXJrDRkpcmsNGSlyaw0ZKXJrDRkpcmsNGSlyaw0ZKXJrFRkpcqsVGSlyqxUZKXKrFRkpcqsVGSlyqxUZKXKrFRkpcqsVGSlyqxUZKXKrFRkpcqscsgqJ7PKIauczCqHrHIyqxyyysmscsgqJ7PKIauczCqHrHIyqxyyysmsckgjJ9PIIo2sTCOLq8rKq8rivFl53izOm5Xn7cV5e+V5e3EXeuVd6MWRe+WR7+PI9+WRe3AX4CM0M7//9T/5epoibCMAAA==',
+ // searchUrl:'/search?q=**',
+ searchUrl: '/page/fypage?s=**',
+ searchable: 2,//是否启用全局搜索,
+ quickSearch: 0,//是否启用快速搜索,
+ headers: {
+ 'User-Agent': 'UC_UA',
+ },
+ // class_parse:'.navlist&&li;a&&Text;a&&href;.*/(\\w+)',
+ class_name: '影视筛选&电影&电视剧&热门电影&高分电影&动漫电影&香港经典电影&国产剧&欧美剧&韩剧&动漫剧&漫威宇宙电影系列&速度与激情电影系列&007系列(25部正传+2部外传)',//静态分类名称拼接
+ class_url: 'movie_bt&new-movie&tv-drama&hot-month&high-movie&cartoon-movie&hongkong-movie&domestic-drama&american-drama&korean-drama&anime-drama&marvel-movies&fastfurious&zero-zero-seven',//静态分类标识拼接
+ play_parse: true,
+ lazy: $js.toString(() => {
+ pdfh = jsp.pdfh;
+ var html = request(input);
+ var ohtml = pdfh(html, '.videoplay&&Html');
+ var url = pdfh(ohtml, "body&&iframe&&src");
+ if (/Cloud/.test(url)) {
+ var ifrwy = request(url);
+ let code = ifrwy.match(/var url = '(.*?)'/)[1].split('').reverse().join('');
+ let temp = '';
+ for (let i = 0x0; i < code.length; i = i + 0x2) {
+ temp += String.fromCharCode(parseInt(code[i] + code[i + 0x1], 0x10))
+ }
+ input = {
+ jx: 0,
+ url: temp.substring(0x0, (temp.length - 0x7) / 0x2) + temp.substring((temp.length - 0x7) / 0x2 + 0x7),
+ parse: 0
+ }
+ } else if (/decrypted/.test(ohtml)) {
+ var phtml = pdfh(ohtml, "body&&script:not([src])&&Html");
+ eval(getCryptoJS());
+ var scrpt = phtml.match(/var.*?\)\);/g)[0];
+ var data = [];
+ eval(scrpt.replace(/md5/g, 'CryptoJS').replace('eval', 'data = '));
+ input = {
+ jx: 0,
+ url: data.match(/url:.*?[\'\"](.*?)[\'\"]/)[1],
+ parse: 0
+ }
+ } else {
+ input
+ }
+ }),
+ lazy: '',
+ 推荐: 'body&&.mi_btcon;ul&&li;*;*;*;*',
+ double:true, // 推荐内容是否双层定位
+ 一级: '.mrb&&li;img&&alt;img&&data-original;.jidi&&Text;a&&href',
+ 二级: {
+ "title": "h1&&Text;.moviedteail_list&&li:eq(0)&&Text",
+ "img": ".dyimg&&img&&src",
+ "desc": ".moviedteail_list&&li:eq(-1)&&Text;;;.moviedteail_list&&li:eq(7)&&Text;.moviedteail_list&&li:eq(5)&&Text",
+ "content": ".yp_context&&p&&Text",
+ "tabs": ".mi_paly_box .ypxingq_t",
+ "lists": ".paly_list_btn:eq(#id) a"
+ },
+ 搜索: '.search_list&&li;*;*;*;*',
+ 图片来源: '@Referer=https://www.subaibaiys.com@User-Agent=Mozilla/5.0 (Linux; Android 11; PEHT00 Build/RKQ1.201217.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36',
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/网飞猫[优].js b/drpy_t3/drpy_js/网飞猫[优].js
new file mode 100644
index 0000000..7cc5c55
--- /dev/null
+++ b/drpy_t3/drpy_js/网飞猫[优].js
@@ -0,0 +1,97 @@
+var rule = {
+ title: '网飞猫[优]',
+ host: 'https://www.ncat1.app',
+ // url: '/show/fyclass-----2-fypage.html',
+ url: '/show/fyclass-fyfilter-fypage.html',
+ filter_url: '{{fl.类型}}-{{fl.地区}}-{{fl.语言}}-{{fl.年份}}-{{fl.排序}}',
+ searchUrl: '/search?k=**&page=fypage',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 1,
+ headers: {
+ 'User-Agent': 'MOBILE_UA',
+ },
+ class_parse: '#nav-swiper&&.nav-swiper-slide;a&&Text;a&&href;/(\\w+).html',
+ cate_exclude: 'Netflix|今日更新|专题列表|排行榜',
+ tab_order: ['超清', '蓝光', '极速蓝光'],
+ play_parse: true,
+ lazy: '',
+ limit: 20,
+ 推荐: '.section-box:eq(2)&&.module-box-inner&&.module-item;*;*;*;*',
+ double: false,
+ 一级: '.module-box-inner&&.module-item;.v-item-title:eq(-1)&&Text;img&&data-original;.v-item-bottom&&span&&Text;a&&href',
+ 二级: {
+ title: '.detail-title&&Text;.detail-tags&&a:eq(-2)&&Text',
+ img: '.detail-pic&&img&&data-original',
+ desc: '.detail-info-row-main:eq(-2)&&Text;.detail-tags&&a&&Text;.detail-tags&&a:eq(1)&&Text;.detail-info-row-main:eq(1)&&Text;.detail-info-row-main&&Text',
+ content: '.detail-desc&&Text',
+ tabs: '.source-item-label',
+ lists: '.episode-list:eq(#id) a',
+ },
+ 搜索: '.search-result-list&&a;.title&&Text;*;.search-result-item-header&&Text;a&&href;.desc&&Text',
+ 图片替换: 'https://www.ncat1.app=>https://vres.a357899.cn',
+ 预处理: $js.toString(() => {
+ let html = request(rule.host);
+ let scripts = pdfa(html, 'script');
+ let img_script = scripts.find(it => pdfh(it, 'script&&src').includes('rdul.js'));
+ if (img_script) {
+ let img_url = img_script.match(/src="(.*?)"/)[1];
+ //console.log(img_url);
+ let img_html = request(img_url);
+ let img_host = img_html.match(/'(.*?)'/)[1];
+ log(img_host);
+ rule.图片替换 = 'https://www.ncat1.app=>' + img_host;
+ }
+ }),
+ filter: 'H4sIAAAAAAAAA+2Zz08bRxTH/xefOdgGtTi3HlqpUpVLe6hURREHV4qa0kN/qFWEZLANxhBsEDFx7AIpGEyCf0CQY9bY/md2Ztf/RWf95r0ZR+3LtqGRqviC+LzvzOzs7Nt531k/isQid755FPku+VvkTsS76In9jchMZHHh+6TNvyw8/Dk5briowiJbH6XrQVhBZGkGoneTP3378MGvOnz3068+++Lzr0kV66cyndWiBtJKVRVBDYC0fN3tV1EDQM3LXZgxNaAml4syVdKaBtLSebnyDDUAGjPf8vovcEwA0k63xXUPNQAac+XcK23jmAB0D7U1008Daas7o/IZagA0Zu6p66zjmADUb2tVFC6xHwBphWP/iNYagLRmRzgN1ABQc28O/WZbaxpoLo0Td3CIcwEw2qaf2ydtDLRmBw1vfQ3XDMB6tt5uzzzbAEjLDL2XNdQAUPOXN0XV0ZqGpXuBCmksqm2x6Zg0Jg6TxuL4dFRexUXoNkSlr0PYYnRSlt3WRAsdMg+gLa8Hk2NAiJZlsKWCuCwAtJx7NVk9x+UEoGsfnJl+GmhZNi6MpoHGfPXEaBpotoPXRtNA2uO2cE5QAzBjtu0x23Y/t3s9on4a6N6390W2i/cOQNd7feXXhng9AJMuh3JjqB4GZQwyXXWY8fp7skQPh5jmnCmoDiKHb5xhatHaVSj3OtiC2Np2RHtXZPFNMUxPojb0CirVy/gwiOkqg1dwXdehjcgO0T1nO24PtzENdqr7rYZfT5lUJw6V6pW+ao+DA9BNXh4bTYOVaEbTYCWv0TRYyWs0DVaCWv0Awi6CuL5ye33rfUcOswjxaHxOx8b/WvFZE5+143ETj9vxmInH7HjUxKMUj0XH0zwiLRa9r/4kqEH0zQbRoEHUNEhMNoglEtH76o9pMP9mg/mgwbxpICtXcg9fhUD7ODGxsHJrRzgFs7DEkwvr9W5EMYdXMaNXU7KEL0ncDntpfNJmXf1WRuRw350LpnFvRvX6b8yJpjDmhDMZnHHhjARrFrjizZghrrBzhoczJ0FhovvTEMYMceaEMzVBQaPraQhjQNSWZ56RhjBGkDNfo3RfdFdwLgC3bUAoHLllA8LZhH9rPTgLwVkP1l681ShxJoMzJ9PCOS2cH3DhnH1PhTNfl6llefNy4hxnQqFO/9wpkPsywGzebKHkCh5X1JgTqSzue+dU0AFCGQimaHMnZ5UH/vMUagCkVfKyjFVFQxjj4fUK1rEMgPodPhcV2mQAUPtk8YFKK5Dgf8rMYVGtPW53AHRUcy5Fo4g7PwBtd7/vyKe40hpMOd9Qa0jlfAxhLMJfWqDb+mbAlc23l/N3+1rwbmZg+s1g+s1gan1snlqf/7n1mbst6+M5L0T/CaYzAGnVA9dxvFOqwcQ0t2bb9NZAWuZCFI5Mb8OhDBP36Z8xTNznfa/SFUe0OQHQbPMrXqWJUwUwJffvP/1zBo2zBl8mF378YVFrGmie3M8zjGHiDJosP3NvaEcFmP6cMC0j0zLyIZeRj/55GTFh+ymPUqv+H5R6AJTqu1XRxBOLBppVuajON5jqANTvbOh38tgPgK639tjbPcDrAYQpK+yv28zJij3fMudw9tdt7myf7Yhm2rySAbz3zFEpsvQnK+G0IDwhAAA=',
+ 一级f: `js:
+ let urls = [
+ 'https://www.ncat1.app/show/1-----1-1.html',
+ 'https://www.ncat1.app/show/2-----1-1.html',
+ 'https://www.ncat1.app/show/3-----1-1.html',
+ 'https://www.ncat1.app/show/4-----1-1.html',
+ 'https://www.ncat1.app/show/6-----1-1.html',
+ ];
+ let filters = {};
+ pdfa = jsp.pdfa;
+ pdfh = jsp.pdfh;
+ for(let url of urls){
+ let fclass = url.match(/show\\/(\\d+)-/)[1];
+ console.log(fclass);
+ let html = request(url);
+ let tabs = pdfa(html, '.filter-row');
+ let data = [];
+ for (let tab of tabs) {
+ let title = pdfh(tab, 'strong&&Text').replace(':','');
+ let lis = pdfa(tab, 'a');
+ let _map = {key: title, name: title};
+ let value = [];
+ for (let li of lis) {
+ let n = pdfh(li, 'a&&Text').trim();
+ let v=n;
+ if(/全部|地区|类型/.test(n)){
+ v = '';
+ }else if(/综合/.test(n)){
+ v = '1';
+ }else{
+ v = pdfh(li,'a&&href');
+ try {
+ v = v.match(/-(.*?)1-1\.html/)[1].replace(/-/g,'');
+ }catch (e) {
+ v = v.match(/-(.*?)-1\.html/)[1].replace(/-/g,'');
+ }
+ v = decodeURIComponent(v);
+ }
+ value.push({
+ 'n': n, 'v': v
+ });
+ }
+ _map['value'] = value;
+ data.push(_map);
+ }
+ filters[fclass] = data;
+ }
+ VODS = [filters];
+ console.log(gzip(JSON.stringify(filters)));
+ `,
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/老白故事[box].js b/drpy_t3/drpy_js/老白故事[box].js
new file mode 100644
index 0000000..b73cdb4
--- /dev/null
+++ b/drpy_t3/drpy_js/老白故事[box].js
@@ -0,0 +1,323 @@
+var charStr = 'abacdefghjklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789';
+
+function rand(min, max) {
+ return Math.floor(Math.random() * (max - min + 1)) + min;
+}
+
+function randStr(len, withNum, onlyNum) {
+ var _str = '';
+ let containsNum = withNum === undefined ? true : withNum;
+ for (var i = 0; i < len; i++) {
+ let idx = onlyNum ? rand(charStr.length - 10, charStr.length - 1) : rand(0, containsNum ? charStr.length - 1 : charStr.length - 11);
+ _str += charStr[idx];
+ }
+ return _str;
+}
+
+function randUUID() {
+ return randStr(8).toLowerCase() + '-' + randStr(4).toLowerCase() + '-' + randStr(4).toLowerCase() + '-' + randStr(4).toLowerCase() + '-' + randStr(12).toLowerCase();
+}
+
+function randMAC() {
+ return randStr(2).toUpperCase() + ':' + randStr(2).toUpperCase() + ':' + randStr(2).toUpperCase() + ':' + randStr(2).toUpperCase() + ':' + randStr(2).toUpperCase() + ':' + randStr(2).toUpperCase();
+}
+
+const deviceBrands = ['Huawei', 'Xiaomi'];
+const deviceModels = [
+ ['MHA-AL00', 'HUAWEI Mate 9', 'MHA-TL00', 'HUAWEI Mate 9', 'LON-AL00', 'HUAWEI Mate 9 Pro', 'ALP-AL00', 'HUAWEI Mate 10', 'ALP-TL00', 'HUAWEI Mate 10', 'BLA-AL00', 'HUAWEI Mate 10 Pro', 'BLA-TL00', 'HUAWEI Mate 10 Pro', 'HMA-AL00', 'HUAWEI Mate 20', 'HMA-TL00', 'HUAWEI Mate 20', 'LYA-AL00', 'HUAWEI Mate 20 Pro', 'LYA-AL10', 'HUAWEI Mate 20 Pro', 'LYA-TL00', 'HUAWEI Mate 20 Pro', 'EVR-AL00', 'HUAWEI Mate 20 X', 'EVR-TL00', 'HUAWEI Mate 20 X', 'EVR-AN00', 'HUAWEI Mate 20 X', 'TAS-AL00', 'HUAWEI Mate 30', 'TAS-TL00', 'HUAWEI Mate 30', 'TAS-AN00', 'HUAWEI Mate 30', 'TAS-TN00', 'HUAWEI Mate 30', 'LIO-AL00', 'HUAWEI Mate 30 Pro', 'LIO-TL00', 'HUAWEI Mate 30 Pro', 'LIO-AN00', 'HUAWEI Mate 30 Pro', 'LIO-TN00', 'HUAWEI Mate 30 Pro', 'LIO-AN00m', 'HUAWEI Mate 30E Pro', 'OCE-AN10', 'HUAWEI Mate 40', 'OCE-AN50', 'HUAWEI Mate 40E', 'OCE-AL50', 'HUAWEI Mate 40E', 'NOH-AN00', 'HUAWEI Mate 40 Pro', 'NOH-AN01', 'HUAWEI Mate 40 Pro', 'NOH-AL00', 'HUAWEI Mate 40 Pro', 'NOH-AL10', 'HUAWEI Mate 40 Pro', 'NOH-AN50', 'HUAWEI Mate 40E Pro', 'NOP-AN00', 'HUAWEI Mate 40 Pro', 'CET-AL00', 'HUAWEI Mate 50', 'CET-AL60', 'HUAWEI Mate 50E', 'DCO-AL00', 'HUAWEI Mate 50 Pro', 'TAH-AN00', 'HUAWEI Mate X', 'TAH-AN00m', 'HUAWEI Mate Xs', 'TET-AN00', 'HUAWEI Mate X2', 'TET-AN10', 'HUAWEI Mate X2', 'TET-AN50', 'HUAWEI Mate X2', 'TET-AL00', 'HUAWEI Mate X2', 'PAL-AL00', 'HUAWEI Mate Xs 2', 'PAL-AL10', 'HUAWEI Mate Xs 2', 'EVA-AL00', 'HUAWEI P9', 'EVA-AL10', 'HUAWEI P9', 'EVA-TL00', 'HUAWEI P9', 'EVA-DL00', 'HUAWEI P9', 'EVA-CL00', 'HUAWEI P9', 'VIE-AL10', 'HUAWEI P9 Plus', 'VTR-AL00', 'HUAWEI P10', 'VTR-TL00', 'HUAWEI P10', 'VKY-AL00', 'HUAWEI P10 Plus', 'VKY-TL00', 'HUAWEI P10 Plus', 'EML-AL00', 'HUAWEI P20', 'EML-TL00', 'HUAWEI P20', 'CLT-AL00', 'HUAWEI P20 Pro', 'CLT-AL01', 'HUAWEI P20 Pro', 'CLT-AL00l', 'HUAWEI P20 Pro', 'CLT-TL00', 'HUAWEI P20 Pro', 'CLT-TL01', 'HUAWEI P20 Pro', 'ELE-AL00', 'HUAWEI P30', 'ELE-TL00', 'HUAWEI P30', 'VOG-AL00', 'HUAWEI P30 Pro', 'VOG-AL10', 'HUAWEI P30 Pro', 'VOG-TL00', 'HUAWEI P30 Pro', 'ANA-AL00', 'HUAWEI P40', 'ANA-AN00', 'HUAWEI P40', 'ANA-TN00', 'HUAWEI P40', 'ELS-AN00', 'HUAWEI P40 Pro', 'ELS-TN00', 'HUAWEI P40 Pro', 'ELS-AN10', 'HUAWEI P40 Pro', 'ELS-TN10', 'HUAWEI P40 Pro', 'ABR-AL00', 'HUAWEI P50', 'ABR-AL80', 'HUAWEI P50', 'ABR-AL60', 'HUAWEI P50E', 'ABR-AL90', 'HUAWEI P50E', 'JAD-AL00', 'HUAWEI P50 Pro', 'JAD-AL80', 'HUAWEI P50 Pro', 'JAD-AL50', 'HUAWEI P50 Pro', 'JAD-AL60', 'HUAWEI P50 Pro', 'BAL-AL00', 'HUAWEI P50 Pocket', 'BAL-AL60', 'HUAWEI Pocket S', 'PIC-AL00', 'HUAWEI nova 2', 'PIC-TL00', 'HUAWEI nova 2', 'BAC-AL00', 'HUAWEI nova 2 Plus', 'BAC-TL00', 'HUAWEI nova 2 Plus', 'HWI-AL00', 'HUAWEI nova 2s', 'HWI-TL00', 'HUAWEI nova 2s', 'ANE-AL00', 'HUAWEI nova 3e', 'ANE-TL00', 'HUAWEI nova 3e', 'PAR-AL00', 'HUAWEI nova 3', 'PAR-TL00', 'HUAWEI nova 3', 'INE-AL00', 'HUAWEI nova 3i', 'INE-TL00', 'HUAWEI nova 3i', 'VCE-AL00', 'HUAWEI nova 4', 'VCE-TL00', 'HUAWEI nova 4', 'MAR-AL00', 'HUAWEI nova 4e', 'MAR-TL00', 'HUAWEI nova 4e', 'SEA-AL00', 'HUAWEI nova 5', 'SEA-TL00', 'HUAWEI nova 5', 'SEA-AL10', 'HUAWEI nova 5 Pro', 'SEA-TL10', 'HUAWEI nova 5 Pro', 'GLK-AL00', 'HUAWEI nova 5i', 'GLK-TL00', 'HUAWEI nova 5i', 'GLK-LX1U', 'HUAWEI nova 5i', 'SPN-TL00', 'HUAWEI nova 5i Pro', 'SPN-AL00', 'HUAWEI nova 5z', 'WLZ-AL10', 'HUAWEI nova 6', 'WLZ-AN00', 'HUAWEI nova 6', 'JNY-AL10', 'HUAWEI nova 6 SE', 'JNY-TL10', 'HUAWEI nova 6 SE', 'JEF-AN00', 'HUAWEI nova 7', 'JEF-AN20', 'HUAWEI nova 7', 'JEF-TN00', 'HUAWEI nova 7', 'JEF-TN20', 'HUAWEI nova 7', 'JER-AN10', 'HUAWEI nova 7 Pro', 'JER-AN20', 'HUAWEI nova 7 Pro', 'JER-TN10', 'HUAWEI nova 7 Pro', 'JER-TN20', 'HUAWEI nova 7 Pro', 'CDY-AN00', 'HUAWEI nova 7 SE', 'CDY-AN20', 'HUAWEI nova 7 SE', 'CDY-TN00', 'HUAWEI nova 7 SE', 'CDY-TN20', 'HUAWEI nova 7 SE', 'ANG-AN00', 'HUAWEI nova 8', 'BRQ-AN00', 'HUAWEI nova 8 Pro', 'BRQ-AL00', 'HUAWEI nova 8 Pro', 'JSC-AN00', 'HUAWEI nova 8 SE', 'JSC-TN00', 'HUAWEI nova 8 SE', 'JSC-AL50', 'HUAWEI nova 8 SE', 'NAM-AL00', 'HUAWEI nova 9', 'RTE-AL00', 'HUAWEI nova 9 Pro', 'JLN-AL00', 'HUAWEI nova 9 SE', 'NCO-AL00', 'HUAWEI nova 10', 'GLA-AL00', 'HUAWEI nova 10 Pro', 'CHA-AL80', 'HUAWEI nova 10z'],
+ ['M2001J2C', 'Xiaomi 10', 'M2001J2G', 'Xiaomi 10', 'M2001J2I', 'Xiaomi 10', 'M2011K2C', 'Xiaomi 11', 'M2011K2G', 'Xiaomi 11', '2201123C', 'Xiaomi 12', '2201123G', 'Xiaomi 12', '2112123AC', 'Xiaomi 12X', '2112123AG', 'Xiaomi 12X', '2201122C', 'Xiaomi 12 Pro', '2201122G', 'Xiaomi 12 Pro'],
+];
+
+function randDevice() {
+ let brandIdx = rand(0, deviceBrands.length - 1);
+ let brand = deviceBrands[brandIdx];
+ let modelIdx = rand(0, deviceModels[brandIdx].length / 2 - 1);
+ let model = deviceModels[brandIdx][modelIdx * 2 + 1];
+ let release = rand(8, 13);
+ let buildId = randStr(3, false).toUpperCase() + rand(11, 99) + randStr(1, false).toUpperCase();
+ return {
+ brand: brand,
+ model: model,
+ release: release,
+ buildId: buildId,
+ };
+}
+
+function randDeviceWithId(len) {
+ let device = randDevice();
+ device['id'] = randStr(len);
+ return device;
+}
+
+function formatPlayUrl(src, name) {
+ if (src.trim() == name.trim()) {
+ return name;
+ }
+ return name
+ .trim()
+ .replaceAll(src, '')
+ .replace(/<|>|《|》/g, '')
+ .replace(/\$|#/g, ' ')
+ .trim();
+}
+
+globalThis.randDeviceWithId = randDeviceWithId;
+globalThis.formatPlayUrl = formatPlayUrl;
+
+globalThis.appVersion = '1.1.7';
+globalThis.appUA = '';
+globalThis.appData = {};
+globalThis.device = {};
+globalThis.nativeEncode = '1449682949';
+globalThis.pk = NODERSA.NodeRSA(
+ `-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtSwotbu7UEonUCzCsJXP
+SpYOrkuMnpyk24PBQskkcwYZsUTwbh8Y9vHuPIerh3AfZZ1luFV9yPC282xiNX+/
++IAzWHWG6M+dWmJnDyybeUVTh7H7YVM31eSR9TFT4VASr7NftgCv7hfS2mVNL0sx
+RrMSPSXa6SbjkIeW4GTpYpWKehKfaqrgDwVfFCu67ogL9JLIdDxvWthIe42uUMnz
+4II1/pdrPtWRu0CDjaxvsLz26UdMGSL3gFEloaJhp4KuIPK4RlIx+9t28H00+3Ip
+eVirmiayDYJQe1cjiDKoERSkLubJRD2yj5X3trGmgXex3QkcRtx5UNXYkLEuEMNG
+iwIDAQAB
+-----END PUBLIC KEY-----`,
+ 'pkcs8-public-pem',
+ {
+ encryptionScheme: 'pkcs1',
+ },
+);
+globalThis.imgUrl = function (pic) {
+ if (pic.startsWith('http')) return pic;
+ return appData.img_url + pic;
+}
+
+var rule = {
+ 类型: '听书',//影视|听书|漫画|小说
+ title: '老白故事[听]',
+ host: 'https://lags.oss-cn-hangzhou.aliyuncs.com/',
+ url: '',
+ searchUrl: '#fypage',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 1,
+ filter: '',
+ filter_url: '',
+ headers: {
+ 'User-Agent': 'MOBILE_UA',
+ },
+ timeout: 5000,
+ play_parse: true,
+ 预处理: $js.toString(() => {
+ device = getItem('device', '{}');
+ if (typeof device == "string") {
+ device = JSON.parse(device);
+ }
+ // device = JSON.parse(device);
+ if (!device.id) {
+ device = randDeviceWithId(32);
+ device.id = device.id.toLowerCase();
+ device.ua = 'Dalvik/2.1.0 (Linux; U; Android ' + device.release + '; ' + device.model + ' Build/' + device.buildId + ')';
+ setItem('device', JSON.stringify(device))
+ }
+ // log('device:');
+ // log(device);
+ appUA = '(Mozilla/5.0 (Linux; Android ' + device.release + '; ' + device.model + ' Build/' + device.buildId + '; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/68.0.3440.70 Mobile Safari/537.36)';
+
+ try {
+ let html = request(rule.host + '/' + appVersion + '.json');
+ let content = JSON.parse(html);
+ // log(content.data);
+ var datas = content.data.split('$6c1cef78ae=');
+ var json = '';
+ for (let d of datas) {
+ // json += pk.decryptPublic(d, 'utf8').replace(/^\s*\n|\s*$/gm, '');
+ json += pk.decryptPublic(d, 'utf8');
+ }
+ appData = JSON.parse(json);
+ // log(appData);
+ appUA = appData.ua + '/' + appVersion + appUA;
+ log('appUA:' + appUA);
+ } catch (error) {
+ console.log(error);
+ }
+ rule.headers = {
+ 'User-Agent': appUA,
+ Referer: appData.http_referer,
+ }
+ }),
+ class_parse: $js.toString(() => {
+ let html = request(appData.json_url + 'cat/index.json', {
+ headers: rule.headers
+ });
+ let content = JSON.parse(html);
+ let datas = content.data;
+ let classes = [];
+ let filterObj = {};
+ for (let data of datas) {
+ let name = data.title.replace('分类', '');
+
+ let type = {
+ key: 'type',
+ name: '类型',
+ };
+ var cvalues = data.types.reduce((result, t) => {
+ result.push({n: t.name, v: t.type_id});
+ return result;
+ }, []);
+ type['init'] = cvalues[0]['v'];
+ type['value'] = cvalues;
+ let sort = {
+ key: 'sort',
+ name: '排序',
+ init: 'hot',
+ };
+ let sortValues = [];
+ sortValues.push({n: '默认', v: 'index'});
+ sortValues.push({n: '热门', v: 'hot'});
+ sortValues.push({n: '连载', v: 'serial'});
+ sortValues.push({n: '完结', v: 'done'});
+ sort['value'] = sortValues;
+
+ filterObj[type['init']] = [type, sort];
+ classes.push({
+ type_id: type['init'],
+ type_name: name,
+ });
+ }
+ // log(classes);
+ input = classes;
+ homeObj.filter = filterObj;
+
+ }),
+ 推荐: '',
+ 一级: $js.toString(() => {
+ VODS = [];
+ let type = MY_FL.type || MY_CATE;
+ let sort = MY_FL.sort || 'hot';
+ let html = request(appData.json_url + 'cat_list/' + type + '/' + sort + '/' + MY_PAGE + '.json', {headers: rule.headers});
+ let content = JSON.parse(html);
+ let datas = content.data;
+ let books = [];
+ for (let book of datas.books) {
+ books.push({
+ vod_id: book.book_id,
+ vod_name: book.name,
+ vod_pic: imgUrl(book.pic),
+ vod_remarks: book.status,
+ });
+ }
+ VODS = books;
+ }),
+ 二级: $js.toString(() => {
+ let ids = [orId];
+ let books = [];
+ for (let id of ids) {
+ let html = request(appData.json_url + 'cont/' + id + '.json', {headers: rule.headers});
+ let content = JSON.parse(html);
+ let data = content.data;
+ let book = {
+ vod_name: data.name,
+ vod_pic: imgUrl(data.pic),
+ type_name: '',
+ vod_year: data.time,
+ vod_area: '',
+ vod_remarks: data.status,
+ vod_actor: data.teller,
+ vod_director: '',
+ vod_content: data.synopsis,
+ vod_play_from: '道长在线',
+ };
+ // log(book);
+ let us = data.play_data
+ .map(function (b) {
+ return formatPlayUrl(book.vod_name, b.name) + '$' + data.book_id + '-' + b.play_id;
+ })
+ .join('#');
+ book.vod_play_url = us;
+ books.push(book);
+ }
+ VOD = books.length > 0 ? books[0] : {};
+ }),
+ 搜索: $js.toString(() => {
+ let time = Math.floor(new Date().getTime() / 1000);
+ time = time - (time % 60);
+ let t = CryptoJS.enc.Hex.stringify(CryptoJS.MD5(CryptoJS.enc.Hex.stringify(CryptoJS.MD5('search00')).toString() + nativeEncode + time)).toString();
+ let data = {
+ m: 'search',
+ t: t,
+ aid: 0,
+ pid: 0,
+ key: KEY,
+ };
+ // var params = pk.encrypt(JSON.stringify(data), 'base64').replace(/^\s*\n|\s*$/gm, '');
+ var params = pk.encrypt(JSON.stringify(data), 'base64');
+ log('params长度:' + params.length);
+ let post_obj = {
+ params: params,
+ version: appVersion,
+ };
+ let post_data = `params=${params}&version=${appVersion}`;
+ // log('post_data:' + post_data);
+ log('api_url:' + appData.api_url);
+ let headers = JSON.parse(JSON.stringify(rule.headers));
+ // headers['Accept'] = 'application/json, text/plain, */*';
+ headers['Content-Type'] = 'application/x-www-form-urlencoded';
+ let html = post(appData.api_url, {
+ headers: headers,
+ body: post_data,
+ });
+ let content = JSON.parse(html);
+ var datas = content.data;
+ let books = [];
+ for (let book of datas.books) {
+ books.push({
+ vod_id: book.book_id,
+ vod_name: book.name,
+ vod_pic: imgUrl(book.pic),
+ vod_remarks: book.status,
+ });
+ }
+ VODS = books;
+ }),
+ lazy: $js.toString(() => {
+ var info = input.split('-');
+ let time = Math.floor(new Date().getTime() / 1000);
+ time = time - (time % 60);
+ let t = CryptoJS.enc.Hex.stringify(CryptoJS.MD5(CryptoJS.enc.Hex.stringify(CryptoJS.MD5('play' + info[0] + info[1])).toString() + nativeEncode + time)).toString();
+ let data = {
+ m: 'play',
+ t: t,
+ aid: info[0],
+ pid: info[1],
+ };
+ // var params = pk.encrypt(JSON.stringify(data), 'base64').replace(/^\s*\n|\s*$/gm, '');
+ var params = pk.encrypt(JSON.stringify(data), 'base64');
+ // log('params:' + params);
+ // log([params]);
+ log('params长度:' + params.length);
+ let post_obj = {
+ params: params,
+ version: appVersion,
+ };
+ let post_data = buildUrl('', post_obj).slice(1);
+ // let post_data = `params=${params}&version=${appVersion}`;
+ // log('post_data:' + post_data);
+ log('api_url:' + appData.api_url);
+ let headers = JSON.parse(JSON.stringify(rule.headers));
+ // headers['Accept'] = 'application/json, text/plain, */*';
+ headers['Content-Type'] = 'application/x-www-form-urlencoded';
+ let html = post(appData.api_url, {
+ headers: headers,
+ body: post_obj,
+ postType: "form",
+ });
+ let content = JSON.parse(html);
+ var datas = content.data;
+ input = {
+ parse: 0,
+ url: datas.url,
+ header: {
+ 'User-Agent': appUA,
+ Referer: appData.referer,
+ },
+ };
+ }),
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/豆瓣[官].js b/drpy_t3/drpy_js/豆瓣[官].js
new file mode 100644
index 0000000..fd887c5
--- /dev/null
+++ b/drpy_t3/drpy_js/豆瓣[官].js
@@ -0,0 +1,37 @@
+var rule = {
+ title:'豆瓣[官]',
+ host:'https://frodo.douban.com',
+ apidoc:'https://www.doubanapi.com',
+ homeUrl:'',
+ searchUrl:'',
+ searchable:1,
+ quickSearch:1,
+ filterable:1,
+ // 分类链接fypage参数支持1个()表达式
+ url:'/?pg=fypage&class=fyclass&douban=$douban',
+ filter_url:'fl={{fl}}',
+ 图片来源:'@Referer=https://api.douban.com/@User-Agent=Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/113.0.0.0%20Safari/537.36',
+ headers:{
+ "Host": "frodo.douban.com",
+ // "Host": "api.douban.com",
+ "Connection": "Keep-Alive",
+ "Referer": "https://servicewechat.com/wx2f9b06c1de1ccfca/84/page-frame.html",
+ // "content-type": "application/json",
+ "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat"
+ },
+ timeout:5000,
+ class_name:'我的豆瓣&热门电影&热播剧集&热播综艺&电影筛选&电视筛选&电影榜单&电视榜单',
+ class_url:'interests&hot_gaia&tv_hot&show_hot&movie&tv&rank_list_movie&rank_list_tv',
+ filter:{'interests': [{'key': 'status', 'name': '状态', 'value': [{'n': '想看', 'v': 'mark'}, {'n': '在看', 'v': 'doing'}, {'n': '看过', 'v': 'done'}]}, {'key': 'subtype_tag', 'name': '形式', 'value': [{'n': '全部', 'v': ''}, {'n': '电影', 'v': 'movie'}, {'n': '电视', 'v': 'tv'}]}, {'key': 'year_tag', 'name': '年代', 'value': [{'n': '全部', 'v': '全部'}, {'n': '2023', 'v': '2023'}, {'n': '2022', 'v': '2022'}, {'n': '2021', 'v': '2021'}, {'n': '2020', 'v': '2020'}, {'n': '2019', 'v': '2019'}, {'n': '2010年代', 'v': '2010年代'}, {'n': '2000年代', 'v': '2000年代'}, {'n': '90年代', 'v': '90年代'}, {'n': '80年代', 'v': '80年代'}, {'n': '70年代', 'v': '70年代'}, {'n': '60年代', 'v': '60年代'}, {'n': '更早', 'v': '更早'}]}], 'hot_gaia': [{'key': 'sort', 'name': '排序', 'value': [{'n': '热度', 'v': 'recommend'}, {'n': '最新', 'v': 'time'}, {'n': '评分', 'v': 'rank'}]}, {'key': 'area', 'name': '地区', 'value': [{'n': '全部', 'v': '全部'}, {'n': '华语', 'v': '华语'}, {'n': '欧美', 'v': '欧美'}, {'n': '韩国', 'v': '韩国'}, {'n': '日本', 'v': '日本'}]}], 'tv_hot': [{'key': 'type', 'name': '分类', 'value': [{'n': '综合', 'v': 'tv_hot'}, {'n': '国产剧', 'v': 'tv_domestic'}, {'n': '欧美剧', 'v': 'tv_american'}, {'n': '日剧', 'v': 'tv_japanese'}, {'n': '韩剧', 'v': 'tv_korean'}, {'n': '动画', 'v': 'tv_animation'}]}], 'show_hot': [{'key': 'type', 'name': '分类', 'value': [{'n': '综合', 'v': 'show_hot'}, {'n': '国内', 'v': 'show_domestic'}, {'n': '国外', 'v': 'show_foreign'}]}], 'movie': [{'key': '类型', 'name': '类型', 'value': [{'n': '全部类型', 'v': ''}, {'n': '喜剧', 'v': '喜剧'}, {'n': '爱情', 'v': '爱情'}, {'n': '动作', 'v': '动作'}, {'n': '科幻', 'v': '科幻'}, {'n': '动画', 'v': '动画'}, {'n': '悬疑', 'v': '悬疑'}, {'n': '犯罪', 'v': '犯罪'}, {'n': '惊悚', 'v': '惊悚'}, {'n': '冒险', 'v': '冒险'}, {'n': '音乐', 'v': '音乐'}, {'n': '历史', 'v': '历史'}, {'n': '奇幻', 'v': '奇幻'}, {'n': '恐怖', 'v': '恐怖'}, {'n': '战争', 'v': '战争'}, {'n': '传记', 'v': '传记'}, {'n': '歌舞', 'v': '歌舞'}, {'n': '武侠', 'v': '武侠'}, {'n': '情色', 'v': '情色'}, {'n': '灾难', 'v': '灾难'}, {'n': '西部', 'v': '西部'}, {'n': '纪录片', 'v': '纪录片'}, {'n': '短片', 'v': '短片'}]}, {'key': '地区', 'name': '地区', 'value': [{'n': '全部地区', 'v': ''}, {'n': '华语', 'v': '华语'}, {'n': '欧美', 'v': '欧美'}, {'n': '韩国', 'v': '韩国'}, {'n': '日本', 'v': '日本'}, {'n': '中国大陆', 'v': '中国大陆'}, {'n': '美国', 'v': '美国'}, {'n': '中国香港', 'v': '中国香港'}, {'n': '中国台湾', 'v': '中国台湾'}, {'n': '英国', 'v': '英国'}, {'n': '法国', 'v': '法国'}, {'n': '德国', 'v': '德国'}, {'n': '意大利', 'v': '意大利'}, {'n': '西班牙', 'v': '西班牙'}, {'n': '印度', 'v': '印度'}, {'n': '泰国', 'v': '泰国'}, {'n': '俄罗斯', 'v': '俄罗斯'}, {'n': '加拿大', 'v': '加拿大'}, {'n': '澳大利亚', 'v': '澳大利亚'}, {'n': '爱尔兰', 'v': '爱尔兰'}, {'n': '瑞典', 'v': '瑞典'}, {'n': '巴西', 'v': '巴西'}, {'n': '丹麦', 'v': '丹麦'}]}, {'key': 'sort', 'name': '排序', 'value': [{'n': '近期热度', 'v': 'T'}, {'n': '首映时间', 'v': 'R'}, {'n': '高分优先', 'v': 'S'}]}, {'key': '年代', 'name': '年代', 'value': [{'n': '全部年代', 'v': ''}, {'n': '2023', 'v': '2023'}, {'n': '2022', 'v': '2022'}, {'n': '2021', 'v': '2021'}, {'n': '2020', 'v': '2020'}, {'n': '2019', 'v': '2019'}, {'n': '2010年代', 'v': '2010年代'}, {'n': '2000年代', 'v': '2000年代'}, {'n': '90年代', 'v': '90年代'}, {'n': '80年代', 'v': '80年代'}, {'n': '70年代', 'v': '70年代'}, {'n': '60年代', 'v': '60年代'}, {'n': '更早', 'v': '更早'}]}], 'tv': [{'key': '类型', 'name': '类型', 'value': [{'n': '不限', 'v': ''}, {'n': '电视剧', 'v': '电视剧'}, {'n': '综艺', 'v': '综艺'}]}, {'key': '电视剧形式', 'name': '电视剧形式', 'value': [{'n': '不限', 'v': ''}, {'n': '喜剧', 'v': '喜剧'}, {'n': '爱情', 'v': '爱情'}, {'n': '悬疑', 'v': '悬疑'}, {'n': '动画', 'v': '动画'}, {'n': '武侠', 'v': '武侠'}, {'n': '古装', 'v': '古装'}, {'n': '家庭', 'v': '家庭'}, {'n': '犯罪', 'v': '犯罪'}, {'n': '科幻', 'v': '科幻'}, {'n': '恐怖', 'v': '恐怖'}, {'n': '历史', 'v': '历史'}, {'n': '战争', 'v': '战争'}, {'n': '动作', 'v': '动作'}, {'n': '冒险', 'v': '冒险'}, {'n': '传记', 'v': '传记'}, {'n': '剧情', 'v': '剧情'}, {'n': '奇幻', 'v': '奇幻'}, {'n': '惊悚', 'v': '惊悚'}, {'n': '灾难', 'v': '灾难'}, {'n': '歌舞', 'v': '歌舞'}, {'n': '音乐', 'v': '音乐'}]}, {'key': '综艺形式', 'name': '综艺形式', 'value': [{'n': '不限', 'v': ''}, {'n': '真人秀', 'v': '真人秀'}, {'n': '脱口秀', 'v': '脱口秀'}, {'n': '音乐', 'v': '音乐'}, {'n': '歌舞', 'v': '歌舞'}]}, {'key': '地区', 'name': '地区', 'value': [{'n': '全部地区', 'v': ''}, {'n': '华语', 'v': '华语'}, {'n': '欧美', 'v': '欧美'}, {'n': '国外', 'v': '国外'}, {'n': '韩国', 'v': '韩国'}, {'n': '日本', 'v': '日本'}, {'n': '中国大陆', 'v': '中国大陆'}, {'n': '中国香港', 'v': '中国香港'}, {'n': '美国', 'v': '美国'}, {'n': '英国', 'v': '英国'}, {'n': '泰国', 'v': '泰国'}, {'n': '中国台湾', 'v': '中国台湾'}, {'n': '意大利', 'v': '意大利'}, {'n': '法国', 'v': '法国'}, {'n': '德国', 'v': '德国'}, {'n': '西班牙', 'v': '西班牙'}, {'n': '俄罗斯', 'v': '俄罗斯'}, {'n': '瑞典', 'v': '瑞典'}, {'n': '巴西', 'v': '巴西'}, {'n': '丹麦', 'v': '丹麦'}, {'n': '印度', 'v': '印度'}, {'n': '加拿大', 'v': '加拿大'}, {'n': '爱尔兰', 'v': '爱尔兰'}, {'n': '澳大利亚', 'v': '澳大利亚'}]}, {'key': 'sort', 'name': '排序', 'value': [{'n': '近期热度', 'v': 'T'}, {'n': '首播时间', 'v': 'R'}, {'n': '高分优先', 'v': 'S'}]}, {'key': '年代', 'name': '年代', 'value': [{'n': '全部', 'v': ''}, {'n': '2023', 'v': '2023'}, {'n': '2022', 'v': '2022'}, {'n': '2021', 'v': '2021'}, {'n': '2020', 'v': '2020'}, {'n': '2019', 'v': '2019'}, {'n': '2010年代', 'v': '2010年代'}, {'n': '2000年代', 'v': '2000年代'}, {'n': '90年代', 'v': '90年代'}, {'n': '80年代', 'v': '80年代'}, {'n': '70年代', 'v': '70年代'}, {'n': '60年代', 'v': '60年代'}, {'n': '更早', 'v': '更早'}]}, {'key': '平台', 'name': '平台', 'value': [{'n': '全部', 'v': ''}, {'n': '腾讯视频', 'v': '腾讯视频'}, {'n': '爱奇艺', 'v': '爱奇艺'}, {'n': '优酷', 'v': '优酷'}, {'n': '湖南卫视', 'v': '湖南卫视'}, {'n': 'Netflix', 'v': 'Netflix'}, {'n': 'HBO', 'v': 'HBO'}, {'n': 'BBC', 'v': 'BBC'}, {'n': 'NHK', 'v': 'NHK'}, {'n': 'CBS', 'v': 'CBS'}, {'n': 'NBC', 'v': 'NBC'}, {'n': 'tvN', 'v': 'tvN'}]}], 'rank_list_movie': [{'key': '榜单', 'name': '榜单', 'value': [{'n': '实时热门电影', 'v': 'movie_real_time_hotest'}, {'n': '一周口碑电影榜', 'v': 'movie_weekly_best'}, {'n': '豆瓣电影Top250', 'v': 'movie_top250'}]}], 'rank_list_tv': [{'key': '榜单', 'name': '榜单', 'value': [{'n': '实时热门电视', 'v': 'tv_real_time_hotest'}, {'n': '华语口碑剧集榜', 'v': 'tv_chinese_best_weekly'}, {'n': '全球口碑剧集榜', 'v': 'tv_global_best_weekly'}, {'n': '国内口碑综艺榜', 'v': 'show_chinese_best_weekly'}, {'n': '国外口碑综艺榜', 'v': 'show_global_best_weekly'}]}]},
+ limit:20,
+ play_parse:false,
+ 推荐:'',
+ 推荐:'js:let d=[];let douban_api_host="http://api.douban.com/api/v2";let miniapp_apikey="0ac44ae016490db2204ce0a042db2916";const count=30;function miniapp_request(path,query){try{let url=douban_api_host+path;query.apikey=miniapp_apikey;fetch_params.headers=oheaders;url=buildUrl(url,query);let html=fetch(url,fetch_params);return JSON.parse(html)}catch(e){print("发生了错误:"+e.message);return{}}}function subject_real_time_hotest(){try{let res=miniapp_request("/subject_collection/subject_real_time_hotest/items",{});let lists=[];let arr=res.subject_collection_items||[];arr.forEach(function(item){if(item.type==="movie"||item.type==="tv"){let rating=item.rating?item.rating.value:"暂无评分";let honnor=(item.honor_infos||[]).map(function(it){return it.title}).join("|");lists.append({vod_id:"msearch:"+TYPE,vod_name:item.title||"",vod_pic:item.pic.normal,vod_remarks:rating+" "+honnor})}});return lists}catch(e){print("发生了错误:"+e.message);return[]}}VODS=subject_real_time_hotest();print(VODS);',
+ // 手动调用解析请求json的url,此lazy不方便
+ lazy:'',
+ // 推荐:'.list_item;img&&alt;img&&src;a&&Text;a&&data-float',
+ 一级:'',
+ 一级:'js:let d=[];let douban=input.split("douban=")[1].split("&")[0];let douban_api_host="http://api.douban.com/api/v2";let miniapp_apikey="0ac44ae016490db2204ce0a042db2916";const count=30;function miniapp_request(path,query){try{let url=douban_api_host+path;query.apikey=miniapp_apikey;fetch_params.headers=oheaders;url=buildUrl(url,query);let html=fetch(url,fetch_params);if(/request_error/.test(html)){print(html)}return JSON.parse(html)}catch(e){print("发生了错误:"+e.message);return{}}}function cate_filter(d,douban){douban=douban||"";try{let res={};if(MY_CATE==="interests"){if(douban){let status=MY_FL.status||"mark";let subtype_tag=MY_FL.subtype_tag||"";let year_tag=MY_FL.year_tag||"全部";let path="/user/"+douban+"/interests";res=miniapp_request(path,{type:"movie",status:status,subtype_tag:subtype_tag,year_tag:year_tag,start:(MY_PAGE-1)*count,count:count})}else{return{}}}else if(MY_CATE==="hot_gaia"){let sort=MY_FL.sort||"recommend";let area=MY_FL.area||"全部";let path="/movie/"+MY_CATE;res=miniapp_request(path,{area:area,sort:sort,start:(MY_PAGE-1)*count,count:count})}else if(MY_CATE==="tv_hot"||MY_CATE==="show_hot"){let stype=MY_FL.type||MY_CATE;let path="/subject_collection/"+stype+"/items";res=miniapp_request(path,{start:(MY_PAGE-1)*count,count:count})}else if(MY_CATE.startsWith("rank_list")){let id=MY_CATE==="rank_list_movie"?"movie_real_time_hotest":"tv_real_time_hotest";id=MY_FL.榜单||id;let path="/subject_collection/"+id+"/items";res=miniapp_request(path,{start:(MY_PAGE-1)*count,count:count})}else{let path="/"+MY_CATE+"/recommend";let selected_categories;let tags;let sort;if(Object.keys(MY_FL).length>0){sort=MY_FL.sort||"T";tags=Object.values(MY_FL).join(",");if(MY_CATE==="movie"){selected_categories={"类型":MY_FL.类型||"","地区":MY_FL.地区||""}}else{selected_categories={"类型":MY_FL.类型||"","形式":MY_FL.类型?MY_FL.类型+"地区":"","地区":MY_FL.地区||""}}}else{sort="T";tags="";if(MY_CATE==="movie"){selected_categories={"类型":"","地区":""}}else{selected_categories={"类型":"","形式":"","地区":""}}}let params={tags:tags,sort:sort,refresh:0,selected_categories:stringify(selected_categories),start:(MY_PAGE-1)*count,count:count};res=miniapp_request(path,params)}let result={page:MY_PAGE,pagecount:Math.ceil(res.total/count),limit:count,total:res.total};let items=[];if(/^rank_list|tv_hot|show_hot/.test(MY_CATE)){items=res["subject_collection_items"]}else if(MY_CATE==="interests"){res["interests"].forEach(function(it){items.push(it.subject)})}else{items=res.items}let lists=[];items.forEach(function(item){if(item.type==="movie"||item.type==="tv"){let rating=item.rating?item.rating.value:"";let rat_str=rating||"暂无评分";let title=item.title;let honor=item.honor_infos||[];let honor_str=honor.map(function(it){return it.title}).join("|");let vod_obj={vod_name:title!=="未知电影"?title:"暂不支持展示",vod_pic:item.pic.normal,vod_remarks:rat_str+" "+honor_str};let vod_obj_d={url:item.type+"$"+item.id,title:title!=="未知电影"?title:"暂不支持展示",pic_url:item.pic.normal,desc:rat_str+" "+honor_str};lists.push(vod_obj);d.push(vod_obj_d)}});result.list=lists;return result}catch(e){print(e.message)}return{}}let res=cate_filter(d,douban);setResult2(res);',
+ 二级:'',
+ 搜索:'',
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/贝乐虎[儿].js b/drpy_t3/drpy_js/贝乐虎[儿].js
new file mode 100644
index 0000000..395219a
--- /dev/null
+++ b/drpy_t3/drpy_js/贝乐虎[儿].js
@@ -0,0 +1,56 @@
+var rule = {
+ 类型: '影视',//影视|听书|漫画|小说
+ title: '贝乐虎[儿]',
+ host: 'https://vd.ubestkid.com',
+ url: '/api/v1/bv/video#pg=fypage',
+ homeUrl: '/api/v1/bv/video',
+ searchable: 0,
+ quickSearch: 0,
+ filterable: 0,
+ headers: {
+ 'User-Agent': 'IOS_UA',
+ },
+ timeout: 5000,
+ class_parse: $js.toString(() => {
+ input = JSON.parse(ungzip('H4sIAAAAAAAAA4VUy27aUBD9F6+zwKRAk1+pqqpSsuiiVRfdVFUlUnCCwU1IwqNuHggFQ1owOCGNjAnwM547l10/oZeiRmTuoO5s6ZyZc87M3BefjA8f3+++erNjbKdTG8ufd6/f7hrbxu9GeSDOs6IWxGFRXN4bnzdW0Ka5qcPjKBJBBXO+OPGfwlNpHY3jI7BC7HoyuCLFNzM6HB6yMMvJu4t4VJbuIanPqIFpCYrXkJ8J3yHorXVqOLSZMHW4vLcw6oibiZy0TRoNU34Vj71eHDnga66ZkCgvtDXeFjO4v7i68kRbcDmNHha2bZXWTBYuqRluFKd5vGhyWWUSjIXSjagdsMmanOPiF1H34vBw8RFUiFdGjdgrz6duHNawSufMJKNWAitjtFlBKa78rz3ZdBRUnN1S+c8Z+f8WFCwPznzZD+g2cZ4fSa0OulPsHD8lpZNrF/aoJQd1gmaGvESLqhVHJSIoybkoOws1fhuKDWh1qQVmyjj+Js57fAPmfsg1L3cE7QIZN5MV1K8faSJnQXV/OVKqkXG1ANo/5o2hYou7KQxGVCnXTyOtEWsmuHXzDqDt4ve8jLrx5JT2e/ZfxppmaYYp+y1sePC1qbabSmOfpCs4HmI/i72Kll+GiU9UA/WosIec5O5+sK/gysL8p6OHleTeFUU6cXE4hsIq7+UfFA1HoacGAAA='));
+ }),
+ play_parse: true,
+ lazy: $js.toString(() => {
+ input = {parse: 0, url: input + '#.mp4'};
+ }),
+ 推荐: $js.toString(() => {
+ let pdata = {age: 1, appver: "6.1.9", egvip_status: 0, svip_status: 0, vps: 60, subcateId: 56, p: 1};
+ // let pbody = buildUrl('',pdata).split('?')[1];
+ // let html = post(input,{body:pbody});
+ let html = post(input, {data: pdata});
+ let json = JSON.parse(html);
+ let data = json.result.items;
+ let d = [];
+ data.forEach(it => {
+ d.push({
+ vod_id: it.url + '@@' + it.title + '@@' + it.image,
+ vod_name: it.title,
+ vod_pic: it.image,
+ vod_remarks: '👀' + it.viewcount || '',
+ });
+ });
+ VODS = d;
+ }),
+ 一级: $js.toString(() => {
+ let pdata = {age: 1, appver: "6.1.9", egvip_status: 0, svip_status: 0, vps: 60, subcateId: MY_CATE, p: MY_PAGE};
+ let html = post(input.split('#')[0], {data: pdata});
+ let json = JSON.parse(html);
+ let data = json.result.items;
+ let d = [];
+ data.forEach(it => {
+ d.push({
+ vod_id: it.url + '@@' + it.title + '@@' + it.image,
+ vod_name: it.title,
+ vod_pic: it.image,
+ vod_remarks: '👀' + it.viewcount || '',
+ });
+ });
+ VODS = d;
+ }),
+ 二级: '*',
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/路漫漫[漫].js b/drpy_t3/drpy_js/路漫漫[漫].js
new file mode 100644
index 0000000..6114621
--- /dev/null
+++ b/drpy_t3/drpy_js/路漫漫[漫].js
@@ -0,0 +1,40 @@
+var rule = {
+ title: "路漫漫",
+ host: "https://m.lmm52.com",
+ url: "/vod/show/id/fyclassfyfilter.html",
+ searchUrl: "https://m.lmm52.com/vod/search/page/fypage/wd/**.html",
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 1,
+ filter: "H4sIAAAAAAAAAO2Su04CURCG32XqNXu/wKsYitVsAlHRcEs2hISoECuJxqhRYqMFxkIKKFgLXoY9Lm/hHtB1mPqUU87//Tt7kvm6YEN5vwtHUQxlSBez1dcraFAPTyI8d8LjdrQp1mU8mKwvJjLOB+hp29QyLOc30+MobOibAFGbUhtTi1ILU5NSE1ODUgNRs0RoHiAaUBpg6lPqY+pR6mHqUuoWVDzPxMM75c6eWQryp1dkbXsRcX2bJqP/ixTz7kXEuJ8tb+TW++nf1oNYb9Xyj4p/jvvrj8dVkojpHepUa60m6WSfl+nVEHWah6eNnUXp29P3+SKbv6BS+0y+vKKBw0axUUqNctkoNkqpUR4bxUYpNcpno9gopUYFbBQbpdCo3g8SNsur7Q0AAA==",
+ filter_url: "{{fl.排序}}{{fl.年代}}/page/fypage",
+ filter_def: "",
+ headers: {
+ "User-Agent": "MOBILE_UA"
+ },
+ timeout: 5000,
+ class_name: "日本动漫&国产动漫&欧美动漫&日本动画电影&国产动画电影&欧美动画电影",
+ class_url: "6&7&8&3&4&5",
+ class_parse: "",
+ cate_exclude: "",
+ play_parse: true,
+ lazy: $js.toString(() => {
+ input = {parse: 1, url: input, js: ''};
+ }),
+ double: false,
+ 推荐: "*",
+ 一级: ".video-img-box;h6.title&&Text;.lazyload&&data-src;.label&&Text;a&&href",
+ 二级: {
+ title: ".page-title&&Text;.tag-link&&Text",
+ img: ".module-item-pic&&.lazyload&&src",
+ desc: ".video-info-items:eq(3)&&Text;.video-info-items:eq(2)&&Text;;.video-info-items:eq(1)&&Text;.video-info-items:eq(0)&&Text",
+ content: ".video-info-content&&Text",
+ tabs: ".module-tab-item.tab-item",
+ lists: ".module-player-list:eq(#id) a",
+ tab_text: "body&&Text",
+ list_text: "body&&Text",
+ list_url: "a&&href"
+ },
+ detailUrl: "",
+ 搜索: "*"
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/闪雷电.js b/drpy_t3/drpy_js/闪雷电.js
new file mode 100644
index 0000000..f5b1ecf
--- /dev/null
+++ b/drpy_t3/drpy_js/闪雷电.js
@@ -0,0 +1,39 @@
+var rule = {
+ title: '闪雷电',
+ 编码: 'gb2312',
+ host: 'http://120.224.7.90:808',
+ url: '/www/List.asp?classid=fyclass&searchword=&page=fypage',
+ filterable: 0,//是否启用分类筛选,
+ class_name: '电影&电视剧&综艺&动漫&音乐',
+ class_url: '5000&10&8&6&12',
+ searchUrl: '/www/List.asp?classid=30&searchword=**&page=fypage',
+ searchable: 2,
+ quickSearch: 0,
+ headers: {
+ 'User-Agent': 'MOBILE_UA',
+ },
+ play_parse: true,
+ lazy: $js.toString(() => {
+ var html = 'http://120.224.7.90:808/PlayMov.asp?ClassId=' + input.split(",")[2] + '&video=2&exe=0&down=0&movNo=' + input.split(",")[3] + '&vgver=undefined&ClientIP=120.224.7.90'
+ var url = request(html).match(/push\('(.*?)'/)[1]
+ input = {
+ jx: 0,
+ url: url,
+ parse: 0
+ };
+ }),
+ limit: 6,
+ 推荐: 'ul:eq(4)&&strong;img&&alt;img&&src;span:eq(1)&&Text;a&&href',
+ 一级: 'ul:eq(5)&&strong;img&&alt;img&&src;span:eq(1)&&Text;a&&href',
+ 二级: {
+ title: "ul:eq(2)&&li:eq(0)&&Text",
+ img: "img:eq(1)&&src",
+ desc: "ul:eq(2)&&li:eq(1)&&Text;ul:eq(2)&&li:eq(2)&&Text;ul:eq(2)&&li:eq(3)&&Text",
+ content: "body&&div:has(p)&&p:eq(3)&&Text",
+ tabs: "",
+ lists: 'body&&a[onclick^="senfe"]',
+ list_url: 'a&&onclick',
+ list_text: 'a&&Text'
+ },
+ 搜索: '*',
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/阿里土豆[盘].js b/drpy_t3/drpy_js/阿里土豆[盘].js
new file mode 100644
index 0000000..00b97be
--- /dev/null
+++ b/drpy_t3/drpy_js/阿里土豆[盘].js
@@ -0,0 +1,32 @@
+Object.assign(muban.mxone5.二级,{
+ //tabs: '.module-tab-item',
+ lists: '.module-row-one:eq(#id)&&a.module-row-text',
+ list_text:'h4&&Text',
+ list_url:'a&&data-clipboard-text',
+});
+var rule = {
+ title: '阿里土豆[盘]',
+ 模板:'mxone5',
+ host: 'https://tudou.lvdoui.top',
+ //url: '/index.php/vod/show/id/fyclass/page/fypage.html',
+ url: '/index.php/vod/show/id/fyclassfyfilter.html',
+ searchUrl: '/index.php/vod/search.html?wd=**',
+ filter_url:'{{fl.cateId}}{{fl.area}}{{fl.by or "/by/time"}}{{fl.class}}{{fl.lang}}{{fl.letter}}/page/fypage{{fl.year}}',
+ filter: 'H4sIAAAAAAAAA+1b2U4bSRR9nvkMPzNyN2R/y77ve0Z5cCJrJhqGkYAZCUVIBLBjCNgGERyPzTZhHwxmCTFmjH/G1W3/Rdqu8u3bt1FsJCdCzH3knMutqlPl9jnt7tc//uDRPWd+fu35zd/lOeN52err6PA0edp8v/utP8XAgtEXsP7+y9f6p79S11aGA4ulvsUybP3h6W5S6HjSqleot9LJq7BqiRlaV/3sEoVVS4w3UaNn3FmiMBhocLGQS5KBJAYDLYyInV0ykMSgC6wNdZEYzCX0oZAdIHORWLWkmJoXQ8vOEoXBXAbXzBwpURhakTm261pRGYOSubeuFSkMppuaL+xNk+lKDLoER0vxJdJFYtBlctlaI+kisQPskdG7Yo6PkBKJQUnfoNH7NymRGEi3GxGBDJFOYtWS0sSo8WHOWaIwGGj8bXEgSwaSGOiyt2qOfRK5dSINwFAYmS1+pKdGYlASDorIBimRGJyafNTaXnJqJGbvVNKYGKE7VcGgpD9v/kuWrjAQMDdi7ib3W5qD6X5e/gd5CfC1+33oCpBMi6FsvVeA2YVSPFgdp9zIqyDYrfm4kVlzVCjIFjht7Ow5e0gI1rQXFomco0JBsOGb72mFgmAD3q3TCgVBj9ickVxx9pAQrGVqifZQkH2qPtMKBdkzTbtnmnb0GE6L7Lyzh4SgR3/EUlmElpxtAIU1z+XNSMociDuXDah9MZo23uWtf3YOCijUBbYLu+POIgnh49Tqa/vFPk7FtVRxsafe45TIWfXVAcqNvApC20grFASHZWOWVigItjGWE8MxWmSjaLtdRRJCR4ZWKAgdTFeFhNCRca1ZQkh2sdrnrJAQlr3L72u3ZTdi26XYVp2yN2vNx6rty228FQCxLZRtwWwzZZsxq1NWx6xGWQ2x+mnCWgBiT1H2FGZPUvYkZk9Q9gRmj1P2OGapVjrWSqda6VgrnWqlY610qpWOtdKpVjrWSqNaaVgrjWqlYa00qpWGtdKoVhrWSqNaaVgrjWqlYa00qpWGtdKoVhrWSqNaaVgrjWplAY5rlL+z048+LiIVM9aG6/y4nIWPYqWL9yww5whzDpjzhDkPzAXCXADmImEuAnOJMJeAuUyYy8BcIcwVYK4S5iow1whzDZjrhLkOzA3C3ADmJmFuAnOLMLeAuU2Y28DcIcwdYO4S5i4w9whzD5j7hLkPzAPCPADmIWEeAvOIMI+AeUyYx8A8IcwTYJ4S5ikwzwjzDBjtp9OEKyP4I/CiC31bhEdFNuI6/vaXSLnPiy5v5yurvDpEIZs10mOI/fVVZ4f9Rb3WL0JBxHa8/KPdX57B8yYrgjZ/vwgqVrdFNkVKJHawwFYrgtYR2OqIoHWEiTpCUmFnxhUmFGansYARX3OWKAzm8j7oSoYKQ3nDtQEK2982qi5u38gxhGMIx5BvE0M4QnCE4AjBEYIjBEeIIxMhvuPPWJwhjnyG+Iqrboyr/IqPYw+GWfZgiGUPxh6MPRh7sEPpwSwTxjdy2YQ1zoTxLdb/yS3W2jdQ+ckJttxsudlys+Vmy82W277t2dIgw13qGTAXepxmTmHYWPZPuY2lhcFkV/PFdMhZojDoMpoyBslDywqzDVnAyBAfrDDbkW0WdqJkuhJD5rH0kUxXYVCSXRark6REYjCXxIb72XGJQZexKWOLvmsgMeiSyRihSCE76nrq28GAjFv/WL6fyCgx6LjeW3wzRHpJrEHmu5BJWe50n2cpHATM59NnMeu0iAriX+HBsPKv8B62o2xH2Y6yHWU7eiTt6LEG2dE6vGYdr3iafaniDDG1CoOBwotmNEgGkhiURCfNFfoqo8Tgq7z2a5XF6EQxTN4lVRgMND0jEuSOtsJgoNq3q41k1v3+psRgLrVfP6zj1VeRtsTeInORGC6Z23SXWBjs0exe4T/yFqjCoEt4SoQSpIvE7EO7IVIkDygMBkoMGnHi5BVmq7su8jGqbgVDpu0b3/Q+oO+uefPaWFmwYo+zQkL7r4mfoGXvzt6dvTt7d/buiGHvftS9u3Wd54c3+OENfguPHxE5hI+IcIbgDMEZgjMEZwjOEJwhDm2GaNQPAJwhOENwhuAMwRmCMwRnCM4QnCE4Q3CGOPIZovsL7HXVqZFeAAA=',
+
+cate_exclude:'求片|全部影片',
+ lazy: `
+ if (/(pan.quark.cn|www.aliyundrive.com|www.alipan.com)/.test(input)){
+let type="ali";
+if (input.includes("pan.quark.cn")){
+type="quark";
+} else if (input.includes("www.aliyundrive.com") || input.includes("www.alipan.com")){
+type="ali";
+}
+let confirm="";
+//let confirm="&confirm=0";
+input = getProxyUrl().replace('js',type)+'&type=push'+confirm+'&url='+encodeURIComponent(input);
+}
+
+ `,
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_js/黑木耳资源[资].js b/drpy_t3/drpy_js/黑木耳资源[资].js
new file mode 100644
index 0000000..56f5beb
--- /dev/null
+++ b/drpy_t3/drpy_js/黑木耳资源[资].js
@@ -0,0 +1,9 @@
+var rule = {
+ 模板: '采集1',
+ title: '黑木耳资源[资]',
+ host: 'https://www.heimuer.tv',
+ // homeTid: '13',
+ homeTid: '',
+ cate_exclude: '^电影$|^电视剧$|^综艺$|^动漫$',
+ parse_url: '',
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_libs/alist.js b/drpy_t3/drpy_libs/alist.js
new file mode 100644
index 0000000..ae9bd44
--- /dev/null
+++ b/drpy_t3/drpy_libs/alist.js
@@ -0,0 +1,819 @@
+// import _ from 'https://underscorejs.org/underscore-esm-min.js'
+// import {distance} from 'https://unpkg.com/fastest-levenshtein@1.0.16/esm/mod.js'
+import {distance} from './mod.js'
+import {sortListByCN} from './sortName.js'
+
+/**
+ * alist js
+ * 配置设置 {"key":"Alist","name":"Alist","type":3,"api":"http://xxx.com/alist.js","searchable":0,"quickSearch":0,"filterable":0,"ext":"http://xxx.com/alist.json"}
+ * alist.json [{
+ name:'名称',
+ server:'地址',
+ startPage:'/', //启动文件夹
+ showAll: false , //是否显示全部文件,默认false只显示 音视频和文件夹
+ search: true, // 启用小雅的搜索,搜索只会搜第一个开启此开关的磁盘
+ params:{ //对应文件夹参数 如设置对应文件夹的密码
+ '/abc':{ password : '123' },
+ '/abc/abc':{ password : '123' },
+ }
+ }]
+ * 提示 想要加载文件夹里面全部视频到详情(看剧可以自动播放下一集支持历史记录)
+ * 需要改软件才能支持,,建议长按文件夹时添加判断 tag == folder 时跳转 DetailActivity
+ */
+String.prototype.rstrip = function (chars) {
+ let regex = new RegExp(chars + "$");
+ return this.replace(regex, "");
+};
+var showMode = 'single';
+var searchDriver = '';
+var limit_search_show = 200;
+var search_type = '';
+var detail_order = 'name';
+var playRaw = 1; // 播放直链获取,默认0直接拼接/d 填1可以获取阿里oss链接。注意,有时效性
+const request_timeout = 5000;
+const VERSION = 'alist v2/v3 20221223';
+const UA = 'Mozilla/5.0'; //默认请求ua
+/**
+ * 打印日志
+ * @param any 任意变量
+ */
+function print(any){
+ any = any||'';
+ if(typeof(any)=='object'&&Object.keys(any).length>0){
+ try {
+ any = JSON.stringify(any);
+ console.log(any);
+ }catch (e) {
+ // console.log('print:'+e.message);
+ console.log(typeof(any)+':'+any.length);
+ }
+ }else if(typeof(any)=='object'&&Object.keys(any).length<1){
+ console.log('null object');
+ }else{
+ console.log(any);
+ }
+}
+
+/*** js自封装的方法 ***/
+
+/**
+ * 获取链接的host(带http协议的完整链接)
+ * @param url 任意一个正常完整的Url,自动提取根
+ * @returns {string}
+ */
+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
+}
+
+const http = function (url, options = {}) {
+ if(options.method ==='POST' && options.data){
+ options.body = JSON.stringify(options.data);
+ options.headers = Object.assign({'content-type':'application/json'}, options.headers);
+ }
+ options.timeout = request_timeout;
+ if(!options.headers){
+ options.headers = {};
+ }
+ let keys = Object.keys(options.headers).map(it=>it.toLowerCase());
+ if(!keys.includes('referer')){
+ options.headers['Referer'] = getHome(url);
+ }
+ if(!keys.includes('user-agent')){
+ options.headers['User-Agent'] = UA;
+ }
+ console.log(JSON.stringify(options.headers));
+ try {
+ const res = req(url, options);
+ // if(options.headers['Authorization']){
+ // console.log(res.content);
+ // }
+ res.json = () => res&&res.content ? JSON.parse(res.content) : null;
+ res.text = () => res&&res.content ? res.content:'';
+ return res
+ }catch (e) {
+ return {
+ json() {
+ return null
+ }, text() {
+ return ''
+ }
+ }
+ }
+};
+["get", "post"].forEach(method => {
+ http[method] = function (url, options = {}) {
+ return http(url, Object.assign(options, {method: method.toUpperCase()}));
+ }
+});
+
+const __drives = {};
+
+function isMedia(file){
+ return /\.(dff|dsf|mp3|aac|wav|wma|cda|flac|m4a|mid|mka|mp2|mpa|mpc|ape|ofr|ogg|ra|wv|tta|ac3|dts|tak|webm|wmv|mpeg|mov|ram|swf|mp4|avi|rm|rmvb|flv|mpg|mkv|m3u8|ts|3gp|asf)$/.test(file.toLowerCase());
+}
+
+function get_drives_path(tid) {
+ const index = tid.indexOf('$');
+ const name = tid.substring(0, index);
+ const path = tid.substring(index + 1);
+ return { drives: get_drives(name), path };
+}
+
+function get_drives(name) {
+ const { settings, api, server,headers } = __drives[name];
+ if (settings.v3 == null) { //获取 设置
+ settings.v3 = false;
+ const data = http.get(server + '/api/public/settings',{headers:headers}).json().data;
+ if (Array.isArray(data)) {
+ settings.title = data.find(x => x.key === 'title')?.value;
+ settings.v3 = false;
+ settings.version = data.find(x => x.key === 'version')?.value;
+ settings.enableSearch = data.find(x => x.key === 'enable search')?.value === 'true';
+ } else {
+ settings.title = data.title;
+ settings.v3 = true;
+ settings.version = data.version;
+ settings.enableSearch = false; //v3 没有找到 搜索配置
+ }
+ //不同版本 接口不一样
+ api.path = settings.v3 ? '/api/fs/list' : '/api/public/path';
+ api.file = settings.v3 ? '/api/fs/get' : '/api/public/path';
+ api.search = settings.v3 ? '/api/public/search' : '/api/public/search';
+ }
+ return __drives[name]
+}
+
+function init(ext) {
+ console.log("当前版本号:"+VERSION);
+ let data;
+ if (typeof ext == 'object'){
+ data = ext;
+ print('alist ext:object');
+ } else if (typeof ext == 'string') {
+ if (ext.startsWith('http')) {
+ let alist_data = ext.split(';');
+ let alist_data_url = alist_data[0];
+ limit_search_show = alist_data.length>1?Number(alist_data[1])||limit_search_show:limit_search_show;
+ search_type = alist_data.length>2?alist_data[2]:search_type;
+ print(alist_data_url);
+ data = http.get(alist_data_url).json(); // .map(it=>{it.name='🙋丫仙女';return it})
+ } else {
+ print('alist ext:json string');
+ data = JSON.parse(ext);
+ }
+ }
+
+ // print(data); // 测试证明壳子标题支持emoji,是http请求源码不支持emoji
+ let drives = [];
+ if(Array.isArray(data) && data.length > 0 && data[0].hasOwnProperty('server') && data[0].hasOwnProperty('name')){
+ drives = data;
+ }else if(!Array.isArray(data)&&data.hasOwnProperty('drives')&&Array.isArray(data.drives)){
+ drives = data.drives.filter(it=>(it.type&&it.type==='alist')||!it.type);
+ }
+ print(drives);
+ searchDriver = (drives.find(x=>x.search)||{}).name||'';
+ if(!searchDriver && drives.length > 0){
+ searchDriver = drives[0].name;
+ }
+ print(searchDriver);
+ drives.forEach(item => {
+ let _path_param = [];
+ if(item.params){
+ _path_param = Object.keys(item.params);
+ // 升序排列
+ _path_param.sort((a,b)=>(a.length-b.length));
+ }
+ if(item.password){
+ let pwdObj = {
+ password: item.password
+ };
+ if(!item.params){
+ item.params = {'/':pwdObj};
+ }else{
+ item.params['/'] = pwdObj;
+ }
+ _path_param.unshift('/');
+ }
+ __drives[item.name] = {
+ name: item.name,
+ server: item.server.endsWith("/") ? item.server.rstrip("/") : item.server,
+ startPage: item.startPage || '/', //首页
+ showAll: item.showAll === true, //默认只显示 视频和文件夹,如果想显示全部 showAll 设置true
+ search: !!item.search, //是否支持搜索,只有小丫的可以,多个可搜索只取最前面的一个
+ params: item.params || {},
+ _path_param: _path_param,
+ settings: {},
+ api: {},
+ headers:item.headers||{},
+ getParams(path) {
+ const key = this._path_param.find(x => path.startsWith(x));
+ return Object.assign({}, this.params[key], { path });
+ },
+ getPath(path) {
+ const res = http.post(this.server + this.api.path, { data: this.getParams(path),headers:this.headers }).json();
+ // console.log(res);
+ try {
+ return this.settings.v3 ? res.data.content : res.data.files
+ }catch (e) {
+ console.log(`getPath发生错误:${e.message}`);
+ console.log(JSON.stringify(res));
+ return [{name:'error',value:JSON.stringify(res)}]
+ }
+ },
+ getFile(path) {
+ let raw_url = this.server+'/d'+path;
+ raw_url = encodeURI(raw_url);
+ let data = {raw_url:raw_url,raw_url1:raw_url};
+ if(playRaw===1){
+ try {
+ const res = http.post(this.server + this.api.file, { data: this.getParams(path),headers:this.headers }).json();
+ data = this.settings.v3 ? res.data : res.data.files[0];
+ if (!this.settings.v3) {
+ data.raw_url = data.url; //v2 的url和v3不一样
+ }
+ data.raw_url1 = raw_url;
+ return data
+ }catch (e) {
+ return data
+ }
+ }else{
+ return data
+ }
+ },
+ isFolder(data) { return data.type === 1 },
+ isVideo(data) { //判断是否是 视频文件
+ // return this.settings.v3 ? data.type === 2 : data.type === 3
+ // 增加音乐识别 视频,其他,音频
+ return this.settings.v3 ? (data.type === 2||data.type===0||data.type===3) : (data.type === 3||data.type===0||data.type === 4)
+ },
+ is_subt(data) {
+ if (data.type === 1) {
+ return false;
+ }
+ const ext = /\.(srt|ass|scc|stl|ttml)$/; // [".srt", ".ass", ".scc", ".stl", ".ttml"];
+ // return ext.some(x => data.name.endsWith(x));
+ return ext.test(data.name);
+ },
+ getPic(data) {
+ let pic = this.settings.v3 ? data.thumb : data.thumbnail;
+ return pic || (this.isFolder(data) ? "http://img1.3png.com/281e284a670865a71d91515866552b5f172b.png" : '');
+ },
+ getTime(data,isStandard) {
+ isStandard = isStandard||false;
+ try {
+ let tTime = data.updated_at || data.time_str || data.modified || "";
+ let date = '';
+ if(tTime){
+ tTime = tTime.split("T");
+ date = tTime[0];
+ if(isStandard){
+ date = date.replace(/-/g,"/");
+ }
+ tTime = tTime[1].split(/Z|\./);
+ date += " " + tTime[0];
+ }
+ return date;
+ }catch (e) {
+ // print(e.message);
+ // print(data);
+ return ''
+ }
+ },
+ }
+ }
+ );
+ print('init执行完毕');
+}
+
+function home(filter) {
+ let classes = Object.keys(__drives).map(key => ({
+ type_id: `${key}$${__drives[key].startPage}`,
+ type_name: key,
+ type_flag: '1',
+ }));
+ let filter_dict = {};
+ let filters = [{'key': 'order', 'name': '排序', 'value': [{'n': '名称⬆️', 'v': 'vod_name_asc'}, {'n': '名称⬇️', 'v': 'vod_name_desc'},
+ {'n': '中英⬆️', 'v': 'vod_cn_asc'}, {'n': '中英⬇️', 'v': 'vod_cn_desc'},
+ {'n': '时间⬆️', 'v': 'vod_time_asc'}, {'n': '时间⬇️', 'v': 'vod_time_desc'},
+ {'n': '大小⬆️', 'v': 'vod_size_asc'}, {'n': '大小⬇️', 'v': 'vod_size_desc'},{'n': '无', 'v': 'none'}]},
+ {'key': 'show', 'name': '播放展示', 'value': [{'n': '单集', 'v': 'single'},{'n': '全集', 'v': 'all'}]}
+ ];
+ classes.forEach(it=>{
+ filter_dict[it.type_id] = filters;
+ });
+ print("----home----");
+ print(classes);
+ return JSON.stringify({ 'class': classes,'filters': filter_dict});
+}
+
+function homeVod(params) {
+ let _post_data = {"pageNum":0,"pageSize":100};
+ let _post_url = 'https://pbaccess.video.qq.com/trpc.videosearch.hot_rank.HotRankServantHttp/HotRankHttp';
+ let data = http.post(_post_url,{ data: _post_data }).json();
+ let _list = [];
+ try {
+ data = data['data']['navItemList'][0]['hotRankResult']['rankItemList'];
+ // print(data);
+ data.forEach(it=>{
+ _list.push({
+ vod_name:it.title,
+ vod_id:'msearch:'+it.title,
+ vod_pic:'https://avatars.githubusercontent.com/u/97389433?s=120&v=4',
+ vod_remarks:it.changeOrder,
+ });
+ });
+ }catch (e) {
+ print('Alist获取首页推荐发送错误:'+e.message);
+ }
+ return JSON.stringify({ 'list': _list });
+}
+
+function category(tid, pg, filter, extend) {
+ let orid = tid.replace(/#all#|#search#/g,'');
+ let { drives, path } = get_drives_path(orid);
+ const id = orid.endsWith('/') ? orid : orid + '/';
+ const list = drives.getPath(path);
+ let subList = [];
+ let vodFiles = [];
+ let allList = [];
+ let fl = filter?extend:{};
+ if(fl.show){
+ showMode = fl.show;
+ }
+ list.forEach(item => {
+ if(item.name!=='error') {
+ if (drives.is_subt(item)) {
+ subList.push(item.name);
+ }
+ if (!drives.showAll && !drives.isFolder(item) && !drives.isVideo(item)) {
+ return //只显示视频文件和文件夹
+ }
+ let vod_time = drives.getTime(item);
+ let vod_size = get_size(item.size);
+ let remark = vod_time.split(' ')[0].substr(3) + '\t' + vod_size;
+ let vod_id = id + item.name + (drives.isFolder(item) ? '/' : '');
+ if (showMode === 'all') {
+ vod_id += '#all#';
+ }
+ print(vod_id);
+ const vod = {
+ 'vod_id': vod_id,
+ 'vod_name': item.name.replaceAll("$", "").replaceAll("#", ""),
+ 'vod_pic': drives.getPic(item),
+ 'vod_time': vod_time,
+ 'vod_size': item.size,
+ 'vod_tag': drives.isFolder(item) ? 'folder' : 'file',
+ 'vod_remarks': drives.isFolder(item) ? remark + ' 文件夹' : remark
+ };
+ if (drives.isVideo(item)) {
+ vodFiles.push(vod);
+ }
+ allList.push(vod);
+ }else{
+ console.log(item);
+ const vod = {
+ vod_name: item.value,
+ vod_id: 'no_data',
+ vod_remarks: '不要点,会崩的',
+ vod_pic: 'https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg'
+ }
+ allList.push(vod);
+ }
+ });
+
+ if (vodFiles.length === 1 && subList.length > 0) { //只有一个视频 一个或者多个字幕 取相似度最高的
+ // let sub = subList.length === 1 ? subList[0] : _.chain(allList).sortBy(x => (x.includes('chs') ? 100 : 0) + levenshteinDistance(x, vodFiles[0].vod_name)).last().value();
+ let sub; // 字幕文件名称
+ if(subList.length === 1){
+ sub = subList[0];
+ }else {
+ let subs = JSON.parse(JSON.stringify(subList));
+ subs.sort((a,b)=>{
+ // chs是简体中文字幕
+ let a_similar = (a.includes('chs') ? 100 : 0) + levenshteinDistance(a, vodFiles[0].vod_name);
+ let b_similar = (b.includes('chs') ? 100 : 0) + levenshteinDistance(b, vodFiles[0].vod_name);
+ if(a_similar>b_similar) { // 按相似度正序排列
+ return 1;
+ }else{ //否则,位置不变
+ return -1;
+ }
+ });
+ sub = subs.slice(-1)[0];
+ }
+ vodFiles[0].vod_id += "@@@" + sub;
+ // vodFiles[0].vod_remarks += " 有字幕";
+ vodFiles[0].vod_remarks += "🏷️";
+ } else {
+ vodFiles.forEach(item => {
+ const lh = 0;
+ let sub;
+ subList.forEach(s => {
+ //编辑距离相似度
+ const l = levenshteinDistance(s, item.vod_name);
+ if (l > 60 && l > lh) {
+ sub = s;
+ }
+ });
+ if (sub) {
+ item.vod_id += "@@@" + sub;
+ // item.vod_remarks += " 有字幕";
+ item.vod_remarks += "🏷️";
+ }
+ });
+ }
+
+ if(fl.order){
+ // print(fl.order);
+ let key = fl.order.split('_').slice(0,-1).join('_');
+ let order = fl.order.split('_').slice(-1)[0];
+ print(`排序key:${key},排序order:${order}`);
+ if(key.includes('name')){
+ detail_order = 'name';
+ allList = sortListByName(allList,key,order);
+ }else if(key.includes('cn')){
+ detail_order = 'cn';
+ allList = sortListByCN(allList,'vod_name',order);
+ }else if(key.includes('time')){
+ detail_order = 'time';
+ allList = sortListByTime(allList,key,order);
+ }else if(key.includes('size')){
+ detail_order = 'size';
+ allList = sortListBySize(allList,key,order);
+ }else if(fl.order.includes('none')){
+ detail_order = 'none';
+ print('不排序');
+ }
+ }else{
+ // 没传order是其他地方调用的,自动按名称正序排序方便追剧,如果传了none进去就不排序,假装云盘里本身文件顺序是正常的
+ if(detail_order!=='none'){
+ allList = sortListByName(allList,'vod_name','asc');
+ }
+ }
+
+ print("----category----"+`tid:${tid},detail_order:${detail_order},showMode:${showMode}`);
+ // print(allList);
+ return JSON.stringify({
+ 'page': 1,
+ 'pagecount': 1,
+ 'limit': allList.length,
+ 'total': allList.length,
+ 'list': allList,
+ });
+}
+
+function getAll(otid,tid,drives,path){
+ try {
+ const content = category(tid, null, false, null);
+ const isFile = isMedia(otid.replace(/#all#|#search#/g,'').split('@@@')[0]);
+ const { list } = JSON.parse(content);
+ let vod_play_url = [];
+ list.forEach(x => {
+ if (x.vod_tag === 'file'){
+ let vid = x.vod_id.replace(/#all#|#search#/g,'');
+ vod_play_url.push(`${x.vod_name}$${vid.substring(vid.indexOf('$') + 1)}`);
+ }
+ });
+ const pl = path.split("/").filter(it=>it);
+ let vod_name = pl[pl.length - 1] || drives.name;
+ if(vod_name === drives.name){
+ print(pl);
+ }
+ if(otid.includes('#search#')){
+ vod_name+='[搜]';
+ }
+ let vod = {
+ // vod_id: tid,
+ vod_id: otid,
+ vod_name: vod_name,
+ type_name: "文件夹",
+ vod_pic: "https://avatars.githubusercontent.com/u/97389433?s=120&v=4",
+ vod_content: tid,
+ vod_tag: 'folder',
+ vod_play_from: drives.name,
+ vod_play_url: vod_play_url.join('#'),
+ vod_remarks: drives.settings.title,
+ }
+ print("----detail1----");
+ print(vod);
+ return JSON.stringify({ 'list': [vod] });
+ }catch (e) {
+ print(e.message);
+ let list = [{vod_name:'无数据,防无限请求',type_name: "文件夹",vod_id:'no_data',vod_remarks:'不要点,会崩的',vod_pic:'https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/static/img/404.jpg',vod_actor:e.message,vod_director: tid,vod_content: otid}];
+ return JSON.stringify({ 'list': list });
+ }
+}
+
+function detail(tid) {
+ let isSearch = tid.includes('#search#');
+ let isAll = tid.includes('#all#');
+ let otid = tid;
+ tid = tid.replace(/#all#|#search#/g,'');
+ let isFile = isMedia(tid.split('@@@')[0]);
+ print(`isFile:${tid}?${isFile}`);
+ let { drives, path } = get_drives_path(tid);
+ print(`drives:${drives},path:${path},`);
+ if (path.endsWith("/")) { //长按文件夹可以 加载里面全部视频到详情
+ return getAll(otid,tid,drives,path);
+ } else {
+ if(isSearch&&!isFile){ // 搜索结果 当前目录获取所有文件
+ return getAll(otid,tid,drives,path);
+ }else if(isAll){ // 上级目录获取所有文件 不管是搜索还是分类,只要不是 搜索到的文件夹,且展示模式为全部,都获取上级目录的所有文件
+ // 是文件就取上级目录
+ let new_tid;
+ if(isFile){
+ new_tid = tid.split('/').slice(0,-1).join('/')+'/';
+ }else{
+ new_tid = tid;
+ }
+ print(`全集模式 tid:${tid}=>tid:${new_tid}`);
+ let { drives, path } = get_drives_path(new_tid);
+ return getAll(otid,new_tid,drives,path);
+ } else if(isFile){ // 单文件进入
+ let paths = path.split("@@@");
+ let vod_name = paths[0].substring(paths[0].lastIndexOf("/") + 1);
+ let vod_title = vod_name;
+ if(otid.includes('#search#')){
+ vod_title+='[搜]';
+ }
+ let vod = {
+ vod_id: otid,
+ vod_name: vod_title,
+ type_name: "文件",
+ vod_pic: "https://avatars.githubusercontent.com/u/97389433?s=120&v=4",
+ vod_content: tid,
+ vod_play_from: drives.name,
+ vod_play_url: vod_name + "$" + path,
+ vod_remarks: drives.settings.title,
+ };
+ print("----detail2----");
+ print(vod);
+ return JSON.stringify({
+ 'list': [vod]
+ });
+ }else{
+ return JSON.stringify({
+ 'list': []
+ });
+ }
+ }
+}
+
+function play(flag, id, flags) {
+ const drives = get_drives(flag);
+ const urls = id.split("@@@"); // @@@ 分割前是 相对文件path,分割后是字幕文件
+ let vod = {
+ 'parse': 0,
+ 'playUrl': '',
+ // 'url': drives.getFile(urls[0]).raw_url+'#.m3u8' // 加 # 没法播放
+ 'url': drives.getFile(urls[0]).raw_url
+ };
+ if (urls.length >= 2) {
+ const path = urls[0].substring(0, urls[0].lastIndexOf('/') + 1);
+ vod.subt = drives.getFile(path + urls[1]).raw_url1;
+ }
+ print("----play----");
+ print(vod);
+ return JSON.stringify(vod);
+}
+
+function search(wd, quick) {
+ print(__drives);
+ print('可搜索的alist驱动:'+searchDriver);
+ if(!searchDriver||!wd){
+ return JSON.stringify({
+ 'list': []
+ });
+ }else{
+ let driver = __drives[searchDriver];
+ wd = wd.split(' ').filter(it=>it.trim()).join('+');
+ print(driver);
+ let surl = driver.server + '/search?box='+wd+'&url=';
+ if(search_type){
+ surl+='&type='+search_type;
+ }
+ print('搜索链接:'+surl);
+ let html = http.get(surl).text();
+ let lists = [];
+ try {
+ lists = pdfa(html,'div&&ul&&a');
+ }catch (e) {}
+ print(`搜索结果数:${lists.length},搜索结果显示数量限制:${limit_search_show}`);
+ let vods = [];
+ let excludeReg = /\.(pdf|epub|mobi|txt|doc|lrc)$/; // 过滤后缀文件
+ let cnt = 0;
+ lists.forEach(it=>{
+ let vhref = pdfh(it,'a&&href');
+ if(vhref){
+ vhref = unescape(vhref);
+ }
+ if(excludeReg.test(vhref)){
+ return; //跳过本次循环
+ }
+ if(cnt < limit_search_show){
+ print(vhref);
+ }
+ cnt ++;
+ let vid = searchDriver+'$'+vhref+'#search#';
+ if(showMode==='all'){
+ vid+='#all#';
+ }
+ vods.push({
+ vod_name:pdfh(it,'a&&Text'),
+ vod_id:vid,
+ vod_tag: isMedia(vhref) ? 'file' : 'folder',
+ vod_pic:'http://img1.3png.com/281e284a670865a71d91515866552b5f172b.png',
+ vod_remarks:searchDriver
+ });
+ });
+ // 截取搜索结果
+ vods = vods.slice(0,limit_search_show);
+ print(vods);
+ return JSON.stringify({
+ 'list': vods
+ });
+ }
+}
+
+function get_size(sz) {
+ if (sz <= 0) {
+ return "";
+ }
+ let filesize = "";
+ if (sz > 1024 * 1024 * 1024 * 1024.0) {
+ sz /= (1024 * 1024 * 1024 * 1024.0);
+ filesize = "TB";
+ } else if (sz > 1024 * 1024 * 1024.0) {
+ sz /= (1024 * 1024 * 1024.0);
+ filesize = "GB";
+ } else if (sz > 1024 * 1024.0) {
+ sz /= (1024 * 1024.0);
+ filesize = "MB";
+ } else if( sz > 1024.0){
+ sz /= 1024.0;
+ filesize = "KB";
+ }else{
+ filesize = "B";
+ }
+ // 转成字符串
+ let sizeStr = sz.toFixed(2) + filesize,
+ // 获取小数点处的索引
+ index = sizeStr.indexOf("."),
+ // 获取小数点后两位的值
+ dou = sizeStr.substr(index + 1, 2);
+ if (dou === "00") {
+ return sizeStr.substring(0, index) + sizeStr.substr(index + 3, 2);
+ }else{
+ return sizeStr;
+ }
+}
+
+// 相似度获取
+function levenshteinDistance(str1, str2) {
+ return 100 - 100 * distance(str1, str2) / Math.max(str1.length, str2.length);
+}
+
+/**
+ * 自然排序
+ * ["第1集","第10集","第20集","第2集","1","2","10","12","23","01","02"].sort(naturalSort())
+ * @param options {{key,caseSensitive, order: string}}
+ */
+function naturalSort(options) {
+ if (!options) {
+ options = {};
+ }
+
+ return function (a, b) {
+ if(options.key){
+ a = a[options.key];
+ b = b[options.key];
+ }
+ var EQUAL = 0;
+ var GREATER = (options.order === 'desc' ?
+ -1 :
+ 1
+ );
+ var SMALLER = -GREATER;
+
+ var re = /(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi;
+ var sre = /(^[ ]*|[ ]*$)/g;
+ var dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/;
+ var hre = /^0x[0-9a-f]+$/i;
+ var ore = /^0/;
+
+ var normalize = function normalize(value) {
+ var string = '' + value;
+ return (options.caseSensitive ?
+ string :
+ string.toLowerCase()
+ );
+ };
+
+ // Normalize values to strings
+ var x = normalize(a).replace(sre, '') || '';
+ var y = normalize(b).replace(sre, '') || '';
+
+ // chunk/tokenize
+ var xN = x.replace(re, '\0$1\0').replace(/\0$/, '').replace(/^\0/, '').split('\0');
+ var yN = y.replace(re, '\0$1\0').replace(/\0$/, '').replace(/^\0/, '').split('\0');
+
+ // Return immediately if at least one of the values is empty.
+ if (!x && !y) return EQUAL;
+ if (!x && y) return GREATER;
+ if (x && !y) return SMALLER;
+
+ // numeric, hex or date detection
+ var xD = parseInt(x.match(hre)) || (xN.length != 1 && x.match(dre) && Date.parse(x));
+ var yD = parseInt(y.match(hre)) || xD && y.match(dre) && Date.parse(y) || null;
+ var oFxNcL, oFyNcL;
+
+ // first try and sort Hex codes or Dates
+ if (yD) {
+ if (xD < yD) return SMALLER;
+ else if (xD > yD) return GREATER;
+ }
+
+ // natural sorting through split numeric strings and default strings
+ for (var cLoc = 0, numS = Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {
+
+ // find floats not starting with '0', string or 0 if not defined (Clint Priest)
+ oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;
+ oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;
+
+ // handle numeric vs string comparison - number < string - (Kyle Adams)
+ if (isNaN(oFxNcL) !== isNaN(oFyNcL)) return (isNaN(oFxNcL)) ? GREATER : SMALLER;
+
+ // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'
+ else if (typeof oFxNcL !== typeof oFyNcL) {
+ oFxNcL += '';
+ oFyNcL += '';
+ }
+ if (oFxNcL < oFyNcL) return SMALLER;
+ if (oFxNcL > oFyNcL) return GREATER;
+ }
+ return EQUAL;
+ };
+}
+// 完整名称排序
+const sortListByName = (vodList,key,order) => {
+ if(!key){
+ return vodList
+ }
+ order = order||'asc'; // 默认正序
+ // 排序键,顺序,区分大小写
+ return vodList.sort(naturalSort({key: key, order: order,caseSensitive:true}))
+};
+
+const getTimeInt = (timeStr) => {
+ return (new Date(timeStr)).getTime();
+};
+
+// 时间
+const sortListByTime = (vodList,key,order) => {
+ if (!key) {
+ return vodList
+ }
+ let ASCarr = vodList.sort((a, b) => {
+ a = a[key];
+ b = b[key];
+ return getTimeInt(a) - getTimeInt(b);
+ });
+ if(order==='desc'){
+ ASCarr.reverse();
+ }
+ return ASCarr
+};
+
+// 大小
+const sortListBySize = (vodList,key,order) => {
+ if (!key) {
+ return vodList
+ }
+ let ASCarr = vodList.sort((a, b) => {
+ a = a[key];
+ b = b[key];
+ return (Number(a) || 0) - (Number(b) || 0);
+ });
+ if(order==='desc'){
+ ASCarr.reverse();
+ }
+ return ASCarr
+};
+
+// 导出函数对象
+export default {
+ init: init,
+ home: home,
+ homeVod: homeVod,
+ category: category,
+ detail: detail,
+ play: play,
+ search: search
+}
\ No newline at end of file
diff --git a/drpy_t3/drpy_libs/alist.min.js b/drpy_t3/drpy_libs/alist.min.js
new file mode 100644
index 0000000..52d3606
--- /dev/null
+++ b/drpy_t3/drpy_libs/alist.min.js
@@ -0,0 +1 @@
+import{distance}from"./mod.js";import{sortListByCN}from"./sortName.js";String.prototype.rstrip=function(chars){let regex=new RegExp(chars+"$");return this.replace(regex,"")};var showMode="single";var searchDriver="";var limit_search_show=200;var search_type="";var detail_order="name";var playRaw=1;const request_timeout=5e3;const VERSION="alist v2/v3 20221223";const UA="Mozilla/5.0";function print(any){any=any||"";if(typeof any=="object"&&Object.keys(any).length>0){try{any=JSON.stringify(any);console.log(any)}catch(e){console.log(typeof any+":"+any.length)}}else if(typeof any=="object"&&Object.keys(any).length<1){console.log("null object")}else{console.log(any)}}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}const http=function(url,options={}){if(options.method==="POST"&&options.data){options.body=JSON.stringify(options.data);options.headers=Object.assign({"content-type":"application/json"},options.headers)}options.timeout=request_timeout;if(!options.headers){options.headers={}}let keys=Object.keys(options.headers).map(it=>it.toLowerCase());if(!keys.includes("referer")){options.headers["Referer"]=getHome(url)}if(!keys.includes("user-agent")){options.headers["User-Agent"]=UA}console.log(JSON.stringify(options.headers));try{const res=req(url,options);res.json=()=>res&&res.content?JSON.parse(res.content):null;res.text=()=>res&&res.content?res.content:"";return res}catch(e){return{json(){return null},text(){return""}}}};["get","post"].forEach(method=>{http[method]=function(url,options={}){return http(url,Object.assign(options,{method:method.toUpperCase()}))}});const __drives={};function isMedia(file){return/\.(dff|dsf|mp3|aac|wav|wma|cda|flac|m4a|mid|mka|mp2|mpa|mpc|ape|ofr|ogg|ra|wv|tta|ac3|dts|tak|webm|wmv|mpeg|mov|ram|swf|mp4|avi|rm|rmvb|flv|mpg|mkv|m3u8|ts|3gp|asf)$/.test(file.toLowerCase())}function get_drives_path(tid){const index=tid.indexOf("$");const name=tid.substring(0,index);const path=tid.substring(index+1);return{drives:get_drives(name),path:path}}function get_drives(name){const{settings,api,server,headers}=__drives[name];if(settings.v3==null){settings.v3=false;const data=http.get(server+"/api/public/settings",{headers:headers}).json().data;if(Array.isArray(data)){settings.title=data.find(x=>x.key==="title")?.value;settings.v3=false;settings.version=data.find(x=>x.key==="version")?.value;settings.enableSearch=data.find(x=>x.key==="enable search")?.value==="true"}else{settings.title=data.title;settings.v3=true;settings.version=data.version;settings.enableSearch=false}api.path=settings.v3?"/api/fs/list":"/api/public/path";api.file=settings.v3?"/api/fs/get":"/api/public/path";api.search=settings.v3?"/api/public/search":"/api/public/search"}return __drives[name]}function init(ext){console.log("当前版本号:"+VERSION);let data;if(typeof ext=="object"){data=ext;print("alist ext:object")}else if(typeof ext=="string"){if(ext.startsWith("http")){let alist_data=ext.split(";");let alist_data_url=alist_data[0];limit_search_show=alist_data.length>1?Number(alist_data[1])||limit_search_show:limit_search_show;search_type=alist_data.length>2?alist_data[2]:search_type;print(alist_data_url);data=http.get(alist_data_url).json()}else{print("alist ext:json string");data=JSON.parse(ext)}}let drives=[];if(Array.isArray(data)&&data.length>0&&data[0].hasOwnProperty("server")&&data[0].hasOwnProperty("name")){drives=data}else if(!Array.isArray(data)&&data.hasOwnProperty("drives")&&Array.isArray(data.drives)){drives=data.drives.filter(it=>it.type&&it.type==="alist"||!it.type)}print(drives);searchDriver=(drives.find(x=>x.search)||{}).name||"";if(!searchDriver&&drives.length>0){searchDriver=drives[0].name}print(searchDriver);drives.forEach(item=>{let _path_param=[];if(item.params){_path_param=Object.keys(item.params);_path_param.sort((a,b)=>a.length-b.length)}if(item.password){let pwdObj={password:item.password};if(!item.params){item.params={"/":pwdObj}}else{item.params["/"]=pwdObj}_path_param.unshift("/")}__drives[item.name]={name:item.name,server:item.server.endsWith("/")?item.server.rstrip("/"):item.server,startPage:item.startPage||"/",showAll:item.showAll===true,search:!!item.search,params:item.params||{},_path_param:_path_param,settings:{},api:{},headers:item.headers||{},getParams(path){const key=this._path_param.find(x=>path.startsWith(x));return Object.assign({},this.params[key],{path:path})},getPath(path){const res=http.post(this.server+this.api.path,{data:this.getParams(path),headers:this.headers}).json();try{return this.settings.v3?res.data.content:res.data.files}catch(e){console.log(`getPath发生错误:${e.message}`);console.log(JSON.stringify(res));return[{name:"error",value:JSON.stringify(res)}]}},getFile(path){let raw_url=this.server+"/d"+path;raw_url=encodeURI(raw_url);let data={raw_url:raw_url,raw_url1:raw_url};if(playRaw===1){try{const res=http.post(this.server+this.api.file,{data:this.getParams(path),headers:this.headers}).json();data=this.settings.v3?res.data:res.data.files[0];if(!this.settings.v3){data.raw_url=data.url}data.raw_url1=raw_url;return data}catch(e){return data}}else{return data}},isFolder(data){return data.type===1},isVideo(data){return this.settings.v3?data.type===2||data.type===0||data.type===3:data.type===3||data.type===0||data.type===4},is_subt(data){if(data.type===1){return false}const ext=/\.(srt|ass|scc|stl|ttml)$/;return ext.test(data.name)},getPic(data){let pic=this.settings.v3?data.thumb:data.thumbnail;return pic||(this.isFolder(data)?"http://img1.3png.com/281e284a670865a71d91515866552b5f172b.png":"")},getTime(data,isStandard){isStandard=isStandard||false;try{let tTime=data.updated_at||data.time_str||data.modified||"";let date="";if(tTime){tTime=tTime.split("T");date=tTime[0];if(isStandard){date=date.replace(/-/g,"/")}tTime=tTime[1].split(/Z|\./);date+=" "+tTime[0]}return date}catch(e){return""}}}});print("init执行完毕")}function home(filter){let classes=Object.keys(__drives).map(key=>({type_id:`${key}$${__drives[key].startPage}`,type_name:key,type_flag:"1"}));let filter_dict={};let filters=[{key:"order",name:"排序",value:[{n:"名称⬆️",v:"vod_name_asc"},{n:"名称⬇️",v:"vod_name_desc"},{n:"中英⬆️",v:"vod_cn_asc"},{n:"中英⬇️",v:"vod_cn_desc"},{n:"时间⬆️",v:"vod_time_asc"},{n:"时间⬇️",v:"vod_time_desc"},{n:"大小⬆️",v:"vod_size_asc"},{n:"大小⬇️",v:"vod_size_desc"},{n:"无",v:"none"}]},{key:"show",name:"播放展示",value:[{n:"单集",v:"single"},{n:"全集",v:"all"}]}];classes.forEach(it=>{filter_dict[it.type_id]=filters});print("----home----");print(classes);return JSON.stringify({class:classes,filters:filter_dict})}function homeVod(params){let _post_data={pageNum:0,pageSize:100};let _post_url="https://pbaccess.video.qq.com/trpc.videosearch.hot_rank.HotRankServantHttp/HotRankHttp";let data=http.post(_post_url,{data:_post_data}).json();let _list=[];try{data=data["data"]["navItemList"][0]["hotRankResult"]["rankItemList"];data.forEach(it=>{_list.push({vod_name:it.title,vod_id:"msearch:"+it.title,vod_pic:"https://avatars.githubusercontent.com/u/97389433?s=120&v=4",vod_remarks:it.changeOrder})})}catch(e){print("Alist获取首页推荐发送错误:"+e.message)}return JSON.stringify({list:_list})}function category(tid,pg,filter,extend){let orid=tid.replace(/#all#|#search#/g,"");let{drives,path}=get_drives_path(orid);const id=orid.endsWith("/")?orid:orid+"/";const list=drives.getPath(path);let subList=[];let vodFiles=[];let allList=[];let fl=filter?extend:{};if(fl.show){showMode=fl.show}list.forEach(item=>{if(item.name!=="error"){if(drives.is_subt(item)){subList.push(item.name)}if(!drives.showAll&&!drives.isFolder(item)&&!drives.isVideo(item)){return}let vod_time=drives.getTime(item);let vod_size=get_size(item.size);let remark=vod_time.split(" ")[0].substr(3)+"\t"+vod_size;let vod_id=id+item.name+(drives.isFolder(item)?"/":"");if(showMode==="all"){vod_id+="#all#"}print(vod_id);const vod={vod_id:vod_id,vod_name:item.name.replaceAll("$","").replaceAll("#",""),vod_pic:drives.getPic(item),vod_time:vod_time,vod_size:item.size,vod_tag:drives.isFolder(item)?"folder":"file",vod_remarks:drives.isFolder(item)?remark+" 文件夹":remark};if(drives.isVideo(item)){vodFiles.push(vod)}allList.push(vod)}else{console.log(item);const vod={vod_name:item.value,vod_id:"no_data",vod_remarks:"不要点,会崩的",vod_pic:"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"};allList.push(vod)}});if(vodFiles.length===1&&subList.length>0){let sub;if(subList.length===1){sub=subList[0]}else{let subs=JSON.parse(JSON.stringify(subList));subs.sort((a,b)=>{let a_similar=(a.includes("chs")?100:0)+levenshteinDistance(a,vodFiles[0].vod_name);let b_similar=(b.includes("chs")?100:0)+levenshteinDistance(b,vodFiles[0].vod_name);if(a_similar>b_similar){return 1}else{return-1}});sub=subs.slice(-1)[0]}vodFiles[0].vod_id+="@@@"+sub;vodFiles[0].vod_remarks+="🏷️"}else{vodFiles.forEach(item=>{const lh=0;let sub;subList.forEach(s=>{const l=levenshteinDistance(s,item.vod_name);if(l>60&&l>lh){sub=s}});if(sub){item.vod_id+="@@@"+sub;item.vod_remarks+="🏷️"}})}if(fl.order){let key=fl.order.split("_").slice(0,-1).join("_");let order=fl.order.split("_").slice(-1)[0];print(`排序key:${key},排序order:${order}`);if(key.includes("name")){detail_order="name";allList=sortListByName(allList,key,order)}else if(key.includes("cn")){detail_order="cn";allList=sortListByCN(allList,"vod_name",order)}else if(key.includes("time")){detail_order="time";allList=sortListByTime(allList,key,order)}else if(key.includes("size")){detail_order="size";allList=sortListBySize(allList,key,order)}else if(fl.order.includes("none")){detail_order="none";print("不排序")}}else{if(detail_order!=="none"){allList=sortListByName(allList,"vod_name","asc")}}print("----category----"+`tid:${tid},detail_order:${detail_order},showMode:${showMode}`);return JSON.stringify({page:1,pagecount:1,limit:allList.length,total:allList.length,list:allList})}function getAll(otid,tid,drives,path){try{const content=category(tid,null,false,null);const isFile=isMedia(otid.replace(/#all#|#search#/g,"").split("@@@")[0]);const{list}=JSON.parse(content);let vod_play_url=[];list.forEach(x=>{if(x.vod_tag==="file"){let vid=x.vod_id.replace(/#all#|#search#/g,"");vod_play_url.push(`${x.vod_name}$${vid.substring(vid.indexOf("$")+1)}`)}});const pl=path.split("/").filter(it=>it);let vod_name=pl[pl.length-1]||drives.name;if(vod_name===drives.name){print(pl)}if(otid.includes("#search#")){vod_name+="[搜]"}let vod={vod_id:otid,vod_name:vod_name,type_name:"文件夹",vod_pic:"https://avatars.githubusercontent.com/u/97389433?s=120&v=4",vod_content:tid,vod_tag:"folder",vod_play_from:drives.name,vod_play_url:vod_play_url.join("#"),vod_remarks:drives.settings.title};print("----detail1----");print(vod);return JSON.stringify({list:[vod]})}catch(e){print(e.message);let list=[{vod_name:"无数据,防无限请求",type_name:"文件夹",vod_id:"no_data",vod_remarks:"不要点,会崩的",vod_pic:"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/static/img/404.jpg",vod_actor:e.message,vod_director:tid,vod_content:otid}];return JSON.stringify({list:list})}}function detail(tid){let isSearch=tid.includes("#search#");let isAll=tid.includes("#all#");let otid=tid;tid=tid.replace(/#all#|#search#/g,"");let isFile=isMedia(tid.split("@@@")[0]);print(`isFile:${tid}?${isFile}`);let{drives,path}=get_drives_path(tid);print(`drives:${drives},path:${path},`);if(path.endsWith("/")){return getAll(otid,tid,drives,path)}else{if(isSearch&&!isFile){return getAll(otid,tid,drives,path)}else if(isAll){let new_tid;if(isFile){new_tid=tid.split("/").slice(0,-1).join("/")+"/"}else{new_tid=tid}print(`全集模式 tid:${tid}=>tid:${new_tid}`);let{drives,path}=get_drives_path(new_tid);return getAll(otid,new_tid,drives,path)}else if(isFile){let paths=path.split("@@@");let vod_name=paths[0].substring(paths[0].lastIndexOf("/")+1);let vod_title=vod_name;if(otid.includes("#search#")){vod_title+="[搜]"}let vod={vod_id:otid,vod_name:vod_title,type_name:"文件",vod_pic:"https://avatars.githubusercontent.com/u/97389433?s=120&v=4",vod_content:tid,vod_play_from:drives.name,vod_play_url:vod_name+"$"+path,vod_remarks:drives.settings.title};print("----detail2----");print(vod);return JSON.stringify({list:[vod]})}else{return JSON.stringify({list:[]})}}}function play(flag,id,flags){const drives=get_drives(flag);const urls=id.split("@@@");let vod={parse:0,playUrl:"",url:drives.getFile(urls[0]).raw_url};if(urls.length>=2){const path=urls[0].substring(0,urls[0].lastIndexOf("/")+1);vod.subt=drives.getFile(path+urls[1]).raw_url1}print("----play----");print(vod);return JSON.stringify(vod)}function search(wd,quick){print(__drives);print("可搜索的alist驱动:"+searchDriver);if(!searchDriver||!wd){return JSON.stringify({list:[]})}else{let driver=__drives[searchDriver];wd=wd.split(" ").filter(it=>it.trim()).join("+");print(driver);let surl=driver.server+"/search?box="+wd+"&url=";if(search_type){surl+="&type="+search_type}print("搜索链接:"+surl);let html=http.get(surl).text();let lists=[];try{lists=pdfa(html,"div&&ul&&a")}catch(e){}print(`搜索结果数:${lists.length},搜索结果显示数量限制:${limit_search_show}`);let vods=[];let excludeReg=/\.(pdf|epub|mobi|txt|doc|lrc)$/;let cnt=0;lists.forEach(it=>{let vhref=pdfh(it,"a&&href");if(vhref){vhref=unescape(vhref)}if(excludeReg.test(vhref)){return}if(cnt \n * This name space provides following name spaces:\n * c.indexOf(h)?o===t?fe.FOLLOWING|fe.CONTAINED_BY:fe.FOLLOWING:o===e?fe.PRECEDING|fe.CONTAINS:fe.PRECEDING}function Ee(e){return(e=e.filter(((e,t,n)=>!n.includes(e,t+1)))).sort(((e,t)=>{const n=de(e,t);return n&fe.PRECEDING?-1:n&fe.FOLLOWING?1:0})),e}!function(e){e[e.DISCONNECTED=1]="DISCONNECTED",e[e.PRECEDING=2]="PRECEDING",e[e.FOLLOWING=4]="FOLLOWING",e[e.CONTAINS=8]="CONTAINS",e[e.CONTAINED_BY=16]="CONTAINED_BY"}(fe||(fe={}));const me=["url","type","lang"],Te=["fileSize","bitrate","framerate","samplingrate","channels","duration","height","width"];function _e(e){return pe("media:content",e).map((e=>{const{attribs:t}=e,n={medium:t.medium,isDefault:!!t.isDefault};for(const e of me)t[e]&&(n[e]=t[e]);for(const e of Te)t[e]&&(n[e]=parseInt(t[e],10));return t.expression&&(n.expression=t.expression),n}))}function Ae(e,t){return pe(e,t,!0,1)[0]}function ge(e,t,n=!1){return z(pe(e,t,n,1)).trim()}function Ne(e,t,n,r,i=!1){const s=ge(n,r,i);s&&(e[t]=s)}function Ce(e){return"rss"===e||"feed"===e||"rdf:RDF"===e}var Ie,Se=Object.freeze({__proto__:null,isTag:I,isCDATA:S,isText:b,isComment:O,isDocument:L,hasChildren:k,getOuterHTML:$,getInnerHTML:function(e,t){return k(e)?e.children.map((e=>$(e,t))).join(""):""},getText:function e(t){return Array.isArray(t)?t.map(e).join(""):I(t)?"br"===t.name?"\n":e(t.children):S(t)?e(t.children):b(t)?t.data:""},textContent:z,innerText:J,getChildren:Z,getParent:ee,getSiblings:te,getAttributeValue:function(e,t){var n;return null===(n=e.attribs)||void 0===n?void 0:n[t]},hasAttrib:function(e,t){return null!=e.attribs&&Object.prototype.hasOwnProperty.call(e.attribs,t)&&null!=e.attribs[t]},getName:function(e){return e.name},nextElementSibling:ne,prevElementSibling:re,removeElement:ie,replaceElement:function(e,t){const n=t.prev=e.prev;n&&(n.next=t);const r=t.next=e.next;r&&(r.prev=t);const i=t.parent=e.parent;if(i){const n=i.children;n[n.lastIndexOf(e)]=t,e.parent=null}},appendChild:function(e,t){if(ie(t),t.next=null,t.parent=e,e.children.push(t)>1){const n=e.children[e.children.length-2];n.next=t,t.prev=n}else t.prev=null},append:function(e,t){ie(t);const{parent:n}=e,r=e.next;if(t.next=r,t.prev=e,e.next=t,t.parent=n,r){if(r.prev=t,n){const e=n.children;e.splice(e.lastIndexOf(r),0,t)}}else n&&n.children.push(t)},prependChild:function(e,t){if(ie(t),t.parent=e,t.prev=null,1!==e.children.unshift(t)){const n=e.children[1];n.prev=t,t.next=n}else t.next=null},prepend:function(e,t){ie(t);const{parent:n}=e;if(n){const r=n.children;r.splice(r.indexOf(e),0,t)}e.prev&&(e.prev.next=t),t.parent=n,t.prev=e.prev,t.next=e,e.prev=t},filter:se,find:ae,findOneChild:function(e,t){return t.find(e)},findOne:oe,existsOne:function e(t,n){return n.some((n=>I(n)&&(t(n)||n.children.length>0&&e(t,n.children))))},findAll:function(e,t){var n;const r=[],i=t.filter(I);let s;for(;s=i.shift();){const t=null===(n=s.children)||void 0===n?void 0:n.filter(I);t&&t.length>0&&i.unshift(...t),e(s)&&r.push(s)}return r},testElement:function(e,t){const n=ue(e);return!n||n(t)},getElements:function(e,t,n,r=1/0){const i=ue(e);return i?se(i,t,n,r):[]},getElementById:function(e,t,n=!0){return Array.isArray(t)||(t=[t]),oe(le("id",e),t,n)},getElementsByTagName:pe,getElementsByTagType:function(e,t,n=!0,r=1/0){return se(ce.tag_type(e),t,n,r)},removeSubsets:function(e){let t=e.length;for(;--t>=0;){const n=e[t];if(t>0&&e.lastIndexOf(n,t-1)>=0)e.splice(t,1);else for(let r=n.parent;r;r=r.parent)if(e.includes(r)){e.splice(t,1);break}}return e},get DocumentPosition(){return fe},compareDocumentPosition:de,uniqueSort:Ee,getFeed:function(e){const t=Ae(Ce,e);return t?"feed"===t.name?function(e){var t;const n=e.children,r={type:"atom",items:pe("entry",n).map((e=>{var t;const{children:n}=e,r={media:_e(n)};Ne(r,"id","id",n),Ne(r,"title","title",n);const i=null===(t=Ae("link",n))||void 0===t?void 0:t.attribs.href;i&&(r.link=i);const s=ge("summary",n)||ge("content",n);s&&(r.description=s);const a=ge("updated",n);return a&&(r.pubDate=new Date(a)),r}))};Ne(r,"id","id",n),Ne(r,"title","title",n);const i=null===(t=Ae("link",n))||void 0===t?void 0:t.attribs.href;i&&(r.link=i);Ne(r,"description","subtitle",n);const s=ge("updated",n);s&&(r.updated=new Date(s));return Ne(r,"author","email",n,!0),r}(t):function(e){var t,n;const r=null!==(n=null===(t=Ae("channel",e.children))||void 0===t?void 0:t.children)&&void 0!==n?n:[],i={type:e.name.substr(0,3),id:"",items:pe("item",e.children).map((e=>{const{children:t}=e,n={media:_e(t)};Ne(n,"id","guid",t),Ne(n,"title","title",t),Ne(n,"link","link",t),Ne(n,"description","description",t);const r=ge("pubDate",t);return r&&(n.pubDate=new Date(r)),n}))};Ne(i,"title","title",r),Ne(i,"link","link",r),Ne(i,"description","description",r);const s=ge("lastBuildDate",r);s&&(i.updated=new Date(s));return Ne(i,"author","managingEditor",r,!0),i}(t):null}}),be="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function Oe(e){if(Object.keys)return Object.keys(e);var t=[];for(var n in e)t.push(n);return t}function ye(e,t){if(e.forEach)return e.forEach(t);for(var n=0;n
\n"))},t.random=function(e){return e[Math.floor(Math.random()*e.length)]},t.reject=a(!1),t.rejectattr=function(e,t){return e.filter((function(e){return!e[t]}))},t.select=a(!0),t.selectattr=function(e,t){return e.filter((function(e){return!!e[t]}))},t.replace=function(e,t,n,r){var i=e;if(t instanceof RegExp)return e.replace(t,n);void 0===r&&(r=-1);var s="";if("number"==typeof t)t=""+t;else if("string"!=typeof t)return e;if("number"==typeof e&&(e=""+e),"string"!=typeof e&&!(e instanceof kr.SafeString))return e;if(""===t)return s=n+e.split("").join(n)+n,kr.copySafeness(e,s);var a=e.indexOf(t);if(0===r||-1===a)return e;for(var o=0,c=0;a>-1&&(-1===r||c=t},t.greaterthan=function(e,t){return e>t},t.gt=t.greaterthan,t.le=function(e,t){return e<=t},t.lessthan=function(e,t){return e1&&s.length>1?n.reduce((function(e,t){return t(e)}),s):s)}}}var Aa=_a((function(e,t){for(var n,r=[],i=0;i=Kl.Zero&&e<=Kl.Nine}!function(e){e[e.Tab=9]="Tab",e[e.NewLine=10]="NewLine",e[e.FormFeed=12]="FormFeed",e[e.CarriageReturn=13]="CarriageReturn",e[e.Space=32]="Space",e[e.ExclamationMark=33]="ExclamationMark",e[e.Num=35]="Num",e[e.Amp=38]="Amp",e[e.SingleQuote=39]="SingleQuote",e[e.DoubleQuote=34]="DoubleQuote",e[e.Dash=45]="Dash",e[e.Slash=47]="Slash",e[e.Zero=48]="Zero",e[e.Nine=57]="Nine",e[e.Semi=59]="Semi",e[e.Lt=60]="Lt",e[e.Eq=61]="Eq",e[e.Gt=62]="Gt",e[e.Questionmark=63]="Questionmark",e[e.UpperA=65]="UpperA",e[e.LowerA=97]="LowerA",e[e.UpperF=70]="UpperF",e[e.LowerF=102]="LowerF",e[e.UpperZ=90]="UpperZ",e[e.LowerZ=122]="LowerZ",e[e.LowerX=120]="LowerX",e[e.OpeningSquareBracket=91]="OpeningSquareBracket"}(Kl||(Kl={})),function(e){e[e.Text=1]="Text",e[e.BeforeTagName=2]="BeforeTagName",e[e.InTagName=3]="InTagName",e[e.InSelfClosingTag=4]="InSelfClosingTag",e[e.BeforeClosingTagName=5]="BeforeClosingTagName",e[e.InClosingTagName=6]="InClosingTagName",e[e.AfterClosingTagName=7]="AfterClosingTagName",e[e.BeforeAttributeName=8]="BeforeAttributeName",e[e.InAttributeName=9]="InAttributeName",e[e.AfterAttributeName=10]="AfterAttributeName",e[e.BeforeAttributeValue=11]="BeforeAttributeValue",e[e.InAttributeValueDq=12]="InAttributeValueDq",e[e.InAttributeValueSq=13]="InAttributeValueSq",e[e.InAttributeValueNq=14]="InAttributeValueNq",e[e.BeforeDeclaration=15]="BeforeDeclaration",e[e.InDeclaration=16]="InDeclaration",e[e.InProcessingInstruction=17]="InProcessingInstruction",e[e.BeforeComment=18]="BeforeComment",e[e.CDATASequence=19]="CDATASequence",e[e.InSpecialComment=20]="InSpecialComment",e[e.InCommentLike=21]="InCommentLike",e[e.BeforeSpecialS=22]="BeforeSpecialS",e[e.SpecialStartSequence=23]="SpecialStartSequence",e[e.InSpecialTag=24]="InSpecialTag",e[e.BeforeEntity=25]="BeforeEntity",e[e.BeforeNumericEntity=26]="BeforeNumericEntity",e[e.InNamedEntity=27]="InNamedEntity",e[e.InNumericEntity=28]="InNumericEntity",e[e.InHexEntity=29]="InHexEntity"}(jl||(jl={})),function(e){e[e.NoValue=0]="NoValue",e[e.Unquoted=1]="Unquoted",e[e.Single=2]="Single",e[e.Double=3]="Double"}(Vl||(Vl={}));const zl={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101])};class Jl{constructor({xmlMode:e=!1,decodeEntities:t=!0},n){this.cbs=n,this.state=jl.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=jl.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.sequenceIndex=0,this.trieIndex=0,this.trieCurrent=0,this.entityResult=0,this.entityExcess=0,this.xmlMode=e,this.decodeEntities=t,this.entityTrie=e?xo:wo}reset(){this.state=jl.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=jl.Text,this.currentSequence=void 0,this.running=!0,this.offset=0}write(e){this.offset+=this.buffer.length,this.buffer=e,this.parse()}end(){this.running&&this.finish()}pause(){this.running=!1}resume(){this.running=!0,this.index\n *
\n *
\n * This is ITU-T X.690 ASN.1 DER encoder class library and\n * class structure and methods is very similar to\n * org.bouncycastle.asn1 package of\n * well known BouncyCaslte Cryptography Library.\n *
\n * {TYPE-OF-ASNOBJ: ASN1OBJ-PARAMETER}\n *\n * 'TYPE-OF-ASN1OBJ' can be one of following symbols:\n *
>>24)|4278255360&(o<<24|o>>>8),s=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),(P=r[i]).high^=s,P.low^=o}for(var a=0;a<24;a++){for(var p=0;p<5;p++){for(var l=0,y=0,g=0;g<5;g++)l^=(P=r[p+5*g]).high,y^=P.low;var d=h[p];d.high=l,d.low=y}for(p=0;p<5;p++){var v=h[(p+4)%5],m=h[(p+1)%5],S=m.high,_=m.low;for(l=v.high^(S<<1|_>>>31),y=v.low^(_<<1|S>>>31),g=0;g<5;g++)(P=r[p+5*g]).high^=l,P.low^=y}for(var b=1;b<25;b++){var E=(P=r[b]).high,w=P.low,O=f[b];O<32?(l=E< >>=p,c-=p),c<15&&(f+=z[a++]< o){t.msg="invalid distance too far back",E.mode=he;break t}if(f>>>=p,c-=p,p=n-s,v>p){if(p=v-p,p>h&&E.sane){t.msg="invalid distance too far back",E.mode=he;break t}if(y=0,x=_,0===d){if(y+=l-p,p>>0?1:0))+nt+((V+=it)>>>0
>>0?1:0),Ot=vt+gt;G=F,q=z,F=j,z=H,j=U,H=M,U=L+(wt=(wt=(wt=wt+pt+((ht+=lt)>>>0
>>0?1:0)},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,n=8*t.sigBytes;return e[n>>>5]|=128<<24-n%32,e[30+(n+128>>>10<<5)]=Math.floor(r/4294967296),e[31+(n+128>>>10<<5)]=r,t.sigBytes=4*e.length,this._process(),this._hash.toX32()},clone:function(){var t=e.clone.call(this);return t._hash=this._hash.clone(),t},blockSize:32});t.SHA512=e._createHelper(c),t.HmacSHA512=e._createHmacHelper(c)}(),n.SHA512)},7628:function(t,e,r){var n;t.exports=(n=r(9021),r(754),r(4636),r(9506),r(7165),function(){var t=n,e=t.lib,r=e.WordArray,i=e.BlockCipher,o=t.algo,s=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],a=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],f=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],u=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],h=o.DES=i.extend({_doReset:function(){for(var t=this._key.words,e=[],r=0;r<56;r++){var n=s[r]-1;e[r]=t[n>>>5]>>>31-n%32&1}for(var i=this._subKeys=[],o=0;o<16;o++){var u=i[o]=[],c=f[o];for(r=0;r<24;r++)u[r/6|0]|=e[(a[r]-1+c)%28]<<31-r%6,u[4+(r/6|0)]|=e[28+(a[r+24]-1+c)%28]<<31-r%6;for(u[0]=u[0]<<1|u[0]>>>31,r=1;r<7;r++)u[r]=u[r]>>>4*(r-1)+3;u[7]=u[7]<<5|u[7]>>>27}var h=this._invSubKeys=[];for(r=0;r<16;r++)h[r]=i[15-r]},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._subKeys)},decryptBlock:function(t,e){this._doCryptBlock(t,e,this._invSubKeys)},_doCryptBlock:function(t,e,r){this._lBlock=t[e],this._rBlock=t[e+1],p.call(this,4,252645135),p.call(this,16,65535),l.call(this,2,858993459),l.call(this,8,16711935),p.call(this,1,1431655765);for(var n=0;n<16;n++){for(var i=r[n],o=this._lBlock,s=this._rBlock,a=0,f=0;f<8;f++)a|=u[f][((s^i[f])&c[f])>>>0];this._lBlock=s,this._rBlock=o^a}var h=this._lBlock;this._lBlock=this._rBlock,this._rBlock=h,p.call(this,1,1431655765),l.call(this,8,16711935),l.call(this,2,858993459),p.call(this,16,65535),p.call(this,4,252645135),t[e]=this._lBlock,t[e+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function p(t,e){var r=(this._lBlock>>>t^this._rBlock)&e;this._rBlock^=r,this._lBlock^=r<
0)throw Error("Incorrect data or key");for(var r=[],i=0,o=0,s=t.length/this.encryptedDataLength,a=0;a>3},t}()},2487:(t,e,r)=>{var n=r(8287).Buffer,i=(r(1973),r(3200));t.exports={isEncryption:!0,isSignature:!1},t.exports.digestLength={md4:16,md5:16,ripemd160:20,rmd160:20,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64};var o="sha1";t.exports.eme_oaep_mgf1=function(e,r,s){s=s||o;for(var a=t.exports.digestLength[s],f=Math.ceil(r/a),u=n.alloc(a*f),c=n.alloc(4),h=0;h>>8^n[255&(t^e[a])];return-1^t},j={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},K={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:P,_tr_stored_block:Y,_tr_flush_block:G,_tr_tally:X,_tr_align:W}=B,{Z_NO_FLUSH:q,Z_PARTIAL_FLUSH:J,Z_FULL_FLUSH:Q,Z_FINISH:V,Z_BLOCK:$,Z_OK:tt,Z_STREAM_END:et,Z_STREAM_ERROR:at,Z_DATA_ERROR:it,Z_BUF_ERROR:nt,Z_DEFAULT_COMPRESSION:st,Z_FILTERED:rt,Z_HUFFMAN_ONLY:ot,Z_RLE:lt,Z_FIXED:ht,Z_DEFAULT_STRATEGY:dt,Z_UNKNOWN:_t,Z_DEFLATED:ft}=K,ct=258,ut=262,wt=42,mt=113,bt=666,gt=(t,e)=>(t.msg=j[e],e),pt=t=>2*t-(t>4?9:0),kt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},vt=t=>{let e,a,i,n=t.w_size;e=t.hash_size,i=e;do{a=t.head[--i],t.head[i]=a>=n?a-n:0}while(--e);e=n,i=e;do{a=t.prev[--i],t.prev[i]=a>=n?a-n:0}while(--e)};let yt=(t,e,a)=>(e<>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,xt(t.strm),i&&(i>a&&(i=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,a-=i),a&&(Rt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===r);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_watert.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=X(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2})(a,e):It[a.level].func(a,e);if(3!==i&&4!==i||(a.status=bt),1===i||3===i)return 0===t.avail_out&&(a.last_flush=-1),tt;if(2===i&&(e===J?W(a):e!==$&&(Y(a,0,0,!1),e===Q&&(kt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),xt(t),0===t.avail_out))return a.last_flush=-1,tt}return e!==V?tt:a.wrap<=0?et:(2===a.wrap?(At(a,255&t.adler),At(a,t.adler>>8&255),At(a,t.adler>>16&255),At(a,t.adler>>24&255),At(a,255&t.total_in),At(a,t.total_in>>8&255),At(a,t.total_in>>16&255),At(a,t.total_in>>24&255)):(Et(a,t.adler>>>16),Et(a,65535&t.adler)),xt(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?tt:et)},deflateEnd:t=>{if(Lt(t))return at;const e=t.state.status;return t.state=null,e===mt?gt(t,it):tt},deflateSetDictionary:(t,e)=>{let a=e.length;if(Lt(t))return at;const i=t.state,n=i.wrap;if(2===n||1===n&&i.status!==wt||i.lookahead)return at;if(1===n&&(t.adler=C(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(kt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,o=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Ut(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=yt(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,Ut(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=o,t.avail_in=s,i.wrap=n,tt},deflateInfo:"pako deflate (from Nodeca project)"};const Ht=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var jt=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Ht(a,e)&&(t[e]=a[e])}}return t},Kt=t=>{let e=0;for(let a=0,i=t.length;a=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Yt[254]=Yt[254]=1;var Gt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,o=0;for(n=0;n