up
This commit is contained in:
Liu committed 2025-03-13 14:25:37 +08:00
1 parent 9006706d30
commit 1bdc375a8d
56 files changed
+22348 -21340

No files matched your search

+1 -1
View File
@@ -419,7 +419,7 @@
"changeable": 0,
"ext": {
"commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
"siteUrl": "http://wogg.xxooo.cf/",
"siteUrl": "https://www.wogg.one/",
"filter": "./json/wogg.json"
}
},
+8 -1
View File
@@ -5,10 +5,17 @@
"ucToken": "",
"115Cookie": "",
"pwdRb115": "",
//115 删除码
"goServerUrl": "http://127.0.0.1:9966",
"ydAuth": "",
"ydAuth": "cGM6MTg3NzQ5NzMzNjM6YWdkYlRhWGR8MXxSQ1N8MTc0NDM3NDUxNjIxOHxkRnRScENBOFpZdm9EemFmVFNWZVdndlBWa0tSZjdkU3pBdnlkR0s4anZ2VFBlenl6OWVJX1VfNl94V2o1ZUZOSzdtOUtENXIuRHVPOG43RWdmV2lWc1J5YnZiSmF3NjhSMnhuMHlrSzVMd19Vcm0zZTQyOExUblFfTW1lMVRNNjIxdWRIa2U1NUJTdC5yMk1NbTc5RkxQZDAubHluMjFvVkNwa1FDTWNtYVkt",
//请求头中authorization 取basic 后面的值
"tyAuth": "18774973363@189.cn|Abc147369+",
//账号|密码
"p123Auth":"",
//账号|密码
"proxy": "http://127.0.0.1:1072",
//默认代理端口 留空则使用外置代理
"tgPic": "false",
//tgsou 图片显示与否
"danmu": "true"
}
-15
View File
@@ -9,18 +9,15 @@ CCTV2,http://121.232.178.75:60001/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&
CCTV2,http://116.117.105.236:8096/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路183』
CCTV2,http://116.117.105.71:8096/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路184』
CCTV2,http://116.117.105.96:8096/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路185』
CCTV2,http://220.202.110.48:9003/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路186』
CCTV3,http://110.7.131.129:8096/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路160』
CCTV3,http://121.232.178.75:60001/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路163』
CCTV3,http://116.117.105.236:8096/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路165』
CCTV3,http://116.117.105.71:8096/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路166』
CCTV3,http://116.117.105.96:8096/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路167』
CCTV3,http://220.202.110.48:9003/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路168』
CCTV4,http://110.7.131.129:8096/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路186』
CCTV4,http://116.117.105.236:8096/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路190』
CCTV4,http://116.117.105.71:8096/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路191』
CCTV4,http://116.117.105.96:8096/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路192』
CCTV4,http://220.202.110.48:9003/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路193』
CCTV5,http://110.7.131.129:8096/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路201』
CCTV5,http://116.117.105.236:8096/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路205』
CCTV5,http://116.117.105.71:8096/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路206』
@@ -72,13 +69,9 @@ CCTV14,http://116.117.105.71:8096/tsfile/live/0014_1.m3u8?key=txiptv&playlive=1&
CCTV14,http://116.117.105.96:8096/tsfile/live/0014_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路184』
CCTV15,http://113.57.93.165:9900/tsfile/live/0015_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路30』
CCTV15,http://123.130.84.106:8154/tsfile/live/0015_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路32』
CCTV15,http://101.66.199.239:9901/tsfile/live/0015_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4『线路34』
CCTV15,http://180.213.174.225:9901/tsfile/live/0015_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路35』
CCTV15,http://113.57.20.158:9901/tsfile/live/1034_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路36』
CCTV16,http://219.159.194.194:8181/tsfile/live/faacts/1111_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路87』
CCTV16,http://58.221.214.82:9901/tsfile/live/0002_2.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路88』
CCTV16,http://59.173.243.210:9901/tsfile/live/1036_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路89』
CCTV17,http://219.159.194.194:8181/tsfile/live/1115_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路129』
CCTV17,http://58.221.214.82:9901/tsfile/live/0003_2.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路130』
CCTV17,http://183.223.157.33:9901/tsfile/live/0016_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路132』
CCTV1,http://60.7.56.33:4000/rtp/239.253.92.83:8012$1920x1080
@@ -102,20 +95,14 @@ CCTV15,http://61.156.228.12:8154/tsfile/live/0015_1.m3u8
北京卫视,http://61.156.228.12:8154/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路83』
北京卫视,http://123.129.70.178:9901/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路88』
江苏卫视,http://124.128.73.58:9901/tsfile/live/0127_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路95』
江苏卫视,http://202.100.46.58:9901/tsfile/live/1020_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路96』
安徽卫视,http://123.129.70.178:9901/tsfile/live/0130_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路73』
安徽卫视,http://61.136.172.236:9901/tsfile/live/0130_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路75』
安徽卫视,http://61.156.228.12:8154/tsfile/live/0130_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路76』
安徽卫视,http://202.100.46.58:9901/tsfile/live/1028_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路80』
重庆卫视,http://61.156.228.12:8154/tsfile/live/0142_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路71』
四川卫视,http://61.156.228.12:8154/tsfile/live/0123_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路57』
四川卫视,http://202.100.46.58:9901/tsfile/live/1027_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路62』
东南卫视,http://202.100.46.58:9901/tsfile/live/1031_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路74』
深圳卫视,http://202.100.46.58:9901/tsfile/live/1024_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路67』
深圳卫视,http://123.129.70.178:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路68』
广东卫视,http://123.129.70.178:9901/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路88』
广西卫视,http://61.136.172.236:9901/tsfile/live/0113_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路54』
厦门卫视,http://202.100.46.58:9901/tsfile/live/1040_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路26』
厦门卫视,http://31182.hlsplay.aodianyun.com/lms_31182/tv_channel_175.m3u8?zfud$LR•IPV4『线路30』
南方卫视,http://114.252.238.87:8000/udp/239.3.1.161:8001$LR•IPV4『线路3』
湖南卫视,http://110.7.131.129:8096/tsfile/live/0128_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路113』
@@ -172,8 +159,6 @@ CCTV15,http://61.156.228.12:8154/tsfile/live/0015_1.m3u8
三沙卫视,https://pullsstv90080111.ssws.tv/live/SSTV20220729.m3u8
青海卫视,http://stream.qhbtv.com/qhws/sd/live.m3u8?_upt=f35a89681647856030
青海卫视,http://stream.qhbtv.com/qhws/sd/live.m3u8?_upt=63cf437e1591689484
康巴卫视,http://111.202.12.159:8080/kYGHWzA/1000/live.m3u8
康巴卫视,http://111.202.12.159:8080/3zvkK28/1000/live.m3u8
延边卫视,http://live.ybtvyun.com/video/s10016-7e5f23de35df/index.m3u8
深圳卫视,http://api3.52tb.xyz/info?id=28&token=20230227aesvnb
东南卫视,http://api3.52tb.xyz/info?id=29&token=20230227aesvnb
BIN
View File
Binary file not shown.
+88 -100
View File
@@ -121,106 +121,94 @@ https://tv.iill.top/migu/dds
https://tv.iill.top/migu/mgty
#INSERT_HERE
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「德甲」03:20 联赛 门兴格拉德巴赫 vs 美因茨 吴子越
https://tv.iill.top/FB/lTFD1I
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「意甲」03:35 联赛 卡利亚里 vs 热那亚 吴奕博
https://tv.iill.top/FB/b0SzvG
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「法甲」03:35 联赛 图卢兹 vs 摩纳哥 邵煊
https://tv.iill.top/FB/w7aUUP
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「英超」20:15 联赛 诺丁汉森林 vs 曼城 詹俊 张路 李子琪
https://tv.iill.top/FB/kR9P45
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「西甲」20:50 联赛 塞尔塔 vs 莱加内斯 周楚雄
https://tv.iill.top/FB/DLCcdc
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「意甲」21:50 联赛 科莫 vs 威尼斯 乔迁
https://tv.iill.top/FB/6JWzKe
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「意甲」21:50 联赛 帕尔马 vs 都灵 张昊泽
https://tv.iill.top/FB/BUgD8S
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「德甲」22:15 联赛 多特蒙德 vs 奥格斯堡 沈云怡 秦游夏
https://tv.iill.top/FB/840zGD
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「德甲」22:20 联赛 沃尔夫斯堡 vs 圣保利 刘洋
https://tv.iill.top/FB/KLIbv9
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「德甲」22:20 联赛 勒沃库森 vs 不来梅 涂远 马延峰
https://tv.iill.top/FB/8kDrlo
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「德甲」22:20 联赛 勒沃库森 vs 不来梅 涂远 马延峰
https://tv.iill.top/FB/Z8WT25
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「德甲」22:15 联赛 拜仁慕尼黑 vs 波鸿 胡小凡 张力
https://tv.iill.top/FB/Dqaf7Q
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「德甲」22:20 联赛 荷尔斯泰因基尔 vs 斯图加特 谭逸雄
https://tv.iill.top/FB/W5RMAh
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「英超」22:50 联赛 水晶宫 vs 伊普斯维奇 郭灿亮
https://tv.iill.top/FB/IR8afF
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「英超」22:50 联赛 布莱顿 vs 富勒姆 苗锟
https://tv.iill.top/FB/gqXB0B
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「英超」22:45 联赛 利物浦 vs 南安普敦 刘畅 颜强
https://tv.iill.top/FB/5L2rm9
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「西甲」23:05 联赛 阿拉维斯 vs 比利亚雷亚尔 孙雨轩
https://tv.iill.top/FB/3mFvRn
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「法甲」23:45 联赛 雷恩 vs 巴黎圣日耳曼 鹿中原 王宇
https://tv.iill.top/FB/KuG1lI
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」07:55 常规赛 骑士VS黄蜂 金哲豪
https://tv.iill.top/NBA/yHVEX5
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」08:25 常规赛 灰熊VS独行侠 连睿 刘铁
https://tv.iill.top/NBA/iiyHEI
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」08:25 常规赛 爵士VS猛龙 刘沛元
https://tv.iill.top/NBA/WIjXTi
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」08:55 常规赛 开拓者VS雷霆 罗森
https://tv.iill.top/NBA/WuIL36
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」08:55 常规赛 森林狼VS热火 张浩岳 郭维盛
https://tv.iill.top/NBA/8Y5jeZ
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」10:45 常规赛 太阳VS掘金 杨健 孙悦 裴优
https://tv.iill.top/NBA/1K1pBz
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」10:55 常规赛 马刺VS国王 王晓晨 孔德昕
https://tv.iill.top/NBA/lQMkx2
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」11:15 常规赛 尼克斯VS快船 李天宇 陈正昊 魏欣怡
https://tv.iill.top/NBA/AO0YVZ
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTA」03:00 郑钦文开门红 米拉、斯瓦泰克携手晋级 郑钦文开门红 米拉、斯瓦泰克携手晋级 赛场原声
https://tv.iill.top/Migu/0jA6lE
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「UFC前瞻与回顾」10:00 UFC激战前夜:盖奇VS斐济耶夫特辑 UFC激战前夜:盖奇VS斐济耶夫特辑 陈瑞阳
https://tv.iill.top/Migu/FzpEhe
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「KPL」13:40 北京JDG vs 上海RNG.M 北京JDG vs 上海RNG.M 官方解说
https://tv.iill.top/Migu/qCGIOZ
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「中女超」14:20 中女超联赛 山东体彩女足VS江苏无锡女足 清流
https://tv.iill.top/Migu/Prl2co
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「KPL」17:00 北京WB vs 西安WE 北京WB vs 西安WE 官方解说
https://tv.iill.top/Migu/8TKfxu
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「UFC前瞻与回顾」18:30 UFC激战前夜:佩雷拉VS安卡拉耶夫特辑 UFC激战前夜:佩雷拉VS安卡拉耶夫特辑 王琰博
https://tv.iill.top/Migu/ztw4SD
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「斯诺克」13:00 特鲁姆普PK宾汉姆 罗伯逊6-5逆转墨菲 特鲁姆普PK宾汉姆 罗伯逊6-5逆转墨菲 1号桌
https://tv.iill.top/Migu/IjhydR
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WCBA」19:20 1/4决赛 江苏南钢 VS 四川蜀道远达 解说
https://tv.iill.top/Migu/FBklCu
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WCBA」19:20 1/4决赛 山东赤水河酒 VS 东莞新彤盛 解说
https://tv.iill.top/Migu/JhD4CL
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WCBA」19:20 1/4决赛 上海浦发银行 VS 山西竹叶青酒 解说
https://tv.iill.top/Migu/x9IoK7
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:20 常规赛第37轮 北京控股vs山东高速 连睿 丁伟
https://tv.iill.top/Migu/bc17dp
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:00 常规赛第37轮 北京控股vs山东高速 江苏vs新疆
https://tv.iill.top/Migu/DCX0HZ
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第37轮 北京控股vs山东高速 周赫
https://tv.iill.top/Migu/5nz56W
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第37轮 北京控股vs山东高速 罗森
https://tv.iill.top/Migu/tWLPR7
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第37轮 北京控股vs山东高速 现场原声
https://tv.iill.top/Migu/hgUySo
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:20 常规赛第37轮 北京控股vs山东高速 星际广场
https://tv.iill.top/Migu/AfTjZ9
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:00 常规赛第37轮 广州朗肽海本vs深圳马可波罗 刘圳展
https://tv.iill.top/Migu/uFKvKa
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:00 常规赛第37轮 广州朗肽海本vs深圳马可波罗 浙江vs天津
https://tv.iill.top/Migu/fxMTba
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第37轮 广州朗肽海本vs深圳马可波罗 现场原声
https://tv.iill.top/Migu/nZo4hM
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:50 常规赛第37轮 江苏肯帝亚vs新疆伊力特 新疆vs内蒙古
https://tv.iill.top/Migu/IwULEW
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第37轮 江苏肯帝亚vs新疆伊力特 盛哲
https://tv.iill.top/Migu/WNN4VZ
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第37轮 江苏肯帝亚vs新疆伊力特 现场原声
https://tv.iill.top/Migu/2qWRhQ
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第37轮 浙江稠州金租vs天津先行者 现场原声
https://tv.iill.top/Migu/crRSvz
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「KPL」20:00 成都AG超玩会 vs 上海EDG.M 成都AG超玩会 vs 上海EDG.M 官方解说
https://tv.iill.top/Migu/TNJilw
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「亚冠二级」03:50 1/4决赛 布赖代合作 vs 大不里士拖拉机 王子睿
https://tv.iill.top/FB/v3aHzQ
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「亚冠精英」03:50 八分之一决赛 吉达国民 vs 赖扬 鲁靖明
https://tv.iill.top/FB/rLWhmX
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「亚冠精英」03:50 八分之一决赛 利雅得新月 vs 塔什干棉农 张昊泽
https://tv.iill.top/FB/WbJMGp
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「亚冠精英」17:50 八分之一决赛 光州 vs 神户胜利船 周楚雄
https://tv.iill.top/FB/1Tg3G3
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「亚冠精英」17:45 八分之一决赛 川崎前锋 vs 上海申花 涂远 马延峰 孙蕊
https://tv.iill.top/FB/kpUyUM
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「亚冠二级」19:50 1/4决赛 本国联队 vs 广岛三箭 盛斌
https://tv.iill.top/FB/jeQNDY
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」06:55 常规赛 篮网VS骑士 孔德昕
https://tv.iill.top/NBA/NVI12E
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」06:55 常规赛 奇才VS活塞 王凯
https://tv.iill.top/NBA/SrC7FA
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」07:25 常规赛 雄鹿VS步行者 季孟年
https://tv.iill.top/NBA/E0nHEy
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」07:45 常规赛 快船VS鹈鹕 王冠证 徐咏 王羽希
https://tv.iill.top/NBA/CYEKc6
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTA」02:00 郑钦文2-0科斯秋克 斯瓦泰克轻松晋级 郑钦文2-0科斯秋克 斯瓦泰克轻松晋级 赛场原声
https://tv.iill.top/Migu/cuQP6X
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTT」09:30 【训练馆视角】直击国乒赛前训练 【训练馆视角】直击国乒赛前训练 训练馆
https://tv.iill.top/Migu/wc86sJ
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「中女超」14:50 中女超 武汉车谷江大女足VS北京东方雨虹女足 清流播出
https://tv.iill.top/Migu/8HErNT
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「英雄联盟全球先锋赛」15:30 CFO vs HLE CFO vs HLE 官方解说
https://tv.iill.top/Migu/uh3Wov
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「KPL」16:40 上海RNG.M vs 情久 上海RNG.M vs 情久 官方解说
https://tv.iill.top/Migu/wpeaX7
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「英雄联盟全球先锋赛」17:45 KC vs TES KC vs TES 官方解说
https://tv.iill.top/Migu/q0GDo4
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTT」17:30 王曼昱迎战迪亚兹 莫雷加德VS格罗特 王曼昱迎战迪亚兹 莫雷加德VS格罗特 小马哥 周冠达
https://tv.iill.top/Migu/b6cMDK
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTT」18:30 王曼昱迎战迪亚兹 莫雷加德VS格罗特 王曼昱迎战迪亚兹 莫雷加德VS格罗特 周雨
https://tv.iill.top/Migu/4qYtIQ
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTT」11:00 王曼昱迎战迪亚兹 莫雷加德VS格罗特 王曼昱迎战迪亚兹 莫雷加德VS格罗特 赛场原声
https://tv.iill.top/Migu/J1OaKJ
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTT」11:00 王曼昱迎战迪亚兹 莫雷加德VS格罗特 王曼昱迎战迪亚兹 莫雷加德VS格罗特 混采区
https://tv.iill.top/Migu/QNhjPM
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTT」11:00 王曼昱迎战迪亚兹 莫雷加德VS格罗特 王曼昱迎战迪亚兹 莫雷加德VS格罗特 英文解说
https://tv.iill.top/Migu/ERQniU
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTT」17:30 王曼昱迎战迪亚兹 莫雷加德VS格罗特 王曼昱迎战迪亚兹 莫雷加德VS格罗特 狂欢Yeah
https://tv.iill.top/Migu/oG1Jwu
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WCBA」19:20 排位赛 北京首钢园 VS 黑龙江上东 解说
https://tv.iill.top/Migu/xPHQMz
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WCBA」19:20 排位赛 石家庄英励 VS 河南豫光金铅 解说
https://tv.iill.top/Migu/mWKK8C
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WCBA」19:20 排位赛 福建晋江众腾 VS 武汉盛帆黄鹤 解说
https://tv.iill.top/Migu/yI8pXy
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WCBA」19:20 排位赛 浙江稠州银行 VS 陕西天泽 解说
https://tv.iill.top/Migu/M26Tib
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:15 常规赛第39轮 上海久事vs浙江稠州金租 李天宇 张兆旭
https://tv.iill.top/Migu/qP4kmR
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第39轮 上海久事vs浙江稠州金租 张俊卿
https://tv.iill.top/Migu/BOPnf3
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第39轮 上海久事vs浙江稠州金租 金哲豪
https://tv.iill.top/Migu/Tr0SJW
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第39轮 上海久事vs浙江稠州金租 现场原声
https://tv.iill.top/Migu/lzcoUz
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:00 常规赛第39轮 天津先行者vs广州朗肽海本 张浩岳
https://tv.iill.top/Migu/vWffR7
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第39轮 天津先行者vs广州朗肽海本 现场原声
https://tv.iill.top/Migu/DMIoit
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:00 常规赛第39轮 广东东阳光vs四川丰谷酒业 蔡凯臣
https://tv.iill.top/Migu/qtGb9n
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第39轮 广东东阳光vs四川丰谷酒业 翻译小余
https://tv.iill.top/Migu/DRjKhu
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第39轮 广东东阳光vs四川丰谷酒业 字诚
https://tv.iill.top/Migu/nRgkvZ
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第39轮 广东东阳光vs四川丰谷酒业 3D全真视频
https://tv.iill.top/Migu/bO5WOg
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第39轮 广东东阳光vs四川丰谷酒业 现场原声
https://tv.iill.top/Migu/IJfVRL
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:00 常规赛第39轮 福建晋江文旅vs宁波町渥 吴博文
https://tv.iill.top/Migu/EpLuTF
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第39轮 福建晋江文旅vs宁波町渥 现场原声
https://tv.iill.top/Migu/vyD0a3
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:15 常规赛第39轮 北京北汽vs青岛国信制药 连睿 李根
https://tv.iill.top/Migu/nz0BbA
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第39轮 北京北汽vs青岛国信制药 现场原声
https://tv.iill.top/Migu/btjkRQ
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:30 常规赛第39轮 新疆伊力特vs深圳马可波罗 刘圳展
https://tv.iill.top/Migu/WSotuL
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:50 常规赛第39轮 新疆伊力特vs深圳马可波罗 现场原声
https://tv.iill.top/Migu/OCe9FP
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「KPL」20:00 济南RW侠 vs 佛山DRG 济南RW侠 vs 佛山DRG 官方解说
https://tv.iill.top/Migu/PLNMZL
#EXTINF:-1 tvg-id="凤凰中文" tvg-name="凤凰中文" tvg-logo="https://epg.iill.top/logo/凤凰中文.png" http-user-agent="FengWatch/5.4.14" group-title="•港澳「限制」",鳳凰衛視·中文「限UA」
http://dns.yiandrive.com:15907/phenix/fhzw
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+118 -109
View File
@@ -35,17 +35,12 @@
"jar": "http://127.0.0.1:9978/file/TVBoxOSC/本地仓/wex.jar"
},
{
"key": "配置中心",
"name": "配置|中心",
"key": "config",
"name": "《配置┃中心》",
"type": 3,
"api": "csp_Config",
"searchable": 0,
"changeable": 0,
"indexs": 0,
"style": {
"type": "rect",
"ratio": 1.597
}
"jar": "./jars/config.jar",
"playerType": 2
},
{
"key": "网络直播",
@@ -133,6 +128,18 @@
"jar": "./jars/csp_Jpys.jar",
"api": "csp_JpysGuard"
},
{
"key": "机器人弹幕",
"name": "《人机🔹弹幕》",
"type": 3,
"api": "csp_Ikanbot",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": {
"danmu": true
}
},
{
"key": "量子",
"name": "《量子🔹秒播》",
@@ -243,6 +250,14 @@
"quickSearch": 1,
"filterable": 1
},
{
"key": "小米电影",
"name": "《小米🔹蓝光》",
"type": 3,
"searchable": 1,
"quickSearch": 1,
"api": "csp_MovieApp"
},
{
"key": "剧圈圈",
"name": "《剧圈🔹影院》",
@@ -250,6 +265,34 @@
"api": "./api/drpy2.min.js",
"ext": "./js/剧圈圈.js"
},
{
"key": "腾讯弹幕",
"name": "《腾翼🔹天翔》",
"type": 3,
"api": "./api/drpy2.min.js",
"ext": "./js/腾翼弹幕.js"
},
{
"key": "优酷弹幕",
"name": "《悠悠🔹岁月》",
"type": 3,
"api": "./api/drpy2.min.js",
"ext": "./js/悠悠弹幕.js"
},
{
"key": "芒果弹幕",
"name": "《茫茫🔹人海》",
"type": 3,
"api": "./api/drpy2.min.js",
"ext": "./js/茫茫弹幕.js"
},
{
"key": "爱奇艺弹幕",
"name": "《爱在🔹心意》",
"type": 3,
"api": "./api/drpy2.min.js",
"ext": "./js/爱在弹幕.js"
},
{
"key": "UC",
"name": "《优汐💿盘搜4K》",
@@ -283,10 +326,10 @@
},
{
"key": "csp_FeiMaoUC",
"name": "《闪电💿优汐4K》",
"name": "《闪电💿UC盘4K》",
"type": 3,
"api": "csp_Duopan",
"jar": "./jars/csp_FeiMaoUC.jar",
"jar": "./jars/config.jar",
"filterable": 1,
"ext": {
"site_urls": [
@@ -295,6 +338,63 @@
"url_key": "FeiMaoUC"
}
},
{
"key": "csp_XMUC",
"name": "《小米💿UC盘4K》",
"type": 3,
"api": "csp_Duopan",
"jar": "./jars/config.jar",
"filterable": 1,
"ext": {
"site_urls": [
"http://www.mucpan.cc",
"https://milvdou.fun",
"https://54271.fun"
],
"url_key": "XMUC"
}
},
{
"key": "csp_Duopan",
"name": "《蜡笔💿网盘4K》",
"type": 3,
"api": "csp_Duopan",
"jar": "./jars/config.jar",
"filterable": 1,
"ext": {
"site_urls": [
"https://feimao666.fun",
"http://feimao888.fun",
"http://feimaoai.site",
"http://www.labi88.sbs"
],
"url_key": "Duopan2"
}
},
{
"key": "csp_Netfixtv",
"name": "《至臻💿网盘4K》",
"type": 3,
"api": "csp_Duopan",
"jar": "./jars/config.jar",
"filterable": 1,
"ext": {
"site_urls": [
"http://xiaomi666.fun",
"https://xiaomiai.site",
"http://www.miqk.cc",
"https://mihdr.top"
],
"url_key": "Netfixtv2",
"token": "",
"ucCookie": "",
"quarkCookie": "",
"threadinfo": {
"chunksize": 450,
"threads": 10
}
}
},
{
"key": "雷鲸",
"name": "《天翼💿网盘4K》",
@@ -305,20 +405,13 @@
"jar": "http://127.0.0.1:9978/file/TVBoxOSC/本地仓/wex.jar"
},
{
"key": "夸克多多弹幕",
"name": "《多多💿网盘4K》",
"key": "盘他",
"name": "《移动💿网盘4K》",
"type": 3,
"api": "csp_Wobg",
"quickSearch": 1,
"api": "csp_WexYDpanta",
"searchable": 1,
"changeable": 1,
"filterable": 1,
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
"site": "https://tv.yydsys.top",
"danmu": true
}
"jar": "http://127.0.0.1:9978/file/TVBoxOSC/本地仓/wex.jar"
},
{
"key": "小米尘落",
@@ -1135,33 +1228,8 @@
},
{
"name": "解析1",
"type": "1",
"url": "https://zy.qiaoji8.com/gouzi.php?url=",
"ext": {
"flag": [
"qq",
"腾讯",
"qiyi",
"爱奇艺",
"奇艺",
"youku",
"优酷",
"sohu",
"搜狐",
"letv",
"乐视",
"mgtv",
"芒果",
"芒果TV",
"tnmb",
"seven",
"bilibili",
"1905"
],
"header": {
"User-Agent": "okhttp/4.9.1"
}
}
"type": 0,
"url": "https://www.8090g.cn/?url="
},
{
"name": "解析2",
@@ -1198,65 +1266,6 @@
}
}
},
{
"name": "解析4",
"type": 0,
"url": "https://jx.m3u8.tv/jiexi/?url=",
"ext": {
"flag": [
"qq",
"腾讯",
"qiyi",
"爱奇艺",
"奇艺",
"youku",
"优酷",
"sohu",
"搜狐",
"letv",
"乐视",
"mgtv",
"芒果",
"芒果TV",
"tnmb",
"seven",
"bilibili",
"1905"
],
"header": {
"User-Agent": "okhttp/4.9.1"
}
}
},
{
"name": "解析0",
"type": 1,
"url": "http://1.94.221.189:88/algorithm.php?url=",
"ext": {
"flag": [
"公众号:天微科技",
"qq",
"腾讯",
"qiyi",
"爱奇艺",
"奇艺",
"youku",
"优酷",
"sohu",
"搜狐",
"letv",
"乐视",
"芒果",
"tnmb",
"seven",
"bilibili",
"1905"
],
"header": {
"User-Agent": "okhttp/4.9.1"
}
}
},
{
"name": "解析5",
"type": 0,
Binary file not shown.
Binary file not shown.
View File
Whitespace-only changes.
Binary file not shown.
+12
View File
@@ -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(2):lt(8);a&&Text;a&&href;.*/(.*?)\.html',
cate_exclude: '今日更新|热榜',
}
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+842
View File
@@ -0,0 +1,842 @@
var rule = {
title: '腾云驾雾[官]',
host: 'https://v.%71%71.com',
// homeUrl: '/x/bu/pagesheet/list?_all=1&append=1&channel=choice&listpage=1&offset=0&pagesize=21&iarea=-1&sort=18',
homeUrl: '/x/bu/pagesheet/list?_all=1&append=1&channel=cartoon&listpage=1&offset=0&pagesize=21&iarea=-1&sort=18',
detailUrl: 'https://node.video.%71%71.com/x/api/float_vinfo2?cid=fyid',
searchUrl: '/x/search/?q=**&stag=fypage',
searchUrl: 'https://pbaccess.video.%71%71.com/trpc.videosearch.smartboxServer.HttpRountRecall/Smartbox?query=**&appID=3172&appKey=lGhFIPeD3HsO9xEp&pageNum=(fypage-1)&pageSize=10',
searchable: 2,
filterable: 1,
multi: 1,
// url:'/channel/fyclass?listpage=fypage&channel=fyclass&sort=18&_all=1',
url: '/x/bu/pagesheet/list?_all=1&append=1&channel=fyclass&listpage=1&offset=((fypage-1)*21)&pagesize=21&iarea=-1',
// filter_url: 'sort={{fl.sort or 18}}&year={{fl.year}}&pay={{fl.pay}}',
// filter_url: 'sort={{fl.sort or 75}}&year={{fl.year}}&pay={{fl.pay}}',
filter_url: 'sort={{fl.sort or 75}}&iyear={{fl.iyear}}&year={{fl.year}}&itype={{fl.type}}&ifeature={{fl.feature}}&iarea={{fl.area}}&itrailer={{fl.itrailer}}&gender={{fl.sex}}',
// filter: 'H4sIAAAAAAAAA+2UzUrDQBCA32XOEZLUJrGvIj0saaDBNisxBkIJCG3Fi4oepIg3EQoieqiH+vM23Zq+hRuaZLZ4ce9z2/lmd2d2+NgR+H0e+gF0DkdwFGTQgRMeJ2BAxIaSwvrqVnxcyzhlg9PttqjED2c/45cSy8DyIDcavr57q/lBw8XTd/E6qbnT8M3zTFyc72RtC/Jumd+2c8wy7KZ4nxSL5Z9uxHS+Gc+r83sWVp1eVttl4Dluk1h93YubWZVwduplAYuxoFguVp+P/y5om/Z+/YxyqfAW8pbKbeS2yi3kO/ebyE2Fy1nXXBm7DDzknspd5K7KHeSOytvI2+XAugYkKWlD2mhrM+RpSB8OmaNvTsriMEgycofc0XbHZ3HCeUTukDv67vTDQY/MIXO0zelxn5M4JI6mOPkvgswSEpgPAAA=',
filter: {
"choice": [{
"key": "sort",
"name": "排序",
"value": [{
"n": "最热",
"v": "75"
}, {
"n": "最新",
"v": "83"
}, {
"n": "好评",
"v": "81"
}]
}, {
"key": "iyear",
"name": "年代",
"value": [{
"n": "全部",
"v": "-1"
}, {
"n": "2025",
"v": "2025"
}, {
"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"
}]
}],
"tv": [{
"key": "sort",
"name": "排序",
"value": [{
"n": "最热",
"v": "75"
}, {
"n": "最新",
"v": "79"
}, {
"n": "好评",
"v": "16"
}]
}, {
"key": "feature",
"name": "类型",
"value": [{
"n": "全部",
"v": "-1"
}, {
"n": "爱情",
"v": "1"
}, {
"n": "古装",
"v": "2"
}, {
"n": "悬疑",
"v": "3"
}, {
"n": "都市",
"v": "4"
}, {
"n": "家庭",
"v": "5"
}, {
"n": "喜剧",
"v": "6"
}, {
"n": "传奇",
"v": "7"
}, {
"n": "武侠",
"v": "8"
}, {
"n": "军旅",
"v": "9"
}, {
"n": "权谋",
"v": "10"
}, {
"n": "革命",
"v": "11"
}, {
"n": "现实",
"v": "13"
}, {
"n": "青春",
"v": "14"
}, {
"n": "猎奇",
"v": "15"
}, {
"n": "科幻",
"v": "16"
}, {
"n": "竞技",
"v": "17"
}, {
"n": "玄幻",
"v": "18"
}]
}, {
"key": "iyear",
"name": "年代",
"value": [{
"n": "全部",
"v": "-1"
}, {
"n": "2025",
"v": "2025"
}, {
"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"
}]
}],
"movie": [{
"key": "sort",
"name": "排序",
"value": [{
"n": "最热",
"v": "75"
}, {
"n": "最新",
"v": "83"
}, {
"n": "好评",
"v": "81"
}]
}, {
"key": "type",
"name": "类型",
"value": [{
"n": "全部",
"v": "-1"
}, {
"n": "犯罪",
"v": "4"
}, {
"n": "励志",
"v": "2"
}, {
"n": "喜剧",
"v": "100004"
}, {
"n": "热血",
"v": "100061"
}, {
"n": "悬疑",
"v": "100009"
}, {
"n": "爱情",
"v": "100005"
}, {
"n": "科幻",
"v": "100012"
}, {
"n": "恐怖",
"v": "100010"
}, {
"n": "动画",
"v": "100015"
}, {
"n": "战争",
"v": "100006"
}, {
"n": "家庭",
"v": "100017"
}, {
"n": "剧情",
"v": "100022"
}, {
"n": "奇幻",
"v": "100016"
}, {
"n": "武侠",
"v": "100011"
}, {
"n": "历史",
"v": "100021"
}, {
"n": "老片",
"v": "100013"
}, {
"n": "西部",
"v": "3"
}, {
"n": "记录片",
"v": "100020"
}]
}, {
"key": "year",
"name": "年代",
"value": [{
"n": "全部",
"v": "-1"
}, {
"n": "2025",
"v": "2025"
}, {
"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"
}]
}],
"variety": [{
"key": "sort",
"name": "排序",
"value": [{
"n": "最热",
"v": "75"
}, {
"n": "最新",
"v": "23"
}]
}, {
"key": "iyear",
"name": "年代",
"value": [{
"n": "全部",
"v": "-1"
}, {
"n": "2025",
"v": "2025"
}, {
"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"
}]
}],
"cartoon": [{
"key": "sort",
"name": "排序",
"value": [{
"n": "最热",
"v": "75"
}, {
"n": "最新",
"v": "83"
}, {
"n": "好评",
"v": "81"
}]
}, {
"key": "area",
"name": "地区",
"value": [{
"n": "全部",
"v": "-1"
}, {
"n": "内地",
"v": "1"
}, {
"n": "日本",
"v": "2"
}, {
"n": "欧美",
"v": "3"
}, {
"n": "其他",
"v": "4"
}]
}, {
"key": "type",
"name": "类型",
"value": [{
"n": "全部",
"v": "-1"
}, {
"n": "玄幻",
"v": "9"
}, {
"n": "科幻",
"v": "4"
}, {
"n": "武侠",
"v": "13"
}, {
"n": "冒险",
"v": "3"
}, {
"n": "战斗",
"v": "5"
}, {
"n": "搞笑",
"v": "1"
}, {
"n": "恋爱",
"v": "7"
}, {
"n": "魔幻",
"v": "6"
}, {
"n": "竞技",
"v": "20"
}, {
"n": "悬疑",
"v": "17"
}, {
"n": "日常",
"v": "15"
}, {
"n": "校园",
"v": "16"
}, {
"n": "真人",
"v": "18"
}, {
"n": "推理",
"v": "14"
}, {
"n": "历史",
"v": "19"
}, {
"n": "经典",
"v": "3"
}, {
"n": "其他",
"v": "12"
}]
}, {
"key": "iyear",
"name": "年代",
"value": [{
"n": "全部",
"v": "-1"
}, {
"n": "2025",
"v": "2025"
}, {
"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"
}]
}],
"child": [{
"key": "sort",
"name": "排序",
"value": [{
"n": "最热",
"v": "75"
}, {
"n": "最新",
"v": "76"
}, {
"n": "好评",
"v": "20"
}]
}, {
"key": "sex",
"name": "性别",
"value": [{
"n": "全部",
"v": "-1"
}, {
"n": "女孩",
"v": "1"
}, {
"n": "男孩",
"v": "2"
}]
}, {
"key": "area",
"name": "地区",
"value": [{
"n": "全部",
"v": "-1"
}, {
"n": "内地",
"v": "3"
}, {
"n": "日本",
"v": "2"
}, {
"n": "其他",
"v": "1"
}]
}, {
"key": "iyear",
"name": "年龄段",
"value": [{
"n": "全部",
"v": "-1"
}, {
"n": "0-3岁",
"v": "1"
}, {
"n": "4-6岁",
"v": "2"
}, {
"n": "7-9岁",
"v": "3"
}, {
"n": "10岁以上",
"v": "4"
}, {
"n": "全年龄段",
"v": "7"
}]
}],
"doco": [{
"key": "sort",
"name": "排序",
"value": [{
"n": "最热",
"v": "75"
}, {
"n": "最新",
"v": "74"
}]
}, {
"key": "itrailer",
"name": "出品方",
"value": [{
"n": "全部",
"v": "-1"
}, {
"n": "BBC",
"v": "1"
}, {
"n": "国家地理",
"v": "4"
}, {
"n": "HBO",
"v": "3175"
}, {
"n": "NHK",
"v": "2"
}, {
"n": "历史频道",
"v": "7"
}, {
"n": "ITV",
"v": "3530"
}, {
"n": "探索频道",
"v": "3174"
}, {
"n": "ZDF",
"v": "3176"
}, {
"n": "腾讯自制",
"v": "15"
}, {
"n": "合作机构",
"v": "6"
}, {
"n": "其他",
"v": "5"
}]
}, {
"key": "type",
"name": "类型",
"value": [{
"n": "全部",
"v": "-1"
}, {
"n": "自然",
"v": "4"
}, {
"n": "美食",
"v": "10"
}, {
"n": "社会",
"v": "3"
}, {
"n": "人文",
"v": "6"
}, {
"n": "历史",
"v": "1"
}, {
"n": "军事",
"v": "2"
}, {
"n": "科技",
"v": "8"
}, {
"n": "财经",
"v": "14"
}, {
"n": "探险",
"v": "15"
}, {
"n": "罪案",
"v": "7"
}, {
"n": "竞技",
"v": "12"
}, {
"n": "旅游",
"v": "11"
}]
}]
},
headers: {
'User-Agent': 'PC_UA'
},
timeout: 5000,
// class_parse:'.site_channel a;a&&Text;a&&href;channel/(.*)',
cate_exclude: '会员|游戏|全部',
// class_name: '精选&电视剧&电影&综艺&动漫&少儿&纪录片',
// class_url: 'choice&tv&movie&variety&cartoon&child&doco',
class_name: '精选&电影&电视剧&综艺&动漫&少儿&纪录片',
class_url: 'choice&movie&tv&variety&cartoon&child&doco',
limit: 20,
// play_parse:true,
// 手动调用解析请求json的url,此lazy不方便
play_parse: true,
lazy: $js.toString(() => {
try {
let api = "" + input.split("?")[0];
console.log(api);
let response = fetch(api, {
method: 'get',
headers: {
'User-Agent': 'okhttp/3.14.9',
'Content-Type': 'application/x-www-form-urlencoded'
}
});
let bata = JSON.parse(response);
if (bata.url.includes("qq")) {
input = {
parse: 0,
url: bata.url,
jx: 0,
danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
};
} else {
input = {
parse: 0,
url: input.split("?")[0],
jx: 1,
danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
};
}
} catch {
input = {
parse: 0,
url: input.split("?")[0],
jx: 1,
danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
};
}
}),
推荐: '.list_item;img&&alt;img&&src;a&&Text;a&&data-float',
一级: '.list_item;img&&alt;img&&src;a&&Text;a&&data-float',
二级: $js.toString(() => {
VOD = {};
let d = [];
let video_list = [];
let video_lists = [];
let list = [];
let QZOutputJson;
let html = fetch(input, fetch_params);
let sourceId = /get_playsource/.test(input) ? input.match(/id=(\d*?)&/)[1] : input.split("cid=")[1];
let cid = sourceId;
let detailUrl = "https://v.%71%71.com/detail/m/" + cid + ".html";
log("详情页:" + detailUrl);
pdfh = jsp.pdfh;
pd = jsp.pd;
try {
let json = JSON.parse(html);
VOD = {
vod_url: input,
vod_name: json.c.title,
type_name: json.typ.join(","),
vod_actor: json.nam.join(","),
vod_year: json.c.year,
vod_content: json.c.description,
vod_remarks: json.rec,
vod_pic: urljoin2(input, json.c.pic)
}
} catch (e) {
log("解析片名海报等基础信息发生错误:" + e.message)
}
if (/get_playsource/.test(input)) {
eval(html);
let indexList = QZOutputJson.PlaylistItem.indexList;
indexList.forEach(function(it) {
let dataUrl = "https://s.video.qq.com/get_playsource?id=" + sourceId + "&plat=2&type=4&data_type=3&range=" + it + "&video_type=10&plname=qq&otype=json";
eval(fetch(dataUrl, fetch_params));
let vdata = QZOutputJson.PlaylistItem.videoPlayList;
vdata.forEach(function(item) {
d.push({
title: item.title,
pic_url: item.pic,
desc: item.episode_number + "\t\t\t播放量:" + item.thirdLine,
url: item.playUrl
})
});
video_lists = video_lists.concat(vdata)
})
} else {
let json = JSON.parse(html);
video_lists = json.c.video_ids;
let url = "https://v.qq.com/x/cover/" + sourceId + ".html";
if (video_lists.length === 1) {
let vid = video_lists[0];
url = "https://v.qq.com/x/cover/" + cid + "/" + vid + ".html";
d.push({
title: "在线播放",
url: url
})
} else if (video_lists.length > 1) {
for (let i = 0; i < video_lists.length; i += 30) {
video_list.push(video_lists.slice(i, i + 30))
}
video_list.forEach(function(it, idex) {
let o_url = "https://union.video.qq.com/fcgi-bin/data?otype=json&tid=1804&appid=20001238&appkey=6c03bbe9658448a4&union_platform=1&idlist=" + it.join(",");
let o_html = fetch(o_url, fetch_params);
eval(o_html);
QZOutputJson.results.forEach(function(it1) {
it1 = it1.fields;
let url = "https://v.qq.com/x/cover/" + cid + "/" + it1.vid + ".html";
d.push({
title: it1.title,
pic_url: it1.pic160x90.replace("/160", ""),
desc: it1.video_checkup_time,
url: url,
type: it1.category_map && it1.category_map.length > 1 ? it1.category_map[1] : ""
})
})
})
}
}
let yg = d.filter(function(it) {
return it.type && it.type !== "正片"
});
let zp = d.filter(function(it) {
return !(it.type && it.type !== "正片")
});
VOD.vod_play_from = yg.length < 1 ? "qq" : "qq$$$qq 预告及花絮";
VOD.vod_play_url = yg.length < 1 ? d.map(function(it) {
return it.title + "$" + it.url
}).join("#") : [zp, yg].map(function(it) {
return it.map(function(its) {
return its.title + "$" + its.url
}).join("#")
}).join("$$$");
}),
搜索: $js.toString(() => {
let d = [];
pdfa = jsp.pdfa;
pdfh = jsp.pdfh;
pd = jsp.pd;
let html = request(input);
let baseList = pdfa(html, "body&&.result_item_v");
log(baseList.length);
baseList.forEach(function(it) {
let longText = pdfh(it, ".result_title&&a&&Text");
let shortText = pdfh(it, ".type&&Text");
let fromTag = pdfh(it, ".result_source&&Text");
let score = pdfh(it, ".figure_info&&Text");
let content = pdfh(it, ".desc_text&&Text");
// let url = pdfh(it, ".result_title&&a&&href");
let url = pdfh(it, "div&&r-data");
// log(longText);
// log(shortText);
// log('url:'+url);
let img = pd(it, ".figure_pic&&src");
url = "https://node.video.qq.com/x/api/float_vinfo2?cid=" + url.match(/.*\/(.*?)\.html/)[1];
log(shortText + "|" + url);
if (fromTag.match(/腾讯/)) {
d.push({
title: longText.split(shortText)[0],
img: img,
url: url,
content: content,
desc: shortText + " " + score
})
}
});
setResult(d);
}),
搜索: $js.toString(() => {
let d = [];
let html = request(input);
let json = JSON.parse(html);
if (json.data.smartboxItemList.length > 0) {
let cid = json.data.smartboxItemList[0].basicDoc.id;
let url = 'https://node.video.qq.com/x/api/float_vinfo2?cid=' + cid;
let html1 = request(url);
let data = JSON.parse(html1);
d.push({
title: data.c.title,
img: data.c.pic,
url: url,
content: data.c.description,
desc: data.rec
});
}
setResult(d);
})
}
+843
View File
@@ -0,0 +1,843 @@
var rule = {
title: '百忙无果[官]',
host: 'https://pianku.api.%6d%67%74%76.com',
homeUrl: '',
// searchUrl: 'https://mobileso.bz.%6d%67%74%76.com/pc/search/v1?q=**&pn=fypage&pc=10',
// 新版接口搜索变成v2并且加了验证,蛋疼
// searchUrl: 'https://mobileso.bz.mgtv.com/pc/search/v2?allowedRC=1&src=mgtv&did=cf03b959-6945-4cb6-bcb3-88762459354d&timestamp=2024-06-21T15%3A52%3A55Z&signVersion=1&signNonce=8dae67a1fafc4bda984ec8deb47666ad&q=**&pn=fypage&pc=10&corr=1&_support=10000000&signature=4e27fddcd2a1a66d6c1764ed6b74bab7',
// 用手机的吧,搞不定这个
searchUrl: 'https://mobileso.bz.%6d%67%74%76.com/msite/search/v2?q=**&pn=fypage&pc=10',
detailUrl: 'https://pcweb.api.mgtv.com/episode/list?page=1&size=50&video_id=fyid',
searchable: 2,
quickSearch: 0,
filterable: 1,
multi: 1,
// 分类链接fypage参数支持1个()表达式
// https://www.mgtv.com/lib/3?lastp=list_index&kind=a1&year=all&chargeInfo=a1&sort=c2
url: '/rider/list/pcweb/v3?platform=pcweb&channelId=fyclass&pn=fypage&pc=80&hudong=1&_support=10000000&kind=a1&area=a1',
filter_url: 'year={{fl.year or "all"}}&sort={{fl.sort or "all"}}&chargeInfo={{fl.chargeInfo or "all"}}',
headers: {
'User-Agent': 'PC_UA'
},
timeout: 5000,
class_name: '电视剧&电影&综艺&动漫&纪录片&教育&少儿',
class_url: '2&3&1&50&51&115&10',
filter: {
"1": [{
"key": "chargeInfo",
"name": "付费类型",
"value": [{
"n": "全部",
"v": "all"
}, {
"n": "免费",
"v": "b1"
}, {
"n": "vip",
"v": "b2"
}, {
"n": "VIP用券",
"v": "b3"
}, {
"n": "付费点播",
"v": "b4"
}]
}, {
"key": "sort",
"name": "排序",
"value": [{
"n": "最新",
"v": "c1"
}, {
"n": "最热",
"v": "c2"
}, {
"n": "知乎高分",
"v": "c4"
}]
}, {
"key": "year",
"name": "年代",
"value": [{
"n": "全部",
"v": "all"
}, {
"n": "2025",
"v": "2025"
}, {
"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": "2014",
"v": "2014"
}, {
"n": "2013",
"v": "2013"
}, {
"n": "2012",
"v": "2012"
}, {
"n": "2011",
"v": "2011"
}, {
"n": "2010",
"v": "2010"
}, {
"n": "2009",
"v": "2009"
}, {
"n": "2008",
"v": "2008"
}, {
"n": "2007",
"v": "2007"
}, {
"n": "2006",
"v": "2006"
}, {
"n": "2005",
"v": "2005"
}, {
"n": "2004",
"v": "2004"
}]
}],
"2": [{
"key": "chargeInfo",
"name": "付费类型",
"value": [{
"n": "全部",
"v": "all"
}, {
"n": "免费",
"v": "b1"
}, {
"n": "vip",
"v": "b2"
}, {
"n": "VIP用券",
"v": "b3"
}, {
"n": "付费点播",
"v": "b4"
}]
}, {
"key": "sort",
"name": "排序",
"value": [{
"n": "最新",
"v": "c1"
}, {
"n": "最热",
"v": "c2"
}, {
"n": "知乎高分",
"v": "c4"
}]
}, {
"key": "year",
"name": "年代",
"value": [{
"n": "全部",
"v": "all"
}, {
"n": "2025",
"v": "2025"
}, {
"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": "2014",
"v": "2014"
}, {
"n": "2013",
"v": "2013"
}, {
"n": "2012",
"v": "2012"
}, {
"n": "2011",
"v": "2011"
}, {
"n": "2010",
"v": "2010"
}, {
"n": "2009",
"v": "2009"
}, {
"n": "2008",
"v": "2008"
}, {
"n": "2007",
"v": "2007"
}, {
"n": "2006",
"v": "2006"
}, {
"n": "2005",
"v": "2005"
}, {
"n": "2004",
"v": "2004"
}]
}],
"3": [{
"key": "chargeInfo",
"name": "付费类型",
"value": [{
"n": "全部",
"v": "all"
}, {
"n": "免费",
"v": "b1"
}, {
"n": "vip",
"v": "b2"
}, {
"n": "VIP用券",
"v": "b3"
}, {
"n": "付费点播",
"v": "b4"
}]
}, {
"key": "sort",
"name": "排序",
"value": [{
"n": "最新",
"v": "c1"
}, {
"n": "最热",
"v": "c2"
}, {
"n": "知乎高分",
"v": "c4"
}]
}, {
"key": "year",
"name": "年代",
"value": [{
"n": "全部",
"v": "all"
}, {
"n": "2025",
"v": "2025"
}, {
"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": "2014",
"v": "2014"
}, {
"n": "2013",
"v": "2013"
}, {
"n": "2012",
"v": "2012"
}, {
"n": "2011",
"v": "2011"
}, {
"n": "2010",
"v": "2010"
}, {
"n": "2009",
"v": "2009"
}, {
"n": "2008",
"v": "2008"
}, {
"n": "2007",
"v": "2007"
}, {
"n": "2006",
"v": "2006"
}, {
"n": "2005",
"v": "2005"
}, {
"n": "2004",
"v": "2004"
}]
}],
"50": [{
"key": "chargeInfo",
"name": "付费类型",
"value": [{
"n": "全部",
"v": "all"
}, {
"n": "免费",
"v": "b1"
}, {
"n": "vip",
"v": "b2"
}, {
"n": "VIP用券",
"v": "b3"
}, {
"n": "付费点播",
"v": "b4"
}]
}, {
"key": "sort",
"name": "排序",
"value": [{
"n": "最新",
"v": "c1"
}, {
"n": "最热",
"v": "c2"
}, {
"n": "知乎高分",
"v": "c4"
}]
}, {
"key": "year",
"name": "年代",
"value": [{
"n": "全部",
"v": "all"
}, {
"n": "2025",
"v": "2025"
}, {
"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": "2014",
"v": "2014"
}, {
"n": "2013",
"v": "2013"
}, {
"n": "2012",
"v": "2012"
}, {
"n": "2011",
"v": "2011"
}, {
"n": "2010",
"v": "2010"
}, {
"n": "2009",
"v": "2009"
}, {
"n": "2008",
"v": "2008"
}, {
"n": "2007",
"v": "2007"
}, {
"n": "2006",
"v": "2006"
}, {
"n": "2005",
"v": "2005"
}, {
"n": "2004",
"v": "2004"
}]
}],
"51": [{
"key": "chargeInfo",
"name": "付费类型",
"value": [{
"n": "全部",
"v": "all"
}, {
"n": "免费",
"v": "b1"
}, {
"n": "vip",
"v": "b2"
}, {
"n": "VIP用券",
"v": "b3"
}, {
"n": "付费点播",
"v": "b4"
}]
}, {
"key": "sort",
"name": "排序",
"value": [{
"n": "最新",
"v": "c1"
}, {
"n": "最热",
"v": "c2"
}, {
"n": "知乎高分",
"v": "c4"
}]
}, {
"key": "year",
"name": "年代",
"value": [{
"n": "全部",
"v": "all"
}, {
"n": "2025",
"v": "2025"
}, {
"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": "2014",
"v": "2014"
}, {
"n": "2013",
"v": "2013"
}, {
"n": "2012",
"v": "2012"
}, {
"n": "2011",
"v": "2011"
}, {
"n": "2010",
"v": "2010"
}, {
"n": "2009",
"v": "2009"
}, {
"n": "2008",
"v": "2008"
}, {
"n": "2007",
"v": "2007"
}, {
"n": "2006",
"v": "2006"
}, {
"n": "2005",
"v": "2005"
}, {
"n": "2004",
"v": "2004"
}]
}],
"115": [{
"key": "chargeInfo",
"name": "付费类型",
"value": [{
"n": "全部",
"v": "all"
}, {
"n": "免费",
"v": "b1"
}, {
"n": "vip",
"v": "b2"
}, {
"n": "VIP用券",
"v": "b3"
}, {
"n": "付费点播",
"v": "b4"
}]
}, {
"key": "sort",
"name": "排序",
"value": [{
"n": "最新",
"v": "c1"
}, {
"n": "最热",
"v": "c2"
}, {
"n": "知乎高分",
"v": "c4"
}]
}, {
"key": "year",
"name": "年代",
"value": [{
"n": "全部",
"v": "all"
}, {
"n": "2025",
"v": "2025"
}, {
"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": "2014",
"v": "2014"
}, {
"n": "2013",
"v": "2013"
}, {
"n": "2012",
"v": "2012"
}, {
"n": "2011",
"v": "2011"
}, {
"n": "2010",
"v": "2010"
}, {
"n": "2009",
"v": "2009"
}, {
"n": "2008",
"v": "2008"
}, {
"n": "2007",
"v": "2007"
}, {
"n": "2006",
"v": "2006"
}, {
"n": "2005",
"v": "2005"
}, {
"n": "2004",
"v": "2004"
}]
}]
},
limit: 20,
play_parse: true,
lazy: $js.toString(() => {
try {
let api = "" + input.split("?")[0];
console.log(api);
let response = fetch(api, {
method: 'get',
headers: {
'User-Agent': 'okhttp/3.14.9',
'Content-Type': 'application/x-www-form-urlencoded'
}
});
let bata = JSON.parse(response);
if (bata.url.includes("mgtv")) {
input = {
parse: 0,
url: bata.url,
jx: 0,
danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
};
} else {
input = {
parse: 0,
url: input.split("?")[0],
jx: 1,
danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
};
}
} catch {
input = {
parse: 0,
url: input.split("?")[0],
jx: 1,
danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
};
}
}),
// 手动调用解析请求json的url,此lazy不方便
// lazy:'js:print(input);fetch_params.headers["user-agent"]=MOBILE_UA;let html=request(input);let rurl=html.match(/window\\.open\\(\'(.*?)\',/)[1];rurl=urlDeal(rurl);input={parse:1,url:rurl};',
// 推荐:'.list_item;img&&alt;img&&src;a&&Text;a&&data-float',
一级: 'json:data.hitDocs;title;img;updateInfo||rightCorner.text;playPartId',
// 一级:'json:data.hitDocs;title;img;updateInfo;playPartId',
二级: $js.toString(() => {
fetch_params.headers.Referer = "https://www.mgtv.com";
fetch_params.headers["User-Agent"] = MOBILE_UA;
pdfh = jsp.pdfh;
pdfa = jsp.pdfa;
pd = jsp.pd;
VOD = {};
let d = [];
let html = request(input);
let json = JSON.parse(html);
let host = "https://www.mgtv.com";
let ourl = json.data.list.length > 0 ? json.data.list[0].url : json.data.series[0].url;
if (!/^http/.test(ourl)) {
ourl = host + ourl
}
fetch_params.headers["User-Agent"] = MOBILE_UA;
html = request(ourl);
if (html.includes("window.location =")) {
print("开始获取ourl");
ourl = pdfh(html, "meta[http-equiv=refresh]&&content").split("url=")[1];
print("获取到ourl:" + ourl);
html = request(ourl)
}
try {
let details = pdfh(html, ".m-details&&Html").replace(/h1>/, "h6>").replace(/div/g, "br");
print(details);
let actor = "",
director = "",
time = "";
if (/播出时间/.test(details)) {
actor = pdfh(html, "p:eq(5)&&Text").substr(0, 25);
director = pdfh(html, "p:eq(4)&&Text");
time = pdfh(html, "p:eq(3)&&Text")
} else {
actor = pdfh(html, "p:eq(4)&&Text").substr(0, 25);
director = pdfh(html, "p:eq(3)&&Text");
time = "已完结"
}
let _img = pd(html, ".video-img&&img&&src");
let JJ = pdfh(html, ".desc&&Text").split("简介:")[1];
let _desc = time;
VOD.vod_name = pdfh(html, ".vt-txt&&Text");
VOD.type_name = pdfh(html, "p:eq(0)&&Text").substr(0, 6);
VOD.vod_area = pdfh(html, "p:eq(1)&&Text");
VOD.vod_actor = actor;
VOD.vod_director = director;
VOD.vod_remarks = _desc;
VOD.vod_pic = _img;
VOD.vod_content = JJ;
if (!VOD.vod_name) {
VOD.vod_name = VOD.type_name;
}
} catch (e) {
log("获取影片信息发生错误:" + e.message)
}
function getRjpg(imgUrl, xs) {
xs = xs || 3;
let picSize = /jpg_/.test(imgUrl) ? imgUrl.split("jpg_")[1].split(".")[0] : false;
let rjpg = false;
if (picSize) {
let a = parseInt(picSize.split("x")[0]) * xs;
let b = parseInt(picSize.split("x")[1]) * xs;
rjpg = a + "x" + b + ".jpg"
}
let img = /jpg_/.test(imgUrl) && rjpg ? imgUrl.replace(imgUrl.split("jpg_")[1], rjpg) : imgUrl;
return img
}
if (json.data.total === 1 && json.data.list.length === 1) {
let data = json.data.list[0];
let url = "https://www.mgtv.com" + data.url;
d.push({
title: data.t4,
desc: data.t2,
pic_url: getRjpg(data.img),
url: url
})
} else if (json.data.list.length > 1) {
for (let i = 1; i <= json.data.total_page; i++) {
if (i > 1) {
json = JSON.parse(fetch(input.replace("page=1", "page=" + i), {}))
}
json.data.list.forEach(function(data) {
let url = "https://www.mgtv.com" + data.url;
if (data.isIntact == "1") {
d.push({
title: data.t4,
desc: data.t2,
pic_url: getRjpg(data.img),
url: url
})
}
})
}
} else {
print(input + "暂无片源")
}
VOD.vod_play_from = "mgtv";
VOD.vod_play_url = d.map(function(it) {
return it.title + "$" + it.url
}).join("#");
setResult(d);
}),
搜索: $js.toString(() => {
fetch_params.headers.Referer = "https://www.mgtv.com";
fetch_params.headers["User-Agent"] = MOBILE_UA;
let d = [];
let html = request(input);
let json = JSON.parse(html);
json.data.contents.forEach(function(data) {
if (data.type && data.type == 'media') {
let item = data.data[0];
let desc = item.desc.join(',');
let fyclass = '';
if (item.source === "imgo") {
let img = item.img ? item.img : '';
try {
fyclass = item.rpt.match(/idx=(.*?)&/)[1] + '$';
} catch (e) {
log(e.message);
fyclass = '';
}
log(fyclass);
d.push({
title: item.title.replace(/<B>|<\/B>/g, ''),
img: img,
content: '',
desc: desc,
url: fyclass + item.url.match(/.*\/(.*?)\.html/)[1]
})
}
}
});
setResult(d);
}),
}
+183
View File
@@ -0,0 +1,183 @@
globalThis.h_ost = 'http://v.lkuys.cn/';
globalThis.vodlist = function($t, $pg) {
const currentTimestamp = parseInt(Date.now() / 1000, 10);
const url = h_ost + '/v2/home/type_search';
const hx = CryptoJS.MD5('kj5649ertj84ks89r4jh8s45hf84hjfds04k' + currentTimestamp).toString();
let html = request(url, {
body: {
sign: hx,
type_id: $t,
page: $pg,
},
headers: {
'User-Agent': 'okhttp-okgo/jeasonlzy',
'Content-Type': 'application/x-www-form-urlencoded'
},
'method': 'POST'
}, true);
return JSON.parse(html).data.list;
}
globalThis.seach = function(wd) {
const currentTimestamp = parseInt(Date.now() / 1000, 10);
const url = h_ost + '/v2/home/search';
const hx = CryptoJS.MD5('kj5649ertj84ks89r4jh8s45hf84hjfds04k' + currentTimestamp).toString();
let html = request(url, {
body: {
sign: hx,
keyword: wd,
timestamp: currentTimestamp,
},
headers: {
'User-Agent': 'okhttp-okgo/jeasonlzy',
'Content-Type': 'application/x-www-form-urlencoded'
},
'method': 'POST'
}, true);
return JSON.parse(html).data.list;
}
globalThis.vodids = function(ids) {
const currentTimestamp = parseInt(Date.now() / 1000, 10);
const url = h_ost + '/v2/home/vod_details';
const hx = CryptoJS.MD5('kj5649ertj84ks89r4jh8s45hf84hjfds04k' + currentTimestamp).toString();
let html = request(url, {
body: {
sign: hx,
vod_id: ids,
timestamp: currentTimestamp,
},
headers: {
'User-Agent': 'okhttp-okgo/jeasonlzy',
'Content-Type': 'application/x-www-form-urlencoded'
},
'method': 'POST'
}, true);
const redata = JSON.parse(html);
let vodPlayFrom = '';
let vodPlayUrl = '';
redata.data.vod_play_list.forEach((value, key) => {
if (value.flag.includes("nby") || value.flag.includes("mgtv") || value.flag.includes("qq") || value.flag.includes("qiyi") || value.flag.includes("mgtv")) {
vodPlayFrom += `${value.flag}$$$`;
value.urls.forEach(url => {
vodPlayUrl += `${url.name}$${value.parse_urls[0]}${url.url}~${url.name}#`;
});
vodPlayUrl += '$$$';
}
});
const regeshi = {
vod_id: redata.data.vod_id,
vod_name: redata.data.vod_name,
vod_remarks: `${redata.data.vod_remarks}`,
type_name: redata.data.vod_class,
vod_pic: redata.data.vod_pic,
vod_year: redata.data.vod_year,
vod_area: redata.data.vod_area,
vod_actor: `${redata.data.vod_actor}`,
vod_director: redata.data.vod_director,
vod_content: `${redata.data.vod_content}`,
vod_play_from: vodPlayFrom,
vod_play_url: vodPlayUrl
};
return regeshi;
}
globalThis.jxx = function(input) {
if ("741852963" !== '741852963') {
return 'https://s0.mall.tcl.com/group1/M00/00/89/CvoGBGdcOPaAAUxvADwZniVV2bc476.mp4';
}
const parts = input.split('~');
try {
let response = fetch(parts[0], {
method: 'get',
headers: {
'User-Agent': 'okhttp/3.14.9',
'Content-Type': 'application/x-www-form-urlencoded'
}
});
if (response.includes("成功") || response.includes("success") || response.includes("nby")) {
let bata = JSON.parse(response);
input = {
parse: 0,
url: bata.url,
jx: 0,
danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + VOD.vod_name + '&js=' + parts[1] + '&key=741852963'
}
} else {
input = {
parse: 0,
url: parts[0].includes('url=') ? parts[0].slice(parts[0].indexOf('url=') + 4) : null,
jx: 1,
danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + VOD.vod_name + '&js=' + parts[1] + '&key=741852963'
}
}
} catch {
input = {
parse: 0,
url: '解析失败',
jx: 0,
}
}
return input;
}
var rule = {
title: '追剧',
host: '',
detailUrl: 'fyid',
searchUrl: '**',
url: 'fyclass',
searchable: 2,
quickSearch: 1,
filterable: 0,
class_name: '电影&电视剧&综艺&动漫',
class_url: '1&2&4&3',
play_parse: true,
lazy: $js.toString(() => {
input = jxx(input);
}),
推荐: $js.toString(() => {
let bdata = vodlist(0, 1);
console.log(bdata);
bdata.forEach(it => {
d.push({
url: it.vod_id,
title: it.vod_name,
img: it.vod_pic,
desc: it.vod_remarks
});
});
setResult(d);
}),
一级: $js.toString(() => {
let bdata = vodlist(input, MY_PAGE);
console.log(bdata);
bdata.forEach(it => {
d.push({
url: it.vod_id,
title: it.vod_name,
img: it.vod_pic,
desc: it.vod_remarks
});
});
setResult(d);
}),
二级: $js.toString(() => {
console.log("调试信息2" + input);
let data = vodids(input);
//console.log(data);
VOD = (data);
}),
搜索: $js.toString(() => {
let ddata = seach(input);
ddata.forEach(it => {
d.push({
url: it.vod_id,
title: it.vod_name,
img: it.vod_pic,
desc: it.vod_remarks
});
});
setResult(d);
}),
}
-8
View File
@@ -171,14 +171,6 @@
"api": "csp_AppGetGuard",
"ext": "sHR2rlsfjI4L3t4RXQMkn97hxHYaEbu5lFfPUXOxEzpAZL11z+ayZEbLSb3vs/v8ZS0i6U3Oh/aCVpUdIeZzRgc5TQyB2k7aC0UwqxoW281lBnRyLoSPb+ejqJ92E4RYuH9BABywIr8NA9Bn0Ndnl5c+AJCGNVdUwDUcd6fmGzQoQ+VuzRpX5xfgCbnpjcTp56dL50nhDb7IIe7CtKv7pA=="
},
{
"key": "csp_麻花",
"name": "🍡麻花┃1080P",
"type": 3,
"quickSearch": 1,
"api": "csp_AppGetGuard",
"ext": "sHR2rlsfjI4L3t4RXQMkn8jwpFWwOFJQRZ9Fr6yGwRRCqiD1bGrSeoW6IrGUO30grfyJhbSLZgg2ZZgyF0VZ9+alOjmQh9fPtb/2RApEF90vSYLydgyDWtY6Dpcq4YPqd6L7gKNwcuZFUIdIug9TIgNtvkN0ZERsbizNEqCxbu2CFG37JY1JxRPFAFvr0U1azv1dn1ptVbioRuKFd+MCZgrKWR9SBcwgEuA+liBq4gsrxi0GIW3EJiTYKcqbj0vX"
},
{
"key": "csp_良人",
"name": "⚽️良人┃1080P",
+1744 -1610
View File
File diff suppressed because it is too large. Load diff
+180 -192
View File
@@ -2,12 +2,12 @@
"wallpaper": "https://xn--dkw0c.v.nxog.top/m//t/",
"logo": "https://alicliimg.clewm.net/342/790/68790342/17369906896774bd3d1d8ba1877dea5d967a137aa23d91736990672.gif",
"spider": "./spider.jar",
"warningText": "公众号【光歌软件分享】测试完请删除,请勿演示贩卖,接口即将关闭。提示:\n📢接口软件永远免费 \n📢长期维护切勿贩卖",
"warningText": "公众号【杰歌软件app】接口即将关闭,请勿演示贩卖提示:\n📢接口软件永远免费 \n📢长期维护切勿贩卖",
"lives": [
{
"name": "公众号【光歌软件分享】测试完请删除,请勿演示贩卖,接口即将关闭。",
"name": "公众号【杰歌软件app】接口即将关闭,请勿演示贩卖",
"type": 0,
"url": "./lives/公众号【光歌软件分享】测试完请删除,请勿演示贩卖,接口即将关闭。.txt",
"url": "./lives/公众号【杰歌软件app】接口即将关闭,请勿演示贩卖.txt",
"epg": "http://cdn.1678520.xyz/epg/?ch={name}&date={date}"
},
{
@@ -32,20 +32,20 @@
"sites": [
{
"key": "豆瓣2",
"name": "📢公众号【光歌软件分享】测试完请删除,请勿演示贩卖,接口即将关闭。",
"name": "📢公众号【杰歌软件app】接口即将关闭,请勿演示贩卖",
"type": 3,
"api": "csp_Douban",
"searchable": 0
},
{
"key": "豆瓣1",
"name": "📢公众号【光歌软件分享】测试完请删除,请勿演示贩卖,接口即将关闭。公告❤更新:3/7❤",
"name": "📢公众号【杰歌软件app】接口即将关闭,请勿演示贩卖公告❤更新:3/11❤",
"type": 3,
"api": "csp_Notice",
"searchable": 0,
"changeable": 0,
"jar": "./jars/豆瓣1.jar",
"ext": "https://nxog.top/%E5%85%AC%E4%BC%97%E5%8F%B7%E6%AC%A7%E6%AD%8CAPP/ts/?b=公众号【光歌软件分享】测试完请删除,请勿演示贩卖,接口即将关闭。"
"ext": "https://nxog.top/%E5%85%AC%E4%BC%97%E5%8F%B7%E6%AC%A7%E6%AD%8CAPP/ts/?b=公众号【杰歌软件app】接口即将关闭,请勿演示贩卖"
},
{
"key": "欧歌弹幕",
@@ -78,25 +78,36 @@
}
},
{
"key": "欧歌夸快",
"name": "🐲玩欧|夸快弹幕",
"key": "csp_woog2",
"name": "🐲玩歌┃夸快4K",
"type": 3,
"api": "csp_ogkk",
"quickSearch": 1,
"changeable": 1,
"api": "csp_woog",
"changeable": 0,
"searchable": 1,
"filterable": 1,
"jar": "./jars/csp_woog2.jar",
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
"danmu": true
"site_urls": [
"https://ogkk.nxog.eu.org",
"https://ogkk.xn--dkw.xn--6qq986b3xl"
]
}
},
{
"key": "csp_欧歌123",
"name": "🐲夸快┃配置",
"type": 3,
"api": "csp_Config",
"searchable": 0,
"quickSearch": 0,
"filterable": 1,
"jar": "./jars/csp_欧歌123.jar"
},
{
"key": "配置中心",
"name": "❤配置|中心",
"type": 3,
"api": "csp_Configog",
"api": "csp_Config",
"searchable": 0,
"changeable": 0,
"indexs": 0,
@@ -115,13 +126,6 @@
"quickSearch": 1,
"filterable": 1
},
{
"key": "预告",
"name": "💡新片|预告",
"type": 3,
"api": "csp_YGP",
"searchable": 0
},
{
"key": "韩小圈",
"name": "💡韩小|影视",
@@ -155,34 +159,6 @@
"playerType": 2,
"ext": "eaHR0cHM6Ly9kLmRjbW92aWUudG9w"
},
{
"key": "耐看",
"name": "💡耐看|影视",
"type": 3,
"api": "csp_WebNK",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": "w7TClcONw6LDrsKYwoXCosKcwpvCrcKcw6HDrsKnwqDCo2rCqMKiw7HDsMOxYcKewpvClMOvw5fCqMOmw59VXFLCpMOiw6PCnMKzwpzCjuWGtemEmOaPleWRnMKf5Yem5L6Q5ZGxbeW+oeintui1tOa8ieetjMOXwpvDtw=="
},
{
"key": "真心",
"name": "💡真心|影视",
"type": 3,
"api": "csp_WebGZ",
"searchable": 1,
"quickSearch": 1,
"filterable": 1
},
{
"key": "1905",
"name": "💡1905|影视",
"type": 3,
"api": "csp_Web1905",
"searchable": 1,
"quickSearch": 0,
"filterable": 0
},
{
"key": "全网",
"name": "💡全网|影视",
@@ -220,16 +196,6 @@
"quickSearch": 1,
"filterable": 1
},
{
"key": "奇优",
"name": "💡奇优|影视",
"type": 3,
"api": "csp_Qiyou",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": "http://www.dyxz2.com/"
},
{
"key": "米兔",
"name": "💡米兔|影视",
@@ -238,30 +204,6 @@
"quickSearch": 1,
"api": "csp_MiTuApp"
},
{
"key": "永夜",
"name": "💡永夜|影视",
"type": 3,
"api": "csp_QJMuou",
"playerType": 2,
"ext": "caHR0cDovL211b3UuNTZ1eGkuY29tfENvZmZlZTRLfDQuMS44"
},
{
"key": "优质",
"name": "💡优质|影视",
"type": 3,
"api": "csp_Xdai",
"playerType": 1,
"ext": "jaHR0cDovL2R5eXp0dmFwcGFwaWdvb2RneC42OC5neS9jaXdrMjh2dTM4aW84L2FwaXVybC50eHR8ZHl5enR2YXBpYXBweXlkc3xkeXl6dHZhcGlhcHB5eWRzfDEwMA=="
},
{
"key": "木叶",
"name": "💡木叶|影视",
"type": 3,
"api": "csp_Xdai",
"playerType": 2,
"ext": "saHR0cDovL2hvc3QueXl5cy5uZXdzLzI1MDEyMy50eHR8UnVOOUxSdndUUmdwUW5wS3xSdU45TFJ2d1RSZ3BRbnBLfDU0Ng=="
},
{
"key": "洽洽影视",
"name": "💡洽洽|影视",
@@ -298,6 +240,46 @@
"filterable": 1,
"ext": "KhY021WelCEl+6MsvwnzaPusskysEhxc/i3d/FHwReBTtZTeDEVZJbQKKez3K+OxlrjAIMdUpAUxP8fGystYn0Hss098UFVR69Qm2ARgmeZN86q8Ww=="
},
{
"key": "二三",
"name": "💡二三|影视",
"type": 3,
"api": "csp_QJMuou",
"playerType": 2,
"ext": "caHR0cHM6Ly8xMjN5c3cuY29tfDIz5b2x6KeGfDQuMS44"
},
{
"key": "时常",
"name": "💡时常|影视",
"type": 3,
"api": "csp_Xdai",
"playerType": 1,
"ext": "jaHR0cHM6Ly9zYzEwODAudG9wfGU1OWQ0NGIyZWVmMDNiYTJ8ZTU5ZDQ0YjJlZWYwM2JhMnwxMzQ="
},
{
"key": "现代",
"name": "💡现代|影视",
"type": 3,
"api": "csp_Xdai",
"playerType": 1,
"ext": "caHR0cHM6Ly94ZHlzLnZpcC9nZXRhcHAudHh0fHN6ZGp3ZGFwcHdjbm1kaGJ8c3pkandkYXBwd2NubWRoYnwxMTQ="
},
{
"key": "来看影视",
"name": "💡来看|影视",
"type": 3,
"api": "csp_Lkdy",
"searchable": 1,
"quickSearch": 1,
"filterable": 1
},
{
"key": "预告",
"name": "💡新片|预告",
"type": 3,
"api": "csp_YGP",
"searchable": 0
},
{
"key": "厂长弹幕",
"name": "💘厂长|弹幕",
@@ -1152,6 +1134,119 @@
"filterable": 0,
"ext": "KhY021WelCEl+6MsvwnzaPussky/EAoc9z7C4keyHaEQ+sKbXhMKd83VjTL7Ls6+m7XDIcGdziOxPv79y/h4QCvmOEJmZ1VD6dopzAVxkFzEFw=="
},
{
"key": "夸克多多弹幕",
"name": "❤多多|4K弹幕",
"type": 3,
"api": "csp_Wobg",
"quickSearch": 1,
"changeable": 1,
"filterable": 1,
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
"site": "https://duoduo.banye.tech:7086",
"danmu": true
}
},
{
"key": "夸克蜡笔弹幕",
"name": "❤蜡笔|4K弹幕",
"type": 3,
"api": "csp_Wobg",
"quickSearch": 1,
"changeable": 1,
"filterable": 1,
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
"site": "https://labi.banye.tech:7086",
"danmu": true
}
},
{
"key": "夸克至臻弹幕",
"name": "❤至臻|4K弹幕",
"type": 3,
"api": "csp_Wobg",
"quickSearch": 1,
"changeable": 1,
"filterable": 1,
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
"site": "https://zhizhen.banye.tech:7086",
"danmu": true
}
},
{
"key": "夸克木偶弹幕",
"name": "❤木偶|4K弹幕",
"type": 3,
"api": "csp_Wobg",
"quickSearch": 1,
"changeable": 1,
"filterable": 1,
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
"site": "https://mogg.banye.tech:7086",
"danmu": true
}
},
{
"key": "夸克六趣弹幕",
"name": "❤六趣|4K弹幕",
"type": 3,
"api": "csp_Wobg",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"changeable": 1,
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
"site": "https://liuqu.banye.tech:7086",
"danmu": true
}
},
{
"key": "夸克下饭弹幕",
"name": "❤下饭|4K弹幕",
"type": 3,
"api": "csp_Wobg",
"quickSearch": 1,
"changeable": 1,
"filterable": 1,
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
"site": "https://xiafan.banye.tech:7086",
"danmu": true
}
},
{
"key": "夸克二小弹幕",
"name": "❤二小|4K弹幕",
"type": 3,
"api": "csp_Wobg",
"quickSearch": 1,
"changeable": 1,
"filterable": 1,
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
"site": "https://enxiao.banye.tech:7086",
"danmu": true
}
},
{
"key": "玩偶弹幕",
"name": "❤玩偶|4K弹幕",
@@ -1168,113 +1263,6 @@
"danmu": true
}
},
{
"key": "夸克闪电弹幕",
"name": "❤闪电|4K弹幕",
"type": 3,
"api": "csp_ShanDian",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"changeable": 1,
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
"danmu": true
}
},
{
"key": "夸克多多弹幕",
"name": "❤多多|4K弹幕",
"type": 3,
"api": "csp_DuoDuo",
"quickSearch": 1,
"changeable": 1,
"filterable": 1,
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
"danmu": true
}
},
{
"key": "夸克蜡笔弹幕",
"name": "❤蜡笔|4K弹幕",
"type": 3,
"api": "csp_Labi",
"quickSearch": 1,
"changeable": 1,
"filterable": 1,
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
"danmu": true
}
},
{
"key": "夸克至臻弹幕",
"name": "❤至臻|4K弹幕",
"type": 3,
"api": "csp_ZhiZhen",
"quickSearch": 1,
"changeable": 1,
"filterable": 1,
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
"danmu": true
}
},
{
"key": "夸克六趣弹幕",
"name": "❤六趣|4K弹幕",
"type": 3,
"api": "csp_LiuQu",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"changeable": 1,
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
"danmu": true
}
},
{
"key": "夸克下饭弹幕",
"name": "❤下饭|4K弹幕",
"type": 3,
"api": "csp_XiaFan",
"quickSearch": 1,
"changeable": 1,
"filterable": 1,
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
"danmu": true
}
},
{
"key": "校长弹幕",
"name": "❤校长|4K弹幕",
"type": 3,
"api": "csp_XiaoZhang",
"searchable": 1,
"filterable": 1,
"changeable": 1,
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
"danmu": true
}
},
{
"key": "push_agent",
"name": "📢手机|推送",
-68
View File
@@ -1,68 +0,0 @@
/***
* gbk编码解码函数
* strTool = gbkTool() strTool.encode(key)
* @returns {{encode: (function(*): *), decode: (function(*): *)}}
*/
export function gbkTool(){
var data=function(zipData){
var re=zipData
.replace(/#(\d+)\$/g,function(a,b){
return Array(+b+3).join('#');
})
.replace(/#/g,'####')
.replace(/(\w\w):([\w#]+)(?:,|$)/g,function(a,hd,dt){
return dt.replace(/../g,function(a){
if(a!='##'){
return hd+a;
}else{
return a;
}
});
});
return re;
}('4e:020405060f12171f20212326292e2f313335373c40414244464a5155575a5b6263646567686a6b6c6d6e6f727475767778797a7b7c7d7f808182838485878a#909697999c9d9ea3aaafb0b1b4b6b7b8b9bcbdbec8cccfd0d2dadbdce0e2e6e7e9edeeeff1f4f8f9fafcfe,4f:00020304050607080b0c12131415161c1d212328292c2d2e31333537393b3e3f40414244454748494a4b4c525456616266686a6b6d6e7172757778797a7d8081828586878a8c8e909293959698999a9c9e9fa1a2a4abadb0b1b2b3b4b6b7b8b9babbbcbdbec0c1c2c6c7c8c9cbcccdd2d3d4d5d6d9dbe0e2e4e5e7ebecf0f2f4f5f6f7f9fbfcfdff,50:000102030405060708090a#0b0e1011131516171b1d1e20222324272b2f303132333435363738393b3d3f404142444546494a4b4d5051525354565758595b5d5e5f6061626364666768696a6b6d6e6f70717273747578797a7c7d818283848687898a8b8c8e8f909192939495969798999a9b9c9d9e9fa0a1a2a4a6aaabadaeafb0b1b3b4b5b6b7b8b9bcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdced0d1d2d3d4d5d7d8d9dbdcdddedfe0e1e2e3e4e5e8e9eaebeff0f1f2f4f6f7f8f9fafcfdfeff,51:00010203040508#090a0c0d0e0f1011131415161718191a1b1c1d1e1f2022232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e42474a4c4e4f5052535758595b5d5e5f606163646667696a6f727a7e7f838486878a8b8e8f90919394989a9d9e9fa1a3a6a7a8a9aaadaeb4b8b9babebfc1c2c3c5c8cacdced0d2d3d4d5d6d7d8d9dadcdedfe2e3e5e6e7e8e9eaeceef1f2f4f7fe,52:0405090b0c0f101314151c1e1f2122232526272a2c2f313234353c3e4445464748494b4e4f5253555758#595a5b5d5f6062636466686b6c6d6e7071737475767778797a7b7c7e808384858687898a8b8c8d8e8f91929495969798999a9ca4a5a6a7aeafb0b4b5b6b7b8b9babbbcbdc0c1c2c4c5c6c8cacccdcecfd1d3d4d5d7d9dadbdcdddee0e1e2e3e5e6e7e8e9eaebecedeeeff1f2f3f4f5f6f7f8fbfcfd,53:0102030407090a0b0c0e11121314181b1c1e1f2224252728292b2c2d2f3031323334353637383c3d404244464b4c4d505458595b5d65686a6c6d7276797b7c7d7e80818387888a8e8f#90919293949697999b9c9ea0a1a4a7aaabacadafb0b1b2b3b4b5b7b8b9babcbdbec0c3c4c5c6c7cecfd0d2d3d5dadcdddee1e2e7f4fafeff,54:000205070b1418191a1c2224252a303336373a3d3f4142444547494c4d4e4f515a5d5e5f6061636567696a6b6c6d6e6f7074797a7e7f8183858788898a8d919397989c9e9fa0a1a2a5aeb0b2b5b6b7b9babcbec3c5cacbd6d8dbe0e1e2e3e4ebeceff0f1f4f5f6f7f8f9fbfe,55:0002030405080a0b0c0d0e121315161718191a1c1d1e1f212526#28292b2d3234353638393a3b3d40424547484b4c4d4e4f515253545758595a5b5d5e5f60626368696b6f7071727374797a7d7f85868c8d8e9092939596979a9b9ea0a1a2a3a4a5a6a8a9aaabacadaeafb0b2b4b6b8babcbfc0c1c2c3c6c7c8cacbcecfd0d5d7d8d9dadbdee0e2e7e9edeef0f1f4f6f8f9fafbfcff,56:0203040506070a0b0d1011121314151617191a1c1d202122252628292a2b2e2f30333537383a3c3d3e404142434445464748494a4b4f5051525355565a5b5d5e5f6061#636566676d6e6f70727374757778797a7d7e7f80818283848788898a8b8c8d9091929495969798999a9b9c9d9e9fa0a1a2a4a5a6a7a8a9aaabacadaeb0b1b2b3b4b5b6b8b9babbbdbebfc0c1c2c3c4c5c6c7c8c9cbcccdcecfd0d1d2d3d5d6d8d9dce3e5e6e7e8e9eaeceeeff2f3f6f7f8fbfc,57:00010205070b0c0d0e0f101112131415161718191a1b1d1e202122242526272b313234353637383c3d3f414344454648494b52535455565859626365676c6e707172747578797a7d7e7f80#818788898a8d8e8f90919495969798999a9c9d9e9fa5a8aaacafb0b1b3b5b6b7b9babbbcbdbebfc0c1c4c5c6c7c8c9cacccdd0d1d3d6d7dbdcdee1e2e3e5e6e7e8e9eaebeceef0f1f2f3f5f6f7fbfcfeff,58:0103040508090a0c0e0f101213141617181a1b1c1d1f222325262728292b2c2d2e2f31323334363738393a3b3c3d3e3f4041424345464748494a4b4e4f505253555657595a5b5c5d5f6061626364666768696a6d6e6f707172737475767778797a7b7c7d7f82848687888a8b8c#8d8e8f909194959697989b9c9da0a1a2a3a4a5a6a7aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbdbebfc0c2c3c4c6c7c8c9cacbcccdcecfd0d2d3d4d6d7d8d9dadbdcdddedfe0e1e2e3e5e6e7e8e9eaedeff1f2f4f5f7f8fafbfcfdfeff,59:000103050608090a0b0c0e1011121317181b1d1e2021222326282c30323335363b3d3e3f404345464a4c4d505253595b5c5d5e5f616364666768696a6b6c6d6e6f70717275777a7b7c7e7f8085898b8c8e8f90919495989a9b9c9d9fa0a1a2a6#a7acadb0b1b3b4b5b6b7b8babcbdbfc0c1c2c3c4c5c7c8c9cccdcecfd5d6d9dbdedfe0e1e2e4e6e7e9eaebedeeeff0f1f2f3f4f5f6f7f8fafcfdfe,5a:00020a0b0d0e0f101214151617191a1b1d1e2122242627282a2b2c2d2e2f3033353738393a3b3d3e3f414243444547484b4c4d4e4f5051525354565758595b5c5d5e5f60616364656668696b6c6d6e6f7071727378797b7c7d7e808182838485868788898a8b8c8d8e8f9091939495969798999c9d9e9fa0a1a2a3a4a5a6a7a8a9abac#adaeafb0b1b4b6b7b9babbbcbdbfc0c3c4c5c6c7c8cacbcdcecfd0d1d3d5d7d9dadbdddedfe2e4e5e7e8eaecedeeeff0f2f3f4f5f6f7f8f9fafbfcfdfeff,5b:0001020304050607080a0b0c0d0e0f10111213141518191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303133353638393a3b3c3d3e3f4142434445464748494a4b4c4d4e4f52565e606167686b6d6e6f7274767778797b7c7e7f82868a8d8e90919294969fa7a8a9acadaeafb1b2b7babbbcc0c1c3c8c9cacbcdcecf#d1d4d5d6d7d8d9dadbdce0e2e3e6e7e9eaebecedeff1f2f3f4f5f6f7fdfe,5c:0002030507080b0c0d0e10121317191b1e1f2021232628292a2b2d2e2f303233353637434446474c4d5253545657585a5b5c5d5f62646768696a6b6c6d70727374757677787b7c7d7e808384858687898a8b8e8f9293959d9e9fa0a1a4a5a6a7a8aaaeafb0b2b4b6b9babbbcbec0c2c3c5c6c7c8c9cacccdcecfd0d1d3d4d5d6d7d8dadbdcdddedfe0e2e3e7e9ebeceeeff1f2f3f4f5f6f7f8f9fafcfdfeff,5d:00#01040508090a0b0c0d0f10111213151718191a1c1d1f2021222325282a2b2c2f3031323335363738393a3b3c3f4041424344454648494d4e4f5051525354555657595a5c5e5f6061626364656667686a6d6e7071727375767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f90Line truncated
U2Ghash={},
G2Uhash={};
!function(data){
var k=0;
data=data.match(/..../g);
for(var i=0x81;i<=0xfe;i++){
for(var j=0x40;j<=0xFE;j++){
U2Ghash[data[k++]]=('%'+i.toString(16)+'%'+j.toString(16))
.toUpperCase();
}
}
for(var key in U2Ghash){
G2Uhash[U2Ghash[key]]=key;
}
}(data);
function isAscii(unicode) {
return ((unicode == 0x20AC) || (unicode <= 0x007F && unicode >= 0x0000));
}
return{
encode:function(str){
return str.replace(/./g,function(a){
var code=a.charCodeAt(0);
if(isAscii(code)){
return encodeURIComponent(a);
}else{
var key=code.toString(16);
if(key.length!=4)key=('000'+key).match(/....$/)[0];
return U2Ghash[key]||a;
}
});
},
decode:function(str){
return str.replace(/%[0-9A-F]{2}%[0-9A-F]{2}/g,function(a){
if(a in G2Uhash){
return String.fromCharCode('0x'+G2Uhash[a]);
}else{
return a;
}
}).replace(/%[\w]{2}/g,function(a){
return decodeURIComponent(a);
});
}
};
}
-577
View File
@@ -1,577 +0,0 @@
/*!
* Jinja Templating for JavaScript v0.1.8
* https://github.com/sstur/jinja-js
*
* This is a slimmed-down Jinja2 implementation [http://jinja.pocoo.org/]
*
* In the interest of simplicity, it deviates from Jinja2 as follows:
* - Line statements, cycle, super, macro tags and block nesting are not implemented
* - auto escapes html by default (the filter is "html" not "e")
* - Only "html" and "safe" filters are built in
* - Filters are not valid in expressions; `foo|length > 1` is not valid
* - Expression Tests (`if num is odd`) not implemented (`is` translates to `==` and `isnot` to `!=`)
*
* Notes:
* - if property is not found, but method '_get' exists, it will be called with the property name (and cached)
* - `{% for n in obj %}` iterates the object's keys; get the value with `{% for n in obj %}{{ obj[n] }}{% endfor %}`
* - subscript notation `a[0]` takes literals or simple variables but not `a[item.key]`
* - `.2` is not a valid number literal; use `0.2`
*
*/
/*global require, exports, module, define */
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jinja = {}));
})(this, (function (jinja) {
"use strict";
var STRINGS = /'(\\.|[^'])*'|"(\\.|[^"'"])*"/g;
var IDENTS_AND_NUMS = /([$_a-z][$\w]*)|([+-]?\d+(\.\d+)?)/g;
var NUMBER = /^[+-]?\d+(\.\d+)?$/;
//non-primitive literals (array and object literals)
var NON_PRIMITIVES = /\[[@#~](,[@#~])*\]|\[\]|\{([@i]:[@#~])(,[@i]:[@#~])*\}|\{\}/g;
//bare identifiers such as variables and in object literals: {foo: 'value'}
var IDENTIFIERS = /[$_a-z][$\w]*/ig;
var VARIABLES = /i(\.i|\[[@#i]\])*/g;
var ACCESSOR = /(\.i|\[[@#i]\])/g;
var OPERATORS = /(===?|!==?|>=?|<=?|&&|\|\||[+\-\*\/%])/g;
//extended (english) operators
var EOPS = /(^|[^$\w])(and|or|not|is|isnot)([^$\w]|$)/g;
var LEADING_SPACE = /^\s+/;
var TRAILING_SPACE = /\s+$/;
var START_TOKEN = /\{\{\{|\{\{|\{%|\{#/;
var TAGS = {
'{{{': /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?\}\}\}/,
'{{': /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?\}\}/,
'{%': /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?%\}/,
'{#': /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?#\}/
};
var delimeters = {
'{%': 'directive',
'{{': 'output',
'{#': 'comment'
};
var operators = {
and: '&&',
or: '||',
not: '!',
is: '==',
isnot: '!='
};
var constants = {
'true': true,
'false': false,
'null': null
};
function Parser() {
this.nest = [];
this.compiled = [];
this.childBlocks = 0;
this.parentBlocks = 0;
this.isSilent = false;
}
Parser.prototype.push = function (line) {
if (!this.isSilent) {
this.compiled.push(line);
}
};
Parser.prototype.parse = function (src) {
this.tokenize(src);
return this.compiled;
};
Parser.prototype.tokenize = function (src) {
var lastEnd = 0, parser = this, trimLeading = false;
matchAll(src, START_TOKEN, function (open, index, src) {
//here we match the rest of the src against a regex for this tag
var match = src.slice(index + open.length).match(TAGS[open]);
match = (match ? match[0] : '');
//here we sub out strings so we don't get false matches
var simplified = match.replace(STRINGS, '@');
//if we don't have a close tag or there is a nested open tag
if (!match || ~simplified.indexOf(open)) {
return index + 1;
}
var inner = match.slice(0, 0 - open.length);
//check for white-space collapse syntax
if (inner.charAt(0) === '-') var wsCollapseLeft = true;
if (inner.slice(-1) === '-') var wsCollapseRight = true;
inner = inner.replace(/^-|-$/g, '').trim();
//if we're in raw mode and we are not looking at an "endraw" tag, move along
if (parser.rawMode && (open + inner) !== '{%endraw') {
return index + 1;
}
var text = src.slice(lastEnd, index);
lastEnd = index + open.length + match.length;
if (trimLeading) text = trimLeft(text);
if (wsCollapseLeft) text = trimRight(text);
if (wsCollapseRight) trimLeading = true;
if (open === '{{{') {
//liquid-style: make {{{x}}} => {{x|safe}}
open = '{{';
inner += '|safe';
}
parser.textHandler(text);
parser.tokenHandler(open, inner);
});
var text = src.slice(lastEnd);
if (trimLeading) text = trimLeft(text);
this.textHandler(text);
};
Parser.prototype.textHandler = function (text) {
this.push('write(' + JSON.stringify(text) + ');');
};
Parser.prototype.tokenHandler = function (open, inner) {
var type = delimeters[open];
if (type === 'directive') {
this.compileTag(inner);
} else if (type === 'output') {
var extracted = this.extractEnt(inner, STRINGS, '@');
//replace || operators with ~
extracted.src = extracted.src.replace(/\|\|/g, '~').split('|');
//put back || operators
extracted.src = extracted.src.map(function (part) {
return part.split('~').join('||');
});
var parts = this.injectEnt(extracted, '@');
if (parts.length > 1) {
var filters = parts.slice(1).map(this.parseFilter.bind(this));
this.push('filter(' + this.parseExpr(parts[0]) + ',' + filters.join(',') + ');');
} else {
this.push('filter(' + this.parseExpr(parts[0]) + ');');
}
}
};
Parser.prototype.compileTag = function (str) {
var directive = str.split(' ')[0];
var handler = tagHandlers[directive];
if (!handler) {
throw new Error('Invalid tag: ' + str);
}
handler.call(this, str.slice(directive.length).trim());
};
Parser.prototype.parseFilter = function (src) {
src = src.trim();
var match = src.match(/[:(]/);
var i = match ? match.index : -1;
if (i < 0) return JSON.stringify([src]);
var name = src.slice(0, i);
var args = src.charAt(i) === ':' ? src.slice(i + 1) : src.slice(i + 1, -1);
args = this.parseExpr(args, {terms: true});
return '[' + JSON.stringify(name) + ',' + args + ']';
};
Parser.prototype.extractEnt = function (src, regex, placeholder) {
var subs = [], isFunc = typeof placeholder == 'function';
src = src.replace(regex, function (str) {
var replacement = isFunc ? placeholder(str) : placeholder;
if (replacement) {
subs.push(str);
return replacement;
}
return str;
});
return {src: src, subs: subs};
};
Parser.prototype.injectEnt = function (extracted, placeholder) {
var src = extracted.src, subs = extracted.subs, isArr = Array.isArray(src);
var arr = (isArr) ? src : [src];
var re = new RegExp('[' + placeholder + ']', 'g'), i = 0;
arr.forEach(function (src, index) {
arr[index] = src.replace(re, function () {
return subs[i++];
});
});
return isArr ? arr : arr[0];
};
//replace complex literals without mistaking subscript notation with array literals
Parser.prototype.replaceComplex = function (s) {
var parsed = this.extractEnt(s, /i(\.i|\[[@#i]\])+/g, 'v');
parsed.src = parsed.src.replace(NON_PRIMITIVES, '~');
return this.injectEnt(parsed, 'v');
};
//parse expression containing literals (including objects/arrays) and variables (including dot and subscript notation)
//valid expressions: `a + 1 > b.c or c == null`, `a and b[1] != c`, `(a < b) or (c < d and e)`, 'a || [1]`
Parser.prototype.parseExpr = function (src, opts) {
opts = opts || {};
//extract string literals -> @
var parsed1 = this.extractEnt(src, STRINGS, '@');
//note: this will catch {not: 1} and a.is; could we replace temporarily and then check adjacent chars?
parsed1.src = parsed1.src.replace(EOPS, function (s, before, op, after) {
return (op in operators) ? before + operators[op] + after : s;
});
//sub out non-string literals (numbers/true/false/null) -> #
// the distinction is necessary because @ can be object identifiers, # cannot
var parsed2 = this.extractEnt(parsed1.src, IDENTS_AND_NUMS, function (s) {
return (s in constants || NUMBER.test(s)) ? '#' : null;
});
//sub out object/variable identifiers -> i
var parsed3 = this.extractEnt(parsed2.src, IDENTIFIERS, 'i');
//remove white-space
parsed3.src = parsed3.src.replace(/\s+/g, '');
//the rest of this is simply to boil the expression down and check validity
var simplified = parsed3.src;
//sub out complex literals (objects/arrays) -> ~
// the distinction is necessary because @ and # can be subscripts but ~ cannot
while (simplified !== (simplified = this.replaceComplex(simplified))) ;
//now @ represents strings, # represents other primitives and ~ represents non-primitives
//replace complex variables (those with dot/subscript accessors) -> v
while (simplified !== (simplified = simplified.replace(/i(\.i|\[[@#i]\])+/, 'v'))) ;
//empty subscript or complex variables in subscript, are not permitted
simplified = simplified.replace(/[iv]\[v?\]/g, 'x');
//sub in "i" for @ and # and ~ and v (now "i" represents all literals, variables and identifiers)
simplified = simplified.replace(/[@#~v]/g, 'i');
//sub out operators
simplified = simplified.replace(OPERATORS, '%');
//allow 'not' unary operator
simplified = simplified.replace(/!+[i]/g, 'i');
var terms = opts.terms ? simplified.split(',') : [simplified];
terms.forEach(function (term) {
//simplify logical grouping
while (term !== (term = term.replace(/\(i(%i)*\)/g, 'i'))) ;
if (!term.match(/^i(%i)*/)) {
throw new Error('Invalid expression: ' + src + " " + term);
}
});
parsed3.src = parsed3.src.replace(VARIABLES, this.parseVar.bind(this));
parsed2.src = this.injectEnt(parsed3, 'i');
parsed1.src = this.injectEnt(parsed2, '#');
return this.injectEnt(parsed1, '@');
};
Parser.prototype.parseVar = function (src) {
var args = Array.prototype.slice.call(arguments);
var str = args.pop(), index = args.pop();
//quote bare object identifiers (might be a reserved word like {while: 1})
if (src === 'i' && str.charAt(index + 1) === ':') {
return '"i"';
}
var parts = ['"i"'];
src.replace(ACCESSOR, function (part) {
if (part === '.i') {
parts.push('"i"');
} else if (part === '[i]') {
parts.push('get("i")');
} else {
parts.push(part.slice(1, -1));
}
});
return 'get(' + parts.join(',') + ')';
};
//escapes a name to be used as a javascript identifier
Parser.prototype.escName = function (str) {
return str.replace(/\W/g, function (s) {
return '$' + s.charCodeAt(0).toString(16);
});
};
Parser.prototype.parseQuoted = function (str) {
if (str.charAt(0) === "'") {
str = str.slice(1, -1).replace(/\\.|"/, function (s) {
if (s === "\\'") return "'";
return s.charAt(0) === '\\' ? s : ('\\' + s);
});
str = '"' + str + '"';
}
//todo: try/catch or deal with invalid characters (linebreaks, control characters)
return JSON.parse(str);
};
//the context 'this' inside tagHandlers is the parser instance
var tagHandlers = {
'if': function (expr) {
this.push('if (' + this.parseExpr(expr) + ') {');
this.nest.unshift('if');
},
'else': function () {
if (this.nest[0] === 'for') {
this.push('}, function() {');
} else {
this.push('} else {');
}
},
'elseif': function (expr) {
this.push('} else if (' + this.parseExpr(expr) + ') {');
},
'endif': function () {
this.nest.shift();
this.push('}');
},
'for': function (str) {
var i = str.indexOf(' in ');
var name = str.slice(0, i).trim();
var expr = str.slice(i + 4).trim();
this.push('each(' + this.parseExpr(expr) + ',' + JSON.stringify(name) + ',function() {');
this.nest.unshift('for');
},
'endfor': function () {
this.nest.shift();
this.push('});');
},
'raw': function () {
this.rawMode = true;
},
'endraw': function () {
this.rawMode = false;
},
'set': function (stmt) {
var i = stmt.indexOf('=');
var name = stmt.slice(0, i).trim();
var expr = stmt.slice(i + 1).trim();
this.push('set(' + JSON.stringify(name) + ',' + this.parseExpr(expr) + ');');
},
'block': function (name) {
if (this.isParent) {
++this.parentBlocks;
var blockName = 'block_' + (this.escName(name) || this.parentBlocks);
this.push('block(typeof ' + blockName + ' == "function" ? ' + blockName + ' : function() {');
} else if (this.hasParent) {
this.isSilent = false;
++this.childBlocks;
blockName = 'block_' + (this.escName(name) || this.childBlocks);
this.push('function ' + blockName + '() {');
}
this.nest.unshift('block');
},
'endblock': function () {
this.nest.shift();
if (this.isParent) {
this.push('});');
} else if (this.hasParent) {
this.push('}');
this.isSilent = true;
}
},
'extends': function (name) {
name = this.parseQuoted(name);
var parentSrc = this.readTemplateFile(name);
this.isParent = true;
this.tokenize(parentSrc);
this.isParent = false;
this.hasParent = true;
//silence output until we enter a child block
this.isSilent = true;
},
'include': function (name) {
name = this.parseQuoted(name);
var incSrc = this.readTemplateFile(name);
this.isInclude = true;
this.tokenize(incSrc);
this.isInclude = false;
}
};
//liquid style
tagHandlers.assign = tagHandlers.set;
//python/django style
tagHandlers.elif = tagHandlers.elseif;
var getRuntime = function runtime(data, opts) {
var defaults = {autoEscape: 'toJson'};
var _toString = Object.prototype.toString;
var _hasOwnProperty = Object.prototype.hasOwnProperty;
var getKeys = Object.keys || function (obj) {
var keys = [];
for (var n in obj) if (_hasOwnProperty.call(obj, n)) keys.push(n);
return keys;
};
var isArray = Array.isArray || function (obj) {
return _toString.call(obj) === '[object Array]';
};
var create = Object.create || function (obj) {
function F() {
}
F.prototype = obj;
return new F();
};
var toString = function (val) {
if (val == null) return '';
return (typeof val.toString == 'function') ? val.toString() : _toString.call(val);
};
var extend = function (dest, src) {
var keys = getKeys(src);
for (var i = 0, len = keys.length; i < len; i++) {
var key = keys[i];
dest[key] = src[key];
}
return dest;
};
//get a value, lexically, starting in current context; a.b -> get("a","b")
var get = function () {
var val, n = arguments[0], c = stack.length;
while (c--) {
val = stack[c][n];
if (typeof val != 'undefined') break;
}
for (var i = 1, len = arguments.length; i < len; i++) {
if (val == null) continue;
n = arguments[i];
val = (_hasOwnProperty.call(val, n)) ? val[n] : (typeof val._get == 'function' ? (val[n] = val._get(n)) : null);
}
return (val == null) ? '' : val;
};
var set = function (n, val) {
stack[stack.length - 1][n] = val;
};
var push = function (ctx) {
stack.push(ctx || {});
};
var pop = function () {
stack.pop();
};
var write = function (str) {
output.push(str);
};
var filter = function (val) {
for (var i = 1, len = arguments.length; i < len; i++) {
var arr = arguments[i], name = arr[0], filter = filters[name];
if (filter) {
arr[0] = val;
//now arr looks like [val, arg1, arg2]
val = filter.apply(data, arr);
} else {
throw new Error('Invalid filter: ' + name);
}
}
if (opts.autoEscape && name !== opts.autoEscape && name !== 'safe') {
//auto escape if not explicitly safe or already escaped
val = filters[opts.autoEscape].call(data, val);
}
output.push(val);
};
var each = function (obj, loopvar, fn1, fn2) {
if (obj == null) return;
var arr = isArray(obj) ? obj : getKeys(obj), len = arr.length;
var ctx = {loop: {length: len, first: arr[0], last: arr[len - 1]}};
push(ctx);
for (var i = 0; i < len; i++) {
extend(ctx.loop, {index: i + 1, index0: i});
fn1(ctx[loopvar] = arr[i]);
}
if (len === 0 && fn2) fn2();
pop();
};
var block = function (fn) {
push();
fn();
pop();
};
var render = function () {
return output.join('');
};
data = data || {};
opts = extend(defaults, opts || {});
var filters = extend({
html: function (val) {
return toString(val)
.split('&').join('&amp;')
.split('<').join('&lt;')
.split('>').join('&gt;')
.split('"').join('&quot;');
},
safe: function (val) {
return val;
},
toJson: function (val) {
if (typeof val === 'object') {
return JSON.stringify(val);
}
return toString(val);
}
}, opts.filters || {});
var stack = [create(data || {})], output = [];
return {
get: get,
set: set,
push: push,
pop: pop,
write: write,
filter: filter,
each: each,
block: block,
render: render
};
};
var runtime;
jinja.compile = function (markup, opts) {
opts = opts || {};
var parser = new Parser();
parser.readTemplateFile = this.readTemplateFile;
var code = [];
code.push('function render($) {');
code.push('var get = $.get, set = $.set, push = $.push, pop = $.pop, write = $.write, filter = $.filter, each = $.each, block = $.block;');
code.push.apply(code, parser.parse(markup));
code.push('return $.render();');
code.push('}');
code = code.join('\n');
if (opts.runtime === false) {
var fn = new Function('data', 'options', 'return (' + code + ')(runtime(data, options))');
} else {
runtime = runtime || (runtime = getRuntime.toString());
fn = new Function('data', 'options', 'return (' + code + ')((' + runtime + ')(data, options))');
}
return {render: fn};
};
jinja.render = function (markup, data, opts) {
var tmpl = jinja.compile(markup);
return tmpl.render(data, opts);
};
jinja.templateFiles = [];
jinja.readTemplateFile = function (name) {
var templateFiles = this.templateFiles || [];
var templateFile = templateFiles[name];
if (templateFile == null) {
throw new Error('Template file not found: ' + name);
}
return templateFile;
};
/*!
* Helpers
*/
function trimLeft(str) {
return str.replace(LEADING_SPACE, '');
}
function trimRight(str) {
return str.replace(TRAILING_SPACE, '');
}
function matchAll(str, reg, fn) {
//copy as global
reg = new RegExp(reg.source, 'g' + (reg.ignoreCase ? 'i' : '') + (reg.multiline ? 'm' : ''));
var match;
while ((match = reg.exec(str))) {
var result = fn(match[0], match.index, str);
if (typeof result == 'number') {
reg.lastIndex = result;
}
}
}
}));
-265
View File
@@ -1,265 +0,0 @@
/*
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
(function webpackUniversalModuleDefinition(root, factory) {
if (typeof exports === 'object' && typeof module === 'object') {
// CommonJS
module.exports = exports = factory();
} else if (typeof define === 'function' && define.amd) {
// AMD
define([], factory);
} else {
// Global (browser)
globalThis.JSEncrypt = factory();
}
})(this, () => {
return /******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ "./lib/JSEncrypt.js":
/*!**************************!*\
!*** ./lib/JSEncrypt.js ***!
\**************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncrypt\": () => (/* binding */ JSEncrypt)\n/* harmony export */ });\n/* harmony import */ var _lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/jsbn/base64 */ \"./lib/lib/jsbn/base64.js\");\n/* harmony import */ var _JSEncryptRSAKey__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./JSEncryptRSAKey */ \"./lib/JSEncryptRSAKey.js\");\n/* provided dependency */ var process = __webpack_require__(/*! process/browser */ \"./node_modules/process/browser.js\");\nvar _a;\n\n\nvar version = typeof process !== 'undefined'\n ? (_a = process.env) === null || _a === void 0 ? void 0 : \"3.3.2\"\n : undefined;\n/**\n *\n * @param {Object} [options = {}] - An object to customize JSEncrypt behaviour\n * possible parameters are:\n * - default_key_size {number} default: 1024 the key size in bit\n * - default_public_exponent {string} default: '010001' the hexadecimal representation of the public exponent\n * - log {boolean} default: false whether log warn/error or not\n * @constructor\n */\nvar JSEncrypt = /** @class */ (function () {\n function JSEncrypt(options) {\n if (options === void 0) { options = {}; }\n options = options || {};\n this.default_key_size = options.default_key_size\n ? parseInt(options.default_key_size, 10)\n : 1024;\n this.default_public_exponent = options.default_public_exponent || \"010001\"; // 65537 default openssl public exponent for rsa key type\n this.log = options.log || false;\n // The private and public key.\n this.key = null;\n }\n /**\n * Method to set the rsa key parameter (one method is enough to set both the public\n * and the private key, since the private key contains the public key paramenters)\n * Log a warning if logs are enabled\n * @param {Object|string} key the pem encoded string or an object (with or without header/footer)\n * @public\n */\n JSEncrypt.prototype.setKey = function (key) {\n if (this.log && this.key) {\n console.warn(\"A key was already set, overriding existing.\");\n }\n this.key = new _JSEncryptRSAKey__WEBPACK_IMPORTED_MODULE_1__.JSEncryptRSAKey(key);\n };\n /**\n * Proxy method for setKey, for api compatibility\n * @see setKey\n * @public\n */\n JSEncrypt.prototype.setPrivateKey = function (privkey) {\n // Create the key.\n this.setKey(privkey);\n };\n /**\n * Proxy method for setKey, for api compatibility\n * @see setKey\n * @public\n */\n JSEncrypt.prototype.setPublicKey = function (pubkey) {\n // Sets the public key.\n this.setKey(pubkey);\n };\n /**\n * Proxy method for RSAKey object's decrypt, decrypt the string using the private\n * components of the rsa key object. Note that if the object was not set will be created\n * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor\n * @param {string} str base64 encoded crypted string to decrypt\n * @return {string} the decrypted string\n * @public\n */\n JSEncrypt.prototype.decrypt = function (str) {\n // Return the decrypted string.\n try {\n return this.getKey().decrypt((0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.b64tohex)(str));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's encrypt, encrypt the string using the public\n * components of the rsa key object. Note that if the object was not set will be created\n * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor\n * @param {string} str the string to encrypt\n * @return {string} the encrypted string encoded in base64\n * @public\n */\n JSEncrypt.prototype.encrypt = function (str) {\n // Return the encrypted string.\n try {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getKey().encrypt(str));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's sign.\n * @param {string} str the string to sign\n * @param {function} digestMethod hash method\n * @param {string} digestName the name of the hash algorithm\n * @return {string} the signature encoded in base64\n * @public\n */\n JSEncrypt.prototype.sign = function (str, digestMethod, digestName) {\n // return the RSA signature of 'str' in 'hex' format.\n try {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getKey().sign(str, digestMethod, digestName));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy Line truncated
/***/ }),
/***/ "./lib/JSEncryptRSAKey.js":
/*!********************************!*\
!*** ./lib/JSEncryptRSAKey.js ***!
\********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncryptRSAKey\": () => (/* binding */ JSEncryptRSAKey)\n/* harmony export */ });\n/* harmony import */ var _lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/jsbn/base64 */ \"./lib/lib/jsbn/base64.js\");\n/* harmony import */ var _lib_asn1js_hex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/asn1js/hex */ \"./lib/lib/asn1js/hex.js\");\n/* harmony import */ var _lib_asn1js_base64__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lib/asn1js/base64 */ \"./lib/lib/asn1js/base64.js\");\n/* harmony import */ var _lib_asn1js_asn1__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lib/asn1js/asn1 */ \"./lib/lib/asn1js/asn1.js\");\n/* harmony import */ var _lib_jsbn_rsa__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./lib/jsbn/rsa */ \"./lib/lib/jsbn/rsa.js\");\n/* harmony import */ var _lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lib/jsbn/jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./lib/jsrsasign/asn1-1.0 */ \"./lib/lib/jsrsasign/asn1-1.0.js\");\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\n\n\n\n/**\n * Create a new JSEncryptRSAKey that extends Tom Wu's RSA key object.\n * This object is just a decorator for parsing the key parameter\n * @param {string|Object} key - The key in string format, or an object containing\n * the parameters needed to build a RSAKey object.\n * @constructor\n */\nvar JSEncryptRSAKey = /** @class */ (function (_super) {\n __extends(JSEncryptRSAKey, _super);\n function JSEncryptRSAKey(key) {\n var _this = _super.call(this) || this;\n // Call the super constructor.\n // RSAKey.call(this);\n // If a key key was provided.\n if (key) {\n // If this is a string...\n if (typeof key === \"string\") {\n _this.parseKey(key);\n }\n else if (JSEncryptRSAKey.hasPrivateKeyProperty(key) ||\n JSEncryptRSAKey.hasPublicKeyProperty(key)) {\n // Set the values for the key.\n _this.parsePropertiesFrom(key);\n }\n }\n return _this;\n }\n /**\n * Method to parse a pem encoded string containing both a public or private key.\n * The method will translate the pem encoded string in a der encoded string and\n * will parse private key and public key parameters. This method accepts public key\n * in the rsaencryption pkcs #1 format (oid: 1.2.840.113549.1.1.1).\n *\n * @todo Check how many rsa formats use the same format of pkcs #1.\n *\n * The format is defined as:\n * PublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * PublicKey BIT STRING\n * }\n * Where AlgorithmIdentifier is:\n * AlgorithmIdentifier ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER, the OID of the enc algorithm\n * parameters ANY DEFINED BY algorithm OPTIONAL (NULL for PKCS #1)\n * }\n * and PublicKey is a SEQUENCE encapsulated in a BIT STRING\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n * it's possible to examine the structure of the keys obtained from openssl using\n * an asn.1 dumper as the one used here to parse the components: http://lapo.it/asn1js/\n * @argument {string} pem the pem encoded string, can include the BEGIN/END header/footer\n * @private\n */\n JSEncryptRSAKey.prototype.parseKey = function (pem) {\n try {\n var modulus = 0;\n var public_exponent = 0;\n var reHex = /^\\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\\s*)+$/;\n var der = reHex.test(pem) ? _lib_asn1js_hex__WEBPACK_IMPORTED_MODULE_1__.Hex.decode(pem) : _lib_asn1js_base64__WEBPACK_IMPORTED_MODULE_2__.Base64.unarmor(pem);\n var asn1 = _lib_asn1js_asn1__WEBPACK_IMPORTED_MODULE_3__.ASN1.decode(der);\n // Fixes a bug with OpenSSL 1.0+ private keys\n Line truncated
/***/ }),
/***/ "./lib/index.js":
/*!**********************!*\
!*** ./lib/index.js ***!
\**********************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncrypt\": () => (/* reexport safe */ _JSEncrypt__WEBPACK_IMPORTED_MODULE_0__.JSEncrypt),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _JSEncrypt__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./JSEncrypt */ \"./lib/JSEncrypt.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_JSEncrypt__WEBPACK_IMPORTED_MODULE_0__.JSEncrypt);\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/index.js?");
/***/ }),
/***/ "./lib/lib/asn1js/asn1.js":
/*!********************************!*\
!*** ./lib/lib/asn1js/asn1.js ***!
\********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ASN1\": () => (/* binding */ ASN1),\n/* harmony export */ \"ASN1Tag\": () => (/* binding */ ASN1Tag),\n/* harmony export */ \"Stream\": () => (/* binding */ Stream)\n/* harmony export */ });\n/* harmony import */ var _int10__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./int10 */ \"./lib/lib/asn1js/int10.js\");\n// ASN.1 JavaScript decoder\n// Copyright (c) 2008-2014 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\n/*global oids */\n\nvar ellipsis = \"\\u2026\";\nvar reTimeS = /^(\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;\nvar reTimeL = /^(\\d\\d\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;\nfunction stringCut(str, len) {\n if (str.length > len) {\n str = str.substring(0, len) + ellipsis;\n }\n return str;\n}\nvar Stream = /** @class */ (function () {\n function Stream(enc, pos) {\n this.hexDigits = \"0123456789ABCDEF\";\n if (enc instanceof Stream) {\n this.enc = enc.enc;\n this.pos = enc.pos;\n }\n else {\n // enc should be an array or a binary string\n this.enc = enc;\n this.pos = pos;\n }\n }\n Stream.prototype.get = function (pos) {\n if (pos === undefined) {\n pos = this.pos++;\n }\n if (pos >= this.enc.length) {\n throw new Error(\"Requesting byte offset \".concat(pos, \" on a stream of length \").concat(this.enc.length));\n }\n return (\"string\" === typeof this.enc) ? this.enc.charCodeAt(pos) : this.enc[pos];\n };\n Stream.prototype.hexByte = function (b) {\n return this.hexDigits.charAt((b >> 4) & 0xF) + this.hexDigits.charAt(b & 0xF);\n };\n Stream.prototype.hexDump = function (start, end, raw) {\n var s = \"\";\n for (var i = start; i < end; ++i) {\n s += this.hexByte(this.get(i));\n if (raw !== true) {\n switch (i & 0xF) {\n case 0x7:\n s += \" \";\n break;\n case 0xF:\n s += \"\\n\";\n break;\n default:\n s += \" \";\n }\n }\n }\n return s;\n };\n Stream.prototype.isASCII = function (start, end) {\n for (var i = start; i < end; ++i) {\n var c = this.get(i);\n if (c < 32 || c > 176) {\n return false;\n }\n }\n return true;\n };\n Stream.prototype.parseStringISO = function (start, end) {\n var s = \"\";\n for (var i = start; i < end; ++i) {\n s += String.fromCharCode(this.get(i));\n }\n return s;\n };\n Stream.prototype.parseStringUTF = function (start, end) {\n var s = \"\";\n for (var i = start; i < end;) {\n var c = this.get(i++);\n if (c < 128) {\n s += String.fromCharCode(c);\n }\n else if ((c > 191) && (c < 224)) {\n s += String.fromCharCode(((c & 0x1F) << 6) | (this.get(i++) & 0x3F));\n }\n else {\n s += String.fromCharCode(((c & 0x0F) << 12) | ((this.get(i++) & 0x3F) << 6) | (this.get(i++) & 0x3F));\n }\n }\n return s;\n };\n Stream.prototype.parseStringBMP = function (start, end) {\n var str = \"\";\n var hi;\n var lo;\n for (var i = start; i < end;) {\n hi = this.get(i++);\n lo = this.get(i++);\n str += String.fromCharCode((hi << 8) | lo);\n }\n return str;\n };\n Stream.prototype.parseTime = function (start, end, shortYear) {\n var s = this.parseStringISO(start, end);\n var m = (shortYear ? reTimeS : rLine truncated
/***/ }),
/***/ "./lib/lib/asn1js/base64.js":
/*!**********************************!*\
!*** ./lib/lib/asn1js/base64.js ***!
\**********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Base64\": () => (/* binding */ Base64)\n/* harmony export */ });\n// Base64 JavaScript decoder\n// Copyright (c) 2008-2013 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar decoder;\nvar Base64 = {\n decode: function (a) {\n var i;\n if (decoder === undefined) {\n var b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var ignore = \"= \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";\n decoder = Object.create(null);\n for (i = 0; i < 64; ++i) {\n decoder[b64.charAt(i)] = i;\n }\n decoder['-'] = 62; //+\n decoder['_'] = 63; //-\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1;\n }\n }\n var out = [];\n var bits = 0;\n var char_count = 0;\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i);\n if (c == \"=\") {\n break;\n }\n c = decoder[c];\n if (c == -1) {\n continue;\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i);\n }\n bits |= c;\n if (++char_count >= 4) {\n out[out.length] = (bits >> 16);\n out[out.length] = (bits >> 8) & 0xFF;\n out[out.length] = bits & 0xFF;\n bits = 0;\n char_count = 0;\n }\n else {\n bits <<= 6;\n }\n }\n switch (char_count) {\n case 1:\n throw new Error(\"Base64 encoding incomplete: at least 2 bits missing\");\n case 2:\n out[out.length] = (bits >> 10);\n break;\n case 3:\n out[out.length] = (bits >> 16);\n out[out.length] = (bits >> 8) & 0xFF;\n break;\n }\n return out;\n },\n re: /-----BEGIN [^-]+-----([A-Za-z0-9+\\/=\\s]+)-----END [^-]+-----|begin-base64[^\\n]+\\n([A-Za-z0-9+\\/=\\s]+)====/,\n unarmor: function (a) {\n var m = Base64.re.exec(a);\n if (m) {\n if (m[1]) {\n a = m[1];\n }\n else if (m[2]) {\n a = m[2];\n }\n else {\n throw new Error(\"RegExp out of sync\");\n }\n }\n return Base64.decode(a);\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/base64.js?");
/***/ }),
/***/ "./lib/lib/asn1js/hex.js":
/*!*******************************!*\
!*** ./lib/lib/asn1js/hex.js ***!
\*******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Hex\": () => (/* binding */ Hex)\n/* harmony export */ });\n// Hex JavaScript decoder\n// Copyright (c) 2008-2013 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar decoder;\nvar Hex = {\n decode: function (a) {\n var i;\n if (decoder === undefined) {\n var hex = \"0123456789ABCDEF\";\n var ignore = \" \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";\n decoder = {};\n for (i = 0; i < 16; ++i) {\n decoder[hex.charAt(i)] = i;\n }\n hex = hex.toLowerCase();\n for (i = 10; i < 16; ++i) {\n decoder[hex.charAt(i)] = i;\n }\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1;\n }\n }\n var out = [];\n var bits = 0;\n var char_count = 0;\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i);\n if (c == \"=\") {\n break;\n }\n c = decoder[c];\n if (c == -1) {\n continue;\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i);\n }\n bits |= c;\n if (++char_count >= 2) {\n out[out.length] = bits;\n bits = 0;\n char_count = 0;\n }\n else {\n bits <<= 4;\n }\n }\n if (char_count) {\n throw new Error(\"Hex encoding incomplete: 4 bits missing\");\n }\n return out;\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/hex.js?");
/***/ }),
/***/ "./lib/lib/asn1js/int10.js":
/*!*********************************!*\
!*** ./lib/lib/asn1js/int10.js ***!
\*********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Int10\": () => (/* binding */ Int10)\n/* harmony export */ });\n// Big integer base-10 printing library\n// Copyright (c) 2014 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar max = 10000000000000; // biggest integer that can still fit 2^53 when multiplied by 256\nvar Int10 = /** @class */ (function () {\n function Int10(value) {\n this.buf = [+value || 0];\n }\n Int10.prototype.mulAdd = function (m, c) {\n // assert(m <= 256)\n var b = this.buf;\n var l = b.length;\n var i;\n var t;\n for (i = 0; i < l; ++i) {\n t = b[i] * m + c;\n if (t < max) {\n c = 0;\n }\n else {\n c = 0 | (t / max);\n t -= c * max;\n }\n b[i] = t;\n }\n if (c > 0) {\n b[i] = c;\n }\n };\n Int10.prototype.sub = function (c) {\n // assert(m <= 256)\n var b = this.buf;\n var l = b.length;\n var i;\n var t;\n for (i = 0; i < l; ++i) {\n t = b[i] - c;\n if (t < 0) {\n t += max;\n c = 1;\n }\n else {\n c = 0;\n }\n b[i] = t;\n }\n while (b[b.length - 1] === 0) {\n b.pop();\n }\n };\n Int10.prototype.toString = function (base) {\n if ((base || 10) != 10) {\n throw new Error(\"only base 10 is supported\");\n }\n var b = this.buf;\n var s = b[b.length - 1].toString();\n for (var i = b.length - 2; i >= 0; --i) {\n s += (max + b[i]).toString().substring(1);\n }\n return s;\n };\n Int10.prototype.valueOf = function () {\n var b = this.buf;\n var v = 0;\n for (var i = b.length - 1; i >= 0; --i) {\n v = v * max + b[i];\n }\n return v;\n };\n Int10.prototype.simplify = function () {\n var b = this.buf;\n return (b.length == 1) ? b[0] : this;\n };\n return Int10;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/int10.js?");
/***/ }),
/***/ "./lib/lib/jsbn/base64.js":
/*!********************************!*\
!*** ./lib/lib/jsbn/base64.js ***!
\********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"b64toBA\": () => (/* binding */ b64toBA),\n/* harmony export */ \"b64tohex\": () => (/* binding */ b64tohex),\n/* harmony export */ \"hex2b64\": () => (/* binding */ hex2b64)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./lib/lib/jsbn/util.js\");\n\nvar b64map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar b64pad = \"=\";\nfunction hex2b64(h) {\n var i;\n var c;\n var ret = \"\";\n for (i = 0; i + 3 <= h.length; i += 3) {\n c = parseInt(h.substring(i, i + 3), 16);\n ret += b64map.charAt(c >> 6) + b64map.charAt(c & 63);\n }\n if (i + 1 == h.length) {\n c = parseInt(h.substring(i, i + 1), 16);\n ret += b64map.charAt(c << 2);\n }\n else if (i + 2 == h.length) {\n c = parseInt(h.substring(i, i + 2), 16);\n ret += b64map.charAt(c >> 2) + b64map.charAt((c & 3) << 4);\n }\n while ((ret.length & 3) > 0) {\n ret += b64pad;\n }\n return ret;\n}\n// convert a base64 string to hex\nfunction b64tohex(s) {\n var ret = \"\";\n var i;\n var k = 0; // b64 state, 0-3\n var slop = 0;\n for (i = 0; i < s.length; ++i) {\n if (s.charAt(i) == b64pad) {\n break;\n }\n var v = b64map.indexOf(s.charAt(i));\n if (v < 0) {\n continue;\n }\n if (k == 0) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v >> 2);\n slop = v & 3;\n k = 1;\n }\n else if (k == 1) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)((slop << 2) | (v >> 4));\n slop = v & 0xf;\n k = 2;\n }\n else if (k == 2) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(slop);\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v >> 2);\n slop = v & 3;\n k = 3;\n }\n else {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)((slop << 2) | (v >> 4));\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v & 0xf);\n k = 0;\n }\n }\n if (k == 1) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(slop << 2);\n }\n return ret;\n}\n// convert a base64 string to a byte/number array\nfunction b64toBA(s) {\n // piggyback on b64tohex for now, optimize later\n var h = b64tohex(s);\n var i;\n var a = [];\n for (i = 0; 2 * i < h.length; ++i) {\n a[i] = parseInt(h.substring(2 * i, 2 * i + 2), 16);\n }\n return a;\n}\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/base64.js?");
/***/ }),
/***/ "./lib/lib/jsbn/jsbn.js":
/*!******************************!*\
!*** ./lib/lib/jsbn/jsbn.js ***!
\******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"BigInteger\": () => (/* binding */ BigInteger),\n/* harmony export */ \"intAt\": () => (/* binding */ intAt),\n/* harmony export */ \"nbi\": () => (/* binding */ nbi),\n/* harmony export */ \"nbits\": () => (/* binding */ nbits),\n/* harmony export */ \"nbv\": () => (/* binding */ nbv),\n/* harmony export */ \"parseBigInt\": () => (/* binding */ parseBigInt)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./lib/lib/jsbn/util.js\");\n// Copyright (c) 2005 Tom Wu\n// All Rights Reserved.\n// See \"LICENSE\" for details.\n// Basic JavaScript BN library - subset useful for RSA encryption.\n\n// Bits per digit\nvar dbits;\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary & 0xffffff) == 0xefcafe);\n//#region\nvar lowprimes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997];\nvar lplim = (1 << 26) / lowprimes[lowprimes.length - 1];\n//#endregion\n// (public) Constructor\nvar BigInteger = /** @class */ (function () {\n function BigInteger(a, b, c) {\n if (a != null) {\n if (\"number\" == typeof a) {\n this.fromNumber(a, b, c);\n }\n else if (b == null && \"string\" != typeof a) {\n this.fromString(a, 256);\n }\n else {\n this.fromString(a, b);\n }\n }\n }\n //#region PUBLIC\n // BigInteger.prototype.toString = bnToString;\n // (public) return string representation in given radix\n BigInteger.prototype.toString = function (b) {\n if (this.s < 0) {\n return \"-\" + this.negate().toString(b);\n }\n var k;\n if (b == 16) {\n k = 4;\n }\n else if (b == 8) {\n k = 3;\n }\n else if (b == 2) {\n k = 1;\n }\n else if (b == 32) {\n k = 5;\n }\n else if (b == 4) {\n k = 2;\n }\n else {\n return this.toRadix(b);\n }\n var km = (1 << k) - 1;\n var d;\n var m = false;\n var r = \"\";\n var i = this.t;\n var p = this.DB - (i * this.DB) % k;\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) > 0) {\n m = true;\n r = (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(d);\n }\n while (i >= 0) {\n if (p < k) {\n d = (this[i] & ((1 << p) - 1)) << (k - p);\n d |= this[--i] >> (p += this.DB - k);\n }\n else {\n d = (this[i] >> (p -= k)) & km;\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n if (d > 0) {\n m = true;\n }\n if (m) {\n r += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(d);\n }\n }\n }\n return m ? r : \"0\";\n };\n // BigInteger.prototype.negate = bnNegate;\n // (public) -this\n BigInteger.prototype.negate = function () {\n var r = nbi();\n BigInteger.ZERO.subTo(this, r);\n return r;\n };\n // BigInteger.prototype.abs = bnAbs;\n // (public) |this|\n BigInteger.prototype.abs = function () {\n return (this.s < 0) ? this.negate() : this;\n };\n // BigInteger.prototype.compareTo = bnCompareTo;\n // (public) return + if this > a, - if this < a, 0 if equal\n BigInteger.prototype.compareTo = function (a) {\n var r = this.s - a.s;\n if (r != 0) {\n return r;\n }\n var i = this.t;\n r = i - a.t;\n if (r != 0) {\n return (this.s < 0) ? -r : r;\n }\n while (--i >= 0) {\n if ((r = this[i] - a[i]) != 0) {\n return r;\n }\n }\n return 0;\n };\n // BigInteger.prototype.bitLength = bnBi Line truncated
/***/ }),
/***/ "./lib/lib/jsbn/prng4.js":
/*!*******************************!*\
!*** ./lib/lib/jsbn/prng4.js ***!
\*******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Arcfour\": () => (/* binding */ Arcfour),\n/* harmony export */ \"prng_newstate\": () => (/* binding */ prng_newstate),\n/* harmony export */ \"rng_psize\": () => (/* binding */ rng_psize)\n/* harmony export */ });\n// prng4.js - uses Arcfour as a PRNG\nvar Arcfour = /** @class */ (function () {\n function Arcfour() {\n this.i = 0;\n this.j = 0;\n this.S = [];\n }\n // Arcfour.prototype.init = ARC4init;\n // Initialize arcfour context from key, an array of ints, each from [0..255]\n Arcfour.prototype.init = function (key) {\n var i;\n var j;\n var t;\n for (i = 0; i < 256; ++i) {\n this.S[i] = i;\n }\n j = 0;\n for (i = 0; i < 256; ++i) {\n j = (j + this.S[i] + key[i % key.length]) & 255;\n t = this.S[i];\n this.S[i] = this.S[j];\n this.S[j] = t;\n }\n this.i = 0;\n this.j = 0;\n };\n // Arcfour.prototype.next = ARC4next;\n Arcfour.prototype.next = function () {\n var t;\n this.i = (this.i + 1) & 255;\n this.j = (this.j + this.S[this.i]) & 255;\n t = this.S[this.i];\n this.S[this.i] = this.S[this.j];\n this.S[this.j] = t;\n return this.S[(t + this.S[this.i]) & 255];\n };\n return Arcfour;\n}());\n\n// Plug in your RNG constructor here\nfunction prng_newstate() {\n return new Arcfour();\n}\n// Pool size must be a multiple of 4 and greater than 32.\n// An array of bytes the size of the pool will be passed to init()\nvar rng_psize = 256;\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/prng4.js?");
/***/ }),
/***/ "./lib/lib/jsbn/rng.js":
/*!*****************************!*\
!*** ./lib/lib/jsbn/rng.js ***!
\*****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SecureRandom\": () => (/* binding */ SecureRandom)\n/* harmony export */ });\n/* harmony import */ var _prng4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./prng4 */ \"./lib/lib/jsbn/prng4.js\");\n// Random number generator - requires a PRNG backend, e.g. prng4.js\n\nvar rng_state;\nvar rng_pool = null;\nvar rng_pptr;\n// Initialize the pool with junk if needed.\nif (rng_pool == null) {\n rng_pool = [];\n rng_pptr = 0;\n var t = void 0;\n if (typeof window !== 'undefined' && window.crypto && window.crypto.getRandomValues) {\n // Extract entropy (2048 bits) from RNG if available\n var z = new Uint32Array(256);\n window.crypto.getRandomValues(z);\n for (t = 0; t < z.length; ++t) {\n rng_pool[rng_pptr++] = z[t] & 255;\n }\n }\n // Use mouse events for entropy, if we do not have enough entropy by the time\n // we need it, entropy will be generated by Math.random.\n var count = 0;\n var onMouseMoveListener_1 = function (ev) {\n count = count || 0;\n if (count >= 256 || rng_pptr >= _prng4__WEBPACK_IMPORTED_MODULE_0__.rng_psize) {\n if (window.removeEventListener) {\n window.removeEventListener(\"mousemove\", onMouseMoveListener_1, false);\n }\n else if (window.detachEvent) {\n window.detachEvent(\"onmousemove\", onMouseMoveListener_1);\n }\n return;\n }\n try {\n var mouseCoordinates = ev.x + ev.y;\n rng_pool[rng_pptr++] = mouseCoordinates & 255;\n count += 1;\n }\n catch (e) {\n // Sometimes Firefox will deny permission to access event properties for some reason. Ignore.\n }\n };\n if (typeof window !== 'undefined') {\n if (window.addEventListener) {\n window.addEventListener(\"mousemove\", onMouseMoveListener_1, false);\n }\n else if (window.attachEvent) {\n window.attachEvent(\"onmousemove\", onMouseMoveListener_1);\n }\n }\n}\nfunction rng_get_byte() {\n if (rng_state == null) {\n rng_state = (0,_prng4__WEBPACK_IMPORTED_MODULE_0__.prng_newstate)();\n // At this point, we may not have collected enough entropy. If not, fall back to Math.random\n while (rng_pptr < _prng4__WEBPACK_IMPORTED_MODULE_0__.rng_psize) {\n var random = Math.floor(65536 * Math.random());\n rng_pool[rng_pptr++] = random & 255;\n }\n rng_state.init(rng_pool);\n for (rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) {\n rng_pool[rng_pptr] = 0;\n }\n rng_pptr = 0;\n }\n // TODO: allow reseeding after first request\n return rng_state.next();\n}\nvar SecureRandom = /** @class */ (function () {\n function SecureRandom() {\n }\n SecureRandom.prototype.nextBytes = function (ba) {\n for (var i = 0; i < ba.length; ++i) {\n ba[i] = rng_get_byte();\n }\n };\n return SecureRandom;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/rng.js?");
/***/ }),
/***/ "./lib/lib/jsbn/rsa.js":
/*!*****************************!*\
!*** ./lib/lib/jsbn/rsa.js ***!
\*****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"RSAKey\": () => (/* binding */ RSAKey)\n/* harmony export */ });\n/* harmony import */ var _jsbn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _rng__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rng */ \"./lib/lib/jsbn/rng.js\");\n// Depends on jsbn.js and rng.js\n// Version 1.1: support utf-8 encoding in pkcs1pad2\n// convert a (hex) string to a bignum object\n\n\n// function linebrk(s,n) {\n// var ret = \"\";\n// var i = 0;\n// while(i + n < s.length) {\n// ret += s.substring(i,i+n) + \"\\n\";\n// i += n;\n// }\n// return ret + s.substring(i,s.length);\n// }\n// function byte2Hex(b) {\n// if(b < 0x10)\n// return \"0\" + b.toString(16);\n// else\n// return b.toString(16);\n// }\nfunction pkcs1pad1(s, n) {\n if (n < s.length + 22) {\n console.error(\"Message too long for RSA\");\n return null;\n }\n var len = n - s.length - 6;\n var filler = \"\";\n for (var f = 0; f < len; f += 2) {\n filler += \"ff\";\n }\n var m = \"0001\" + filler + \"00\" + s;\n return (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(m, 16);\n}\n// PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint\nfunction pkcs1pad2(s, n) {\n if (n < s.length + 11) { // TODO: fix for utf-8\n console.error(\"Message too long for RSA\");\n return null;\n }\n var ba = [];\n var i = s.length - 1;\n while (i >= 0 && n > 0) {\n var c = s.charCodeAt(i--);\n if (c < 128) { // encode using utf-8\n ba[--n] = c;\n }\n else if ((c > 127) && (c < 2048)) {\n ba[--n] = (c & 63) | 128;\n ba[--n] = (c >> 6) | 192;\n }\n else {\n ba[--n] = (c & 63) | 128;\n ba[--n] = ((c >> 6) & 63) | 128;\n ba[--n] = (c >> 12) | 224;\n }\n }\n ba[--n] = 0;\n var rng = new _rng__WEBPACK_IMPORTED_MODULE_1__.SecureRandom();\n var x = [];\n while (n > 2) { // random non-zero pad\n x[0] = 0;\n while (x[0] == 0) {\n rng.nextBytes(x);\n }\n ba[--n] = x[0];\n }\n ba[--n] = 2;\n ba[--n] = 0;\n return new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(ba);\n}\n// \"empty\" RSA key constructor\nvar RSAKey = /** @class */ (function () {\n function RSAKey() {\n this.n = null;\n this.e = 0;\n this.d = null;\n this.p = null;\n this.q = null;\n this.dmp1 = null;\n this.dmq1 = null;\n this.coeff = null;\n }\n //#region PROTECTED\n // protected\n // RSAKey.prototype.doPublic = RSADoPublic;\n // Perform raw public operation on \"x\": return x^e (mod n)\n RSAKey.prototype.doPublic = function (x) {\n return x.modPowInt(this.e, this.n);\n };\n // RSAKey.prototype.doPrivate = RSADoPrivate;\n // Perform raw private operation on \"x\": return x^d (mod n)\n RSAKey.prototype.doPrivate = function (x) {\n if (this.p == null || this.q == null) {\n return x.modPow(this.d, this.n);\n }\n // TODO: re-calculate any missing CRT params\n var xp = x.mod(this.p).modPow(this.dmp1, this.p);\n var xq = x.mod(this.q).modPow(this.dmq1, this.q);\n while (xp.compareTo(xq) < 0) {\n xp = xp.add(this.p);\n }\n return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq);\n };\n //#endregion PROTECTED\n //#region PUBLIC\n // RSAKey.prototype.setPublic = RSASetPublic;\n // Set the public key fields N and e from hex strings\n RSAKey.prototype.setPublic = function (N, E) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(N, 16);\n this.e = parseInt(E, 16);\n }\n else {\n console.error(\"Invalid RSA public key\");\n }\n };\n // RSAKey.prototype.encrypt = RSAEncrypt;\n // Return the PKCS#1 RSA encryption of \"text\" as an even-length hex string\n RSAKey.prototype.encrypt = function (text) {\n var maxLength = (this.n.bitLength() + 7) >> 3;\n var m = pkcs1pad2(text, maxLength);\n if (m == null) {\n return null;\n }\n var c = this.doPublic(m);\n if (c == null) {\n return null;\n }\n var h = c.toString(16);\n var length = h.length;\n // fix zero before result\n for (var i = 0; i < maxLength * 2 - length; i++) {\n h = \"0\" + h;\n }\n return h;\n };\n // RSAKey.prototype.setPrivate = RSASetPrivate;\n // Set the private key fields N, e, and d from hex strings\n RSAKey.prototype.setPrivate = function (N, E, D) {\n if (N Line truncated
/***/ }),
/***/ "./lib/lib/jsbn/util.js":
/*!******************************!*\
!*** ./lib/lib/jsbn/util.js ***!
\******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"cbit\": () => (/* binding */ cbit),\n/* harmony export */ \"int2char\": () => (/* binding */ int2char),\n/* harmony export */ \"lbit\": () => (/* binding */ lbit),\n/* harmony export */ \"op_and\": () => (/* binding */ op_and),\n/* harmony export */ \"op_andnot\": () => (/* binding */ op_andnot),\n/* harmony export */ \"op_or\": () => (/* binding */ op_or),\n/* harmony export */ \"op_xor\": () => (/* binding */ op_xor)\n/* harmony export */ });\nvar BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\";\nfunction int2char(n) {\n return BI_RM.charAt(n);\n}\n//#region BIT_OPERATIONS\n// (public) this & a\nfunction op_and(x, y) {\n return x & y;\n}\n// (public) this | a\nfunction op_or(x, y) {\n return x | y;\n}\n// (public) this ^ a\nfunction op_xor(x, y) {\n return x ^ y;\n}\n// (public) this & ~a\nfunction op_andnot(x, y) {\n return x & ~y;\n}\n// return index of lowest 1-bit in x, x < 2^31\nfunction lbit(x) {\n if (x == 0) {\n return -1;\n }\n var r = 0;\n if ((x & 0xffff) == 0) {\n x >>= 16;\n r += 16;\n }\n if ((x & 0xff) == 0) {\n x >>= 8;\n r += 8;\n }\n if ((x & 0xf) == 0) {\n x >>= 4;\n r += 4;\n }\n if ((x & 3) == 0) {\n x >>= 2;\n r += 2;\n }\n if ((x & 1) == 0) {\n ++r;\n }\n return r;\n}\n// return number of 1 bits in x\nfunction cbit(x) {\n var r = 0;\n while (x != 0) {\n x &= x - 1;\n ++r;\n }\n return r;\n}\n//#endregion BIT_OPERATIONS\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/util.js?");
/***/ }),
/***/ "./lib/lib/jsrsasign/asn1-1.0.js":
/*!***************************************!*\
!*** ./lib/lib/jsrsasign/asn1-1.0.js ***!
\***************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"KJUR\": () => (/* binding */ KJUR)\n/* harmony export */ });\n/* harmony import */ var _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsbn/jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _yahoo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./yahoo */ \"./lib/lib/jsrsasign/yahoo.js\");\n/* asn1-1.0.13.js (c) 2013-2017 Kenji Urushima | kjur.github.com/jsrsasign/license\n */\n/*\n * asn1.js - ASN.1 DER encoder classes\n *\n * Copyright (c) 2013-2017 Kenji Urushima (kenji.urushima@gmail.com)\n *\n * This software is licensed under the terms of the MIT License.\n * https://kjur.github.io/jsrsasign/license\n *\n * The above copyright and license notice shall be\n * included in all copies or substantial portions of the Software.\n */\n\n\n/**\n * @fileOverview\n * @name asn1-1.0.js\n * @author Kenji Urushima kenji.urushima@gmail.com\n * @version asn1 1.0.13 (2017-Jun-02)\n * @since jsrsasign 2.1\n * @license <a href=\"https://kjur.github.io/jsrsasign/license/\">MIT License</a>\n */\n/**\n * kjur's class library name space\n * <p>\n * This name space provides following name spaces:\n * <ul>\n * <li>{@link KJUR.asn1} - ASN.1 primitive hexadecimal encoder</li>\n * <li>{@link KJUR.asn1.x509} - ASN.1 structure for X.509 certificate and CRL</li>\n * <li>{@link KJUR.crypto} - Java Cryptographic Extension(JCE) style MessageDigest/Signature\n * class and utilities</li>\n * </ul>\n * </p>\n * NOTE: Please ignore method summary and document of this namespace. This caused by a bug of jsdoc2.\n * @name KJUR\n * @namespace kjur's class library name space\n */\nvar KJUR = {};\n/**\n * kjur's ASN.1 class library name space\n * <p>\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 * <h4>PROVIDING ASN.1 PRIMITIVES</h4>\n * Here are ASN.1 DER primitive classes.\n * <ul>\n * <li>0x01 {@link KJUR.asn1.DERBoolean}</li>\n * <li>0x02 {@link KJUR.asn1.DERInteger}</li>\n * <li>0x03 {@link KJUR.asn1.DERBitString}</li>\n * <li>0x04 {@link KJUR.asn1.DEROctetString}</li>\n * <li>0x05 {@link KJUR.asn1.DERNull}</li>\n * <li>0x06 {@link KJUR.asn1.DERObjectIdentifier}</li>\n * <li>0x0a {@link KJUR.asn1.DEREnumerated}</li>\n * <li>0x0c {@link KJUR.asn1.DERUTF8String}</li>\n * <li>0x12 {@link KJUR.asn1.DERNumericString}</li>\n * <li>0x13 {@link KJUR.asn1.DERPrintableString}</li>\n * <li>0x14 {@link KJUR.asn1.DERTeletexString}</li>\n * <li>0x16 {@link KJUR.asn1.DERIA5String}</li>\n * <li>0x17 {@link KJUR.asn1.DERUTCTime}</li>\n * <li>0x18 {@link KJUR.asn1.DERGeneralizedTime}</li>\n * <li>0x30 {@link KJUR.asn1.DERSequence}</li>\n * <li>0x31 {@link KJUR.asn1.DERSet}</li>\n * </ul>\n * <h4>OTHER ASN.1 CLASSES</h4>\n * <ul>\n * <li>{@link KJUR.asn1.ASN1Object}</li>\n * <li>{@link KJUR.asn1.DERAbstractString}</li>\n * <li>{@link KJUR.asn1.DERAbstractTime}</li>\n * <li>{@link KJUR.asn1.DERAbstractStructured}</li>\n * <li>{@link KJUR.asn1.DERTaggedObject}</li>\n * </ul>\n * <h4>SUB NAME SPACES</h4>\n * <ul>\n * <li>{@link KJUR.asn1.cades} - CAdES long term signature format</li>\n * <li>{@link KJUR.asn1.cms} - Cryptographic Message Syntax</li>\n * <li>{@link KJUR.asn1.csr} - Certificate Signing Request (CSR/PKCS#10)</li>\n * <li>{@link KJUR.asn1.tsp} - RFC 3161 Timestamping Protocol Format</li>\n * <li>{@link KJUR.asn1.x509} - RFC 5280 X.509 certificate and CRL</li>\n * </ul>\n * </p>\n * NOTE: Please ignore method summary and document of this namespace.\n * This caused by a bug of jsdoc2.\n * @name KJUR.asn1\n * @namespace\n */\nif (typeof KJUR.asn1 == \"undefined\" || !KJUR.asn1)\n KJUR.asn1 = {};\n/**\n * ASN1 utilities class\n * @name KJUR.asn1.ASN1Util\n * @class ASN1 utilities class\n * @since asn1 1.0.2\n */\nKJUR.asn1.ASN1Util = new function () {\n this.integerToByteHex = function (i) {\n var h = i.toString(16);\n if ((h.length % 2) == 1)\n h = '0' + h;\n return h;\n };\n this.bigIntToMinTwosComplementsHex = function (bigIntegerValue) {\n var h = bigIntegerValue.toString(16);\n if (h.substr(0, 1) != '-') {\n if (h.length % 2 == 1) {\n h = '0' + h;\n }\n else {\n if (!h.match(/^[0-7]/)) {\n h = '00' + h;\n }\n }\n }\n else {\n var hPos = h.substr(1);\n var xorLen = hPos.length;\n if (xorLen % 2 == 1) {\n xorLen += 1;\n }\n else {\n if (!h.match(/^[0-7]/)) {\n xorLen += 2;\n }\n }\n var hMask = '';\n for (var i = 0; i < xorLen; i++) {\n hMask += 'f';\n }\n Line truncated
/***/ }),
/***/ "./lib/lib/jsrsasign/yahoo.js":
/*!************************************!*\
!*** ./lib/lib/jsrsasign/yahoo.js ***!
\************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"YAHOO\": () => (/* binding */ YAHOO)\n/* harmony export */ });\n/*!\nCopyright (c) 2011, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.com/yui/license.html\nversion: 2.9.0\n*/\nvar YAHOO = {};\nYAHOO.lang = {\n /**\n * Utility to set up the prototype, constructor and superclass properties to\n * support an inheritance strategy that can chain constructors and methods.\n * Static members will not be inherited.\n *\n * @method extend\n * @static\n * @param {Function} subc the object to modify\n * @param {Function} superc the object to inherit\n * @param {Object} overrides additional properties/methods to add to the\n * subclass prototype. These will override the\n * matching items obtained from the superclass\n * if present.\n */\n extend: function (subc, superc, overrides) {\n if (!superc || !subc) {\n throw new Error(\"YAHOO.lang.extend failed, please check that \" +\n \"all dependencies are included.\");\n }\n var F = function () { };\n F.prototype = superc.prototype;\n subc.prototype = new F();\n subc.prototype.constructor = subc;\n subc.superclass = superc.prototype;\n if (superc.prototype.constructor == Object.prototype.constructor) {\n superc.prototype.constructor = superc;\n }\n if (overrides) {\n var i;\n for (i in overrides) {\n subc.prototype[i] = overrides[i];\n }\n /*\n * IE will not enumerate native functions in a derived object even if the\n * function was overridden. This is a workaround for specific functions\n * we care about on the Object prototype.\n * @property _IEEnumFix\n * @param {Function} r the object to receive the augmentation\n * @param {Function} s the object that supplies the properties to augment\n * @static\n * @private\n */\n var _IEEnumFix = function () { }, ADD = [\"toString\", \"valueOf\"];\n try {\n if (/MSIE/.test(navigator.userAgent)) {\n _IEEnumFix = function (r, s) {\n for (i = 0; i < ADD.length; i = i + 1) {\n var fname = ADD[i], f = s[fname];\n if (typeof f === 'function' && f != Object.prototype[fname]) {\n r[fname] = f;\n }\n }\n };\n }\n }\n catch (ex) { }\n ;\n _IEEnumFix(subc.prototype, overrides);\n }\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsrsasign/yahoo.js?");
/***/ }),
/***/ "./node_modules/process/browser.js":
/*!*****************************************!*\
!*** ./node_modules/process/browser.js ***!
\*****************************************/
/***/ ((module) => {
eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nf Line truncated
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/************************************************************************/
/******/
/******/ // startup
/******/ // Load entry module and return exports
/******/ // This entry module can't be inlined because the eval devtool is used.
/******/ var __webpack_exports__ = __webpack_require__("./lib/index.js");
/******/ __webpack_exports__ = __webpack_exports__["default"];
/******/
/******/ return __webpack_exports__;
/******/ })()
;
});
-1737
View File
File diff suppressed because it is too large. Load diff
-2
View File
@@ -1,2 +0,0 @@
/*! For license information please see node-rsa.bundle.js.LICENSE.txt */
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.NODERSA=e():t.NODERSA=e()}(globalThis,(()=>(()=>{var t={6395:t=>{t.exports={newInvalidAsn1Error:function(t){var e=new Error;return e.name="InvalidAsn1Error",e.message=t||"",e}}},5670:(t,e,r)=>{var n=r(6395),i=r(6299),o=r(3319),s=r(1431);for(var a in t.exports={Reader:o,Writer:s},i)i.hasOwnProperty(a)&&(t.exports[a]=i[a]);for(var f in n)n.hasOwnProperty(f)&&(t.exports[f]=n[f])},3319:(t,e,r)=>{var n=r(4529),i=r(4774).Buffer,o=r(6299),s=r(6395).newInvalidAsn1Error;function a(t){if(!t||!i.isBuffer(t))throw new TypeError("data must be a node Buffer");this._buf=t,this._size=t.length,this._len=0,this._offset=0}Object.defineProperty(a.prototype,"length",{enumerable:!0,get:function(){return this._len}}),Object.defineProperty(a.prototype,"offset",{enumerable:!0,get:function(){return this._offset}}),Object.defineProperty(a.prototype,"remain",{get:function(){return this._size-this._offset}}),Object.defineProperty(a.prototype,"buffer",{get:function(){return this._buf.slice(this._offset)}}),a.prototype.readByte=function(t){if(this._size-this._offset<1)return null;var e=255&this._buf[this._offset];return t||(this._offset+=1),e},a.prototype.peek=function(){return this.readByte(!0)},a.prototype.readLength=function(t){if(void 0===t&&(t=this._offset),t>=this._size)return null;var e=255&this._buf[t++];if(null===e)return null;if(128&~e)this._len=e;else{if(0==(e&=127))throw s("Indefinite length not supported");if(e>4)throw s("encoding too long");if(this._size-t<e)return null;this._len=0;for(var r=0;r<e;r++)this._len=(this._len<<8)+(255&this._buf[t++])}return t},a.prototype.readSequence=function(t){var e=this.peek();if(null===e)return null;if(void 0!==t&&t!==e)throw s("Expected 0x"+t.toString(16)+": got 0x"+e.toString(16));var r=this.readLength(this._offset+1);return null===r?null:(this._offset=r,e)},a.prototype.readInt=function(){return this._readTag(o.Integer)},a.prototype.readBoolean=function(){return 0!==this._readTag(o.Boolean)},a.prototype.readEnumeration=function(){return this._readTag(o.Enumeration)},a.prototype.readString=function(t,e){t||(t=o.OctetString);var r=this.peek();if(null===r)return null;if(r!==t)throw s("Expected 0x"+t.toString(16)+": got 0x"+r.toString(16));var n=this.readLength(this._offset+1);if(null===n)return null;if(this.length>this._size-n)return null;if(this._offset=n,0===this.length)return e?i.alloc(0):"";var a=this._buf.slice(this._offset,this._offset+this.length);return this._offset+=this.length,e?a:a.toString("utf8")},a.prototype.readOID=function(t){t||(t=o.OID);var e=this.readString(t,!0);if(null===e)return null;for(var r=[],n=0,i=0;i<e.length;i++){var s=255&e[i];n<<=7,n+=127&s,128&s||(r.push(n),n=0)}return n=r.shift(),r.unshift(n%40),r.unshift(n/40|0),r.join(".")},a.prototype._readTag=function(t){n.ok(void 0!==t);var e=this.peek();if(null===e)return null;if(e!==t)throw s("Expected 0x"+t.toString(16)+": got 0x"+e.toString(16));var r=this.readLength(this._offset+1);if(null===r)return null;if(this.length>4)throw s("Integer too long: "+this.length);if(this.length>this._size-r)return null;this._offset=r;for(var i=this._buf[this._offset],o=0,a=0;a<this.length;a++)o<<=8,o|=255&this._buf[this._offset++];return 128&~i||4===a||(o-=1<<8*a),0|o},t.exports=a},6299:t=>{t.exports={EOC:0,Boolean:1,Integer:2,BitString:3,OctetString:4,Null:5,OID:6,ObjectDescriptor:7,External:8,Real:9,Enumeration:10,PDV:11,Utf8String:12,RelativeOID:13,Sequence:16,Set:17,NumericString:18,PrintableString:19,T61String:20,VideotexString:21,IA5String:22,UTCTime:23,GeneralizedTime:24,GraphicString:25,VisibleString:26,GeneralString:28,UniversalString:29,CharacterString:30,BMPString:31,Constructor:32,Context:128}},1431:(t,e,r)=>{var n=r(4529),i=r(4774).Buffer,o=r(6299),s=r(6395).newInvalidAsn1Error,a={size:1024,growthFactor:8};function f(t){var e,r;e=a,r=t||{},n.ok(e),n.equal(typeof e,"object"),n.ok(r),n.equal(typeof r,"object"),Object.getOwnPropertyNames(e).forEach((function(t){if(!r[t]){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n)}})),t=r,this._buf=i.alloc(t.size||1024),this._size=this._buf.length,this._offset=0,this._options=t,this._seq=[]}Object.defineProperty(f.prototype,"buffer",{get:function(){if(this._seq.length)throw s(this._seq.length+" unended sequence(s)");return this._buf.slice(0,this._offset)}}),f.prototype.writeByte=function(t){if("number"!=typeof t)throw new TypeError("argument must be a Number");this._ensure(1),this._buf[this._offset++]=t},f.prototype.writeInt=function(t,e){if("number"!=typeof t)throw new TypeError("argument must be a Number");"number"!=typeof e&&(e=o.Integer);for(var r=4;(!(4286578688&t)||-8388608==(4286578688&t))&&r>1;)r--,t<<=8;if(r>4)throw s("BER ints cannot be > 0xffffffff");for(this._ensure(2+r),this._buf[this._offset++]=e,this._buf[this._offset++]=r;r-- >0;)this._buf[this._offset++]=(4278190080&t)>>>24,t<<=Line truncated
-2
View File
@@ -1,2 +0,0 @@
/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).pako={})}(this,(function(t){"use strict";function e(t){let e=t.length;for(;--e>=0;)t[e]=0}const a=256,i=286,n=30,s=15,r=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),o=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),l=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),h=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),d=new Array(576);e(d);const _=new Array(60);e(_);const f=new Array(512);e(f);const c=new Array(256);e(c);const u=new Array(29);e(u);const w=new Array(n);function m(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let b,g,p;function k(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}e(w);const v=t=>t<256?f[t]:f[256+(t>>>7)],y=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},x=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,y(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},z=(t,e,a)=>{x(t,a[2*e],a[2*e+1])},A=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},E=(t,e,a)=>{const i=new Array(16);let n,r,o=0;for(n=1;n<=s;n++)o=o+a[n-1]<<1,i[n]=o;for(r=0;r<=e;r++){let e=t[2*r+1];0!==e&&(t[2*r]=A(i[e]++,e))}},R=t=>{let e;for(e=0;e<i;e++)t.dyn_ltree[2*e]=0;for(e=0;e<n;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.sym_next=t.matches=0},Z=t=>{t.bi_valid>8?y(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},U=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]<t[s]||t[n]===t[s]&&i[e]<=i[a]},S=(t,e,a)=>{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n<t.heap_len&&U(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!U(e,i,t.heap[n],t.depth));)t.heap[a]=t.heap[n],a=n,n<<=1;t.heap[a]=i},D=(t,e,i)=>{let n,s,l,h,d=0;if(0!==t.sym_next)do{n=255&t.pending_buf[t.sym_buf+d++],n+=(255&t.pending_buf[t.sym_buf+d++])<<8,s=t.pending_buf[t.sym_buf+d++],0===n?z(t,s,e):(l=c[s],z(t,l+a+1,e),h=r[l],0!==h&&(s-=u[l],x(t,s,h)),n--,l=v(n),z(t,l,i),h=o[l],0!==h&&(n-=w[l],x(t,n,h)))}while(d<t.sym_next);z(t,256,e)},T=(t,e)=>{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,r=e.stat_desc.elems;let o,l,h,d=-1;for(t.heap_len=0,t.heap_max=573,o=0;o<r;o++)0!==a[2*o]?(t.heap[++t.heap_len]=d=o,t.depth[o]=0):a[2*o+1]=0;for(;t.heap_len<2;)h=t.heap[++t.heap_len]=d<2?++d:0,a[2*h]=1,t.depth[h]=0,t.opt_len--,n&&(t.static_len-=i[2*h+1]);for(e.max_code=d,o=t.heap_len>>1;o>=1;o--)S(t,a,o);h=r;do{o=t.heap[1],t.heap[1]=t.heap[t.heap_len--],S(t,a,1),l=t.heap[1],t.heap[--t.heap_max]=o,t.heap[--t.heap_max]=l,a[2*h]=a[2*o]+a[2*l],t.depth[h]=(t.depth[o]>=t.depth[l]?t.depth[o]:t.depth[l])+1,a[2*o+1]=a[2*l+1]=h,t.heap[1]=h++,S(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,r=e.stat_desc.has_stree,o=e.stat_desc.extra_bits,l=e.stat_desc.extra_base,h=e.stat_desc.max_length;let d,_,f,c,u,w,m=0;for(c=0;c<=s;c++)t.bl_count[c]=0;for(a[2*t.heap[t.heap_max]+1]=0,d=t.heap_max+1;d<573;d++)_=t.heap[d],c=a[2*a[2*_+1]+1]+1,c>h&&(c=h,m++),a[2*_+1]=c,_>i||(t.bl_count[c]++,u=0,_>=l&&(u=o[_-l]),w=a[2*_],t.opt_len+=w*(c+u),r&&(t.static_len+=w*(n[2*_+1]+u)));if(0!==m){do{for(c=h-1;0===t.bl_count[c];)c--;t.bl_count[c]--,t.bl_count[c+1]+=2,t.bl_count[h]--,m-=2}while(m>0);for(c=h;0!==c;c--)for(_=t.bl_count[c];0!==_;)f=t.heap[--d],f>i||(a[2*f+1]!==c&&(t.opt_len+=(c-a[2*f+1])*a[2*f],a[2*f+1]=c),_--)}})(t,e),E(a,d,t.bl_count)},O=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++o<l&&n===r||(o<h?t.bl_tree[2*n]+=o:0!==n?(n!==s&&t.bl_tree[2*n]++,t.bl_tree[32]++):o<=10?t.bl_tree[34]++:t.bl_tree[36]++,o=0,s=n,0===r?(l=138,h=3):n===r?(l=6,h=3):(l=7,h=4))},I=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++o<l&&n===r)){if(o<h)do{z(t,n,t.bl_tree)}while(0!=--o);else 0!==n?(n!==s&&(z(t,n,t.bl_tree),o--),z(t,16,t.bl_tree),x(t,o-3,2)):o<=10?(z(t,17,t.bl_tree),x(t,o-3,3)):(z(t,18,t.bl_tree),x(t,o-11,7));o=0,s=n,0===r?(l=138,h=3):n===r?(l=6,h=3):(l=7,h=4)}};let F=!1;const L=(t,e,a,i)=>{x(t,0+(i?1:0),3),Z(t),y(t,a),y(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var N=(t,e,i,n)=>{let s,r,o=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,i=4093624447;for(e=0;e<=31;e++,i>>>=1)if(1&i&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<a;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),T(t,t.l_desc),T(t,t.d_desc),o=(t=>{let e;for(O(t,t.dyn_ltree,t.l_desc.max_code),O(t,t.dyn_dtree,t.d_desc.max_code),T(t,t.bl_desc),e=18;e>=3&&0===t.blLine truncated
-412
View File
@@ -1,412 +0,0 @@
if (typeof Object.assign !== 'function') {
Object.assign = function () {
let target = arguments[0];
for (let i = 1; i < arguments.length; i++) {
let source = arguments[i];
for (let key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
}
// 通用免嗅探播放
let common_lazy = `js:
let html = request(input);
let hconf = html.match(/r player_.*?=(.*?)</)[1];
let json = JSON5.parse(hconf);
let url = json.url;
if (json.encrypt == '1') {
url = unescape(url);
} else if (json.encrypt == '2') {
url = unescape(base64Decode(url));
}
if (/\\.(m3u8|mp4|m4a|mp3)/.test(url)) {
input = {
parse: 0,
jx: 0,
url: url,
};
} else {
input;
}`;
// 默认嗅探播放
let def_lazy = `js:
input = { parse: 1, url: input, js: '' };`;
// 采集站播放
let cj_lazy = `js:
if (/\\.(m3u8|mp4)/.test(input)) {
input = { parse: 0, url: input };
} else {
if (rule.parse_url.startsWith('json:')) {
let purl = rule.parse_url.replace('json:', '') + input;
let html = request(purl);
let json = JSON.parse(html);
if (json.url) {
input = { parse: 0, url: json.url };
}
} else {
input = rule.parse_url + input;
}
}`;
function getMubans() {
const mubanDict = { // 模板字典
mx: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---/',
searchUrl: '/vodsearch/**----------fypage---/',
class_parse: '.top_nav li;a&&Text;a&&href;.*/(.*?)/',
searchable: 2,
quickSearch: 0,
filterable: 0,
headers: {
'User-Agent': 'MOBILE_UA',
},
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true,
推荐: '.cbox_list;*;*;*;*;*',
一级: 'ul.vodlist li;a&&title;a&&data-original;.pic_text&&Text;a&&href',
二级: {
title: 'h2&&Text;.content_detail:eq(1)&&li&&a:eq(2)&&Text',
img: '.vodlist_thumb&&data-original',
desc: '.content_detail:eq(1)&&li:eq(1)&&Text;.content_detail:eq(1)&&li&&a&&Text;.content_detail:eq(1)&&li&&a:eq(1)&&Text;.content_detail:eq(1)&&li:eq(2)&&Text;.content_detail:eq(1)&&li:eq(3)&&Text',
content: '.content_desc&&span&&Text',
tabs: '.play_source_tab&&a',
lists: '.content_playlist:eq(#id) li',
},
搜索: '*',
},
mxpro: {
title: '',
host: '', // homeUrl:'/',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
class_parse: '.navbar-items li:gt(0):lt(10);a&&Text;a&&href;/(\\d+)',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: '.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href',
一级: 'body a.module-poster-item.module-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href',
二级: {
title: 'h1&&Text;.module-info-tag-link:eq(-1)&&Text',
img: '.lazyload&&data-original||data-src||src',
desc: '.module-info-item:eq(-2)&&Text;.module-info-tag-link&&Text;.module-info-tag-link:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(1)&&Text',
content: '.module-info-introduction&&Text',
tabs: '.module-tab-item',
lists: '.module-play-list:eq(#id) a',
tab_text: 'div--small&&Text',
},
搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
}, mxone5: {
title: '',
host: '',
url: '/show/fyclass--------fypage---.html',
searchUrl: '/search/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
class_parse: '.nav-menu-items&&li;a&&Text;a&&href;.*/(.*?)\.html',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: '.module-list;.module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
一级: '.module-items .module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
二级: {
title: 'h1&&Text;.tag-link&&Text',
img: '.module-item-pic&&img&&data-src',
desc: '.video-info-items:eq(3)&&Text;.tag-link:eq(2)&&Text;.tag-link:eq(1)&&Text;.video-info-items:eq(1)&&Text;.video-info-items:eq(0)&&Text',
content: '.vod_content&&Text',
tabs: '.module-tab-item',
lists: '.module-player-list:eq(#id)&&.scroll-content&&a',
tab_text: 'div--small&&Text',
},
搜索: '.module-items .module-search-item;a&&title;img&&data-src;.video-serial&&Text;a&&href',
}, 首图: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---/',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
class_parse: '.myui-header__menu li.hidden-sm:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: 'ul.myui-vodlist.clearfix;li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
一级: '.myui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
title: '.myui-content__detail .title--span&&Text;.myui-content__detail p.data:eq(3)&&Text',
img: '.myui-content__thumb .lazyload&&data-original',
desc: '.myui-content__detail p.otherbox&&Text;.year&&Text;.myui-content__detail p.data:eq(4)&&Text;.myui-content__detail p.data:eq(2)&&Text;.myui-content__detail p.data:eq(0)&&Text',
content: '.content&&Text',
tabs: '.myui-panel__head&&li',
// tabs: '.nav-tabs&&li',
lists: '.myui-content__list:eq(#id) li',
},
搜索: '#searchList li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&Text',
}, 首图2: {
title: '',
host: '',
url: '/list/fyclass-fypage.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA', // "Cookie": ""
},
class_parse: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
title: '.stui-content__detail .title&&Text;.stui-content__detail&&p:eq(-2)&&a&&Text',
title1: '.stui-content__detail .title&&Text;.stui-content__detail&&p&&Text',
img: '.stui-content__thumb .lazyload&&data-original',
desc: '.stui-content__detail p&&Text;.stui-content__detail&&p:eq(-2)&&a:eq(2)&&Text;.stui-content__detail&&p:eq(-2)&&a:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text;.stui-content__detail p:eq(1)&&Text',
desc1: '.stui-content__detail p:eq(4)&&Text;;;.stui-content__detail p:eq(1)&&Text',
content: '.detail&&Text',
tabs: '.stui-pannel__head h3',
tabs1: '.stui-vodlist__head h3',
lists: '.stui-content__playlist:eq(#id) li',
},
搜索: 'ul.stui-vodlist__media,ul.stui-vodlist,#searchList li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&Text',
}, 默认: {
title: '',
host: '',
url: '',
searchUrl: '',
searchable: 2,
quickSearch: 0,
filterable: 0,
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: def_lazy,
double: true,
推荐: '列表1;列表2;标题;图片;描述;链接;详情',
一级: '列表;标题;图片;描述;链接;详情',
二级: {
title: 'vod_name;vod_type',
img: '图片链接',
desc: '主要信息;年代;地区;演员;导演',
content: '简介',
tabs: '',
lists: 'xx:eq(#id)&&a',
tab_text: 'body&&Text',
list_text: 'body&&Text',
list_url: 'a&&href',
},
搜索: '列表;标题;图片;描述;链接;详情',
}, vfed: {
title: '',
host: '',
url: '/index.php/vod/show/id/fyclass/page/fypage.html',
searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA',
},
class_parse: '.fed-pops-navbar&&ul.fed-part-rows&&a;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: 'ul.fed-list-info.fed-part-rows;li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
一级: '.fed-list-info&&li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
二级: {
title: 'h1.fed-part-eone&&Text;.fed-deta-content&&.fed-part-rows&&li&&Text',
img: '.fed-list-info&&a&&data-original',
desc: '.fed-deta-content&&.fed-part-rows&&li:eq(1)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(2)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(3)&&Text',
content: '.fed-part-esan&&Text',
tabs: '.fed-drop-boxs&&.fed-part-rows&&li',
lists: '.fed-play-item:eq(#id)&&ul:eq(1)&&li',
},
搜索: '.fed-deta-info;h1&&Text;.lazyload&&data-original;.fed-list-remarks&&Text;a&&href;.fed-deta-content&&Text',
}, 海螺3: {
title: '',
host: '',
searchUrl: '/v_search/**----------fypage---.html',
url: '/vod_____show/fyclass--------fypage---.html',
headers: {
'User-Agent': 'MOBILE_UA',
},
timeout: 5000,
class_parse: 'body&&.hl-nav li:gt(0);a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '明星|专题|最新|排行',
limit: 40,
play_parse: true,
lazy: common_lazy,
double: true,
推荐: '.hl-vod-list;li;a&&title;a&&data-original;.remarks&&Text;a&&href',
一级: '.hl-vod-list&&.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
二级: {
title: '.hl-dc-title&&Text;.hl-dc-content&&li:eq(6)&&Text',
img: '.hl-lazy&&data-original',
desc: '.hl-dc-content&&li:eq(10)&&Text;.hl-dc-content&&li:eq(4)&&Text;.hl-dc-content&&li:eq(5)&&Text;.hl-dc-content&&li:eq(2)&&Text;.hl-dc-content&&li:eq(3)&&Text',
content: '.hl-content-text&&Text',
tabs: '.hl-tabs&&a',
tab_text: 'a--span&&Text',
lists: '.hl-plays-list:eq(#id)&&li',
},
搜索: '.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
}, 海螺2: {
title: '',
host: '',
searchUrl: '/index.php/vod/search/page/fypage/wd/**/',
url: '/index.php/vod/show/id/fyclass/page/fypage/',
headers: {
'User-Agent': 'MOBILE_UA',
},
timeout: 5000,
class_parse: '#nav-bar li;a&&Text;a&&href;id/(.*?)/',
limit: 40,
play_parse: true,
lazy: common_lazy,
double: true,
推荐: '.list-a.size;li;a&&title;.lazy&&data-original;.bt&&Text;a&&href',
一级: '.list-a&&li;a&&title;.lazy&&data-original;.list-remarks&&Text;a&&href',
二级: {
title: 'h2&&Text;.deployment&&Text',
img: '.lazy&&data-original',
desc: '.deployment&&Text',
content: '.ec-show&&Text',
tabs: '#tag&&a',
lists: '.play_list_box:eq(#id)&&li',
},
搜索: '.search-list;a&&title;.lazy&&data-original;.deployment&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
}, 短视: {
title: '',
host: '', // homeUrl:'/',
url: '/channel/fyclass-fypage.html',
searchUrl: '/search.html?wd=**',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
class_parse: '.menu_bottom ul li;a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '解析|动态',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: '.indexShowBox;ul&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
一级: '.pic-list&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
二级: {
title: 'h1&&Text;.content-rt&&p:eq(0)&&Text',
img: '.img&&img&&data-src',
desc: '.content-rt&&p:eq(1)&&Text;.content-rt&&p:eq(2)&&Text;.content-rt&&p:eq(3)&&Text;.content-rt&&p:eq(4)&&Text;.content-rt&&p:eq(5)&&Text',
content: '.zkjj_a&&Text',
tabs: '.py-tabs&&option',
lists: '.player:eq(#id) li',
},
搜索: '.sr_lists&&ul&&li;h3&&Text;img&&data-src;.int&&p:eq(0)&&Text;a&&href',
}, 短视2: {
title: '',
host: '',
class_name: '电影&电视剧&综艺&动漫',
class_url: '1&2&3&4',
searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50',
searchable: 2,
quickSearch: 0,
headers: {'User-Agent': 'MOBILE_UA'},
url: '/index.php/api/vod#type=fyclass&page=fypage',
filterable: 0,//是否启用分类筛选,
filter_url: '',
filter: {},
filter_def: {},
detailUrl: '/index.php/vod/detail/id/fyid.html',
play_parse: true,
lazy: common_lazy,
limit: 6,
推荐: '.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href',
一级: 'js:let body=input.split("#")[1];let t=Math.round(new Date/1e3).toString();let key=md5("DS"+t+"DCC147D11943AF75");let url=input.split("#")[0];body=body+"&time="+t+"&key="+key;print(body);fetch_params.body=body;let html=post(url,fetch_params);let data=JSON.parse(html);VODS=data.list.map(function(it){it.vod_pic=urljoin2(input.split("/i")[0],it.vod_pic);return it});',
二级: {
title: '.slide-info-title&&Text;.slide-info:eq(2)--strong&&Text',
img: '.detail-pic&&data-original',
desc: '.slide-info-remarks&&Text;.slide-info-remarks:eq(1)&&Text;.slide-info-remarks:eq(2)&&Text;.slide-info:eq(1)--strong&&Text;.info-parameter&&ul&&li:eq(3)&&Text',
content: '#height_limit&&Text',
tabs: '.anthology.wow.fadeInUp.animated&&.swiper-wrapper&&a',
tab_text: 'a--span&&Text',
lists: '.anthology-list-box:eq(#id) li',
},
搜索: 'json:list;name;pic;;id',
}, 采集1: {
title: '',
host: '',
homeTid: '13',
homeUrl: '/api.php/provide/vod/?ac=detail&t={{rule.homeTid}}',
detailUrl: '/api.php/provide/vod/?ac=detail&ids=fyid',
searchUrl: '/api.php/provide/vod/?wd=**&pg=fypage',
url: '/api.php/provide/vod/?ac=detail&pg=fypage&t=fyclass',
headers: {'User-Agent': 'MOBILE_UA'},
timeout: 5000, // class_name: '电影&电视剧&综艺&动漫',
// class_url: '1&2&3&4',
// class_parse:'js:let html=request(input);input=JSON.parse(html).class;',
class_parse: 'json:class;',
limit: 20,
multi: 1,
searchable: 2,//是否启用全局搜索,
quickSearch: 1,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
play_parse: true,
parse_url: '',
lazy: cj_lazy,
推荐: '*',
一级: 'json:list;vod_name;vod_pic;vod_remarks;vod_id;vod_play_from',
二级: `js:
let html=request(input);
html=JSON.parse(html);
let data=html.list;
VOD=data[0];`,
搜索: '*',
},
};
return JSON.parse(JSON.stringify(mubanDict));
}
var mubanDict = getMubans();
var muban = getMubans();
export default {muban, getMubans};
Binary file not shown.
Binary file not shown.
-452
View File
@@ -1,452 +0,0 @@
/**
* 已知问题:
* [推荐]页面:'雷电模拟器'播放部份影片会出错,'播放器'改成'ijk' & '解码方式'改成'软解',即可正常播放
* 影视TV 超連結跳轉支持
* 影视TV 弹幕支持
* https://t.me/fongmi_offical/
* https://github.com/FongMi/Release/tree/main/apk
* 皮皮虾DMBox 弹幕支持
* 设置 > 窗口预览 > 开启
* https://t.me/pipixiawerun
* vod_area:'bilidanmu'
* Cookie设置
* Cookie获取方法 https://ghproxy.net/https://raw.githubusercontent.com/UndCover/PyramidStore/main/list.md
* Cookie设置方法1: DR-PY 后台管理界面
* CMS后台管理 > 设置中心 > 环境变量 > {"bili_cookie":"XXXXXXX","vmid":"XXXXXX"} > 保存
* Cookie设置方法2: 手动替换Cookie
* 底下代码 headers的
* "Cookie":"$bili_cookie"
* 手动替换为
* "Cookie":"将获取的Cookie黏贴在这"
* 客户端长期Cookie设置教程:
* 抓包哔哩手机端搜索access_key,取任意链接里的access_key和appkey在drpy环境变量中增加同名的环境变量即可
* 此时哔哩.js这个解析可用于此源的解析线路用
* 传参 ?render=1&type=url&params=../json/哔哩教育.json@哔哩教育[官]
* 传参 ?render=1&type=url&params=../json/哔哩大全.json@哔哩大全[官]
*/
var rule = {
title: '我的哔哩[官]',
host: 'https://api.bilibili.com',
homeUrl: '/x/web-interface/ranking/v2?rid=0&type=origin',
// url:'/x/web-interface/search/type?search_type=video&keyword=fyclass&page=fypage',
url: '/x/web-interface/search/type?search_type=video&fyfilter',
filter_url: 'keyword=fyclass{{fl.tid}}&page=fypage&duration={{fl.duration}}&order={{fl.order}}',
class_parse: $js.toString(() => {
// let html = request('{{host}}/files/json/哔哩教育.json');
log('rule.params:' + rule.params);
let html = request(rule.params);
let json = dealJson(html);
input = json.classes;
homeObj.filter = json.filter;
// log(input);
}),
filterable: 1,
detailUrl: '/x/web-interface/view/detail?aid=fyid',
searchUrl: '/x/web-interface/search/type?search_type=video&keyword=**&page=fypage',
searchable: 2,
quickSearch: 0,
params: 'http://127.0.0.1:9978/file/jars/哔哩大全.json',
// params: '?render=1&type=url&params=../json/哔哩教育.json@哔哩教育[官]',
// params: '?render=1&type=url&params=../json/哔哩大全.json@哔哩大全[官]',
headers: {
"User-Agent": "PC_UA",
"Referer": "https://www.bilibili.com",
"Cookie": "SESSDATA=01c79709%2C1711618905%2C244c3%2A91CjA9UUnRb_kJg03J5FqUbin76yMY90o1-ckJsM1ItQH21ns4hgcS6Le6oMR3SKtC18QSVmxSbGRhN3cyS3NReERsOHRfYVlhTWJKZjZyTF9wUWJXbjNfaF9qWklFMFpoeVg1ZUhFb0Q0MGFiN3FYd1N3UEFEY1oxX29IdmFSRVVLamcybGhhSkJnIIEC; bili_jct=e9d6e9df733afde2a03693d63a4e77dc; DedeUserID=186957646;"
},
timeout: 5000,
limit: 8,
play_parse: true,
double: false,
lazy: `js:
let ids = input.split('_');
let dan = 'https://api.bilibili.com/x/v1/dm/list.so?oid=' + ids[1];
let result = {};
let iurl = 'https://api.bilibili.com:443/x/player/playurl?avid=' + ids[0] + '&cid=' + ids[1] + '&qn=116';
let html = request(iurl);
let jRoot = JSON.parse(html);
let jo = jRoot.data;
let ja = jo.durl;
let maxSize = -1;
let position = -1;
ja.forEach(function(tmpJo, i) {
if (maxSize < Number(tmpJo.size)) {
maxSize = Number(tmpJo.size);
position = i
}
});
let purl = '';
if (ja.length > 0) {
if (position === -1) {
position = 0
}
purl = ja[position].url
}
result.parse = 0;
result.playUrl = '';
result.url = unescape(purl);
result.header = {
'Referer': 'https://live.bilibili.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
};
if (/\\.flv/.test(purl)) {
result.contentType = 'video/x-flv';
} else {
result.contentType = '';
}
result.danmaku = dan;
input = result
`,
推荐: `js:
function stripHtmlTag(src) {
return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' ');
}
function turnDHM(duration) {
let min = '';
let sec = '';
try {
min = duration.split(':')[0];
sec = duration.split(':')[1];
} catch (e) {
min = Math.floor(duration / 60);
sec = duration % 60;
}
if (isNaN(parseInt(duration))) {
return '无效输入';
}
if (min == 0) {
return sec + '秒'
} else if (0 < min && min < 60) {
return min + '分'
} else if (60 <= min && min < 1440) {
if (min % 60 == 0) {
let h = min / 60;
return h + '小时'
} else {
let h = min / 60;
h = (h + '').split('.')[0];
let m = min % 60;
return h + '小时' + m + '分';
}
} else if (min >= 1440) {
let d = min / 60 / 24;
d = (d + '').split('.')[0];
let h = min / 60 % 24;
h = (h + '').split('.')[0];
let m = min % 60;
let dhm = '';
if (d > 0) {
dhm = d + '天'
}
if (h >= 1) {
dhm = dhm + h + '小时'
}
if (m > 0) {
dhm = dhm + m + '分'
}
return dhm
}
return null
}
function ConvertNum(num) {
let _ws = Math.pow(10, 1);
let _b = 1e4;
if (num < _b) {
return num.toString();
}
let _r = '';
let _strArg = ['', '万', '亿', '万亿'];
let _i = Math.floor(Math.log(num) / Math.log(_b));
if (_i > 3) {
_i = 3;
}
_r = Math.floor(num / Math.pow(_b, _i) * _ws) / _ws + _strArg[_i];
return _r;
}
let html = request(input);
let vodList = JSON.parse(html).data.list;
let videos = [];
vodList.forEach(function(vod) {
let aid = vod.aid;
let title = stripHtmlTag(vod.title);
let img = vod.pic;
if (img.startsWith('//')) {
img = 'https:' + img;
}
let remark = turnDHM(vod.duration) + ' ▶' + ConvertNum(vod.stat.view) + ' 🆙' + vod.owner.name;
videos.push({
vod_id: aid,
vod_name: title,
vod_pic: img,
vod_remarks: remark
})
});
VODS = videos
`,
一级: `js:
if (cateObj.tid.endsWith('_clicklink')) {
cateObj.tid = cateObj.tid.split('_')[0];
input = HOST + '/x/web-interface/search/type?search_type=video&keyword=' + cateObj.tid + '&page=' + MY_PAGE;
}
function stripHtmlTag(src) {
return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' ');
}
function turnDHM(duration) {
let min = '';
let sec = '';
try {
min = duration.split(':')[0];
sec = duration.split(':')[1];
} catch (e) {
min = Math.floor(duration / 60);
sec = duration % 60;
}
if (isNaN(parseInt(duration))) {
return '无效输入';
}
if (min == 0) {
return sec + '秒'
} else if (0 < min && min < 60) {
return min + '分'
} else if (60 <= min && min < 1440) {
if (min % 60 == 0) {
let h = min / 60;
return h + '小时'
} else {
let h = min / 60;
h = (h + '').split('.')[0];
let m = min % 60;
return h + '小时' + m + '分';
}
} else if (min >= 1440) {
let d = min / 60 / 24;
d = (d + '').split('.')[0];
let h = min / 60 % 24;
h = (h + '').split('.')[0];
let m = min % 60;
let dhm = '';
if (d > 0) {
dhm = d + '天'
}
if (h >= 1) {
dhm = dhm + h + '小时'
}
if (m > 0) {
dhm = dhm + m + '分'
}
return dhm
}
return null
}
function ConvertNum(num) {
let _ws = Math.pow(10, 1);
let _b = 1e4;
if (num < _b) {
return num.toString();
}
let _r = '';
let _strArg = ['', '万', '亿', '万亿'];
let _i = Math.floor(Math.log(num) / Math.log(_b));
if (_i > 3) {
_i = 3;
}
_r = Math.floor(num / Math.pow(_b, _i) * _ws) / _ws + _strArg[_i];
return _r;
}
let data = [];
let vodList = [];
if (MY_CATE === '推荐') {
input = HOST + '/x/web-interface/index/top/rcmd?ps=14&fresh_idx=' + MY_PAGE + '&fresh_idx_1h=' + MY_PAGE;
data = JSON.parse(request(input)).data;
vodList = data.item;
} else if (MY_CATE === '历史记录') {
input = HOST + '/x/v2/history?pn=' + MY_PAGE;
data = JSON.parse(request(input)).data;
vodList = data;
} else {
data = JSON.parse(request(input)).data;
vodList = data.result;
}
let videos = [];
vodList.forEach(function(vod) {
let aid = vod.aid?vod.aid:vod.id;
let title = stripHtmlTag(vod.title);
let img = vod.pic;
if (img.startsWith('//')) {
img = 'https:' + img;
}
let play = '';
let danmaku = '';
if (MY_CATE === '推荐') {
play = ConvertNum(vod.stat.view);
danmaku = vod.stat.danmaku;
} else if (MY_CATE === '历史记录') {
play = ConvertNum(vod.stat.view);
danmaku = vod.stat.danmaku;
} else {
play = ConvertNum(vod.play);
danmaku = vod.video_review;
}
let remark = turnDHM(vod.duration) + ' ▶' + play + ' 💬' + danmaku;
videos.push({
vod_id: aid,
vod_name: title,
vod_pic: img,
vod_remarks: remark
})
});
VODS = videos
`,
二级: `js:
function stripHtmlTag(src) {
return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' ');
}
let html = request(input);
let jo = JSON.parse(html).data.View;
// 历史记录
let cookies = rule_fetch_params.headers.Cookie.split(';');
let bili_jct = '';
cookies.forEach(cookie => {
if (cookie.includes('bili_jct')) {
bili_jct = cookie.split('=')[1];
}
});
if (bili_jct !== '') {
let historyReport = 'https://api.bilibili.com/x/v2/history/report';
let dataPost = {
aid: jo.aid,
cid: jo.cid,
csrf: bili_jct,
};
post(historyReport, dataPost, 'form');
}
let stat = jo.stat;
let up_info = JSON.parse(html).data.Card;
let relation = up_info.following ? '已关注' : '未关注';
let aid = jo.aid;
let title = stripHtmlTag(jo.title);
let pic = jo.pic;
let desc = jo.desc;
let date = new Date(jo.pubdate * 1000);
let yy = date.getFullYear().toString();
let mm = date.getMonth()+1;
mm = mm < 10 ? ('0' + mm) : mm;
let dd = date.getDate();
dd = dd < 10 ? ('0' + dd) : dd;
let up_name = jo.owner.name;
let typeName = jo.tname;
// let remark = jo.duration;
let vod = {
vod_id: aid,
vod_name: title,
vod_pic: pic,
type_name: typeName,
vod_year: yy+mm+dd,
vod_area: 'bilidanmu',
// vod_remarks: remark,
vod_tags: 'mv',
// vod_director: '🆙 ' + up_name + ' 👥 ' + up_info.follower + ' ' + relation,
vod_director: '🆙 ' + '[a=cr:' + JSON.stringify({'id':up_name + '_clicklink','name':up_name}) + '/]' + up_name + '[/a]' + ' 👥 ' + up_info.follower + ' ' + relation,
vod_actor: '▶' + stat.view + ' ' + '💬' + stat.danmaku + ' ' + '👍' + stat.like + ' ' + '💰' + stat.coin + ' ' + '⭐' + stat.favorite,
vod_content: desc
};
let ja = jo.pages;
let treeMap = {};
let playurls = [];
ja.forEach(function(tmpJo) {
let cid = tmpJo.cid;
let part = tmpJo.part.replaceAll('#', '﹟').replaceAll('$', '﹩');
playurls.push(
part + '$' + aid + '_' + cid
)
});
treeMap['B站'] = playurls.join('#');
let relatedData = JSON.parse(html).data.Related;
playurls = [];
relatedData.forEach(function(rd) {
let ccid = rd.cid;
let title = rd.title.replaceAll('#', '﹟').replaceAll('$', '﹩');
let aaid = rd.aid;
playurls.push(
title + '$' + aaid + '_' + ccid
)
});
treeMap['欧歌推荐'] = playurls.join('#');
vod.vod_play_from = Object.keys(treeMap).join("$$$");
vod.vod_play_url = Object.values(treeMap).join("$$$");
VOD = vod;
`,
搜索: `js:
let html = request(input);
function stripHtmlTag(src) {
return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' ');
}
function turnDHM(duration) {
let min = '';
let sec = '';
try {
min = duration.split(':')[0];
sec = duration.split(':')[1];
} catch (e) {
min = Math.floor(duration / 60);
sec = duration % 60;
}
if (isNaN(parseInt(duration))) {
return '无效输入';
}
if (min == 0) {
return sec + '秒'
} else if (0 < min && min < 60) {
return min + '分'
} else if (60 <= min && min < 1440) {
if (min % 60 == 0) {
let h = min / 60;
return h + '小时'
} else {
let h = min / 60;
h = (h + '').split('.')[0];
let m = min % 60;
return h + '小时' + m + '分';
}
} else if (min >= 1440) {
let d = min / 60 / 24;
d = (d + '').split('.')[0];
let h = min / 60 % 24;
h = (h + '').split('.')[0];
let m = min % 60;
let dhm = '';
if (d > 0) {
dhm = d + '天'
}
if (h >= 1) {
dhm = dhm + h + '小时'
}
if (m > 0) {
dhm = dhm + m + '分'
}
return dhm
}
return null
}
let videos = [];
let vodList = JSON.parse(html).data.result;
vodList.forEach(function(vod) {
let aid = vod.aid;
let title = stripHtmlTag(vod.title);
let img = vod.pic;
if (img.startsWith('//')) {
img = 'https:' + img;
}
let remark = turnDHM(vod.duration);
videos.push({
vod_id: aid,
vod_name: title,
vod_pic: img,
vod_remarks: remark
})
});
VODS = videos
`,
}
-811
View File
@@ -1,811 +0,0 @@
{ "cookie": " buvid3=8B57D3BA-607A-1E85-018A-E8C430023CED42659infoc; b_lsid=BEB8EE7F_18742FF8C2E; bsource=search_baidu; _uuid=DE810E367-B52C-AF6E-A612-EDF4C31567F358591infoc; b_nut=100; buvid_fp=711a632b5c876fa8bbcf668c1efba551; SESSDATA=7624af93%2C1696008331%2C862c8%2A42; bili_jct=141a474ef3ce8cf2fedf384e68f6625d; DedeUserID=3493271303096985; DedeUserID__ckMd5=212a836c164605b7; sid=5h4ruv6o; buvid4=978E9208-13DA-F87A-3DC0-0B8EDF46E80434329-123040301-dWliG5BMrUb70r3g583u7w%3D%3D",
"filter": {
"dianshiju": [
{
"name": "类型",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "yanqing",
"n": "言情"
},
{
"v": "ouxiang",
"n": "偶像"
},
{
"v": "dushi",
"n": "都市"
},
{
"v": "zhanzheng",
"n": "战争"
},
{
"v": "xuanyi",
"n": "悬疑"
},
{
"v": "lunli",
"n": "伦理"
},
{
"v": "jingsong",
"n": "惊悚"
},
{
"v": "wangluoju",
"n": "网络剧"
},
{
"v": "jingfei",
"n": "警匪"
},
{
"v": "guzhuang",
"n": "古装"
},
{
"v": "wuxia",
"n": "武侠"
},
{
"v": "shenhua",
"n": "神话"
},
{
"v": "lishi",
"n": "历史"
},
{
"v": "dongzuo",
"n": "动作"
},
{
"v": "diezhan",
"n": "谍战"
},
{
"v": "xiju",
"n": "喜剧"
},
{
"v": "kangri",
"n": "抗日"
},
{
"v": "jiating",
"n": "家庭"
},
{
"v": "juqing",
"n": "剧情"
},
{
"v": "lizhi",
"n": "励志"
},
{
"v": "nongcun",
"n": "农村"
},
{
"v": "kehuan",
"n": "科幻"
},
{
"v": "junlv",
"n": "军旅"
},
{
"v": "qihuan",
"n": "奇幻"
},
{
"v": "qita",
"n": "其它"
}
],
"key": "type"
},
{
"name": "地区",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "neidi",
"n": "内地"
},
{
"v": "taiwan",
"n": "台湾"
},
{
"v": "xianggang",
"n": "香港"
},
{
"v": "hanguo",
"n": "韩国"
},
{
"v": "meiguo",
"n": "美国"
},
{
"v": "taiguo",
"n": "泰国"
},
{
"v": "riben",
"n": "日本"
},
{
"v": "yingguo",
"n": "英国"
},
{
"v": "xinjiapo",
"n": "新加坡"
},
{
"v": "qita",
"n": "其它"
}
],
"key": "area"
},
{
"name": "年份",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "2024",
"n": "2024"
},
{
"v": "2023",
"n": "2023"
},
{
"v": "2022",
"n": "2022"
},
{
"v": "2021",
"n": "2021"
},
{
"v": "2020",
"n": "2020"
},
{
"v": "2019",
"n": "2019"
},
{
"v": "2018",
"n": "2018"
},
{
"v": "2017",
"n": "2017"
},
{
"v": "2016",
"n": "2016"
},
{
"v": "2015",
"n": "2015"
},
{
"v": "2014",
"n": "2014"
},
{
"v": "2013",
"n": "2013"
},
{
"v": "2012",
"n": "2012"
},
{
"v": "2011",
"n": "2011"
},
{
"v": "20102000",
"n": "2010-2000"
},
{
"v": "19991990",
"n": "90年代"
},
{
"v": "19891800",
"n": "更早"
}
],
"key": "year"
}
],
"zongyi": [
{
"name": "类型",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "lxxuanxiu/",
"n": "选秀"
},
{
"v": "lxqinggan/",
"n": "情感"
},
{
"v": "lxfangtan/",
"n": "访谈"
},
{
"v": "lxgaoxiao/",
"n": "搞笑"
},
{
"v": "lxyouxi/",
"n": "游戏"
},
{
"v": "lxzhichang/",
"n": "职场"
},
{
"v": "lxyule/",
"n": "娱乐"
},
{
"v": "lxzhenrenxiu/",
"n": "真人秀"
},
{
"v": "lxshenghuo/",
"n": "生活"
},
{
"v": "lxtiyu/",
"n": "体育"
},
{
"v": "lxshenghui/",
"n": "盛会"
},
{
"v": "lxcaijing/",
"n": "财经"
},
{
"v": "lxqinzi/",
"n": "亲子"
},
{
"v": "lxjishi/",
"n": "纪实"
},
{
"v": "lxtuokouxiu/",
"n": "脱口秀"
},
{
"v": "lxwangluojiemu/",
"n": "网络节目"
},
{
"v": "lxmeishi/",
"n": "美食"
}
],
"key": "type"
},
{
"name": "地区",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "dqdalu/",
"n": "大陆"
},
{
"v": "dqgangtai/",
"n": "港台"
},
{
"v": "dqrihan/",
"n": "日韩"
},
{
"v": "dqoumei/",
"n": "欧美"
},
{
"v": "dqqita/",
"n": "其他"
}
],
"key": "area"
}
],
"dongman": [
{
"name": "类型",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "lxrexue/",
"n": "热血"
},
{
"v": "lxaiqing/",
"n": "爱情"
},
{
"v": "lxgaoxiao/",
"n": "搞笑"
},
{
"v": "lxmeinv/",
"n": "美女"
},
{
"v": "lxshaoer/",
"n": "少儿"
},
{
"v": "lxqinzi/",
"n": "亲子"
},
{
"v": "lxmofa/",
"n": "魔法"
},
{
"v": "lxyundong/",
"n": "运动"
},
{
"v": "lxjizhan/",
"n": "机战"
},
{
"v": "lxkehuan/",
"n": "科幻"
},
{
"v": "lxxiaoyuan/",
"n": "校园"
},
{
"v": "lxdongwu/",
"n": "动物"
},
{
"v": "lxmaoxian/",
"n": "冒险"
},
{
"v": "lxshenhua/",
"n": "神话"
},
{
"v": "lxtuili/",
"n": "推理"
},
{
"v": "lxjuqing/",
"n": "剧情"
},
{
"v": "lxlishi/",
"n": "历史"
},
{
"v": "lxzhanzheng/",
"n": "战争"
},
{
"v": "lxjingdian/",
"n": "经典"
},
{
"v": "lxnanxingxiang/",
"n": "男性向"
},
{
"v": "lxnvxingxiang/",
"n": "女性向"
}
],
"key": "type"
},
{
"name": "地区",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "dqdalu/",
"n": "大陆"
},
{
"v": "dqriben/",
"n": "日本"
},
{
"v": "dqmeiguo/",
"n": "美国"
},
{
"v": "dqhanguo/",
"n": "韩国"
},
{
"v": "dqqita/",
"n": "其他"
}
],
"key": "area"
},
{
"name": "年份",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "nd2022/",
"n": "2022"
},
{
"v": "nd2021/",
"n": "2021"
},
{
"v": "nd2020/",
"n": "2020"
},
{
"v": "nd2019/",
"n": "2019"
},
{
"v": "nd2018/",
"n": "2018"
},
{
"v": "nd2017/",
"n": "2017"
},
{
"v": "nd2016/",
"n": "2016"
},
{
"v": "nd2015/",
"n": "2015"
},
{
"v": "nd2014/",
"n": "2014"
},
{
"v": "nd2013/",
"n": "2013"
},
{
"v": "nd2012/",
"n": "2012"
},
{
"v": "nd2011/",
"n": "2011"
},
{
"v": "nd20102000/",
"n": "2010-2000"
},
{
"v": "nd19991800/",
"n": "更早"
}
],
"key": "year"
}
],
"dianying": [
{
"name": "类型",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "aiqing",
"n": "爱情"
},
{
"v": "dongzuo",
"n": "动作"
},
{
"v": "xiju",
"n": "喜剧"
},
{
"v": "zhanzheng",
"n": "战争"
},
{
"v": "kehuan",
"n": "科幻"
},
{
"v": "juqing",
"n": "剧情"
},
{
"v": "wuxia",
"n": "武侠"
},
{
"v": "maoxian",
"n": "冒险"
},
{
"v": "qiangzhan",
"n": "枪战"
},
{
"v": "kongbu",
"n": "恐怖"
},
{
"v": "xuanyi",
"n": "悬疑"
},
{
"v": "fanzui",
"n": "犯罪"
},
{
"v": "qihuan",
"n": "奇幻"
},
{
"v": "donghua",
"n": "动画"
},
{
"v": "jingsong",
"n": "惊悚"
},
{
"v": "jingdian",
"n": "经典"
},
{
"v": "qingchun",
"n": "青春"
},
{
"v": "wenyi",
"n": "文艺"
},
{
"v": "weidianying",
"n": "微电影"
},
{
"v": "guzhuang",
"n": "古装"
},
{
"v": "lishi",
"n": "历史"
},
{
"v": "yundong",
"n": "运动"
},
{
"v": "nongcun",
"n": "农村"
},
{
"v": "ertong",
"n": "儿童"
},
{
"v": "wangluodianying",
"n": "网络电影"
},
{
"v": "qita",
"n": "其它"
}
],
"key": "type"
},
{
"name": "地区",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "neidi",
"n": "内地"
},
{
"v": "meiguo",
"n": "美国"
},
{
"v": "xianggang",
"n": "香港"
},
{
"v": "taiwan",
"n": "台湾"
},
{
"v": "riben",
"n": "日本"
},
{
"v": "taiguo",
"n": "泰国"
},
{
"v": "yindu",
"n": "印度"
},
{
"v": "dongnanyadiqu",
"n": "东南亚地区"
},
{
"v": "oumeidiqu",
"n": "欧美地区"
},
{
"v": "qita",
"n": "其它"
}
],
"key": "area"
},
{
"name": "年份",
"value": [
{
"v": "",
"n": "全部"
},
{
"v": "2022",
"n": "2022"
},
{
"v": "2021",
"n": "2021"
},
{
"v": "2020",
"n": "2020"
},
{
"v": "2019",
"n": "2019"
},
{
"v": "2018",
"n": "2018"
},
{
"v": "2017",
"n": "2017"
},
{
"v": "2016",
"n": "2016"
},
{
"v": "2015",
"n": "2015"
},
{
"v": "2014",
"n": "2014"
},
{
"v": "2013",
"n": "2013"
},
{
"v": "2012",
"n": "2012"
},
{
"v": "2011",
"n": "2011"
},
{
"v": "20102000",
"n": "2010-2000"
},
{
"v": "19691800",
"n": "更早"
}
],
"key": "year"
}
]
},
"classes": [
{
"type_name": "电影",
"type_id": "dianying"
},
{
"type_name": "电视剧",
"type_id": "dianshiju"
},
{
"type_name": "综艺",
"type_id": "zongyi"
},
{
"type_name": "热播电影",
"type_id": "jingdian"
},
{
"type_name": "动漫",
"type_id": "dongman"
}
]
}
+247 -246
View File
File diff suppressed because it is too large. Load diff
BIN
View File
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

-209
View File
@@ -1,209 +0,0 @@
globalThis.h_ost = 'http://xxsp.xxmh.top/';
var key = CryptoJS.enc.Base64.parse("MGY3OTFiZmMwZGM2MWU4Zg==");
var iv = CryptoJS.enc.Base64.parse("MGY3OTFiZmMwZGM2MWU4Zg==");
globalThis.AES_Decrypt = function(word) {
try {
var decrypt = CryptoJS.AES.decrypt(word, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
});
const decryptedText = decrypt.toString(CryptoJS.enc.Utf8);
if (!decryptedText) {
throw new Error("解密后的内容为空");
}
return decryptedText;
} catch (e) {
console.error("解密失败:", e);
return null;
}
};
globalThis.AES_Encrypt = function(word) {
var encrypted = CryptoJS.AES.encrypt(word, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.toString();
};
globalThis.vod1 = function(t, pg) {
let html1 = request(h_ost + 'api.php/getappapi.index/typeFilterVodList', {
body: {
area: '全部',
year: '全部',
type_id: t,
page: pg,
sort: '最新',
lang: '全部',
class: '全部'
},
headers: {
'User-Agent': 'okhttp/3.14.9',
'Content-Type': 'application/x-www-form-urlencoded'
},
'method': 'POST'
}, true);
let html = JSON.parse(html1);
return (AES_Decrypt(html.data));
}
globalThis.vodids = function(ids) {
let html1 = fetch(h_ost + 'api.php/getappapi.index/vodDetail', {
method: 'POST',
headers: {
'User-Agent': 'okhttp/3.14.9',
'Content-Type': 'application/x-www-form-urlencoded'
},
body: {
vod_id: ids,
}
});
let html = JSON.parse(html1);
const rdata = JSON.parse(AES_Decrypt(html.data));
const data = {
vod_id: ids,
vod_name: rdata.vod.vod_name,
vod_remarks: rdata.vod.vod_remarks,
vod_actor: rdata.vod.vod_actor,
vod_director: rdata.vod.vod_director,
vod_content: rdata.vod.vod_content,
vod_play_from: '',
vod_play_url: ''
};
rdata.vod_play_list.forEach((value) => {
data.vod_play_from += value.player_info.show + '$$$';
value.urls.forEach((v) => {
data.vod_play_url += v.name + '$' + value.player_info.parse + '~' + v.url + '~' + rdata.vod.vod_name + '~' + v.name + '#';
});
data.vod_play_url += '$$$';
});
return data;
}
//搜索
globalThis.ssvod = function(wd) {
var html1 = fetch(h_ost + 'api.php/getappapi.index/searchList', {
method: 'POST',
headers: {
'User-Agent': 'okhttp/3.14.9',
'Content-Type': 'application/x-www-form-urlencoded'
},
body: {
keywords: wd,
typepage_id: 1,
}
});
let html = JSON.parse(html1);
return AES_Decrypt(html.data);
}
//解析
globalThis.jxx = function(id, url, name, juji) {
/* if("741852963"!=='741852963'){
return 'https://s0.mall.tcl.com/group1/M00/00/89/CvoGBGdcOPaAAUxvADwZniVV2bc476.mp4';
}*/
if (id.startsWith('http')) {
return {
parse: 1,
url: id + url,
jx: 0,
danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
};
}
if (id == 0) {
return {
parse: 0,
url: id + url,
jx: 1,
danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
};
}
let html1 = request(h_ost + 'api.php/getappapi.index/vodParse', {
method: 'POST',
headers: {
'User-Agent': 'okhttp/3.14.9',
'Content-Type': 'application/x-www-form-urlencoded'
},
body: {
parse_api: id,
url: AES_Encrypt(url),
}
});
let html = AES_Decrypt(JSON.parse(html1).data);
console.log(html);
let decry = html.replace(/\n/g, '').replace(/\\/g, '');
let matches = decry.match(/"url":"([^"]+)"/);
if (!matches || matches[1] === null) {
matches = decry.match(/"url": "([^"]+)"/);
}
return {
parse: 0,
url: matches[1],
jx: 0,
danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
};
}
var rule = {
title: '小熊',
host: '',
detailUrl: 'fyid',
searchUrl: '**',
url: 'fyclass',
searchable: 2,
quickSearch: 1,
filterable: 0,
class_name: '电影&电视剧&综艺&动漫',
class_url: '1&2&3&4',
play_parse: true,
lazy: $js.toString(() => {
const parts = input.split('~');
input = jxx(parts[0], parts[1], parts[2], parts[3]);
}),
推荐: $js.toString(() => {
let data = vod1(0, 0);
let bata = JSON.parse(data).recommend_list;
bata.forEach(it => {
d.push({
url: it.vod_id,
title: it.vod_name,
img: it.vod_pic,
desc: it.vod_remarks
});
});
setResult(d);
}),
一级: $js.toString(() => {
let data = vod1(input, MY_PAGE);
let bata = JSON.parse(data).recommend_list;
bata.forEach(it => {
d.push({
url: it.vod_id,
title: it.vod_name,
img: it.vod_pic,
desc: it.vod_remarks
});
});
setResult(d);
}),
二级: $js.toString(() => {
console.log("调试信息2" + input);
let data = vodids(input);
//console.log(data);
VOD = data;
}),
搜索: $js.toString(() => {
let data = ssvod(input);
let bata = JSON.parse(data).search_list;
bata.forEach(it => {
d.push({
url: it.vod_id,
title: it.vod_name,
img: it.vod_pic,
desc: it.vod_remarks
});
});
// console.log(data);
setResult(d);
}),
}
-45
View File
@@ -1,45 +0,0 @@
var rule = {
title: '弹幕[资]',
host: 'http://gy.xn--yet24tmq1a.xyz/',
homeTid: '',
homeUrl: '/api.php/provide/vod/?ac=detail&t={{rule.homeTid}}',
detailUrl: '/api.php/provide/vod/?ac=detail&ids=fyid',
searchUrl: '/api.php/provide/vod/?ac=detail&wd=**&pg=fypage',
url: '/api.php/provide/vod/?ac=detail&pg=fypage&t=fyclass',
headers: {
'User-Agent': 'MOBILE_UA',
},
class_parse: 'json:class;',
timeout: 5000,
filterable: 1,
limit: 20,
multi: 1,
searchable: 2,
play_parse: true,
parse_url: '',
lazy: $js.toString(() => {
let json = request("http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input);
let bata = JSON.parse(json);
input = {
parse: 0,
url: bata.url,
jx: 0,
danmaku: bata.danmaku
};
}),
推荐: 'json:list;vod_name;vod_pic;vod_remarks;vod_id;vod_play_from',
一级: $js.toString(() => {
let bata = JSON.parse(request(input)).list;
bata.forEach(it => {
d.push({
url: it.vod_id,
title: it.vod_name,
img: it.vod_pic,
desc: it.vod_remarks
})
});
setResult(d)
}),
二级: 'js:\n let html=request(input);\n html=JSON.parse(html);\n let data=html.list;\n VOD=data[0];',
搜索: 'json:list;vod_name;vod_pic;vod_remarks;vod_id;vod_play_from',
}
-210
View File
@@ -1,210 +0,0 @@
globalThis.h_ost = 'http://118.107.41.134:35555/';
var key = CryptoJS.enc.Base64.parse("ZGMzMjUwNmQ5YjVjYmY4ZQ==");
var iv = CryptoJS.enc.Base64.parse("ZGMzMjUwNmQ5YjVjYmY4ZQ==");
globalThis.AES_Decrypt = function(word) {
try {
var decrypt = CryptoJS.AES.decrypt(word, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
});
const decryptedText = decrypt.toString(CryptoJS.enc.Utf8);
if (!decryptedText) {
throw new Error("解密后的内容为空");
}
return decryptedText;
} catch (e) {
console.error("解密失败:", e);
return null;
}
};
globalThis.AES_Encrypt = function(word) {
var encrypted = CryptoJS.AES.encrypt(word, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.toString();
};
globalThis.vod1 = function(t, pg) {
let html1 = request(h_ost + 'api.php/getappapi.index/typeFilterVodList', {
body: {
area: '全部',
year: '全部',
type_id: t,
page: pg,
sort: '最新',
lang: '全部',
class: '全部'
},
headers: {
'User-Agent': 'okhttp/3.14.9',
'Content-Type': 'application/x-www-form-urlencoded'
},
'method': 'POST'
}, true);
let html = JSON.parse(html1);
return (AES_Decrypt(html.data));
}
globalThis.vodids = function(ids) {
let html1 = fetch(h_ost + 'api.php/getappapi.index/vodDetail', {
method: 'POST',
headers: {
'User-Agent': 'okhttp/3.14.9',
'Content-Type': 'application/x-www-form-urlencoded'
},
body: {
vod_id: ids,
}
});
let html = JSON.parse(html1);
const rdata = JSON.parse(AES_Decrypt(html.data));
const data = {
vod_id: ids,
vod_name: rdata.vod.vod_name,
vod_remarks: rdata.vod.vod_remarks,
vod_actor: rdata.vod.vod_actor,
vod_director: rdata.vod.vod_director,
vod_content: rdata.vod.vod_content,
vod_play_from: '',
vod_play_url: ''
};
rdata.vod_play_list.forEach((value) => {
data.vod_play_from += value.player_info.show + '$$$';
value.urls.forEach((v) => {
data.vod_play_url += v.name + '$' + value.player_info.parse + '~' + v.url + '~' + rdata.vod.vod_name + '~' + v.name + '#';
});
data.vod_play_url += '$$$';
});
return data;
}
//搜索
globalThis.ssvod = function(wd) {
var html1 = fetch(h_ost + 'api.php/getappapi.index/searchList', {
method: 'POST',
headers: {
'User-Agent': 'okhttp/3.14.9',
'Content-Type': 'application/x-www-form-urlencoded'
},
body: {
keywords: wd,
typepage_id: 1,
}
});
let html = JSON.parse(html1);
return AES_Decrypt(html.data);
}
//解析
globalThis.jxx = function(id, url, name, juji) {
/* if("741852963"!=='741852963'){
return 'https://s0.mall.tcl.com/group1/M00/00/89/CvoGBGdcOPaAAUxvADwZniVV2bc476.mp4';
}*/
//console.log(id);
if (id.startsWith('http')) {
return {
parse: 1,
url: id + url,
jx: 0,
danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
};
}
if (id == 0) {
return {
parse: 0,
url: url,
jx: 1,
danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
};
}
let html1 = request(h_ost + 'api.php/getappapi.index/vodParse', {
method: 'POST',
headers: {
'User-Agent': 'okhttp/3.14.9',
'Content-Type': 'application/x-www-form-urlencoded'
},
body: {
parse_api: id,
url: AES_Encrypt(url),
}
});
let html = AES_Decrypt(JSON.parse(html1).data);
console.log(html);
let decry = html.replace(/\n/g, '').replace(/\\/g, '');
let matches = decry.match(/"url":"([^"]+)"/);
if (!matches || matches[1] === null) {
matches = decry.match(/"url": "([^"]+)"/);
}
return {
parse: 0,
url: matches[1],
jx: 0,
danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
};
}
var rule = {
title: '巨人',
host: '',
detailUrl: 'fyid',
searchUrl: '**',
url: 'fyclass',
searchable: 2,
quickSearch: 1,
filterable: 0,
class_name: '电影&电视剧&综艺&动漫',
class_url: '1&2&3&4',
play_parse: true,
lazy: $js.toString(() => {
const parts = input.split('~');
input = jxx(parts[0], parts[1], parts[2], parts[3]);
}),
推荐: $js.toString(() => {
let data = vod1(0, 0);
let bata = JSON.parse(data).recommend_list;
bata.forEach(it => {
d.push({
url: it.vod_id,
title: it.vod_name,
img: it.vod_pic,
desc: it.vod_remarks
});
});
setResult(d);
}),
一级: $js.toString(() => {
let data = vod1(input, MY_PAGE);
let bata = JSON.parse(data).recommend_list;
bata.forEach(it => {
d.push({
url: it.vod_id,
title: it.vod_name,
img: it.vod_pic,
desc: it.vod_remarks
});
});
setResult(d);
}),
二级: $js.toString(() => {
console.log("调试信息2" + input);
let data = vodids(input);
//console.log(data);
VOD = data;
}),
搜索: $js.toString(() => {
let data = ssvod(input);
let bata = JSON.parse(data).search_list;
bata.forEach(it => {
d.push({
url: it.vod_id,
title: it.vod_name,
img: it.vod_pic,
desc: it.vod_remarks
});
});
// console.log(data);
setResult(d);
}),
}
-183
View File
@@ -1,183 +0,0 @@
globalThis.h_ost = 'http://op.ysdqjs.cn/';
globalThis.vodlist = function($t, $pg) {
const currentTimestamp = parseInt(Date.now() / 1000, 10);
const url = h_ost + '/v2/home/type_search';
const hx = CryptoJS.MD5('kj5649ertj84ks89r4jh8s45hf84hjfds04k' + currentTimestamp).toString();
let html = request(url, {
body: {
sign: hx,
type_id: $t,
page: $pg,
},
headers: {
'User-Agent': 'okhttp-okgo/jeasonlzy',
'Content-Type': 'application/x-www-form-urlencoded'
},
'method': 'POST'
}, true);
return JSON.parse(html).data.list;
}
globalThis.seach = function(wd) {
const currentTimestamp = parseInt(Date.now() / 1000, 10);
const url = h_ost + '/v2/home/search';
const hx = CryptoJS.MD5('kj5649ertj84ks89r4jh8s45hf84hjfds04k' + currentTimestamp).toString();
let html = request(url, {
body: {
sign: hx,
keyword: wd,
timestamp: currentTimestamp,
},
headers: {
'User-Agent': 'okhttp-okgo/jeasonlzy',
'Content-Type': 'application/x-www-form-urlencoded'
},
'method': 'POST'
}, true);
return JSON.parse(html).data.list;
}
globalThis.vodids = function(ids) {
const currentTimestamp = parseInt(Date.now() / 1000, 10);
const url = h_ost + '/v2/home/vod_details';
const hx = CryptoJS.MD5('kj5649ertj84ks89r4jh8s45hf84hjfds04k' + currentTimestamp).toString();
let html = request(url, {
body: {
sign: hx,
vod_id: ids,
timestamp: currentTimestamp,
},
headers: {
'User-Agent': 'okhttp-okgo/jeasonlzy',
'Content-Type': 'application/x-www-form-urlencoded'
},
'method': 'POST'
}, true);
const redata = JSON.parse(html);
let vodPlayFrom = '';
let vodPlayUrl = '';
redata.data.vod_play_list.forEach((value, key) => {
if (value.flag.includes("nby") || value.flag.includes("mgtv") || value.flag.includes("qq") || value.flag.includes("qiyi") || value.flag.includes("mgtv") || 1) {
vodPlayFrom += `${value.flag}$$$`;
value.urls.forEach(url => {
vodPlayUrl += `${url.name}$${value.parse_urls[0]}${url.url}~${url.name}#`;
});
vodPlayUrl += '$$$';
}
});
const regeshi = {
vod_id: redata.data.vod_id,
vod_name: redata.data.vod_name,
vod_remarks: `${redata.data.vod_remarks}`,
type_name: redata.data.vod_class,
vod_pic: redata.data.vod_pic,
vod_year: redata.data.vod_year,
vod_area: redata.data.vod_area,
vod_actor: `${redata.data.vod_actor}`,
vod_director: redata.data.vod_director,
vod_content: `${redata.data.vod_content}`,
vod_play_from: vodPlayFrom,
vod_play_url: vodPlayUrl
};
return regeshi;
}
globalThis.jxx = function(input) {
if ("741852963" !== '741852963') {
return 'https://s0.mall.tcl.com/group1/M00/00/89/CvoGBGdcOPaAAUxvADwZniVV2bc476.mp4';
}
const parts = input.split('~');
try {
let response = fetch(parts[0], {
method: 'get',
headers: {
'User-Agent': 'okhttp/3.14.9',
'Content-Type': 'application/x-www-form-urlencoded'
}
});
if (response.includes("成功") || response.includes("success") || response.includes("nby")) {
let bata = JSON.parse(response);
input = {
parse: 0,
url: bata.url,
jx: 0,
danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + VOD.vod_name + '&js=' + parts[1] + '&key=741852963'
}
} else {
input = {
parse: 0,
url: parts[0].includes('url=') ? parts[0].slice(parts[0].indexOf('url=') + 4) : null,
jx: 1,
danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + VOD.vod_name + '&js=' + parts[1] + '&key=741852963'
}
}
} catch {
input = {
parse: 0,
url: '解析失败',
jx: 0,
}
}
return input;
}
var rule = {
title: '天天',
host: '',
detailUrl: 'fyid',
searchUrl: '**',
url: 'fyclass',
searchable: 2,
quickSearch: 1,
filterable: 0,
class_name: '电影&电视剧&综艺&动漫',
class_url: '1&2&4&3',
play_parse: true,
lazy: $js.toString(() => {
input = jxx(input);
}),
推荐: $js.toString(() => {
let bdata = vodlist(1, 1);
console.log(bdata);
bdata.forEach(it => {
d.push({
url: it.vod_id,
title: it.vod_name,
img: it.vod_pic,
desc: it.vod_remarks
});
});
setResult(d);
}),
一级: $js.toString(() => {
let bdata = vodlist(input, MY_PAGE);
console.log(bdata);
bdata.forEach(it => {
d.push({
url: it.vod_id,
title: it.vod_name,
img: it.vod_pic,
desc: it.vod_remarks
});
});
setResult(d);
}),
二级: $js.toString(() => {
console.log("调试信息2" + input);
let data = vodids(input);
//console.log(data);
VOD = (data);
}),
搜索: $js.toString(() => {
let ddata = seach(input);
ddata.forEach(it => {
d.push({
url: it.vod_id,
title: it.vod_name,
img: it.vod_pic,
desc: it.vod_remarks
});
});
setResult(d);
}),
}
+10
View File
@@ -0,0 +1,10 @@
{
"请求头": "手机",
"编码": "UTF-8",
"简介": "简&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;介:&&</p>",
"线路数组": "javascript:;\">&&</a>",
"数组": "<li>&&</li>",
"图片": "data-echo=\"&&\"",
"分类url": "https://www.wwgz.cn/vod-list-id-{cateId}-pg-{catePg}-order--by-time-class-0-year-{year}-letter--area-{area}-lang-.html",
"分类": "短剧$26#电视剧$2#电影$1#动漫$4#综艺$3"
}
-4
View File
@@ -1,4 +0,0 @@
{
"分类": "短剧$1#电视剧$2",
"分类url": "https://www.jjduanju.com/sort/{cateId}/page/{catePg}.html"
}
+21
View File
@@ -0,0 +1,21 @@
{
"搜索模式": "1",
"搜索url": "https://www.foxjun.com/s/?q={wd}",
"搜索数组": "class=\"media\">&&/div>",
"搜索图片": "src=\"&&\"",
"搜索标题": "《&&》",
"搜索副标题": "》&&\"",
"搜索链接": "href=\"&&\"",
"标题": "《&&》",
"副标题": "》&&\"",
"影片年代": "上映日期:&&</p>",
"影片类型": "类型:&&</p>",
"主演": "主演:&&</p>",
"简介": "简介:&&</p>",
"播放数组": "<tbody>&&</tbody>",
"播放列表": "<a&&/a>[包含:magnet]",
"播放标题": ">&&<",
"播放链接": "href=\"&&\"",
"分类url": "https://www.foxjun.com/channel/{cateId}.html?apage1={catepg}",
"分类": "国产剧$guochanju#电影$dianying#动画$donghua#美欧剧$meiouju#日韩剧$rihanju"
}
-6
View File
@@ -1,6 +0,0 @@
{
"首页": "0",
"线路标题": "module-tab-value\">&&</span>",
"分类url": "http://www.ppxys.vip/s/{cateId}/area/{area}/by/{by}/class/{class}/lang/{lang}/letter/{letter}/page/{catePg}/year/{year}.html",
"分类": "剧集$1#电影$2#动漫番剧$3"
}
+8
View File
@@ -0,0 +1,8 @@
{
"简介": "tt\" style=*>&&</div>",
"数组": "<a&&module-item-pic",
"副标题": "module-item-text\">&&</div>",
"搜索url": "https://xiuer.pro/vod/search/?wd={wd}",
"分类url": "https://xiuer.pro/show/{cateId}/area/{area}/class/{class}/page/{catePg}/year/{year}/",
"分类": "短剧$duanju#电视剧$dianshiju#电影$dianying#动漫$dongman#综艺$zongyi"
}
+60
View File
@@ -0,0 +1,60 @@
{
"规则名": "百思派电影网",
"请求头参数": "手机",
"网页编码格式": "UTF-8",
"图片是否需要代理": "0",
"是否开启获取首页数据": "1",
"首页推荐链接": "https://www.bestpipe.cn",
"首页列表数组规则": "body&&.stui-vodlist",
"首页片单列表数组规则": "li",
"首页片单是否Jsoup写法": "1",
"分类起始页码": "1",
"分类链接": "https://www.bestpipe.cn/vodshow/{cateId}-{area}-{by}-{class}-{lang}----{catePg}---{year}.html",
"分类名称": "电影&剧集&短剧&动漫&综艺",
"分类名称替换词": "20&21&24&22&23",
"筛选数据": "ext",
"筛选类型名称": "Netflix&剧情&科幻&动作&喜剧&爱情&冒险&儿童&歌舞&音乐&奇幻&动画&恐怖&惊悚&战争&传记&纪录&犯罪&悬疑&西部&灾难&古装&武侠&家庭&短片&校园&文艺&运动&青春&同性&励志&历史||Netflix&欧美&短剧&古装&武侠&励志&家庭&剧情&喜剧&战争&科幻&惊悚&恐怖&悬疑&犯罪&动作&冒险&历史&同性||古代&现代&穿越&玄幻&霸总&英雄救美&未婚妻&师姐&绝美&逆袭&美女&爱情&甜宠&虐恋&爽剧&搞笑&情感&动漫&萌宝&都市&言情&重生&乡村&神医&幻想&反转&复仇&修仙&古装&男频||Netflix&热血&科幻&美少女&魔幻&经典&励志&少儿&冒险&搞笑&推理&恋爱&治愈&幻想&校园&动物&机战&亲子&儿歌&运动&悬疑&怪物&战争&益智&青春&童话&竞技&动作&社会&友情&真人版&电影版&OVA版&TV版&新番动画&完结动画||Netflix&脱口秀&真人秀&选秀&八卦&访谈&情感&生活&晚会&搞笑&音乐&时尚&游戏&少儿&体育&纪实&科教&曲艺&歌舞&财经&汽车&播报&其他",
"筛选类型替换词": "*",
"筛选地区名称": "大陆&香港&台湾&美国&日本&韩国&英国&法国&德国&印度&泰国&丹麦&瑞典&巴西&加拿大&俄罗斯&意大利&比利时&爱尔兰&西班牙&澳大利亚&其它||大陆&香港&韩国&美国&日本&法国&英国&德国&台湾&泰国&印度&其他||大陆&香港&韩国&美国&日本&法国&英国&德国&台湾&泰国&印度&其他||大陆&日本&欧美&其他||大陆&韩国&香港&台湾&美国&其它",
"筛选地区替换词": "*",
"筛选语言名称": "英语&法语&国语&粤语&日语&韩语&泰语&德语&俄语&闽南语&丹麦语&波兰语&瑞典语&印地语&挪威语&意大利语&西班牙语||空||空||国语&英语&粤语&闽南语&韩语&日语&其它||国语&英语&粤语&闽南语&韩语&日语&其它",
"筛选语言替换词": "*",
"详情是否Jsoup写法": "是",
"类型详情": ".stui-content__detail&&.data,1&&Text!状态:",
"年代详情": ".stui-content__detail&&.data,4&&Text!年份:",
"地区详情": ".stui-content__detail&&.data,2&&Text!地区:",
"演员详情": ".stui-content__detail&&.data,6&&Text!主演:",
"简介详情": ".stui-content__detail&&.detail-content&&Text",
"分类截取模式": "1",
"分类列表数组规则": "body&&.stui-vodlist__box",
"分类片单是否Jsoup写法": "1",
"分类片单标题": "a&&title",
"分类片单链接": "a&&href",
"分类片单图片": ".stui-vodlist__thumb&&data-original",
"分类片单副标题": ".pic-text&&Text",
"分类片单链接加前缀": "https://www.bestpipe.cn",
"搜索请求头参数": "User-Agent$手机",
"搜索链接": "https://www.bestpipe.cn/vodsearch/{wd}----------1---.html",
"搜索截取模式": "1",
"搜索列表数组规则": "body&&.stui-vodlist__box",
"搜索片单是否Jsoup写法": "1",
"搜索片单标题": "a&&title",
"搜索片单链接": "a&&href",
"搜索片单图片": ".stui-vodlist__thumb&&data-original",
"搜索片单副标题": ".pic-text&&Text",
"搜索片单链接加前缀": "https://www.bestpipe.cn",
"线路列表数组规则": "body&&.nav-tabs&&a",
"线路标题": "Text",
"播放列表数组规则": "body&&.stui-content__playlist",
"选集列表数组规则": "a",
"选集标题链接是否Jsoup写法": "1",
"选集标题": "a&&Text",
"选集链接": "a&&href",
"是否反转选集序列": "0",
"选集链接加前缀": "https://www.bestpipe.cn",
"选集链接加后缀": "",
"分析MacPlayer": "2",
"是否开启手动嗅探": "0",
"手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos",
"手动嗅探视频链接过滤词": ".html#=http"
}
+74 -78
View File
@@ -72,7 +72,7 @@
"filterable": 1,
"ext": {
"danmu": true,
"site": "aHR0cDovL29wLnlzZHFqcy5jbg=="
"site": "aHR0cDovL3R0LnlzZHFqcy5jbg=="
}
},
{
@@ -199,20 +199,6 @@
"api": "./JS/drpy2.min.js",
"ext": "./JS/米兔弹幕.js"
},
{
"key": "小熊弹幕",
"name": "小熊|弹幕",
"type": 3,
"api": "./JS/drpy2.min.js",
"ext": "./JS/小熊弹幕.js"
},
{
"key": "巨人弹幕",
"name": "巨人|弹幕",
"type": 3,
"api": "./JS/drpy2.min.js",
"ext": "./JS/巨人弹幕.js"
},
{
"key": "追剧弹幕",
"name": "追剧|弹幕",
@@ -220,20 +206,6 @@
"api": "./JS/drpy2.min.js",
"ext": "./JS/追剧弹幕.js"
},
{
"key": "梦米弹幕",
"name": "梦米|弹幕",
"type": 3,
"api": "./JS/drpy2.min.js",
"ext": "./JS/梦米弹幕.js"
},
{
"key": "小虎斑弹幕",
"name": "小虎斑|弹幕",
"type": 3,
"api": "./JS/drpy2.min.js",
"ext": "./JS/小虎斑弹幕.js"
},
{
"key": "三六零弹幕",
"name": "三六零|弹幕",
@@ -396,7 +368,7 @@
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
"site": "http://muou.6qu.top",
"site": "https://mogg.banye.tech:7086",
"danmu": true
}
},
@@ -417,22 +389,6 @@
"danmu": true
}
},
{
"key": "夸克虎斑弹幕",
"name": "虎斑|4K弹幕",
"type": 3,
"api": "csp_Wobg",
"quickSearch": 1,
"changeable": 1,
"filterable": 1,
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
"site": "https://huban.banye.tech:7086",
"danmu": true
}
},
{
"key": "夸克下饭弹幕",
"name": "下饭|4K弹幕",
@@ -449,6 +405,38 @@
"danmu": true
}
},
{
"key": "夸克二小弹幕",
"name": "二小|4K弹幕",
"type": 3,
"api": "csp_Wobg",
"quickSearch": 1,
"changeable": 1,
"filterable": 1,
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
"site": "https://enxiao.banye.tech:7086",
"danmu": true
}
},
{
"key": "夸克百家弹幕",
"name": "百家|4K弹幕",
"type": 3,
"api": "csp_Wobg",
"quickSearch": 1,
"changeable": 1,
"filterable": 1,
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
"site": "http://cj.jiexi.news",
"danmu": true
}
},
{
"key": "雷鲸",
"name": "雷鲸|4K",
@@ -504,13 +492,6 @@
"filterable": 0,
"ext": "KhY021WelCEl+6MsvwnzaPussky/EAoc9z7C4keyHaEQ+sKbXhMKd83VjTL7Ls6+m7XDIcGdziOxPv79y/h4QCvmOEJmZ1VD6dopzAVxkFzEFw=="
},
{
"key": "吉吉短剧",
"name": "吉吉|短剧",
"type": 3,
"api": "csp_XBPQ",
"ext": "./XBPQ/吉吉短剧.json"
},
{
"key": "爱我短剧",
"name": "爱我|短剧",
@@ -547,16 +528,6 @@
"quickSearch": 1,
"filterable": 1
},
{
"key": "酷影视",
"name": "酷影视|APP",
"type": 3,
"api": "csp_AppYsV2",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": "https://www.tvkuys.xyz/api.php/app/"
},
{
"key": "HG影视",
"name": "HG影视|APP",
@@ -596,7 +567,7 @@
},
{
"key": "永夜",
"name": "永夜|App",
"name": "永夜|APP",
"type": 3,
"api": "csp_Muou",
"playerType": 2,
@@ -612,12 +583,20 @@
},
{
"key": "二三",
"name": "二三|App",
"name": "二三|APP",
"type": 3,
"api": "csp_Muou",
"playerType": 2,
"ext": "caHR0cHM6Ly8xMjN5c3cuY29tfDIz5b2x6KeGfDQuMS44"
},
{
"key": "油条",
"name": "油条|APP",
"type": 3,
"api": "csp_Muou",
"playerType": 2,
"ext": "caHR0cDovL3UzYS50dHhnenMuY2585LyY5LyY5YWUfDQuMS45"
},
{
"key": "时常",
"name": "时常|APP",
@@ -868,23 +847,19 @@
"quickSearch": 1,
"filterable": 1
},
{
"key": "南瓜影视",
"name": "南瓜|影视",
"type": 3,
"api": "csp_NanGua",
"playerType": 1,
"ext": "maHR0cDovL25nLmNoYW5nbWVuZ3l1bi5jb20="
},
{
"key": "农民影视",
"name": "农民|影视",
"type": 3,
"api": "csp_Wwys",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": "https://m.wwgz.cn"
"api": "csp_XBPQ",
"ext": "./XBPQ/农民影视.json"
},
{
"key": "秀儿影视",
"name": "秀儿|影视",
"type": 3,
"api": "csp_XBPQ",
"ext": "./XBPQ/秀儿影视.json"
},
{
"key": "低端影视",
@@ -1070,6 +1045,16 @@
"api": "./JS/drpy2.min.js",
"ext": "./JS/碟调影视.js"
},
{
"key": "百思派",
"name": "百思派|影视",
"type": 3,
"api": "csp_XYQHiker",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": "./XYQHiker/百思派.json"
},
{
"key": "电影牛",
"name": "电影牛|影视",
@@ -1679,6 +1664,17 @@
"filterable": 1,
"ext": "./XYQHiker/电影港.json"
},
{
"key": "狐狸君",
"name": "狐狸君|磁力",
"type": 3,
"api": "csp_XBPQ",
"changeable": 1,
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": "./XBPQ/狐狸君.json"
},
{
"key": "布谷TV",
"name": "布谷TV|磁力",
BIN
View File
Binary file not shown.
@@ -1,37 +1,23 @@
#EXTM3U
#EXTINF:-1 group-title="央视频道",CCTV1
http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226895/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EI0Rkc6neBYgfpoJ1yud8Fw%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNPpqgHe3PQ5GNQoO-yUgA8C%2CEND
#EXTINF:-1 group-title="央视频道",CCTV1
http://kkk.jjjj.jiduo.me/api.php?n=tttt&id=8953&tk=a0c4f6cfaba3
#EXTINF:-1 group-title="央视频道",CCTV1
http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226895/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EI0Rkc6neBYgfpoJ1yud8Fw%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNPpqgHe3PQ5GNQoO-yUgA8C%2CEND$LR•IPV6『线路26』
#EXTINF:-1 group-title="央视频道",CCTV1
http://221.226.4.10:9901/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路195』
#EXTINF:-1 group-title="央视频道",CCTV1
http://39.164.180.36:19901/tsfile/live/0001_2.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4『线路200』
#EXTINF:-1 group-title="央视频道",CCTV1
http://112.6.165.112:9901/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路278』
#EXTINF:-1 group-title="央视频道",CCTV1
http://218.93.208.172:35455/migu/608807420.m3u8?migutoken=c1e47192e21ebd32f0cc762a6749923a27468f3c407786209ce921f54a3faab96bf61281f3baee22f2ea266b1ec7e46d7bdfab0916f461bf38474fe38d0bdb2dcc56ee56853b8d6c509d866d80
#EXTINF:-1 group-title="央视频道",CCTV1
http://tv.20191209.xyz:37377/migu/608807420.m3u8?migutoken=004b385f879c68b1898b3b528c53ce2cc69a05fc6ccef397d5ff725950f98cc37983a6c0565ab535a964de0b80663b3a394fd8a43c51d0547d2e232162525de45bdb07292d1fc1944aea97f0
#EXTINF:-1 group-title="央视频道",CCTV1
http://148.135.93.213:81/live.php?id=CCTV1
#EXTINF:-1 group-title="央视频道",CCTV1
http://112.6.165.112:9901/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV1
http://183.215.134.239:19901/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV1
http://123.149.3.11:9901/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV1
http://1.180.2.93:9901/tsfile/live/1020_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV1
http://113.140.12.230:8888/newlive/live/hls/15/live.m3u8
#EXTINF:-1 group-title="央视频道",CCTV1
http://221.226.4.10:9901/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV1
http://220.202.110.48:9003/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV1
http://z.b.bkpcp.top/m.php?id=cctv1
#EXTINF:-1 group-title="央视频道",CCTV1
http://202.168.187.208:9089/tsfile/live/1003_1.m3u8
@@ -42,179 +28,43 @@ http://xiaoya.crccxw.top:35455/gaoma/cctv1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV1
http://221.226.4.10:9901/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路280』
#EXTINF:-1 group-title="央视频道",CCTV1
http://220.202.110.48:9003/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路286』
#EXTINF:-1 group-title="央视频道",CCTV1
http://58.220.211.90:352/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路291』
#EXTINF:-1 group-title="央视频道",CCTV1
http://175.31.21.146:4480/hls/1/index.m3u8
#EXTINF:-1 group-title="央视频道",CCTV1
http://lt.hxtre.com:35455/itv/1000000001000018602.m3u8?cdn=ystenlive
#EXTINF:-1 group-title="央视频道",CCTV1
http://lt.hxtre.com:35455/itv/1000000001000021973.m3u8?cdn=ystenlive
#EXTINF:-1 group-title="央视频道",CCTV1
http://39.164.180.36:19901/tsfile/live/0001_2.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="央视频道",CCTV1
http://goo.bkpcp.top/mg/cctv1
#EXTINF:-1 group-title="央视频道",CCTV2
http://148.135.93.213:81/live.php?id=CCTV2
#EXTINF:-1 group-title="央视频道",CCTV2
http://218.93.208.172:35455/migu/631780532.m3u8?migutoken=f37996961dda807c76bd64f9a2747f07f7fd95917e411e96a40281fd628bc4000eb7f71344d3bca848bfba138c3988d53652cdbc6fc8225515f1c0e1ea6c8920e7d1e957628a334e765280cc07
#EXTINF:-1 group-title="央视频道",CCTV2
http://xiaoya.crccxw.top:35455/gaoma/cctv2.m3u8
#EXTINF:-1 group-title="央视频道",CCTV2
http://39.164.180.36:19901/tsfile/live/0002_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4『线路181』
#EXTINF:-1 group-title="央视频道",CCTV2
http://112.6.165.112:9901/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路184』
#EXTINF:-1 group-title="央视频道",CCTV2
http://123.254.110.101:5000/1000000001000023315/ystenlive/index.m3u8$LR•IPV4『线路257』
#EXTINF:-1 group-title="央视频道",CCTV2
http://120.76.248.139/live/bfgd/4200000061.m3u8
#EXTINF:-1 group-title="央视频道",CCTV2
http://tv.20191209.xyz:37377/migu/631780532.m3u8?migutoken=862217ff2cffee0a741039e700509cb8f9a8b1920fe6cee55afb89ef1551eba3ecc744e93cf8e52cd8b4bf1a27c7a074745b640058072bfa4ad145917cdeb959261218d7b78174684a74ae78
#EXTINF:-1 group-title="央视频道",CCTV2
http://183.215.134.239:19901/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV2
http://123.149.3.11:9901/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV2
http://1752e145z8.vicp.fun:35455/gaoma/cctv2.m3u8
#EXTINF:-1 group-title="央视频道",CCTV2
http://39.164.180.36:19901/tsfile/live/0002_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4『线路168』
#EXTINF:-1 group-title="央视频道",CCTV2
http://221.226.4.10:9901/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路273』
#EXTINF:-1 group-title="央视频道",CCTV2
http://39.164.180.36:19901/tsfile/live/0002_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="央视频道",CCTV2
http://221.226.4.10:9901/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV2
http://202.168.187.208:9089/tsfile/live/0002_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV2
http://jf.jxx2023.work:40446/tsfile/live/0002_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV2
http://39.164.180.36:19901/tsfile/live/0002_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4『线路264』
#EXTINF:-1 group-title="央视频道",CCTV2
http://221.226.4.10:9901/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路269』
#EXTINF:-1 group-title="央视频道",CCTV2
http://lt.hxtre.com:35455/itv/1000000001000012442.m3u8?cdn=ystenlive
#EXTINF:-1 group-title="央视频道",CCTV3
http://202.168.187.208:9089/tsfile/live/0003_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV3
http://148.135.93.213:81/live.php?id=CCTV3
#EXTINF:-1 group-title="央视频道",CCTV3
http://218.93.208.172:35455/migu/624878271.m3u8?migutoken=fc4d3188808753792a59fb9fb632ad0e1d099d6828db8758f8c977a28dc480e969bef66e8cd942d53ce07a039791c90b959a0f75df560f5966e3f5ed7c8cf5bbb0fac0f4394f21d52636ca79cb
#EXTINF:-1 group-title="央视频道",CCTV3
http://222.169.85.8:9901/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV3
http://39.164.180.36:19901/tsfile/live/0001_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4『线路166』
#EXTINF:-1 group-title="央视频道",CCTV3
http://123.254.110.101:5000/1000000005000265003/ystenlive/index.m3u8$LR•IPV4『线路246』
#EXTINF:-1 group-title="央视频道",CCTV3
http://z.b.bkpcp.top/m.php?id=cctv3
#EXTINF:-1 group-title="央视频道",CCTV3
http://goo.bkpcp.top/mg/cctv3
#EXTINF:-1 group-title="央视频道",CCTV3
http://183.215.134.239:19901/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV3
http://123.149.3.11:9901/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV3
http://ak6668768.zicp.io:8802/live1003.m3u8
#EXTINF:-1 group-title="央视频道",CCTV3
http://39.164.180.36:19901/tsfile/live/0001_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="央视频道",CCTV3
http://lt.hxtre.com:35455/itv/1000000005000265003.m3u8?cdn=ystenlive
#EXTINF:-1 group-title="央视频道",CCTV4
http://goo.bkpcp.top/mg/cctv4
#EXTINF:-1 group-title="央视频道",CCTV4
http://[2409:8087:1:20:20::29]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226470/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E0wP1dRMt9qCzHdvA65wh1w%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNMcuN2HH7RLPyPHWOUWhSMk%2CEND
#EXTINF:-1 group-title="央视频道",CCTV4
http://[2409:8087:1:20:20::26]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226335/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EBFJ5gRpm8ntK8JEFPZOhLQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND
#EXTINF:-1 group-title="央视频道",CCTV4
http://z.b.bkpcp.top/m.php?id=cctv4
#EXTINF:-1 group-title="央视频道",CCTV4
http://148.135.93.213:81/live.php?id=CCTV4
#EXTINF:-1 group-title="央视频道",CCTV4
http://218.93.208.172:35455/migu/631780421.m3u8?migutoken=c7f507bbd9cce24c2acdc93defad48a900f168c4ca906d6038ab0f6139f63ebe0ddaadfce8581b4e0014595c5d9de27f08f2398874e7990b2f98bca8c5e37775005a38dfdd40f4ea9bbfa10d23
#EXTINF:-1 group-title="央视频道",CCTV4
http://kkk.jjjj.jiduo.me/api.php?n=tttt&id=2634&tk=a0c4f6cfaba3
#EXTINF:-1 group-title="央视频道",CCTV4
http://kkk.jjjj.jiduo.me/api.php?n=tttt&id=9394&tk=a0c4f6cfaba3
#EXTINF:-1 group-title="央视频道",CCTV4
http://[2409:8087:1:20:20::26]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226335/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EBFJ5gRpm8ntK8JEFPZOhLQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6『线路24』
#EXTINF:-1 group-title="央视频道",CCTV4
http://221.226.4.10:9901/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路267』
#EXTINF:-1 group-title="央视频道",CCTV4
http://[2409:8087:1:20:20::26]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226335/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EBFJ5gRpm8ntK8JEFPZOhLQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6『线路22』
#EXTINF:-1 group-title="央视频道",CCTV4
http://221.226.4.10:9901/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路179』
#EXTINF:-1 group-title="央视频道",CCTV4
http://39.164.180.36:19901/tsfile/live/0004_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4『线路191』
#EXTINF:-1 group-title="央视频道",CCTV4
http://[2409:8087:1:20:20::29]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226470/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E0wP1dRMt9qCzHdvA65wh1w%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNMcuN2HH7RLPyPHWOUWhSMk%2CEND$LR•IPV6『线路23』
#EXTINF:-1 group-title="央视频道",CCTV4
http://tv.20191209.xyz:37377/migu/631780421.m3u8?migutoken=40b6a739d50c9611ac1bd3d6237cc8012f7bd8bd06945da894d03e393a3af480e950d8dc5e1a28cc2b74626afd48a747c2298114358e3f95be67743f3627ea5c2b12422eb6f434b52d57ce8c
#EXTINF:-1 group-title="央视频道",CCTV4
http://z.b.bkpcp.top/m.php?id=cctv4o
#EXTINF:-1 group-title="央视频道",CCTV4
http://1752e145z8.vicp.fun:35455/gaoma/cctv4.m3u8
#EXTINF:-1 group-title="央视频道",CCTV4
http://123.149.3.11:9901/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV4
http://113.140.12.230:8888/newlive/live/hls/5/live.m3u8
#EXTINF:-1 group-title="央视频道",CCTV4
http://221.226.4.10:9901/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路312』
#EXTINF:-1 group-title="央视频道",CCTV4
http://60.214.104.110:352/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路267』
#EXTINF:-1 group-title="央视频道",CCTV4
http://221.226.4.10:9901/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路270』
#EXTINF:-1 group-title="央视频道",CCTV4
http://221.226.4.10:9901/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV4
http://39.164.180.36:19901/tsfile/live/0004_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="央视频道",CCTV4
http://60.214.104.110:352/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV5
http://148.135.93.213:81/live.php?id=CCTV5
#EXTINF:-1 group-title="央视频道",CCTV5
http://218.93.208.172:35455/migu/641886683.m3u8?migutoken=87d52e3d24e7d2e911e3dfd7ea18495fc128afee9e8b63e2945bdf50bb2105992d65245e2b914f41bb1b7218c76012d8e20573dfc0ca6ff336e3ba39c0a26c95030a5f99b9264b0583d92caea8
#EXTINF:-1 group-title="央视频道",CCTV5
http://221.2.148.205:8154/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路42』
#EXTINF:-1 group-title="央视频道",CCTV5
http://39.164.180.36:19901/tsfile/live/0005_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4『线路192』
#EXTINF:-1 group-title="央视频道",CCTV5
http://182.91.124.224:9901/tsfile/live/faacts/0005_2.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4『线路219』
#EXTINF:-1 group-title="央视频道",CCTV5
http://221.226.4.10:9901/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路268』
#EXTINF:-1 group-title="央视频道",CCTV5
http://tv.20191209.xyz:37377/migu/641886683.m3u8?migutoken=81d12cec2983a402e950068a320720875c9b84d86ead50b7ee5cc3d407f55f3d85a8e298762710bc211027e047162ea27025e20dda4ac4921a6c1d8b950dbe297e15174889d5122c0e3462d0
#EXTINF:-1 group-title="央视频道",CCTV5
http://3501776.xyz:35455/gaoma/cctv5.m3u8
#EXTINF:-1 group-title="央视频道",CCTV5
http://123.149.3.11:9901/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV5
http://1.180.2.93:9901/tsfile/live/1027_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV5
http://113.140.12.230:8888/newlive/live/hls/6/live.m3u8
#EXTINF:-1 group-title="央视频道",CCTV5
http://221.226.4.10:9901/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路300』
#EXTINF:-1 group-title="央视频道",CCTV5
http://221.226.4.10:9901/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV5
http://182.91.124.224:9901/tsfile/live/faacts/0005_2.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4『线路212』
#EXTINF:-1 group-title="央视频道",CCTV5
http://221.226.4.10:9901/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路296』
#EXTINF:-1 group-title="央视频道",CCTV5
http://202.168.187.208:9089/tsfile/live/0005_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV5
http://39.164.180.36:19901/tsfile/live/0005_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="央视频道",CCTV5
http://lt.hxtre.com:35455/gaoma/cctv5.m3u8
#EXTINF:-1 group-title="央视频道",CCTV5+
http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226458/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Em70vyfVI_MkrcLYjHWnqOA%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNNlS0O1LA8iGydXPYujpRue%2CEND
#EXTINF:-1 group-title="央视频道",CCTV5+
http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226894/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EevWZ0zmguDsOY_Mf3SM5TA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND
#EXTINF:-1 group-title="央视频道",CCTV5+
http://148.135.93.213:81/live.php?id=CCTV5p
#EXTINF:-1 group-title="央视频道",CCTV5+
http://kkk.jjjj.jiduo.me/api.php?n=tttt&id=7404&tk=a0c4f6cfaba3
#EXTINF:-1 group-title="央视频道",CCTV5+
http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226458/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Em70vyfVI_MkrcLYjHWnqOA%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNNlS0O1LA8iGydXPYujpRue%2CEND$LR•IPV6『线路20』
#EXTINF:-1 group-title="央视频道",CCTV5+
@@ -222,135 +72,51 @@ http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/322122
#EXTINF:-1 group-title="央视频道",CCTV5+
http://1752e145z8.vicp.fun:35455/gaoma/cctv5p.m3u8
#EXTINF:-1 group-title="央视频道",CCTV5+
http://39.164.180.36:19901/tsfile/live/0016_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4『线路152』
#EXTINF:-1 group-title="央视频道",CCTV5+
http://z.b.bkpcp.top/m.php?id=cctv5p
#EXTINF:-1 group-title="央视频道",CCTV5+
http://120.76.248.139/live/bfgd/4200000246.m3u8
#EXTINF:-1 group-title="央视频道",CCTV5+
http://183.215.134.239:19901/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV5+
http://221.226.4.10:9901/tsfile/live/0005_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV5+
http://60.214.104.110:352/tsfile/live/0016_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV5+
http://xiaoya.crccxw.top:35455/gaoma/cctv5p.m3u8
#EXTINF:-1 group-title="央视频道",CCTV5+
http://lt.hxtre.com:35455/gaoma/cctv5p.m3u8
#EXTINF:-1 group-title="央视频道",CCTV5+
http://lt.hxtre.com:35455/itv/1000000005000265016.m3u8?cdn=ystenlive
#EXTINF:-1 group-title="央视频道",CCTV5+
http://39.164.180.36:19901/tsfile/live/0016_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="央视频道",CCTV6
http://goo.bkpcp.top/mg/cctv6
#EXTINF:-1 group-title="央视频道",CCTV6
http://148.135.93.213:81/live.php?id=CCTV6
#EXTINF:-1 group-title="央视频道",CCTV6
http://42.48.105.224:9002/tsfile/live/0006_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV6
http://123.149.3.11:9901/tsfile/live/0006_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV6
http://113.140.12.230:8888/newlive/live/hls/7/live.m3u8
#EXTINF:-1 group-title="央视频道",CCTV6
http://ak6668768.zicp.io:8805/live1006.m3u8
#EXTINF:-1 group-title="央视频道",CCTV6
http://tv.20191209.xyz:37377/migu/624878396.m3u8?migutoken=14b6f481c50ac947cd74bf4b212c490bc99f4bebefd4ce18011c9eb269208a0ce9740af370135e855763df734bac8f57f36721ae54b6afc81829420e84f46c65a2de80938b057c6ec23459eb
#EXTINF:-1 group-title="央视频道",CCTV6
http://z.b.bkpcp.top/m.php?id=cctv6
#EXTINF:-1 group-title="央视频道",CCTV6
http://lt.hxtre.com:35455/itv/1000000001000016466.m3u8?cdn=ystenlive
#EXTINF:-1 group-title="央视频道",CCTV6
http://39.164.180.36:19901/tsfile/live/0006_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="央视频道",CCTV7
http://[2409:8087:1:20:20::2a]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226234/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EutDC7HLJc_gC0YdIDr7oig%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNPOHuulzlCcw92vP3vgYa4n%2CEND
#EXTINF:-1 group-title="央视频道",CCTV7
http://z.b.bkpcp.top/m.php?id=cctv7
#EXTINF:-1 group-title="央视频道",CCTV7
http://148.135.93.213:81/live.php?id=CCTV7
#EXTINF:-1 group-title="央视频道",CCTV7
http://8.138.7.223/tv/cctv7.m3u8
#EXTINF:-1 group-title="央视频道",CCTV7
http://[2409:8087:1:20:20::2a]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226234/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EutDC7HLJc_gC0YdIDr7oig%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNPOHuulzlCcw92vP3vgYa4n%2CEND$LR•IPV6『线路23』
#EXTINF:-1 group-title="央视频道",CCTV7
http://182.37.169.94:352/tsfile/live/0007_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路183』
#EXTINF:-1 group-title="央视频道",CCTV7
http://[2409:8087:1:20:20::2a]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226234/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EutDC7HLJc_gC0YdIDr7oig%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNPOHuulzlCcw92vP3vgYa4n%2CEND$LR•IPV6『线路24』
#EXTINF:-1 group-title="央视频道",CCTV7
http://1752e145z8.vicp.fun:35455/gaoma/cctv7.m3u8
#EXTINF:-1 group-title="央视频道",CCTV7
http://39.164.180.36:19901/tsfile/live/0007_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4『线路189』
#EXTINF:-1 group-title="央视频道",CCTV7
http://123.149.3.11:9901/tsfile/live/0007_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV7
http://lt.hxtre.com:35455/itv/1000000005000265007.m3u8?cdn=ystenlive
#EXTINF:-1 group-title="央视频道",CCTV7
http://lt.hxtre.com:35455/gaoma/cctv7.m3u8
#EXTINF:-1 group-title="央视频道",CCTV7
http://lt.hxtre.com:35455/itv/1000000001000024341.m3u8?cdn=ystenlive
#EXTINF:-1 group-title="央视频道",CCTV7
http://39.164.180.36:19901/tsfile/live/0007_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="央视频道",CCTV7
http://183.66.15.146:60901/tsfile/live/0007_1.m3u8?key=txiptv
#EXTINF:-1 group-title="央视频道",CCTV8
http://148.135.93.213:81/live.php?id=CCTV8
#EXTINF:-1 group-title="央视频道",CCTV8
http://1752e145z8.vicp.fun:35455/gaoma/cctv8.m3u8
#EXTINF:-1 group-title="央视频道",CCTV8
http://z.b.bkpcp.top/m.php?id=cctv8
#EXTINF:-1 group-title="央视频道",CCTV8
http://183.215.134.239:19901/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV8
http://123.149.3.11:9901/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV8
http://113.140.12.230:8888/newlive/live/hls/9/live.m3u8
#EXTINF:-1 group-title="央视频道",CCTV8
http://zzssw01.55555.io:9901/tsfile/live/0008_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV8
http://222.169.85.8:9901/tsfile/live/0008_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV8
http://39.164.180.36:19901/tsfile/live/0008_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="央视频道",CCTV8
http://xiaoya.crccxw.top:35455/gaoma/cctv8.m3u8
#EXTINF:-1 group-title="央视频道",CCTV9
http://z.b.bkpcp.top/m.php?id=cctv9
#EXTINF:-1 group-title="央视频道",CCTV9
http://148.135.93.213:81/live.php?id=CCTV9
#EXTINF:-1 group-title="央视频道",CCTV9
http://39.164.180.36:19901/tsfile/live/0009_1.m3u8?key=txiptv&playlive=0&au
#EXTINF:-1 group-title="央视频道",CCTV9
http://123.149.3.11:9901/tsfile/live/0009_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV9
http://tv.20191209.xyz:37377/migu/673168140.m3u8?migutoken=f031388105c748c586faaad9c60beb6810562043675d6edc5e20d12b433d4ca6cb365c3f3ae060a000a9d0dfcfe0e27fef16bfe073d28cb40758aaa79ab380a9015815cfe9bfc4e6413e284a
#EXTINF:-1 group-title="央视频道",CCTV9
http://221.226.4.10:9901/tsfile/live/0009_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV9
http://221.226.4.10:9901/tsfile/live/0009_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV9
http://39.164.180.36:19901/tsfile/live/0009_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="央视频道",CCTV10
http://goo.bkpcp.top/mg/cctv10
#EXTINF:-1 group-title="央视频道",CCTV10
http://148.135.93.213:81/live.php?id=CCTV10
#EXTINF:-1 group-title="央视频道",CCTV10
http://xiaoya.crccxw.top:35455/gaoma/cctv10.m3u8
#EXTINF:-1 group-title="央视频道",CCTV10
http://z.b.bkpcp.top/m.php?id=cctv10
#EXTINF:-1 group-title="央视频道",CCTV10
http://120.76.248.139/live/bfgd/4200000129.m3u8
#EXTINF:-1 group-title="央视频道",CCTV10
http://123.149.3.11:9901/tsfile/live/0010_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV10
http://39.164.180.36:19901/tsfile/live/0010_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="央视频道",CCTV10
http://182.37.169.94:352/tsfile/live/0010_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV10
http://60.214.104.110:352/tsfile/live/0010_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV10
http://221.226.4.10:9901/tsfile/live/0010_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV10
http://221.226.4.10:9901/tsfile/live/0010_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV10
http://lt.hxtre.com:35455/gaoma/cctv10.m3u8
#EXTINF:-1 group-title="央视频道",CCTV11
http://[2409:8087:1:20:20::26]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226334/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E0RcQQbNseiHvFO8XWf466A%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND
#EXTINF:-1 group-title="央视频道",CCTV11
@@ -358,17 +124,7 @@ http://kkk.jjjj.jiduo.me/api.php?n=tttt&id=8830&tk=a0c4f6cfaba3
#EXTINF:-1 group-title="央视频道",CCTV11
http://xiaoya.crccxw.top:35455/gaoma/cctv11.m3u8
#EXTINF:-1 group-title="央视频道",CCTV11
http://148.135.93.213:81/live.php?id=CCTV11
#EXTINF:-1 group-title="央视频道",CCTV11
http://123.149.3.11:9901/tsfile/live/0011_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV11
http://tv.20191209.xyz:37377/migu/667987558.m3u8?migutoken=d3962834d5d359e6f7f25a8880b73dac381a999ef87ba6b7f0f985bb5308a73061bbf5a9abdf873debb3b83b31eb7eff72f410c853c86f404b3f3ef269aeb631982e338f1400adcaf902fff7
#EXTINF:-1 group-title="央视频道",CCTV11
http://39.164.180.36:19901/tsfile/live/0011_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="央视频道",CCTV11
http://39.164.160.249:9901/tsfile/live/0011_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV11
http://lt.hxtre.com:35455/itv/1000000005000265011.m3u8?cdn=ystenlive
#EXTINF:-1 group-title="央视频道",CCTV12
http://goo.bkpcp.top/mg/cctv12
#EXTINF:-1 group-title="央视频道",CCTV12
@@ -378,23 +134,9 @@ http://148.135.93.213:81/live.php?id=CCTV12
#EXTINF:-1 group-title="央视频道",CCTV12
http://xiaoya.crccxw.top:35455/gaoma/cctv12.m3u8
#EXTINF:-1 group-title="央视频道",CCTV12
http://123.149.3.11:9901/tsfile/live/0012_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV12
http://j.x.bkpcp.top/jx/CCTV12HD
#EXTINF:-1 group-title="央视频道",CCTV12
http://39.164.180.36:19901/tsfile/live/0012_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="央视频道",CCTV12
http://221.226.4.10:9901/tsfile/live/0012_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV12
http://221.226.4.10:9901/tsfile/live/0012_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV12
http://183.66.15.146:60901/tsfile/live/0012_1.m3u8?key=txiptv
#EXTINF:-1 group-title="央视频道",CCTV12
http://183.66.15.146:60901/tsfile/live/0012_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV13
http://goo.bkpcp.top/mg/cctv13
#EXTINF:-1 group-title="央视频道",CCTV13
http://xiaoya.crccxw.top:35455/gaoma/cctv13.m3u8
#EXTINF:-1 group-title="央视频道",CCTV13
http://[2409:8087:1:20:20::29]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226316/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EqHPe9pEEWJ00hz1ArnRZVA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND
#EXTINF:-1 group-title="央视频道",CCTV13
@@ -402,46 +144,26 @@ http://148.135.93.213:81/live.php?id=CCTV13
#EXTINF:-1 group-title="央视频道",CCTV13
http://183.215.134.239:19901/tsfile/live/0013_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV13
http://123.149.3.11:9901/tsfile/live/0013_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV13
http://j.x.bkpcp.top/jx/CCTV13HD
#EXTINF:-1 group-title="央视频道",CCTV13
https://event.pull.hebtv.com/jishi/cp1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV13
http://tv.20191209.xyz:37377/migu/608807423.m3u8?migutoken=948b8b51df7e776bcf238bb9088879a2b71a25a424b0d80d5e71375315cda109c5aab5c79693c4324d45ad012e70208234f659abbe606a595a03d29e06ce931ed56f129fbc95a505ab84f72c
#EXTINF:-1 group-title="央视频道",CCTV13
http://z.b.bkpcp.top/m.php?id=cctv13
#EXTINF:-1 group-title="央视频道",CCTV13
http://39.164.180.36:19901/tsfile/live/0013_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="央视频道",CCTV13
http://lt.hxtre.com:35455/gaoma/cctv13.m3u8
#EXTINF:-1 group-title="央视频道",CCTV13
http://61.163.181.78:9901/tsfile/live/0013_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV13
http://116.128.243.121:85/tsfile/live/0013_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="央视频道",CCTV14
http://[2409:8087:1:20:20::26]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226229/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Ey_UgKg-_uoDiTW1MNHptPg%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNNLabf3bHEXv4444iiOs_Px%2CEND
#EXTINF:-1 group-title="央视频道",CCTV14
http://148.135.93.213:81/live.php?id=CCTV14
#EXTINF:-1 group-title="央视频道",CCTV14
http://goo.bkpcp.top/mg/cctv14
#EXTINF:-1 group-title="央视频道",CCTV14
http://tv.20191209.xyz:37377/migu/624878440.m3u8?migutoken=d84c14c00275d7fa951be2b0a959b0c1af15c62e7f86732fa2306e3a92f447f5b841e0cc26645dc89e70e970812e2c07c2fe24ae5c02b854544ed8c99d6c6d668a402d58cf351e77b5311afd
#EXTINF:-1 group-title="央视频道",CCTV14
http://123.149.3.11:9901/tsfile/live/0014_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV14
https://event.pull.hebtv.com/jishi/cp2.m3u8
#EXTINF:-1 group-title="央视频道",CCTV14
http://222.169.85.8:9901/tsfile/live/0014_1.m3u8?key=txiptv
#EXTINF:-1 group-title="央视频道",CCTV14
http://221.226.4.10:9901/tsfile/live/0014_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV14
http://221.226.4.10:9901/tsfile/live/0014_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV14
http://39.164.160.249:9901/tsfile/live/0014_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV14
http://39.164.180.36:19901/tsfile/live/0014_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="央视频道",CCTV14
http://222.169.85.8:9901/tsfile/live/0014_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV15
http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226333/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EWyklhmFh7oMx-lG1tNUcSQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND
@@ -451,61 +173,23 @@ http://148.135.93.213:81/live.php?id=CCTV15
http://xiaoya.crccxw.top:35455/gaoma/cctv15.m3u8
#EXTINF:-1 group-title="央视频道",CCTV15
http://120.76.248.139/live/bfgd/4200000133.m3u8
#EXTINF:-1 group-title="央视频道",CCTV15
http://123.149.3.11:9901/tsfile/live/0015_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV15
http://39.164.160.249:9901/tsfile/live/0015_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV15
http://lt.hxtre.com:35455/gaoma/cctv15.m3u8
#EXTINF:-1 group-title="央视频道",CCTV15
https://stream1.freetv.fun/9350a599d0593a4eb692e9a5c26a4b0777dc9758db460b4e02a9ffa970765999.m3u8
#EXTINF:-1 group-title="央视频道",CCTV15
http://z.b.bkpcp.top/m.php?id=cctv15
#EXTINF:-1 group-title="央视频道",CCTV16
http://[2409:8087:1:20:20::2a]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227002/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EX9goLRw26BM_r54des2PAw%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNPt5W7-RovMDpE-7B-0PhHw%2CEND
#EXTINF:-1 group-title="央视频道",CCTV16
http://lt.hxtre.com:35455/itv/1000000006000233001.m3u8?cdn=ystenlive
#EXTINF:-1 group-title="央视频道",CCTV16
http://lt.hxtre.com:35455/gaoma/cctv16.m3u8
#EXTINF:-1 group-title="央视频道",CCTV16
http://lt.hxtre.com:35455/itv/1000000006000233002.m3u8?cdn=ystenlive
#EXTINF:-1 group-title="央视频道",CCTV17
http://148.135.93.213:81/live.php?id=CCTV17
#EXTINF:-1 group-title="央视频道",CCTV17
http://lt.hxtre.com:35455/gaoma/cctv17.m3u8
#EXTINF:-1 group-title="央视频道",CCTV17
http://182.37.169.94:352/tsfile/live/0019_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV17
http://222.169.85.8:9901/tsfile/live/0007_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV17
http://z.b.bkpcp.top/m.php?id=cctv17
#EXTINF:-1 group-title="央视频道",CCTV17
http://220.164.192.48:50085/tsfile/live/0018_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4『线路33』
#EXTINF:-1 group-title="央视频道",CCTV17
http://120.76.248.139/live/bfgd/4200000204.m3u8
#EXTINF:-1 group-title="央视频道",CCTV电影轮播
http://zby.xjqxz.top/lljdy/live.m3u8
#EXTINF:-1 group-title="央视频道",CCTV女性时尚
http://180.213.174.225:9901/tsfile/live/1054_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV怀旧剧场
http://jf.jxx2023.work:40446/tsfile/live/1149_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV怀旧剧场
http://180.213.174.225:9901/tsfile/live/1049_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="央视频道",CCTV第一剧场
http://jf.jxx2023.work:40446/tsfile/live/1049_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV风云剧场
http://jf.jxx2023.work:40446/tsfile/live/1150_1.m3u8
#EXTINF:-1 group-title="央视频道",CCTV20241
https://p2.bdstatic.com/rtmp.liveshow.lss-user.baidubce.com/live/stream_bduid_6488563992_8982723413/merged_1707497046297_88536_25144_41936.m3u8
#EXTINF:-1 group-title="卫视频道",安徽卫视
http://iptv.huuc.edu.cn/hls/ahhd.m3u8
#EXTINF:-1 group-title="卫视频道",安徽卫视
http://j.x.bkpcp.top/jx/ANHUIHD
#EXTINF:-1 group-title="卫视频道",安徽卫视
http://112.123.243.37:50085/tsfile/live/0130_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",安徽卫视
http://39.164.180.36:19901/tsfile/live/0130_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",安徽卫视
http://222.169.85.8:9901/tsfile/live/0130_1.m3u8
#EXTINF:-1 group-title="卫视频道",安徽卫视
http://t8622699o8.vicp.fun:60024/itv/1000000001000030159.m3u8?cdn=ystenlive
@@ -518,38 +202,14 @@ http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/322122
#EXTINF:-1 group-title="卫视频道",北京卫视
http://221.226.4.10:9901/tsfile/live/1012_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",北京卫视
http://183.215.134.239:19901/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",北京卫视
http://123.149.3.11:9901/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",北京卫视
http://j.x.bkpcp.top/jx/BEIJHD
#EXTINF:-1 group-title="卫视频道",北京卫视
http://220.164.192.48:50085/tsfile/live/0135_1.m3u8
#EXTINF:-1 group-title="卫视频道",北京卫视
http://39.164.180.36:19901/tsfile/live/0122_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",北京卫视
http://58.220.211.90:352/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",北京卫视HD
http://120.76.248.139/live/bfgd/4200000083.m3u8
#EXTINF:-1 group-title="卫视频道",兵团卫视
http://liveout.btzx.com.cn/62ds9e/yil08g.m3u8
#EXTINF:-1 group-title="卫视频道",藏语卫视
http://php.jdshipin.com:8880/xztv.php?id=zy
#EXTINF:-1 group-title="卫视频道",重庆卫视
http://221.226.4.10:9901/tsfile/live/1015_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",重庆卫视
http://123.149.3.11:9901/tsfile/live/0142_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",重庆卫视
http://iptv.huuc.edu.cn/hls/cqhd.m3u8
#EXTINF:-1 group-title="卫视频道",重庆卫视
http://39.164.180.36:19901/tsfile/live/0142_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",东方卫视
http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226237/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EuOKqNaOUqqiJjXIfPoRPMQ%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNNeqgYr1eA9ESriCOsl_DTz%2CEND
#EXTINF:-1 group-title="卫视频道",东方卫视
http://www.xzbn.site:35455/itv/1000000005000265018.m3u8?cdn=ystenlive
#EXTINF:-1 group-title="卫视频道",东方卫视
http://221.226.4.10:9901/tsfile/live/1013_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",东方卫视
http://148.135.93.213:81/live.php?id=东方卫视
#EXTINF:-1 group-title="卫视频道",东方卫视
http://tv.20191209.xyz:37377/migu/651632648.m3u8?migutoken=a9a2b71c87ef01a1f546b80d3776d4e2ab5a03525b06b379f6d3ebca3a7a40f732115ab805783c8a8a73e5580900755cdfb3b6d3c2b9308a46141d56b6b629038613c381a9027a60e527e1c8
@@ -558,140 +218,58 @@ http://183.215.134.239:19901/tsfile/live/0107_1.m3u8?key=txiptv&playlive=1&authi
#EXTINF:-1 group-title="卫视频道",东方卫视
http://113.15.109.216:59901/tsfile/live/1009_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",东方卫视
http://z.b.bkpcp.top/m.php?id=dfws
#EXTINF:-1 group-title="卫视频道",东方卫视
http://222.169.85.8:9901/tsfile/live/0018_1.m3u8
#EXTINF:-1 group-title="卫视频道",东方卫视
http://39.164.180.36:19901/tsfile/live/0107_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",东方卫视HD
http://120.76.248.139/live/bfgd/4200000093.m3u8
#EXTINF:-1 group-title="卫视频道",东南卫视
http://[2409:8087:1:20:20::2a]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226496/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EkZUfG47p98m2PZiCsgkhyQ%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNM5EcQIH6BiwZavlhPLb4oJ%2CEND
#EXTINF:-1 group-title="卫视频道",东南卫视
http://j.x.bkpcp.top/jx/DONGNHD
#EXTINF:-1 group-title="卫视频道",东南卫视
http://api3.52tb.xyz/info?id=29&token=20230402fxrjwi
#EXTINF:-1 group-title="卫视频道",东南卫视
http://z.b.bkpcp.top/m.php?id=dnws
#EXTINF:-1 group-title="卫视频道",东南卫视
http://39.164.180.36:19901/tsfile/live/0137_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",东南卫视
rtsp://180.95.143.19/PLTV/88888910/224/3221225853/376430608.smil
#EXTINF:-1 group-title="卫视频道",东南卫视
http://110.81.206.138:49231/tsfile/live/23021_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",甘肃卫视
rtmp://livein.gstv.com.cn/49048r/y3nga4.flv
#EXTINF:-1 group-title="卫视频道",甘肃卫视
http://39.150.96.141:65535/tsfile/live/0141_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",甘肃卫视
http://j.x.bkpcp.top/jx/GSWS
#EXTINF:-1 group-title="卫视频道",甘肃卫视
http://live.zohi.tv/video/s10001-fztv-3/index.m3u8
#EXTINF:-1 group-title="卫视频道",甘肃卫视
http://39.164.180.36:19901/tsfile/live/0141_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",甘肃卫视
http://39.164.180.36:19901/tsfile/live/0141_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4『线路31』
#EXTINF:-1 group-title="卫视频道",甘肃卫视
http://39.164.180.36:19901/tsfile/live/0141_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4『线路25』
#EXTINF:-1 group-title="卫视频道",广东卫视
http://123.149.3.11:9901/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",广东卫视
http://222.169.85.8:9901/tsfile/live/0125_1.m3u8
#EXTINF:-1 group-title="卫视频道",广东卫视
http://39.164.180.36:19901/tsfile/live/0125_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",广东卫视
http://183.215.134.239:19901/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",广东卫视
http://221.226.4.10:9901/tsfile/live/1022_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",广东卫视
http://3501776.xyz:35455/itv/1000000005000265034.m3u8?cdn=ystenlive
#EXTINF:-1 group-title="卫视频道",广东卫视
http://j.x.bkpcp.top/jx/GUANGDHD
#EXTINF:-1 group-title="卫视频道",广东卫视
http://39.164.180.36:19901/tsfile/live/0125_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4『线路23』
#EXTINF:-1 group-title="卫视频道",广东卫视
http://ttkx.cc:1380/653哈哈/mg9.php?id=gdws
#EXTINF:-1 group-title="卫视频道",广东卫视
http://218.15.183.23:9901/tsfile/live/23008_1.m3u8
#EXTINF:-1 group-title="卫视频道",广西卫视
http://123.149.3.11:9901/tsfile/live/0113_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",广西卫视
http://113.15.109.216:59901/tsfile/live/0113_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",广西卫视
http://39.164.180.36:19901/tsfile/live/0113_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",广西卫视
http://220.164.192.48:50085/tsfile/live/0112_1.m3u8
#EXTINF:-1 group-title="卫视频道",广西卫视
http://222.169.85.8:9901/tsfile/live/0113_1.m3u8
#EXTINF:-1 group-title="卫视频道",广西卫视
http://221.226.4.10:9901/tsfile/live/1024_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",广西卫视
http://110.81.206.138:49231/tsfile/live/23055_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",广西卫视
http://221.2.148.205:8154/tsfile/live/0113_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路1』
#EXTINF:-1 group-title="卫视频道",贵州卫视
http://j.x.bkpcp.top/jx/GUIZHD
#EXTINF:-1 group-title="卫视频道",贵州卫视
http://39.164.180.36:19901/tsfile/live/0120_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",贵州卫视
http://182.37.169.94:352/tsfile/live/0120_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",贵州卫视
http://222.169.85.8:9901/tsfile/live/0120_1.m3u8
#EXTINF:-1 group-title="卫视频道",贵州卫视
rtsp://180.95.143.19/PLTV/88888910/224/3221225854/376430616.smil
#EXTINF:-1 group-title="卫视频道",贵州卫视
http://zzssw01.55555.io:9901/tsfile/live/0120_1.m3u8
#EXTINF:-1 group-title="卫视频道",海南卫视
http://221.226.4.10:9901/tsfile/live/1025_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",海南卫视
http://221.226.4.10:9901/tsfile/live/1025_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路31』
#EXTINF:-1 group-title="卫视频道",河北卫视
http://218.13.14.6:60050/tsfile/live/1040_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",河北卫视
http://39.164.180.36:19901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",河北卫视
http://116.131.190.210:352/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",河北卫视
http://39.164.160.249:9901/tsfile/live/0117_1.m3u8
#EXTINF:-1 group-title="卫视频道",河北卫视
http://183.66.15.146:60901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",河南卫视
http://220.164.192.48:50085/tsfile/live/0116_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",河南卫视
http://123.149.3.11:9901/tsfile/live/0139_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",河南卫视
http://110.81.206.138:49231/tsfile/live/23047_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",河南卫视HD
http://120.76.248.139/live/bfgd/4200000339.m3u8
#EXTINF:-1 group-title="卫视频道",黑龙江卫视
http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226239/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EEHwpSHKc5p-bHJfhpIWFig%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNM5Y8rTELLykZJHp-bmY2YW%2CEND
#EXTINF:-1 group-title="卫视频道",黑龙江卫视
http://39.164.180.36:19901/tsfile/live/0143_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",黑龙江卫视
http://182.37.169.94:352/tsfile/live/0143_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",湖北卫视
http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226240/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ExfU_RR0RQok0w_xd7h22CQ%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNPVnDV2fEBphgm3TP7hAHBx%2CEND
#EXTINF:-1 group-title="卫视频道",湖北卫视
http://148.135.93.213:81/live.php?id=湖北卫视
#EXTINF:-1 group-title="卫视频道",湖北卫视
http://221.226.4.10:9901/tsfile/live/1017_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",湖北卫视
http://goo.bkpcp.top/mg/hubws
#EXTINF:-1 group-title="卫视频道",湖北卫视
http://www.xzbn.site:35455/itv/1000000005000265023.m3u8?cdn=ystenlive
#EXTINF:-1 group-title="卫视频道",湖北卫视
http://220.164.192.48:50085/tsfile/live/0123_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",湖北卫视
http://iptv.huuc.edu.cn/hls/hbhd.m3u8
#EXTINF:-1 group-title="卫视频道",湖北卫视
http://222.169.85.8:9901/tsfile/live/0132_1.m3u8
#EXTINF:-1 group-title="卫视频道",湖北卫视
http://39.164.180.36:19901/tsfile/live/0132_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",湖北卫视
http://182.37.169.94:352/tsfile/live/0132_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",湖南卫视
http://j.x.bkpcp.top/jx/HUNANHD
#EXTINF:-1 group-title="卫视频道",湖南卫视
http://42.48.105.224:9002/tsfile/live/1000_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",湖南卫视
http://183.215.134.239:19901/tsfile/live/0128_1.m3u8?key=txiptv&playlive=1&authid=0
@@ -702,17 +280,7 @@ http://113.218.229.47:8081/tsfile/live/0017_1.m3u8?key=txiptv&playlive=1&authid=
#EXTINF:-1 group-title="卫视频道",湖南卫视
http://113.218.229.47:8081/tsfile/live/0017_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",湖南卫视
http://39.164.180.36:19901/tsfile/live/0128_2.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",湖南卫视
http://182.37.169.94:352/tsfile/live/0128_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",湖南卫视
http://58.220.211.90:352/tsfile/live/0128_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",湖南卫视
http://175.31.21.146:4480/hls/36/index.m3u8
#EXTINF:-1 group-title="卫视频道",吉林卫视
http://39.164.180.36:19901/tsfile/live/0116_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",吉林卫视
http://220.164.192.48:50085/tsfile/live/0118_1.m3u8
#EXTINF:-1 group-title="卫视频道",吉林卫视HD
http://120.76.248.139/live/bfgd/4200000097.m3u8
#EXTINF:-1 group-title="卫视频道",江苏卫视
@@ -720,45 +288,15 @@ http://[2409:8087:1:20:20::2a]/otttv.bj.chinamobile.com/PLTV/88888888/224/322122
#EXTINF:-1 group-title="卫视频道",江苏卫视
http://221.226.4.10:9901/tsfile/live/1006_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",江苏卫视
http://z.b.bkpcp.top/m.php?id=jsws
#EXTINF:-1 group-title="卫视频道",江苏卫视
http://222.169.85.8:9901/tsfile/live/0127_1.m3u8
#EXTINF:-1 group-title="卫视频道",江苏卫视
http://39.164.180.36:19901/tsfile/live/0127_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",江苏卫视
http://182.37.169.94:352/tsfile/live/0127_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",江苏卫视
http://goo.bkpcp.top/mg/jsws
#EXTINF:-1 group-title="卫视频道",江苏卫视
http://58.220.219.14:9901/tsfile/live/0127_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",江苏卫视
http://180.213.174.225:9901/tsfile/live/1013_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路3』
#EXTINF:-1 group-title="卫视频道",江苏卫视HD
http://120.76.248.139/live/bfgd/4200000085.m3u8
#EXTINF:-1 group-title="卫视频道",江西卫视
http://[2409:8087:1:20:20::29]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226243/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EfPpe3gkzCutYMoqOQQZNzA%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNMVuW7agCgULnvgy9rhLyCH%2CEND
#EXTINF:-1 group-title="卫视频道",江西卫视
http://123.149.3.11:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",江西卫视
http://39.164.180.36:19901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",江西卫视
http://183.215.134.239:19901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",江西卫视
http://148.135.93.213:81/live.php?id=江西卫视
#EXTINF:-1 group-title="卫视频道",辽宁卫视
http://221.226.4.10:9901/tsfile/live/1020_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",辽宁卫视
http://115.149.139.141:10001/tsfile/live/1028_1.m3u8
#EXTINF:-1 group-title="卫视频道",辽宁卫视
http://123.149.3.11:9901/tsfile/live/0121_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",辽宁卫视
http://iptv.huuc.edu.cn/hls/lnhd.m3u8
#EXTINF:-1 group-title="卫视频道",辽宁卫视
http://39.164.180.36:19901/tsfile/live/0121_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",辽宁卫视
http://180.213.174.225:9901/tsfile/live/1015_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路30』
#EXTINF:-1 group-title="卫视频道",辽宁卫视
http://lt.hxtre.com:35455/itv/1000000005000265022.m3u8?cdn=ystenlive
#EXTINF:-1 group-title="卫视频道",辽宁卫视HD
http://120.76.248.139/live/bfgd/4200000058.m3u8
#EXTINF:-1 group-title="卫视频道",内蒙古蒙语卫视
@@ -766,100 +304,44 @@ https://livestream-bt.nmtv.cn/nmtv/2315general.m3u8?txSecret=4971666599ef9411629
#EXTINF:-1 group-title="卫视频道",内蒙古卫视
https://ali-m-l.cztv.com/channels/lantian/channel007/1080p.m3u8$LR•IPV4『线路19』
#EXTINF:-1 group-title="卫视频道",内蒙古卫视
http://148.135.93.213:81/live.php?id=内蒙古卫视
#EXTINF:-1 group-title="卫视频道",内蒙古卫视
http://1.180.2.93:9901/tsfile/live/1068_1.m3u8
#EXTINF:-1 group-title="卫视频道",青海卫视
http://39.150.96.141:65535/tsfile/live/0140_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",青海卫视
http://39.164.180.36:19901/tsfile/live/0140_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",青海卫视
http://110.81.206.138:49231/tsfile/live/23062_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",山东卫视
http://[2409:8087:1:20:20::2a]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226244/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EycMz-PML_dQW8iLcNBkw7g%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNMYCYLC04QAM6EBli1wTuET%2CEND
#EXTINF:-1 group-title="卫视频道",山东卫视
http://120.76.248.139/live/bfgd/4200000099.m3u8
#EXTINF:-1 group-title="卫视频道",山东卫视
http://39.150.96.141:65535/tsfile/live/0131_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",山东卫视
http://221.226.4.10:9901/tsfile/live/1021_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",山东卫视
http://39.164.180.36:19901/tsfile/live/0131_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",山东卫视
http://3501776.xyz:35455/itv/1000000005000265019.m3u8?cdn=ystenlive
#EXTINF:-1 group-title="卫视频道",山东卫视
http://112.123.243.37:50085/tsfile/live/0122_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",山西卫视
http://m3u8.channel.wsrtv.com.cn/cms/videos/nmip-media/channellive/channel7/playlist.m3u8
#EXTINF:-1 group-title="卫视频道",山西卫视
http://39.164.180.36:19901/tsfile/live/0118_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",陕西卫视
http://148.135.93.213:81/live.php?id=陕西卫视
#EXTINF:-1 group-title="卫视频道",陕西卫视
http://goo.bkpcp.top/mg/sxws
#EXTINF:-1 group-title="卫视频道",陕西卫视
http://39.150.96.141:65535/tsfile/live/0136_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",陕西卫视
http://39.164.180.36:19901/tsfile/live/0136_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",陕西卫视HD
http://120.76.248.139/live/bfgd/4200000512.m3u8
#EXTINF:-1 group-title="卫视频道",上海东方卫视
http://lt.hxtre.com:35455/itv/1000000001000030202.m3u8?cdn=ystenlive
#EXTINF:-1 group-title="卫视频道",深圳卫视
http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226245/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EFvxuZ6Kfg6J67sArVd0LuA%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNO9YxM-C8gPFvQRk47-h2ok%2CEND
#EXTINF:-1 group-title="卫视频道",深圳卫视
http://183.215.134.239:19901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",深圳卫视
http://123.149.3.11:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",深圳卫视
http://39.164.180.36:19901/tsfile/live/0125_2.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",深圳卫视
http://221.226.4.10:9901/tsfile/live/1023_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",深圳卫视
http://182.37.169.94:352/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",深圳卫视
http://39.164.180.36:19901/tsfile/live/0125_2.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4『线路13』
#EXTINF:-1 group-title="卫视频道",深圳卫视
http://115.149.139.141:10001/tsfile/live/1032_1.m3u8
#EXTINF:-1 group-title="卫视频道",深圳卫视
http://yncbn.ks-cdn.gitv.tv/gitv_live/G_SHENZHEN-HQ/G_SHENZHEN-HQ.m3u8
#EXTINF:-1 group-title="卫视频道",深圳卫视
http://112.123.243.37:50085/tsfile/live/1000_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",深圳卫视
http://504099760.qicp.vip:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",四川卫视
http://39.164.180.36:19901/tsfile/live/0123_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",四川卫视
http://222.169.85.8:9901/tsfile/live/0123_1.m3u8
#EXTINF:-1 group-title="卫视频道",四川卫视
http://110.81.206.138:49231/tsfile/live/23049_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",天津卫视
http://221.226.4.10:9901/tsfile/live/1014_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",天津卫视
http://123.149.3.11:9901/tsfile/live/0135_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",天津卫视
http://39.164.180.36:19901/tsfile/live/0135_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",天津卫视
http://115.149.139.141:10001/tsfile/live/1036_1.m3u8
#EXTINF:-1 group-title="卫视频道",西藏卫视
http://php.jdshipin.com/xztv.php?id=ws
#EXTINF:-1 group-title="卫视频道",西藏卫视
http://php.jdshipin.com:8880/xztv.php?id=ws
#EXTINF:-1 group-title="卫视频道",西藏卫视
http://goo.bkpcp.top/mg/xzws
#EXTINF:-1 group-title="卫视频道",延边卫视
http://l.cztvcloud.com/channels/lantian/SXxinchang2/720p.m3u8
#EXTINF:-1 group-title="卫视频道",云南卫视
http://39.164.180.36:19901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",云南卫视
http://39.164.180.36:19901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4『线路38』
#EXTINF:-1 group-title="卫视频道",云南卫视
http://39.164.180.36:19901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4『线路33』
#EXTINF:-1 group-title="卫视频道",云南卫视
http://110.81.206.138:49231/tsfile/live/23054_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",浙江卫视
http://ali-m-l.cztv.com:80/channels/lantian/channel001/1080p.m3u8
#EXTINF:-1 group-title="卫视频道",浙江卫视
https://ali-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8
#EXTINF:-1 group-title="卫视频道",浙江卫视
http://zhfivel02.cztv.com/channel01/1080p.m3u8?auth_key=2524708799-0-0-adde67b1b344fdd5e512f30a4ae31915
@@ -886,16 +368,8 @@ http://ali-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8$LR•IPV4『线
#EXTINF:-1 group-title="卫视频道",浙江卫视
http://183.215.134.239:19901/tsfile/live/0124_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",浙江卫视
http://39.164.180.36:19901/tsfile/live/0124_1.m3u8?key=txiptv&playlive=0&authid=0
#EXTINF:-1 group-title="卫视频道",浙江卫视
http://58.220.211.90:352/tsfile/live/0124_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",浙江卫视
http://182.37.169.94:352/tsfile/live/0124_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 group-title="卫视频道",浙江卫视
http://39.164.180.36:19901/tsfile/live/0124_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4『线路21』
#EXTINF:-1 group-title="卫视频道",浙江卫视
http://lt.hxtre.com:35455/itv/1000000005000265031.m3u8?cdn=ystenlive
#EXTINF:-1 group-title="卫视频道",浙江卫视
http://goo.bkpcp.top/mg/zjws
#EXTINF:-1 group-title="卫视频道",浙江卫视
http://zwebl02.cztv.com/live/channel011080P.m3u8?auth_key=2524708799-0-0-9a1229d8b9d311024ebea08c3fb1d63f
File diff suppressed because it is too large. Load diff
+40
View File
@@ -650,6 +650,46 @@
"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"
}
}
},
{
"name": "-qm解析-",
"type": 0,
"url": "http://jiexi44.qmbo.cn/jiexi/?url=",
"ext": {
"header": {
"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"
}
}
},
{
"name": "-zui-",
"type": 0,
"url": "https://jx.zui.cm/?url=",
"ext": {
"header": {
"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"
}
}
},
{
"name": "-盘古-",
"type": 0,
"url": "https://py.987654321.icu/.%60/playm3u8.php?url=",
"ext": {
"header": {
"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"
}
}
},
{
"name": "-夜幕-",
"type": 0,
"url": "https://yemu.xyz/?url=",
"ext": {
"header": {
"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"
}
}
}
],
"flags": [
+1814 -1566
View File
File diff suppressed because it is too large. Load diff
+246 -309
View File
File diff suppressed because it is too large. Load diff
Binary file not shown.