diff --git a/OK/api.json b/OK/api.json index 08baa91..0c18190 100644 --- a/OK/api.json +++ b/OK/api.json @@ -822,7 +822,6 @@ "mozai.4gtv.tv" ], "lives": [ - { "name": "live-2", "type": 0, diff --git a/OK/lives/fanmingming.txt b/OK/lives/fanmingming.txt index 9335089..65c1b6d 100644 --- a/OK/lives/fanmingming.txt +++ b/OK/lives/fanmingming.txt @@ -35,18 +35,12 @@ http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/ http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226100/index.m3u8 #EXTINF:-1 tvg-name="CCTV17" tvg-logo="https://live.fanmingming.com/tv/CCTV17.png" group-title="央视频道",CCTV-17 农业农村 http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225765/index.m3u8 -#EXTINF:-1 tvg-name="CCTV4K" tvg-logo="https://live.fanmingming.com/tv/CCTV4K.png" group-title="央视频道",CCTV-4K 超高清 -http://hlslive-tx-cdn.ysp.cctv.cn/ysp/2024081302.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 tvg-name="CCTV1" tvg-logo="https://live.fanmingming.com/tv/CCTV1.png" group-title="巴黎奥运",CCTV-1 备用V6 -http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010144/1.m3u8 -#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://live.fanmingming.com/tv/CCTV5.png" group-title="巴黎奥运",CCTV-5 备用V6 -http://[2409:8087:5e00:24::1e]:6060/000000001000/1000000001000004794/1.m3u8 -#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://live.fanmingming.com/tv/CCTV5+.png" group-title="巴黎奥运",CCTV-5+ 备用V6 -http://[2409:8087:5e00:24::1e]:6060/000000001000/1000000001000020505/1.m3u8 -#EXTINF:-1 tvg-name="CCTV16" tvg-logo="https://live.fanmingming.com/tv/CCTV16.png" group-title="巴黎奥运",CCTV-16 备用V6 -http://[2409:8087:5e00:24::1e]:6060/000000001000/1000000006000233001/1.m3u8 -#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://live.fanmingming.com/tv/CCTV5.png" group-title="巴黎奥运",CCTV-5 备用V4 -http://112.13.84.36/5gtvtbv52.live.bestvcdn.com.cn/live/program/live/cctv5hd8m/8000000/mnf.m3u8 +#EXTINF:-1 tvg-name="CHC影迷电影" tvg-logo="https://live.fanmingming.com/tv/CHC影迷电影.png" group-title="央视频道",CHC影迷电影 +https://pi.0472.org/chc/ym.m3u8 +#EXTINF:-1 tvg-name="CHC动作电影" tvg-logo="https://live.fanmingming.com/tv/CHC动作电影.png" group-title="央视频道",CHC动作电影 +https://pi.0472.org/chc/dz.m3u8 +#EXTINF:-1 tvg-name="CHC家庭影院" tvg-logo="https://live.fanmingming.com/tv/CHC家庭影院.png" group-title="央视频道",CHC家庭影院 +https://pi.0472.org/chc/jt.m3u8 #EXTINF:-1 tvg-name="凤凰中文" tvg-logo="https://live.fanmingming.com/tv/凤凰卫视中文台.png" group-title="卫视频道",凤凰中文 http://116.162.6.192/1.v.smtcdns.net/qctv.fengshows.cn/live/0701pcc72.m3u8 #EXTINF:-1 tvg-name="凤凰资讯" tvg-logo="https://live.fanmingming.com/tv/凤凰卫视资讯台.png" group-title="卫视频道",凤凰资讯 @@ -129,6 +123,8 @@ http://[2409:8087:1a0b:df::4007]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/ http://[2409:8087:5e00:24::1e]:6060/000000001000/1000000005000266006/1.m3u8 #EXTINF:-1 tvg-name="康巴卫视" tvg-logo="https://live.fanmingming.com/tv/康巴卫视.png" group-title="卫视频道",康巴卫视 http://[2409:8087:1a0b:df::4005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225660/index.m3u8 +#EXTINF:-1 tvg-name="大湾区卫视" tvg-logo="https://live.fanmingming.com/tv/大湾区卫视.png" group-title="卫视频道",大湾区卫视 +http://[2409:8087:5e00:24::1e]:6060/000000001000/1000000002000011619/index.m3u8 #EXTINF:-1 tvg-name="中国教育1台" tvg-logo="https://live.fanmingming.com/tv/CETV1.png" group-title="卫视频道",CETV-1 http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225652/index.m3u8 #EXTINF:-1 tvg-name="中国教育2台" tvg-logo="https://live.fanmingming.com/tv/CETV2.png" group-title="卫视频道",CETV-2 @@ -139,10 +135,8 @@ http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/ http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225738/index.m3u8 #EXTINF:-1 tvg-name="纪实科教" tvg-logo="https://live.fanmingming.com/tv/北京纪实科教.png" group-title="数字频道",纪实科教 http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225729/index.m3u8 -#EXTINF:-1 tvg-name="劲爆体育" tvg-logo="https://live.fanmingming.com/tv/劲爆体育.png" group-title="数字频道",劲爆体育 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000008/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000008&IASHttpSessionId=OTT19019320240419154124000281 #EXTINF:-1 tvg-name="全纪实" tvg-logo="https://live.fanmingming.com/tv/乐游.png" group-title="数字频道",乐游频道 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000092/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000092&IASHttpSessionId=OTT19019320240419154124000281 +http://[2409:8087:5e00:24::1e]:6060/000000001000/5000000011000031112/1.m3u8 #EXTINF:-1 tvg-name="欢笑剧场" tvg-logo="https://live.fanmingming.com/tv/欢笑剧场.png" group-title="数字频道",欢笑剧场 http://[2409:8087:5e00:24::1e]:6060/000000001000/5000000002000009455/1.m3u8 #EXTINF:-1 tvg-name="都市剧场" tvg-logo="https://live.fanmingming.com/tv/都市剧场.png" group-title="数字频道",都市剧场 @@ -167,8 +161,6 @@ http://[2409:8087:5e00:24::1e]:6060/000000001000/5000000011000031113/1.m3u8 http://[2409:8087:5e00:24::1e]:6060/000000001000/1000000002000025964/1.m3u8 #EXTINF:-1 tvg-name="哒啵赛事" tvg-logo="https://live.fanmingming.com/tv/哒啵赛事.png" group-title="数字频道",哒啵赛事 http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225675/index.m3u8 -#EXTINF:-1 tvg-name="哒啵电竞" tvg-logo="https://live.fanmingming.com/tv/哒啵电竞.png" group-title="数字频道",哒啵电竞 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000003000000066/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000003000000066&IASHttpSessionId=OTT19019320240419154124000281 #EXTINF:-1 tvg-name="优漫卡通" tvg-logo="https://live.fanmingming.com/tv/优漫卡通.png" group-title="数字频道",优漫卡通 http://[2409:8087:1a0b:df::4005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225656/index.m3u8 #EXTINF:-1 tvg-name="哈哈炫动" tvg-logo="https://live.fanmingming.com/tv/哈哈炫动.png" group-title="数字频道",哈哈炫动 @@ -177,14 +169,6 @@ http://[2409:8087:1a0b:df::4001]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/ http://[2409:8087:1a0b:df::4006]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225662/index.m3u8 #EXTINF:-1 tvg-name="黑莓电影" tvg-logo="https://live.fanmingming.com/tv/黑莓电影.png" group-title="数字频道",黑莓电影 http://[2409:8087:1a0b:df::4014]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225743/index.m3u8 -#EXTINF:-1 tvg-name="求索记录" tvg-logo="https://live.fanmingming.com/tv/求索记录.png" group-title="数字频道",求索记录 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000010/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000010&IASHttpSessionId=OTT19019320240419154124000281 -#EXTINF:-1 tvg-name="求索动物" tvg-logo="https://live.fanmingming.com/tv/求索动物.png" group-title="数字频道",求索动物 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000009/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000009&IASHttpSessionId=OTT19019320240419154124000281 -#EXTINF:-1 tvg-name="求索科学" tvg-logo="https://live.fanmingming.com/tv/求索科学.png" group-title="数字频道",求索科学 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000011/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000011&IASHttpSessionId=OTT19019320240419154124000281 -#EXTINF:-1 tvg-name="求索生活" tvg-logo="https://live.fanmingming.com/tv/求索生活.png" group-title="数字频道",求索生活 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000008/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000008&IASHttpSessionId=OTT19019320240419154124000281 #EXTINF:-1 tvg-name="newtv超级体育" tvg-logo="https://live.fanmingming.com/tv/NEWTV超级体育.png" group-title="数字频道",超级体育 http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225715/index.m3u8 #EXTINF:-1 tvg-name="newtv超级电影" tvg-logo="https://live.fanmingming.com/tv/NEWTV超级电影.png" group-title="数字频道",超级电影 @@ -223,24 +207,6 @@ http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/ http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225714/index.m3u8 #EXTINF:-1 tvg-name="newtv金牌综艺" tvg-logo="https://live.fanmingming.com/tv/NEWTV金牌综艺.png" group-title="数字频道",金牌综艺 http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225666/index.m3u8 -#EXTINF:-1 tvg-name="上海新闻综合" tvg-logo="https://live.fanmingming.com/tv/上视新闻.png" group-title="上海频道",上海新闻 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000005/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000005&IASHttpSessionId=OTT19019320240419154124000281 -#EXTINF:-1 tvg-name="上海都市" tvg-logo="https://live.fanmingming.com/tv/上海都市.png" group-title="上海频道",上海都市 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000012/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000012&IASHttpSessionId=OTT19019320240419154124000281 -#EXTINF:-1 tvg-name="上海外语" tvg-logo="https://live.fanmingming.com/tv/上海外语.png" group-title="上海频道",上海外语 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000001/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000001&IASHttpSessionId=OTT19019320240419154124000281 -#EXTINF:-1 tvg-name="七彩戏剧" tvg-logo="https://live.fanmingming.com/tv/七彩戏剧.png" group-title="上海频道",七彩戏剧 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000010/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000010&IASHttpSessionId=OTT19019320240419154124000281 -#EXTINF:-1 tvg-name="五星体育" tvg-logo="https://live.fanmingming.com/tv/五星体育.png" group-title="上海频道",五星体育 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000007/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000007&IASHttpSessionId=OTT19019320240419154124000281 -#EXTINF:-1 tvg-name="东方影视" tvg-logo="https://live.fanmingming.com/tv/东方影视.png" group-title="上海频道",东方影视 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000013/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000013&IASHttpSessionId=OTT19019320240419154124000281 -#EXTINF:-1 tvg-name="东方财经" tvg-logo="https://live.fanmingming.com/tv/东方财经.png" group-title="上海频道",东方财经 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000090/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000090&IASHttpSessionId=OTT19019320240419154124000281 -#EXTINF:-1 tvg-name="法治天地" tvg-logo="https://live.fanmingming.com/tv/法治天地.png" group-title="上海频道",法治天地 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000014/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000014&IASHttpSessionId=OTT19019320240419154124000281 -#EXTINF:-1 tvg-name="第一财经" tvg-logo="https://live.fanmingming.com/tv/上海第一财经.png" group-title="上海频道",第一财经 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000004/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000004&IASHttpSessionId=OTT19019320240419154124000281 #EXTINF:-1 tvg-name="浙江公共新闻" tvg-logo="https://live.fanmingming.com/tv/浙江新闻.png" group-title="浙江频道",浙江新闻 https://ali-m-l.cztv.com/channels/lantian/channel007/1080p.m3u8 #EXTINF:-1 tvg-name="浙江国际" tvg-logo="https://live.fanmingming.com/tv/浙江国际.png" group-title="浙江频道",浙江国际 diff --git a/OK/spider.jar b/OK/spider.jar index b95b57e..e4a6d83 100644 Binary files a/OK/spider.jar and b/OK/spider.jar differ diff --git a/PG/lib/aliproxy.32.gz b/PG/lib/aliproxy.32.gz index dbdcac3..21d4239 100644 Binary files a/PG/lib/aliproxy.32.gz and b/PG/lib/aliproxy.32.gz differ diff --git a/PG/lib/aliproxy.32.md5 b/PG/lib/aliproxy.32.md5 index 21aa481..e52cff2 100644 --- a/PG/lib/aliproxy.32.md5 +++ b/PG/lib/aliproxy.32.md5 @@ -1 +1 @@ -8c058888a89509755a4529a46254fa0c +73225ac25af64c0902c8c821850b07d5 diff --git a/PG/lib/aliproxy.gz b/PG/lib/aliproxy.gz index 9bfa605..7a47da7 100644 Binary files a/PG/lib/aliproxy.gz and b/PG/lib/aliproxy.gz differ diff --git a/PG/lib/aliproxy.md5 b/PG/lib/aliproxy.md5 index 2f359f9..ff9d5ae 100644 --- a/PG/lib/aliproxy.md5 +++ b/PG/lib/aliproxy.md5 @@ -1 +1 @@ -d6fe5110839502210fcfc310808ee640 +8bed49545bf20367afaee611d055408a diff --git a/PG/pg.jar b/PG/pg.jar index efce8da..46ca0a2 100644 Binary files a/PG/pg.jar and b/PG/pg.jar differ diff --git a/dc b/dc index e5daab7..c6d41e4 100644 --- a/dc +++ b/dc @@ -36,6 +36,10 @@ "url": "https://ghproxy.net/https://raw.githubusercontent.com/ls125781003/tvboxtg/main/PG/api.json", "name": "PG" }, + { + "url": "https://ghproxy.net/https://raw.githubusercontent.com/ls125781003/tvboxtg/main/摸鱼儿/api.json", + "name": "摸鱼儿" + }, { "url": "https://ghproxy.net/https://raw.githubusercontent.com/ls125781003/tvboxtg/main/骚零/api.json", "name": "骚零" diff --git a/dc1 b/dc1 index ba21826..cc8685a 100644 --- a/dc1 +++ b/dc1 @@ -36,6 +36,10 @@ "url": "https://ghproxy.cc/https://raw.githubusercontent.com/ls125781003/tvboxtg/main/PG/api.json", "name": "PG" }, + { + "url": "https://ghproxy.cc/https://raw.githubusercontent.com/ls125781003/tvboxtg/main/摸鱼儿/api.json", + "name": "摸鱼儿" + }, { "url": "https://ghproxy.cc/https://raw.githubusercontent.com/ls125781003/tvboxtg/main/骚零/api.json", "name": "骚零" diff --git a/dc2 b/dc2 index ef373cb..5f0ccb9 100644 --- a/dc2 +++ b/dc2 @@ -36,6 +36,10 @@ "url": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/ls125781003/tvboxtg/main/PG/api.json", "name": "PG" }, + { + "url": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/ls125781003/tvboxtg/main/摸鱼儿/api.json", + "name": "摸鱼儿" + }, { "url": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/ls125781003/tvboxtg/main/骚零/api.json", "name": "骚零" diff --git a/drpy_t3/jar/pg.jar b/drpy_t3/jar/pg.jar index efce8da..46ca0a2 100644 Binary files a/drpy_t3/jar/pg.jar and b/drpy_t3/jar/pg.jar differ diff --git a/drpy_t3/json/aliproxy.32.gz b/drpy_t3/json/aliproxy.32.gz index dbdcac3..21d4239 100644 Binary files a/drpy_t3/json/aliproxy.32.gz and b/drpy_t3/json/aliproxy.32.gz differ diff --git a/drpy_t3/json/aliproxy.32.md5 b/drpy_t3/json/aliproxy.32.md5 index 21aa481..e52cff2 100644 --- a/drpy_t3/json/aliproxy.32.md5 +++ b/drpy_t3/json/aliproxy.32.md5 @@ -1 +1 @@ -8c058888a89509755a4529a46254fa0c +73225ac25af64c0902c8c821850b07d5 diff --git a/drpy_t3/json/aliproxy.gz b/drpy_t3/json/aliproxy.gz index 9bfa605..7a47da7 100644 Binary files a/drpy_t3/json/aliproxy.gz and b/drpy_t3/json/aliproxy.gz differ diff --git a/drpy_t3/json/aliproxy.md5 b/drpy_t3/json/aliproxy.md5 index 2f359f9..ff9d5ae 100644 --- a/drpy_t3/json/aliproxy.md5 +++ b/drpy_t3/json/aliproxy.md5 @@ -1 +1 @@ -d6fe5110839502210fcfc310808ee640 +8bed49545bf20367afaee611d055408a diff --git a/tgdc.json b/tgdc.json index a56170c..3e2b764 100644 --- a/tgdc.json +++ b/tgdc.json @@ -36,6 +36,10 @@ "url": "https://bitbucket.org/ls125781003/tvboxtg/raw/main/PG/api.json", "name": "PG" }, + { + "url": "https://bitbucket.org/ls125781003/tvboxtg/raw/main/摸鱼儿/api.json", + "name": "摸鱼儿" + }, { "url": "https://bitbucket.org/ls125781003/tvboxtg/raw/main/骚零/api.json", "name": "骚零" diff --git a/南风/api.json b/南风/api.json index cc07258..4e327f5 100644 --- a/南风/api.json +++ b/南风/api.json @@ -60,17 +60,6 @@ "filterable": 1, "changeable": 1 }, - { - "key": "csp_Zx4k", - "name": "🚝专线", - "type": 3, - "api": "csp_Zx4k", - "playerType": 2, - "searchable": 1, - "quickSearch": 1, - "filterable": 1, - "changeable": 1 - }, { "key": "csp_LiteApple", "name": "🍎小苹果", @@ -172,16 +161,6 @@ "quickSearch": 1, "filterable": 1 }, - { - "key": "csp_csp_Appxdys", - "name": "💥兄弟", - "type": 3, - "api": "csp_csp_Appxdys", - "searchable": 1, - "quickSearch": 1, - "filterable": 1, - "changeable": 0 - }, { "key": "csp_Appmq", "name": "🍓煤球", @@ -291,6 +270,17 @@ "filterable": 1, "ext": "https://auete.pro/" }, + { + "key": "csp_Zx4k", + "name": "🚝专线", + "type": 3, + "api": "csp_Zx4k", + "playerType": 2, + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "changeable": 1 + }, { "key": "农民", "name": "💢农民", diff --git a/南风/spider.jar b/南风/spider.jar index 099087e..ccaa627 100644 Binary files a/南风/spider.jar and b/南风/spider.jar differ diff --git a/小米/api.json b/小米/api.json index cfd061d..03b3c90 100644 --- a/小米/api.json +++ b/小米/api.json @@ -5,7 +5,7 @@ "sites": [ { "key": "豆瓣", - "name": "🌈豆瓣┃反馈QQ群:665981772", + "name": "🌈豆瓣┃反馈QQ群:665981772 公众号:叨观荐影", "type": 3, "api": "csp_Douban", "searchable": 0 @@ -93,14 +93,6 @@ "playerType": 2, "filterable": 1 }, - { - "key": "csp_官源", - "name": "🥛官源┃APP", - "type": 1, - "api": "https://jx.yingshi.xyz/caiji.php", - "playerType": 2, - "filterable": 1 - }, { "key": "csp_Nkdy", "name": "🥛耐看┃APP", @@ -113,7 +105,6 @@ "key": "huohuo", "name": "💥火火┃独家", "type": 3, - "click": "document.querySelector(\"#playleft iframe\").contentWindow.document.querySelector(\"#start\").click();", "api": "csp_SaoHuo" }, { @@ -143,6 +134,22 @@ "api": "csp_Quanwk", "ext": "https://888.qkw1.cc/" }, + { + "key": "csp_Jqq2", + "name": "🎃圈圈┃影视", + "type": 3, + "api": "csp_Jqq", + "playerType": 2, + "filterable": 1 + }, + { + "key": "csp_pptv", + "name": "🫧泡泡┃影视", + "type": 3, + "api": "csp_Pptv", + "playerType": 2, + "filterable": 1 + }, { "key": "csp_SP360", "name": "🐠360┃官源", @@ -190,13 +197,6 @@ "quickSearch": 1, "filterable": 1 }, - { - "key": "csp_DADAG", - "name": "⭕️剧圈┃影视", - "type": 3, - "playerType": "2", - "api": "csp_Dadag" - }, { "key": "QIYIU", "name": "🦌奇优┃影视", @@ -254,7 +254,7 @@ }, { "key": "小米", - "name": "📺小米┃独家", + "name": "📺米米┃独家", "type": 3, "searchable": 1, "quickSearch": 1, @@ -294,7 +294,7 @@ }, { "key": "小MI", - "name": "📺米搜┃独家", + "name": "📺搜搜┃独家", "type": 3, "searchable": 1, "quickSearch": 1, @@ -401,7 +401,7 @@ { "name": "小米无敌", "type": 1, - "url": "http://www.mpanso.com/62-2.php?url=", + "url": "http://www.mpanso.com/woainiba.php?url=", "ext": { "flag": [ "qq", @@ -428,9 +428,38 @@ } }, { - "name": "小米", + "name": "小米无敌2", "type": 1, - "url": "http://www.mpanso.com/62-1.php?url=", + "url": "http://117.50.183.202:8036/?ip=111.55.12.236&url=", + "ext": { + "flag": [ + "qq", + "腾讯", + "qiyi", + "爱奇艺", + "奇艺", + "youku", + "优酷", + "sohu", + "搜狐", + "letv", + "乐视", + "mgtv", + "芒果", + "tnmb", + "seven", + "bilibili", + "1905" + ], + "header": { + "User-Agent": "okhttp/4.9.1" + } + } + }, + { + "name": "腾4K", + "type": 1, + "url": "http://www.mpanso.com/woaini.php?url=", "ext": { "flag": [ "qq", diff --git a/小米/lives/直播.txt b/小米/lives/直播.txt index aa8bf9d..20a7dc5 100644 --- a/小米/lives/直播.txt +++ b/小米/lives/直播.txt @@ -18,7 +18,7 @@ http://liveshowbak2.kan0512.com/ksz-norecord/csztv4k_4k.m3u8 #EXTINF:-1 tvg-name="纯享4K" tvg-logo="https://epg.iill.top/logo/纯享4K.png" group-title="•4K「IPV6」",4K·UHD「IPV6」 http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010006/1.m3u8 #EXTINF:-1 tvg-name="华数4K" tvg-logo="https://epg.iill.top/logo/华数4K.png" group-title="•4K「IPV6」",4K 影视「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000014/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000014&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000014/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000014&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-id="CCTV-1" tvg-name="CCTV1" tvg-logo="https://epg.iill.top/logo/CCTV1.png" group-title="•央视「IPV6」",CCTV 1 综合「IPV6」 http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010144/1.m3u8 #EXTINF:-1 tvg-id="CCTV-2" tvg-name="CCTV2" tvg-logo="https://epg.iill.top/logo/CCTV2.png" group-title="•央视「IPV6」",CCTV 2 财经「IPV6」 @@ -106,77 +106,77 @@ http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010098/1.m3u8 #EXTINF:-1 tvg-name="青海卫视" tvg-logo="https://epg.iill.top/logo/青海卫视.png" group-title="•卫视「IPV6」",青海卫视「IPV6」 http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010111/1.m3u8 #EXTINF:-1 tvg-name="五星体育频道" tvg-logo="https://epg.iill.top/logo/五星体育.png" group-title="•数字「IPV6」",SiTV 五星体育「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000007/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000007&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000007/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000007&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="劲爆体育" tvg-logo="https://epg.iill.top/logo/劲爆体育.png" group-title="•数字「IPV6」",SiTV 劲爆体育「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000008/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000008&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000008/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000008&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="欢笑剧场" tvg-logo="https://epg.iill.top/logo/欢笑剧场.png" group-title="•数字「IPV6」",SiTV 欢笑剧场「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000016/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000016&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000016/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000016&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="法治天地" tvg-logo="https://epg.iill.top/logo/法治天地.png" group-title="•数字「IPV6」",SiTV 法治天地「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000014/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000014&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000014/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000014&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="七彩戏剧" tvg-logo="https://epg.iill.top/logo/七彩戏剧.png" group-title="•数字「IPV6」",SiTV 七彩戏剧「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000010/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000010&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000010/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000010&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="乐游" tvg-logo="https://epg.iill.top/logo/乐游.png" group-title="•数字「IPV6」",SiTV 乐游「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000092/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000092&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000092/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000092&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="动漫秀场" tvg-logo="https://epg.iill.top/logo/动漫秀场.png" group-title="•数字「IPV6」",SiTV 动漫秀场「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000009/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000009&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000009/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000009&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="游戏风云" tvg-logo="https://epg.iill.top/logo/游戏风云.png" group-title="•数字「IPV6」",SiTV 游戏风云「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000011/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000011&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000011/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000011&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="生活时尚" tvg-logo="https://epg.iill.top/logo/生活时尚.png" group-title="•数字「IPV6」",SiTV 生活时尚「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000006/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000006&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000006/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000006&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="都市剧场" tvg-logo="https://epg.iill.top/logo/都市剧场.png" group-title="•数字「IPV6」",SiTV 都市剧场「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000015/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000015&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000015/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000015&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="金色学堂" tvg-logo="https://epg.iill.top/logo/金色学堂.png" group-title="•数字「IPV6」",SiTV 金色学堂「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000061/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000061&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000061/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000061&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="第一财经" tvg-logo="https://epg.iill.top/logo/第一财经.png" group-title="•数字「IPV6」",SiTV 第一财经「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000004/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000004&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000004/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000004&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="求索纪录" tvg-logo="https://epg.iill.top/logo/求索纪录.png" group-title="•数字「IPV6」",求索纪录「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000010/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000010&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000010/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000010&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="求索生活" tvg-logo="https://epg.iill.top/logo/求索生活.png" group-title="•数字「IPV6」",求索生活「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000008/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000008&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000008/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000008&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="求索动物" tvg-logo="https://epg.iill.top/logo/求索动物.png" group-title="•数字「IPV6」",求索动物「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000009/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000009&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000009/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000009&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="求索科学" tvg-logo="https://epg.iill.top/logo/求索科学.png" group-title="•数字「IPV6」",求索科学「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000011/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000011&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000011/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000011&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="上海纪实人文" tvg-logo="https://epg.iill.top/logo/纪实人文.png" group-title="•数字「IPV6」",纪实人文「IPV6」 http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225738/index.m3u8 #EXTINF:-1 tvg-name="北京纪实科教" tvg-logo="https://epg.iill.top/logo/纪实科教.png" group-title="•数字「IPV6」",纪实科教「IPV6」 http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225729/index.m3u8 #EXTINF:-1 tvg-name="魅力足球" tvg-logo="https://epg.iill.top/logo/魅力足球.png" group-title="•数字「IPV6」",魅力足球「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000068/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000068&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000068/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000068&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="精彩影视" tvg-logo="https://epg.iill.top/logo/精彩影视.png" group-title="•数字「IPV6」",精彩影视「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000063/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000063&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000063/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000063&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="爱喜剧" tvg-logo="https://epg.iill.top/logo/iHOT爱喜剧.png" group-title="•iHOT「IPV6」",iHOT 爱喜剧「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000032/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000032&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000032/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000032&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="爱科幻" tvg-logo="https://epg.iill.top/logo/iHOT爱科幻.png" group-title="•iHOT「IPV6」",iHOT 爱科幻「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000033/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000033&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000033/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000033&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="爱院线" tvg-logo="https://epg.iill.top/logo/iHOT爱院线.png" group-title="•iHOT「IPV6」",iHOT 爱院线「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000034/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000034&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000034/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000034&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="爱浪漫" tvg-logo="https://epg.iill.top/logo/iHOT爱浪漫.png" group-title="•iHOT「IPV6」",iHOT 爱浪漫「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000035/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000035&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000035/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000035&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="爱悬疑" tvg-logo="https://epg.iill.top/logo/iHOT爱悬疑.png" group-title="•iHOT「IPV6」",iHOT 爱悬疑「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000036/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000036&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000036/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000036&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="爱谍战" tvg-logo="https://epg.iill.top/logo/iHOT爱谍战.png" group-title="•iHOT「IPV6」",iHOT 爱谍战「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000038/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000038&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000038/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000038&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="爱历史" tvg-logo="https://epg.iill.top/logo/iHOT爱历史.png" group-title="•iHOT「IPV6」",iHOY 爱历史「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000046/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000046&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000046/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000046&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="爱科学" tvg-logo="https://epg.iill.top/logo/iHOT爱科学.png" group-title="•iHOT「IPV6」",iHOT 爱科学「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000047/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000047&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000047/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000047&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="爱幼教" tvg-logo="https://epg.iill.top/logo/iHOT爱幼教.png" group-title="•iHOT「IPV6」",iHOT 爱幼教「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000049/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000049&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000049/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000049&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="爱玩具" tvg-logo="https://epg.iill.top/logo/iHOT爱玩具.png" group-title="•iHOT「IPV6」",iHOT 爱玩具「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000053/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000053&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000053/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000053&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="爱赛车" tvg-logo="https://epg.iill.top/logo/iHOT爱赛车.png" group-title="•iHOT「IPV6」",iHOT 爱赛车「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000055/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000055&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000055/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000055&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="爱旅行" tvg-logo="https://epg.iill.top/logo/iHOT爱旅行.png" group-title="•iHOT「IPV6」",iHOT 爱旅行「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000056/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000056&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000056/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000056&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="爱奇谈" tvg-logo="https://epg.iill.top/logo/iHOT爱奇谈.png" group-title="•iHOT「IPV6」",iHOT 爱奇谈「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000058/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000058&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000058/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000058&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="爱动漫" tvg-logo="https://epg.iill.top/logo/iHOT爱动漫.png" group-title="•iHOT「IPV6」",iHOT 爱动漫「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000059/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000059&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000059/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000059&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="爱体育" tvg-logo="https://epg.iill.top/logo/iHOT爱体育.png" group-title="•iHOT「IPV6」",iHOT 爱体育「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000060/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000060&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000060/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000060&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="哒啵电竞" tvg-logo="https://epg.iill.top/logo/NewTV哒啵电竞.png" group-title="•NewTV「IPV6」",NewTV 哒啵电竞「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000003000000066/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000003000000066&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000003000000066/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000003000000066&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="哒啵赛事" tvg-logo="https://epg.iill.top/logo/NewTV哒啵赛事.png" group-title="•NewTV「IPV6」",NewTV 哒啵赛事「IPV6」 http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225675/index.m3u8 #EXTINF:-1 tvg-name="黑莓动画" tvg-logo="https://epg.iill.top/logo/NewTV黑莓动画.png" group-title="•NewTV「IPV6」",NewTV 黑莓动画「IPV6」 @@ -192,7 +192,7 @@ http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/322 #EXTINF:-1 tvg-name="超级综艺" tvg-logo="https://epg.iill.top/logo/NewTV超级综艺.png" group-title="•NewTV「IPV6」",NewTV 超级综艺「IPV6」 http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225714/index.m3u8 #EXTINF:-1 tvg-name="魅力潇湘" tvg-logo="https://epg.iill.top/logo/NewTV魅力潇湘.png" group-title="•NewTV「IPV6」",NewTV 魅力潇湘「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000003000000041/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000003000000041&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000003000000041/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000003000000041&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="金牌综艺" tvg-logo="https://epg.iill.top/logo/NewTV金牌综艺.png" group-title="•NewTV「IPV6」",NewTV 金牌综艺「IPV6」 http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225666/index.m3u8 #EXTINF:-1 tvg-name="东北热剧" tvg-logo="https://epg.iill.top/logo/NewTV东北热剧.png" group-title="•NewTV「IPV6」",NewTV 东北热剧「IPV6」 @@ -234,17 +234,17 @@ http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/322 #EXTINF:-1 tvg-name="精品记录" tvg-logo="https://epg.iill.top/logo/NewTV精品记录.png" group-title="•NewTV「IPV6」",NewTV 精品记录「IPV6」 http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225672/index.m3u8 #EXTINF:-1 tvg-name="广东珠江" tvg-logo="https://epg.iill.top/logo/广东珠江.png" group-title="•地区「IPV6」",「广东」广东珠江「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000003000000033/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000003000000033&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000003000000033/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000003000000033&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="东方财经" tvg-logo="https://epg.iill.top/logo/东方财经.png" group-title="•地区「IPV6」",「上海」东方财经「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000090/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000090&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000090/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000090&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="东方影视" tvg-logo="https://epg.iill.top/logo/东方影视.png" group-title="•地区「IPV6」",「上海」东方影视「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000013/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000013&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000013/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000013&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="上海都市" tvg-logo="https://epg.iill.top/logo/上海都市.png" group-title="•地区「IPV6」",「上海」上海都市「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000012/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000012&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000012/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000012&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="上海新闻综合" tvg-logo="https://epg.iill.top/logo/上海新闻.png" group-title="•地区「IPV6」",「上海」上海新闻「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000005/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000005&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000005/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000005&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="上海外语" tvg-logo="https://epg.iill.top/logo/上海外语.png" group-title="•地区「IPV6」",「上海」ICS「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000001/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000001&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000001/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000001&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="黑龙江文体" tvg-logo="https://epg.iill.top/logo/黑龙江文体.png" group-title="•地区「IPV6」",「黑龙江」黑龙江文体「IPV6」 http://[2409:8087:1a01:df::4025]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226239/1.m3u8 #EXTINF:-1 tvg-name="黑龙江都市" tvg-logo="https://epg.iill.top/logo/黑龙江都市.png" group-title="•地区「IPV6」",「黑龙江」黑龙江都市 @@ -274,47 +274,47 @@ http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/322 #EXTINF:-1 tvg-name="鹤岗新闻综合" tvg-logo="https://epg.iill.top/logo/鹤岗新闻.png" group-title="•地区「IPV6」",「黑龙江」鹤岗新闻综合「IPV6」 http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226534/index.m3u8 #EXTINF:-1 tvg-name="中国天气" tvg-logo="https://epg.iill.top/logo/中国天气.png" group-title="•其他「IPV6」",中国天气「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000057/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000057&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000057/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000057&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-name="全民热练" tvg-logo="https://epg.iill.top/logo/咪咕善跑.png" group-title="•其他「IPV6」",咪咕全民热练「IPV6」 http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226508/index.m3u8 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/百事通.png" group-title="•其他「IPV6」",JJ斗地主赛事「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000015/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000015&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000015/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000015&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/百事通.png" group-title="•其他「IPV6」",随机体育赛事「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000003000000060/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000003000000060&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000003000000060/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000003000000060&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/百事通.png" group-title="•其他「IPV6」",国内电影频道「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000003000000008/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000003000000008&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000003000000008/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000003000000008&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/百事通.png" group-title="•其他「IPV6」",海外电影频道「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000003000000016/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000003000000016&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000003000000016/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000003000000016&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/百事通.png" group-title="•其他「IPV6」",你叫啥都行 𝟙「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000002/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000002&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000002/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000002&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/百事通.png" group-title="•其他「IPV6」",你叫啥都行 𝟚「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000003/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000003&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000003/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000003&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/百事通.png" group-title="•其他「IPV6」",你叫啥都行 𝟛「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000004/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000004&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000004/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000004&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/百事通.png" group-title="•其他「IPV6」",你叫啥都行 𝟜「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000005/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000005&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000005/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000005&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/百事通.png" group-title="•其他「IPV6」",你叫啥都行 𝟝「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000006/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000006&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000006/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000006&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/百事通.png" group-title="•其他「IPV6」",你叫啥都行 𝟞「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000007/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000007&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000007/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000007&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/百事通.png" group-title="•其他「IPV6」",你叫啥都行 𝟟「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000013/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000013&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000013/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000013&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/百事通.png" group-title="•其他「IPV6」",你叫啥都行 𝟠「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000017/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000017&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000017/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000017&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/百事通.png" group-title="•其他「IPV6」",BesTV 𝟙「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000024/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000024&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000024/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000024&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/百事通.png" group-title="•其他「IPV6」",BesTV 𝟚「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000025/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000025&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000025/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000025&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/百事通.png" group-title="•其他「IPV6」",BesTV 𝟛「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000026/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000026&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000026/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000026&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/百事通.png" group-title="•其他「IPV6」",BesTV 𝟜「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000027/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000027&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000027/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000027&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/百事通.png" group-title="•其他「IPV6」",BesTV 𝟝「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000028/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000028&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000028/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000028&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/百事通.png" group-title="•其他「IPV6」",BesTV 𝟞「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000029/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000029&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000029/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000029&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/百事通.png" group-title="•其他「IPV6」",BesTV 𝟟「IPV6」 -http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000030/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000030&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000030/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000030&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「全网」",咪咕直播 𝟙「IPV6」 http://[2409:8087:1a01:df::404d]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226124/index.m3u8 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「全网」",咪咕直播 𝟚「IPV6」 @@ -512,22 +512,38 @@ http://gslbserv.itv.cmvideo.cn:80/3000000020000011530/index.m3u8?channel-id=Fifa #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「移动」",咪咕直播 𝟜𝟝「移动」 http://gslbserv.itv.cmvideo.cn:80/3000000020000011531/index.m3u8?channel-id=FifastbLive&Contentid=3000000020000011531&livemode=1&stbId=3 #INSERT_HERE -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「UFC」06:55 《白大拿挑战者系列赛》第八季第1周:丁猛冲击合同 中文解说 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」15:50 夏季联赛 天津先行者vs新疆伊力特 解说 https://tv.iill.top/Migu/1 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「UFC」06:55 《白大拿挑战者系列赛》第八季第1周:丁猛冲击合同 英文原声 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」15:50 清流播出 https://tv.iill.top/Migu/2 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「NBL」19:20 石家庄翔蓝vs江西赣驰 现场解说 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「中超」18:45 联赛 河南俱乐部酒祖杜康vs沧州雄狮 解说 https://tv.iill.top/Migu/3 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「NBL」19:20 石家庄翔蓝vs江西赣驰 原声 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「中超」18:45 联赛 河南俱乐部酒祖杜康vs沧州雄狮 赛场原声 https://tv.iill.top/Migu/4 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「NBL」19:20 长沙湾田勇胜vs河南赊店老酒 现场解说 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「UFC」19:00 激战前夜:阿迪萨亚特辑 解说 https://tv.iill.top/Migu/5 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「NBL」19:20 长沙湾田勇胜vs河南赊店老酒 原声 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「NBL」19:20 香港金牛vs广西威壮 现场解说 https://tv.iill.top/Migu/6 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「NBL」19:20 广西威壮vs武汉锟鹏 现场解说 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「NBL」19:20 香港金牛vs广西威壮 原声 https://tv.iill.top/Migu/7 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「NBL」19:20 广西威壮vs武汉锟鹏 原声 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:20 夏季联赛 深圳马可波罗vs浙江稠州金租 解说 https://tv.iill.top/Migu/8 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:20 清流播出 +https://tv.iill.top/Migu/9 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「中超」19:20 联赛 天津津门虎vs武汉三镇 解说 +https://tv.iill.top/Migu/10 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「中超」19:20 联赛 天津津门虎vs武汉三镇 赛场原声 +https://tv.iill.top/Migu/11 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「中超」19:20 联赛 天津津门虎vs武汉三镇 央视解说 +https://tv.iill.top/Migu/12 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「中超」19:45 联赛 北京国安vs浙江俱乐部 解说 +https://tv.iill.top/Migu/13 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「中超」19:45 联赛 北京国安vs浙江俱乐部 赛场原声 +https://tv.iill.top/Migu/14 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「中超」19:45 联赛 南通支云vs青岛西海岸 解说 +https://tv.iill.top/Migu/15 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「中超」19:45 联赛 南通支云vs青岛西海岸 赛场原声 +https://tv.iill.top/Migu/16 #EXTINF:-1 tvg-id="CCTV-1" tvg-name="CCTV1" tvg-logo="https://epg.iill.top/logo/CCTV1.png" group-title="•咪咕「TV」",CCTV 1 综合 https://tv.iill.top/migu/cctv1 #EXTINF:-1 tvg-id="CCTV-2" tvg-name="CCTV2" tvg-logo="https://epg.iill.top/logo/CCTV2.png" group-title="•咪咕「TV」",CCTV 2 财经 @@ -918,9 +934,9 @@ https://tv.iill.top/tv/dfws https://tv.iill.top/tv/bjws #EXTINF:-1 tvg-name="湖北卫视" tvg-logo="https://epg.iill.top/logo/湖北卫视.png" group-title="•央视「境外」",湖北卫视 https://tv.iill.top/tv/hbws -#EXTINF:-1 tvg-id="TVB XING HE (HD)" tvg-name="星河台" tvg-logo="https://epg.iill.top/logo/星河台.png" group-title="•港澳台「壹」",星河台 +#EXTINF:-1 tvg-id="TVB Xing He (HD)" tvg-name="星河台" tvg-logo="https://epg.iill.top/logo/星河台.png" group-title="•港澳台「壹」",星河台 http://v2h.jdshipin.com/xinghe/xinghe.stream/chunklist.m3u8 -#EXTINF:-1 tvg-name="TVB PLUS" tvg-logo="https://epg.iill.top/logo/TVBPlus.png" group-title="•港澳台「壹」",TVB Plus +#EXTINF:-1 tvg-name="TVB Plus" tvg-logo="https://epg.iill.top/logo/TVBPlus.png" group-title="•港澳台「壹」",TVB Plus https://ha.jmied.com/aa/aa.flv?auth_key=1661958232-0-0-3d9174957759709f8b53448167c0b6f6 #EXTINF:-1 tvg-name="功夫台" tvg-logo="https://epg.iill.top/logo/功夫台.png" group-title="•港澳台「壹」",功夫台 https://v2h.jdshipin.com/asia_action/asia_action.stream/chunklist.m3u8 @@ -938,11 +954,11 @@ https://live5.tdm.com.mo/ch3/ch3.live/playlist.m3u8 https://live5.tdm.com.mo/ch2/ch2.live/playlist.m3u8 #EXTINF:-1 tvg-name="澳视澳门" tvg-logo="https://epg.iill.top/logo/澳视澳门.png" group-title="•港澳台「壹」",澳视澳门 https://live5.tdm.com.mo/ch1/ch1.live/playlist.m3u8 -#EXTINF:-1 tvg-name="澳门资讯" tvg-logo="https://epg.iill.top/logo/澳门资讯.png" group-title="•港澳台「壹」",澳门资讯 +#EXTINF:-1 tvg-name="澳视资讯" tvg-logo="https://epg.iill.top/logo/澳门资讯.png" group-title="•港澳台「壹」",澳门资讯 https://live5.tdm.com.mo/ch5/info_ch5.live/playlist.m3u8 -#EXTINF:-1 tvg-name="澳门体育" tvg-logo="https://epg.iill.top/logo/澳门体育.png" group-title="•港澳台「壹」",澳门体育 +#EXTINF:-1 tvg-name="澳视体育" tvg-logo="https://epg.iill.top/logo/澳门体育.png" group-title="•港澳台「壹」",澳门体育 https://live5.tdm.com.mo/ch4/sport_ch4.live/playlist.m3u8 -#EXTINF:-1 tvg-name="澳门综艺" tvg-logo="https://epg.iill.top/logo/澳门综艺.png" group-title="•港澳台「壹」",澳门综艺 +#EXTINF:-1 tvg-name="澳视综艺" tvg-logo="https://epg.iill.top/logo/澳门综艺.png" group-title="•港澳台「壹」",澳门综艺 https://live5.tdm.com.mo/ch6/hd_ch6.live/playlist.m3u8 #EXTINF:-1 tvg-name="鳳凰中文" tvg-logo="https://epg.iill.top/logo/凤凰中文.png" group-title="•港台马「壹」",鳳凰衛視·中文 https://tv.iill.top/tv/fhzw @@ -954,13 +970,13 @@ https://tv.iill.top/tv/fhxg https://tv.iill.top/tv/wxxw #EXTINF:-1 tvg-name="翡翠台" tvg-logo="https://epg.iill.top/logo/翡翠台.png" group-title="•港台马「壹」",翡翠台 https://tv.iill.top/tv/fct -#EXTINF:-1 tvg-id="TVB JADE (HD)" tvg-name="TVBJADE" tvg-logo="https://epg.iill.top/logo/翡翠台.png" group-title="•港台马「壹」",翡翠台「MY」 +#EXTINF:-1 tvg-id="TVB Jade (HD)" tvg-name="TVBJADE" tvg-logo="https://epg.iill.top/logo/翡翠台.png" group-title="•港台马「壹」",翡翠台「MY」 https://tv.iill.top/tv/jade -#EXTINF:-1 tvg-id="TVB PEARL" tvg-name="明珠台" tvg-logo="https://epg.iill.top/logo/明珠台.png" group-title="•港台马「壹」",明珠台 +#EXTINF:-1 tvg-id="TVB Pearl" tvg-name="明珠台" tvg-logo="https://epg.iill.top/logo/明珠台.png" group-title="•港台马「壹」",明珠台 https://tv.iill.top/tv/mzt -#EXTINF:-1 tvg-id="TVB XING HE (HD)" tvg-name="星河台" tvg-logo="https://epg.iill.top/logo/星河台.png" group-title="•港台马「壹」",星河台 +#EXTINF:-1 tvg-id="TVB Xing He (HD)" tvg-name="星河台" tvg-logo="https://epg.iill.top/logo/星河台.png" group-title="•港台马「壹」",星河台 https://tv.iill.top/tv/xh -#EXTINF:-1 tvg-name="TVB PLUS" tvg-logo="https://epg.iill.top/logo/TVBPlus.png" group-title="•港台马「壹」",TVB Plus +#EXTINF:-1 tvg-name="TVB Plus" tvg-logo="https://epg.iill.top/logo/TVBPlus.png" group-title="•港台马「壹」",TVB Plus https://tv.iill.top/tv/tvb #EXTINF:-1 tvg-id="港台电视31" tvg-name="RTHK31" tvg-logo="https://epg.iill.top/logo/RTHK31.png" group-title="•港台马「壹」",RTHK 31 https://tv.iill.top/tv/rthk31 @@ -974,15 +990,15 @@ https://tv.iill.top/tv/viu6 https://tv.iill.top/tv/ylxw #EXTINF:-1 tvg-id="千禧经典" tvg-name="千禧經典台" tvg-logo="https://epg.iill.top/logo/千禧经典.png" group-title="•港台马「壹」",TVB 千禧經典 https://tv.iill.top/tv/qxjd -#EXTINF:-1 tvg-id="TVB JADE (HD)" tvg-name="華麗台" tvg-logo="https://epg.iill.top/logo/华丽台.png" group-title="•港台马「壹」",華麗台 +#EXTINF:-1 tvg-id="TVB Jade (HD)" tvg-name="華麗台" tvg-logo="https://epg.iill.top/logo/华丽台.png" group-title="•港台马「壹」",華麗台 https://tv.iill.top/tv/wlt #EXTINF:-1 tvg-name="歡喜台" tvg-logo="https://epg.iill.top/logo/欢喜台.png" group-title="•港台马「壹」",歡喜台 https://tv.iill.top/tv/hxt -#EXTINF:-1 tvg-name="ASTRO AEC" tvg-logo="https://epg.iill.top/logo/小太阳.png" group-title="•港台马「壹」",Astro AEC +#EXTINF:-1 tvg-name="Astro AEC" tvg-logo="https://epg.iill.top/logo/小太阳.png" group-title="•港台马「壹」",Astro AEC https://tv.iill.top/tv/xty -#EXTINF:-1 tvg-id="全佳" tvg-name="ASTRO QUANJIA HD" tvg-logo="https://epg.iill.top/logo/全佳.png" group-title="•港台马「壹」",Astro QJ +#EXTINF:-1 tvg-id="全佳" tvg-name="Astro Quan Jia HD" tvg-logo="https://epg.iill.top/logo/全佳.png" group-title="•港台马「壹」",Astro QJ https://tv.iill.top/tv/qj -#EXTINF:-1 tvg-name="ASTRO AOD" tvg-logo="https://epg.iill.top/logo/AOD.png" group-title="•港台马「壹」",Astro AOD +#EXTINF:-1 tvg-name="Astro AOD" tvg-logo="https://epg.iill.top/logo/AOD.png" group-title="•港台马「壹」",Astro AOD https://tv.iill.top/tv/aod #EXTINF:-1 tvg-name="天映經典頻道" tvg-logo="https://epg.iill.top/logo/天映经典.png" group-title="•港台马「壹」",天映經典 https://tv.iill.top/tv/ccm @@ -1002,7 +1018,7 @@ https://tv.iill.top/tv/wlty https://tv.iill.top/tv/wldy #EXTINF:-1 tvg-id="动物星球" tvg-name="動物星球" tvg-logo="https://epg.iill.top/logo/动物星球.png" group-title="•港台马「壹」",動物星球 https://tv.iill.top/tv/dwxq -#EXTINF:-1 tvg-name="ONE" tvg-logo="https://epg.iill.top/logo/ONE.png" group-title="•港台马「壹」",ONE +#EXTINF:-1 tvg-name="ONE HD (Mandarin)" tvg-logo="https://epg.iill.top/logo/ONE.png" group-title="•港台马「壹」",ONE https://tv.iill.top/tv/one #EXTINF:-1 tvg-name="AXN" tvg-logo="https://epg.iill.top/logo/AXN.png" group-title="•港台马「壹」",AXN https://tv.iill.top/tv/axn @@ -1118,19 +1134,19 @@ https://tv.iill.top/tv/lxsd https://tv.iill.top/tv/ffxw #EXTINF:-1 tvg-name="年代新聞台" tvg-logo="https://epg.iill.top/logo/年代新闻.png" group-title="•港台马「壹」",年代新聞 https://tv.iill.top/tv/ndxw -#EXTINF:-1 tvg-name="探索亞洲" tvg-logo="https://epg.iill.top/logo/探索亚洲.png" group-title="•港台马「壹」",探索亞洲 +#EXTINF:-1 tvg-name="Discovery Asia" tvg-logo="https://epg.iill.top/logo/探索亚洲.png" group-title="•港台马「壹」",探索亞洲 https://tv.iill.top/tv/tsyz -#EXTINF:-1 tvg-name="DMAX" tvg-logo="https://epg.iill.top/logo/DMAX.png" group-title="•港台马「壹」",探索動力 +#EXTINF:-1 tvg-name="Discovery DMAX" tvg-logo="https://epg.iill.top/logo/DMAX.png" group-title="•港台马「壹」",探索動力 https://tv.iill.top/tv/tsdl -#EXTINF:-1 tvg-name="探索頻道" tvg-logo="https://epg.iill.top/logo/探索频道.png" group-title="•港台马「壹」",探索頻道 +#EXTINF:-1 tvg-name="Discovery Channel Southeast Asia" tvg-logo="https://epg.iill.top/logo/探索频道.png" group-title="•港台马「壹」",探索頻道 https://tv.iill.top/tv/tspd #EXTINF:-1 tvg-name="亞洲旅遊台" tvg-logo="https://epg.iill.top/logo/亚洲旅游.png" group-title="•港台马「壹」",亞洲旅遊 https://tv.iill.top/tv/yzly -#EXTINF:-1 tvg-name="亚洲美食" tvg-logo="https://epg.iill.top/logo/亚洲美食.png" group-title="•港台马「壹」",亞洲美食 +#EXTINF:-1 tvg-name="亞洲美食頻道" tvg-logo="https://epg.iill.top/logo/亚洲美食.png" group-title="•港台马「壹」",亞洲美食 https://tv.iill.top/tv/yzms #EXTINF:-1 tvg-name="美食星球HD" tvg-logo="https://epg.iill.top/logo/美食星球.png" group-title="•港台马「壹」",美食星球 https://tv.iill.top/tv/msxq -#EXTINF:-1 tvg-name="EYETV旅游" tvg-logo="https://epg.iill.top/logo/EYETV旅游.png" group-title="•港台马「壹」",EYETV 旅游 +#EXTINF:-1 tvg-name="EYE TV旅遊台HD" tvg-logo="https://epg.iill.top/logo/EYETV旅游.png" group-title="•港台马「壹」",EYE TV 旅遊 https://tv.iill.top/tv/eyely #EXTINF:-1 tvg-name="華藝綜合台" tvg-logo="https://epg.iill.top/logo/华艺综合.png" group-title="•港台马「壹」",華藝綜合 https://tv.iill.top/tv/hyzh @@ -1138,15 +1154,15 @@ https://tv.iill.top/tv/hyzh https://tv.iill.top/tv/da #EXTINF:-1 tvg-name="CI罪案偵查頻道" tvg-logo="https://epg.iill.top/logo/CI罪案侦缉.png" group-title="•港台马「壹」",CI 罪案偵查 https://tv.iill.top/tv/zazj -#EXTINF:-1 tvg-name="CN卡通頻道" tvg-logo="https://epg.iill.top/logo/CN卡通.png" group-title="•港台马「壹」",CN 卡通頻道 +#EXTINF:-1 tvg-name="CN 卡通頻道" tvg-logo="https://epg.iill.top/logo/CN卡通.png" group-title="•港台马「壹」",CN 卡通頻道 https://tv.iill.top/tv/cnkt -#EXTINF:-1 tvg-name="BBC EARTH" tvg-logo="https://epg.iill.top/logo/BBCEarth.png" group-title="•港台马「壹」",BBC Earth +#EXTINF:-1 tvg-name="BBC Earth Asia" tvg-logo="https://epg.iill.top/logo/BBCEarth.png" group-title="•港台马「壹」",BBC Earth Asia https://tv.iill.top/tv/bbc1 -#EXTINF:-1 tvg-name="BBC LIFESTYLE" tvg-logo="https://epg.iill.top/logo/BBCEarthLifestyle.png" group-title="•港台马「壹」",BBC Lifestyle +#EXTINF:-1 tvg-name="BBC Lifestyle Asia" tvg-logo="https://epg.iill.top/logo/BBCEarthLifestyle.png" group-title="•港台马「壹」",BBC Lifestyle Asia https://tv.iill.top/tv/bbc2 -#EXTINF:-1 tvg-name="iQIYI" tvg-logo="https://epg.iill.top/logo/爱奇艺.png" group-title="•港台马「壹」",愛奇藝 iQIYI +#EXTINF:-1 tvg-name="Astro iQIYI HD" tvg-logo="https://epg.iill.top/logo/爱奇艺.png" group-title="•港台马「壹」",愛奇藝 iQIYI https://tv.iill.top/tv/aqy -#EXTINF:-1 tvg-name="Arirang" tvg-logo="https://epg.iill.top/logo/阿里郎.png" group-title="•港台马「壹」",阿里郎 Arirang +#EXTINF:-1 tvg-name="Arirang TV" tvg-logo="https://epg.iill.top/logo/阿里郎.png" group-title="•港台马「壹」",阿里郎 Arirang https://tv.iill.top/tv/all #EXTINF:-1 tvg-name="MTV Live" tvg-logo="https://epg.iill.top/logo/MTV.png" group-title="•港台马「壹」",MTV Live https://tv.iill.top/tv/mtv diff --git a/小米/lives/直播2.txt b/小米/lives/直播2.txt index 29c8753..b6769df 100644 --- a/小米/lives/直播2.txt +++ b/小米/lives/直播2.txt @@ -129,551 +129,583 @@ https://shls.mcloud.139.com/hls/KB866ceedf909710ec6ffb67d09c5c80e0/single/video/ https://shls.mcloud.139.com/hls/KB866ceedf909710ec6ffb67d09c5c80e0/single/video/0/1080/index.m3u8 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「其他」",点击此频道,查看重要信息!🔔 https://shls.mcloud.139.com/hls/KB866ceedf909710ec6ffb67d09c5c80e0/single/video/0/1080/index.m3u8 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/wnnw&afreeca&logo" group-title="•Afreeca「娱乐」",[NS남순] -http://live.iill.top/afreeca.php?id=wnnw -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/epsthddus&afreeca&logo" group-title="•Afreeca「娱乐」",혜루찡 -http://live.iill.top/afreeca.php?id=epsthddus -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/_Kua_0000&douyin&logo" group-title="•抖音「娱乐」",Mini kua -http://live.iill.top/douyin.php?id=_Kua_0000 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/whdbstn7&afreeca&logo" group-title="•Afreeca「娱乐」",윤수♥ +http://live.iill.top/afreeca.php?id=whdbstn7 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/rr9865&douyin&logo" group-title="•抖音「娱乐」",荏苒☀️⁹⁸⁶⁵ +http://live.iill.top/douyin.php?id=rr9865 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/glglehddl&afreeca&logo" group-title="•Afreeca「娱乐」",타미미♥ +http://live.iill.top/afreeca.php?id=glglehddl +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/lovelyena&afreeca&logo" group-title="•Afreeca「娱乐」",금사랑♥ +http://live.iill.top/afreeca.php?id=lovelyena #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/kxdpn1gla1&afreeca&logo" group-title="•Afreeca「娱乐」",BJ꽉꽉 http://live.iill.top/afreeca.php?id=kxdpn1gla1 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/ch1716&afreeca&logo" group-title="•Afreeca「娱乐」",최군형 -http://live.iill.top/afreeca.php?id=ch1716 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/ghtjd8919&afreeca&logo" group-title="•Afreeca「娱乐」",호쿵이와따♥ +http://live.iill.top/afreeca.php?id=ghtjd8919 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/_Kua_0000&douyin&logo" group-title="•抖音「娱乐」",Mini kua +http://live.iill.top/douyin.php?id=_Kua_0000 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/tmzk1&afreeca&logo" group-title="•Afreeca「娱乐」",♥예쁘으니♥ +http://live.iill.top/afreeca.php?id=tmzk1 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/leelate&afreeca&logo" group-title="•Afreeca「娱乐」",이지각 +http://live.iill.top/afreeca.php?id=leelate #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/zpsxm111&afreeca&logo" group-title="•Afreeca「娱乐」",하예라 http://live.iill.top/afreeca.php?id=zpsxm111 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/flowerbud1&afreeca&logo" group-title="•Afreeca「娱乐」",츠보미. -http://live.iill.top/afreeca.php?id=flowerbud1 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/secretx&afreeca&logo" group-title="•Afreeca「娱乐」",설수린. http://live.iill.top/afreeca.php?id=secretx -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/jjj8532&afreeca&logo" group-title="•Afreeca「娱乐」",[BJ]지수♥ -http://live.iill.top/afreeca.php?id=jjj8532 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/yestudy&afreeca&logo" group-title="•Afreeca「娱乐」",yestudyy -http://live.iill.top/afreeca.php?id=yestudy -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/jyurim99&afreeca&logo" group-title="•Afreeca「娱乐」",겸둥이 -http://live.iill.top/afreeca.php?id=jyurim99 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/tus7475&afreeca&logo" group-title="•Afreeca「娱乐」",김주디. -http://live.iill.top/afreeca.php?id=tus7475 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/Li74594210&douyin&logo" group-title="•抖音「娱乐」",小妲己 -http://live.iill.top/douyin.php?id=Li74594210 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/156202315&douyin&logo" group-title="•抖音「娱乐」",媛媛YY -http://live.iill.top/douyin.php?id=156202315 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/71937945036&douyin&logo" group-title="•抖音「娱乐」",小护士欣怡 -http://live.iill.top/douyin.php?id=71937945036 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/liaobuqine&douyin&logo" group-title="•抖音「娱乐」",是NeNe呀 -http://live.iill.top/douyin.php?id=liaobuqine -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/K202221&douyin&logo" group-title="•抖音「娱乐」",金金 -http://live.iill.top/douyin.php?id=K202221 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/keaiAnAn1&douyin&logo" group-title="•抖音「娱乐」",多巴安安 -http://live.iill.top/douyin.php?id=keaiAnAn1 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/965256858&douyin&logo" group-title="•抖音「娱乐」",叁公子 -http://live.iill.top/douyin.php?id=965256858 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/34873124628&douyin&logo" group-title="•抖音「娱乐」",高圆圆 -http://live.iill.top/douyin.php?id=34873124628 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/LSY926629&douyin&logo" group-title="•抖音「娱乐」",小姨妈 -http://live.iill.top/douyin.php?id=LSY926629 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/JJ04_7&douyin&logo" group-title="•抖音「娱乐」",静静不静- -http://live.iill.top/douyin.php?id=JJ04_7 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/75241971161&douyin&logo" group-title="•抖音「娱乐」",芊素素 -http://live.iill.top/douyin.php?id=75241971161 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/993&yy&logo" group-title="•YY「娱乐」",燃舞993 -http://live.iill.top/yy.php?id=993 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/991&yy&logo" group-title="•YY「娱乐」",音乐991 -http://live.iill.top/yy.php?id=991 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/2947432&douyu&logo" group-title="•斗鱼「游戏」",呆妹儿 -http://live.iill.top/douyu.php?id=2947432 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/moonwol0614&afreeca&logo" group-title="•Afreeca「娱乐」",문월:-) +http://live.iill.top/afreeca.php?id=moonwol0614 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/flowerbud1&afreeca&logo" group-title="•Afreeca「娱乐」",츠보미. +http://live.iill.top/afreeca.php?id=flowerbud1 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/soyether&afreeca&logo" group-title="•Afreeca「娱乐」",소예♥ +http://live.iill.top/afreeca.php?id=soyether #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/Q345328&douyin&logo" group-title="•抖音「娱乐」",小护士💉 http://live.iill.top/douyin.php?id=Q345328 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/hapark&afreeca&logo" group-title="•Afreeca「娱乐」",세계♡ +http://live.iill.top/afreeca.php?id=hapark +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/136938734&douyin&logo" group-title="•抖音「娱乐」",菜籽. +http://live.iill.top/douyin.php?id=136938734 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/57452050384&douyin&logo" group-title="•抖音「娱乐」",奶桃桃🍑 +http://live.iill.top/douyin.php?id=57452050384 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/56692948148&douyin&logo" group-title="•抖音「娱乐」",迷人的家教 +http://live.iill.top/douyin.php?id=56692948148 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/Li74594210&douyin&logo" group-title="•抖音「娱乐」",小妲己 +http://live.iill.top/douyin.php?id=Li74594210 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/keaiAnAn1&douyin&logo" group-title="•抖音「娱乐」",多巴安安 +http://live.iill.top/douyin.php?id=keaiAnAn1 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/Rr0ng&douyin&logo" group-title="•抖音「娱乐」",绒大 +http://live.iill.top/douyin.php?id=Rr0ng +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/34873124628&douyin&logo" group-title="•抖音「娱乐」",高圆圆 +http://live.iill.top/douyin.php?id=34873124628 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/66380129635&douyin&logo" group-title="•抖音「娱乐」",葵葵. +http://live.iill.top/douyin.php?id=66380129635 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/75241971161&douyin&logo" group-title="•抖音「娱乐」",芊素素 +http://live.iill.top/douyin.php?id=75241971161 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/991&yy&logo" group-title="•YY「娱乐」",音乐991 +http://live.iill.top/yy.php?id=991 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/993&yy&logo" group-title="•YY「娱乐」",燃舞993 +http://live.iill.top/yy.php?id=993 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/965256858&douyin&logo" group-title="•抖音「娱乐」",叁公子 +http://live.iill.top/douyin.php?id=965256858 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/24422&douyu&logo" group-title="•斗鱼「游戏」",PIGFF +http://live.iill.top/douyu.php?id=24422 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/28515052282&douyin&logo" group-title="•抖音「娱乐」",繁星 http://live.iill.top/douyin.php?id=28515052282 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/88660&douyu&logo" group-title="•斗鱼「游戏」",鲷哥 -http://live.iill.top/douyu.php?id=88660 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/6297388&douyu&logo" group-title="•斗鱼「游戏」",XBEI -http://live.iill.top/douyu.php?id=6297388 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/74960&douyu&logo" group-title="•斗鱼「游戏」",叫我老陈就好了 -http://live.iill.top/douyu.php?id=74960 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/2947432&douyu&logo" group-title="•斗鱼「游戏」",呆妹儿 +http://live.iill.top/douyu.php?id=2947432 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/Tttanglsr&douyin&logo" group-title="•抖音「娱乐」",名侦探少女娣 +http://live.iill.top/douyin.php?id=Tttanglsr +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/jiahui5959&douyin&logo" group-title="•抖音「娱乐」",哇塞慧慧 +http://live.iill.top/douyin.php?id=jiahui5959 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/9999&douyu&logo" group-title="•斗鱼「游戏」",YYF http://live.iill.top/douyu.php?id=9999 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/74960&douyu&logo" group-title="•斗鱼「游戏」",叫我老陈就好了 +http://live.iill.top/douyu.php?id=74960 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/88660&douyu&logo" group-title="•斗鱼「游戏」",鲷哥 +http://live.iill.top/douyu.php?id=88660 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/110&douyu&logo" group-title="•斗鱼「游戏」",谢彬 +http://live.iill.top/douyu.php?id=110 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/38698&douyu&logo" group-title="•斗鱼「游戏」",MS_JOY http://live.iill.top/douyu.php?id=38698 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1165924&douyu&logo" group-title="•斗鱼「游戏」",靓旭 -http://live.iill.top/douyu.php?id=1165924 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/213116&douyu&logo" group-title="•斗鱼「游戏」",普通人陡壁 +http://live.iill.top/douyu.php?id=213116 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/5498522&douyu&logo" group-title="•斗鱼「游戏」",Lilghost http://live.iill.top/douyu.php?id=5498522 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/7777&bilibili&logo" group-title="•B站「游戏」",德云社 -http://live.iill.top/bilibili.php?id=7777 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/45373050246&douyin&logo" group-title="•抖音「娱乐」",Gladys薇薇 -http://live.iill.top/douyin.php?id=45373050246 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/2267291&douyu&logo" group-title="•斗鱼「游戏」",17shou -http://live.iill.top/douyu.php?id=2267291 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1165924&douyu&logo" group-title="•斗鱼「游戏」",靓旭 +http://live.iill.top/douyu.php?id=1165924 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/6297388&douyu&logo" group-title="•斗鱼「游戏」",XBEI +http://live.iill.top/douyu.php?id=6297388 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/178432&douyu&logo" group-title="•斗鱼「游戏」",QuQu、太常规 http://live.iill.top/douyu.php?id=178432 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/2267291&douyu&logo" group-title="•斗鱼「游戏」",17shou +http://live.iill.top/douyu.php?id=2267291 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/jaeha010&afreeca&logo" group-title="•Afreeca「娱乐」",후잉♥ +http://live.iill.top/afreeca.php?id=jaeha010 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1870001&douyu&logo" group-title="•斗鱼「游戏」",大木 http://live.iill.top/douyu.php?id=1870001 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/yukki62&afreeca&logo" group-title="•Afreeca「娱乐」",♡유키♡ http://live.iill.top/afreeca.php?id=yukki62 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/ign0317&afreeca&logo" group-title="•Afreeca「娱乐」",♡채소 -http://live.iill.top/afreeca.php?id=ign0317 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/hubegung&afreeca&logo" group-title="•Afreeca「娱乐」",[TCK]홍빠 -http://live.iill.top/afreeca.php?id=hubegung -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342412&huya&logo" group-title="•虎牙「影视」",周星星 -http://live.iill.top/huya.php?id=11342412 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/jaeha010&afreeca&logo" group-title="•Afreeca「娱乐」",후잉♥ -http://live.iill.top/afreeca.php?id=jaeha010 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/90623507231&douyin&logo" group-title="•抖音「娱乐」",护士钱钱 +http://live.iill.top/douyin.php?id=90623507231 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/ghddbwls2&afreeca&logo" group-title="•Afreeca「娱乐」",BJ홍유 +http://live.iill.top/afreeca.php?id=ghddbwls2 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/8770422&douyu&logo" group-title="•斗鱼「影视」",豆瓣高分 http://live.iill.top/douyu.php?id=8770422 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/whdbfk2904&afreeca&logo" group-title="•Afreeca「娱乐」",율라s2 http://live.iill.top/afreeca.php?id=whdbfk2904 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/ghddbwls2&afreeca&logo" group-title="•Afreeca「娱乐」",BJ홍유 -http://live.iill.top/afreeca.php?id=ghddbwls2 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/coppag&afreeca&logo" group-title="•Afreeca「娱乐」",꿀혜 -http://live.iill.top/afreeca.php?id=coppag -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23865080&huya&logo" group-title="•虎牙「影视」",香港喜剧大全 -http://live.iill.top/huya.php?id=23865080 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「其他」",台視新聞 -https://tv.iill.top/youtube/xL0ch83RAK8 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「其他」",TVBS NEWS -https://tv.iill.top/youtube/m_dhMSvUCIc #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/babobabo1004&afreeca&logo" group-title="•Afreeca「娱乐」",청희♥ http://live.iill.top/afreeca.php?id=babobabo1004 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/hancoma&afreeca&logo" group-title="•Afreeca「娱乐」",하나옵 http://live.iill.top/afreeca.php?id=hancoma -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「其他」",民視新聞 -https://tv.iill.top/youtube/ylYJSBUgaMA -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11336587&huya&logo" group-title="•虎牙「影视」",Yummy -http://live.iill.top/huya.php?id=11336587 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342421&huya&logo" group-title="•虎牙「影视」",7喜先生 -http://live.iill.top/huya.php?id=11342421 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23865171&huya&logo" group-title="•虎牙「影视」",阿呀呀阿sir -http://live.iill.top/huya.php?id=23865171 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11602044&huya&logo" group-title="•虎牙「影视」",小怪兽、 -http://live.iill.top/huya.php?id=11602044 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/loveuuuu&afreeca&logo" group-title="•Afreeca「娱乐」",세리리♡ -http://live.iill.top/afreeca.php?id=loveuuuu -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/youhj323&afreeca&logo" group-title="•Afreeca「娱乐」",로시아♥ -http://live.iill.top/afreeca.php?id=youhj323 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352909&huya&logo" group-title="•虎牙「影视」",小军迷 -http://live.iill.top/huya.php?id=11352909 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23903123&huya&logo" group-title="•虎牙「影视」",堆堆港剧日常 -http://live.iill.top/huya.php?id=23903123 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「其他」",鏡新聞 -https://tv.iill.top/youtube/5n0y6b0Q25o -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342427&huya&logo" group-title="•虎牙「影视」",逗比宝宝 -http://live.iill.top/huya.php?id=11342427 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11282233&huya&logo" group-title="•虎牙「影视」",樹袋熊小九九 -http://live.iill.top/huya.php?id=11282233 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342390&huya&logo" group-title="•虎牙「影视」",核桃姐姐 -http://live.iill.top/huya.php?id=11342390 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342435&huya&logo" group-title="•虎牙「影视」",可爱的小强 -http://live.iill.top/huya.php?id=11342435 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/nchacha&afreeca&logo" group-title="•Afreeca「娱乐」",김슬기* -http://live.iill.top/afreeca.php?id=nchacha -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355824&huya&logo" group-title="•虎牙「影视」",尽是与君别 -http://live.iill.top/huya.php?id=26355824 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「其他」",寰宇新聞 -https://tv.iill.top/youtube/w87VGpgd90U -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342386&huya&logo" group-title="•虎牙「影视」",偷心大盗ヽ龍宝 -http://live.iill.top/huya.php?id=11342386 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23734169&huya&logo" group-title="•虎牙「影视」",埋堆搞搞震 -http://live.iill.top/huya.php?id=23734169 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/20985776&huya&logo" group-title="•虎牙「影视」",千里 -http://live.iill.top/huya.php?id=20985776 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11602068&huya&logo" group-title="•虎牙「影视」",我爱黑科技 -http://live.iill.top/huya.php?id=11602068 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11602058&huya&logo" group-title="•虎牙「影视」",四大裁子之首 -http://live.iill.top/huya.php?id=11602058 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352950&huya&logo" group-title="•虎牙「影视」",我很忙 -http://live.iill.top/huya.php?id=11352950 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11336571&huya&logo" group-title="•虎牙「影视」",槽老师 -http://live.iill.top/huya.php?id=11336571 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355792&huya&logo" group-title="•虎牙「影视」",合班阿離 -http://live.iill.top/huya.php?id=26355792 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23903196&huya&logo" group-title="•虎牙「影视」",冷门港片大全 -http://live.iill.top/huya.php?id=23903196 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352965&huya&logo" group-title="•虎牙「影视」",笙歌 -http://live.iill.top/huya.php?id=11352965 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11601960&huya&logo" group-title="•虎牙「影视」",实力拔萝卜 -http://live.iill.top/huya.php?id=11601960 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23865142&huya&logo" group-title="•虎牙「影视」",港剧慢品汇 -http://live.iill.top/huya.php?id=23865142 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355802&huya&logo" group-title="•虎牙「影视」",之而成冠毛 -http://live.iill.top/huya.php?id=26355802 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/29451869&huya&logo" group-title="•虎牙「影视」",正恒YJ-十五放映厅 -http://live.iill.top/huya.php?id=29451869 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23903130&huya&logo" group-title="•虎牙「影视」",堆堆港剧日记 -http://live.iill.top/huya.php?id=23903130 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26298751&huya&logo" group-title="•虎牙「影视」",婧丶 -http://live.iill.top/huya.php?id=26298751 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/tmtdd22&afreeca&logo" group-title="•Afreeca「娱乐」",아인이♥ +http://live.iill.top/afreeca.php?id=tmtdd22 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/fkdnswwkd&afreeca&logo" group-title="•Afreeca「娱乐」",효주♡ +http://live.iill.top/afreeca.php?id=fkdnswwkd +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/913155&huya&logo" group-title="•虎牙「娱乐」",微竞-琴琴nice +http://live.iill.top/huya.php?id=913155 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23865080&huya&logo" group-title="•虎牙「影视」",香港喜剧大全 +http://live.iill.top/huya.php?id=23865080 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「其他」",公視新聞 https://tv.iill.top/youtube/quwqlazU-c8 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23734246&huya&logo" group-title="•虎牙「影视」",我叫山鸡哥 -http://live.iill.top/huya.php?id=23734246 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342403&huya&logo" group-title="•虎牙「影视」",不发威当我Kitty -http://live.iill.top/huya.php?id=11342403 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23863804&huya&logo" group-title="•虎牙「影视」",iTVB大后宫 -http://live.iill.top/huya.php?id=23863804 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23864973&huya&logo" group-title="•虎牙「影视」",我是周粤驰 -http://live.iill.top/huya.php?id=23864973 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/138531&huya&logo" group-title="•虎牙「影视」",依依妹妹在等你 -http://live.iill.top/huya.php?id=138531 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11602082&huya&logo" group-title="•虎牙「影视」",漓江塔景区售票阿姨 -http://live.iill.top/huya.php?id=11602082 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23796393&huya&logo" group-title="•虎牙「影视」",赢城-江爽 -http://live.iill.top/huya.php?id=23796393 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355850&huya&logo" group-title="•虎牙「影视」",嶺外奇服兮 -http://live.iill.top/huya.php?id=26355850 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352894&huya&logo" group-title="•虎牙「影视」",飙车的老司机 -http://live.iill.top/huya.php?id=11352894 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/29731435&huya&logo" group-title="•虎牙「影视」",金媛-开心娱乐 -http://live.iill.top/huya.php?id=29731435 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「其他」",寰宇新聞 +https://tv.iill.top/youtube/w87VGpgd90U +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342412&huya&logo" group-title="•虎牙「影视」",周星星 +http://live.iill.top/huya.php?id=11342412 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「其他」",TVBS NEWS +https://tv.iill.top/youtube/m_dhMSvUCIc +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「其他」",台視新聞 +https://tv.iill.top/youtube/xL0ch83RAK8 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「其他」",民視新聞 +https://tv.iill.top/youtube/ylYJSBUgaMA #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23903183&huya&logo" group-title="•虎牙「影视」",港剧伴你行 http://live.iill.top/huya.php?id=23903183 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/斗鱼.png" group-title="•斗鱼「影视」",科幻灾难 -http://live.iill.top/douyu.php?id=323876 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342421&huya&logo" group-title="•虎牙「影视」",7喜先生 +http://live.iill.top/huya.php?id=11342421 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「其他」",鏡新聞 +https://tv.iill.top/youtube/5n0y6b0Q25o +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23864973&huya&logo" group-title="•虎牙「影视」",我是周粤驰 +http://live.iill.top/huya.php?id=23864973 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23865142&huya&logo" group-title="•虎牙「影视」",港剧慢品汇 +http://live.iill.top/huya.php?id=23865142 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11602058&huya&logo" group-title="•虎牙「影视」",四大裁子之首 +http://live.iill.top/huya.php?id=11602058 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11282233&huya&logo" group-title="•虎牙「影视」",樹袋熊小九九 +http://live.iill.top/huya.php?id=11282233 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352894&huya&logo" group-title="•虎牙「影视」",飙车的老司机 +http://live.iill.top/huya.php?id=11352894 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11602068&huya&logo" group-title="•虎牙「影视」",我爱黑科技 +http://live.iill.top/huya.php?id=11602068 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23796393&huya&logo" group-title="•虎牙「影视」",赢城-江爽 +http://live.iill.top/huya.php?id=23796393 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23863804&huya&logo" group-title="•虎牙「影视」",iTVB大后宫 +http://live.iill.top/huya.php?id=23863804 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342427&huya&logo" group-title="•虎牙「影视」",逗比宝宝 +http://live.iill.top/huya.php?id=11342427 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23865171&huya&logo" group-title="•虎牙「影视」",阿呀呀阿sir +http://live.iill.top/huya.php?id=23865171 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11601960&huya&logo" group-title="•虎牙「影视」",实力拔萝卜 +http://live.iill.top/huya.php?id=11601960 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355850&huya&logo" group-title="•虎牙「影视」",嶺外奇服兮 +http://live.iill.top/huya.php?id=26355850 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355824&huya&logo" group-title="•虎牙「影视」",尽是与君别 +http://live.iill.top/huya.php?id=26355824 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352965&huya&logo" group-title="•虎牙「影视」",笙歌 +http://live.iill.top/huya.php?id=11352965 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/29451869&huya&logo" group-title="•虎牙「影视」",正恒YJ-十五放映厅 +http://live.iill.top/huya.php?id=29451869 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11336571&huya&logo" group-title="•虎牙「影视」",槽老师 +http://live.iill.top/huya.php?id=11336571 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/29731435&huya&logo" group-title="•虎牙「影视」",金媛-开心娱乐 +http://live.iill.top/huya.php?id=29731435 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11336587&huya&logo" group-title="•虎牙「影视」",Yummy +http://live.iill.top/huya.php?id=11336587 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23734169&huya&logo" group-title="•虎牙「影视」",埋堆搞搞震 +http://live.iill.top/huya.php?id=23734169 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11602044&huya&logo" group-title="•虎牙「影视」",小怪兽、 +http://live.iill.top/huya.php?id=11602044 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11602082&huya&logo" group-title="•虎牙「影视」",漓江塔景区售票阿姨 +http://live.iill.top/huya.php?id=11602082 +#EXTINF:-1 tvg-logo="http://esx.piojm.tech/live/4hd/06FDeUc.jpg" group-title="•BIGO「娱乐」",「JP」🌏ELZA🪽毎日コスプレ✨ +http://live.iill.top/bigo.php?id=978017751 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355792&huya&logo" group-title="•虎牙「影视」",合班阿離 +http://live.iill.top/huya.php?id=26355792 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342403&huya&logo" group-title="•虎牙「影视」",不发威当我Kitty +http://live.iill.top/huya.php?id=11342403 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342435&huya&logo" group-title="•虎牙「影视」",可爱的小强 +http://live.iill.top/huya.php?id=11342435 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23903130&huya&logo" group-title="•虎牙「影视」",堆堆港剧日记 +http://live.iill.top/huya.php?id=23903130 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/88863&huya&logo" group-title="•虎牙「游戏」",拉风龙 +http://live.iill.top/huya.php?id=88863 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23734246&huya&logo" group-title="•虎牙「影视」",我叫山鸡哥 +http://live.iill.top/huya.php?id=23734246 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/3567314&douyu&logo" group-title="•斗鱼「游戏」",王纪超666 +http://live.iill.top/douyu.php?id=3567314 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/107253&douyu&logo" group-title="•斗鱼「游戏」",LOL丶摇摆 http://live.iill.top/douyu.php?id=107253 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1300804&douyu&logo" group-title="•斗鱼「游戏」",卷子 -http://live.iill.top/douyu.php?id=1300804 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/561014&huya&logo" group-title="•虎牙「游戏」",狗婷婷DT -http://live.iill.top/huya.php?id=561014 -#EXTINF:-1 tvg-logo="http://esx.piojm.tech/live/4hc/21sF7RHuXCNQ.jpg" group-title="•BIGO「娱乐」",「JP」tao🐟𓈒𓂂𓏸 -http://live.iill.top/bigo.php?id=877553858 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23903123&huya&logo" group-title="•虎牙「影视」",堆堆港剧日常 +http://live.iill.top/huya.php?id=23903123 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355802&huya&logo" group-title="•虎牙「影视」",之而成冠毛 +http://live.iill.top/huya.php?id=26355802 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26298751&huya&logo" group-title="•虎牙「影视」",婧丶 +http://live.iill.top/huya.php?id=26298751 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352950&huya&logo" group-title="•虎牙「影视」",我很忙 +http://live.iill.top/huya.php?id=11352950 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/687423&douyu&logo" group-title="•斗鱼「游戏」",yjjimpaopao http://live.iill.top/douyu.php?id=687423 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21059594&huya&logo" group-title="•虎牙「影视」",里昂保护的马蒂达 -http://live.iill.top/huya.php?id=21059594 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352944&huya&logo" group-title="•虎牙「影视」",鯎爺 -http://live.iill.top/huya.php?id=11352944 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1126960&douyu&logo" group-title="•斗鱼「游戏」",余小C -http://live.iill.top/douyu.php?id=1126960 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/斗鱼.png" group-title="•斗鱼「影视」",华语 -http://live.iill.top/douyu.php?id=85894 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/domangcha13&afreeca&logo" group-title="•Afreeca「娱乐」",♡도원♡ -http://live.iill.top/afreeca.php?id=domangcha13 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「影视」",時裝藝術表演 -https://tv.iill.top/youtube/305miamivisuals -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「影视」",老范讲故事 -https://tv.iill.top/youtube/StorytellerFan -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「影视」",時裝藝術表演² -https://tv.iill.top/youtube/shiftswim -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352919&huya&logo" group-title="•虎牙「影视」",海绵宝宝 -http://live.iill.top/huya.php?id=11352919 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23903196&huya&logo" group-title="•虎牙「影视」",冷门港片大全 +http://live.iill.top/huya.php?id=23903196 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/426667&bilibili&logo" group-title="•B站「游戏」",大炒面制造者Cen +http://live.iill.top/bilibili.php?id=426667 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/斗鱼.png" group-title="•斗鱼「影视」",科幻灾难 +http://live.iill.top/douyu.php?id=323876 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1300804&douyu&logo" group-title="•斗鱼「游戏」",卷子 +http://live.iill.top/douyu.php?id=1300804 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342390&huya&logo" group-title="•虎牙「影视」",核桃姐姐 +http://live.iill.top/huya.php?id=11342390 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352909&huya&logo" group-title="•虎牙「影视」",小军迷 +http://live.iill.top/huya.php?id=11352909 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/20985776&huya&logo" group-title="•虎牙「影视」",千里 +http://live.iill.top/huya.php?id=20985776 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/744280177745&douyin&logo" group-title="•抖音「游戏」",城城吖 +http://live.iill.top/douyin.php?id=744280177745 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/138531&huya&logo" group-title="•虎牙「影视」",依依妹妹在等你 +http://live.iill.top/huya.php?id=138531 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「影视」",時裝藝術表演³ https://tv.iill.top/youtube/SPLASHme -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/jiejieyou.&douyin&logo" group-title="•抖音「娱乐」",姐姐呦 -http://live.iill.top/douyin.php?id=jiejieyou. -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1356312776&yy&logo" group-title="•YY「娱乐」",糖糖糖🍬 -http://live.iill.top/yy.php?id=1356312776 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/4246519&douyu&logo" group-title="•斗鱼「影视」",邵氏电影 -http://live.iill.top/douyu.php?id=4246519 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/pepe_88888888&douyin&logo" group-title="•抖音「娱乐」",pepe皮皮💋. ࿆ -http://live.iill.top/douyin.php?id=pepe_88888888 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/298416&huya&logo" group-title="•虎牙「游戏」",德云两鬼 -http://live.iill.top/huya.php?id=298416 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/28808&huya&logo" group-title="•虎牙「娱乐」",小Q -http://live.iill.top/huya.php?id=28808 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/528&bilibili&logo" group-title="•B站「游戏」",痒局长 -http://live.iill.top/bilibili.php?id=528 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352944&huya&logo" group-title="•虎牙「影视」",鯎爺 +http://live.iill.top/huya.php?id=11352944 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/9990298&douyu&logo" group-title="•斗鱼「游戏」",王大谋 +http://live.iill.top/douyu.php?id=9990298 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21059594&huya&logo" group-title="•虎牙「影视」",里昂保护的马蒂达 +http://live.iill.top/huya.php?id=21059594 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/Wh909999&douyin&logo" group-title="•抖音「娱乐」",纯纯老师 +http://live.iill.top/douyin.php?id=Wh909999 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1126960&douyu&logo" group-title="•斗鱼「游戏」",余小C +http://live.iill.top/douyu.php?id=1126960 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/xiaoyan1234.&douyin&logo" group-title="•抖音「娱乐」",泡泡。🫧 +http://live.iill.top/douyin.php?id=xiaoyan1234. +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/527988&huya&logo" group-title="•虎牙「娱乐」",童锦程 +http://live.iill.top/huya.php?id=527988 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/斗鱼.png" group-title="•斗鱼「影视」",华语 +http://live.iill.top/douyu.php?id=85894 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「影视」",時裝藝術表演 +https://tv.iill.top/youtube/305miamivisuals +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/eunz1nara&afreeca&logo" group-title="•Afreeca「娱乐」",양팡♥ +http://live.iill.top/afreeca.php?id=eunz1nara +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/斗鱼.png" group-title="•斗鱼「游戏」",杀手不太冷2 +http://live.iill.top/douyu.php?id=3125893 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/30468649&bilibili&logo" group-title="•B站「娱乐」",铃芽不俐齿 +http://live.iill.top/bilibili.php?id=30468649 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/gys01083&afreeca&logo" group-title="•Afreeca「娱乐」",바미♡ +http://live.iill.top/afreeca.php?id=gys01083 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「影视」",時裝藝術表演¹ https://tv.iill.top/youtube/NYFT +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「影视」",時裝藝術表演² +https://tv.iill.top/youtube/shiftswim +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1356312776&yy&logo" group-title="•YY「娱乐」",糖糖糖🍬 +http://live.iill.top/yy.php?id=1356312776 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/6154037&bilibili&logo" group-title="•B站「娱乐」",猪猪 +http://live.iill.top/bilibili.php?id=6154037 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/4246519&douyu&logo" group-title="•斗鱼「影视」",邵氏电影 +http://live.iill.top/douyu.php?id=4246519 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/12133146&douyu&logo" group-title="•斗鱼「游戏」",牛逼小番 +http://live.iill.top/douyu.php?id=12133146 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1462155211&yy&logo" group-title="•YY「娱乐」",晨一凉小呆 http://live.iill.top/yy.php?id=1462155211 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/29458851&huya&logo" group-title="•虎牙「影视」",蜡笔小新 +http://live.iill.top/huya.php?id=29458851 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352919&huya&logo" group-title="•虎牙「影视」",海绵宝宝 +http://live.iill.top/huya.php?id=11352919 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「影视」",老范讲故事 +https://tv.iill.top/youtube/StorytellerFan +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/50259453481&douyin&logo" group-title="•抖音「娱乐」",伊一♐️ +http://live.iill.top/douyin.php?id=50259453481 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342386&huya&logo" group-title="•虎牙「影视」",偷心大盗ヽ龍宝 +http://live.iill.top/huya.php?id=11342386 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1349422196&yy&logo" group-title="•YY「娱乐」",小艺 +http://live.iill.top/yy.php?id=1349422196 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/29580971&huya&logo" group-title="•虎牙「影视」",农民 http://live.iill.top/huya.php?id=29580971 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/28808&huya&logo" group-title="•虎牙「娱乐」",小Q +http://live.iill.top/huya.php?id=28808 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/7777&bilibili&logo" group-title="•B站「游戏」",德云社 +http://live.iill.top/bilibili.php?id=7777 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342404&huya&logo" group-title="•虎牙「影视」",扫黑 http://live.iill.top/huya.php?id=11342404 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352935&huya&logo" group-title="•虎牙「影视」",丹 -http://live.iill.top/huya.php?id=11352935 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11601978&huya&logo" group-title="•虎牙「影视」",神医 -http://live.iill.top/huya.php?id=11601978 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21059563&huya&logo" group-title="•虎牙「影视」",宝莲灯 -http://live.iill.top/huya.php?id=21059563 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「其他」",中天新聞 +https://tv.iill.top/youtube/oIgbl7t0S_w +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/52876&douyu&logo" group-title="•斗鱼「游戏」",ZSMJ +http://live.iill.top/douyu.php?id=52876 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355861&huya&logo" group-title="•虎牙「影视」",西游记 +http://live.iill.top/huya.php?id=26355861 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/8157860&douyu&logo" group-title="•斗鱼「影视」",永不 +http://live.iill.top/douyu.php?id=8157860 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354930964&yy&logo" group-title="•YY「影视」",二炮手 http://live.iill.top/yy.php?id=1354930964 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/4105989&douyu&logo" group-title="•斗鱼「影视」",变形金刚 +http://live.iill.top/douyu.php?id=4105989 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342429&huya&logo" group-title="•虎牙「影视」",梁家辉 +http://live.iill.top/huya.php?id=11342429 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/xuehanhan.&douyin&logo" group-title="•抖音「游戏」",第五雪憨憨 +http://live.iill.top/douyin.php?id=xuehanhan. #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/353798&huya&logo" group-title="•虎牙「影视」",红色 http://live.iill.top/huya.php?id=353798 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1382741638&yy&logo" group-title="•YY「影视」",俺娘田小草 http://live.iill.top/yy.php?id=1382741638 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/836458&huya&logo" group-title="•虎牙「游戏」",微竞、莎莉 -http://live.iill.top/huya.php?id=836458 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354780649&yy&logo" group-title="•YY「影视」",天下 -http://live.iill.top/yy.php?id=1354780649 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355788&huya&logo" group-title="•虎牙「影视」",李卫 -http://live.iill.top/huya.php?id=26355788 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11601986&huya&logo" group-title="•虎牙「影视」",贺岁 -http://live.iill.top/huya.php?id=11601986 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355860&huya&logo" group-title="•虎牙「影视」",水 -http://live.iill.top/huya.php?id=26355860 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354932355&yy&logo" group-title="•YY「影视」",第一滴血 -http://live.iill.top/yy.php?id=1354932355 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21059612&huya&logo" group-title="•虎牙「影视」",风云2 -http://live.iill.top/huya.php?id=21059612 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11601958&huya&logo" group-title="•虎牙「影视」",熊猫 -http://live.iill.top/huya.php?id=11601958 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/52876&douyu&logo" group-title="•斗鱼「游戏」",ZSMJ -http://live.iill.top/douyu.php?id=52876 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1508902755&yy&logo" group-title="•YY「影视」",白娘子 -http://live.iill.top/yy.php?id=1508902755 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1355652820&yy&logo" group-title="•YY「影视」",武林外传 -http://live.iill.top/yy.php?id=1355652820 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/30468649&bilibili&logo" group-title="•B站「娱乐」",铃芽不俐齿 -http://live.iill.top/bilibili.php?id=30468649 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355861&huya&logo" group-title="•虎牙「影视」",西游记 -http://live.iill.top/huya.php?id=26355861 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352958&huya&logo" group-title="•虎牙「影视」",神探 -http://live.iill.top/huya.php?id=11352958 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「其他」",中天新聞 -https://tv.iill.top/youtube/oIgbl7t0S_w -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354930903&yy&logo" group-title="•YY「影视」",悬疑 烧脑 -http://live.iill.top/yy.php?id=1354930903 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342429&huya&logo" group-title="•虎牙「影视」",梁家辉 -http://live.iill.top/huya.php?id=11342429 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/4105989&douyu&logo" group-title="•斗鱼「影视」",变形金刚 -http://live.iill.top/douyu.php?id=4105989 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/9290755&douyu&logo" group-title="•斗鱼「影视」",风云 -http://live.iill.top/douyu.php?id=9290755 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1382736803&yy&logo" group-title="•YY「影视」",变形金刚 -http://live.iill.top/yy.php?id=1382736803 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/8157860&douyu&logo" group-title="•斗鱼「影视」",永不 -http://live.iill.top/douyu.php?id=8157860 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/2793084&douyu&logo" group-title="•斗鱼「影视」",科幻 -http://live.iill.top/douyu.php?id=2793084 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1165374&douyu&logo" group-title="•斗鱼「影视」",恐怖 -http://live.iill.top/douyu.php?id=1165374 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/斗鱼.png" group-title="•斗鱼「游戏」",zzc -http://live.iill.top/douyu.php?id=666743 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11602046&huya&logo" group-title="•虎牙「影视」",杰克 -http://live.iill.top/huya.php?id=11602046 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352877&huya&logo" group-title="•虎牙「影视」",王宝强 -http://live.iill.top/huya.php?id=11352877 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354930977&yy&logo" group-title="•YY「影视」",熊出没 -http://live.iill.top/yy.php?id=1354930977 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354930181&yy&logo" group-title="•YY「影视」",猩球 -http://live.iill.top/yy.php?id=1354930181 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/572288&douyu&logo" group-title="•斗鱼「游戏」", Cnzlike -http://live.iill.top/douyu.php?id=572288 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354936167&yy&logo" group-title="•YY「影视」",复联 -http://live.iill.top/yy.php?id=1354936167 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354790484&yy&logo" group-title="•YY「影视」",狂飙 -http://live.iill.top/yy.php?id=1354790484 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/2516864&douyu&logo" group-title="•斗鱼「影视」",刘德华 -http://live.iill.top/douyu.php?id=2516864 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1382736851&yy&logo" group-title="•YY「影视」",国外科幻 -http://live.iill.top/yy.php?id=1382736851 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354930926&yy&logo" group-title="•YY「影视」",功夫 -http://live.iill.top/yy.php?id=1354930926 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/9651304&douyu&logo" group-title="•斗鱼「影视」",变种人 -http://live.iill.top/douyu.php?id=9651304 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/2140934&douyu&logo" group-title="•斗鱼「游戏」",老皮历险记 -http://live.iill.top/douyu.php?id=2140934 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352935&huya&logo" group-title="•虎牙「影视」",丹 +http://live.iill.top/huya.php?id=11352935 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11601981&huya&logo" group-title="•虎牙「影视」",成立 http://live.iill.top/huya.php?id=11601981 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/8543072&douyu&logo" group-title="•斗鱼「影视」",宰相刘罗锅 -http://live.iill.top/douyu.php?id=8543072 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/12098568&douyu&logo" group-title="•斗鱼「影视」",剧情 -http://live.iill.top/douyu.php?id=12098568 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/6140589&douyu&logo" group-title="•斗鱼「影视」",漫威 -http://live.iill.top/douyu.php?id=6140589 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/252802&douyu&logo" group-title="•斗鱼「影视」",贝爷影厅 -http://live.iill.top/douyu.php?id=252802 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/8814650&douyu&logo" group-title="•斗鱼「影视」",霍格沃茨 -http://live.iill.top/douyu.php?id=8814650 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/12143022&douyu&logo" group-title="•斗鱼「影视」",60帧 -http://live.iill.top/douyu.php?id=12143022 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/36337&douyu&logo" group-title="•斗鱼「影视」",贝爷 -http://live.iill.top/douyu.php?id=36337 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21059563&huya&logo" group-title="•虎牙「影视」",宝莲灯 +http://live.iill.top/huya.php?id=21059563 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354930926&yy&logo" group-title="•YY「影视」",功夫 +http://live.iill.top/yy.php?id=1354930926 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1382745091&yy&logo" group-title="•YY「影视」",超英 http://live.iill.top/yy.php?id=1382745091 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/276200&douyu&logo" group-title="•斗鱼「影视」",华语 经典 -http://live.iill.top/douyu.php?id=276200 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/虎牙.png" group-title="•虎牙「影视」",蜡笔小新 -http://live.iill.top/huya.php?id=11352970 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/573151&huya&logo" group-title="•虎牙「游戏」",小飞仔god -http://live.iill.top/huya.php?id=573151 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/7552568&douyu&logo" group-title="•斗鱼「影视」",隋唐演义 -http://live.iill.top/douyu.php?id=7552568 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354932355&yy&logo" group-title="•YY「影视」",第一滴血 +http://live.iill.top/yy.php?id=1354932355 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354780649&yy&logo" group-title="•YY「影视」",天下 +http://live.iill.top/yy.php?id=1354780649 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352877&huya&logo" group-title="•虎牙「影视」",王宝强 +http://live.iill.top/huya.php?id=11352877 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/9290755&douyu&logo" group-title="•斗鱼「影视」",风云 +http://live.iill.top/douyu.php?id=9290755 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/2793084&douyu&logo" group-title="•斗鱼「影视」",科幻 +http://live.iill.top/douyu.php?id=2793084 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355788&huya&logo" group-title="•虎牙「影视」",李卫 +http://live.iill.top/huya.php?id=26355788 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11602046&huya&logo" group-title="•虎牙「影视」",杰克 +http://live.iill.top/huya.php?id=11602046 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354930903&yy&logo" group-title="•YY「影视」",悬疑 烧脑 +http://live.iill.top/yy.php?id=1354930903 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1165374&douyu&logo" group-title="•斗鱼「影视」",恐怖 +http://live.iill.top/douyu.php?id=1165374 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1355652820&yy&logo" group-title="•YY「影视」",武林外传 +http://live.iill.top/yy.php?id=1355652820 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/572288&douyu&logo" group-title="•斗鱼「游戏」", Cnzlike +http://live.iill.top/douyu.php?id=572288 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/2140934&douyu&logo" group-title="•斗鱼「游戏」",老皮历险记 +http://live.iill.top/douyu.php?id=2140934 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/斗鱼.png" group-title="•斗鱼「游戏」",zzc +http://live.iill.top/douyu.php?id=666743 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355860&huya&logo" group-title="•虎牙「影视」",水 +http://live.iill.top/huya.php?id=26355860 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/虎牙.png" group-title="•虎牙「游戏」",Sdn +http://live.iill.top/huya.php?id=310112 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354930977&yy&logo" group-title="•YY「影视」",熊出没 +http://live.iill.top/yy.php?id=1354930977 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354210357&yy&logo" group-title="•YY「影视」",射雕 http://live.iill.top/yy.php?id=1354210357 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342425&huya&logo" group-title="•虎牙「影视」",神探 -http://live.iill.top/huya.php?id=11342425 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/9292499&douyu&logo" group-title="•斗鱼「影视」",007 -http://live.iill.top/douyu.php?id=9292499 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/9286868&douyu&logo" group-title="•斗鱼「影视」",陈佩斯喜剧 -http://live.iill.top/douyu.php?id=9286868 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355829&huya&logo" group-title="•虎牙「影视」",超 +http://live.iill.top/huya.php?id=26355829 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/虎牙.png" group-title="•虎牙「影视」",蜡笔小新 +http://live.iill.top/huya.php?id=11352970 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23735126&huya&logo" group-title="•虎牙「影视」",天地争霸美猴王 http://live.iill.top/huya.php?id=23735126 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354790484&yy&logo" group-title="•YY「影视」",狂飙 +http://live.iill.top/yy.php?id=1354790484 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/23749096&huya&logo" group-title="•虎牙「影视」",封神榜 http://live.iill.top/huya.php?id=23749096 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/434971&douyu&logo" group-title="•斗鱼「影视」",斗鱼影院 -http://live.iill.top/douyu.php?id=434971 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342424&huya&logo" group-title="•虎牙「影视」",刘德华 -http://live.iill.top/huya.php?id=11342424 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/4332&douyu&logo" group-title="•斗鱼「影视」",maxyingting -http://live.iill.top/douyu.php?id=4332 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354926676&yy&logo" group-title="•YY「影视」",血色 -http://live.iill.top/yy.php?id=1354926676 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/426667&bilibili&logo" group-title="•B站「游戏」",大炒面制造者Cen -http://live.iill.top/bilibili.php?id=426667 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/322360&douyu&logo" group-title="•斗鱼「影视」",小白 -http://live.iill.top/douyu.php?id=322360 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/3637778&douyu&logo" group-title="•斗鱼「影视」",特辑电影 -http://live.iill.top/douyu.php?id=3637778 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11601986&huya&logo" group-title="•虎牙「影视」",贺岁 +http://live.iill.top/huya.php?id=11601986 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11601978&huya&logo" group-title="•虎牙「影视」",神医 +http://live.iill.top/huya.php?id=11601978 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1508902755&yy&logo" group-title="•YY「影视」",白娘子 +http://live.iill.top/yy.php?id=1508902755 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/138243&douyu&logo" group-title="•斗鱼「游戏」",洞主 http://live.iill.top/douyu.php?id=138243 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355781&huya&logo" group-title="•虎牙「影视」",探索 -http://live.iill.top/huya.php?id=26355781 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/28265277&yy&logo" group-title="•YY「影视」",鹿鼎记 -http://live.iill.top/yy.php?id=28265277 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1356043677&yy&logo" group-title="•YY「影视」",少年 -http://live.iill.top/yy.php?id=1356043677 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1351814644&yy&logo" group-title="•YY「影视」",天龙 -http://live.iill.top/yy.php?id=1351814644 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21059567&huya&logo" group-title="•虎牙「影视」",唯爱 -http://live.iill.top/huya.php?id=21059567 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/388&bilibili&logo" group-title="•B站「游戏」",两仪滚 -http://live.iill.top/bilibili.php?id=388 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355847&huya&logo" group-title="•虎牙「影视」",长沙 -http://live.iill.top/huya.php?id=26355847 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/29896934&huya&logo" group-title="•虎牙「影视」",仙剑 -http://live.iill.top/huya.php?id=29896934 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1382704651&yy&logo" group-title="•YY「影视」",神雕 -http://live.iill.top/yy.php?id=1382704651 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1459331991&yy&logo" group-title="•YY「影视」",我的兄弟 -http://live.iill.top/yy.php?id=1459331991 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/8543072&douyu&logo" group-title="•斗鱼「影视」",宰相刘罗锅 +http://live.iill.top/douyu.php?id=8543072 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11601958&huya&logo" group-title="•虎牙「影视」",熊猫 +http://live.iill.top/huya.php?id=11601958 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/6140589&douyu&logo" group-title="•斗鱼「影视」",漫威 +http://live.iill.top/douyu.php?id=6140589 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352958&huya&logo" group-title="•虎牙「影视」",神探 +http://live.iill.top/huya.php?id=11352958 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/8814650&douyu&logo" group-title="•斗鱼「影视」",霍格沃茨 +http://live.iill.top/douyu.php?id=8814650 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/836458&huya&logo" group-title="•虎牙「游戏」",微竞、莎莉 +http://live.iill.top/huya.php?id=836458 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/9651304&douyu&logo" group-title="•斗鱼「影视」",变种人 +http://live.iill.top/douyu.php?id=9651304 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/252802&douyu&logo" group-title="•斗鱼「影视」",贝爷影厅 +http://live.iill.top/douyu.php?id=252802 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/2516864&douyu&logo" group-title="•斗鱼「影视」",刘德华 +http://live.iill.top/douyu.php?id=2516864 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/36337&douyu&logo" group-title="•斗鱼「影视」",贝爷 +http://live.iill.top/douyu.php?id=36337 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/12098568&douyu&logo" group-title="•斗鱼「影视」",剧情 +http://live.iill.top/douyu.php?id=12098568 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/7552568&douyu&logo" group-title="•斗鱼「影视」",隋唐演义 +http://live.iill.top/douyu.php?id=7552568 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/276200&douyu&logo" group-title="•斗鱼「影视」",华语 经典 +http://live.iill.top/douyu.php?id=276200 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/9292499&douyu&logo" group-title="•斗鱼「影视」",007 +http://live.iill.top/douyu.php?id=9292499 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354930181&yy&logo" group-title="•YY「影视」",猩球 +http://live.iill.top/yy.php?id=1354930181 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/9286868&douyu&logo" group-title="•斗鱼「影视」",陈佩斯喜剧 +http://live.iill.top/douyu.php?id=9286868 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1382736851&yy&logo" group-title="•YY「影视」",国外科幻 +http://live.iill.top/yy.php?id=1382736851 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354936167&yy&logo" group-title="•YY「影视」",复联 +http://live.iill.top/yy.php?id=1354936167 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/322360&douyu&logo" group-title="•斗鱼「影视」",小白 +http://live.iill.top/douyu.php?id=322360 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1382745093&yy&logo" group-title="•YY「影视」",金刚 http://live.iill.top/yy.php?id=1382745093 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/4332&douyu&logo" group-title="•斗鱼「影视」",maxyingting +http://live.iill.top/douyu.php?id=4332 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/3637778&douyu&logo" group-title="•斗鱼「影视」",特辑电影 +http://live.iill.top/douyu.php?id=3637778 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/434971&douyu&logo" group-title="•斗鱼「影视」",斗鱼影院 +http://live.iill.top/douyu.php?id=434971 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1382671124&yy&logo" group-title="•YY「影视」",真实案件 +http://live.iill.top/yy.php?id=1382671124 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1382745084&yy&logo" group-title="•YY「影视」",红楼梦 +http://live.iill.top/yy.php?id=1382745084 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342424&huya&logo" group-title="•虎牙「影视」",刘德华 +http://live.iill.top/huya.php?id=11342424 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342425&huya&logo" group-title="•虎牙「影视」",神探 +http://live.iill.top/huya.php?id=11342425 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1382736803&yy&logo" group-title="•YY「影视」",变形金刚 +http://live.iill.top/yy.php?id=1382736803 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355847&huya&logo" group-title="•虎牙「影视」",长沙 +http://live.iill.top/huya.php?id=26355847 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355781&huya&logo" group-title="•虎牙「影视」",探索 +http://live.iill.top/huya.php?id=26355781 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1382749892&yy&logo" group-title="•YY「影视」",速度与激情 +http://live.iill.top/yy.php?id=1382749892 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1356043677&yy&logo" group-title="•YY「影视」",少年 +http://live.iill.top/yy.php?id=1356043677 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/28265277&yy&logo" group-title="•YY「影视」",鹿鼎记 +http://live.iill.top/yy.php?id=28265277 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354926676&yy&logo" group-title="•YY「影视」",血色 +http://live.iill.top/yy.php?id=1354926676 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1382704651&yy&logo" group-title="•YY「影视」",神雕 +http://live.iill.top/yy.php?id=1382704651 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354936142&yy&logo" group-title="•YY「影视」",院线大片 http://live.iill.top/yy.php?id=1354936142 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355856&huya&logo" group-title="•虎牙「影视」",大宋 -http://live.iill.top/huya.php?id=26355856 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1353892468&yy&logo" group-title="•YY「影视」",宰相 http://live.iill.top/yy.php?id=1353892468 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11274154&huya&logo" group-title="•虎牙「影视」",陈翔六点半 -http://live.iill.top/huya.php?id=11274154 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11601968&huya&logo" group-title="•虎牙「影视」",电影_沈腾 -http://live.iill.top/huya.php?id=11601968 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1459331991&yy&logo" group-title="•YY「影视」",我的兄弟 +http://live.iill.top/yy.php?id=1459331991 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355856&huya&logo" group-title="•虎牙「影视」",大宋 +http://live.iill.top/huya.php?id=26355856 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354930936&yy&logo" group-title="•YY「娱乐」",黑衣人 http://live.iill.top/yy.php?id=1354930936 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/29798259&huya&logo" group-title="•虎牙「影视」",蜡笔小新大象舞 -http://live.iill.top/huya.php?id=29798259 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352962&huya&logo" group-title="•虎牙「影视」",电影_罪犯 -http://live.iill.top/huya.php?id=11352962 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352886&huya&logo" group-title="•虎牙「影视」",电影_警匪 -http://live.iill.top/huya.php?id=11352886 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/29852720&huya&logo" group-title="•虎牙「影视」",胡八一 -http://live.iill.top/huya.php?id=29852720 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/3168536&douyu&logo" group-title="•斗鱼「游戏」",Xleft小叮当 -http://live.iill.top/douyu.php?id=3168536 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21136378&huya&logo" group-title="•虎牙「影视」",周星驰吧 -http://live.iill.top/huya.php?id=21136378 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/6567483&douyu&logo" group-title="•斗鱼「游戏」",Sumiya丶墨岩彧 -http://live.iill.top/douyu.php?id=6567483 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/5908256&douyu&logo" group-title="•斗鱼「娱乐」",蓝翔新三国 -http://live.iill.top/douyu.php?id=5908256 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/52319&douyu&logo" group-title="•斗鱼「游戏」",loveyou_qq -http://live.iill.top/douyu.php?id=52319 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/422059&huya&logo" group-title="•虎牙「娱乐」",正恒、原子不可爱 -http://live.iill.top/huya.php?id=422059 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/6558897&douyu&logo" group-title="•斗鱼「游戏」",果小果是个弟弟 -http://live.iill.top/douyu.php?id=6558897 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21059581&huya&logo" group-title="•虎牙「影视」",电影_强森 -http://live.iill.top/huya.php?id=21059581 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1351814644&yy&logo" group-title="•YY「影视」",天龙 +http://live.iill.top/yy.php?id=1351814644 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352876&huya&logo" group-title="•虎牙「影视」",电影_黄渤 http://live.iill.top/huya.php?id=11352876 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/29863394&huya&logo" group-title="•虎牙「影视」",斗破-萧炎 -http://live.iill.top/huya.php?id=29863394 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11601968&huya&logo" group-title="•虎牙「影视」",电影_沈腾 +http://live.iill.top/huya.php?id=11601968 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354658049&yy&logo" group-title="•YY「影视」",鹿鼎记周星驰 +http://live.iill.top/yy.php?id=1354658049 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/6979222&douyu&logo" group-title="•斗鱼「游戏」",玩机器 +http://live.iill.top/douyu.php?id=6979222 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/6558897&douyu&logo" group-title="•斗鱼「游戏」",果小果是个弟弟 +http://live.iill.top/douyu.php?id=6558897 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/52319&douyu&logo" group-title="•斗鱼「游戏」",loveyou_qq +http://live.iill.top/douyu.php?id=52319 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/6567483&douyu&logo" group-title="•斗鱼「游戏」",Sumiya丶墨岩彧 +http://live.iill.top/douyu.php?id=6567483 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/10639765&douyu&logo" group-title="•斗鱼「游戏」",艾琳bigbaby http://live.iill.top/douyu.php?id=10639765 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342387&huya&logo" group-title="•虎牙「影视」",电影_发哥 -http://live.iill.top/huya.php?id=11342387 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11274154&huya&logo" group-title="•虎牙「影视」",陈翔六点半 +http://live.iill.top/huya.php?id=11274154 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/29852720&huya&logo" group-title="•虎牙「影视」",胡八一 +http://live.iill.top/huya.php?id=29852720 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/5908256&douyu&logo" group-title="•斗鱼「娱乐」",蓝翔新三国 +http://live.iill.top/douyu.php?id=5908256 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/3168536&douyu&logo" group-title="•斗鱼「游戏」",Xleft小叮当 +http://live.iill.top/douyu.php?id=3168536 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342428&huya&logo" group-title="•虎牙「影视」",电影_宇宙 http://live.iill.top/huya.php?id=11342428 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11602034&huya&logo" group-title="•虎牙「影视」",电影_漫威 http://live.iill.top/huya.php?id=11602034 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354507447&yy&logo" group-title="•YY「影视」",古惑仔 -http://live.iill.top/yy.php?id=1354507447 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354658049&yy&logo" group-title="•YY「影视」",鹿鼎记周星驰 -http://live.iill.top/yy.php?id=1354658049 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/27318500&huya&logo" group-title="•虎牙「影视」",古惑电影 -http://live.iill.top/huya.php?id=27318500 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21059595&huya&logo" group-title="•虎牙「影视」",电影_海盗 -http://live.iill.top/huya.php?id=21059595 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/29798259&huya&logo" group-title="•虎牙「影视」",蜡笔小新大象舞 +http://live.iill.top/huya.php?id=29798259 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21136378&huya&logo" group-title="•虎牙「影视」",周星驰吧 +http://live.iill.top/huya.php?id=21136378 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/wanyu123123&douyin&logo" group-title="•抖音「娱乐」",晚玉阿 +http://live.iill.top/douyin.php?id=wanyu123123 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352962&huya&logo" group-title="•虎牙「影视」",电影_罪犯 +http://live.iill.top/huya.php?id=11352962 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11352886&huya&logo" group-title="•虎牙「影视」",电影_警匪 +http://live.iill.top/huya.php?id=11352886 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11279247&huya&logo" group-title="•虎牙「影视」",电影_赛车 http://live.iill.top/huya.php?id=11279247 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/29458851&huya&logo" group-title="•虎牙「影视」",蜡笔小新 -http://live.iill.top/huya.php?id=29458851 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/虎牙.png" group-title="•虎牙「娱乐」",挨饿德 -http://live.iill.top/huya.php?id=15373958 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1382749892&yy&logo" group-title="•YY「影视」",速度与激情 -http://live.iill.top/yy.php?id=1382749892 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1461037999&yy&logo" group-title="•YY「影视」",港片 -http://live.iill.top/yy.php?id=1461037999 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/63136&douyu&logo" group-title="•斗鱼「游戏」",冬瓜强 -http://live.iill.top/douyu.php?id=63136 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1382745084&yy&logo" group-title="•YY「影视」",红楼梦 -http://live.iill.top/yy.php?id=1382745084 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/528353&douyu&logo" group-title="•斗鱼「游戏」",As童话话话 -http://live.iill.top/douyu.php?id=528353 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11602041&huya&logo" group-title="•虎牙「影视」",电影_推荐 -http://live.iill.top/huya.php?id=11602041 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1356043643&yy&logo" group-title="•YY「影视」",封神榜 -http://live.iill.top/yy.php?id=1356043643 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/74751&douyu&logo" group-title="•斗鱼「游戏」",超级小桀 -http://live.iill.top/douyu.php?id=74751 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21059577&huya&logo" group-title="•虎牙「影视」",电影_怪兽 http://live.iill.top/huya.php?id=21059577 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「其他」",kbs -https://tv.iill.top/youtube/https://www.youtube.com/watch?v=OxQQsIvJTTU -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/26355829&huya&logo" group-title="•虎牙「影视」",超 -http://live.iill.top/huya.php?id=26355829 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「娱乐」",guoma -https://tv.iill.top/youtube/guoma +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21059581&huya&logo" group-title="•虎牙「影视」",电影_强森 +http://live.iill.top/huya.php?id=21059581 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/9588891&douyu&logo" group-title="•斗鱼「娱乐」",秋月剪水 +http://live.iill.top/douyu.php?id=9588891 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21059595&huya&logo" group-title="•虎牙「影视」",电影_海盗 +http://live.iill.top/huya.php?id=21059595 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21059579&huya&logo" group-title="•虎牙「影视」",电影_枪战 http://live.iill.top/huya.php?id=21059579 -#EXTINF:-1 tvg-logo="http://d1h5eqpfj90wzi.cloudfront.net/live/4hd/01sUGhyGcTg3N_2.jpg?type=20" group-title="•BIGO「娱乐」",「VN」Bé Miuu🐈 -http://live.iill.top/bigo.php?id=bemeo2010 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「其他」",EBC -https://tv.iill.top/youtube/newsebc +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1354507447&yy&logo" group-title="•YY「影视」",古惑仔 +http://live.iill.top/yy.php?id=1354507447 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/27318500&huya&logo" group-title="•虎牙「影视」",古惑电影 +http://live.iill.top/huya.php?id=27318500 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11342387&huya&logo" group-title="•虎牙「影视」",电影_发哥 +http://live.iill.top/huya.php?id=11342387 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/528353&douyu&logo" group-title="•斗鱼「游戏」",As童话话话 +http://live.iill.top/douyu.php?id=528353 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1356043643&yy&logo" group-title="•YY「影视」",封神榜 +http://live.iill.top/yy.php?id=1356043643 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21059612&huya&logo" group-title="•虎牙「影视」",风云2 +http://live.iill.top/huya.php?id=21059612 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1461037999&yy&logo" group-title="•YY「影视」",港片 +http://live.iill.top/yy.php?id=1461037999 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/388&bilibili&logo" group-title="•B站「游戏」",两仪滚 +http://live.iill.top/bilibili.php?id=388 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/74751&douyu&logo" group-title="•斗鱼「游戏」",超级小桀 +http://live.iill.top/douyu.php?id=74751 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「其他」",kbs +https://tv.iill.top/youtube/https://www.youtube.com/watch?v=OxQQsIvJTTU +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「娱乐」",guoma +https://tv.iill.top/youtube/guoma #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/60937&douyu&logo" group-title="•斗鱼「游戏」",zard1991 http://live.iill.top/douyu.php?id=60937 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「其他」",EBC +https://tv.iill.top/youtube/newsebc +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/虎牙.png" group-title="•虎牙「娱乐」",挨饿德 +http://live.iill.top/huya.php?id=15373958 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/131977&douyu&logo" group-title="•斗鱼「影视」",刘少Runningman http://live.iill.top/douyu.php?id=131977 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1886240&douyu&logo" group-title="•斗鱼「游戏」",17丶Xtreme -http://live.iill.top/douyu.php?id=1886240 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/872189&huya&logo" group-title="•虎牙「游戏」",吃鸡-染宝宝 -http://live.iill.top/huya.php?id=872189 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/229085&huya&logo" group-title="•虎牙「娱乐」",Dae、红莲 +http://live.iill.top/huya.php?id=229085 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/189201&huya&logo" group-title="•虎牙「游戏」",霸哥 +http://live.iill.top/huya.php?id=189201 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/2706482&douyu&logo" group-title="•斗鱼「游戏」",斗鸡dougay +http://live.iill.top/douyu.php?id=2706482 #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/14079954&huya&logo" group-title="•虎牙「娱乐」",JJ斗地主 http://live.iill.top/huya.php?id=14079954 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21059564&huya&logo" group-title="•虎牙「影视」",马春夏秋冬梅 -http://live.iill.top/huya.php?id=21059564 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「影视」",live -https://tv.iill.top/youtube/1 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/872189&huya&logo" group-title="•虎牙「游戏」",吃鸡-染宝宝 +http://live.iill.top/huya.php?id=872189 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/1886240&douyu&logo" group-title="•斗鱼「游戏」",17丶Xtreme +http://live.iill.top/douyu.php?id=1886240 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/990544&huya&logo" group-title="•虎牙「游戏」",吃鸡-檬小暖 +http://live.iill.top/huya.php?id=990544 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「其他」",啤梨頻道 https://tv.iill.top/youtube/vnRi1SYA_AE +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21288462&huya&logo" group-title="•虎牙「娱乐」",大蒙香味 +http://live.iill.top/huya.php?id=21288462 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/18958242&huya&logo" group-title="•虎牙「娱乐」",梨涡少女mini +http://live.iill.top/huya.php?id=18958242 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21059564&huya&logo" group-title="•虎牙「影视」",马春夏秋冬梅 +http://live.iill.top/huya.php?id=21059564 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/虎牙.png" group-title="•虎牙「游戏」",老佳 +http://live.iill.top/huya.php?id=959242 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/27781393&bilibili&logo" group-title="•B站「游戏」",B站第五鱼鱼 +http://live.iill.top/bilibili.php?id=27781393 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「影视」",RTHK 香港電台 +https://tv.iill.top/youtube/巴黎奧運直擊-7月29日賽事(第一部份) #EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21969336&huya&logo" group-title="•虎牙「娱乐」",李子柒 http://live.iill.top/huya.php?id=21969336 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「影视」",RTHK 香港電台 -https://tv.iill.top/youtube/巴黎奧運直擊-7月29日賽事(第一部份) -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/18958242&huya&logo" group-title="•虎牙「娱乐」",梨涡少女mini -http://live.iill.top/huya.php?id=18958242 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「影视」",RTHK 香港電台 https://tv.iill.top/youtube/vpw5L69jglk -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「娱乐」",王志安 -https://tv.iill.top/youtube/王志安 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21288462&huya&logo" group-title="•虎牙「娱乐」",大蒙香味 -http://live.iill.top/huya.php?id=21288462 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/660149&huya&logo" group-title="•虎牙「游戏」",HSL虎牙超级联赛 -http://live.iill.top/huya.php?id=660149 -#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/虎牙.png" group-title="•虎牙「游戏」",老佳 -http://live.iill.top/huya.php?id=959242 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「娱乐」",陈一发 https://tv.iill.top/youtube/@chenyifaer -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/6979222&douyu&logo" group-title="•斗鱼「游戏」",玩机器 -http://live.iill.top/douyu.php?id=6979222 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/660149&huya&logo" group-title="•虎牙「游戏」",HSL虎牙超级联赛 +http://live.iill.top/huya.php?id=660149 #EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「娱乐」",THE K-POP https://tv.iill.top/youtube/JVocS7Yftw8 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/377105&huya&logo" group-title="•虎牙「游戏」",小龙堡c -http://live.iill.top/huya.php?id=377105 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/925378&bilibili&logo" group-title="•B站「游戏」",FARWAY远芳芳 -http://live.iill.top/bilibili.php?id=925378 -#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/27781393&bilibili&logo" group-title="•B站「游戏」",B站第五鱼鱼 -http://live.iill.top/bilibili.php?id=27781393 +#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/YouTube.png" group-title="•YouTube「娱乐」",王志安 +https://tv.iill.top/youtube/王志安 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/13233348&bilibili&logo" group-title="•B站「游戏」",撸Sir +http://live.iill.top/bilibili.php?id=13233348 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/30741708&bilibili&logo" group-title="•B站「娱乐」",张小薇了 +http://live.iill.top/bilibili.php?id=30741708 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/63136&douyu&logo" group-title="•斗鱼「游戏」",冬瓜强 +http://live.iill.top/douyu.php?id=63136 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/21059567&huya&logo" group-title="•虎牙「影视」",唯爱 +http://live.iill.top/huya.php?id=21059567 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/10375360&bilibili&logo" group-title="•B站「影视」",柯南 +http://live.iill.top/bilibili.php?id=10375360 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/650&bilibili&logo" group-title="•B站「游戏」",游戏-一米八的坤儿 +http://live.iill.top/bilibili.php?id=650 +#EXTINF:-1 tvg-logo="https://tv.iill.top/LOGO/11602041&huya&logo" group-title="•虎牙「影视」",电影_推荐 +http://live.iill.top/huya.php?id=11602041 diff --git a/小米/spider.jar b/小米/spider.jar index 63c306a..694d3f6 100644 Binary files a/小米/spider.jar and b/小米/spider.jar differ diff --git a/摸鱼儿/api.json b/摸鱼儿/api.json new file mode 100644 index 0000000..9b04b4a --- /dev/null +++ b/摸鱼儿/api.json @@ -0,0 +1,1738 @@ +{ + "spider": "./spider.jar", + "wallpaper": "http://我不是.摸鱼儿.top/wallpaper/moyu.php", + "logo": "https://s1.imagehub.cc/images/2024/06/11/80538bfb3835ffebf7c5fd0716280801.jpeg", + "sites": [ + { + "key": "豆豆", + "name": "🌕️豆瓣┃首页┃推荐", + "type": 3, + "api": "csp_DouDou", + "searchable": 0, + "quickSearch": 0, + "filterable": 0 + }, + { + "key": "update", + "name": "🎬️摸鱼┃电影┃预告", + "type": 3, + "api": "csp_YGP", + "searchable": 0, + "quickSearch": 0, + "changeable": 0 + }, + { + "key": "登录", + "name": "🌎云盘┃登录┃设置", + "type": 3, + "api": "csp_AliYunPan", + "jar": "./jars/登录.jar", + "searchable": 0, + "quickSearch": 0, + "filterable": 0, + "ext": "http://127.0.0.1:9978/file/XYQTVBox/token.txt" + }, + { + "key": "弹幕配置", + "name": "🚀弹幕┃高级┃设置", + "type": 3, + "api": "csp_Config", + "jar": "./jars/弹幕配置.jar", + "searchable": 0, + "changeable": 0, + "indexs": 0, + "style": { + "type": "rect", + "ratio": 1.43 + } + }, + { + "key": "直播转点播", + "name": "📺️IPV6┃电视┃直播", + "type": 3, + "api": "./api/moyulive.js", + "searchable": 0, + "quickSearch": 1, + "filterable": 0, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=lives" + }, + { + "key": "测压", + "name": "🌟摸鱼测压┃4K解析", + "playerType": 1, + "type": 3, + "api": "csp_AppYsV2", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": " http://4k.摸鱼儿.com/api.php/app/" + }, + { + "key": "玩偶智能", + "name": "👽玩偶智能┃4K弹幕", + "type": 3, + "api": "csp_WoGG", + "searchable": 1, + "quickSearch": 1, + "changeable": 0, + "ext": { + "Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox/Cloud-drive.txt", + "from": "4k|auto", + "siteUrl": "https://www.wogg.net/", + "danMu": "弹" + } + }, + { + "key": "土豆弹幕", + "name": "🥔玩偶土豆┃4K弹幕", + "type": 3, + "api": "csp_Wobg", + "jar": "./jars/弹幕配置.jar", + "quickSearch": 1, + "changeable": 1, + "filterable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/XYQTVBox/cookie.txt", + "site": "https://tudou.lvdoui.top", + "danmu": true + }, + "timeout": 25 + }, + { + "key": "玩偶弹幕", + "name": "👽️玩偶哥哥┃4K弹幕", + "type": 3, + "api": "csp_Wogg", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/XYQTVBox/cookie.txt", + "uc_cookie": "http://127.0.0.1:9978/file/XYQTVBox/uc.txt", + "wogg": true, + "danmu": true + } + }, + { + "key": "笙歌影视", + "name": "🍂笙歌未婉┃4K纯净", + "type": 3, + "api": "csp_AppYY", + "jar": "./jars/登录.jar", + "searchable": 1, + "quickSearch": 1, + "changeable": 1 + }, + { + "key": "蜡笔弹幕", + "name": "🖍︎蜡笔资源┃4K弹幕", + "type": 3, + "api": "csp_Wobg", + "jar": "./jars/弹幕配置.jar", + "quickSearch": 1, + "changeable": 1, + "filterable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/XYQTVBox/cookie.txt", + "site": "https://duopan.fun", + "danmu": true + } + }, + { + "key": "六趣弹幕", + "name": "🍱六趣阿里┃4K弹幕", + "type": 3, + "api": "csp_Wogg", + "jar": "./jars/弹幕配置.jar", + "quickSearch": 1, + "changeable": 1, + "filterable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/XYQTVBox/cookie.txt", + "site": "http://cms3.715d.com/", + "danmu": true + } + }, + { + "key": "夸克奥秘弹幕", + "name": "🐼奥秘资源┃4K弹幕", + "type": 3, + "api": "csp_Wobg", + "jar": "./jars/弹幕配置.jar", + "quickSearch": 1, + "changeable": 1, + "filterable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/XYQTVBox/cookie.txt", + "uc_cookie": "http://127.0.0.1:9978/file/XYQTVBox/uc.txt", + "site": "https://vip.omii.top", + "danmu": true + } + }, + { + "key": "玩偶表哥", + "name": "🧃玩偶表哥┃4K弹幕", + "type": 3, + "api": "csp_Wobg", + "jar": "./jars/弹幕配置.jar", + "quickSearch": 1, + "changeable": 1, + "filterable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/XYQTVBox/cookie.txt", + "site": "https://wobgg.run-us-west2.goorm.io/", + "danmu": true + }, + "timeout": 25 + }, + { + "key": "多多弹幕", + "name": "🍥多多弹幕┃4K弹幕", + "type": 3, + "api": "csp_Wobg", + "jar": "./jars/弹幕配置.jar", + "quickSearch": 1, + "changeable": 1, + "filterable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/XYQTVBox/cookie.txt", + "site": "https://tv.yydsys.top/", + "danmu": true + }, + "timeout": 25 + }, + { + "key": "团长弹幕", + "name": "🏳️夸克团长┃4K弹幕", + "type": 3, + "api": "csp_Tzfile", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "filterable": 1, + "changeable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/XYQTVBox/cookie.txt", + "danmu": true + }, + "timeout": 25 + }, + { + "key": "夸克至臻弹幕", + "name": "🏆️夸克至臻┃4K弹幕", + "type": 3, + "api": "csp_Wobg", + "jar": "./jars/弹幕配置.jar", + "quickSearch": 1, + "changeable": 1, + "filterable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/XYQTVBox/cookie.txt", + "uc_cookie": "http://127.0.0.1:9978/file/XYQTVBox/uc.txt", + "site": "https://mihdr.top", + "danmu": true + } + }, + { + "key": "夸克云星弹幕", + "name": "☁️云星资源┃4K弹幕", + "type": 3, + "api": "csp_Wobg", + "jar": "./jars/弹幕配置.jar", + "quickSearch": 1, + "changeable": 1, + "filterable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/XYQTVBox/cookie.txt", + "uc_cookie": "http://127.0.0.1:9978/file/XYQTVBox/uc.txt", + "site": "https://4k.4u4.cn", + "danmu": true + } + }, + { + "key": "多多玩偶", + "name": "🧸玩偶多多┃4K纯净", + "type": 3, + "api": "csp_XYQHikerAL", + "jar": "./jars/登录.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=玩偶多多" + }, + { + "key": "天天开心", + "name": "😆天天开心┃4K纯净", + "type": 3, + "api": "csp_XYQHikerAL", + "jar": "./jars/登录.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=天天开心" + }, + { + "key": "新6V", + "name": "🧲六维电影┃4K磁力", + "type": 3, + "api": "csp_Xb6v", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "changeable": 0, + "timeout": 20 + }, + { + "key": "厂长", + "name": "🏭️厂长┃蓝光┃纯净", + "type": 3, + "api": "csp_NewCz", + "timeout": 15, + "playerType": 2, + "searchable": 1, + "quickSearch": 1, + "changeable": 1, + "ext": "https://www.czys.pro/" + }, + { + "key": "厂长弹幕版", + "name": "🏭️厂长┃蓝光┃弹幕", + "type": 3, + "api": "csp_Czzy", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": { + "danmu": true + }, + "timeout": 25 + }, + { + "key": "天天弹幕版", + "name": "⛅️天天┃蓝光┃弹幕", + "type": 3, + "api": "csp_TianTian", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": { + "danmu": true + }, + "timeout": 10 + }, + { + "key": "南瓜弹幕版", + "name": "🎃南瓜┃蓝光┃弹幕", + "type": 3, + "api": "csp_Nangua", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": { + "danmu": true + }, + "timeout": 10 + }, + { + "key": "南瓜", + "name": "🎃南瓜┃蓝光┃纯净", + "type": 3, + "api": "csp_NanGua", + "timeout": 15, + "playerType": 2, + "searchable": 1, + "quickSearch": 1, + "changeable": 1 + }, + { + "key": "sp360", + "name": "💯360┃蓝光┃弹幕", + "type": 3, + "api": "csp_Sp360", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "filterable": 1, + "changeable": 1, + "timeout": 25 + }, + { + "key": "荐片纯净", + "name": "👍️荐片┃蓝光┃纯净", + "api": "./api/drpy2.min.js", + "type": 3, + "searchable": 1, + "quickSearch": 1, + "changeable": 1, + "playerType": "1", + "ext": "./js/jp.js" + }, + { + "key": "荐片弹幕版", + "name": "👍️荐片┃蓝光┃弹幕", + "type": 3, + "api": "csp_Jianpian", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": { + "danmu": true + }, + "timeout": 20 + }, + { + "key": "韩圈", + "name": "🦄韩圈┃蓝光┃无广", + "type": 3, + "api": "csp_HanXiaoQuan", + "jar": "./jars/弹幕配置.jar", + "playerType": 2, + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "timeout": 10 + }, + { + "key": "大米星球", + "name": "🌌大米┃星球┃蓝光", + "type": 3, + "api": "csp_AppDaMi", + "jar": "./jars/登录.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "剧兔", + "name": "🐇剧兔┃蓝光┃纯净", + "type": 3, + "api": "csp_AppYsV2", + "ext": "https://www.zjtu.one/api.php/app/" + }, + { + "key": "河狸", + "name": "🦛河狸┃蓝光┃纯净", + "type": 3, + "api": "csp_AppYsV2", + "ext": "https://www.heli888.cc/api.php/app/" + }, + { + "key": "小马", + "name": "🐎小马┃蓝光┃纯净", + "type": 3, + "api": "csp_AppYsV2", + "ext": "https://mas.szyyds.cn/api.php/app/" + }, + { + "key": "影馆", + "name": "🐖野猪┃蓝光┃纯净", + "type": 3, + "api": "csp_AppYsV2", + "ext": "https://4kdyg.top/api.php/v1.vod" + }, + { + "key": "剧圈圈", + "name": "⭕剧圈┃蓝光┃在线", + "type": 3, + "api": "csp_XBPQ", + "jar": "./jars/登录.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=剧圈" + }, + { + "key": "酷看", + "name": "😎酷看┃蓝光┃纯净", + "type": 3, + "api": "csp_Kkys", + "timeout": 15, + "searchable": 1, + "quickSearch": 1, + "changeable": 1 + }, + { + "key": "酷看弹幕版", + "name": "😎酷看┃蓝光┃弹幕", + "type": 3, + "api": "csp_Kkys", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": { + "danmu": true + }, + "timeout": 20 + }, + { + "key": "百姓", + "name": "🧑百姓┃蓝光┃纯净", + "type": 3, + "api": "csp_XBPQ", + "jar": "./jars/登录.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=农民" + }, + { + "key": "dan酷影视", + "name": "🎞️酷影┃蓝光┃纯净", + "type": 3, + "api": "csp_AppYsV2", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "https://www.tvkuys.xyz/api.php/app/" + }, + { + "key": "JOJO", + "name": "🍭JOJO┃蓝光┃弹幕", + "type": 3, + "api": "csp_Jiohub", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "timeout": 10 + }, + { + "key": "Lib", + "name": "🌟立播┃蓝光┃秒播", + "type": 3, + "api": "csp_Libvio", + "searchable": 1, + "quickSearch": 1, + "changeable": 1, + "ext": { + "Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox/Cloud-drive.txt", + "from": "4k|auto" + } + }, + { + "key": "csp_xBPQ_wencai", + "name": "😭呜呜┃蓝光┃无广", + "type": 3, + "api": "csp_XBPQ", + "jar": "./jars/登录.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 0, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=55" + }, + { + "key": "小苹果", + "name": "🍎苹果┃蓝光┃弹幕", + "type": 3, + "api": "csp_Xpg", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "timeout": 15 + }, + { + "key": "苹果", + "name": "🍎苹果┃蓝光┃纯净", + "type": 3, + "api": "csp_LiteApple", + "searchable": 1, + "quickSearch": 1, + "changeable": 1 + }, + { + "key": "原创", + "name": "🍁春秋┃蓝光┃纯净", + "type": 3, + "api": "csp_YCyz", + "timeout": 15, + "playerType": 1, + "searchable": 1, + "quickSearch": 1, + "changeable": 1 + }, + { + "key": "草莓", + "name": "🍓草莓┃蓝光┃多线", + "type": 3, + "api": "csp_Appmq", + "searchable": 1, + "quickSearch": 1, + "changeable": 1 + }, + { + "key": "小点", + "name": "💥小点┃蓝光┃多线", + "type": 3, + "api": "csp_Appxdys", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "changeable": 0 + }, + { + "key": "文才弹幕", + "name": "💮文采┃蓝光┃弹幕", + "type": 3, + "api": "csp_Jpys", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": { + "danmu": true + } + }, + { + "key": "文采", + "name": "💮文采┃蓝光┃秒播", + "type": 3, + "api": "csp_Jpys", + "playerType": 2, + "searchable": 1, + "quickSearch": 1, + "changeable": 1 + }, + { + "key": "大师兄", + "name": "🐥师兄┃蓝光┃纯净", + "type": 3, + "api": "csp_XBPQ", + "jar": "./jars/登录.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=大师兄" + }, + { + "key": "素白白", + "name": "🩴拖鞋┃秒播┃纯净", + "type": 3, + "api": "csp_Subaibai", + "jar": "./jars/登录.jar", + "searchable": 1, + "changeable": 1 + }, + { + "key": "七味影视", + "name": "🌿七味┃蓝光┃秒播", + "type": 3, + "api": "csp_XBPQ", + "jar": "./jars/登录.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=七味" + }, + { + "key": "立播弹幕", + "name": "🌟立播┃蓝光┃弹幕", + "type": 3, + "api": "csp_Libvio", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "filterable": 1, + "changeable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/XYQTVBox/cookie.txt", + "uc_cookie": "http://127.0.0.1:9978/file/XYQTVBox/uc.txt", + "danmu": true + } + }, + { + "key": "Lib", + "name": "🌟立播┃蓝光┃直连", + "type": 3, + "api": "csp_Libvio", + "timeout": 15, + "searchable": 1, + "quickSearch": 1, + "changeable": 1, + "ext": "https://www.libvio.pw/" + }, + { + "key": "zxzj", + "name": "🍊在线┃蓝光┃外剧", + "type": 3, + "api": "csp_Zxzj", + "timeout": 15, + "searchable": 1, + "quickSearch": 1, + "changeable": 1, + "ext": "https://www.zxzja.com/" + }, + { + "key": "DiDuan", + "name": "🔋低端┃蓝光┃外剧", + "type": 3, + "api": "csp_Ddrk", + "playerType": "2", + "searchable": 1, + "quickSearch": 1, + "changeable": 1 + }, + { + "key": "Xinsj", + "name": "👁️视觉┃蓝光┃直连", + "type": 3, + "api": "csp_Xinsj", + "timeout": 15, + "searchable": 1, + "quickSearch": 1, + "changeable": 1, + "ext": "https://www.80yy3.com/" + }, + { + "key": "FreeOK", + "name": "👌FreeOK┃蓝光┃在线", + "type": 3, + "api": "csp_FreeOK", + "jar": "./jars/登录.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "Auete", + "name": "🏝奥特┃蓝光┃直连", + "type": 3, + "api": "csp_Auete", + "timeout": 15, + "searchable": 1, + "quickSearch": 1, + "changeable": 1, + "ext": "https://auete.pro/" + }, + { + "key": "热播", + "name": "📺热播┃蓝光┃多线", + "type": 3, + "api": "csp_AppTT", + "timeout": 15, + "playerType": 2, + "searchable": 1, + "quickSearch": 1, + "changeable": 1, + "ext": "AO7TcBkd8I/B5wQc4Qma+pU=" + }, + { + "key": "萌米", + "name": "👀萌米┃蓝光┃多线", + "type": 3, + "api": "csp_AppTT", + "timeout": 15, + "playerType": 1, + "ext": "AO7TcBkd8Iifux0Y8Qze6tVlMg==" + }, + { + "key": "央视经典", + "name": "🇨🇳央视┃经典┃合集", + "type": 3, + "api": "csp_Bili", + "searchable": 1, + "quickSearch": 1, + "filterable": 0, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=央视经典" + }, + { + "key": "达达龟", + "name": "🐢达达龟┃蓝光┃纯净", + "type": 3, + "api": "csp_Dadag", + "jar": "./jars/登录.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "机器人", + "name": "🤖机器人┃蓝光┃纯净", + "type": 3, + "api": "csp_Ikanbot", + "jar": "./jars/登录.jar", + "searchable": 1, + "quickSearch": 1, + "changeable": 1, + "ext": "https://v.aikanbot.com" + }, + { + "key": "csp_Kuaikan", + "name": "🫣快看┃蓝光┃纯净", + "type": 3, + "api": "csp_Kuaikan", + "jar": "./jars/登录.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "csp_TVB", + "name": "🍡TVB┃蓝光┃在线", + "type": 3, + "api": "csp_XBPQ", + "jar": "./jars/登录.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=tvb云播" + }, + { + "key": "子子影视", + "name": "👶子子┃蓝光┃在线", + "type": 3, + "api": "csp_XYQHiker", + "jar": "./jars/登录.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=子子影视" + }, + { + "key": "csp_疯狗", + "name": "🐶疯狗┃蓝光┃在线", + "type": 3, + "api": "csp_XBPQ", + "jar": "./jars/登录.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=疯狗" + }, + { + "key": "一起看弹幕", + "name": "🫘一起看┃蓝光┃弹幕", + "type": 3, + "api": "csp_Yqk", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": { + "danmu": true + } + }, + { + "key": "哔嘀弹幕", + "name": "🍀哔嘀┃蓝光┃弹幕", + "type": 3, + "api": "csp_Bdys", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": { + "site": "https://www.yjys01.com", + "danmu": true + } + }, + { + "key": "网飞影视", + "name": "🛸网飞┃蓝光┃在线", + "type": 3, + "api": "./api/drpy.min.js", + "ext": "./js/网飞TV.js" + }, + { + "key": "碟调影视", + "name": "🏰碟调┃蓝光┃在线", + "type": 3, + "api": "./api/drpy.min.js", + "ext": "./js/碟调影视.js" + }, + { + "key": "动漫巴士", + "name": "🚌巴士┃动漫┃蓝光", + "type": 3, + "api": "csp_Dm84", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "timeout": 10 + }, + { + "key": "csp_Ysj", + "name": "💫异界┃动漫┃蓝光", + "type": 3, + "api": "csp_Ysj", + "searchable": 1, + "quickSearch": 1, + "changeable": 1 + }, + { + "key": "csp_Anime1", + "name": "📖日漫┃动漫┃蓝光", + "type": 3, + "api": "csp_Anime1", + "searchable": 1, + "quickSearch": 1, + "changeable": 1 + }, + { + "key": "58动漫", + "name": "🛹58┃动漫┃蓝光", + "type": 3, + "api": "./api/drpy.min.js", + "ext": "./js/58动漫.js" + }, + { + "key": "去看吧", + "name": "🫣看吧┃动漫┃蓝光", + "type": 3, + "api": "./api/drpy.min.js", + "ext": "./js/去看吧.js" + }, + { + "key": "喵次元", + "name": "😹喵喵┃动漫┃蓝光", + "type": 3, + "api": "./api/drpy.min.js", + "ext": "./js/喵次元.js" + }, + { + "key": "短剧", + "name": "🌈上头┃短剧┃热推", + "type": 3, + "api": "csp_Djtt", + "searchable": 1, + "quickSearch": 1, + "changeable": 1 + }, + { + "key": "星芽短剧", + "name": "🌟星芽┃短剧┃热推", + "type": 3, + "api": "csp_AppXY", + "jar": "./jars/登录.jar", + "searchable": 1, + "quickSearch": 0, + "filterable": 0 + }, + { + "key": "无忧短剧", + "name": "😂无忧┃短剧┃热推", + "type": 3, + "api": "csp_Duanj", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "changeable": 0, + "style": { + "type": "rect", + "ratio": 1.433 + }, + "timeout": 10 + }, + { + "key": "在线短剧", + "name": "🛌在线┃短剧┃热推", + "type": 3, + "api": "csp_Duanju", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "changeable": 0, + "style": { + "type": "rect", + "ratio": 1.433 + }, + "timeout": 10 + }, + { + "key": "csp_Yj1211", + "name": "📽️网红┃直播┃蓝光", + "type": 3, + "api": "csp_Yj1211", + "playerType": "1", + "searchable": 0, + "quickSearch": 1, + "changeable": 0 + }, + { + "key": "csp_XPath_鹅直播", + "name": "🐧企鹅┃直播┃蓝光", + "type": 3, + "api": "csp_XPath", + "jar": "./jars/登录.jar", + "searchable": 0, + "quickSearch": 0, + "filterable": 0, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=企鹅直播" + }, + { + "key": "虎牙直播js", + "name": "🐯虎牙┃直播┃蓝光", + "type": 3, + "api": "./api/drpy2.min.js", + "ext": "./js/huya2.js", + "style": { + "type": "rect", + "ratio": 1.755 + }, + "playerType": "1", + "searchable": 0, + "quickSearch": 0, + "changeable": 0 + }, + { + "key": "斗鱼js", + "name": "🐟斗鱼┃直播┃蓝光", + "type": 3, + "api": "./api/drpy2.min.js", + "ext": "./js/斗鱼直播.js", + "style": { + "type": "rect", + "ratio": 1.755 + }, + "playerType": "1", + "searchable": 0, + "quickSearch": 0, + "changeable": 0 + }, + { + "key": "快手直播", + "name": "✌️快手┃直播┃蓝光", + "type": 3, + "api": "csp_KsLive", + "jar": "./jars/弹幕配置.jar", + "searchable": 0, + "quickSearch": 0, + "filterable": 1, + "style": { + "type": "rect", + "ratio": 1.433 + }, + "timeout": 10 + }, + { + "key": "JustLive", + "name": "👣聚合┃直播┃蓝光", + "type": 3, + "api": "csp_JustLive", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "changeable": 0, + "style": { + "type": "rect", + "ratio": 1.433 + }, + "timeout": 10 + }, + { + "key": "MTV", + "name": "🎧明星┃MV┃蓝光", + "type": 3, + "api": "csp_Bili", + "style": { + "type": "rect", + "ratio": 1.597 + }, + "searchable": 0, + "quickSearch": 0, + "changeable": 0, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=mtv" + }, + { + "key": "Bili", + "name": "🆙哔哩┃合集┃蓝光", + "type": 3, + "api": "csp_Bili", + "style": { + "type": "rect", + "ratio": 1.597 + }, + "searchable": 1, + "quickSearch": 0, + "changeable": 0, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=哔哩合集" + }, + { + "key": "Biliych", + "name": "🆙哔哩┃歌曲┃蓝光", + "type": 3, + "api": "csp_Bili", + "style": { + "type": "rect", + "ratio": 1.597 + }, + "searchable": 1, + "quickSearch": 0, + "changeable": 0, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=哔哩歌曲" + }, + { + "key": "看球", + "name": "⚽看球┃在线┃蓝光", + "type": 3, + "api": "csp_Kanqiu", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "changeable": 0, + "style": { + "type": "list" + }, + "timeout": 10 + }, + { + "key": "drpy_js_310直播", + "name": "⚽310┃直播┃蓝光", + "type": 3, + "api": "./api/drpy2.min.js", + "ext": "./js/310直播.js", + "searchable": 1, + "quickSearch": 1, + "filterable": 0 + }, + { + "key": "88js", + "name": "⚽88┃看球┃蓝光", + "type": 3, + "api": "csp_Kanqiu", + "style": { + "type": "list" + }, + "searchable": 0, + "quickSearch": 0, + "changeable": 0 + }, + { + "key": "drpy_js_JRKAN直播", + "name": "⚽JRK┃直播┃蓝光", + "type": 3, + "api": "./api/drpy2.min.js", + "ext": "./js/jrk.js", + "searchable": 1, + "quickSearch": 1, + "filterable": 0 + }, + { + "key": "少儿教育", + "name": "📚少儿┃学识┃教育", + "type": 3, + "api": "csp_Bili", + "style": { + "type": "rect", + "ratio": 1.597 + }, + "searchable": 0, + "quickSearch": 0, + "changeable": 0, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=少儿教育" + }, + { + "key": "小学课堂", + "name": "📚小学┃课堂┃教育", + "type": 3, + "api": "csp_Bili", + "style": { + "type": "rect", + "ratio": 1.597 + }, + "searchable": 0, + "quickSearch": 0, + "changeable": 0, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=小学教育" + }, + { + "key": "初中课堂", + "name": "📚初中┃课堂┃教育", + "type": 3, + "api": "csp_Bili", + "style": { + "type": "rect", + "ratio": 1.597 + }, + "searchable": 0, + "quickSearch": 0, + "changeable": 0, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=初中课堂" + }, + { + "key": "高中教育", + "name": "📚高中┃课堂┃教育", + "type": 3, + "api": "csp_Bili", + "style": { + "type": "rect", + "ratio": 1.597 + }, + "searchable": 0, + "quickSearch": 0, + "changeable": 0, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=高中课堂" + }, + { + "key": "csp_AList", + "name": "😋小雅┃网盘┃分享", + "type": 3, + "api": "csp_AList", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "quickSearch": 0, + "filterable": 1, + "changeable": 0, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=小雅" + }, + { + "key": "Aid", + "name": "🚑️急救┃常识┃教育", + "type": 3, + "api": "csp_FirstAid", + "searchable": 0, + "quickSearch": 0, + "changeable": 0, + "style": { + "type": "rect", + "ratio": 3.8 + } + }, + { + "key": "我的阿里", + "name": "🐱我的┃阿里┃资源", + "type": 3, + "api": "csp_MyAli", + "jar": "./jars/弹幕配置.jar", + "searchable": 0, + "quickSearch": 0, + "filterable": 0, + "indexs": 0, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt" + }, + "style": { + "type": "list" + }, + "timeout": 30 + }, + { + "key": "我的夸克", + "name": "🗽我的┃夸克┃资源", + "type": 3, + "api": "csp_MyQuark", + "jar": "./jars/弹幕配置.jar", + "searchable": 0, + "quickSearch": 0, + "filterable": 0, + "indexs": 0, + "ext": { + "cookie": "http://127.0.0.1:9978/file/XYQTVBox/cookie.txt" + }, + "style": { + "type": "list" + }, + "timeout": 30 + }, + { + "key": "易搜", + "name": "😹易搜┃弹幕┃搜索", + "type": 3, + "api": "csp_YiSo", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "filterable": 0, + "changeable": 0, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt", + "danmu": true + }, + "timeout": 15 + }, + { + "key": "YiSo", + "name": "😹易搜┃搜索┃纯净", + "type": 3, + "api": "csp_YiSo", + "searchable": 1, + "quickSearch": 1, + "changeable": 0, + "ext": { + "Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox/Cloud-drive.txt", + "from": "4k|auto" + } + }, + { + "key": "盘搜", + "name": "🦊盘搜┃弹幕┃搜索", + "type": 3, + "api": "csp_PanSou", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "filterable": 0, + "changeable": 0, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt", + "danmu": true + }, + "timeout": 15 + }, + { + "key": "PanSou", + "name": "🦊盘搜┃搜索┃纯净", + "type": 3, + "api": "csp_PanSou", + "searchable": 1, + "quickSearch": 1, + "changeable": 0, + "ext": { + "Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox/Cloud-drive.txt", + "from": "4k|auto" + } + }, + { + "key": "Up云搜", + "name": "😻Up搜┃弹幕┃搜索", + "type": 3, + "api": "csp_Upys", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "filterable": 0, + "changeable": 0, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt", + "danmu": true + }, + "timeout": 15 + }, + { + "key": "UpYun", + "name": "😻Up搜┃搜索┃纯净", + "type": 3, + "api": "csp_UpYun", + "searchable": 1, + "quickSearch": 1, + "changeable": 0, + "ext": { + "Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox/Cloud-drive.txt", + "from": "4k|auto" + } + }, + { + "key": "搜索弹幕", + "name": "🙀盘Se┃弹幕┃搜索", + "type": 3, + "api": "csp_PanSearch", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "filterable": 0, + "changeable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt", + "danmu": true + } + }, + { + "key": "夸克影搜弹幕", + "name": "🕵️影搜┃弹幕┃搜索", + "type": 3, + "api": "csp_Yingso", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "filterable": 0, + "changeable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/XYQTVBox/cookie.txt", + "danmu": true + } + }, + { + "key": "影搜", + "name": "🕵️影搜┃搜索┃纯净", + "type": 3, + "api": "csp_XYQHiker", + "jar": "./jars/登录.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=影搜" + }, + { + "key": "米搜", + "name": "🦋米搜┃搜索┃纯净", + "type": 3, + "api": "csp_MIPanSo", + "searchable": 1, + "quickSearch": 1, + "changeable": 0, + "ext": { + "Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox/Cloud-drive.txt", + "from": "4k|auto" + } + }, + { + "key": "夸搜", + "name": "🐌夸搜┃搜索┃纯净", + "type": 3, + "api": "csp_PanSearch", + "searchable": 1, + "quickSearch": 1, + "changeable": 0, + "ext": { + "pan": "quark", + "Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox/Cloud-drive.txt", + "from": "4k|auto" + } + }, + { + "key": "豆豆飞搜索", + "name": "🫘豆豆┃搜索┃纯净", + "type": 3, + "api": "csp_XYQHikerAL", + "jar": "./jars/登录.jar", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "http://我不是.摸鱼儿.top/api/moyu.php?file=豆豆搜.php" + }, + { + "key": "找資源", + "name": "🐺找zy┃搜索┃弹幕", + "type": 3, + "api": "csp_Zhaozy", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "filterable": 0, + "changeable": 0, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt", + "danmu": true + }, + "timeout": 15 + }, + { + "key": "七夜", + "name": "😾七夜┃搜索┃弹幕", + "type": 3, + "api": "csp_Dovx", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "filterable": 0, + "changeable": 0, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt", + "danmu": true + }, + "timeout": 15 + }, + { + "key": "csp_QuPanSou", + "name": "🤓趣盘┃搜索┃弹幕", + "type": 3, + "api": "csp_QuPanSou", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "filterable": 1, + "changeable": 0, + "ext": { + "cookie": "http://127.0.0.1:9978/file/XYQTVBox/cookie.txt", + "danmu": true + }, + "timeout": 15 + }, + { + "key": "csp_Qkpanso", + "name": "🐚夸克┃搜索┃弹幕", + "type": 3, + "api": "csp_Qkpanso", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "filterable": 1, + "changeable": 0, + "ext": { + "cookie": "http://127.0.0.1:9978/file/XYQTVBox/cookie.txt", + "danmu": true + }, + "timeout": 15 + }, + { + "key": "csp_AiPanSou", + "name": "🥰爱盘┃搜索┃弹幕", + "type": 3, + "api": "csp_AiPanSou", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "filterable": 1, + "changeable": 0, + "ext": { + "cookie": "http://127.0.0.1:9978/file/XYQTVBox/cookie.txt", + "danmu": true + }, + "timeout": 15 + }, + { + "key": "云盘4K", + "name": "🤖云盘┃搜索┃弹幕", + "type": 3, + "api": "csp_Yunpan4k", + "jar": "./jars/弹幕配置.jar", + "searchable": 1, + "filterable": 0, + "changeable": 0, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/XYQTVBox/cookie.txt", + "danmu": true + }, + "timeout": 15 + }, + { + "key": "push_agent", + "name": "🛴手机┃推送┃电视", + "type": 3, + "api": "csp_Push", + "jar": "./jars/弹幕配置.jar", + "searchable": 0, + "filterable": 0, + "changeable": 0, + "ext": { + "token": "http://127.0.0.1:9978/file/XYQTVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/XYQTVBox/cookie.txt", + "danmu": true + }, + "timeout": 15 + } + ], + "parses": [ + { + "name": "聚合1", + "type": 3, + "url": "Demo" + }, + { + "name": "聚合0", + "type": 3, + "url": "Web" + }, + { + "name": "摸鱼测压", + "type": 1, + "url": "http://vipjx.xn--v4q818bf34b.com/moyu64.php?url=", + "ext": { + "flag": [ + "qq", + "腾讯", + "qiyi", + "爱奇艺", + "奇艺", + "youku", + "优酷", + "sohu", + "搜狐", + "letv", + "乐视", + "mgtv", + "芒果", + "rx", + "ltnb", + "bilibili", + "1905", + "xigua" + ] + } + } + ], + "doh": [ + { + "name": "Google", + "url": "https://dns.google/dns-query", + "ips": [ + "8.8.4.4", + "8.8.8.8" + ] + }, + { + "name": "Cloudflare", + "url": "https://cloudflare-dns.com/dns-query", + "ips": [ + "1.1.1.1", + "1.0.0.1", + "2606:4700:4700::1111", + "2606:4700:4700::1001" + ] + }, + { + "name": "AdGuard", + "url": "https://dns.adguard.com/dns-query", + "ips": [ + "94.140.14.140", + "94.140.14.141" + ] + }, + { + "name": "DNSWatch", + "url": "https://resolver2.dns.watch/dns-query", + "ips": [ + "84.200.69.80", + "84.200.70.40" + ] + }, + { + "name": "Quad9", + "url": "https://dns.quad9.net/dns-quer", + "ips": [ + "9.9.9.9", + "149.112.112.112" + ] + } + ], + "rules": [ + { + "name": "kk", + "hosts": [ + "kuaikan" + ], + "regex": [ + "5", + "20.123", + "20.167", + "#EXT-X-DISCONTINUITY\\r*\\n*((?!#EXT-X-DISCONTINUITY)[\\s\\S])*?#EXT-X-KEY:METHOD((?!#EXT-X-DISCONTINUITY)[\\s\\S])*?#EXT-X-DISCONTINUITY" + ] + }, + { + "name": "yQK", + "hosts": [ + "ydd" + ], + "regex": [ + "18.4", + "15.1666", + "16.5333" + ] + }, + { + "name": "yqk", + "hosts": [ + "yqk" + ], + "regex": [ + "18.4", + "15.1666", + "#EXT-X-DISCONTINUITY\\r*\\n*((?!#EXT-X-DISCONTINUITY)[\\s\\S])*?#EXT-X-CUE-OUT((?!#EXT-X-DISCONTINUITY)[\\s\\S])*?#EXT-X-CUE-IN" + ] + }, + { + "name": "sn", + "hosts": [ + "suonizy" + ], + "regex": [ + "#EXTINF.*?\\s+.*?original.*?\\.ts\\s+", + "15.1666", + "15.2666", + "16.3333", + "15.266667" + ] + }, + { + "name": "bf", + "hosts": [ + "bfzy" + ], + "regex": [ + "#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:3,[\\s\\S]*?#EXT-X-DISCONTINUITY" + ] + }, + { + "name": "xx", + "hosts": [ + "aws.ulivetv.net" + ], + "regex": [ + "#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:8,[\\s\\S]*?#EXT-X-DISCONTINUITY" + ] + }, + { + "name": "lz", + "hosts": [ + "vip.lz", + "hd.lz", + "v.cdnlz", + "yzzy1.play" + ], + "regex": [ + "18.5333", + "19.52", + "18.6666" + ] + }, + { + "name": "ff", + "hosts": [ + "vip.ffzy", + "hd.ffzy", + "ffzy" + ], + "regex": [ + "25.0666", + "25.08", + "20.52", + "25.1", + "25.1999" + ] + }, + { + "name": "hs", + "hosts": [ + "huoshan.com" + ], + "regex": [ + "item_id=" + ] + }, + { + "name": "dy", + "hosts": [ + "douyin.com" + ], + "regex": [ + "is_play_url=" + ] + }, + { + "name": "nm", + "hosts": [ + "toutiaovod.com" + ], + "regex": [ + "video/tos/cn" + ] + }, + { + "name": "cl", + "hosts": [ + "magnet" + ], + "regex": [ + "最 新", + "直 播", + "更 新" + ] + } + ], + "lives": [ + { + "name": "SAO0", + "type": 0, + "url": "./lives/SAO0.txt", + "epg": "http://epg.112114.xyz/?ch={name}&date={date}" + }, + { + "name": "IPV6", + "type": 0, + "url": "./lives/IPV6.txt", + "epg": "http://epg.112114.xyz/?ch={name}&date={date}" + } + ] +} \ No newline at end of file diff --git a/摸鱼儿/api/drpy.min.js b/摸鱼儿/api/drpy.min.js new file mode 100644 index 0000000..7111baf --- /dev/null +++ b/摸鱼儿/api/drpy.min.js @@ -0,0 +1,2317 @@ +import cheerio from "assets://js/lib/cheerio.min.js"; +import "assets://js/lib/crypto-js.js"; +import "./jsencrypt.js"; +import 模板 from "./模板.js"; +import { + gbkTool +} +from "./gbk.js"; + +function init_test() { + console.log("init_test_start"); + console.log("当前版本号:" + VERSION); + console.log(RKEY); + console.log(JSON.stringify(rule)); + console.log("init_test_end") +} +function pre() { + if (typeof rule.预处理 === "string" && rule.预处理 && rule.预处理.trim()) { + let code = rule.预处理.trim(); + console.log("执行预处理代码:" + code); + if (code.startsWith("js:")) { + code = code.replace("js:", "") + } + try { + eval(code) + } catch (e) { + console.log("预处理执行失败:" + e.message) + } + } +} +let rule = {}; +let vercode = typeof pdfl === "function" ? "drpy2.1" : "drpy2"; +const VERSION = vercode + " 3.9.49beta40 202400426"; +const MOBILE_UA = "Mozilla/5.0 (Linux; Android 11; M2007J3SC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36"; +const PC_UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36"; +const UA = "Mozilla/5.0"; +const UC_UA = "Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36"; +const IOS_UA = "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1"; +const RULE_CK = "cookie"; +const CATE_EXCLUDE = "首页|留言|APP|下载|资讯|新闻|动态"; +const TAB_EXCLUDE = "猜你|喜欢|下载|剧情|热播"; +const OCR_RETRY = 3; +const OCR_API = "http://drpy.nokia.press:8028/ocr/drpy/text"; +if (typeof MY_URL === "undefined") { + var MY_URL +} +var HOST; +var RKEY; +var fetch; +var print; +var log; +var rule_fetch_params; +var fetch_params; +var oheaders; +var _pdfh; +var _pdfa; +var _pd; +const DOM_CHECK_ATTR = /(url|src|href|-original|-src|-play|-url|style)$/; +const SPECIAL_URL = /^(ftp|magnet|thunder|ws):/; +const NOADD_INDEX = /:eq|:lt|:gt|:first|:last|^body$|^#/; +const URLJOIN_ATTR = /(url|src|href|-original|-src|-play|-url|style)$/; +const SELECT_REGEX = /:eq|:lt|:gt|#/g; +const SELECT_REGEX_A = /:eq|:lt|:gt/g; +if (typeof Object.assign != "function") { + Object.assign = function() { + let target = arguments[0]; + for (let i = 1; 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 + } +} +if (!String.prototype.includes) { + String.prototype.includes = function(search, start) { + if (typeof start !== "number") { + start = 0 + } + if (start + search.length > this.length) { + return false + } else { + return this.indexOf(search, start) !== -1 + } + } +} +if (!Array.prototype.includes) { + Object.defineProperty(Array.prototype, "includes", { + value: function(searchElement, fromIndex) { + if (this == null) { + throw new TypeError('"this" is null or not defined') + } + var o = Object(this); + var len = o.length >>> 0; + if (len === 0) { + return false + } + var n = fromIndex | 0; + var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); + while (k < len) { + if (o[k] === searchElement) { + return true + } + k++ + } + return false + } + }) +} +if (typeof String.prototype.startsWith != "function") { + String.prototype.startsWith = function(prefix) { + return this.slice(0, prefix.length) === prefix + } +} +if (typeof String.prototype.endsWith != "function") { + String.prototype.endsWith = function(suffix) { + return this.indexOf(suffix, this.length - suffix.length) !== -1 + } +} +Object.prototype.myValues = function(obj) { + if (obj == null) { + throw new TypeError("Cannot convert undefined or null to object") + } + var res = []; + for (var k in obj) { + if (obj.hasOwnProperty(k)) { + res.push(obj[k]) + } + } + return res +}; +if (typeof Object.prototype.values != "function") { + Object.prototype.values = function(obj) { + if (obj == null) { + throw new TypeError("Cannot convert undefined or null to object") + } + var res = []; + for (var k in obj) { + if (obj.hasOwnProperty(k)) { + res.push(obj[k]) + } + } + return res + } +} +if (typeof Array.prototype.join != "function") { + Array.prototype.join = function(emoji) { + emoji = emoji || ""; + let self = this; + let str = ""; + let i = 0; + if (!Array.isArray(self)) { + throw String(self) + "is not Array" + } + if (self.length === 0) { + return "" + } + if (self.length === 1) { + return String(self[0]) + } + i = 1; + str = this[0]; + for (; i < self.length; i++) { + str += String(emoji) + String(self[i]) + } + return str + } +} +if (typeof Array.prototype.toReversed != "function") { + Array.prototype.toReversed = function() { + const clonedList = this.slice(); + const reversedList = clonedList.reverse(); + return reversedList + } +} +String.prototype.rstrip = function(chars) { + let regex = new RegExp(chars + "$"); + return this.replace(regex, "") +}; +Array.prototype.append = Array.prototype.push; +String.prototype.strip = String.prototype.trim; + +function 是否正版(vipUrl) { + let flag = new RegExp("qq.com|iqiyi.com|youku.com|mgtv.com|bilibili.com|sohu.com|ixigua.com|pptv.com|miguvideo.com|le.com|1905.com|fun.tv"); + return flag.test(vipUrl) +} +function urlDeal(vipUrl) { + if (!vipUrl) { + return "" + } + if (!是否正版(vipUrl)) { + return vipUrl + } + if (!/miguvideo/.test(vipUrl)) { + vipUrl = vipUrl.split("#")[0].split("?")[0] + } + return vipUrl +} +function setResult(d) { + if (!Array.isArray(d)) { + return [] + } + VODS = []; + d.forEach(function(it) { + let obj = { + vod_id: it.url || "", + vod_name: it.title || "", + vod_remarks: it.desc || "", + vod_content: it.content || "", + vod_pic: it.pic_url || it.img || "" + }; + let keys = Object.keys(it); + if (keys.includes("tname")) { + obj.type_name = it.tname || "" + } + if (keys.includes("tid")) { + obj.type_id = it.tid || "" + } + if (keys.includes("year")) { + obj.vod_year = it.year || "" + } + if (keys.includes("actor")) { + obj.vod_actor = it.actor || "" + } + if (keys.includes("director")) { + obj.vod_director = it.director || "" + } + if (keys.includes("area")) { + obj.vod_area = it.area || "" + } + VODS.push(obj) + }); + return VODS +} +function setResult2(res) { + VODS = res.list || []; + return VODS +} +function setHomeResult(res) { + if (!res || typeof res !== "object") { + return [] + } + return setResult(res.list) +} +function rc(js) { + if (js === "maomi_aes.js") { + var a = CryptoJS.enc.Utf8.parse("625222f9149e961d"); + var t = CryptoJS.enc.Utf8.parse("5efdtf6060e2o330"); + return { + De: function(word) { + word = CryptoJS.enc.Hex.parse(word); + return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(word), a, { + iv: t, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }) + .toString(CryptoJS.enc.Utf8) + }, + En: function(word) { + var Encrypted = CryptoJS.AES.encrypt(word, a, { + iv: t, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }); + return Encrypted.ciphertext.toString() + } + } + } + return {} +} +function maoss(jxurl, ref, key) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + eval(getCryptoJS()); + try { + var getVideoInfo = function(text) { + return CryptoJS.AES.decrypt(text, key, { + iv: iv, + padding: CryptoJS.pad.Pkcs7 + }) + .toString(CryptoJS.enc.Utf8) + }; + var token_key = key == undefined ? "dvyYRQlnPRCMdQSe" : key; + if (ref) { + var html = request(jxurl, { + headers: { + Referer: ref + } + }) + } else { + var html = request(jxurl) + } + if (html.indexOf("&btwaf=") != -1) { + html = request(jxurl + "&btwaf" + html.match(/&btwaf(.*?)"/)[1], { + headers: { + Referer: ref + } + }) + } + var token_iv = html.split('_token = "')[1].split('"')[0]; + var key = CryptoJS.enc.Utf8.parse(token_key); + var iv = CryptoJS.enc.Utf8.parse(token_iv); + eval(html.match(/var config = {[\s\S]*?}/)[0] + ""); + if (!config.url.startsWith("http")) { + config.url = CryptoJS.AES.decrypt(config.url, key, { + iv: iv, + padding: CryptoJS.pad.Pkcs7 + }) + .toString(CryptoJS.enc.Utf8) + } + return config.url + } catch (e) { + return "" + } +} +function urlencode(str) { + str = (str + "") + .toString(); + return encodeURIComponent(str) + .replace(/!/g, "%21") + .replace(/'/g, "%27") + .replace(/\(/g, "%28") + .replace(/\)/g, "%29") + .replace(/\*/g, "%2A") + .replace(/%20/g, "+") +} +function base64Encode(text) { + return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(text)) +} +function base64Decode(text) { + return CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(text)) +} +function md5(text) { + return CryptoJS.MD5(text) + .toString() +} +function encodeStr(input, encoding) { + encoding = encoding || "gbk"; + if (encoding.startsWith("gb")) { + const strTool = gbkTool(); + input = strTool.encode(input) + } + return input +} +function decodeStr(input, encoding) { + encoding = encoding || "gbk"; + if (encoding.startsWith("gb")) { + const strTool = gbkTool(); + input = strTool.decode(input) + } + return input +} +function getCryptoJS() { + return 'console.log("CryptoJS已装载");' +} +const RSA = { + decode: function(data, key, option) { + option = option || {}; + if (typeof JSEncrypt === "function") { + let chunkSize = option.chunkSize || 117; + let privateKey = this.getPrivateKey(key); + const decryptor = new JSEncrypt; + decryptor.setPrivateKey(privateKey); + let uncrypted = ""; + uncrypted = decryptor.decryptUnicodeLong(data); + return uncrypted + } else { + return false + } + }, + encode: function(data, key, option) { + option = option || {}; + if (typeof JSEncrypt === "function") { + let chunkSize = option.chunkSize || 117; + let publicKey = this.getPublicKey(key); + const encryptor = new JSEncrypt; + encryptor.setPublicKey(publicKey); + let encrypted = ""; + encrypted = encryptor.encryptUnicodeLong(data); + return encrypted + } else { + return false + } + }, + fixKey(key, prefix, endfix) { + if (!key.includes(prefix)) { + key = prefix + key + } + if (!key.includes(endfix)) { + key += endfix + } + return key + }, + getPrivateKey(key) { + let prefix = "-----BEGIN RSA PRIVATE KEY-----"; + let endfix = "-----END RSA PRIVATE KEY-----"; + return this.fixKey(key, prefix, endfix) + }, + getPublicKey(key) { + let prefix = "-----BEGIN PUBLIC KEY-----"; + let endfix = "-----END PUBLIC KEY-----"; + return this.fixKey(key, prefix, endfix) + } +}; + +function getProxyUrl() { + if (typeof getProxy === "function") { + return getProxy(true) + } else { + return "http://127.0.0.1:9978/proxy?do=js" + } +} +function fixAdM3u8(m3u8_text, m3u8_url, ad_remove) { + if (!m3u8_text && !m3u8_url || !m3u8_text && m3u8_url && !m3u8_url.startsWith("http")) { + return "" + } + if (!m3u8_text) { + log("m3u8_url:" + m3u8_url); + m3u8_text = request(m3u8_url) + } + log("len(m3u8_text):" + m3u8_text.length); + if (!ad_remove) { + return m3u8_text + } + if (ad_remove.startsWith("reg:")) { + ad_remove = ad_remove.slice(4) + } else if (ad_remove.startsWith("js:")) { + ad_remove = ad_remove.slice(3) + } + let m3u8_start = m3u8_text.slice(0, m3u8_text.indexOf("#EXTINF")) + .trim(); + let m3u8_body = m3u8_text.slice(m3u8_text.indexOf("#EXTINF"), m3u8_text.indexOf("#EXT-X-ENDLIST")) + .trim(); + let m3u8_end = m3u8_text.slice(m3u8_text.indexOf("#EXT-X-ENDLIST")) + .trim(); + let murls = []; + let m3_body_list = m3u8_body.split("\n"); + let m3_len = m3_body_list.length; + let i = 0; + while (i < m3_len) { + let mi = m3_body_list[i]; + let mi_1 = m3_body_list[i + 1]; + if (mi.startsWith("#EXTINF")) { + murls.push([mi, mi_1].join("&")); + i += 2 + } else if (mi.startsWith("#EXT-X-DISCONTINUITY")) { + let mi_2 = m3_body_list[i + 2]; + murls.push([mi, mi_1, mi_2].join("&")); + i += 3 + } else { + break + } + } + let new_m3u8_body = []; + for (let murl of murls) { + if (ad_remove && new RegExp(ad_remove) + .test(murl)) {} else { + let murl_list = murl.split("&"); + if (!murl_list[murl_list.length - 1].startsWith("http") && m3u8_url.startsWith("http")) { + murl_list[murl_list.length - 1] = urljoin(m3u8_url, murl_list[murl_list.length - 1]) + } + murl_list.forEach(it => { + new_m3u8_body.push(it) + }) + } + } + new_m3u8_body = new_m3u8_body.join("\n") + .trim(); + m3u8_text = [m3u8_start, new_m3u8_body, m3u8_end].join("\n") + .trim(); + return m3u8_text +} +function fixAdM3u8Ai(m3u8_url) { + let ts = (new Date) + .getTime(); + + function b(s1, s2) { + let i = 0; + while (i < s1.length) { + if (s1[i] !== s2[i]) { + break + } + i++ + } + return i + } + function reverseString(str) { + return str.split("") + .reverse() + .join("") + } + let m3u8 = request(m3u8_url); + m3u8 = m3u8.trim() + .split("\n") + .map(it => it.startsWith("#") ? it : urljoin(m3u8_url, it)) + .join("\n"); + let last_url = m3u8.split("\n") + .slice(-1)[0]; + if (last_url.includes(".m3u8") && last_url !== m3u8_url) { + m3u8_url = last_url; + m3u8 = request(m3u8_url) + } + let s = m3u8.trim() + .split("\n") + .filter(it => it.trim()) + .join("\n"); + let ss = s.split("\n"); + let firststr = ss.find(x => !x.startsWith("#")); + let maxl = 0; + let firststrlen = firststr.length; + let ml = Math.round(ss.length / 2) + .toString() + .length; + let laststr = ss.toReversed() + .find(x => { + if (!x.startsWith("#")) { + let k = b(reverseString(firststr), reverseString(x)); + maxl = b(firststr, x); + if (firststrlen - maxl <= ml + k) { + return true + } + } + return false + }); + log("最后一条切片:" + laststr); + let ad_urls = []; + for (let i = 0; i < ss.length; i++) { + let s = ss[i]; + if (!s.startsWith("#")) { + if (b(firststr, s) < maxl) { + ad_urls.push(s); + ss.splice(i - 1, 2); + i = i - 2 + } else { + ss[i] = urljoin(m3u8_url, s) + } + } else { + ss[i] = s.replace(/URI=\"(.*)\"/, 'URI="' + urljoin(m3u8_url, "$1") + '"') + } + } + log("处理的m3u8地址:" + m3u8_url); + log("----广告地址----"); + log(ad_urls); + m3u8 = ss.join("\n"); + log("处理耗时:" + ((new Date) + .getTime() - ts) + .toString()); + return m3u8 +} +function forceOrder(lists, key, option) { + let start = Math.floor(lists.length / 2); + let end = Math.min(lists.length - 1, start + 1); + if (start >= end) { + return lists + } + let first = lists[start]; + let second = lists[end]; + if (key) { + try { + first = first[key]; + second = second[key] + } catch (e) {} + } + if (option && typeof option === "function") { + try { + first = option(first); + second = option(second) + } catch (e) {} + } + first += ""; + second += ""; + if (first.match(/(\d+)/) && second.match(/(\d+)/)) { + let num1 = Number(first.match(/(\d+)/)[1]); + let num2 = Number(second.match(/(\d+)/)[1]); + if (num1 > num2) { + lists.reverse() + } + } + return lists +} +let VODS = []; +let VOD = {}; +let TABS = []; +let LISTS = []; +globalThis.encodeUrl = urlencode; +globalThis.urlencode = urlencode; + +function urljoin(fromPath, nowPath) { + fromPath = fromPath || ""; + nowPath = nowPath || ""; + return joinUrl(fromPath, nowPath) +} +var urljoin2 = urljoin; +const defaultParser = { + pdfh: pdfh, + pdfa: pdfa, + pd: pd +}; + +function pdfh2(html, parse) { + let html2 = html; + try { + if (typeof html !== "string") { + html2 = html.rr(html.ele) + .toString() + } + } catch (e) { + print("html对象转文本发生了错误:" + e.message) + } + let result = defaultParser.pdfh(html2, parse); + let option = parse.includes("&&") ? parse.split("&&") + .slice(-1)[0] : parse.split(" ") + .slice(-1)[0]; + if (/style/.test(option.toLowerCase()) && /url\(/.test(result)) { + try { + result = result.match(/url\((.*?)\)/)[1]; + result = result.replace(/^['|"](.*)['|"]$/, "$1") + } catch (e) {} + } + return result +} +function pdfa2(html, parse) { + let html2 = html; + try { + if (typeof html !== "string") { + html2 = html.rr(html.ele) + .toString() + } + } catch (e) { + print("html对象转文本发生了错误:" + e.message) + } + return defaultParser.pdfa(html2, parse) +} +function pd2(html, parse, uri) { + let ret = pdfh2(html, parse); + if (typeof uri === "undefined" || !uri) { + uri = "" + } + if (DOM_CHECK_ATTR.test(parse) && !SPECIAL_URL.test(ret)) { + if (/http/.test(ret)) { + ret = ret.slice(ret.indexOf("http")) + } else { + ret = urljoin(MY_URL, ret) + } + } + return ret +} +const parseTags = { + jsp: { + pdfh: pdfh2, + pdfa: pdfa2, + pd: pd2 + }, + json: { + pdfh(html, parse) { + if (!parse || !parse.trim()) { + return "" + } + if (typeof html === "string") { + html = JSON.parse(html) + } + parse = parse.trim(); + if (!parse.startsWith("$.")) { + parse = "$." + parse + } + parse = parse.split("||"); + for (let ps of parse) { + let ret = cheerio.jp(ps, html); + if (Array.isArray(ret)) { + ret = ret[0] || "" + } else { + ret = ret || "" + } + if (ret && typeof ret !== "string") { + ret = ret.toString() + } + if (ret) { + return ret + } + } + return "" + }, pdfa(html, parse) { + if (!parse || !parse.trim()) { + return "" + } + if (typeof html === "string") { + html = JSON.parse(html) + } + parse = parse.trim(); + if (!parse.startsWith("$.")) { + parse = "$." + parse + } + let ret = cheerio.jp(parse, html); + if (Array.isArray(ret) && Array.isArray(ret[0]) && ret.length === 1) { + return ret[0] || [] + } + return ret || [] + }, pd(html, parse) { + let ret = parseTags.json.pdfh(html, parse); + if (ret) { + return urljoin(MY_URL, ret) + } + return ret + } + }, + jq: { + pdfh(html, parse) { + if (!html || !parse || !parse.trim()) { + return "" + } + parse = parse.trim(); + let result = defaultParser.pdfh(html, parse); + return result + }, pdfa(html, parse) { + if (!html || !parse || !parse.trim()) { + return [] + } + parse = parse.trim(); + let result = defaultParser.pdfa(html, parse); + print(`pdfa解析${parse}=>${result.length}`); + return result + }, pd(html, parse, base_url) { + if (!html || !parse || !parse.trim()) { + return "" + } + parse = parse.trim(); + base_url = base_url || MY_URL; + return defaultParser.pd(html, parse, base_url) + } + }, + getParse(p0) { + if (p0.startsWith("jsp:")) { + return this.jsp + } else if (p0.startsWith("json:")) { + return this.json + } else if (p0.startsWith("jq:")) { + return this.jq + } else { + return this.jq + } + } +}; +const stringify = JSON.stringify; +const jsp = parseTags.jsp; +const jq = parseTags.jq; + +function readFile(filePath) { + filePath = filePath || "./uri.min.js"; + var fd = os.open(filePath); + var buffer = new ArrayBuffer(1024); + var len = os.read(fd, buffer, 0, 1024); + console.log(len); + let text = String.fromCharCode.apply(null, new Uint8Array(buffer)); + console.log(text); + return text +} +function dealJson(html) { + try { + html = html.trim(); + if (!(html.startsWith("{") && html.endsWith("}") || html.startsWith("[") && html.endsWith("]"))) { + html = "{" + html.match(/.*?\{(.*)\}/m)[1] + "}" + } + } catch (e) {} + try { + html = JSON.parse(html) + } catch (e) {} + return html +} +var OcrApi = { + api: OCR_API, + classification: function(img) { + let code = ""; + try { + log("通过drpy_ocr验证码接口过验证..."); + let html = request(OCR_API, { + data: { + img: img + }, + headers: { + "User-Agent": PC_UA + }, + method: "POST" + }, true); + code = html || "" + } catch (e) { + log(`OCR识别验证码发生错误:${e.message}`) + } + return code + } +}; + +function verifyCode(url) { + let cnt = 0; + let host = getHome(url); + let cookie = ""; + while (cnt < OCR_RETRY) { + try { + let yzm_url = `${host}/index.php/verify/index.html`; + console.log(`验证码链接:${yzm_url}`); + let hhtml = request(yzm_url, { + withHeaders: true, + toBase64: true + }, true); + let json = JSON.parse(hhtml); + if (!cookie) { + let setCk = Object.keys(json) + .find(it => it.toLowerCase() === "set-cookie"); + cookie = setCk ? json[setCk].split(";")[0] : "" + } + console.log("cookie:" + cookie); + let img = json.body; + let code = OcrApi.classification(img); + console.log(`第${cnt+1}次验证码识别结果:${code}`); + let submit_url = `${host}/index.php/ajax/verify_check?type=search&verify=${code}`; + console.log(submit_url); + let html = request(submit_url, { + headers: { + Cookie: cookie, + "User-Agent": MOBILE_UA + }, + method: "POST" + }); + html = JSON.parse(html); + if (html.msg === "ok") { + console.log(`第${cnt+1}次验证码提交成功`); + return cookie + } else if (html.msg !== "ok" && cnt + 1 >= OCR_RETRY) { + cookie = "" + } + } catch (e) { + console.log(`第${cnt+1}次验证码提交失败:${e.message}`); + if (cnt + 1 >= OCR_RETRY) { + cookie = "" + } + } + cnt += 1 + } + return cookie +} +function setItem(k, v) { + local.set(RKEY, k, v); + console.log(`规则${RKEY}设置${k} => ${v}`) +} +function getItem(k, v) { + return local.get(RKEY, k) || v +} +function clearItem(k) { + local.delete(RKEY, k) +} +function getHome(url) { + if (!url) { + return "" + } + let tmp = url.split("//"); + url = tmp[0] + "//" + tmp[1].split("/")[0]; + try { + url = decodeURIComponent(url) + } catch (e) {} + return url +} +function buildUrl(url, obj) { + obj = obj || {}; + if (url.indexOf("?") < 0) { + url += "?" + } + let param_list = []; + let keys = Object.keys(obj); + keys.forEach(it => { + param_list.push(it + "=" + obj[it]) + }); + let prs = param_list.join("&"); + if (keys.length > 0 && !url.endsWith("?")) { + url += "&" + } + url += prs; + return url +} +function require(url) { + eval(request(url)) +} +function request(url, obj, ocr_flag) { + ocr_flag = ocr_flag || false; + if (typeof obj === "undefined" || !obj || obj === {}) { + if (!fetch_params || !fetch_params.headers) { + let headers = { + "User-Agent": MOBILE_UA + }; + if (rule.headers) { + Object.assign(headers, rule.headers) + } + if (!fetch_params) { + fetch_params = {} + } + fetch_params.headers = headers + } + if (!fetch_params.headers.Referer) { + fetch_params.headers.Referer = getHome(url) + } + obj = fetch_params + } else { + let headers = obj.headers || {}; + let keys = Object.keys(headers) + .map(it => it.toLowerCase()); + if (!keys.includes("user-agent")) { + headers["User-Agent"] = MOBILE_UA + } + if (!keys.includes("referer")) { + headers["Referer"] = getHome(url) + } + obj.headers = headers + } + if (rule.encoding && rule.encoding !== "utf-8" && !ocr_flag) { + if (!obj.headers.hasOwnProperty("Content-Type") && !obj.headers.hasOwnProperty("content-type")) { + obj.headers["Content-Type"] = "text/html; charset=" + rule.encoding + } + } + if (typeof obj.body != "undefined" && obj.body && typeof obj.body === "string") { + if (!obj.headers.hasOwnProperty("Content-Type") && !obj.headers.hasOwnProperty("content-type")) { + obj.headers["Content-Type"] = "application/x-www-form-urlencoded; charset=" + rule.encoding + } + } else if (typeof obj.body != "undefined" && obj.body && typeof obj.body === "object") { + obj.data = obj.body; + delete obj.body + } + if (!url) { + return obj.withHeaders ? "{}" : "" + } + if (obj.toBase64) { + obj.buffer = 2; + delete obj.toBase64 + } + if (obj.redirect === false) { + obj.redirect = 0 + } + console.log(JSON.stringify(obj.headers)); + console.log("request:" + url + `|method:${obj.method||"GET"}|body:${obj.body||""}`); + let res = req(url, obj); + let html = res.content || ""; + if (obj.withHeaders) { + let htmlWithHeaders = res.headers; + htmlWithHeaders.body = html; + return JSON.stringify(htmlWithHeaders) + } else { + return html + } +} +function post(url, obj) { + obj.method = "POST"; + return request(url, obj) +} +fetch = request; +print = function(data) { + data = data || ""; + if (typeof data == "object" && Object.keys(data) + .length > 0) { + try { + data = JSON.stringify(data); + console.log(data) + } catch (e) { + console.log(typeof data + ":" + data.length); + return + } + } else if (typeof data == "object" && Object.keys(data) + .length < 1) { + console.log("null object") + } else { + console.log(data) + } +}; +log = print; + +function checkHtml(html, url, obj) { + if (/\?btwaf=/.test(html)) { + let btwaf = html.match(/btwaf(.*?)"/)[1]; + url = url.split("#")[0] + "?btwaf" + btwaf; + print("宝塔验证访问链接:" + url); + html = request(url, obj) + } + return html +} +function getCode(url, obj) { + let html = request(url, obj); + html = checkHtml(html, url, obj); + return html +} +function getHtml(url) { + let obj = {}; + if (rule.headers) { + obj.headers = rule.headers + } + let cookie = getItem(RULE_CK, ""); + if (cookie) { + if (obj.headers && !Object.keys(obj.headers) + .map(it => it.toLowerCase()) + .includes("cookie")) { + log("历史无cookie,新增过验证后的cookie"); + obj.headers["Cookie"] = cookie + } else if (obj.headers && obj.headers.cookie && obj.headers.cookie !== cookie) { + obj.headers["Cookie"] = cookie; + log("历史有小写过期的cookie,更新过验证后的cookie") + } else if (obj.headers && obj.headers.Cookie && obj.headers.Cookie !== cookie) { + obj.headers["Cookie"] = cookie; + log("历史有大写过期的cookie,更新过验证后的cookie") + } else if (!obj.headers) { + obj.headers = { + Cookie: cookie + }; + log("历史无headers,更新过验证后的含cookie的headers") + } + } + let html = getCode(url, obj); + return html +} +function homeParse(homeObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let classes = []; + if (homeObj.class_name && homeObj.class_url) { + let names = homeObj.class_name.split("&"); + let urls = homeObj.class_url.split("&"); + let cnt = Math.min(names.length, urls.length); + for (let i = 0; i < cnt; i++) { + classes.push({ + type_id: urls[i], + type_name: names[i] + }) + } + } + if (homeObj.class_parse) { + if (homeObj.class_parse.startsWith("js:")) { + var input = homeObj.MY_URL; + try { + eval(homeObj.class_parse.replace("js:", "")); + if (Array.isArray(input)) { + classes = input + } + } catch (e) { + log("通过js动态获取分类发生了错误:" + e.message) + } + } else { + let p = homeObj.class_parse.split(";"); + let p0 = p[0]; + let _ps = parseTags.getParse(p0); + let is_json = p0.startsWith("json:"); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + MY_URL = rule.url; + if (is_json) { + try { + let cms_cate_url = homeObj.MY_URL.replace("ac=detail", "ac=list"); + let html = getHtml(cms_cate_url); + if (html) { + if (cms_cate_url === homeObj.MY_URL) { + homeHtmlCache = html + } + let list = _pdfa(html, p0.replace("json:", "")); + if (list && list.length > 0) { + classes = list + } + } + } catch (e) { + console.log(e.message) + } + } else if (p.length >= 3 && !is_json) { + try { + let html = getHtml(homeObj.MY_URL); + if (html) { + homeHtmlCache = html; + let list = _pdfa(html, p0); + if (list && list.length > 0) { + list.forEach((it, idex) => { + try { + let name = _pdfh(it, p[1]); + if (homeObj.cate_exclude && new RegExp(homeObj.cate_exclude) + .test(name)) { + return + } + let url = _pd(it, p[2]); + if (p.length > 3 && p[3]) { + let exp = new RegExp(p[3]); + url = url.match(exp)[1] + } + classes.push({ + type_id: url.trim(), + type_name: name.trim() + }) + } catch (e) { + console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`) + } + }) + } + } + } catch (e) { + console.log(e.message) + } + } + } + } + classes = classes.filter(it => !homeObj.cate_exclude || !new RegExp(homeObj.cate_exclude) + .test(it.type_name)); + let resp = { + class: classes + }; + if (homeObj.filter) { + resp.filters = homeObj.filter + } + console.log(JSON.stringify(resp)); + return JSON.stringify(resp) +} +function getPP(p, pn, pp, ppn) { + try { + let ps = p[pn] === "*" && pp.length > ppn ? pp[ppn] : p[pn]; + return ps + } catch (e) { + return "" + } +} +function homeVodParse(homeVodObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let d = []; + MY_URL = homeVodObj.homeUrl; + console.log(MY_URL); + let t1 = (new Date) + .getTime(); + let p = homeVodObj.推荐; + print("p:" + p); + if (p === "*" && rule.一级) { + p = rule.一级; + homeVodObj.double = false + } + if (!p || typeof p !== "string") { + return "{}" + } + p = p.trim(); + let pp = rule.一级.split(";"); + if (p.startsWith("js:")) { + const TYPE = "home"; + var input = MY_URL; + HOST = rule.host; + eval(p.replace("js:", "")); + d = VODS + } else { + p = p.split(";"); + if (!homeVodObj.double && p.length < 5) { + return "{}" + } else if (homeVodObj.double && p.length < 6) { + return "{}" + } + let p0 = getPP(p, 0, pp, 0); + let _ps = parseTags.getParse(p0); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + let is_json = p0.startsWith("json:"); + p0 = p0.replace(/^(jsp:|json:|jq:)/, ""); + let html = homeHtmlCache || getHtml(MY_URL); + homeHtmlCache = undefined; + if (is_json) { + html = dealJson(html) + } + try { + console.log("double:" + homeVodObj.double); + if (homeVodObj.double) { + let items = _pdfa(html, p0); + let p1 = getPP(p, 1, pp, 0); + let p2 = getPP(p, 2, pp, 1); + let p3 = getPP(p, 3, pp, 2); + let p4 = getPP(p, 4, pp, 3); + let p5 = getPP(p, 5, pp, 4); + let p6 = getPP(p, 6, pp, 5); + for (let item of items) { + let items2 = _pdfa(item, p1); + for (let item2 of items2) { + try { + let title = _pdfh(item2, p2); + let img = ""; + try { + img = _pd(item2, p3) + } catch (e) {} + let desc = ""; + try { + desc = _pdfh(item2, p4) + } catch (e) {} + let links = []; + for (let _p5 of p5.split("+")) { + let link = !homeVodObj.detailUrl ? _pd(item2, _p5, MY_URL) : _pdfh(item2, _p5); + links.push(link) + } + let content; + if (p.length > 6 && p[6]) { + content = _pdfh(item2, p6) + } else { + content = "" + } + let vid = links.join("$"); + if (rule.二级 === "*") { + vid = vid + "@@" + title + "@@" + img + } + let vod = { + vod_name: title, + vod_pic: img, + vod_remarks: desc, + vod_content: content, + vod_id: vid + }; + d.push(vod) + } catch (e) { + console.log("首页列表双层定位处理发生错误:" + e.message) + } + } + } + } else { + let items = _pdfa(html, p0); + let p1 = getPP(p, 1, pp, 1); + let p2 = getPP(p, 2, pp, 2); + let p3 = getPP(p, 3, pp, 3); + let p4 = getPP(p, 4, pp, 4); + let p5 = getPP(p, 5, pp, 5); + for (let item of items) { + try { + let title = _pdfh(item, p1); + let img = ""; + try { + img = _pd(item, p2, MY_URL) + } catch (e) {} + let desc = ""; + try { + desc = _pdfh(item, p3) + } catch (e) {} + let links = []; + for (let _p5 of p4.split("+")) { + let link = !homeVodObj.detailUrl ? _pd(item, _p5, MY_URL) : _pdfh(item, _p5); + links.push(link) + } + let content; + if (p.length > 5 && p[5]) { + content = _pdfh(item, p5) + } else { + content = "" + } + let vid = links.join("$"); + if (rule.二级 === "*") { + vid = vid + "@@" + title + "@@" + img + } + let vod = { + vod_name: title, + vod_pic: img, + vod_remarks: desc, + vod_content: content, + vod_id: vid + }; + d.push(vod) + } catch (e) { + console.log("首页列表单层定位处理发生错误:" + e.message) + } + } + } + } catch (e) {} + } + let t2 = (new Date) + .getTime(); + console.log("加载首页推荐耗时:" + (t2 - t1) + "毫秒"); + if (rule.图片替换 && rule.图片替换.includes("=>")) { + let replace_from = rule.图片替换.split("=>")[0]; + let replace_to = rule.图片替换.split("=>")[1]; + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic.replace(replace_from, replace_to) + } + }) + } + if (rule.图片来源) { + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic + rule.图片来源 + } + }) + } + if (d.length > 0) { + print(d.slice(0, 2)) + } + return JSON.stringify({ + list: d + }) +} +function categoryParse(cateObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let p = cateObj.一级; + if (!p || typeof p !== "string") { + return "{}" + } + let d = []; + let url = cateObj.url.replaceAll("fyclass", cateObj.tid); + if (cateObj.pg === 1 && url.includes("[") && url.includes("]")) { + url = url.split("[")[1].split("]")[0] + } else if (cateObj.pg > 1 && url.includes("[") && url.includes("]")) { + url = url.split("[")[0] + } + if (rule.filter_url) { + if (!/fyfilter/.test(url)) { + if (!url.endsWith("&") && !rule.filter_url.startsWith("&")) { + url += "&" + } + url += rule.filter_url + } else { + url = url.replace("fyfilter", rule.filter_url) + } + let fl = cateObj.filter ? cateObj.extend : {}; + if (rule.filter_def && typeof rule.filter_def === "object") { + try { + if (Object.keys(rule.filter_def) + .length > 0 && rule.filter_def.hasOwnProperty(cateObj.tid)) { + let self_fl_def = rule.filter_def[cateObj.tid]; + if (self_fl_def && typeof self_fl_def === "object") { + let fl_def = JSON.parse(JSON.stringify(self_fl_def)); + fl = Object.assign(fl_def, fl) + } + } + } catch (e) { + print("合并不同分类对应的默认筛选出错:" + e.message) + } + } + let new_url; + new_url = cheerio.jinja2(url, { + fl: fl + }); + url = new_url + } + if (/fypage/.test(url)) { + if (url.includes("(") && url.includes(")")) { + let url_rep = url.match(/.*?\((.*)\)/)[1]; + let cnt_page = url_rep.replaceAll("fypage", cateObj.pg); + let cnt_pg = eval(cnt_page); + url = url.replaceAll(url_rep, cnt_pg) + .replaceAll("(", "") + .replaceAll(")", "") + } else { + url = url.replaceAll("fypage", cateObj.pg) + } + } + MY_URL = url; + console.log(MY_URL); + p = p.trim(); + const MY_CATE = cateObj.tid; + if (p.startsWith("js:")) { + var MY_FL = cateObj.extend; + const TYPE = "cate"; + var input = MY_URL; + const MY_PAGE = cateObj.pg; + var desc = ""; + eval(p.trim() + .replace("js:", "")); + d = VODS + } else { + p = p.split(";"); + if (p.length < 5) { + return "{}" + } + let _ps = parseTags.getParse(p[0]); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + let is_json = p[0].startsWith("json:"); + p[0] = p[0].replace(/^(jsp:|json:|jq:)/, ""); + try { + let html = getHtml(MY_URL); + if (html) { + if (is_json) { + html = dealJson(html) + } + let list = _pdfa(html, p[0]); + list.forEach(it => { + let links = p[4].split("+") + .map(p4 => { + return !rule.detailUrl ? _pd(it, p4, MY_URL) : _pdfh(it, p4) + }); + let link = links.join("$"); + let vod_id = rule.detailUrl ? MY_CATE + "$" + link : link; + let vod_name = _pdfh(it, p[1]) + .replace(/\n|\t/g, "") + .trim(); + let vod_pic = _pd(it, p[2], MY_URL); + if (rule.二级 === "*") { + vod_id = vod_id + "@@" + vod_name + "@@" + vod_pic + } + d.push({ + vod_id: vod_id, + vod_name: vod_name, + vod_pic: vod_pic, + vod_remarks: _pdfh(it, p[3]) + .replace(/\n|\t/g, "") + .trim() + }) + }) + } + } catch (e) { + console.log(e.message) + } + } + if (rule.图片替换 && rule.图片替换.includes("=>")) { + let replace_from = rule.图片替换.split("=>")[0]; + let replace_to = rule.图片替换.split("=>")[1]; + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic.replace(replace_from, replace_to) + } + }) + } + if (rule.图片来源) { + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic + rule.图片来源 + } + }) + } + if (d.length > 0) { + print(d.slice(0, 2)) + } + let pagecount = 0; + if (rule.pagecount && typeof rule.pagecount === "object" && rule.pagecount.hasOwnProperty(MY_CATE)) { + print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`); + pagecount = parseInt(rule.pagecount[MY_CATE]) + } + let nodata = { + list: [{ + vod_name: "无数据,防无限请求", + vod_id: "no_data", + vod_remarks: "不要点,会崩的", + vod_pic: "https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg" + }], + total: 1, + pagecount: 1, + page: 1, + limit: 1 + }; + let vod = d.length < 1 ? JSON.stringify(nodata) : JSON.stringify({ + page: parseInt(cateObj.pg), + pagecount: pagecount || 999, + limit: 20, + total: 999, + list: d + }); + return vod +} +function searchParse(searchObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let d = []; + if (!searchObj.searchUrl) { + return "{}" + } + let p = searchObj.搜索 === "*" && rule.一级 ? rule.一级 : searchObj.搜索; + if (!p || typeof p !== "string") { + return "{}" + } + p = p.trim(); + let pp = rule.一级.split(";"); + let url = searchObj.searchUrl.replaceAll("**", searchObj.wd); + if (searchObj.pg === 1 && url.includes("[") && url.includes("]") && !url.includes("#")) { + url = url.split("[")[1].split("]")[0] + } else if (searchObj.pg > 1 && url.includes("[") && url.includes("]") && !url.includes("#")) { + url = url.split("[")[0] + } + if (/fypage/.test(url)) { + if (url.includes("(") && url.includes(")")) { + let url_rep = url.match(/.*?\((.*)\)/)[1]; + let cnt_page = url_rep.replaceAll("fypage", searchObj.pg); + let cnt_pg = eval(cnt_page); + url = url.replaceAll(url_rep, cnt_pg) + .replaceAll("(", "") + .replaceAll(")", "") + } else { + url = url.replaceAll("fypage", searchObj.pg) + } + } + MY_URL = url; + console.log(MY_URL); + if (p.startsWith("js:")) { + const TYPE = "search"; + const MY_PAGE = searchObj.pg; + const KEY = searchObj.wd; + var input = MY_URL; + var detailUrl = rule.detailUrl || ""; + eval(p.trim() + .replace("js:", "")); + d = VODS + } else { + p = p.split(";"); + if (p.length < 5) { + return "{}" + } + let p0 = getPP(p, 0, pp, 0); + let _ps = parseTags.getParse(p0); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + let is_json = p0.startsWith("json:"); + p0 = p0.replace(/^(jsp:|json:|jq:)/, ""); + try { + let req_method = MY_URL.split(";") + .length > 1 ? MY_URL.split(";")[1].toLowerCase() : "get"; + let html; + if (req_method === "post") { + let rurls = MY_URL.split(";")[0].split("#"); + let rurl = rurls[0]; + let params = rurls.length > 1 ? rurls[1] : ""; + print(`post=》rurl:${rurl},params:${params}`); + let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let postData = { + body: params + }; + Object.assign(_fetch_params, postData); + html = post(rurl, _fetch_params) + } else if (req_method === "postjson") { + let rurls = MY_URL.split(";")[0].split("#"); + let rurl = rurls[0]; + let params = rurls.length > 1 ? rurls[1] : ""; + print(`postjson-》rurl:${rurl},params:${params}`); + try { + params = JSON.parse(params) + } catch (e) { + params = "{}" + } + let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let postData = { + body: params + }; + Object.assign(_fetch_params, postData); + html = post(rurl, _fetch_params) + } else { + html = getHtml(MY_URL) + } + if (html) { + if (/系统安全验证|输入验证码/.test(html)) { + let cookie = verifyCode(MY_URL); + if (cookie) { + console.log(`本次成功过验证,cookie:${cookie}`); + setItem(RULE_CK, cookie) + } else { + console.log(`本次自动过搜索验证失败,cookie:${cookie}`) + } + html = getHtml(MY_URL) + } + if (!html.includes(searchObj.wd)) { + console.log("搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码"); + console.log(html) + } + if (is_json) { + html = dealJson(html) + } + let list = _pdfa(html, p0); + let p1 = getPP(p, 1, pp, 1); + let p2 = getPP(p, 2, pp, 2); + let p3 = getPP(p, 3, pp, 3); + let p4 = getPP(p, 4, pp, 4); + let p5 = getPP(p, 5, pp, 5); + list.forEach(it => { + let links = p4.split("+") + .map(_p4 => { + return !rule.detailUrl ? _pd(it, _p4, MY_URL) : _pdfh(it, _p4) + }); + let link = links.join("$"); + let content; + if (p.length > 5 && p[5]) { + content = _pdfh(it, p5) + } else { + content = "" + } + let vod_id = link; + let vod_name = _pdfh(it, p1) + .replace(/\n|\t/g, "") + .trim(); + let vod_pic = _pd(it, p2, MY_URL); + if (rule.二级 === "*") { + vod_id = vod_id + "@@" + vod_name + "@@" + vod_pic + } + let ob = { + vod_id: vod_id, + vod_name: vod_name, + vod_pic: vod_pic, + vod_remarks: _pdfh(it, p3) + .replace(/\n|\t/g, "") + .trim(), + vod_content: content.replace(/\n|\t/g, "") + .trim() + }; + d.push(ob) + }) + } + } catch (e) { + print("搜索发生错误:" + e.message); + return "{}" + } + } + if (rule.图片替换 && rule.图片替换.includes("=>")) { + let replace_from = rule.图片替换.split("=>")[0]; + let replace_to = rule.图片替换.split("=>")[1]; + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic.replace(replace_from, replace_to) + } + }) + } + if (rule.图片来源) { + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic + rule.图片来源 + } + }) + } + return JSON.stringify({ + page: parseInt(searchObj.pg), + pagecount: 10, + limit: 20, + total: 100, + list: d + }) +} +function detailParse(detailObj) { + let t1 = (new Date) + .getTime(); + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let orId = detailObj.orId; + let vod_name = "片名"; + let vod_pic = ""; + let vod_id = orId; + if (rule.二级 === "*") { + let extra = orId.split("@@"); + vod_name = extra.length > 1 ? extra[1] : vod_name; + vod_pic = extra.length > 2 ? extra[2] : vod_pic + } + let vod = { + vod_id: vod_id, + vod_name: vod_name, + vod_pic: vod_pic, + type_name: "类型", + vod_year: "年份", + vod_area: "地区", + vod_remarks: "更新信息", + vod_actor: "主演", + vod_director: "导演", + vod_content: "简介" + }; + let p = detailObj.二级; + let url = detailObj.url; + let detailUrl = detailObj.detailUrl; + let fyclass = detailObj.fyclass; + let tab_exclude = detailObj.tab_exclude; + let html = detailObj.html || ""; + MY_URL = url; + if (detailObj.二级访问前) { + try { + print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`); + eval(detailObj.二级访问前.trim() + .replace("js:", "")) + } catch (e) { + print(`二级访问前执行代码出现错误:${e.message}`) + } + } + if (p === "*") { + vod.vod_play_from = "道长在线"; + vod.vod_remarks = detailUrl; + vod.vod_actor = "没有二级,只有一级链接直接嗅探播放"; + vod.vod_content = MY_URL; + vod.vod_play_url = "嗅探播放$" + MY_URL.split("@@")[0] + } else if (typeof p === "string" && p.trim() + .startsWith("js:")) { + const TYPE = "detail"; + var input = MY_URL; + var play_url = ""; + eval(p.trim() + .replace("js:", "")); + vod = VOD; + console.log(JSON.stringify(vod)) + } else if (p && typeof p === "object") { + let tt1 = (new Date) + .getTime(); + if (!html) { + html = getHtml(MY_URL) + } + print(`二级${MY_URL}仅获取源码耗时:${(new Date).getTime()-tt1}毫秒`); + let _ps; + if (p.is_json) { + print("二级是json"); + _ps = parseTags.json; + html = dealJson(html) + } else if (p.is_jsp) { + print("二级是jsp"); + _ps = parseTags.jsp + } else if (p.is_jq) { + print("二级是jq"); + _ps = parseTags.jq + } else { + print("二级默认jq"); + _ps = parseTags.jq + } + let tt2 = (new Date) + .getTime(); + print(`二级${MY_URL}获取并装载源码耗时:${tt2-tt1}毫秒`); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + if (p.title) { + let p1 = p.title.split(";"); + vod.vod_name = _pdfh(html, p1[0]) + .replace(/\n|\t/g, "") + .trim(); + let type_name = p1.length > 1 ? _pdfh(html, p1[1]) + .replace(/\n|\t/g, "") + .replace(/ /g, "") + .trim() : ""; + vod.type_name = type_name || vod.type_name + } + if (p.desc) { + try { + let p1 = p.desc.split(";"); + vod.vod_remarks = _pdfh(html, p1[0]) + .replace(/\n|\t/g, "") + .trim(); + vod.vod_year = p1.length > 1 ? _pdfh(html, p1[1]) + .replace(/\n|\t/g, "") + .trim() : ""; + vod.vod_area = p1.length > 2 ? _pdfh(html, p1[2]) + .replace(/\n|\t/g, "") + .trim() : ""; + vod.vod_actor = p1.length > 3 ? _pdfh(html, p1[3]) + .replace(/\n|\t/g, "") + .trim() : ""; + vod.vod_director = p1.length > 4 ? _pdfh(html, p1[4]) + .replace(/\n|\t/g, "") + .trim() : "" + } catch (e) {} + } + if (p.content) { + try { + let p1 = p.content.split(";"); + vod.vod_content = _pdfh(html, p1[0]) + .replace(/\n|\t/g, "") + .trim() + } catch (e) {} + } + if (p.img) { + try { + let p1 = p.img.split(";"); + vod.vod_pic = _pd(html, p1[0], MY_URL) + } catch (e) {} + } + let vod_play_from = "$$$"; + let playFrom = []; + if (p.重定向 && p.重定向.startsWith("js:")) { + print("开始执行重定向代码:" + p.重定向); + html = eval(p.重定向.replace("js:", "")) + } + if (p.tabs) { + if (p.tabs.startsWith("js:")) { + print("开始执行tabs代码:" + p.tabs); + var input = MY_URL; + eval(p.tabs.replace("js:", "")); + playFrom = TABS + } else { + let p_tab = p.tabs.split(";")[0]; + let vHeader = _pdfa(html, p_tab); + console.log(vHeader.length); + let tab_text = p.tab_text || "body&&Text"; + let new_map = {}; + for (let v of vHeader) { + let v_title = _pdfh(v, tab_text) + .trim(); + if (!v_title) { + v_title = "线路空" + } + console.log(v_title); + if (tab_exclude && new RegExp(tab_exclude) + .test(v_title)) { + continue + } + if (!new_map.hasOwnProperty(v_title)) { + new_map[v_title] = 1 + } else { + new_map[v_title] += 1 + } + if (new_map[v_title] > 1) { + v_title += Number(new_map[v_title] - 1) + } + playFrom.push(v_title) + } + } + console.log(JSON.stringify(playFrom)) + } else { + playFrom = ["道长在线"] + } + vod.vod_play_from = playFrom.join(vod_play_from); + let vod_play_url = "$$$"; + let vod_tab_list = []; + if (p.lists) { + if (p.lists.startsWith("js:")) { + print("开始执行lists代码:" + p.lists); + try { + var input = MY_URL; + var play_url = ""; + eval(p.lists.replace("js:", "")); + for (let i in LISTS) { + if (LISTS.hasOwnProperty(i)) { + try { + LISTS[i] = LISTS[i].map(it => it.split("$") + .slice(0, 2) + .join("$")) + } catch (e) { + print("格式化LISTS发生错误:" + e.message) + } + } + } + vod_play_url = LISTS.map(it => it.join("#")) + .join(vod_play_url) + } catch (e) { + print("js执行lists: 发生错误:" + e.message) + } + } else { + let list_text = p.list_text || "body&&Text"; + let list_url = p.list_url || "a&&href"; + let is_tab_js = p.tabs.trim() + .startsWith("js:"); + for (let i = 0; i < playFrom.length; i++) { + let tab_name = playFrom[i]; + let tab_ext = p.tabs.split(";") + .length > 1 && !is_tab_js ? p.tabs.split(";")[1] : ""; + let p1 = p.lists.replaceAll("#idv", tab_name) + .replaceAll("#id", i); + tab_ext = tab_ext.replaceAll("#idv", tab_name) + .replaceAll("#id", i); + let tabName = tab_ext ? _pdfh(html, tab_ext) : tab_name; + console.log(tabName); + let new_vod_list = []; + let tt1 = (new Date) + .getTime(); + if (typeof pdfl === "function") { + new_vod_list = pdfl(html, p1, list_text, list_url, MY_URL) + } else { + let vodList = []; + try { + vodList = _pdfa(html, p1); + console.log("len(vodList):" + vodList.length) + } catch (e) {} + for (let i = 0; i < vodList.length; i++) { + let it = vodList[i]; + new_vod_list.push(_pdfh(it, list_text) + .trim() + "$" + _pd(it, list_url, MY_URL)) + } + } + if (new_vod_list.length > 0) { + new_vod_list = forceOrder(new_vod_list, "", x => x.split("$")[0]); + console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date).getTime()-tt1}毫秒`) + } + let vlist = new_vod_list.join("#"); + vod_tab_list.push(vlist) + } + vod_play_url = vod_tab_list.join(vod_play_url) + } + } + vod.vod_play_url = vod_play_url + } + if (rule.图片替换 && rule.图片替换.includes("=>")) { + let replace_from = rule.图片替换.split("=>")[0]; + let replace_to = rule.图片替换.split("=>")[1]; + vod.vod_pic = vod.vod_pic.replace(replace_from, replace_to) + } + if (rule.图片来源 && vod.vod_pic && vod.vod_pic.startsWith("http")) { + vod.vod_pic = vod.vod_pic + rule.图片来源 + } + if (!vod.vod_id || vod_id.includes("$") && vod.vod_id !== vod_id) { + vod.vod_id = vod_id + } + let t2 = (new Date) + .getTime(); + console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`); + vod = vodDeal(vod); + return JSON.stringify({ + list: [vod] + }) +} +function get_tab_index(vod) { + let obj = {}; + vod.vod_play_from.split("$$$") + .forEach((it, index) => { + obj[it] = index + }); + return obj +} +function vodDeal(vod) { + let vod_play_from = vod.vod_play_from.split("$$$"); + let vod_play_url = vod.vod_play_url.split("$$$"); + let tab_removed_list = vod_play_from; + let tab_ordered_list = vod_play_from; + let tab_renamed_list = vod_play_from; + let tab_list = vod_play_from; + let play_ordered_list = vod_play_url; + if (rule.tab_remove && rule.tab_remove.length > 0 || rule.tab_order && rule.tab_order.length > 0) { + let tab_index_dict = get_tab_index(vod); + if (rule.tab_remove && rule.tab_remove.length > 0) { + tab_removed_list = vod_play_from.filter(it => !rule.tab_remove.includes(it)); + tab_list = tab_removed_list + } + if (rule.tab_order && rule.tab_order.length > 0) { + let tab_order = rule.tab_order; + tab_ordered_list = tab_removed_list.sort((a, b) => { + return (tab_order.indexOf(a) === -1 ? 9999 : tab_order.indexOf(a)) - (tab_order.indexOf(b) === -1 ? 9999 : tab_order.indexOf(b)) + }); + tab_list = tab_ordered_list + } + play_ordered_list = tab_list.map(it => vod_play_url[tab_index_dict[it]]) + } + if (rule.tab_rename && typeof rule.tab_rename === "object" & Object.keys(rule.tab_rename) + .length > 0) { + tab_renamed_list = tab_list.map(it => rule.tab_rename[it] || it); + tab_list = tab_renamed_list + } + vod.vod_play_from = tab_list.join("$$$"); + vod.vod_play_url = play_ordered_list.join("$$$"); + return vod +} +function tellIsJx(url) { + try { + let is_vip = !/\.(m3u8|mp4|m4a)$/.test(url.split("?")[0]) && 是否正版(url); + return is_vip ? 1 : 0 + } catch (e) { + return 1 + } +} +function playParse(playObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + MY_URL = playObj.url; + var MY_FLAG = playObj.flag; + if (!/http/.test(MY_URL)) { + try { + MY_URL = base64Decode(MY_URL) + } catch (e) {} + } + MY_URL = decodeURIComponent(MY_URL); + var input = MY_URL; + var flag = MY_FLAG; + let common_play = { + parse: 1, + url: input, + flag: flag, + jx: tellIsJx(input) + }; + let lazy_play; + if (!rule.play_parse || !rule.lazy) { + lazy_play = common_play + } else if (rule.play_parse && rule.lazy && typeof rule.lazy === "string") { + try { + let lazy_code = rule.lazy.replace("js:", "") + .trim(); + print("开始执行js免嗅=>" + lazy_code); + eval(lazy_code); + lazy_play = typeof input === "object" ? input : { + parse: 1, + jx: tellIsJx(input), + url: input + } + } catch (e) { + print("js免嗅错误:" + e.message); + lazy_play = common_play + } + } else { + lazy_play = common_play + } + if (Array.isArray(rule.play_json) && rule.play_json.length > 0) { + let web_url = lazy_play.url; + for (let pjson of rule.play_json) { + if (pjson.re && (pjson.re === "*" || web_url.match(new RegExp(pjson.re)))) { + if (pjson.json && typeof pjson.json === "object") { + let base_json = pjson.json; + lazy_play = Object.assign(lazy_play, base_json); + break + } + } + } + } else if (rule.play_json && !Array.isArray(rule.play_json)) { + let base_json = { + jx: 1, + parse: 1 + }; + lazy_play = Object.assign(lazy_play, base_json) + } else if (!rule.play_json) { + let base_json = { + jx: 0, + parse: 1 + }; + lazy_play = Object.assign(lazy_play, base_json) + } + console.log(JSON.stringify(lazy_play)); + return JSON.stringify(lazy_play) +} +function proxyParse(proxyObj) { + var input = proxyObj.params; + if (proxyObj.proxy_rule) { + log("准备执行本地代理规则:\n" + proxyObj.proxy_rule); + try { + eval(proxyObj.proxy_rule); + if (input && input !== proxyObj.params && Array.isArray(input) && input.length === 3) { + return input + } else { + return [404, "text/plain", "Not Found"] + } + } catch (e) { + return [500, "text/plain", "代理规则错误:" + e.message] + } + } else { + return [404, "text/plain", "Not Found"] + } +} +function isVideoParse(isVideoObj) { + var input = isVideoObj.url; + if (!isVideoObj.t) { + let re_matcher = new RegExp(isVideoObj.isVideo, "i"); + return re_matcher.test(input) + } else { + try { + eval(isVideoObj.isVideo); + if (typeof input === "boolean") { + return input + } else { + return false + } + } catch (e) { + log("执行嗅探规则发生错误:" + e.message); + return false + } + } +} +function init(ext) { + console.log("init"); + try { + let muban = 模板.getMubans(); + if (typeof ext == "object") { + rule = ext + } else if (typeof ext == "string") { + if (ext.startsWith("http")) { + let js = request(ext, { + method: "GET" + }); + if (js) { + eval(js.replace("var rule", "rule")) + } + } else { + eval(ext.replace("var rule", "rule")) + } + } + if (rule.模板 && muban.hasOwnProperty(rule.模板)) { + print("继承模板:" + rule.模板); + rule = Object.assign(muban[rule.模板], rule) + } + let rule_cate_excludes = (rule.cate_exclude || "") + .split("|") + .filter(it => it.trim()); + let rule_tab_excludes = (rule.tab_exclude || "") + .split("|") + .filter(it => it.trim()); + rule_cate_excludes = rule_cate_excludes.concat(CATE_EXCLUDE.split("|") + .filter(it => it.trim())); + rule_tab_excludes = rule_tab_excludes.concat(TAB_EXCLUDE.split("|") + .filter(it => it.trim())); + rule.cate_exclude = rule_cate_excludes.join("|"); + rule.tab_exclude = rule_tab_excludes.join("|"); + rule.host = (rule.host || "") + .rstrip("/"); + HOST = rule.host; + if (rule.hostJs) { + console.log(`检测到hostJs,准备执行...`); + try { + eval(rule.hostJs); + rule.host = HOST.rstrip("/") + } catch (e) { + console.log(`执行${rule.hostJs}获取host发生错误:` + e.message) + } + } + rule.url = rule.url || ""; + rule.double = rule.double || false; + rule.homeUrl = rule.homeUrl || ""; + rule.detailUrl = rule.detailUrl || ""; + rule.searchUrl = rule.searchUrl || ""; + rule.homeUrl = rule.host && rule.homeUrl ? urljoin(rule.host, rule.homeUrl) : rule.homeUrl || rule.host; + rule.homeUrl = cheerio.jinja2(rule.homeUrl, { + rule: rule + }); + rule.detailUrl = rule.host && rule.detailUrl ? urljoin(rule.host, rule.detailUrl) : rule.detailUrl; + rule.二级访问前 = rule.二级访问前 || ""; + if (rule.url.includes("[") && rule.url.includes("]")) { + let u1 = rule.url.split("[")[0]; + let u2 = rule.url.split("[")[1].split("]")[0]; + rule.url = rule.host && rule.url ? urljoin(rule.host, u1) + "[" + urljoin(rule.host, u2) + "]" : rule.url + } else { + rule.url = rule.host && rule.url ? urljoin(rule.host, rule.url) : rule.url + } + if (rule.searchUrl.includes("[") && rule.searchUrl.includes("]") && !rule.searchUrl.includes("#")) { + let u1 = rule.searchUrl.split("[")[0]; + let u2 = rule.searchUrl.split("[")[1].split("]")[0]; + rule.searchUrl = rule.host && rule.searchUrl ? urljoin(rule.host, u1) + "[" + urljoin(rule.host, u2) + "]" : rule.searchUrl + } else { + rule.searchUrl = rule.host && rule.searchUrl ? urljoin(rule.host, rule.searchUrl) : rule.searchUrl + } + rule.timeout = rule.timeout || 5e3; + rule.encoding = rule.编码 || rule.encoding || "utf-8"; + rule.search_encoding = rule.搜索编码 || rule.search_encoding || ""; + rule.图片来源 = rule.图片来源 || ""; + rule.图片替换 = rule.图片替换 || ""; + rule.play_json = rule.hasOwnProperty("play_json") ? rule.play_json : []; + rule.pagecount = rule.hasOwnProperty("pagecount") ? rule.pagecount : {}; + rule.proxy_rule = rule.hasOwnProperty("proxy_rule") ? rule.proxy_rule : ""; + rule.sniffer = rule.hasOwnProperty("sniffer") ? rule.sniffer : ""; + rule.sniffer = !! (rule.sniffer && rule.sniffer !== "0" && rule.sniffer !== "false"); + rule.isVideo = rule.hasOwnProperty("isVideo") ? rule.isVideo : ""; + rule.tab_remove = rule.hasOwnProperty("tab_remove") ? rule.tab_remove : []; + rule.tab_order = rule.hasOwnProperty("tab_order") ? rule.tab_order : []; + rule.tab_rename = rule.hasOwnProperty("tab_rename") ? rule.tab_rename : {}; + if (rule.headers && typeof rule.headers === "object") { + try { + let header_keys = Object.keys(rule.headers); + for (let k of header_keys) { + if (k.toLowerCase() === "user-agent") { + let v = rule.headers[k]; + console.log(v); + if (["MOBILE_UA", "PC_UA", "UC_UA", "IOS_UA", "UA"].includes(v)) { + rule.headers[k] = eval(v) + } + } else if (k.toLowerCase() === "cookie") { + let v = rule.headers[k]; + if (v && v.startsWith("http")) { + console.log(v); + try { + v = fetch(v); + console.log(v); + rule.headers[k] = v + } catch (e) { + console.log(`从${v}获取cookie发生错误:` + e.message) + } + } + } + } + } catch (e) { + console.log("处理headers发生错误:" + e.message) + } + } + rule_fetch_params = { + headers: rule.headers || false, + timeout: rule.timeout, + encoding: rule.encoding + }; + oheaders = rule.headers || {}; + RKEY = typeof key !== "undefined" && key ? key : "drpy_" + (rule.title || rule.host); + pre(); + init_test() + } catch (e) { + console.log("init_test发生错误:" + e.message) + } +} +let homeHtmlCache = undefined; + +function home(filter) { + console.log("home"); + let homeObj = { + filter: rule.filter || false, + MY_URL: rule.homeUrl, + class_name: rule.class_name || "", + class_url: rule.class_url || "", + class_parse: rule.class_parse || "", + cate_exclude: rule.cate_exclude + }; + return homeParse(homeObj) +} +function homeVod(params) { + console.log("homeVod"); + let homeVodObj = { + "推荐": rule.推荐, + double: rule.double, + homeUrl: rule.homeUrl, + detailUrl: rule.detailUrl + }; + return homeVodParse(homeVodObj) +} +function category(tid, pg, filter, extend) { + let cateObj = { + url: rule.url, + "一级": rule.一级, + tid: tid, + pg: parseInt(pg), + filter: filter, + extend: extend + }; + return categoryParse(cateObj) +} +function detail(vod_url) { + let orId = vod_url; + let fyclass = ""; + log("orId:" + orId); + if (vod_url.indexOf("$") > -1) { + let tmp = vod_url.split("$"); + fyclass = tmp[0]; + vod_url = tmp[1] + } + let detailUrl = vod_url.split("@@")[0]; + let url; + if (!detailUrl.startsWith("http") && !detailUrl.includes("/")) { + url = rule.detailUrl.replaceAll("fyid", detailUrl) + .replaceAll("fyclass", fyclass) + } else if (detailUrl.includes("/")) { + url = urljoin(rule.homeUrl, detailUrl) + } else { + url = detailUrl + } + let detailObj = { + orId: orId, + url: url, + "二级": rule.二级, + "二级访问前": rule.二级访问前, + detailUrl: detailUrl, + fyclass: fyclass, + tab_exclude: rule.tab_exclude + }; + return detailParse(detailObj) +} +function play(flag, id, flags) { + let playObj = { + url: id, + flag: flag, + flags: flags + }; + return playParse(playObj) +} +function search(wd, quick, pg) { + if (rule.search_encoding) { + if (rule.search_encoding.toLowerCase() !== "utf-8") { + wd = encodeStr(wd, rule.search_encoding) + } + } else if (rule.encoding && rule.encoding.toLowerCase() !== "utf-8") { + wd = encodeStr(wd, rule.encoding) + } + let searchObj = { + searchUrl: rule.searchUrl, + "搜索": rule.搜索, + wd: wd, + pg: pg || 1, + quick: quick + }; + return searchParse(searchObj) +} +function proxy(params) { + if (rule.proxy_rule && rule.proxy_rule.trim()) { + rule.proxy_rule = rule.proxy_rule.trim() + } + if (rule.proxy_rule.startsWith("js:")) { + rule.proxy_rule = rule.proxy_rule.replace("js:", "") + } + let proxyObj = { + params: params, + proxy_rule: rule.proxy_rule + }; + return proxyParse(proxyObj) +} +function sniffer() { + let enable_sniffer = rule.sniffer || false; + if (enable_sniffer) { + log("开始执行辅助嗅探代理规则...") + } + return enable_sniffer +} +function isVideo(url) { + let t = 0; + let is_video; + if (rule.isVideo && rule.isVideo.trim()) { + is_video = rule.isVideo.trim() + } + if (is_video.startsWith("js:")) { + is_video = is_video.replace("js:", ""); + t = 1 + } + let isVideoObj = { + url: url, + isVideo: is_video, + t: t + }; + let result = isVideoParse(isVideoObj); + if (result) { + log("成功执行辅助嗅探规则并检测到视频地址:\n" + rule.isVideo) + } + return result +} +function DRPY() { + return { + init: init, + home: home, + homeVod: homeVod, + category: category, + detail: detail, + play: play, + search: search, + proxy: proxy, + sniffer: sniffer, + isVideo: isVideo + } +} +export +default { + init: init, + home: home, + homeVod: homeVod, + category: category, + detail: detail, + play: play, + search: search, + proxy: proxy, + sniffer: sniffer, + isVideo: isVideo, + DRPY: DRPY +}; \ No newline at end of file diff --git a/摸鱼儿/api/drpy2.min.js b/摸鱼儿/api/drpy2.min.js new file mode 100644 index 0000000..437c853 --- /dev/null +++ b/摸鱼儿/api/drpy2.min.js @@ -0,0 +1 @@ +import cheerio from"assets://js/lib/cheerio.min.js";import"assets://js/lib/crypto-js.js";import 模板 from"./模板.js";import{gbkTool}from"./gbk.js";function init_test(){console.log("init_test_start");console.log("当前版本号:"+VERSION);console.log(RKEY);console.log(JSON.stringify(rule));console.log("init_test_end")}function pre(){if(typeof rule.预处理==="string"&&rule.预处理&&rule.预处理.trim()){let code=rule.预处理.trim();console.log("执行预处理代码:"+code);if(code.startsWith("js:")){code=code.replace("js:","")}try{eval(code)}catch(e){console.log("预处理执行失败:"+e.message)}}}let rule={};let vercode=typeof pdfl==="function"?"drpy2.1":"drpy2";const VERSION=vercode+" 3.9.49beta2 20231122";const MOBILE_UA="Mozilla/5.0 (Linux; Android 11; M2007J3SC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36";const PC_UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36";const UA="Mozilla/5.0";const UC_UA="Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36";const IOS_UA="Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1";const RULE_CK="cookie";const CATE_EXCLUDE="首页|留言|APP|下载|资讯|新闻|动态";const TAB_EXCLUDE="猜你|喜欢|下载|剧情|热播";const OCR_RETRY=3;const OCR_API="http://drpy.nokia.press:8028/ocr/drpy/text";if(typeof MY_URL==="undefined"){var MY_URL}var HOST;var RKEY;var fetch;var print;var log;var rule_fetch_params;var fetch_params;var oheaders;var _pdfh;var _pdfa;var _pd;const DOM_CHECK_ATTR=/(url|src|href|-original|-src|-play|-url|style)$/;const SPECIAL_URL=/^(ftp|magnet|thunder|ws):/;const NOADD_INDEX=/:eq|:lt|:gt|:first|:last|^body$|^#/;const URLJOIN_ATTR=/(url|src|href|-original|-src|-play|-url|style)$/;const SELECT_REGEX=/:eq|:lt|:gt|#/g;const SELECT_REGEX_A=/:eq|:lt|:gt/g;if(typeof Object.assign!="function"){Object.assign=function(){var target=arguments[0];for(var i=1;ithis.length){return false}else{return this.indexOf(search,start)!==-1}}}if(!Array.prototype.includes){Object.defineProperty(Array.prototype,"includes",{value:function(searchElement,fromIndex){if(this==null){throw new TypeError('"this" is null or not defined')}var o=Object(this);var len=o.length>>>0;if(len===0){return false}var n=fromIndex|0;var k=Math.max(n>=0?n:len-Math.abs(n),0);while(k=end){return lists}let first=lists[start];let second=lists[end];if(key){try{first=first[key];second=second[key]}catch(e){}}if(option&&typeof option==="function"){try{first=option(first);second=option(second)}catch(e){}}first+="";second+="";if(first.match(/(\d+)/)&&second.match(/(\d+)/)){let num1=Number(first.match(/(\d+)/)[1]);let num2=Number(second.match(/(\d+)/)[1]);if(num1>num2){lists.reverse()}}return lists}let VODS=[];let VOD={};let TABS=[];let LISTS=[];globalThis.encodeUrl=urlencode;globalThis.urlencode=urlencode;function urljoin(fromPath,nowPath){fromPath=fromPath||"";nowPath=nowPath||"";return joinUrl(fromPath,nowPath)}var urljoin2=urljoin;const defaultParser={pdfh:pdfh,pdfa:pdfa,pd:pd};function pdfh2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print("html对象转文本发生了错误:"+e.message)}let result=defaultParser.pdfh(html2,parse);let option=parse.includes("&&")?parse.split("&&").slice(-1)[0]:parse.split(" ").slice(-1)[0];if(/style/.test(option.toLowerCase())&&/url\(/.test(result)){try{result=result.match(/url\((.*?)\)/)[1];result=result.replace(/^['|"](.*)['|"]$/,"$1")}catch(e){}}return result}function pdfa2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print("html对象转文本发生了错误:"+e.message)}return defaultParser.pdfa(html2,parse)}function pd2(html,parse,uri){let ret=pdfh2(html,parse);if(typeof uri==="undefined"||!uri){uri=""}if(DOM_CHECK_ATTR.test(parse)&&!SPECIAL_URL.test(ret)){if(/http/.test(ret)){ret=ret.substr(ret.indexOf("http"))}else{ret=urljoin(MY_URL,ret)}}return ret}const parseTags={jsp:{pdfh:pdfh2,pdfa:pdfa2,pd:pd2},json:{pdfh(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}parse=parse.split("||");for(let ps of parse){let ret=cheerio.jp(ps,html);if(Array.isArray(ret)){ret=ret[0]||""}else{ret=ret||""}if(ret&&typeof ret!=="string"){ret=ret.toString()}if(ret){return ret}}return""},pdfa(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}let ret=cheerio.jp(parse,html);if(Array.isArray(ret)&&Array.isArray(ret[0])&&ret.length===1){return ret[0]||[]}return ret||[]},pd(html,parse){let ret=parseTags.json.pdfh(html,parse);if(ret){return urljoin(MY_URL,ret)}return ret}},jq:{pdfh(html,parse){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();let result=defaultParser.pdfh(html,parse);return result},pdfa(html,parse){if(!html||!parse||!parse.trim()){return[]}parse=parse.trim();let result=defaultParser.pdfa(html,parse);print(`pdfa解析${parse}=>${result.length}`);return result},pd(html,parse,base_url){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();base_url=base_url||MY_URL;return defaultParser.pd(html,parse,base_url)}},getParse(p0){if(p0.startsWith("jsp:")){return this.jsp}else if(p0.startsWith("json:")){return this.json}else if(p0.startsWith("jq:")){return this.jq}else{return this.jq}}};const stringify=JSON.stringify;const jsp=parseTags.jsp;const jq=parseTags.jq;function readFile(filePath){filePath=filePath||"./uri.min.js";var fd=os.open(filePath);var buffer=new ArrayBuffer(1024);var len=os.read(fd,buffer,0,1024);console.log(len);let text=String.fromCharCode.apply(null,new Uint8Array(buffer));console.log(text);return text}function dealJson(html){try{html=html.trim();if(!(html.startsWith("{")&&html.endsWith("}")||html.startsWith("[")&&html.endsWith("]"))){html="{"+html.match(/.*?\{(.*)\}/m)[1]+"}"}}catch(e){}try{html=JSON.parse(html)}catch(e){}return html}var OcrApi={api:OCR_API,classification:function(img){let code="";try{log("通过drpy_ocr验证码接口过验证...");let html=request(OCR_API,{data:{img:img},headers:{"User-Agent":PC_UA},method:"POST"},true);code=html||""}catch(e){log(`OCR识别验证码发生错误:${e.message}`)}return code}};function verifyCode(url){let cnt=0;let host=getHome(url);let cookie="";while(cntit.toLowerCase()==="set-cookie");cookie=setCk?json[setCk].split(";")[0]:""}console.log("cookie:"+cookie);let img=json.body;let code=OcrApi.classification(img);console.log(`第${cnt+1}次验证码识别结果:${code}`);let submit_url=`${host}/index.php/ajax/verify_check?type=search&verify=${code}`;console.log(submit_url);let html=request(submit_url,{headers:{Cookie:cookie,"User-Agent":MOBILE_UA},method:"POST"});html=JSON.parse(html);if(html.msg==="ok"){console.log(`第${cnt+1}次验证码提交成功`);return cookie}else if(html.msg!=="ok"&&cnt+1>=OCR_RETRY){cookie=""}}catch(e){console.log(`第${cnt+1}次验证码提交失败:${e.message}`);if(cnt+1>=OCR_RETRY){cookie=""}}cnt+=1}return cookie}function setItem(k,v){local.set(RKEY,k,v);console.log(`规则${RKEY}设置${k} => ${v}`)}function getItem(k,v){return local.get(RKEY,k)||v}function clearItem(k){local.delete(RKEY,k)}function getHome(url){if(!url){return""}let tmp=url.split("//");url=tmp[0]+"//"+tmp[1].split("/")[0];try{url=decodeURIComponent(url)}catch(e){}return url}function buildUrl(url,obj){obj=obj||{};if(url.indexOf("?")<0){url+="?"}let param_list=[];let keys=Object.keys(obj);keys.forEach(it=>{param_list.push(it+"="+obj[it])});let prs=param_list.join("&");if(keys.length>0&&!url.endsWith("?")){url+="&"}url+=prs;return url}function require(url){eval(request(url))}function request(url,obj,ocr_flag){ocr_flag=ocr_flag||false;if(typeof obj==="undefined"||!obj||obj==={}){if(!fetch_params||!fetch_params.headers){let headers={"User-Agent":MOBILE_UA};if(rule.headers){Object.assign(headers,rule.headers)}if(!fetch_params){fetch_params={}}fetch_params.headers=headers}if(!fetch_params.headers.Referer){fetch_params.headers.Referer=getHome(url)}obj=fetch_params}else{let headers=obj.headers||{};let keys=Object.keys(headers).map(it=>it.toLowerCase());if(!keys.includes("user-agent")){headers["User-Agent"]=MOBILE_UA}if(!keys.includes("referer")){headers["Referer"]=getHome(url)}obj.headers=headers}if(rule.encoding&&rule.encoding!=="utf-8"&&!ocr_flag){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="text/html; charset="+rule.encoding}}if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="string"){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="application/x-www-form-urlencoded; charset="+rule.encoding}}else if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="object"){obj.data=obj.body;delete obj.body}if(!url){return obj.withHeaders?"{}":""}if(obj.toBase64){obj.buffer=2;delete obj.toBase64}console.log(JSON.stringify(obj.headers));console.log("request:"+url+`|method:${obj.method||"GET"}|body:${obj.body||""}`);let res=req(url,obj);let html=res.content||"";if(obj.withHeaders){let htmlWithHeaders=res.headers;htmlWithHeaders.body=html;return JSON.stringify(htmlWithHeaders)}else{return html}}function post(url,obj){obj.method="POST";return request(url,obj)}fetch=request;print=function(data){data=data||"";if(typeof data=="object"&&Object.keys(data).length>0){try{data=JSON.stringify(data);console.log(data)}catch(e){console.log(typeof data+":"+data.length);return}}else if(typeof data=="object"&&Object.keys(data).length<1){console.log("null object")}else{console.log(data)}};log=print;function checkHtml(html,url,obj){if(/\?btwaf=/.test(html)){let btwaf=html.match(/btwaf(.*?)"/)[1];url=url.split("#")[0]+"?btwaf"+btwaf;print("宝塔验证访问链接:"+url);html=request(url,obj)}return html}function getCode(url,obj){let html=request(url,obj);html=checkHtml(html,url,obj);return html}function getHtml(url){let obj={};if(rule.headers){obj.headers=rule.headers}let cookie=getItem(RULE_CK,"");if(cookie){if(obj.headers&&!Object.keys(obj.headers).map(it=>it.toLowerCase()).includes("cookie")){log("历史无cookie,新增过验证后的cookie");obj.headers["Cookie"]=cookie}else if(obj.headers&&obj.headers.cookie&&obj.headers.cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有小写过期的cookie,更新过验证后的cookie")}else if(obj.headers&&obj.headers.Cookie&&obj.headers.Cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有大写过期的cookie,更新过验证后的cookie")}else if(!obj.headers){obj.headers={Cookie:cookie};log("历史无headers,更新过验证后的含cookie的headers")}}let html=getCode(url,obj);return html}function homeParse(homeObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let classes=[];if(homeObj.class_name&&homeObj.class_url){let names=homeObj.class_name.split("&");let urls=homeObj.class_url.split("&");let cnt=Math.min(names.length,urls.length);for(let i=0;i=3){try{let html=getHtml(homeObj.MY_URL);if(html){homeHtmlCache=html;let list=_pdfa(html,p[0]);if(list&&list.length>0){list.forEach((it,idex)=>{try{let name=_pdfh(it,p[1]);if(homeObj.cate_exclude&&new RegExp(homeObj.cate_exclude).test(name)){return}let url=_pd(it,p[2]);if(p.length>3&&p[3]){let exp=new RegExp(p[3]);url=url.match(exp)[1]}classes.push({type_id:url.trim(),type_name:name.trim()})}catch(e){console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`)}})}}}catch(e){console.log(e.message)}}}classes=classes.filter(it=>!homeObj.cate_exclude||!new RegExp(homeObj.cate_exclude).test(it.type_name));let resp={class:classes};if(homeObj.filter){resp.filters=homeObj.filter}console.log(JSON.stringify(resp));return JSON.stringify(resp)}function getPP(p,pn,pp,ppn){try{let ps=p[pn]==="*"&&pp.length>ppn?pp[ppn]:p[pn];return ps}catch(e){return""}}function homeVodParse(homeVodObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];MY_URL=homeVodObj.homeUrl;console.log(MY_URL);let t1=(new Date).getTime();let p=homeVodObj.推荐;print("p:"+p);if(p==="*"&&rule.一级){p=rule.一级;homeVodObj.double=false}if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级.split(";");if(p.startsWith("js:")){const TYPE="home";var input=MY_URL;HOST=rule.host;eval(p.replace("js:",""));d=VODS}else{p=p.split(";");if(!homeVodObj.double&&p.length<5){return"{}"}else if(homeVodObj.double&&p.length<6){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");let html=homeHtmlCache||getHtml(MY_URL);homeHtmlCache=undefined;if(is_json){html=dealJson(html)}try{console.log("double:"+homeVodObj.double);if(homeVodObj.double){let items=_pdfa(html,p0);let p1=getPP(p,1,pp,0);let p2=getPP(p,2,pp,1);let p3=getPP(p,3,pp,2);let p4=getPP(p,4,pp,3);let p5=getPP(p,5,pp,4);let p6=getPP(p,6,pp,5);for(let item of items){let items2=_pdfa(item,p1);for(let item2 of items2){try{let title=_pdfh(item2,p2);let img="";try{img=_pd(item2,p3)}catch(e){}let desc="";try{desc=_pdfh(item2,p4)}catch(e){}let links=[];for(let _p5 of p5.split("+")){let link=!homeVodObj.detailUrl?_pd(item2,_p5,MY_URL):_pdfh(item2,_p5);links.push(link)}let content;if(p.length>6&&p[6]){content=_pdfh(item2,p6)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log("首页列表双层定位处理发生错误:"+e.message)}}}}else{let items=_pdfa(html,p0);let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let p5=getPP(p,5,pp,5);for(let item of items){try{let title=_pdfh(item,p1);let img="";try{img=_pd(item,p2,MY_URL)}catch(e){}let desc="";try{desc=_pdfh(item,p3)}catch(e){}let links=[];for(let _p5 of p4.split("+")){let link=!homeVodObj.detailUrl?_pd(item,_p5,MY_URL):_pdfh(item,_p5);links.push(link)}let content;if(p.length>5&&p[5]){content=_pdfh(item,p5)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log("首页列表单层定位处理发生错误:"+e.message)}}}}catch(e){}}let t2=(new Date).getTime();console.log("加载首页推荐耗时:"+(t2-t1)+"毫秒");if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}return JSON.stringify({list:d})}function categoryParse(cateObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let p=cateObj.一级;if(!p||typeof p!=="string"){return"{}"}let d=[];let url=cateObj.url.replaceAll("fyclass",cateObj.tid);if(cateObj.pg===1&&url.includes("[")&&url.includes("]")){url=url.split("[")[1].split("]")[0]}else if(cateObj.pg>1&&url.includes("[")&&url.includes("]")){url=url.split("[")[0]}if(rule.filter_url){if(!/fyfilter/.test(url)){if(!url.endsWith("&")&&!rule.filter_url.startsWith("&")){url+="&"}url+=rule.filter_url}else{url=url.replace("fyfilter",rule.filter_url)}let fl=cateObj.filter?cateObj.extend:{};if(rule.filter_def&&typeof rule.filter_def==="object"){try{if(Object.keys(rule.filter_def).length>0&&rule.filter_def.hasOwnProperty(cateObj.tid)){let self_fl_def=rule.filter_def[cateObj.tid];if(self_fl_def&&typeof self_fl_def==="object"){let fl_def=JSON.parse(JSON.stringify(self_fl_def));fl=Object.assign(fl_def,fl)}}}catch(e){print("合并不同分类对应的默认筛选出错:"+e.message)}}let new_url;new_url=cheerio.jinja2(url,{fl:fl});url=new_url}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",cateObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.replaceAll("fypage",cateObj.pg)}}MY_URL=url;console.log(MY_URL);p=p.trim();const MY_CATE=cateObj.tid;if(p.startsWith("js:")){var MY_FL=cateObj.extend;const TYPE="cate";var input=MY_URL;const MY_PAGE=cateObj.pg;var desc="";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let _ps=parseTags.getParse(p[0]);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p[0].startsWith("json:");p[0]=p[0].replace(/^(jsp:|json:|jq:)/,"");try{let html=getHtml(MY_URL);if(html){if(is_json){html=dealJson(html)}let list=_pdfa(html,p[0]);list.forEach(it=>{let links=p[4].split("+").map(p4=>{return!rule.detailUrl?_pd(it,p4,MY_URL):_pdfh(it,p4)});let link=links.join("$");let vod_id=rule.detailUrl?MY_CATE+"$"+link:link;let vod_name=_pdfh(it,p[1]).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p[2],MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}d.push({vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p[3]).replace(/\n|\t/g,"").trim()})})}}catch(e){console.log(e.message)}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}let pagecount=0;if(rule.pagecount&&typeof rule.pagecount==="object"&&rule.pagecount.hasOwnProperty(MY_CATE)){print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`);pagecount=parseInt(rule.pagecount[MY_CATE])}let nodata={list:[{vod_name:"无数据,防无限请求",vod_id:"no_data",vod_remarks:"不要点,会崩的",vod_pic:"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"}],total:1,pagecount:1,page:1,limit:1};let vod=d.length<1?JSON.stringify(nodata):JSON.stringify({page:parseInt(cateObj.pg),pagecount:pagecount||999,limit:20,total:999,list:d});return vod}function searchParse(searchObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];if(!searchObj.searchUrl){return"{}"}let p=searchObj.搜索==="*"&&rule.一级?rule.一级:searchObj.搜索;if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级.split(";");let url=searchObj.searchUrl.replaceAll("**",searchObj.wd);if(searchObj.pg===1&&url.includes("[")&&url.includes("]")&&!url.includes("#")){url=url.split("[")[1].split("]")[0]}else if(searchObj.pg>1&&url.includes("[")&&url.includes("]")&&!url.includes("#")){url=url.split("[")[0]}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",searchObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.replaceAll("fypage",searchObj.pg)}}MY_URL=url;console.log(MY_URL);if(p.startsWith("js:")){const TYPE="search";const MY_PAGE=searchObj.pg;const KEY=searchObj.wd;var input=MY_URL;var detailUrl=rule.detailUrl||"";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");try{let req_method=MY_URL.split(";").length>1?MY_URL.split(";")[1].toLowerCase():"get";let html;if(req_method==="post"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`post=》rurl:${rurl},params:${params}`);let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else if(req_method==="postjson"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`postjson-》rurl:${rurl},params:${params}`);try{params=JSON.parse(params)}catch(e){params="{}"}let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else{html=getHtml(MY_URL)}if(html){if(/系统安全验证|输入验证码/.test(html)){let cookie=verifyCode(MY_URL);if(cookie){console.log(`本次成功过验证,cookie:${cookie}`);setItem(RULE_CK,cookie)}else{console.log(`本次自动过搜索验证失败,cookie:${cookie}`)}html=getHtml(MY_URL)}if(!html.includes(searchObj.wd)){console.log("搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码");console.log(html)}if(is_json){html=dealJson(html)}let list=_pdfa(html,p0);let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let p5=getPP(p,5,pp,5);list.forEach(it=>{let links=p4.split("+").map(_p4=>{return!rule.detailUrl?_pd(it,_p4,MY_URL):_pdfh(it,_p4)});let link=links.join("$");let content;if(p.length>5&&p[5]){content=_pdfh(it,p5)}else{content=""}let vod_id=link;let vod_name=_pdfh(it,p1).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p2,MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}let ob={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p3).replace(/\n|\t/g,"").trim(),vod_content:content.replace(/\n|\t/g,"").trim()};d.push(ob)})}}catch(e){print("搜索发生错误:"+e.message);return"{}"}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}return JSON.stringify({page:parseInt(searchObj.pg),pagecount:10,limit:20,total:100,list:d})}function detailParse(detailObj){let t1=(new Date).getTime();fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let orId=detailObj.orId;let vod_name="片名";let vod_pic="";let vod_id=orId;if(rule.二级==="*"){let extra=orId.split("@@");vod_name=extra.length>1?extra[1]:vod_name;vod_pic=extra.length>2?extra[2]:vod_pic}let vod={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,type_name:"类型",vod_year:"年份",vod_area:"地区",vod_remarks:"更新信息",vod_actor:"主演",vod_director:"导演",vod_content:"简介"};let p=detailObj.二级;let url=detailObj.url;let detailUrl=detailObj.detailUrl;let fyclass=detailObj.fyclass;let tab_exclude=detailObj.tab_exclude;let html=detailObj.html||"";MY_URL=url;if(detailObj.二级访问前){try{print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`);eval(detailObj.二级访问前.trim().replace("js:",""))}catch(e){print(`二级访问前执行代码出现错误:${e.message}`)}}if(p==="*"){vod.vod_play_from="道长在线";vod.vod_remarks=detailUrl;vod.vod_actor="没有二级,只有一级链接直接嗅探播放";vod.vod_content=MY_URL;vod.vod_play_url="嗅探播放$"+MY_URL.split("@@")[0]}else if(typeof p==="string"&&p.trim().startsWith("js:")){const TYPE="detail";var input=MY_URL;var play_url="";eval(p.trim().replace("js:",""));vod=VOD;console.log(JSON.stringify(vod))}else if(p&&typeof p==="object"){let tt1=(new Date).getTime();if(!html){html=getHtml(MY_URL)}print(`二级${MY_URL}仅获取源码耗时:${(new Date).getTime()-tt1}毫秒`);let _ps;if(p.is_json){print("二级是json");_ps=parseTags.json;html=dealJson(html)}else if(p.is_jsp){print("二级是jsp");_ps=parseTags.jsp}else if(p.is_jq){print("二级是jq");_ps=parseTags.jq}else{print("二级默认jq");_ps=parseTags.jq}let tt2=(new Date).getTime();print(`二级${MY_URL}获取并装载源码耗时:${tt2-tt1}毫秒`);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;if(p.title){let p1=p.title.split(";");vod.vod_name=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();let type_name=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").replace(/ /g,"").trim():"";vod.type_name=type_name||vod.type_name}if(p.desc){try{let p1=p.desc.split(";");vod.vod_remarks=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();vod.vod_year=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").trim():"";vod.vod_area=p1.length>2?_pdfh(html,p1[2]).replace(/\n|\t/g,"").trim():"";vod.vod_actor=p1.length>3?_pdfh(html,p1[3]).replace(/\n|\t/g,"").trim():"";vod.vod_director=p1.length>4?_pdfh(html,p1[4]).replace(/\n|\t/g,"").trim():""}catch(e){}}if(p.content){try{let p1=p.content.split(";");vod.vod_content=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim()}catch(e){}}if(p.img){try{let p1=p.img.split(";");vod.vod_pic=_pd(html,p1[0],MY_URL)}catch(e){}}let vod_play_from="$$$";let playFrom=[];if(p.重定向&&p.重定向.startsWith("js:")){print("开始执行重定向代码:"+p.重定向);html=eval(p.重定向.replace("js:",""))}if(p.tabs){if(p.tabs.startsWith("js:")){print("开始执行tabs代码:"+p.tabs);var input=MY_URL;eval(p.tabs.replace("js:",""));playFrom=TABS}else{let p_tab=p.tabs.split(";")[0];let vHeader=_pdfa(html,p_tab);console.log(vHeader.length);let tab_text=p.tab_text||"body&&Text";let new_map={};for(let v of vHeader){let v_title=_pdfh(v,tab_text).trim();console.log(v_title);if(tab_exclude&&new RegExp(tab_exclude).test(v_title)){continue}if(!new_map.hasOwnProperty(v_title)){new_map[v_title]=1}else{new_map[v_title]+=1}if(new_map[v_title]>1){v_title+=Number(new_map[v_title]-1)}playFrom.push(v_title)}}console.log(JSON.stringify(playFrom))}else{playFrom=["道长在线"]}vod.vod_play_from=playFrom.join(vod_play_from);let vod_play_url="$$$";let vod_tab_list=[];if(p.lists){if(p.lists.startsWith("js:")){print("开始执行lists代码:"+p.lists);try{var input=MY_URL;var play_url="";eval(p.lists.replace("js:",""));for(let i in LISTS){if(LISTS.hasOwnProperty(i)){try{LISTS[i]=LISTS[i].map(it=>it.split("$").slice(0,2).join("$"))}catch(e){print("格式化LISTS发生错误:"+e.message)}}}vod_play_url=LISTS.map(it=>it.join("#")).join(vod_play_url)}catch(e){print("js执行lists: 发生错误:"+e.message)}}else{let list_text=p.list_text||"body&&Text";let list_url=p.list_url||"a&&href";let is_tab_js=p.tabs.trim().startsWith("js:");for(let i=0;i1&&!is_tab_js?p.tabs.split(";")[1]:"";let p1=p.lists.replaceAll("#idv",tab_name).replaceAll("#id",i);tab_ext=tab_ext.replaceAll("#idv",tab_name).replaceAll("#id",i);let tabName=tab_ext?_pdfh(html,tab_ext):tab_name;console.log(tabName);let new_vod_list=[];let tt1=(new Date).getTime();if(typeof pdfl==="function"){new_vod_list=pdfl(html,p1,list_text,list_url,MY_URL)}else{let vodList=[];try{vodList=_pdfa(html,p1);console.log("len(vodList):"+vodList.length)}catch(e){}for(let i=0;i0){new_vod_list=forceOrder(new_vod_list,"",x=>x.split("$")[0]);console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date).getTime()-tt1}毫秒`)}let vlist=new_vod_list.join("#");vod_tab_list.push(vlist)}vod_play_url=vod_tab_list.join(vod_play_url)}}vod.vod_play_url=vod_play_url}if(rule.图片来源&&vod.vod_pic&&vod.vod_pic.startsWith("http")){vod.vod_pic=vod.vod_pic+rule.图片来源}if(!vod.vod_id||vod_id.includes("$")&&vod.vod_id!==vod_id){vod.vod_id=vod_id}let t2=(new Date).getTime();console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`);vod=vodDeal(vod);return JSON.stringify({list:[vod]})}function get_tab_index(vod){let obj={};vod.vod_play_from.split("$$$").forEach((it,index)=>{obj[it]=index});return obj}function vodDeal(vod){let vod_play_from=vod.vod_play_from.split("$$$");let vod_play_url=vod.vod_play_url.split("$$$");let tab_removed_list=vod_play_from;let tab_ordered_list=vod_play_from;let tab_renamed_list=vod_play_from;let tab_list=vod_play_from;let play_ordered_list=vod_play_url;if(rule.tab_remove&&rule.tab_remove.length>0||rule.tab_order&&rule.tab_order.length>0){let tab_index_dict=get_tab_index(vod);if(rule.tab_remove&&rule.tab_remove.length>0){tab_removed_list=vod_play_from.filter(it=>!rule.tab_remove.includes(it));tab_list=tab_removed_list}if(rule.tab_order&&rule.tab_order.length>0){let tab_order=rule.tab_order;tab_ordered_list=tab_removed_list.sort((a,b)=>{return(tab_order.indexOf(a)===-1?9999:tab_order.indexOf(a))-(tab_order.indexOf(b)===-1?9999:tab_order.indexOf(b))});tab_list=tab_ordered_list}play_ordered_list=tab_list.map(it=>vod_play_url[tab_index_dict[it]])}if(rule.tab_rename&&typeof rule.tab_rename==="object"&Object.keys(rule.tab_rename).length>0){tab_renamed_list=tab_list.map(it=>rule.tab_rename[it]||it);tab_list=tab_renamed_list}vod.vod_play_from=tab_list.join("$$$");vod.vod_play_url=play_ordered_list.join("$$$");return vod}function tellIsJx(url){try{let is_vip=!/\.(m3u8|mp4|m4a)$/.test(url.split("?")[0])&&是否正版(url);return is_vip?1:0}catch(e){return 1}}function playParse(playObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));MY_URL=playObj.url;if(!/http/.test(MY_URL)){try{MY_URL=base64Decode(MY_URL)}catch(e){}}MY_URL=decodeURIComponent(MY_URL);var input=MY_URL;let common_play={parse:1,url:input,jx:tellIsJx(input)};let lazy_play;if(!rule.play_parse||!rule.lazy){lazy_play=common_play}else if(rule.play_parse&&rule.lazy&&typeof rule.lazy==="string"){try{let lazy_code=rule.lazy.replace("js:","").trim();print("开始执行js免嗅=>"+lazy_code);eval(lazy_code);lazy_play=typeof input==="object"?input:{parse:1,jx:tellIsJx(input),url:input}}catch(e){print("js免嗅错误:"+e.message);lazy_play=common_play}}else{lazy_play=common_play}if(Array.isArray(rule.play_json)&&rule.play_json.length>0){let web_url=lazy_play.url;for(let pjson of rule.play_json){if(pjson.re&&(pjson.re==="*"||web_url.match(new RegExp(pjson.re)))){if(pjson.json&&typeof pjson.json==="object"){let base_json=pjson.json;lazy_play=Object.assign(lazy_play,base_json);break}}}}else if(rule.play_json&&!Array.isArray(rule.play_json)){let base_json={jx:1,parse:1};lazy_play=Object.assign(lazy_play,base_json)}else if(!rule.play_json){let base_json={jx:0,parse:1};lazy_play=Object.assign(lazy_play,base_json)}console.log(JSON.stringify(lazy_play));return JSON.stringify(lazy_play)}function proxyParse(proxyObj){var input=proxyObj.params;if(proxyObj.proxy_rule){log("准备执行本地代理规则:\n"+proxyObj.proxy_rule);try{eval(proxyObj.proxy_rule);if(input&&input!==proxyObj.params&&Array.isArray(input)&&input.length===3){return input}else{return[404,"text/plain","Not Found"]}}catch(e){return[500,"text/plain","代理规则错误:"+e.message]}}else{return[404,"text/plain","Not Found"]}}function isVideoParse(isVideoObj){var input=isVideoObj.url;if(!isVideoObj.t){let re_matcher=new RegExp(isVideoObj.isVideo,"i");return re_matcher.test(input)}else{try{eval(isVideoObj.isVideo);if(typeof input==="boolean"){return input}else{return false}}catch(e){log("执行嗅探规则发生错误:"+e.message);return false}}}function init(ext){console.log("init");try{let muban=模板.getMubans();if(typeof ext=="object"){rule=ext}else if(typeof ext=="string"){if(ext.startsWith("http")){let js=request(ext,{method:"GET"});if(js){eval(js.replace("var rule","rule"))}}else{eval(ext.replace("var rule","rule"))}}if(rule.模板&&muban.hasOwnProperty(rule.模板)){print("继承模板:"+rule.模板);rule=Object.assign(muban[rule.模板],rule)}let rule_cate_excludes=(rule.cate_exclude||"").split("|").filter(it=>it.trim());let rule_tab_excludes=(rule.tab_exclude||"").split("|").filter(it=>it.trim());rule_cate_excludes=rule_cate_excludes.concat(CATE_EXCLUDE.split("|").filter(it=>it.trim()));rule_tab_excludes=rule_tab_excludes.concat(TAB_EXCLUDE.split("|").filter(it=>it.trim()));rule.cate_exclude=rule_cate_excludes.join("|");rule.tab_exclude=rule_tab_excludes.join("|");rule.host=(rule.host||"").rstrip("/");HOST=rule.host;if(rule.hostJs){console.log(`检测到hostJs,准备执行...`);try{eval(rule.hostJs);rule.host=HOST.rstrip("/")}catch(e){console.log(`执行${rule.hostJs}获取host发生错误:`+e.message)}}rule.url=rule.url||"";rule.double=rule.double||false;rule.homeUrl=rule.homeUrl||"";rule.detailUrl=rule.detailUrl||"";rule.searchUrl=rule.searchUrl||"";rule.homeUrl=rule.host&&rule.homeUrl?urljoin(rule.host,rule.homeUrl):rule.homeUrl||rule.host;rule.detailUrl=rule.host&&rule.detailUrl?urljoin(rule.host,rule.detailUrl):rule.detailUrl;rule.二级访问前=rule.二级访问前||"";if(rule.url.includes("[")&&rule.url.includes("]")){let u1=rule.url.split("[")[0];let u2=rule.url.split("[")[1].split("]")[0];rule.url=rule.host&&rule.url?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.url}else{rule.url=rule.host&&rule.url?urljoin(rule.host,rule.url):rule.url}if(rule.searchUrl.includes("[")&&rule.searchUrl.includes("]")&&!rule.searchUrl.includes("#")){let u1=rule.searchUrl.split("[")[0];let u2=rule.searchUrl.split("[")[1].split("]")[0];rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.searchUrl}else{rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,rule.searchUrl):rule.searchUrl}rule.timeout=rule.timeout||5e3;rule.encoding=rule.编码||rule.encoding||"utf-8";rule.search_encoding=rule.搜索编码||rule.search_encoding||"";rule.图片来源=rule.图片来源||"";rule.play_json=rule.hasOwnProperty("play_json")?rule.play_json:[];rule.pagecount=rule.hasOwnProperty("pagecount")?rule.pagecount:{};rule.proxy_rule=rule.hasOwnProperty("proxy_rule")?rule.proxy_rule:"";rule.sniffer=rule.hasOwnProperty("sniffer")?rule.sniffer:"";rule.sniffer=!!(rule.sniffer&&rule.sniffer!=="0"&&rule.sniffer!=="false");rule.isVideo=rule.hasOwnProperty("isVideo")?rule.isVideo:"";rule.tab_remove=rule.hasOwnProperty("tab_remove")?rule.tab_remove:[];rule.tab_order=rule.hasOwnProperty("tab_order")?rule.tab_order:[];rule.tab_rename=rule.hasOwnProperty("tab_rename")?rule.tab_rename:{};if(rule.headers&&typeof rule.headers==="object"){try{let header_keys=Object.keys(rule.headers);for(let k of header_keys){if(k.toLowerCase()==="user-agent"){let v=rule.headers[k];console.log(v);if(["MOBILE_UA","PC_UA","UC_UA","IOS_UA","UA"].includes(v)){rule.headers[k]=eval(v)}}else if(k.toLowerCase()==="cookie"){let v=rule.headers[k];if(v&&v.startsWith("http")){console.log(v);try{v=fetch(v);console.log(v);rule.headers[k]=v}catch(e){console.log(`从${v}获取cookie发生错误:`+e.message)}}}}}catch(e){console.log("处理headers发生错误:"+e.message)}}rule_fetch_params={headers:rule.headers||false,timeout:rule.timeout,encoding:rule.encoding};oheaders=rule.headers||{};RKEY=typeof key!=="undefined"&&key?key:"drpy_"+(rule.title||rule.host);pre();init_test()}catch(e){console.log("init_test发生错误:"+e.message)}}let homeHtmlCache=undefined;function home(filter){console.log("home");let homeObj={filter:rule.filter||false,MY_URL:rule.homeUrl,class_name:rule.class_name||"",class_url:rule.class_url||"",class_parse:rule.class_parse||"",cate_exclude:rule.cate_exclude};return homeParse(homeObj)}function homeVod(params){console.log("homeVod");let homeVodObj={"推荐":rule.推荐,double:rule.double,homeUrl:rule.homeUrl,detailUrl:rule.detailUrl};return homeVodParse(homeVodObj)}function category(tid,pg,filter,extend){let cateObj={url:rule.url,"一级":rule.一级,tid:tid,pg:parseInt(pg),filter:filter,extend:extend};return categoryParse(cateObj)}function detail(vod_url){let orId=vod_url;let fyclass="";log("orId:"+orId);if(vod_url.indexOf("$")>-1){let tmp=vod_url.split("$");fyclass=tmp[0];vod_url=tmp[1]}let detailUrl=vod_url.split("@@")[0];let url;if(!detailUrl.startsWith("http")&&!detailUrl.includes("/")){url=rule.detailUrl.replaceAll("fyid",detailUrl).replaceAll("fyclass",fyclass)}else if(detailUrl.includes("/")){url=urljoin(rule.homeUrl,detailUrl)}else{url=detailUrl}let detailObj={orId:orId,url:url,"二级":rule.二级,"二级访问前":rule.二级访问前,detailUrl:detailUrl,fyclass:fyclass,tab_exclude:rule.tab_exclude};return detailParse(detailObj)}function play(flag,id,flags){let playObj={url:id,flag:flag,flags:flags};return playParse(playObj)}function search(wd,quick,pg){if(rule.search_encoding){if(rule.search_encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.search_encoding)}}else if(rule.encoding&&rule.encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.encoding)}let searchObj={searchUrl:rule.searchUrl,"搜索":rule.搜索,wd:wd,pg:pg||1,quick:quick};return searchParse(searchObj)}function proxy(params){if(rule.proxy_rule&&rule.proxy_rule.trim()){rule.proxy_rule=rule.proxy_rule.trim()}if(rule.proxy_rule.startsWith("js:")){rule.proxy_rule=rule.proxy_rule.replace("js:","")}let proxyObj={params:params,proxy_rule:rule.proxy_rule};return proxyParse(proxyObj)}function sniffer(){let enable_sniffer=rule.sniffer||false;if(enable_sniffer){log("开始执行辅助嗅探代理规则...")}return enable_sniffer}function isVideo(url){let t=0;let is_video;if(rule.isVideo&&rule.isVideo.trim()){is_video=rule.isVideo.trim()}if(is_video.startsWith("js:")){is_video=is_video.replace("js:","");t=1}let isVideoObj={url:url,isVideo:is_video,t:t};let result=isVideoParse(isVideoObj);if(result){log("成功执行辅助嗅探规则并检测到视频地址:\n"+rule.isVideo)}return result}function DRPY(){return{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,sniffer:sniffer,isVideo:isVideo}}export default{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,sniffer:sniffer,isVideo:isVideo,DRPY:DRPY}; \ No newline at end of file diff --git a/饭太硬/api/gbk.js b/摸鱼儿/api/gbk.js similarity index 100% rename from 饭太硬/api/gbk.js rename to 摸鱼儿/api/gbk.js diff --git a/摸鱼儿/api/jsencrypt.js b/摸鱼儿/api/jsencrypt.js new file mode 100644 index 0000000..9eee60c --- /dev/null +++ b/摸鱼儿/api/jsencrypt.js @@ -0,0 +1,372 @@ +/* + * 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 method for RSAKey object's verify.\n * @param {string} str the string to verify\n * @param {string} signature the signature encoded in base64 to compare the string to\n * @param {function} digestMethod hash method\n * @return {boolean} whether the data and signature match\n * @public\n */\n JSEncrypt.prototype.verify = function (str, signature, digestMethod) {\n // Return the decrypted 'digest' of the signature.\n try {\n return this.getKey().verify(str, (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.b64tohex)(signature), digestMethod);\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Getter for the current JSEncryptRSAKey object. If it doesn't exists a new object\n * will be created and returned\n * @param {callback} [cb] the callback to be called if we want the key to be generated\n * in an async fashion\n * @returns {JSEncryptRSAKey} the JSEncryptRSAKey object\n * @public\n */\n JSEncrypt.prototype.getKey = function (cb) {\n // Only create new if it does not exist.\n if (!this.key) {\n // Get a new private key.\n this.key = new _JSEncryptRSAKey__WEBPACK_IMPORTED_MODULE_1__.JSEncryptRSAKey();\n if (cb && {}.toString.call(cb) === \"[object Function]\") {\n this.key.generateAsync(this.default_key_size, this.default_public_exponent, cb);\n return;\n }\n // Generate the key.\n this.key.generate(this.default_key_size, this.default_public_exponent);\n }\n return this.key;\n };\n /**\n * Returns the pem encoded representation of the private key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the private key WITH header and footer\n * @public\n */\n JSEncrypt.prototype.getPrivateKey = function () {\n // Return the private representation of this key.\n return this.getKey().getPrivateKey();\n };\n /**\n * Returns the pem encoded representation of the private key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the private key WITHOUT header and footer\n * @public\n */\n JSEncrypt.prototype.getPrivateKeyB64 = function () {\n // Return the private representation of this key.\n return this.getKey().getPrivateBaseKeyB64();\n };\n /**\n * Returns the pem encoded representation of the public key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the public key WITH header and footer\n * @public\n */\n JSEncrypt.prototype.getPublicKey = function () {\n // Return the private representation of this key.\n return this.getKey().getPublicKey();\n };\n /**\n * Returns the pem encoded representation of the public key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the public key WITHOUT header and footer\n * @public\n */\n JSEncrypt.prototype.getPublicKeyB64 = function () {\n // Return the private representation of this key.\n return this.getKey().getPublicBaseKeyB64();\n };\nvar b64map=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";var b64pad=\"=\";var base64DecodeChars=new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1);function btoa(str){var out,i,len;var c1,c2,c3;len=str.length;i=0;out=\"\";while(i>2);out+=b64map.charAt((c1&3)<<4);out+=\"==\";break}c2=str.charCodeAt(i++);if(i==len){out+=b64map.charAt(c1>>2);out+=b64map.charAt((c1&3)<<4|(c2&240)>>4);out+=b64map.charAt((c2&15)<<2);out+=\"=\";break}c3=str.charCodeAt(i++);out+=b64map.charAt(c1>>2);out+=b64map.charAt((c1&3)<<4|(c2&240)>>4);out+=b64map.charAt((c2&15)<<2|(c3&192)>>6);out+=b64map.charAt(c3&63)}return out}function atob(str){var c1,c2,c3,c4;var i,len,out;len=str.length;i=0;out=\"\";while(i>4);do{c3=str.charCodeAt(i++)&255;if(c3==61)return out;c3=base64DecodeChars[c3]}while(i>2);do{c4=str.charCodeAt(i++)&255;if(c4==61)return out;c4=base64DecodeChars[c4]}while(i>6)+b64map.charAt(c&63)}if(i+1==h.length){c=parseInt(h.substring(i,i+1),16);ret+=b64map.charAt(c<<2)}else if(i+2==h.length){c=parseInt(h.substring(i,i+2),16);ret+=b64map.charAt(c>>2)+b64map.charAt((c&3)<<4)}while((ret.length&3)>0)ret+=b64pad;return ret}function hexToBytes(hex){for(var bytes=[],c=0;c>>4).toString(16));hex.push((bytes[i]&15).toString(16))}return hex.join(\"\")}function b64tohex(str){for(var i=0,bin=atob(str.replace(/[ \\r\\n]+$/,\"\")),hex=[];i>3};JSEncrypt.prototype.decryptUnicodeLong=function(string){var k=this.getKey();var maxLength=(k.n.bitLength()+7>>3)*2;try{var hexString=b64tohex(string);var decryptedString=\"\";var rexStr=\".{1,\"+maxLength+\"}\";var rex=new RegExp(rexStr,\"g\");var subStrArray=hexString.match(rex);if(subStrArray){subStrArray.forEach(function(entry){decryptedString+=k.decrypt(entry)});return decryptedString}}catch(ex){console.log(\"加密错误:\"+ex.message);return false}};JSEncrypt.prototype.encryptUnicodeLong=function(string){var k=this.getKey();var maxLength=(k.n.bitLength()+7>>3)-11;try{var subStr=\"\",encryptedString=\"\";var subStart=0,subEnd=0;var bitLen=0,tmpPoint=0;for(var i=0,len=string.length;imaxLength){subStr=string.substring(subStart,subEnd);encryptedString+=k.encrypt(subStr);subStart=subEnd;bitLen=bitLen-tmpPoint}else{subEnd=i;tmpPoint=bitLen}}subStr=string.substring(subStart,len);encryptedString+=k.encrypt(subStr);return hex2b64(encryptedString)}catch(ex){console.log(\"解密错误:\"+ex.message);return false}}; JSEncrypt.version = version;\n return JSEncrypt;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/JSEncrypt.js?"); + + /***/ + }), + + /***/ + "./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 if (asn1.sub.length === 3) {\n asn1 = asn1.sub[2].sub[0];\n }\n if (asn1.sub.length === 9) {\n // Parse the private key.\n modulus = asn1.sub[1].getHexStringValue(); // bigint\n this.n = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(modulus, 16);\n public_exponent = asn1.sub[2].getHexStringValue(); // int\n this.e = parseInt(public_exponent, 16);\n var private_exponent = asn1.sub[3].getHexStringValue(); // bigint\n this.d = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(private_exponent, 16);\n var prime1 = asn1.sub[4].getHexStringValue(); // bigint\n this.p = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(prime1, 16);\n var prime2 = asn1.sub[5].getHexStringValue(); // bigint\n this.q = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(prime2, 16);\n var exponent1 = asn1.sub[6].getHexStringValue(); // bigint\n this.dmp1 = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(exponent1, 16);\n var exponent2 = asn1.sub[7].getHexStringValue(); // bigint\n this.dmq1 = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(exponent2, 16);\n var coefficient = asn1.sub[8].getHexStringValue(); // bigint\n this.coeff = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(coefficient, 16);\n }\n else if (asn1.sub.length === 2) {\n if (asn1.sub[0].sub) {\n // Parse ASN.1 SubjectPublicKeyInfo type as defined by X.509\n var bit_string = asn1.sub[1];\n var sequence = bit_string.sub[0];\n modulus = sequence.sub[0].getHexStringValue();\n this.n = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(modulus, 16);\n public_exponent = sequence.sub[1].getHexStringValue();\n this.e = parseInt(public_exponent, 16);\n }\n else {\n // Parse ASN.1 RSAPublicKey type as defined by PKCS #1\n modulus = asn1.sub[0].getHexStringValue();\n this.n = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(modulus, 16);\n public_exponent = asn1.sub[1].getHexStringValue();\n this.e = parseInt(public_exponent, 16);\n }\n }\n else {\n return false;\n }\n return true;\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Translate rsa parameters in a hex encoded string representing the rsa key.\n *\n * The translation follow the ASN.1 notation :\n * RSAPrivateKey ::= SEQUENCE {\n * version Version,\n * modulus INTEGER, -- n\n * publicExponent INTEGER, -- e\n * privateExponent INTEGER, -- d\n * prime1 INTEGER, -- p\n * prime2 INTEGER, -- q\n * exponent1 INTEGER, -- d mod (p1)\n * exponent2 INTEGER, -- d mod (q-1)\n * coefficient INTEGER, -- (inverse of q) mod p\n * }\n * @returns {string} DER Encoded String representing the rsa private key\n * @private\n */\n JSEncryptRSAKey.prototype.getPrivateBaseKey = function () {\n var options = {\n array: [\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ int: 0 }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.n }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ int: this.e }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.d }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.p }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.q }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.dmp1 }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.dmq1 }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.coeff }),\n ],\n };\n var seq = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERSequence(options);\n return seq.getEncodedHex();\n };\n /**\n * base64 (pem) encoded version of the DER encoded representation\n * @returns {string} pem encoded representation without header and footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPrivateBaseKeyB64 = function () {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getPrivateBaseKey());\n };\n /**\n * Translate rsa parameters in a hex encoded string representing the rsa public key.\n * The representation follow the ASN.1 notation :\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 * @returns {string} DER Encoded String representing the rsa public key\n * @private\n */\n JSEncryptRSAKey.prototype.getPublicBaseKey = function () {\n var first_sequence = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERSequence({\n array: [\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERObjectIdentifier({ oid: \"1.2.840.113549.1.1.1\" }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERNull(),\n ],\n });\n var second_sequence = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERSequence({\n array: [\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.n }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ int: this.e }),\n ],\n });\n var bit_string = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERBitString({\n hex: \"00\" + second_sequence.getEncodedHex(),\n });\n var seq = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERSequence({\n array: [first_sequence, bit_string],\n });\n return seq.getEncodedHex();\n };\n /**\n * base64 (pem) encoded version of the DER encoded representation\n * @returns {string} pem encoded representation without header and footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPublicBaseKeyB64 = function () {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getPublicBaseKey());\n };\n /**\n * wrap the string in block of width chars. The default value for rsa keys is 64\n * characters.\n * @param {string} str the pem encoded string without header and footer\n * @param {Number} [width=64] - the length the string has to be wrapped at\n * @returns {string}\n * @private\n */\n JSEncryptRSAKey.wordwrap = function (str, width) {\n width = width || 64;\n if (!str) {\n return str;\n }\n var regex = \"(.{1,\" + width + \"})( +|$\\n?)|(.{1,\" + width + \"})\";\n return str.match(RegExp(regex, \"g\")).join(\"\\n\");\n };\n /**\n * Retrieve the pem encoded private key\n * @returns {string} the pem encoded private key with header/footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPrivateKey = function () {\n var key = \"-----BEGIN RSA PRIVATE KEY-----\\n\";\n key += JSEncryptRSAKey.wordwrap(this.getPrivateBaseKeyB64()) + \"\\n\";\n key += \"-----END RSA PRIVATE KEY-----\";\n return key;\n };\n /**\n * Retrieve the pem encoded public key\n * @returns {string} the pem encoded public key with header/footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPublicKey = function () {\n var key = \"-----BEGIN PUBLIC KEY-----\\n\";\n key += JSEncryptRSAKey.wordwrap(this.getPublicBaseKeyB64()) + \"\\n\";\n key += \"-----END PUBLIC KEY-----\";\n return key;\n };\n /**\n * Check if the object contains the necessary parameters to populate the rsa modulus\n * and public exponent parameters.\n * @param {Object} [obj={}] - An object that may contain the two public key\n * parameters\n * @returns {boolean} true if the object contains both the modulus and the public exponent\n * properties (n and e)\n * @todo check for types of n and e. N should be a parseable bigInt object, E should\n * be a parseable integer number\n * @private\n */\n JSEncryptRSAKey.hasPublicKeyProperty = function (obj) {\n obj = obj || {};\n return obj.hasOwnProperty(\"n\") && obj.hasOwnProperty(\"e\");\n };\n /**\n * Check if the object contains ALL the parameters of an RSA key.\n * @param {Object} [obj={}] - An object that may contain nine rsa key\n * parameters\n * @returns {boolean} true if the object contains all the parameters needed\n * @todo check for types of the parameters all the parameters but the public exponent\n * should be parseable bigint objects, the public exponent should be a parseable integer number\n * @private\n */\n JSEncryptRSAKey.hasPrivateKeyProperty = function (obj) {\n obj = obj || {};\n return (obj.hasOwnProperty(\"n\") &&\n obj.hasOwnProperty(\"e\") &&\n obj.hasOwnProperty(\"d\") &&\n obj.hasOwnProperty(\"p\") &&\n obj.hasOwnProperty(\"q\") &&\n obj.hasOwnProperty(\"dmp1\") &&\n obj.hasOwnProperty(\"dmq1\") &&\n obj.hasOwnProperty(\"coeff\"));\n };\n /**\n * Parse the properties of obj in the current rsa object. Obj should AT LEAST\n * include the modulus and public exponent (n, e) parameters.\n * @param {Object} obj - the object containing rsa parameters\n * @private\n */\n JSEncryptRSAKey.prototype.parsePropertiesFrom = function (obj) {\n this.n = obj.n;\n this.e = obj.e;\n if (obj.hasOwnProperty(\"d\")) {\n this.d = obj.d;\n this.p = obj.p;\n this.q = obj.q;\n this.dmp1 = obj.dmp1;\n this.dmq1 = obj.dmq1;\n this.coeff = obj.coeff;\n }\n };\n return JSEncryptRSAKey;\n}(_lib_jsbn_rsa__WEBPACK_IMPORTED_MODULE_4__.RSAKey));\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/JSEncryptRSAKey.js?"); + + /***/ + }), + + /***/ + "./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 \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 : reTimeL).exec(s);\n if (!m) {\n return \"Unrecognized time: \" + s;\n }\n if (shortYear) {\n // to avoid querying the timer, use the fixed range [1970, 2069]\n // it will conform with ITU X.400 [-10, +40] sliding window until 2030\n m[1] = +m[1];\n m[1] += (+m[1] < 70) ? 2000 : 1900;\n }\n s = m[1] + \"-\" + m[2] + \"-\" + m[3] + \" \" + m[4];\n if (m[5]) {\n s += \":\" + m[5];\n if (m[6]) {\n s += \":\" + m[6];\n if (m[7]) {\n s += \".\" + m[7];\n }\n }\n }\n if (m[8]) {\n s += \" UTC\";\n if (m[8] != \"Z\") {\n s += m[8];\n if (m[9]) {\n s += \":\" + m[9];\n }\n }\n }\n return s;\n };\n Stream.prototype.parseInteger = function (start, end) {\n var v = this.get(start);\n var neg = (v > 127);\n var pad = neg ? 255 : 0;\n var len;\n var s = \"\";\n // skip unuseful bits (not allowed in DER)\n while (v == pad && ++start < end) {\n v = this.get(start);\n }\n len = end - start;\n if (len === 0) {\n return neg ? -1 : 0;\n }\n // show bit length of huge integers\n if (len > 4) {\n s = v;\n len <<= 3;\n while (((+s ^ pad) & 0x80) == 0) {\n s = +s << 1;\n --len;\n }\n s = \"(\" + len + \" bit)\\n\";\n }\n // decode the integer\n if (neg) {\n v = v - 256;\n }\n var n = new _int10__WEBPACK_IMPORTED_MODULE_0__.Int10(v);\n for (var i = start + 1; i < end; ++i) {\n n.mulAdd(256, this.get(i));\n }\n return s + n.toString();\n };\n Stream.prototype.parseBitString = function (start, end, maxLength) {\n var unusedBit = this.get(start);\n var lenBit = ((end - start - 1) << 3) - unusedBit;\n var intro = \"(\" + lenBit + \" bit)\\n\";\n var s = \"\";\n for (var i = start + 1; i < end; ++i) {\n var b = this.get(i);\n var skip = (i == end - 1) ? unusedBit : 0;\n for (var j = 7; j >= skip; --j) {\n s += (b >> j) & 1 ? \"1\" : \"0\";\n }\n if (s.length > maxLength) {\n return intro + stringCut(s, maxLength);\n }\n }\n return intro + s;\n };\n Stream.prototype.parseOctetString = function (start, end, maxLength) {\n if (this.isASCII(start, end)) {\n return stringCut(this.parseStringISO(start, end), maxLength);\n }\n var len = end - start;\n var s = \"(\" + len + \" byte)\\n\";\n maxLength /= 2; // we work in bytes\n if (len > maxLength) {\n end = start + maxLength;\n }\n for (var i = start; i < end; ++i) {\n s += this.hexByte(this.get(i));\n }\n if (len > maxLength) {\n s += ellipsis;\n }\n return s;\n };\n Stream.prototype.parseOID = function (start, end, maxLength) {\n var s = \"\";\n var n = new _int10__WEBPACK_IMPORTED_MODULE_0__.Int10();\n var bits = 0;\n for (var i = start; i < end; ++i) {\n var v = this.get(i);\n n.mulAdd(128, v & 0x7F);\n bits += 7;\n if (!(v & 0x80)) { // finished\n if (s === \"\") {\n n = n.simplify();\n if (n instanceof _int10__WEBPACK_IMPORTED_MODULE_0__.Int10) {\n n.sub(80);\n s = \"2.\" + n.toString();\n }\n else {\n var m = n < 80 ? n < 40 ? 0 : 1 : 2;\n s = m + \".\" + (n - m * 40);\n }\n }\n else {\n s += \".\" + n.toString();\n }\n if (s.length > maxLength) {\n return stringCut(s, maxLength);\n }\n n = new _int10__WEBPACK_IMPORTED_MODULE_0__.Int10();\n bits = 0;\n }\n }\n if (bits > 0) {\n s += \".incomplete\";\n }\n return s;\n };\n return Stream;\n}());\n\nvar ASN1 = /** @class */ (function () {\n function ASN1(stream, header, length, tag, sub) {\n if (!(tag instanceof ASN1Tag)) {\n throw new Error(\"Invalid tag value.\");\n }\n this.stream = stream;\n this.header = header;\n this.length = length;\n this.tag = tag;\n this.sub = sub;\n }\n ASN1.prototype.typeName = function () {\n switch (this.tag.tagClass) {\n case 0: // universal\n switch (this.tag.tagNumber) {\n case 0x00:\n return \"EOC\";\n case 0x01:\n return \"BOOLEAN\";\n case 0x02:\n return \"INTEGER\";\n case 0x03:\n return \"BIT_STRING\";\n case 0x04:\n return \"OCTET_STRING\";\n case 0x05:\n return \"NULL\";\n case 0x06:\n return \"OBJECT_IDENTIFIER\";\n case 0x07:\n return \"ObjectDescriptor\";\n case 0x08:\n return \"EXTERNAL\";\n case 0x09:\n return \"REAL\";\n case 0x0A:\n return \"ENUMERATED\";\n case 0x0B:\n return \"EMBEDDED_PDV\";\n case 0x0C:\n return \"UTF8String\";\n case 0x10:\n return \"SEQUENCE\";\n case 0x11:\n return \"SET\";\n case 0x12:\n return \"NumericString\";\n case 0x13:\n return \"PrintableString\"; // ASCII subset\n case 0x14:\n return \"TeletexString\"; // aka T61String\n case 0x15:\n return \"VideotexString\";\n case 0x16:\n return \"IA5String\"; // ASCII\n case 0x17:\n return \"UTCTime\";\n case 0x18:\n return \"GeneralizedTime\";\n case 0x19:\n return \"GraphicString\";\n case 0x1A:\n return \"VisibleString\"; // ASCII subset\n case 0x1B:\n return \"GeneralString\";\n case 0x1C:\n return \"UniversalString\";\n case 0x1E:\n return \"BMPString\";\n }\n return \"Universal_\" + this.tag.tagNumber.toString();\n case 1:\n return \"Application_\" + this.tag.tagNumber.toString();\n case 2:\n return \"[\" + this.tag.tagNumber.toString() + \"]\"; // Context\n case 3:\n return \"Private_\" + this.tag.tagNumber.toString();\n }\n };\n ASN1.prototype.content = function (maxLength) {\n if (this.tag === undefined) {\n return null;\n }\n if (maxLength === undefined) {\n maxLength = Infinity;\n }\n var content = this.posContent();\n var len = Math.abs(this.length);\n if (!this.tag.isUniversal()) {\n if (this.sub !== null) {\n return \"(\" + this.sub.length + \" elem)\";\n }\n return this.stream.parseOctetString(content, content + len, maxLength);\n }\n switch (this.tag.tagNumber) {\n case 0x01: // BOOLEAN\n return (this.stream.get(content) === 0) ? \"false\" : \"true\";\n case 0x02: // INTEGER\n return this.stream.parseInteger(content, content + len);\n case 0x03: // BIT_STRING\n return this.sub ? \"(\" + this.sub.length + \" elem)\" :\n this.stream.parseBitString(content, content + len, maxLength);\n case 0x04: // OCTET_STRING\n return this.sub ? \"(\" + this.sub.length + \" elem)\" :\n this.stream.parseOctetString(content, content + len, maxLength);\n // case 0x05: // NULL\n case 0x06: // OBJECT_IDENTIFIER\n return this.stream.parseOID(content, content + len, maxLength);\n // case 0x07: // ObjectDescriptor\n // case 0x08: // EXTERNAL\n // case 0x09: // REAL\n // case 0x0A: // ENUMERATED\n // case 0x0B: // EMBEDDED_PDV\n case 0x10: // SEQUENCE\n case 0x11: // SET\n if (this.sub !== null) {\n return \"(\" + this.sub.length + \" elem)\";\n }\n else {\n return \"(no elem)\";\n }\n case 0x0C: // UTF8String\n return stringCut(this.stream.parseStringUTF(content, content + len), maxLength);\n case 0x12: // NumericString\n case 0x13: // PrintableString\n case 0x14: // TeletexString\n case 0x15: // VideotexString\n case 0x16: // IA5String\n // case 0x19: // GraphicString\n case 0x1A: // VisibleString\n // case 0x1B: // GeneralString\n // case 0x1C: // UniversalString\n return stringCut(this.stream.parseStringISO(content, content + len), maxLength);\n case 0x1E: // BMPString\n return stringCut(this.stream.parseStringBMP(content, content + len), maxLength);\n case 0x17: // UTCTime\n case 0x18: // GeneralizedTime\n return this.stream.parseTime(content, content + len, (this.tag.tagNumber == 0x17));\n }\n return null;\n };\n ASN1.prototype.toString = function () {\n return this.typeName() + \"@\" + this.stream.pos + \"[header:\" + this.header + \",length:\" + this.length + \",sub:\" + ((this.sub === null) ? \"null\" : this.sub.length) + \"]\";\n };\n ASN1.prototype.toPrettyString = function (indent) {\n if (indent === undefined) {\n indent = \"\";\n }\n var s = indent + this.typeName() + \" @\" + this.stream.pos;\n if (this.length >= 0) {\n s += \"+\";\n }\n s += this.length;\n if (this.tag.tagConstructed) {\n s += \" (constructed)\";\n }\n else if ((this.tag.isUniversal() && ((this.tag.tagNumber == 0x03) || (this.tag.tagNumber == 0x04))) && (this.sub !== null)) {\n s += \" (encapsulates)\";\n }\n s += \"\\n\";\n if (this.sub !== null) {\n indent += \" \";\n for (var i = 0, max = this.sub.length; i < max; ++i) {\n s += this.sub[i].toPrettyString(indent);\n }\n }\n return s;\n };\n ASN1.prototype.posStart = function () {\n return this.stream.pos;\n };\n ASN1.prototype.posContent = function () {\n return this.stream.pos + this.header;\n };\n ASN1.prototype.posEnd = function () {\n return this.stream.pos + this.header + Math.abs(this.length);\n };\n ASN1.prototype.toHexString = function () {\n return this.stream.hexDump(this.posStart(), this.posEnd(), true);\n };\n ASN1.decodeLength = function (stream) {\n var buf = stream.get();\n var len = buf & 0x7F;\n if (len == buf) {\n return len;\n }\n // no reason to use Int10, as it would be a huge buffer anyways\n if (len > 6) {\n throw new Error(\"Length over 48 bits not supported at position \" + (stream.pos - 1));\n }\n if (len === 0) {\n return null;\n } // undefined\n buf = 0;\n for (var i = 0; i < len; ++i) {\n buf = (buf * 256) + stream.get();\n }\n return buf;\n };\n /**\n * Retrieve the hexadecimal value (as a string) of the current ASN.1 element\n * @returns {string}\n * @public\n */\n ASN1.prototype.getHexStringValue = function () {\n var hexString = this.toHexString();\n var offset = this.header * 2;\n var length = this.length * 2;\n return hexString.substr(offset, length);\n };\n ASN1.decode = function (str) {\n var stream;\n if (!(str instanceof Stream)) {\n stream = new Stream(str, 0);\n }\n else {\n stream = str;\n }\n var streamStart = new Stream(stream);\n var tag = new ASN1Tag(stream);\n var len = ASN1.decodeLength(stream);\n var start = stream.pos;\n var header = start - streamStart.pos;\n var sub = null;\n var getSub = function () {\n var ret = [];\n if (len !== null) {\n // definite length\n var end = start + len;\n while (stream.pos < end) {\n ret[ret.length] = ASN1.decode(stream);\n }\n if (stream.pos != end) {\n throw new Error(\"Content size is not correct for container starting at offset \" + start);\n }\n }\n else {\n // undefined length\n try {\n for (;;) {\n var s = ASN1.decode(stream);\n if (s.tag.isEOC()) {\n break;\n }\n ret[ret.length] = s;\n }\n len = start - stream.pos; // undefined lengths are represented as negative values\n }\n catch (e) {\n throw new Error(\"Exception while decoding undefined length content: \" + e);\n }\n }\n return ret;\n };\n if (tag.tagConstructed) {\n // must have valid content\n sub = getSub();\n }\n else if (tag.isUniversal() && ((tag.tagNumber == 0x03) || (tag.tagNumber == 0x04))) {\n // sometimes BitString and OctetString are used to encapsulate ASN.1\n try {\n if (tag.tagNumber == 0x03) {\n if (stream.get() != 0) {\n throw new Error(\"BIT STRINGs with unused bits cannot encapsulate.\");\n }\n }\n sub = getSub();\n for (var i = 0; i < sub.length; ++i) {\n if (sub[i].tag.isEOC()) {\n throw new Error(\"EOC is not supposed to be actual content.\");\n }\n }\n }\n catch (e) {\n // but silently ignore when they don't\n sub = null;\n }\n }\n if (sub === null) {\n if (len === null) {\n throw new Error(\"We can't skip over an invalid tag with undefined length at offset \" + start);\n }\n stream.pos = start + Math.abs(len);\n }\n return new ASN1(streamStart, header, len, tag, sub);\n };\n return ASN1;\n}());\n\nvar ASN1Tag = /** @class */ (function () {\n function ASN1Tag(stream) {\n var buf = stream.get();\n this.tagClass = buf >> 6;\n this.tagConstructed = ((buf & 0x20) !== 0);\n this.tagNumber = buf & 0x1F;\n if (this.tagNumber == 0x1F) { // long tag\n var n = new _int10__WEBPACK_IMPORTED_MODULE_0__.Int10();\n do {\n buf = stream.get();\n n.mulAdd(128, buf & 0x7F);\n } while (buf & 0x80);\n this.tagNumber = n.simplify();\n }\n }\n ASN1Tag.prototype.isUniversal = function () {\n return this.tagClass === 0x00;\n };\n ASN1Tag.prototype.isEOC = function () {\n return this.tagClass === 0x00 && this.tagNumber === 0x00;\n };\n return ASN1Tag;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/asn1.js?"); + + /***/ + }), + + /***/ + "./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 \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 \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 \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 = bnBitLength;\n // (public) return the number of bits in \"this\"\n BigInteger.prototype.bitLength = function () {\n if (this.t <= 0) {\n return 0;\n }\n return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM));\n };\n // BigInteger.prototype.mod = bnMod;\n // (public) this mod a\n BigInteger.prototype.mod = function (a) {\n var r = nbi();\n this.abs().divRemTo(a, null, r);\n if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {\n a.subTo(r, r);\n }\n return r;\n };\n // BigInteger.prototype.modPowInt = bnModPowInt;\n // (public) this^e % m, 0 <= e < 2^32\n BigInteger.prototype.modPowInt = function (e, m) {\n var z;\n if (e < 256 || m.isEven()) {\n z = new Classic(m);\n }\n else {\n z = new Montgomery(m);\n }\n return this.exp(e, z);\n };\n // BigInteger.prototype.clone = bnClone;\n // (public)\n BigInteger.prototype.clone = function () {\n var r = nbi();\n this.copyTo(r);\n return r;\n };\n // BigInteger.prototype.intValue = bnIntValue;\n // (public) return value as integer\n BigInteger.prototype.intValue = function () {\n if (this.s < 0) {\n if (this.t == 1) {\n return this[0] - this.DV;\n }\n else if (this.t == 0) {\n return -1;\n }\n }\n else if (this.t == 1) {\n return this[0];\n }\n else if (this.t == 0) {\n return 0;\n }\n // assumes 16 < DB < 32\n return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0];\n };\n // BigInteger.prototype.byteValue = bnByteValue;\n // (public) return value as byte\n BigInteger.prototype.byteValue = function () {\n return (this.t == 0) ? this.s : (this[0] << 24) >> 24;\n };\n // BigInteger.prototype.shortValue = bnShortValue;\n // (public) return value as short (assumes DB>=16)\n BigInteger.prototype.shortValue = function () {\n return (this.t == 0) ? this.s : (this[0] << 16) >> 16;\n };\n // BigInteger.prototype.signum = bnSigNum;\n // (public) 0 if this == 0, 1 if this > 0\n BigInteger.prototype.signum = function () {\n if (this.s < 0) {\n return -1;\n }\n else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) {\n return 0;\n }\n else {\n return 1;\n }\n };\n // BigInteger.prototype.toByteArray = bnToByteArray;\n // (public) convert to bigendian byte array\n BigInteger.prototype.toByteArray = function () {\n var i = this.t;\n var r = [];\n r[0] = this.s;\n var p = this.DB - (i * this.DB) % 8;\n var d;\n var k = 0;\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) != (this.s & this.DM) >> p) {\n r[k++] = d | (this.s << (this.DB - p));\n }\n while (i >= 0) {\n if (p < 8) {\n d = (this[i] & ((1 << p) - 1)) << (8 - p);\n d |= this[--i] >> (p += this.DB - 8);\n }\n else {\n d = (this[i] >> (p -= 8)) & 0xff;\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n if ((d & 0x80) != 0) {\n d |= -256;\n }\n if (k == 0 && (this.s & 0x80) != (d & 0x80)) {\n ++k;\n }\n if (k > 0 || d != this.s) {\n r[k++] = d;\n }\n }\n }\n return r;\n };\n // BigInteger.prototype.equals = bnEquals;\n BigInteger.prototype.equals = function (a) {\n return (this.compareTo(a) == 0);\n };\n // BigInteger.prototype.min = bnMin;\n BigInteger.prototype.min = function (a) {\n return (this.compareTo(a) < 0) ? this : a;\n };\n // BigInteger.prototype.max = bnMax;\n BigInteger.prototype.max = function (a) {\n return (this.compareTo(a) > 0) ? this : a;\n };\n // BigInteger.prototype.and = bnAnd;\n BigInteger.prototype.and = function (a) {\n var r = nbi();\n this.bitwiseTo(a, _util__WEBPACK_IMPORTED_MODULE_0__.op_and, r);\n return r;\n };\n // BigInteger.prototype.or = bnOr;\n BigInteger.prototype.or = function (a) {\n var r = nbi();\n this.bitwiseTo(a, _util__WEBPACK_IMPORTED_MODULE_0__.op_or, r);\n return r;\n };\n // BigInteger.prototype.xor = bnXor;\n BigInteger.prototype.xor = function (a) {\n var r = nbi();\n this.bitwiseTo(a, _util__WEBPACK_IMPORTED_MODULE_0__.op_xor, r);\n return r;\n };\n // BigInteger.prototype.andNot = bnAndNot;\n BigInteger.prototype.andNot = function (a) {\n var r = nbi();\n this.bitwiseTo(a, _util__WEBPACK_IMPORTED_MODULE_0__.op_andnot, r);\n return r;\n };\n // BigInteger.prototype.not = bnNot;\n // (public) ~this\n BigInteger.prototype.not = function () {\n var r = nbi();\n for (var i = 0; i < this.t; ++i) {\n r[i] = this.DM & ~this[i];\n }\n r.t = this.t;\n r.s = ~this.s;\n return r;\n };\n // BigInteger.prototype.shiftLeft = bnShiftLeft;\n // (public) this << n\n BigInteger.prototype.shiftLeft = function (n) {\n var r = nbi();\n if (n < 0) {\n this.rShiftTo(-n, r);\n }\n else {\n this.lShiftTo(n, r);\n }\n return r;\n };\n // BigInteger.prototype.shiftRight = bnShiftRight;\n // (public) this >> n\n BigInteger.prototype.shiftRight = function (n) {\n var r = nbi();\n if (n < 0) {\n this.lShiftTo(-n, r);\n }\n else {\n this.rShiftTo(n, r);\n }\n return r;\n };\n // BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\n // (public) returns index of lowest 1-bit (or -1 if none)\n BigInteger.prototype.getLowestSetBit = function () {\n for (var i = 0; i < this.t; ++i) {\n if (this[i] != 0) {\n return i * this.DB + (0,_util__WEBPACK_IMPORTED_MODULE_0__.lbit)(this[i]);\n }\n }\n if (this.s < 0) {\n return this.t * this.DB;\n }\n return -1;\n };\n // BigInteger.prototype.bitCount = bnBitCount;\n // (public) return number of set bits\n BigInteger.prototype.bitCount = function () {\n var r = 0;\n var x = this.s & this.DM;\n for (var i = 0; i < this.t; ++i) {\n r += (0,_util__WEBPACK_IMPORTED_MODULE_0__.cbit)(this[i] ^ x);\n }\n return r;\n };\n // BigInteger.prototype.testBit = bnTestBit;\n // (public) true iff nth bit is set\n BigInteger.prototype.testBit = function (n) {\n var j = Math.floor(n / this.DB);\n if (j >= this.t) {\n return (this.s != 0);\n }\n return ((this[j] & (1 << (n % this.DB))) != 0);\n };\n // BigInteger.prototype.setBit = bnSetBit;\n // (public) this | (1< 1) {\n var g2 = nbi();\n z.sqrTo(g[1], g2);\n while (n <= km) {\n g[n] = nbi();\n z.mulTo(g2, g[n - 2], g[n]);\n n += 2;\n }\n }\n var j = e.t - 1;\n var w;\n var is1 = true;\n var r2 = nbi();\n var t;\n i = nbits(e[j]) - 1;\n while (j >= 0) {\n if (i >= k1) {\n w = (e[j] >> (i - k1)) & km;\n }\n else {\n w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i);\n if (j > 0) {\n w |= e[j - 1] >> (this.DB + i - k1);\n }\n }\n n = k;\n while ((w & 1) == 0) {\n w >>= 1;\n --n;\n }\n if ((i -= n) < 0) {\n i += this.DB;\n --j;\n }\n if (is1) { // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n }\n else {\n while (n > 1) {\n z.sqrTo(r, r2);\n z.sqrTo(r2, r);\n n -= 2;\n }\n if (n > 0) {\n z.sqrTo(r, r2);\n }\n else {\n t = r;\n r = r2;\n r2 = t;\n }\n z.mulTo(r2, g[w], r);\n }\n while (j >= 0 && (e[j] & (1 << i)) == 0) {\n z.sqrTo(r, r2);\n t = r;\n r = r2;\n r2 = t;\n if (--i < 0) {\n i = this.DB - 1;\n --j;\n }\n }\n }\n return z.revert(r);\n };\n // BigInteger.prototype.modInverse = bnModInverse;\n // (public) 1/this % m (HAC 14.61)\n BigInteger.prototype.modInverse = function (m) {\n var ac = m.isEven();\n if ((this.isEven() && ac) || m.signum() == 0) {\n return BigInteger.ZERO;\n }\n var u = m.clone();\n var v = this.clone();\n var a = nbv(1);\n var b = nbv(0);\n var c = nbv(0);\n var d = nbv(1);\n while (u.signum() != 0) {\n while (u.isEven()) {\n u.rShiftTo(1, u);\n if (ac) {\n if (!a.isEven() || !b.isEven()) {\n a.addTo(this, a);\n b.subTo(m, b);\n }\n a.rShiftTo(1, a);\n }\n else if (!b.isEven()) {\n b.subTo(m, b);\n }\n b.rShiftTo(1, b);\n }\n while (v.isEven()) {\n v.rShiftTo(1, v);\n if (ac) {\n if (!c.isEven() || !d.isEven()) {\n c.addTo(this, c);\n d.subTo(m, d);\n }\n c.rShiftTo(1, c);\n }\n else if (!d.isEven()) {\n d.subTo(m, d);\n }\n d.rShiftTo(1, d);\n }\n if (u.compareTo(v) >= 0) {\n u.subTo(v, u);\n if (ac) {\n a.subTo(c, a);\n }\n b.subTo(d, b);\n }\n else {\n v.subTo(u, v);\n if (ac) {\n c.subTo(a, c);\n }\n d.subTo(b, d);\n }\n }\n if (v.compareTo(BigInteger.ONE) != 0) {\n return BigInteger.ZERO;\n }\n if (d.compareTo(m) >= 0) {\n return d.subtract(m);\n }\n if (d.signum() < 0) {\n d.addTo(m, d);\n }\n else {\n return d;\n }\n if (d.signum() < 0) {\n return d.add(m);\n }\n else {\n return d;\n }\n };\n // BigInteger.prototype.pow = bnPow;\n // (public) this^e\n BigInteger.prototype.pow = function (e) {\n return this.exp(e, new NullExp());\n };\n // BigInteger.prototype.gcd = bnGCD;\n // (public) gcd(this,a) (HAC 14.54)\n BigInteger.prototype.gcd = function (a) {\n var x = (this.s < 0) ? this.negate() : this.clone();\n var y = (a.s < 0) ? a.negate() : a.clone();\n if (x.compareTo(y) < 0) {\n var t = x;\n x = y;\n y = t;\n }\n var i = x.getLowestSetBit();\n var g = y.getLowestSetBit();\n if (g < 0) {\n return x;\n }\n if (i < g) {\n g = i;\n }\n if (g > 0) {\n x.rShiftTo(g, x);\n y.rShiftTo(g, y);\n }\n while (x.signum() > 0) {\n if ((i = x.getLowestSetBit()) > 0) {\n x.rShiftTo(i, x);\n }\n if ((i = y.getLowestSetBit()) > 0) {\n y.rShiftTo(i, y);\n }\n if (x.compareTo(y) >= 0) {\n x.subTo(y, x);\n x.rShiftTo(1, x);\n }\n else {\n y.subTo(x, y);\n y.rShiftTo(1, y);\n }\n }\n if (g > 0) {\n y.lShiftTo(g, y);\n }\n return y;\n };\n // BigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n // (public) test primality with certainty >= 1-.5^t\n BigInteger.prototype.isProbablePrime = function (t) {\n var i;\n var x = this.abs();\n if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {\n for (i = 0; i < lowprimes.length; ++i) {\n if (x[0] == lowprimes[i]) {\n return true;\n }\n }\n return false;\n }\n if (x.isEven()) {\n return false;\n }\n i = 1;\n while (i < lowprimes.length) {\n var m = lowprimes[i];\n var j = i + 1;\n while (j < lowprimes.length && m < lplim) {\n m *= lowprimes[j++];\n }\n m = x.modInt(m);\n while (i < j) {\n if (m % lowprimes[i++] == 0) {\n return false;\n }\n }\n }\n return x.millerRabin(t);\n };\n //#endregion PUBLIC\n //#region PROTECTED\n // BigInteger.prototype.copyTo = bnpCopyTo;\n // (protected) copy this to r\n BigInteger.prototype.copyTo = function (r) {\n for (var i = this.t - 1; i >= 0; --i) {\n r[i] = this[i];\n }\n r.t = this.t;\n r.s = this.s;\n };\n // BigInteger.prototype.fromInt = bnpFromInt;\n // (protected) set from integer value x, -DV <= x < DV\n BigInteger.prototype.fromInt = function (x) {\n this.t = 1;\n this.s = (x < 0) ? -1 : 0;\n if (x > 0) {\n this[0] = x;\n }\n else if (x < -1) {\n this[0] = x + this.DV;\n }\n else {\n this.t = 0;\n }\n };\n // BigInteger.prototype.fromString = bnpFromString;\n // (protected) set from string and radix\n BigInteger.prototype.fromString = function (s, b) {\n var k;\n if (b == 16) {\n k = 4;\n }\n else if (b == 8) {\n k = 3;\n }\n else if (b == 256) {\n k = 8;\n /* byte array */\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 this.fromRadix(s, b);\n return;\n }\n this.t = 0;\n this.s = 0;\n var i = s.length;\n var mi = false;\n var sh = 0;\n while (--i >= 0) {\n var x = (k == 8) ? (+s[i]) & 0xff : intAt(s, i);\n if (x < 0) {\n if (s.charAt(i) == \"-\") {\n mi = true;\n }\n continue;\n }\n mi = false;\n if (sh == 0) {\n this[this.t++] = x;\n }\n else if (sh + k > this.DB) {\n this[this.t - 1] |= (x & ((1 << (this.DB - sh)) - 1)) << sh;\n this[this.t++] = (x >> (this.DB - sh));\n }\n else {\n this[this.t - 1] |= x << sh;\n }\n sh += k;\n if (sh >= this.DB) {\n sh -= this.DB;\n }\n }\n if (k == 8 && ((+s[0]) & 0x80) != 0) {\n this.s = -1;\n if (sh > 0) {\n this[this.t - 1] |= ((1 << (this.DB - sh)) - 1) << sh;\n }\n }\n this.clamp();\n if (mi) {\n BigInteger.ZERO.subTo(this, this);\n }\n };\n // BigInteger.prototype.clamp = bnpClamp;\n // (protected) clamp off excess high words\n BigInteger.prototype.clamp = function () {\n var c = this.s & this.DM;\n while (this.t > 0 && this[this.t - 1] == c) {\n --this.t;\n }\n };\n // BigInteger.prototype.dlShiftTo = bnpDLShiftTo;\n // (protected) r = this << n*DB\n BigInteger.prototype.dlShiftTo = function (n, r) {\n var i;\n for (i = this.t - 1; i >= 0; --i) {\n r[i + n] = this[i];\n }\n for (i = n - 1; i >= 0; --i) {\n r[i] = 0;\n }\n r.t = this.t + n;\n r.s = this.s;\n };\n // BigInteger.prototype.drShiftTo = bnpDRShiftTo;\n // (protected) r = this >> n*DB\n BigInteger.prototype.drShiftTo = function (n, r) {\n for (var i = n; i < this.t; ++i) {\n r[i - n] = this[i];\n }\n r.t = Math.max(this.t - n, 0);\n r.s = this.s;\n };\n // BigInteger.prototype.lShiftTo = bnpLShiftTo;\n // (protected) r = this << n\n BigInteger.prototype.lShiftTo = function (n, r) {\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << cbs) - 1;\n var ds = Math.floor(n / this.DB);\n var c = (this.s << bs) & this.DM;\n for (var i = this.t - 1; i >= 0; --i) {\n r[i + ds + 1] = (this[i] >> cbs) | c;\n c = (this[i] & bm) << bs;\n }\n for (var i = ds - 1; i >= 0; --i) {\n r[i] = 0;\n }\n r[ds] = c;\n r.t = this.t + ds + 1;\n r.s = this.s;\n r.clamp();\n };\n // BigInteger.prototype.rShiftTo = bnpRShiftTo;\n // (protected) r = this >> n\n BigInteger.prototype.rShiftTo = function (n, r) {\n r.s = this.s;\n var ds = Math.floor(n / this.DB);\n if (ds >= this.t) {\n r.t = 0;\n return;\n }\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << bs) - 1;\n r[0] = this[ds] >> bs;\n for (var i = ds + 1; i < this.t; ++i) {\n r[i - ds - 1] |= (this[i] & bm) << cbs;\n r[i - ds] = this[i] >> bs;\n }\n if (bs > 0) {\n r[this.t - ds - 1] |= (this.s & bm) << cbs;\n }\n r.t = this.t - ds;\n r.clamp();\n };\n // BigInteger.prototype.subTo = bnpSubTo;\n // (protected) r = this - a\n BigInteger.prototype.subTo = function (a, r) {\n var i = 0;\n var c = 0;\n var m = Math.min(a.t, this.t);\n while (i < m) {\n c += this[i] - a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n if (a.t < this.t) {\n c -= a.s;\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while (i < a.t) {\n c -= a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c < 0) ? -1 : 0;\n if (c < -1) {\n r[i++] = this.DV + c;\n }\n else if (c > 0) {\n r[i++] = c;\n }\n r.t = i;\n r.clamp();\n };\n // BigInteger.prototype.multiplyTo = bnpMultiplyTo;\n // (protected) r = this * a, r != this,a (HAC 14.12)\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyTo = function (a, r) {\n var x = this.abs();\n var y = a.abs();\n var i = x.t;\n r.t = i + y.t;\n while (--i >= 0) {\n r[i] = 0;\n }\n for (i = 0; i < y.t; ++i) {\n r[i + x.t] = x.am(0, y[i], r, i, 0, x.t);\n }\n r.s = 0;\n r.clamp();\n if (this.s != a.s) {\n BigInteger.ZERO.subTo(r, r);\n }\n };\n // BigInteger.prototype.squareTo = bnpSquareTo;\n // (protected) r = this^2, r != this (HAC 14.16)\n BigInteger.prototype.squareTo = function (r) {\n var x = this.abs();\n var i = r.t = 2 * x.t;\n while (--i >= 0) {\n r[i] = 0;\n }\n for (i = 0; i < x.t - 1; ++i) {\n var c = x.am(i, x[i], r, 2 * i, 0, 1);\n if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {\n r[i + x.t] -= x.DV;\n r[i + x.t + 1] = 1;\n }\n }\n if (r.t > 0) {\n r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1);\n }\n r.s = 0;\n r.clamp();\n };\n // BigInteger.prototype.divRemTo = bnpDivRemTo;\n // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n // r != q, this != m. q or r may be null.\n BigInteger.prototype.divRemTo = function (m, q, r) {\n var pm = m.abs();\n if (pm.t <= 0) {\n return;\n }\n var pt = this.abs();\n if (pt.t < pm.t) {\n if (q != null) {\n q.fromInt(0);\n }\n if (r != null) {\n this.copyTo(r);\n }\n return;\n }\n if (r == null) {\n r = nbi();\n }\n var y = nbi();\n var ts = this.s;\n var ms = m.s;\n var nsh = this.DB - nbits(pm[pm.t - 1]); // normalize modulus\n if (nsh > 0) {\n pm.lShiftTo(nsh, y);\n pt.lShiftTo(nsh, r);\n }\n else {\n pm.copyTo(y);\n pt.copyTo(r);\n }\n var ys = y.t;\n var y0 = y[ys - 1];\n if (y0 == 0) {\n return;\n }\n var yt = y0 * (1 << this.F1) + ((ys > 1) ? y[ys - 2] >> this.F2 : 0);\n var d1 = this.FV / yt;\n var d2 = (1 << this.F1) / yt;\n var e = 1 << this.F2;\n var i = r.t;\n var j = i - ys;\n var t = (q == null) ? nbi() : q;\n y.dlShiftTo(j, t);\n if (r.compareTo(t) >= 0) {\n r[r.t++] = 1;\n r.subTo(t, r);\n }\n BigInteger.ONE.dlShiftTo(ys, t);\n t.subTo(y, y); // \"negative\" y so we can replace sub with am later\n while (y.t < ys) {\n y[y.t++] = 0;\n }\n while (--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i] == y0) ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2);\n if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out\n y.dlShiftTo(j, t);\n r.subTo(t, r);\n while (r[i] < --qd) {\n r.subTo(t, r);\n }\n }\n }\n if (q != null) {\n r.drShiftTo(ys, q);\n if (ts != ms) {\n BigInteger.ZERO.subTo(q, q);\n }\n }\n r.t = ys;\n r.clamp();\n if (nsh > 0) {\n r.rShiftTo(nsh, r);\n } // Denormalize remainder\n if (ts < 0) {\n BigInteger.ZERO.subTo(r, r);\n }\n };\n // BigInteger.prototype.invDigit = bnpInvDigit;\n // (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n // justification:\n // xy == 1 (mod m)\n // xy = 1+km\n // xy(2-xy) = (1+km)(1-km)\n // x[y(2-xy)] = 1-k^2m^2\n // x[y(2-xy)] == 1 (mod m^2)\n // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n // JS multiply \"overflows\" differently from C/C++, so care is needed here.\n BigInteger.prototype.invDigit = function () {\n if (this.t < 1) {\n return 0;\n }\n var x = this[0];\n if ((x & 1) == 0) {\n return 0;\n }\n var y = x & 3; // y == 1/x mod 2^2\n y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4\n y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8\n y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y > 0) ? this.DV - y : -y;\n };\n // BigInteger.prototype.isEven = bnpIsEven;\n // (protected) true iff this is even\n BigInteger.prototype.isEven = function () {\n return ((this.t > 0) ? (this[0] & 1) : this.s) == 0;\n };\n // BigInteger.prototype.exp = bnpExp;\n // (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\n BigInteger.prototype.exp = function (e, z) {\n if (e > 0xffffffff || e < 1) {\n return BigInteger.ONE;\n }\n var r = nbi();\n var r2 = nbi();\n var g = z.convert(this);\n var i = nbits(e) - 1;\n g.copyTo(r);\n while (--i >= 0) {\n z.sqrTo(r, r2);\n if ((e & (1 << i)) > 0) {\n z.mulTo(r2, g, r);\n }\n else {\n var t = r;\n r = r2;\n r2 = t;\n }\n }\n return z.revert(r);\n };\n // BigInteger.prototype.chunkSize = bnpChunkSize;\n // (protected) return x s.t. r^x < DV\n BigInteger.prototype.chunkSize = function (r) {\n return Math.floor(Math.LN2 * this.DB / Math.log(r));\n };\n // BigInteger.prototype.toRadix = bnpToRadix;\n // (protected) convert to radix string\n BigInteger.prototype.toRadix = function (b) {\n if (b == null) {\n b = 10;\n }\n if (this.signum() == 0 || b < 2 || b > 36) {\n return \"0\";\n }\n var cs = this.chunkSize(b);\n var a = Math.pow(b, cs);\n var d = nbv(a);\n var y = nbi();\n var z = nbi();\n var r = \"\";\n this.divRemTo(d, y, z);\n while (y.signum() > 0) {\n r = (a + z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d, y, z);\n }\n return z.intValue().toString(b) + r;\n };\n // BigInteger.prototype.fromRadix = bnpFromRadix;\n // (protected) convert from radix string\n BigInteger.prototype.fromRadix = function (s, b) {\n this.fromInt(0);\n if (b == null) {\n b = 10;\n }\n var cs = this.chunkSize(b);\n var d = Math.pow(b, cs);\n var mi = false;\n var j = 0;\n var w = 0;\n for (var i = 0; i < s.length; ++i) {\n var x = intAt(s, i);\n if (x < 0) {\n if (s.charAt(i) == \"-\" && this.signum() == 0) {\n mi = true;\n }\n continue;\n }\n w = b * w + x;\n if (++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w, 0);\n j = 0;\n w = 0;\n }\n }\n if (j > 0) {\n this.dMultiply(Math.pow(b, j));\n this.dAddOffset(w, 0);\n }\n if (mi) {\n BigInteger.ZERO.subTo(this, this);\n }\n };\n // BigInteger.prototype.fromNumber = bnpFromNumber;\n // (protected) alternate constructor\n BigInteger.prototype.fromNumber = function (a, b, c) {\n if (\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if (a < 2) {\n this.fromInt(1);\n }\n else {\n this.fromNumber(a, c);\n if (!this.testBit(a - 1)) {\n // force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), _util__WEBPACK_IMPORTED_MODULE_0__.op_or, this);\n }\n if (this.isEven()) {\n this.dAddOffset(1, 0);\n } // force odd\n while (!this.isProbablePrime(b)) {\n this.dAddOffset(2, 0);\n if (this.bitLength() > a) {\n this.subTo(BigInteger.ONE.shiftLeft(a - 1), this);\n }\n }\n }\n }\n else {\n // new BigInteger(int,RNG)\n var x = [];\n var t = a & 7;\n x.length = (a >> 3) + 1;\n b.nextBytes(x);\n if (t > 0) {\n x[0] &= ((1 << t) - 1);\n }\n else {\n x[0] = 0;\n }\n this.fromString(x, 256);\n }\n };\n // BigInteger.prototype.bitwiseTo = bnpBitwiseTo;\n // (protected) r = this op a (bitwise)\n BigInteger.prototype.bitwiseTo = function (a, op, r) {\n var i;\n var f;\n var m = Math.min(a.t, this.t);\n for (i = 0; i < m; ++i) {\n r[i] = op(this[i], a[i]);\n }\n if (a.t < this.t) {\n f = a.s & this.DM;\n for (i = m; i < this.t; ++i) {\n r[i] = op(this[i], f);\n }\n r.t = this.t;\n }\n else {\n f = this.s & this.DM;\n for (i = m; i < a.t; ++i) {\n r[i] = op(f, a[i]);\n }\n r.t = a.t;\n }\n r.s = op(this.s, a.s);\n r.clamp();\n };\n // BigInteger.prototype.changeBit = bnpChangeBit;\n // (protected) this op (1<>= this.DB;\n }\n if (a.t < this.t) {\n c += a.s;\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while (i < a.t) {\n c += a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += a.s;\n }\n r.s = (c < 0) ? -1 : 0;\n if (c > 0) {\n r[i++] = c;\n }\n else if (c < -1) {\n r[i++] = this.DV + c;\n }\n r.t = i;\n r.clamp();\n };\n // BigInteger.prototype.dMultiply = bnpDMultiply;\n // (protected) this *= n, this >= 0, 1 < n < DV\n BigInteger.prototype.dMultiply = function (n) {\n this[this.t] = this.am(0, n - 1, this, 0, 0, this.t);\n ++this.t;\n this.clamp();\n };\n // BigInteger.prototype.dAddOffset = bnpDAddOffset;\n // (protected) this += n << w words, this >= 0\n BigInteger.prototype.dAddOffset = function (n, w) {\n if (n == 0) {\n return;\n }\n while (this.t <= w) {\n this[this.t++] = 0;\n }\n this[w] += n;\n while (this[w] >= this.DV) {\n this[w] -= this.DV;\n if (++w >= this.t) {\n this[this.t++] = 0;\n }\n ++this[w];\n }\n };\n // BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\n // (protected) r = lower n words of \"this * a\", a.t <= n\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyLowerTo = function (a, n, r) {\n var i = Math.min(this.t + a.t, n);\n r.s = 0; // assumes a,this >= 0\n r.t = i;\n while (i > 0) {\n r[--i] = 0;\n }\n for (var j = r.t - this.t; i < j; ++i) {\n r[i + this.t] = this.am(0, a[i], r, i, 0, this.t);\n }\n for (var j = Math.min(a.t, n); i < j; ++i) {\n this.am(0, a[i], r, i, 0, n - i);\n }\n r.clamp();\n };\n // BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\n // (protected) r = \"this * a\" without lower n words, n > 0\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyUpperTo = function (a, n, r) {\n --n;\n var i = r.t = this.t + a.t - n;\n r.s = 0; // assumes a,this >= 0\n while (--i >= 0) {\n r[i] = 0;\n }\n for (i = Math.max(n - this.t, 0); i < a.t; ++i) {\n r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n);\n }\n r.clamp();\n r.drShiftTo(1, r);\n };\n // BigInteger.prototype.modInt = bnpModInt;\n // (protected) this % n, n < 2^26\n BigInteger.prototype.modInt = function (n) {\n if (n <= 0) {\n return 0;\n }\n var d = this.DV % n;\n var r = (this.s < 0) ? n - 1 : 0;\n if (this.t > 0) {\n if (d == 0) {\n r = this[0] % n;\n }\n else {\n for (var i = this.t - 1; i >= 0; --i) {\n r = (d * r + this[i]) % n;\n }\n }\n }\n return r;\n };\n // BigInteger.prototype.millerRabin = bnpMillerRabin;\n // (protected) true if probably prime (HAC 4.24, Miller-Rabin)\n BigInteger.prototype.millerRabin = function (t) {\n var n1 = this.subtract(BigInteger.ONE);\n var k = n1.getLowestSetBit();\n if (k <= 0) {\n return false;\n }\n var r = n1.shiftRight(k);\n t = (t + 1) >> 1;\n if (t > lowprimes.length) {\n t = lowprimes.length;\n }\n var a = nbi();\n for (var i = 0; i < t; ++i) {\n // Pick bases at random, instead of starting at 2\n a.fromInt(lowprimes[Math.floor(Math.random() * lowprimes.length)]);\n var y = a.modPow(r, this);\n if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while (j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2, this);\n if (y.compareTo(BigInteger.ONE) == 0) {\n return false;\n }\n }\n if (y.compareTo(n1) != 0) {\n return false;\n }\n }\n }\n return true;\n };\n // BigInteger.prototype.square = bnSquare;\n // (public) this^2\n BigInteger.prototype.square = function () {\n var r = nbi();\n this.squareTo(r);\n return r;\n };\n //#region ASYNC\n // Public API method\n BigInteger.prototype.gcda = function (a, callback) {\n var x = (this.s < 0) ? this.negate() : this.clone();\n var y = (a.s < 0) ? a.negate() : a.clone();\n if (x.compareTo(y) < 0) {\n var t = x;\n x = y;\n y = t;\n }\n var i = x.getLowestSetBit();\n var g = y.getLowestSetBit();\n if (g < 0) {\n callback(x);\n return;\n }\n if (i < g) {\n g = i;\n }\n if (g > 0) {\n x.rShiftTo(g, x);\n y.rShiftTo(g, y);\n }\n // Workhorse of the algorithm, gets called 200 - 800 times per 512 bit keygen.\n var gcda1 = function () {\n if ((i = x.getLowestSetBit()) > 0) {\n x.rShiftTo(i, x);\n }\n if ((i = y.getLowestSetBit()) > 0) {\n y.rShiftTo(i, y);\n }\n if (x.compareTo(y) >= 0) {\n x.subTo(y, x);\n x.rShiftTo(1, x);\n }\n else {\n y.subTo(x, y);\n y.rShiftTo(1, y);\n }\n if (!(x.signum() > 0)) {\n if (g > 0) {\n y.lShiftTo(g, y);\n }\n setTimeout(function () { callback(y); }, 0); // escape\n }\n else {\n setTimeout(gcda1, 0);\n }\n };\n setTimeout(gcda1, 10);\n };\n // (protected) alternate constructor\n BigInteger.prototype.fromNumberAsync = function (a, b, c, callback) {\n if (\"number\" == typeof b) {\n if (a < 2) {\n this.fromInt(1);\n }\n else {\n this.fromNumber(a, c);\n if (!this.testBit(a - 1)) {\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), _util__WEBPACK_IMPORTED_MODULE_0__.op_or, this);\n }\n if (this.isEven()) {\n this.dAddOffset(1, 0);\n }\n var bnp_1 = this;\n var bnpfn1_1 = function () {\n bnp_1.dAddOffset(2, 0);\n if (bnp_1.bitLength() > a) {\n bnp_1.subTo(BigInteger.ONE.shiftLeft(a - 1), bnp_1);\n }\n if (bnp_1.isProbablePrime(b)) {\n setTimeout(function () { callback(); }, 0); // escape\n }\n else {\n setTimeout(bnpfn1_1, 0);\n }\n };\n setTimeout(bnpfn1_1, 0);\n }\n }\n else {\n var x = [];\n var t = a & 7;\n x.length = (a >> 3) + 1;\n b.nextBytes(x);\n if (t > 0) {\n x[0] &= ((1 << t) - 1);\n }\n else {\n x[0] = 0;\n }\n this.fromString(x, 256);\n }\n };\n return BigInteger;\n}());\n\n//#region REDUCERS\n//#region NullExp\nvar NullExp = /** @class */ (function () {\n function NullExp() {\n }\n // NullExp.prototype.convert = nNop;\n NullExp.prototype.convert = function (x) {\n return x;\n };\n // NullExp.prototype.revert = nNop;\n NullExp.prototype.revert = function (x) {\n return x;\n };\n // NullExp.prototype.mulTo = nMulTo;\n NullExp.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n };\n // NullExp.prototype.sqrTo = nSqrTo;\n NullExp.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n };\n return NullExp;\n}());\n// Modular reduction using \"classic\" algorithm\nvar Classic = /** @class */ (function () {\n function Classic(m) {\n this.m = m;\n }\n // Classic.prototype.convert = cConvert;\n Classic.prototype.convert = function (x) {\n if (x.s < 0 || x.compareTo(this.m) >= 0) {\n return x.mod(this.m);\n }\n else {\n return x;\n }\n };\n // Classic.prototype.revert = cRevert;\n Classic.prototype.revert = function (x) {\n return x;\n };\n // Classic.prototype.reduce = cReduce;\n Classic.prototype.reduce = function (x) {\n x.divRemTo(this.m, null, x);\n };\n // Classic.prototype.mulTo = cMulTo;\n Classic.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n };\n // Classic.prototype.sqrTo = cSqrTo;\n Classic.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n this.reduce(r);\n };\n return Classic;\n}());\n//#endregion\n//#region Montgomery\n// Montgomery reduction\nvar Montgomery = /** @class */ (function () {\n function Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp & 0x7fff;\n this.mph = this.mp >> 15;\n this.um = (1 << (m.DB - 15)) - 1;\n this.mt2 = 2 * m.t;\n }\n // Montgomery.prototype.convert = montConvert;\n // xR mod m\n Montgomery.prototype.convert = function (x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t, r);\n r.divRemTo(this.m, null, r);\n if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {\n this.m.subTo(r, r);\n }\n return r;\n };\n // Montgomery.prototype.revert = montRevert;\n // x/R mod m\n Montgomery.prototype.revert = function (x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n };\n // Montgomery.prototype.reduce = montReduce;\n // x = x/R mod m (HAC 14.32)\n Montgomery.prototype.reduce = function (x) {\n while (x.t <= this.mt2) {\n // pad x so am has enough room later\n x[x.t++] = 0;\n }\n for (var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i] & 0x7fff;\n var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i + this.m.t;\n x[j] += this.m.am(0, u0, x, i, 0, this.m.t);\n // propagate carry\n while (x[j] >= x.DV) {\n x[j] -= x.DV;\n x[++j]++;\n }\n }\n x.clamp();\n x.drShiftTo(this.m.t, x);\n if (x.compareTo(this.m) >= 0) {\n x.subTo(this.m, x);\n }\n };\n // Montgomery.prototype.mulTo = montMulTo;\n // r = \"xy/R mod m\"; x,y != r\n Montgomery.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n };\n // Montgomery.prototype.sqrTo = montSqrTo;\n // r = \"x^2/R mod m\"; x != r\n Montgomery.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n this.reduce(r);\n };\n return Montgomery;\n}());\n//#endregion Montgomery\n//#region Barrett\n// Barrett modular reduction\nvar Barrett = /** @class */ (function () {\n function Barrett(m) {\n this.m = m;\n // setup Barrett\n this.r2 = nbi();\n this.q3 = nbi();\n BigInteger.ONE.dlShiftTo(2 * m.t, this.r2);\n this.mu = this.r2.divide(m);\n }\n // Barrett.prototype.convert = barrettConvert;\n Barrett.prototype.convert = function (x) {\n if (x.s < 0 || x.t > 2 * this.m.t) {\n return x.mod(this.m);\n }\n else if (x.compareTo(this.m) < 0) {\n return x;\n }\n else {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n }\n };\n // Barrett.prototype.revert = barrettRevert;\n Barrett.prototype.revert = function (x) {\n return x;\n };\n // Barrett.prototype.reduce = barrettReduce;\n // x = x mod m (HAC 14.42)\n Barrett.prototype.reduce = function (x) {\n x.drShiftTo(this.m.t - 1, this.r2);\n if (x.t > this.m.t + 1) {\n x.t = this.m.t + 1;\n x.clamp();\n }\n this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3);\n this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2);\n while (x.compareTo(this.r2) < 0) {\n x.dAddOffset(1, this.m.t + 1);\n }\n x.subTo(this.r2, x);\n while (x.compareTo(this.m) >= 0) {\n x.subTo(this.m, x);\n }\n };\n // Barrett.prototype.mulTo = barrettMulTo;\n // r = x*y mod m; x,y != r\n Barrett.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n };\n // Barrett.prototype.sqrTo = barrettSqrTo;\n // r = x^2 mod m; x != r\n Barrett.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n this.reduce(r);\n };\n return Barrett;\n}());\n//#endregion\n//#endregion REDUCERS\n// return new, unset BigInteger\nfunction nbi() { return new BigInteger(null); }\nfunction parseBigInt(str, r) {\n return new BigInteger(str, r);\n}\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\nvar inBrowser = typeof navigator !== \"undefined\";\nif (inBrowser && j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n // am2 avoids a big mult-and-extract completely.\n // Max digit bits should be <= 30 because we do bitwise ops\n // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\n BigInteger.prototype.am = function am2(i, x, w, j, c, n) {\n var xl = x & 0x7fff;\n var xh = x >> 15;\n while (--n >= 0) {\n var l = this[i] & 0x7fff;\n var h = this[i++] >> 15;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);\n c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30);\n w[j++] = l & 0x3fffffff;\n }\n return c;\n };\n dbits = 30;\n}\nelse if (inBrowser && j_lm && (navigator.appName != \"Netscape\")) {\n // am1: use a single mult and divide to get the high bits,\n // max digit bits should be 26 because\n // max internal value = 2*dvalue^2-2*dvalue (< 2^53)\n BigInteger.prototype.am = function am1(i, x, w, j, c, n) {\n while (--n >= 0) {\n var v = x * this[i++] + w[j] + c;\n c = Math.floor(v / 0x4000000);\n w[j++] = v & 0x3ffffff;\n }\n return c;\n };\n dbits = 26;\n}\nelse { // Mozilla/Netscape seems to prefer am3\n // Alternately, set max digit bits to 28 since some\n // browsers slow down when dealing with 32-bit numbers.\n BigInteger.prototype.am = function am3(i, x, w, j, c, n) {\n var xl = x & 0x3fff;\n var xh = x >> 14;\n while (--n >= 0) {\n var l = this[i] & 0x3fff;\n var h = this[i++] >> 14;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x3fff) << 14) + w[j] + c;\n c = (l >> 28) + (m >> 14) + xh * h;\n w[j++] = l & 0xfffffff;\n }\n return c;\n };\n dbits = 28;\n}\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = ((1 << dbits) - 1);\nBigInteger.prototype.DV = (1 << dbits);\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2, BI_FP);\nBigInteger.prototype.F1 = BI_FP - dbits;\nBigInteger.prototype.F2 = 2 * dbits - BI_FP;\n// Digit conversions\nvar BI_RC = [];\nvar rr;\nvar vv;\nrr = \"0\".charCodeAt(0);\nfor (vv = 0; vv <= 9; ++vv) {\n BI_RC[rr++] = vv;\n}\nrr = \"a\".charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\nrr = \"A\".charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\nfunction intAt(s, i) {\n var c = BI_RC[s.charCodeAt(i)];\n return (c == null) ? -1 : c;\n}\n// return bigint initialized to value\nfunction nbv(i) {\n var r = nbi();\n r.fromInt(i);\n return r;\n}\n// returns bit length of the integer x\nfunction nbits(x) {\n var r = 1;\n var t;\n if ((t = x >>> 16) != 0) {\n x = t;\n r += 16;\n }\n if ((t = x >> 8) != 0) {\n x = t;\n r += 8;\n }\n if ((t = x >> 4) != 0) {\n x = t;\n r += 4;\n }\n if ((t = x >> 2) != 0) {\n x = t;\n r += 2;\n }\n if ((t = x >> 1) != 0) {\n x = t;\n r += 1;\n }\n return r;\n}\n// \"constants\"\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/jsbn.js?"); + + /***/ + }), + + /***/ + "./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 != 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 this.d = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(D, 16);\n }\n else {\n console.error(\"Invalid RSA private key\");\n }\n };\n // RSAKey.prototype.setPrivateEx = RSASetPrivateEx;\n // Set the private key fields N, e, d and CRT params from hex strings\n RSAKey.prototype.setPrivateEx = function (N, E, D, P, Q, DP, DQ, C) {\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 this.d = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(D, 16);\n this.p = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(P, 16);\n this.q = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(Q, 16);\n this.dmp1 = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(DP, 16);\n this.dmq1 = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(DQ, 16);\n this.coeff = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(C, 16);\n }\n else {\n console.error(\"Invalid RSA private key\");\n }\n };\n // RSAKey.prototype.generate = RSAGenerate;\n // Generate a new random private key B bits long, using public expt E\n RSAKey.prototype.generate = function (B, E) {\n var rng = new _rng__WEBPACK_IMPORTED_MODULE_1__.SecureRandom();\n var qs = B >> 1;\n this.e = parseInt(E, 16);\n var ee = new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(E, 16);\n for (;;) {\n for (;;) {\n this.p = new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(B - qs, 1, rng);\n if (this.p.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE).gcd(ee).compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0 && this.p.isProbablePrime(10)) {\n break;\n }\n }\n for (;;) {\n this.q = new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(qs, 1, rng);\n if (this.q.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE).gcd(ee).compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0 && this.q.isProbablePrime(10)) {\n break;\n }\n }\n if (this.p.compareTo(this.q) <= 0) {\n var t = this.p;\n this.p = this.q;\n this.q = t;\n }\n var p1 = this.p.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n var q1 = this.q.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n var phi = p1.multiply(q1);\n if (phi.gcd(ee).compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0) {\n this.n = this.p.multiply(this.q);\n this.d = ee.modInverse(phi);\n this.dmp1 = this.d.mod(p1);\n this.dmq1 = this.d.mod(q1);\n this.coeff = this.q.modInverse(this.p);\n break;\n }\n }\n };\n // RSAKey.prototype.decrypt = RSADecrypt;\n // Return the PKCS#1 RSA decryption of \"ctext\".\n // \"ctext\" is an even-length hex string and the output is a plain string.\n RSAKey.prototype.decrypt = function (ctext) {\n var c = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(ctext, 16);\n var m = this.doPrivate(c);\n if (m == null) {\n return null;\n }\n return pkcs1unpad2(m, (this.n.bitLength() + 7) >> 3);\n };\n // Generate a new random private key B bits long, using public expt E\n RSAKey.prototype.generateAsync = function (B, E, callback) {\n var rng = new _rng__WEBPACK_IMPORTED_MODULE_1__.SecureRandom();\n var qs = B >> 1;\n this.e = parseInt(E, 16);\n var ee = new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(E, 16);\n var rsa = this;\n // These functions have non-descript names because they were originally for(;;) loops.\n // I don't know about cryptography to give them better names than loop1-4.\n var loop1 = function () {\n var loop4 = function () {\n if (rsa.p.compareTo(rsa.q) <= 0) {\n var t = rsa.p;\n rsa.p = rsa.q;\n rsa.q = t;\n }\n var p1 = rsa.p.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n var q1 = rsa.q.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n var phi = p1.multiply(q1);\n if (phi.gcd(ee).compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0) {\n rsa.n = rsa.p.multiply(rsa.q);\n rsa.d = ee.modInverse(phi);\n rsa.dmp1 = rsa.d.mod(p1);\n rsa.dmq1 = rsa.d.mod(q1);\n rsa.coeff = rsa.q.modInverse(rsa.p);\n setTimeout(function () { callback(); }, 0); // escape\n }\n else {\n setTimeout(loop1, 0);\n }\n };\n var loop3 = function () {\n rsa.q = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.nbi)();\n rsa.q.fromNumberAsync(qs, 1, rng, function () {\n rsa.q.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE).gcda(ee, function (r) {\n if (r.compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0 && rsa.q.isProbablePrime(10)) {\n setTimeout(loop4, 0);\n }\n else {\n setTimeout(loop3, 0);\n }\n });\n });\n };\n var loop2 = function () {\n rsa.p = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.nbi)();\n rsa.p.fromNumberAsync(B - qs, 1, rng, function () {\n rsa.p.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE).gcda(ee, function (r) {\n if (r.compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0 && rsa.p.isProbablePrime(10)) {\n setTimeout(loop3, 0);\n }\n else {\n setTimeout(loop2, 0);\n }\n });\n });\n };\n setTimeout(loop2, 0);\n };\n setTimeout(loop1, 0);\n };\n RSAKey.prototype.sign = function (text, digestMethod, digestName) {\n var header = getDigestHeader(digestName);\n var digest = header + digestMethod(text).toString();\n var m = pkcs1pad1(digest, this.n.bitLength() / 4);\n if (m == null) {\n return null;\n }\n var c = this.doPrivate(m);\n if (c == null) {\n return null;\n }\n var h = c.toString(16);\n if ((h.length & 1) == 0) {\n return h;\n }\n else {\n return \"0\" + h;\n }\n };\n RSAKey.prototype.verify = function (text, signature, digestMethod) {\n var c = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(signature, 16);\n var m = this.doPublic(c);\n if (m == null) {\n return null;\n }\n var unpadded = m.toString(16).replace(/^1f+00/, \"\");\n var digest = removeDigestHeader(unpadded);\n return digest == digestMethod(text).toString();\n };\n return RSAKey;\n}());\n\n// Undo PKCS#1 (type 2, random) padding and, if valid, return the plaintext\nfunction pkcs1unpad2(d, n) {\n var b = d.toByteArray();\n var i = 0;\n while (i < b.length && b[i] == 0) {\n ++i;\n }\n if (b.length - i != n - 1 || b[i] != 2) {\n return null;\n }\n ++i;\n while (b[i] != 0) {\n if (++i >= b.length) {\n return null;\n }\n }\n var ret = \"\";\n while (++i < b.length) {\n var c = b[i] & 255;\n if (c < 128) { // utf-8 decode\n ret += String.fromCharCode(c);\n }\n else if ((c > 191) && (c < 224)) {\n ret += String.fromCharCode(((c & 31) << 6) | (b[i + 1] & 63));\n ++i;\n }\n else {\n ret += String.fromCharCode(((c & 15) << 12) | ((b[i + 1] & 63) << 6) | (b[i + 2] & 63));\n i += 2;\n }\n }\n return ret;\n}\n// https://tools.ietf.org/html/rfc3447#page-43\nvar DIGEST_HEADERS = {\n md2: \"3020300c06082a864886f70d020205000410\",\n md5: \"3020300c06082a864886f70d020505000410\",\n sha1: \"3021300906052b0e03021a05000414\",\n sha224: \"302d300d06096086480165030402040500041c\",\n sha256: \"3031300d060960864801650304020105000420\",\n sha384: \"3041300d060960864801650304020205000430\",\n sha512: \"3051300d060960864801650304020305000440\",\n ripemd160: \"3021300906052b2403020105000414\"\n};\nfunction getDigestHeader(name) {\n return DIGEST_HEADERS[name] || \"\";\n}\nfunction removeDigestHeader(str) {\n for (var name_1 in DIGEST_HEADERS) {\n if (DIGEST_HEADERS.hasOwnProperty(name_1)) {\n var header = DIGEST_HEADERS[name_1];\n var len = header.length;\n if (str.substr(0, len) == header) {\n return str.substr(len);\n }\n }\n }\n return str;\n}\n// Return the PKCS#1 RSA encryption of \"text\" as a Base64-encoded string\n// function RSAEncryptB64(text) {\n// var h = this.encrypt(text);\n// if(h) return hex2b64(h); else return null;\n// }\n// public\n// RSAKey.prototype.encrypt_b64 = RSAEncryptB64;\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/rsa.js?"); + + /***/ + }), + + /***/ + "./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 MIT License\n */\n/**\n * kjur's class library name space\n *

\n * This name space provides following name spaces:\n *

    \n *
  • {@link KJUR.asn1} - ASN.1 primitive hexadecimal encoder
  • \n *
  • {@link KJUR.asn1.x509} - ASN.1 structure for X.509 certificate and CRL
  • \n *
  • {@link KJUR.crypto} - Java Cryptographic Extension(JCE) style MessageDigest/Signature\n * class and utilities
  • \n *
\n *

\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 *

\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 *

PROVIDING ASN.1 PRIMITIVES

\n * Here are ASN.1 DER primitive classes.\n *
    \n *
  • 0x01 {@link KJUR.asn1.DERBoolean}
  • \n *
  • 0x02 {@link KJUR.asn1.DERInteger}
  • \n *
  • 0x03 {@link KJUR.asn1.DERBitString}
  • \n *
  • 0x04 {@link KJUR.asn1.DEROctetString}
  • \n *
  • 0x05 {@link KJUR.asn1.DERNull}
  • \n *
  • 0x06 {@link KJUR.asn1.DERObjectIdentifier}
  • \n *
  • 0x0a {@link KJUR.asn1.DEREnumerated}
  • \n *
  • 0x0c {@link KJUR.asn1.DERUTF8String}
  • \n *
  • 0x12 {@link KJUR.asn1.DERNumericString}
  • \n *
  • 0x13 {@link KJUR.asn1.DERPrintableString}
  • \n *
  • 0x14 {@link KJUR.asn1.DERTeletexString}
  • \n *
  • 0x16 {@link KJUR.asn1.DERIA5String}
  • \n *
  • 0x17 {@link KJUR.asn1.DERUTCTime}
  • \n *
  • 0x18 {@link KJUR.asn1.DERGeneralizedTime}
  • \n *
  • 0x30 {@link KJUR.asn1.DERSequence}
  • \n *
  • 0x31 {@link KJUR.asn1.DERSet}
  • \n *
\n *

OTHER ASN.1 CLASSES

\n *
    \n *
  • {@link KJUR.asn1.ASN1Object}
  • \n *
  • {@link KJUR.asn1.DERAbstractString}
  • \n *
  • {@link KJUR.asn1.DERAbstractTime}
  • \n *
  • {@link KJUR.asn1.DERAbstractStructured}
  • \n *
  • {@link KJUR.asn1.DERTaggedObject}
  • \n *
\n *

SUB NAME SPACES

\n *
    \n *
  • {@link KJUR.asn1.cades} - CAdES long term signature format
  • \n *
  • {@link KJUR.asn1.cms} - Cryptographic Message Syntax
  • \n *
  • {@link KJUR.asn1.csr} - Certificate Signing Request (CSR/PKCS#10)
  • \n *
  • {@link KJUR.asn1.tsp} - RFC 3161 Timestamping Protocol Format
  • \n *
  • {@link KJUR.asn1.x509} - RFC 5280 X.509 certificate and CRL
  • \n *
\n *

\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 var biMask = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(hMask, 16);\n var biNeg = biMask.xor(bigIntegerValue).add(_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n h = biNeg.toString(16).replace(/^-/, '');\n }\n return h;\n };\n /**\n * get PEM string from hexadecimal data and header string\n * @name getPEMStringFromHex\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} dataHex hexadecimal string of PEM body\n * @param {String} pemHeader PEM header string (ex. 'RSA PRIVATE KEY')\n * @return {String} PEM formatted string of input data\n * @description\n * This method converts a hexadecimal string to a PEM string with\n * a specified header. Its line break will be CRLF(\"\\r\\n\").\n * @example\n * var pem = KJUR.asn1.ASN1Util.getPEMStringFromHex('616161', 'RSA PRIVATE KEY');\n * // value of pem will be:\n * -----BEGIN PRIVATE KEY-----\n * YWFh\n * -----END PRIVATE KEY-----\n */\n this.getPEMStringFromHex = function (dataHex, pemHeader) {\n return hextopem(dataHex, pemHeader);\n };\n /**\n * generate ASN1Object specifed by JSON parameters\n * @name newObject\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {Array} param JSON parameter to generate ASN1Object\n * @return {KJUR.asn1.ASN1Object} generated object\n * @since asn1 1.0.3\n * @description\n * generate any ASN1Object specified by JSON param\n * including ASN.1 primitive or structured.\n * Generally 'param' can be described as follows:\n *
\n * {TYPE-OF-ASNOBJ: ASN1OBJ-PARAMETER}\n *
\n * 'TYPE-OF-ASN1OBJ' can be one of following symbols:\n *
    \n *
  • 'bool' - DERBoolean
  • \n *
  • 'int' - DERInteger
  • \n *
  • 'bitstr' - DERBitString
  • \n *
  • 'octstr' - DEROctetString
  • \n *
  • 'null' - DERNull
  • \n *
  • 'oid' - DERObjectIdentifier
  • \n *
  • 'enum' - DEREnumerated
  • \n *
  • 'utf8str' - DERUTF8String
  • \n *
  • 'numstr' - DERNumericString
  • \n *
  • 'prnstr' - DERPrintableString
  • \n *
  • 'telstr' - DERTeletexString
  • \n *
  • 'ia5str' - DERIA5String
  • \n *
  • 'utctime' - DERUTCTime
  • \n *
  • 'gentime' - DERGeneralizedTime
  • \n *
  • 'seq' - DERSequence
  • \n *
  • 'set' - DERSet
  • \n *
  • 'tag' - DERTaggedObject
  • \n *
\n * @example\n * newObject({'prnstr': 'aaa'});\n * newObject({'seq': [{'int': 3}, {'prnstr': 'aaa'}]})\n * // ASN.1 Tagged Object\n * newObject({'tag': {'tag': 'a1',\n * 'explicit': true,\n * 'obj': {'seq': [{'int': 3}, {'prnstr': 'aaa'}]}}});\n * // more simple representation of ASN.1 Tagged Object\n * newObject({'tag': ['a1',\n * true,\n * {'seq': [\n * {'int': 3},\n * {'prnstr': 'aaa'}]}\n * ]});\n */\n this.newObject = function (param) {\n var _KJUR = KJUR, _KJUR_asn1 = _KJUR.asn1, _DERBoolean = _KJUR_asn1.DERBoolean, _DERInteger = _KJUR_asn1.DERInteger, _DERBitString = _KJUR_asn1.DERBitString, _DEROctetString = _KJUR_asn1.DEROctetString, _DERNull = _KJUR_asn1.DERNull, _DERObjectIdentifier = _KJUR_asn1.DERObjectIdentifier, _DEREnumerated = _KJUR_asn1.DEREnumerated, _DERUTF8String = _KJUR_asn1.DERUTF8String, _DERNumericString = _KJUR_asn1.DERNumericString, _DERPrintableString = _KJUR_asn1.DERPrintableString, _DERTeletexString = _KJUR_asn1.DERTeletexString, _DERIA5String = _KJUR_asn1.DERIA5String, _DERUTCTime = _KJUR_asn1.DERUTCTime, _DERGeneralizedTime = _KJUR_asn1.DERGeneralizedTime, _DERSequence = _KJUR_asn1.DERSequence, _DERSet = _KJUR_asn1.DERSet, _DERTaggedObject = _KJUR_asn1.DERTaggedObject, _newObject = _KJUR_asn1.ASN1Util.newObject;\n var keys = Object.keys(param);\n if (keys.length != 1)\n throw \"key of param shall be only one.\";\n var key = keys[0];\n if (\":bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:seq:set:tag:\".indexOf(\":\" + key + \":\") == -1)\n throw \"undefined key: \" + key;\n if (key == \"bool\")\n return new _DERBoolean(param[key]);\n if (key == \"int\")\n return new _DERInteger(param[key]);\n if (key == \"bitstr\")\n return new _DERBitString(param[key]);\n if (key == \"octstr\")\n return new _DEROctetString(param[key]);\n if (key == \"null\")\n return new _DERNull(param[key]);\n if (key == \"oid\")\n return new _DERObjectIdentifier(param[key]);\n if (key == \"enum\")\n return new _DEREnumerated(param[key]);\n if (key == \"utf8str\")\n return new _DERUTF8String(param[key]);\n if (key == \"numstr\")\n return new _DERNumericString(param[key]);\n if (key == \"prnstr\")\n return new _DERPrintableString(param[key]);\n if (key == \"telstr\")\n return new _DERTeletexString(param[key]);\n if (key == \"ia5str\")\n return new _DERIA5String(param[key]);\n if (key == \"utctime\")\n return new _DERUTCTime(param[key]);\n if (key == \"gentime\")\n return new _DERGeneralizedTime(param[key]);\n if (key == \"seq\") {\n var paramList = param[key];\n var a = [];\n for (var i = 0; i < paramList.length; i++) {\n var asn1Obj = _newObject(paramList[i]);\n a.push(asn1Obj);\n }\n return new _DERSequence({ 'array': a });\n }\n if (key == \"set\") {\n var paramList = param[key];\n var a = [];\n for (var i = 0; i < paramList.length; i++) {\n var asn1Obj = _newObject(paramList[i]);\n a.push(asn1Obj);\n }\n return new _DERSet({ 'array': a });\n }\n if (key == \"tag\") {\n var tagParam = param[key];\n if (Object.prototype.toString.call(tagParam) === '[object Array]' &&\n tagParam.length == 3) {\n var obj = _newObject(tagParam[2]);\n return new _DERTaggedObject({ tag: tagParam[0],\n explicit: tagParam[1],\n obj: obj });\n }\n else {\n var newParam = {};\n if (tagParam.explicit !== undefined)\n newParam.explicit = tagParam.explicit;\n if (tagParam.tag !== undefined)\n newParam.tag = tagParam.tag;\n if (tagParam.obj === undefined)\n throw \"obj shall be specified for 'tag'.\";\n newParam.obj = _newObject(tagParam.obj);\n return new _DERTaggedObject(newParam);\n }\n }\n };\n /**\n * get encoded hexadecimal string of ASN1Object specifed by JSON parameters\n * @name jsonToASN1HEX\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {Array} param JSON parameter to generate ASN1Object\n * @return hexadecimal string of ASN1Object\n * @since asn1 1.0.4\n * @description\n * As for ASN.1 object representation of JSON object,\n * please see {@link newObject}.\n * @example\n * jsonToASN1HEX({'prnstr': 'aaa'});\n */\n this.jsonToASN1HEX = function (param) {\n var asn1Obj = this.newObject(param);\n return asn1Obj.getEncodedHex();\n };\n};\n/**\n * get dot noted oid number string from hexadecimal value of OID\n * @name oidHexToInt\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} hex hexadecimal value of object identifier\n * @return {String} dot noted string of object identifier\n * @since jsrsasign 4.8.3 asn1 1.0.7\n * @description\n * This static method converts from hexadecimal string representation of\n * ASN.1 value of object identifier to oid number string.\n * @example\n * KJUR.asn1.ASN1Util.oidHexToInt('550406') → \"2.5.4.6\"\n */\nKJUR.asn1.ASN1Util.oidHexToInt = function (hex) {\n var s = \"\";\n var i01 = parseInt(hex.substr(0, 2), 16);\n var i0 = Math.floor(i01 / 40);\n var i1 = i01 % 40;\n var s = i0 + \".\" + i1;\n var binbuf = \"\";\n for (var i = 2; i < hex.length; i += 2) {\n var value = parseInt(hex.substr(i, 2), 16);\n var bin = (\"00000000\" + value.toString(2)).slice(-8);\n binbuf = binbuf + bin.substr(1, 7);\n if (bin.substr(0, 1) == \"0\") {\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(binbuf, 2);\n s = s + \".\" + bi.toString(10);\n binbuf = \"\";\n }\n }\n ;\n return s;\n};\n/**\n * get hexadecimal value of object identifier from dot noted oid value\n * @name oidIntToHex\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} oidString dot noted string of object identifier\n * @return {String} hexadecimal value of object identifier\n * @since jsrsasign 4.8.3 asn1 1.0.7\n * @description\n * This static method converts from object identifier value string.\n * to hexadecimal string representation of it.\n * @example\n * KJUR.asn1.ASN1Util.oidIntToHex(\"2.5.4.6\") → \"550406\"\n */\nKJUR.asn1.ASN1Util.oidIntToHex = function (oidString) {\n var itox = function (i) {\n var h = i.toString(16);\n if (h.length == 1)\n h = '0' + h;\n return h;\n };\n var roidtox = function (roid) {\n var h = '';\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(roid, 10);\n var b = bi.toString(2);\n var padLen = 7 - b.length % 7;\n if (padLen == 7)\n padLen = 0;\n var bPad = '';\n for (var i = 0; i < padLen; i++)\n bPad += '0';\n b = bPad + b;\n for (var i = 0; i < b.length - 1; i += 7) {\n var b8 = b.substr(i, 7);\n if (i != b.length - 7)\n b8 = '1' + b8;\n h += itox(parseInt(b8, 2));\n }\n return h;\n };\n if (!oidString.match(/^[0-9.]+$/)) {\n throw \"malformed oid string: \" + oidString;\n }\n var h = '';\n var a = oidString.split('.');\n var i0 = parseInt(a[0]) * 40 + parseInt(a[1]);\n h += itox(i0);\n a.splice(0, 2);\n for (var i = 0; i < a.length; i++) {\n h += roidtox(a[i]);\n }\n return h;\n};\n// ********************************************************************\n// Abstract ASN.1 Classes\n// ********************************************************************\n// ********************************************************************\n/**\n * base class for ASN.1 DER encoder object\n * @name KJUR.asn1.ASN1Object\n * @class base class for ASN.1 DER encoder object\n * @property {Boolean} isModified flag whether internal data was changed\n * @property {String} hTLV hexadecimal string of ASN.1 TLV\n * @property {String} hT hexadecimal string of ASN.1 TLV tag(T)\n * @property {String} hL hexadecimal string of ASN.1 TLV length(L)\n * @property {String} hV hexadecimal string of ASN.1 TLV value(V)\n * @description\n */\nKJUR.asn1.ASN1Object = function () {\n var isModified = true;\n var hTLV = null;\n var hT = '00';\n var hL = '00';\n var hV = '';\n /**\n * get hexadecimal ASN.1 TLV length(L) bytes from TLV value(V)\n * @name getLengthHexFromValue\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV length(L)\n */\n this.getLengthHexFromValue = function () {\n if (typeof this.hV == \"undefined\" || this.hV == null) {\n throw \"this.hV is null or undefined.\";\n }\n if (this.hV.length % 2 == 1) {\n throw \"value hex must be even length: n=\" + hV.length + \",v=\" + this.hV;\n }\n var n = this.hV.length / 2;\n var hN = n.toString(16);\n if (hN.length % 2 == 1) {\n hN = \"0\" + hN;\n }\n if (n < 128) {\n return hN;\n }\n else {\n var hNlen = hN.length / 2;\n if (hNlen > 15) {\n throw \"ASN.1 length too long to represent by 8x: n = \" + n.toString(16);\n }\n var head = 128 + hNlen;\n return head.toString(16) + hN;\n }\n };\n /**\n * get hexadecimal string of ASN.1 TLV bytes\n * @name getEncodedHex\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV\n */\n this.getEncodedHex = function () {\n if (this.hTLV == null || this.isModified) {\n this.hV = this.getFreshValueHex();\n this.hL = this.getLengthHexFromValue();\n this.hTLV = this.hT + this.hL + this.hV;\n this.isModified = false;\n //alert(\"first time: \" + this.hTLV);\n }\n return this.hTLV;\n };\n /**\n * get hexadecimal string of ASN.1 TLV value(V) bytes\n * @name getValueHex\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV value(V) bytes\n */\n this.getValueHex = function () {\n this.getEncodedHex();\n return this.hV;\n };\n this.getFreshValueHex = function () {\n return '';\n };\n};\n// == BEGIN DERAbstractString ================================================\n/**\n * base class for ASN.1 DER string classes\n * @name KJUR.asn1.DERAbstractString\n * @class base class for ASN.1 DER string classes\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @property {String} s internal string of value\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • str - specify initial ASN.1 value(V) by a string
  • \n *
  • hex - specify initial ASN.1 value(V) by a hexadecimal string
  • \n *
\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERAbstractString = function (params) {\n KJUR.asn1.DERAbstractString.superclass.constructor.call(this);\n var s = null;\n var hV = null;\n /**\n * get string value of this string object\n * @name getString\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @return {String} string value of this string object\n */\n this.getString = function () {\n return this.s;\n };\n /**\n * set value by a string\n * @name setString\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @param {String} newS value by a string to set\n */\n this.setString = function (newS) {\n this.hTLV = null;\n this.isModified = true;\n this.s = newS;\n this.hV = stohex(this.s);\n };\n /**\n * set value by a hexadecimal string\n * @name setStringHex\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @param {String} newHexString value by a hexadecimal string to set\n */\n this.setStringHex = function (newHexString) {\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = newHexString;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params == \"string\") {\n this.setString(params);\n }\n else if (typeof params['str'] != \"undefined\") {\n this.setString(params['str']);\n }\n else if (typeof params['hex'] != \"undefined\") {\n this.setStringHex(params['hex']);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERAbstractString, KJUR.asn1.ASN1Object);\n// == END DERAbstractString ================================================\n// == BEGIN DERAbstractTime ==================================================\n/**\n * base class for ASN.1 DER Generalized/UTCTime class\n * @name KJUR.asn1.DERAbstractTime\n * @class base class for ASN.1 DER Generalized/UTCTime class\n * @param {Array} params associative array of parameters (ex. {'str': '130430235959Z'})\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERAbstractTime = function (params) {\n KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);\n var s = null;\n var date = null;\n // --- PRIVATE METHODS --------------------\n this.localDateToUTC = function (d) {\n utc = d.getTime() + (d.getTimezoneOffset() * 60000);\n var utcDate = new Date(utc);\n return utcDate;\n };\n /*\n * format date string by Data object\n * @name formatDate\n * @memberOf KJUR.asn1.AbstractTime;\n * @param {Date} dateObject\n * @param {string} type 'utc' or 'gen'\n * @param {boolean} withMillis flag for with millisections or not\n * @description\n * 'withMillis' flag is supported from asn1 1.0.6.\n */\n this.formatDate = function (dateObject, type, withMillis) {\n var pad = this.zeroPadding;\n var d = this.localDateToUTC(dateObject);\n var year = String(d.getFullYear());\n if (type == 'utc')\n year = year.substr(2, 2);\n var month = pad(String(d.getMonth() + 1), 2);\n var day = pad(String(d.getDate()), 2);\n var hour = pad(String(d.getHours()), 2);\n var min = pad(String(d.getMinutes()), 2);\n var sec = pad(String(d.getSeconds()), 2);\n var s = year + month + day + hour + min + sec;\n if (withMillis === true) {\n var millis = d.getMilliseconds();\n if (millis != 0) {\n var sMillis = pad(String(millis), 3);\n sMillis = sMillis.replace(/[0]+$/, \"\");\n s = s + \".\" + sMillis;\n }\n }\n return s + \"Z\";\n };\n this.zeroPadding = function (s, len) {\n if (s.length >= len)\n return s;\n return new Array(len - s.length + 1).join('0') + s;\n };\n // --- PUBLIC METHODS --------------------\n /**\n * get string value of this string object\n * @name getString\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @return {String} string value of this time object\n */\n this.getString = function () {\n return this.s;\n };\n /**\n * set value by a string\n * @name setString\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @param {String} newS value by a string to set such like \"130430235959Z\"\n */\n this.setString = function (newS) {\n this.hTLV = null;\n this.isModified = true;\n this.s = newS;\n this.hV = stohex(newS);\n };\n /**\n * set value by a Date object\n * @name setByDateValue\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @param {Integer} year year of date (ex. 2013)\n * @param {Integer} month month of date between 1 and 12 (ex. 12)\n * @param {Integer} day day of month\n * @param {Integer} hour hours of date\n * @param {Integer} min minutes of date\n * @param {Integer} sec seconds of date\n */\n this.setByDateValue = function (year, month, day, hour, min, sec) {\n var dateObject = new Date(Date.UTC(year, month - 1, day, hour, min, sec, 0));\n this.setByDate(dateObject);\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERAbstractTime, KJUR.asn1.ASN1Object);\n// == END DERAbstractTime ==================================================\n// == BEGIN DERAbstractStructured ============================================\n/**\n * base class for ASN.1 DER structured class\n * @name KJUR.asn1.DERAbstractStructured\n * @class base class for ASN.1 DER structured class\n * @property {Array} asn1Array internal array of ASN1Object\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERAbstractStructured = function (params) {\n KJUR.asn1.DERAbstractString.superclass.constructor.call(this);\n var asn1Array = null;\n /**\n * set value by array of ASN1Object\n * @name setByASN1ObjectArray\n * @memberOf KJUR.asn1.DERAbstractStructured#\n * @function\n * @param {array} asn1ObjectArray array of ASN1Object to set\n */\n this.setByASN1ObjectArray = function (asn1ObjectArray) {\n this.hTLV = null;\n this.isModified = true;\n this.asn1Array = asn1ObjectArray;\n };\n /**\n * append an ASN1Object to internal array\n * @name appendASN1Object\n * @memberOf KJUR.asn1.DERAbstractStructured#\n * @function\n * @param {ASN1Object} asn1Object to add\n */\n this.appendASN1Object = function (asn1Object) {\n this.hTLV = null;\n this.isModified = true;\n this.asn1Array.push(asn1Object);\n };\n this.asn1Array = new Array();\n if (typeof params != \"undefined\") {\n if (typeof params['array'] != \"undefined\") {\n this.asn1Array = params['array'];\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERAbstractStructured, KJUR.asn1.ASN1Object);\n// ********************************************************************\n// ASN.1 Object Classes\n// ********************************************************************\n// ********************************************************************\n/**\n * class for ASN.1 DER Boolean\n * @name KJUR.asn1.DERBoolean\n * @class class for ASN.1 DER Boolean\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERBoolean = function () {\n KJUR.asn1.DERBoolean.superclass.constructor.call(this);\n this.hT = \"01\";\n this.hTLV = \"0101ff\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERBoolean, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER Integer\n * @name KJUR.asn1.DERInteger\n * @class class for ASN.1 DER Integer\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • int - specify initial ASN.1 value(V) by integer value
  • \n *
  • bigint - specify initial ASN.1 value(V) by BigInteger object
  • \n *
  • hex - specify initial ASN.1 value(V) by a hexadecimal string
  • \n *
\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERInteger = function (params) {\n KJUR.asn1.DERInteger.superclass.constructor.call(this);\n this.hT = \"02\";\n /**\n * set value by Tom Wu's BigInteger object\n * @name setByBigInteger\n * @memberOf KJUR.asn1.DERInteger#\n * @function\n * @param {BigInteger} bigIntegerValue to set\n */\n this.setByBigInteger = function (bigIntegerValue) {\n this.hTLV = null;\n this.isModified = true;\n this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue);\n };\n /**\n * set value by integer value\n * @name setByInteger\n * @memberOf KJUR.asn1.DERInteger\n * @function\n * @param {Integer} integer value to set\n */\n this.setByInteger = function (intValue) {\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(String(intValue), 10);\n this.setByBigInteger(bi);\n };\n /**\n * set value by integer value\n * @name setValueHex\n * @memberOf KJUR.asn1.DERInteger#\n * @function\n * @param {String} hexadecimal string of integer value\n * @description\n *
\n * NOTE: Value shall be represented by minimum octet length of\n * two's complement representation.\n * @example\n * new KJUR.asn1.DERInteger(123);\n * new KJUR.asn1.DERInteger({'int': 123});\n * new KJUR.asn1.DERInteger({'hex': '1fad'});\n */\n this.setValueHex = function (newHexString) {\n this.hV = newHexString;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params['bigint'] != \"undefined\") {\n this.setByBigInteger(params['bigint']);\n }\n else if (typeof params['int'] != \"undefined\") {\n this.setByInteger(params['int']);\n }\n else if (typeof params == \"number\") {\n this.setByInteger(params);\n }\n else if (typeof params['hex'] != \"undefined\") {\n this.setValueHex(params['hex']);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERInteger, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER encoded BitString primitive\n * @name KJUR.asn1.DERBitString\n * @class class for ASN.1 DER encoded BitString primitive\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • bin - specify binary string (ex. '10111')
  • \n *
  • array - specify array of boolean (ex. [true,false,true,true])
  • \n *
  • hex - specify hexadecimal string of ASN.1 value(V) including unused bits
  • \n *
  • obj - specify {@link KJUR.asn1.ASN1Util.newObject}\n * argument for \"BitString encapsulates\" structure.
  • \n *
\n * NOTE1: 'params' can be omitted.
\n * NOTE2: 'obj' parameter have been supported since\n * asn1 1.0.11, jsrsasign 6.1.1 (2016-Sep-25).
\n * @example\n * // default constructor\n * o = new KJUR.asn1.DERBitString();\n * // initialize with binary string\n * o = new KJUR.asn1.DERBitString({bin: \"1011\"});\n * // initialize with boolean array\n * o = new KJUR.asn1.DERBitString({array: [true,false,true,true]});\n * // initialize with hexadecimal string (04 is unused bits)\n * o = new KJUR.asn1.DEROctetString({hex: \"04bac0\"});\n * // initialize with ASN1Util.newObject argument for encapsulated\n * o = new KJUR.asn1.DERBitString({obj: {seq: [{int: 3}, {prnstr: 'aaa'}]}});\n * // above generates a ASN.1 data like this:\n * // BIT STRING, encapsulates {\n * // SEQUENCE {\n * // INTEGER 3\n * // PrintableString 'aaa'\n * // }\n * // }\n */\nKJUR.asn1.DERBitString = function (params) {\n if (params !== undefined && typeof params.obj !== \"undefined\") {\n var o = KJUR.asn1.ASN1Util.newObject(params.obj);\n params.hex = \"00\" + o.getEncodedHex();\n }\n KJUR.asn1.DERBitString.superclass.constructor.call(this);\n this.hT = \"03\";\n /**\n * set ASN.1 value(V) by a hexadecimal string including unused bits\n * @name setHexValueIncludingUnusedBits\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {String} newHexStringIncludingUnusedBits\n */\n this.setHexValueIncludingUnusedBits = function (newHexStringIncludingUnusedBits) {\n this.hTLV = null;\n this.isModified = true;\n this.hV = newHexStringIncludingUnusedBits;\n };\n /**\n * set ASN.1 value(V) by unused bit and hexadecimal string of value\n * @name setUnusedBitsAndHexValue\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {Integer} unusedBits\n * @param {String} hValue\n */\n this.setUnusedBitsAndHexValue = function (unusedBits, hValue) {\n if (unusedBits < 0 || 7 < unusedBits) {\n throw \"unused bits shall be from 0 to 7: u = \" + unusedBits;\n }\n var hUnusedBits = \"0\" + unusedBits;\n this.hTLV = null;\n this.isModified = true;\n this.hV = hUnusedBits + hValue;\n };\n /**\n * set ASN.1 DER BitString by binary string
\n * @name setByBinaryString\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {String} binaryString binary value string (i.e. '10111')\n * @description\n * Its unused bits will be calculated automatically by length of\n * 'binaryValue'.
\n * NOTE: Trailing zeros '0' will be ignored.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.setByBooleanArray(\"01011\");\n */\n this.setByBinaryString = function (binaryString) {\n binaryString = binaryString.replace(/0+$/, '');\n var unusedBits = 8 - binaryString.length % 8;\n if (unusedBits == 8)\n unusedBits = 0;\n for (var i = 0; i <= unusedBits; i++) {\n binaryString += '0';\n }\n var h = '';\n for (var i = 0; i < binaryString.length - 1; i += 8) {\n var b = binaryString.substr(i, 8);\n var x = parseInt(b, 2).toString(16);\n if (x.length == 1)\n x = '0' + x;\n h += x;\n }\n this.hTLV = null;\n this.isModified = true;\n this.hV = '0' + unusedBits + h;\n };\n /**\n * set ASN.1 TLV value(V) by an array of boolean
\n * @name setByBooleanArray\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {array} booleanArray array of boolean (ex. [true, false, true])\n * @description\n * NOTE: Trailing falses will be ignored in the ASN.1 DER Object.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.setByBooleanArray([false, true, false, true, true]);\n */\n this.setByBooleanArray = function (booleanArray) {\n var s = '';\n for (var i = 0; i < booleanArray.length; i++) {\n if (booleanArray[i] == true) {\n s += '1';\n }\n else {\n s += '0';\n }\n }\n this.setByBinaryString(s);\n };\n /**\n * generate an array of falses with specified length
\n * @name newFalseArray\n * @memberOf KJUR.asn1.DERBitString\n * @function\n * @param {Integer} nLength length of array to generate\n * @return {array} array of boolean falses\n * @description\n * This static method may be useful to initialize boolean array.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.newFalseArray(3) → [false, false, false]\n */\n this.newFalseArray = function (nLength) {\n var a = new Array(nLength);\n for (var i = 0; i < nLength; i++) {\n a[i] = false;\n }\n return a;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params == \"string\" && params.toLowerCase().match(/^[0-9a-f]+$/)) {\n this.setHexValueIncludingUnusedBits(params);\n }\n else if (typeof params['hex'] != \"undefined\") {\n this.setHexValueIncludingUnusedBits(params['hex']);\n }\n else if (typeof params['bin'] != \"undefined\") {\n this.setByBinaryString(params['bin']);\n }\n else if (typeof params['array'] != \"undefined\") {\n this.setByBooleanArray(params['array']);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERBitString, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER OctetString
\n * @name KJUR.asn1.DEROctetString\n * @class class for ASN.1 DER OctetString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * This class provides ASN.1 OctetString simple type.
\n * Supported \"params\" attributes are:\n *
    \n *
  • str - to set a string as a value
  • \n *
  • hex - to set a hexadecimal string as a value
  • \n *
  • obj - to set a encapsulated ASN.1 value by JSON object\n * which is defined in {@link KJUR.asn1.ASN1Util.newObject}
  • \n *
\n * NOTE: A parameter 'obj' have been supported\n * for \"OCTET STRING, encapsulates\" structure.\n * since asn1 1.0.11, jsrsasign 6.1.1 (2016-Sep-25).\n * @see KJUR.asn1.DERAbstractString - superclass\n * @example\n * // default constructor\n * o = new KJUR.asn1.DEROctetString();\n * // initialize with string\n * o = new KJUR.asn1.DEROctetString({str: \"aaa\"});\n * // initialize with hexadecimal string\n * o = new KJUR.asn1.DEROctetString({hex: \"616161\"});\n * // initialize with ASN1Util.newObject argument\n * o = new KJUR.asn1.DEROctetString({obj: {seq: [{int: 3}, {prnstr: 'aaa'}]}});\n * // above generates a ASN.1 data like this:\n * // OCTET STRING, encapsulates {\n * // SEQUENCE {\n * // INTEGER 3\n * // PrintableString 'aaa'\n * // }\n * // }\n */\nKJUR.asn1.DEROctetString = function (params) {\n if (params !== undefined && typeof params.obj !== \"undefined\") {\n var o = KJUR.asn1.ASN1Util.newObject(params.obj);\n params.hex = o.getEncodedHex();\n }\n KJUR.asn1.DEROctetString.superclass.constructor.call(this, params);\n this.hT = \"04\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DEROctetString, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER Null\n * @name KJUR.asn1.DERNull\n * @class class for ASN.1 DER Null\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERNull = function () {\n KJUR.asn1.DERNull.superclass.constructor.call(this);\n this.hT = \"05\";\n this.hTLV = \"0500\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERNull, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER ObjectIdentifier\n * @name KJUR.asn1.DERObjectIdentifier\n * @class class for ASN.1 DER ObjectIdentifier\n * @param {Array} params associative array of parameters (ex. {'oid': '2.5.4.5'})\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • oid - specify initial ASN.1 value(V) by a oid string (ex. 2.5.4.13)
  • \n *
  • hex - specify initial ASN.1 value(V) by a hexadecimal string
  • \n *
\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERObjectIdentifier = function (params) {\n var itox = function (i) {\n var h = i.toString(16);\n if (h.length == 1)\n h = '0' + h;\n return h;\n };\n var roidtox = function (roid) {\n var h = '';\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(roid, 10);\n var b = bi.toString(2);\n var padLen = 7 - b.length % 7;\n if (padLen == 7)\n padLen = 0;\n var bPad = '';\n for (var i = 0; i < padLen; i++)\n bPad += '0';\n b = bPad + b;\n for (var i = 0; i < b.length - 1; i += 7) {\n var b8 = b.substr(i, 7);\n if (i != b.length - 7)\n b8 = '1' + b8;\n h += itox(parseInt(b8, 2));\n }\n return h;\n };\n KJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this);\n this.hT = \"06\";\n /**\n * set value by a hexadecimal string\n * @name setValueHex\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} newHexString hexadecimal value of OID bytes\n */\n this.setValueHex = function (newHexString) {\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = newHexString;\n };\n /**\n * set value by a OID string
\n * @name setValueOidString\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} oidString OID string (ex. 2.5.4.13)\n * @example\n * o = new KJUR.asn1.DERObjectIdentifier();\n * o.setValueOidString(\"2.5.4.13\");\n */\n this.setValueOidString = function (oidString) {\n if (!oidString.match(/^[0-9.]+$/)) {\n throw \"malformed oid string: \" + oidString;\n }\n var h = '';\n var a = oidString.split('.');\n var i0 = parseInt(a[0]) * 40 + parseInt(a[1]);\n h += itox(i0);\n a.splice(0, 2);\n for (var i = 0; i < a.length; i++) {\n h += roidtox(a[i]);\n }\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = h;\n };\n /**\n * set value by a OID name\n * @name setValueName\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} oidName OID name (ex. 'serverAuth')\n * @since 1.0.1\n * @description\n * OID name shall be defined in 'KJUR.asn1.x509.OID.name2oidList'.\n * Otherwise raise error.\n * @example\n * o = new KJUR.asn1.DERObjectIdentifier();\n * o.setValueName(\"serverAuth\");\n */\n this.setValueName = function (oidName) {\n var oid = KJUR.asn1.x509.OID.name2oid(oidName);\n if (oid !== '') {\n this.setValueOidString(oid);\n }\n else {\n throw \"DERObjectIdentifier oidName undefined: \" + oidName;\n }\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (params !== undefined) {\n if (typeof params === \"string\") {\n if (params.match(/^[0-2].[0-9.]+$/)) {\n this.setValueOidString(params);\n }\n else {\n this.setValueName(params);\n }\n }\n else if (params.oid !== undefined) {\n this.setValueOidString(params.oid);\n }\n else if (params.hex !== undefined) {\n this.setValueHex(params.hex);\n }\n else if (params.name !== undefined) {\n this.setValueName(params.name);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERObjectIdentifier, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER Enumerated\n * @name KJUR.asn1.DEREnumerated\n * @class class for ASN.1 DER Enumerated\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • int - specify initial ASN.1 value(V) by integer value
  • \n *
  • hex - specify initial ASN.1 value(V) by a hexadecimal string
  • \n *
\n * NOTE: 'params' can be omitted.\n * @example\n * new KJUR.asn1.DEREnumerated(123);\n * new KJUR.asn1.DEREnumerated({int: 123});\n * new KJUR.asn1.DEREnumerated({hex: '1fad'});\n */\nKJUR.asn1.DEREnumerated = function (params) {\n KJUR.asn1.DEREnumerated.superclass.constructor.call(this);\n this.hT = \"0a\";\n /**\n * set value by Tom Wu's BigInteger object\n * @name setByBigInteger\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {BigInteger} bigIntegerValue to set\n */\n this.setByBigInteger = function (bigIntegerValue) {\n this.hTLV = null;\n this.isModified = true;\n this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue);\n };\n /**\n * set value by integer value\n * @name setByInteger\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {Integer} integer value to set\n */\n this.setByInteger = function (intValue) {\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(String(intValue), 10);\n this.setByBigInteger(bi);\n };\n /**\n * set value by integer value\n * @name setValueHex\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {String} hexadecimal string of integer value\n * @description\n *
\n * NOTE: Value shall be represented by minimum octet length of\n * two's complement representation.\n */\n this.setValueHex = function (newHexString) {\n this.hV = newHexString;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params['int'] != \"undefined\") {\n this.setByInteger(params['int']);\n }\n else if (typeof params == \"number\") {\n this.setByInteger(params);\n }\n else if (typeof params['hex'] != \"undefined\") {\n this.setValueHex(params['hex']);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DEREnumerated, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER UTF8String\n * @name KJUR.asn1.DERUTF8String\n * @class class for ASN.1 DER UTF8String\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERUTF8String = function (params) {\n KJUR.asn1.DERUTF8String.superclass.constructor.call(this, params);\n this.hT = \"0c\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERUTF8String, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER NumericString\n * @name KJUR.asn1.DERNumericString\n * @class class for ASN.1 DER NumericString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERNumericString = function (params) {\n KJUR.asn1.DERNumericString.superclass.constructor.call(this, params);\n this.hT = \"12\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERNumericString, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER PrintableString\n * @name KJUR.asn1.DERPrintableString\n * @class class for ASN.1 DER PrintableString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERPrintableString = function (params) {\n KJUR.asn1.DERPrintableString.superclass.constructor.call(this, params);\n this.hT = \"13\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERPrintableString, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER TeletexString\n * @name KJUR.asn1.DERTeletexString\n * @class class for ASN.1 DER TeletexString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERTeletexString = function (params) {\n KJUR.asn1.DERTeletexString.superclass.constructor.call(this, params);\n this.hT = \"14\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERTeletexString, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER IA5String\n * @name KJUR.asn1.DERIA5String\n * @class class for ASN.1 DER IA5String\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERIA5String = function (params) {\n KJUR.asn1.DERIA5String.superclass.constructor.call(this, params);\n this.hT = \"16\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERIA5String, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER UTCTime\n * @name KJUR.asn1.DERUTCTime\n * @class class for ASN.1 DER UTCTime\n * @param {Array} params associative array of parameters (ex. {'str': '130430235959Z'})\n * @extends KJUR.asn1.DERAbstractTime\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • str - specify initial ASN.1 value(V) by a string (ex.'130430235959Z')
  • \n *
  • hex - specify initial ASN.1 value(V) by a hexadecimal string
  • \n *
  • date - specify Date object.
  • \n *
\n * NOTE: 'params' can be omitted.\n *

EXAMPLES

\n * @example\n * d1 = new KJUR.asn1.DERUTCTime();\n * d1.setString('130430125959Z');\n *\n * d2 = new KJUR.asn1.DERUTCTime({'str': '130430125959Z'});\n * d3 = new KJUR.asn1.DERUTCTime({'date': new Date(Date.UTC(2015, 0, 31, 0, 0, 0, 0))});\n * d4 = new KJUR.asn1.DERUTCTime('130430125959Z');\n */\nKJUR.asn1.DERUTCTime = function (params) {\n KJUR.asn1.DERUTCTime.superclass.constructor.call(this, params);\n this.hT = \"17\";\n /**\n * set value by a Date object
\n * @name setByDate\n * @memberOf KJUR.asn1.DERUTCTime#\n * @function\n * @param {Date} dateObject Date object to set ASN.1 value(V)\n * @example\n * o = new KJUR.asn1.DERUTCTime();\n * o.setByDate(new Date(\"2016/12/31\"));\n */\n this.setByDate = function (dateObject) {\n this.hTLV = null;\n this.isModified = true;\n this.date = dateObject;\n this.s = this.formatDate(this.date, 'utc');\n this.hV = stohex(this.s);\n };\n this.getFreshValueHex = function () {\n if (typeof this.date == \"undefined\" && typeof this.s == \"undefined\") {\n this.date = new Date();\n this.s = this.formatDate(this.date, 'utc');\n this.hV = stohex(this.s);\n }\n return this.hV;\n };\n if (params !== undefined) {\n if (params.str !== undefined) {\n this.setString(params.str);\n }\n else if (typeof params == \"string\" && params.match(/^[0-9]{12}Z$/)) {\n this.setString(params);\n }\n else if (params.hex !== undefined) {\n this.setStringHex(params.hex);\n }\n else if (params.date !== undefined) {\n this.setByDate(params.date);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERUTCTime, KJUR.asn1.DERAbstractTime);\n// ********************************************************************\n/**\n * class for ASN.1 DER GeneralizedTime\n * @name KJUR.asn1.DERGeneralizedTime\n * @class class for ASN.1 DER GeneralizedTime\n * @param {Array} params associative array of parameters (ex. {'str': '20130430235959Z'})\n * @property {Boolean} withMillis flag to show milliseconds or not\n * @extends KJUR.asn1.DERAbstractTime\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • str - specify initial ASN.1 value(V) by a string (ex.'20130430235959Z')
  • \n *
  • hex - specify initial ASN.1 value(V) by a hexadecimal string
  • \n *
  • date - specify Date object.
  • \n *
  • millis - specify flag to show milliseconds (from 1.0.6)
  • \n *
\n * NOTE1: 'params' can be omitted.\n * NOTE2: 'withMillis' property is supported from asn1 1.0.6.\n */\nKJUR.asn1.DERGeneralizedTime = function (params) {\n KJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this, params);\n this.hT = \"18\";\n this.withMillis = false;\n /**\n * set value by a Date object\n * @name setByDate\n * @memberOf KJUR.asn1.DERGeneralizedTime#\n * @function\n * @param {Date} dateObject Date object to set ASN.1 value(V)\n * @example\n * When you specify UTC time, use 'Date.UTC' method like this:
\n * o1 = new DERUTCTime();\n * o1.setByDate(date);\n *\n * date = new Date(Date.UTC(2015, 0, 31, 23, 59, 59, 0)); #2015JAN31 23:59:59\n */\n this.setByDate = function (dateObject) {\n this.hTLV = null;\n this.isModified = true;\n this.date = dateObject;\n this.s = this.formatDate(this.date, 'gen', this.withMillis);\n this.hV = stohex(this.s);\n };\n this.getFreshValueHex = function () {\n if (this.date === undefined && this.s === undefined) {\n this.date = new Date();\n this.s = this.formatDate(this.date, 'gen', this.withMillis);\n this.hV = stohex(this.s);\n }\n return this.hV;\n };\n if (params !== undefined) {\n if (params.str !== undefined) {\n this.setString(params.str);\n }\n else if (typeof params == \"string\" && params.match(/^[0-9]{14}Z$/)) {\n this.setString(params);\n }\n else if (params.hex !== undefined) {\n this.setStringHex(params.hex);\n }\n else if (params.date !== undefined) {\n this.setByDate(params.date);\n }\n if (params.millis === true) {\n this.withMillis = true;\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERGeneralizedTime, KJUR.asn1.DERAbstractTime);\n// ********************************************************************\n/**\n * class for ASN.1 DER Sequence\n * @name KJUR.asn1.DERSequence\n * @class class for ASN.1 DER Sequence\n * @extends KJUR.asn1.DERAbstractStructured\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • array - specify array of ASN1Object to set elements of content
  • \n *
\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERSequence = function (params) {\n KJUR.asn1.DERSequence.superclass.constructor.call(this, params);\n this.hT = \"30\";\n this.getFreshValueHex = function () {\n var h = '';\n for (var i = 0; i < this.asn1Array.length; i++) {\n var asn1Obj = this.asn1Array[i];\n h += asn1Obj.getEncodedHex();\n }\n this.hV = h;\n return this.hV;\n };\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERSequence, KJUR.asn1.DERAbstractStructured);\n// ********************************************************************\n/**\n * class for ASN.1 DER Set\n * @name KJUR.asn1.DERSet\n * @class class for ASN.1 DER Set\n * @extends KJUR.asn1.DERAbstractStructured\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • array - specify array of ASN1Object to set elements of content
  • \n *
  • sortflag - flag for sort (default: true). ASN.1 BER is not sorted in 'SET OF'.
  • \n *
\n * NOTE1: 'params' can be omitted.
\n * NOTE2: sortflag is supported since 1.0.5.\n */\nKJUR.asn1.DERSet = function (params) {\n KJUR.asn1.DERSet.superclass.constructor.call(this, params);\n this.hT = \"31\";\n this.sortFlag = true; // item shall be sorted only in ASN.1 DER\n this.getFreshValueHex = function () {\n var a = new Array();\n for (var i = 0; i < this.asn1Array.length; i++) {\n var asn1Obj = this.asn1Array[i];\n a.push(asn1Obj.getEncodedHex());\n }\n if (this.sortFlag == true)\n a.sort();\n this.hV = a.join('');\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params.sortflag != \"undefined\" &&\n params.sortflag == false)\n this.sortFlag = false;\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERSet, KJUR.asn1.DERAbstractStructured);\n// ********************************************************************\n/**\n * class for ASN.1 DER TaggedObject\n * @name KJUR.asn1.DERTaggedObject\n * @class class for ASN.1 DER TaggedObject\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * Parameter 'tagNoNex' is ASN.1 tag(T) value for this object.\n * For example, if you find '[1]' tag in a ASN.1 dump,\n * 'tagNoHex' will be 'a1'.\n *
\n * As for optional argument 'params' for constructor, you can specify *ANY* of\n * following properties:\n *
    \n *
  • explicit - specify true if this is explicit tag otherwise false\n * (default is 'true').
  • \n *
  • tag - specify tag (default is 'a0' which means [0])
  • \n *
  • obj - specify ASN1Object which is tagged
  • \n *
\n * @example\n * d1 = new KJUR.asn1.DERUTF8String({'str':'a'});\n * d2 = new KJUR.asn1.DERTaggedObject({'obj': d1});\n * hex = d2.getEncodedHex();\n */\nKJUR.asn1.DERTaggedObject = function (params) {\n KJUR.asn1.DERTaggedObject.superclass.constructor.call(this);\n this.hT = \"a0\";\n this.hV = '';\n this.isExplicit = true;\n this.asn1Object = null;\n /**\n * set value by an ASN1Object\n * @name setString\n * @memberOf KJUR.asn1.DERTaggedObject#\n * @function\n * @param {Boolean} isExplicitFlag flag for explicit/implicit tag\n * @param {Integer} tagNoHex hexadecimal string of ASN.1 tag\n * @param {ASN1Object} asn1Object ASN.1 to encapsulate\n */\n this.setASN1Object = function (isExplicitFlag, tagNoHex, asn1Object) {\n this.hT = tagNoHex;\n this.isExplicit = isExplicitFlag;\n this.asn1Object = asn1Object;\n if (this.isExplicit) {\n this.hV = this.asn1Object.getEncodedHex();\n this.hTLV = null;\n this.isModified = true;\n }\n else {\n this.hV = null;\n this.hTLV = asn1Object.getEncodedHex();\n this.hTLV = this.hTLV.replace(/^../, tagNoHex);\n this.isModified = false;\n }\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params['tag'] != \"undefined\") {\n this.hT = params['tag'];\n }\n if (typeof params['explicit'] != \"undefined\") {\n this.isExplicit = params['explicit'];\n }\n if (typeof params['obj'] != \"undefined\") {\n this.asn1Object = params['obj'];\n this.setASN1Object(this.isExplicit, this.hT, this.asn1Object);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERTaggedObject, KJUR.asn1.ASN1Object);\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsrsasign/asn1-1.0.js?"); + + /***/ + }), + + /***/ + "./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\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n//# sourceURL=webpack://JSEncrypt/./node_modules/process/browser.js?"); + + /***/ + }) + + /******/ + }); + /************************************************************************/ + /******/ + // 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__; + /******/ + })(); +}); \ No newline at end of file diff --git a/摸鱼儿/api/moyulive.js b/摸鱼儿/api/moyulive.js new file mode 100644 index 0000000..4a45965 --- /dev/null +++ b/摸鱼儿/api/moyulive.js @@ -0,0 +1 @@ +var iil='jsjiami.com.v6',iil_=['iil'],lIIIl1ll=[iil,'\x6f\x6b\x68\x74\x74\x70\x2f\x33\x2e\x31\x35','\x69\x6e\x64\x65\x78\x4f\x66','\x24\x24\x24','\x73\x70\x6c\x69\x74','\x74\x72\x69\x6d','\x26\x26\x26','\x3a\x2f\x2f','\x6c\x6f\x67','\x70\x69\x63\x55\x72\x6c\x3a\x20','\x72\x65\x70\x6c\x61\x63\x65','\x70\x75\x73\x68','\x2f\x66\x69\x6c\x65\x2f\x6c\x69\x76\x65\x73\x6f\x75\x72\x63\x65\x6c\x69\x73\x74','\x2f\x6c\x69\x76\x65\x73\x6f\x75\x72\x63\x65\x6c\x69\x73\x74','\x47\x45\x54','\x70\x61\x72\x73\x65','\x63\x6f\x6e\x74\x65\x6e\x74','\x73\x75\x62\x73\x74\x72\x69\x6e\x67','\x6c\x61\x73\x74\x49\x6e\x64\x65\x78\x4f\x66','\x6e\x61\x6d\x65','\x75\x72\x6c','\x3d\x3d\x3d\x3d\x20\x3e\x3e\x3e\x20','\x73\x74\x72\x69\x6e\x67\x69\x66\x79','\x65\x78\x65\x63','\x74\x65\x73\x74','\x6d\x61\x74\x63\x68','\x63\x68\x61\x6e\x6e\x65\x6c','\x2c\x23\x67\x65\x6e\x72\x65\x23\x0a','\x75\x72\x6c\x73','\x64\x61\x74\x61','\x64\x61\x74\x61\x6c\x69\x73\x74','\x70\x72\x6f\x76','\x6c\x69\x73\x74','\x2d\x2d\x2d','\x6c\x69\x6e\x65','\x77\x65\x62\x50\x69\x63\x55\x72\x6c\x3a\x20','\x23\x45\x58\x54\x4d\x33\x55','\x22\x63\x68\x61\x6e\x6e\x65\x6c\x22','\x22\x75\x72\x6c\x73\x22','\x22\x64\x61\x74\x61\x6c\x69\x73\x74\x22','\x6c\x65\x6e\x67\x74\x68','\x23\x67\x65\x6e\x72\x65\x23','\x7b\x6e\x61\x6d\x65\x7d','\x7b\x63\x61\x74\x65\x7d','\u76f4\u64ad\u5217\u8868','\x6e\x75\x6c\x6c','\x74\x79\x70\x65\x5f\x69\x64','\x76\x6f\x64\x5f\x70\x6c\x61\x79\x5f\x75\x72\x6c','\x68\x61\x73\x4f\x77\x6e\x50\x72\x6f\x70\x65\x72\x74\x79','\x6a\x6f\x69\x6e','\x76\x6f\x64\x5f\x70\x6c\x61\x79\x5f\x66\x72\x6f\x6d','\x6a\x43\x50\x73\x4e\x6a\x77\x69\x4a\x61\x51\x6d\x69\x2e\x63\x6f\x4e\x4f\x6d\x47\x72\x2e\x76\x56\x36\x41\x46\x67\x79\x74\x74\x3d\x3d'];function Ii1l1III(_0x3b13df,_0x346a54){_0x3b13df=~~'0x'['concat'](_0x3b13df['slice'](0x0));var _0x4db44b=lIIIl1ll[_0x3b13df];return _0x4db44b;};(function(_0x209161,_0x5eaa4a){var _0x42ecdf=0x0;for(_0x5eaa4a=_0x209161['shift'](_0x42ecdf>>0x2);_0x5eaa4a&&_0x5eaa4a!==(_0x209161['pop'](_0x42ecdf>>0x3)+'')['replace'](/[CPNwJQNOGrVAFgytt=]/g,'');_0x42ecdf++){_0x42ecdf=_0x42ecdf^0x127efd;}}(lIIIl1ll,Ii1l1III));let headers={'User-Agent':Ii1l1III('0')};let classes=[];let cates={};let picUrl='';let webPaths={};function init(IiIIi1i){let i1Ii11I1='';if(IiIIi1i[Ii1l1III('1')](Ii1l1III('2'))>0x0){i1Ii11I1=IiIIi1i[Ii1l1III('3')](Ii1l1III('2'))[0x0][Ii1l1III('4')]();IiIIi1i=IiIIi1i[Ii1l1III('3')](Ii1l1III('2'))[0x1][Ii1l1III('4')]();}if(IiIIi1i[Ii1l1III('1')](Ii1l1III('5'))>0x0){picUrl=IiIIi1i[Ii1l1III('3')](Ii1l1III('5'))[0x1][Ii1l1III('4')]();if(picUrl[Ii1l1III('1')](Ii1l1III('6'))<0x0){picUrl=i1Ii11I1+picUrl;}IiIIi1i=IiIIi1i[Ii1l1III('3')](Ii1l1III('5'))[0x0][Ii1l1III('4')]();}console[Ii1l1III('7')](Ii1l1III('8')+picUrl);let IIlIlI1I=IiIIi1i[Ii1l1III('3')]('\x23');for(const IlII1I1 of IIlIlI1I){if(IlII1I1[Ii1l1III('1')]('\x24')>0x0){let illIl111=IlII1I1;let Ill1iIi=IlII1I1[Ii1l1III('3')]('\x24')[0x0];if(illIl111[Ii1l1III('1')](Ii1l1III('6'))<0x0){illIl111=illIl111[Ii1l1III('9')]('\x24','\x24'+i1Ii11I1);}classes[Ii1l1III('a')]({'type_id':illIl111,'type_name':Ill1iIi[Ii1l1III('9')]('\x21\x21','')});}else{let II1lIlli=IlII1I1;if(II1lIlli[Ii1l1III('1')](Ii1l1III('6'))<0x0){II1lIlli=i1Ii11I1+II1lIlli;}II1lIlli=II1lIlli[Ii1l1III('9')](Ii1l1III('b'),Ii1l1III('c'));let Illi11ll=req(II1lIlli,{'\x6d\x65\x74\x68\x6f\x64':Ii1l1III('d'),'\x68\x65\x61\x64\x65\x72\x73':headers});try{let l1lIiill=JSON[Ii1l1III('e')](Illi11ll[Ii1l1III('f')]);let lillI11l=II1lIlli[Ii1l1III('10')](0x0,II1lIlli[Ii1l1III('11')]('\x2f')+0x1);for(const i1iilII1 of l1lIiill){let Iillil=i1iilII1[Ii1l1III('12')];let lI1iIl=i1iilII1[Ii1l1III('13')];let illIl111=Iillil+'\x24'+(lI1iIl[Ii1l1III('1')](Ii1l1III('6'))<0x0?lillI11l:'')+lI1iIl;classes[Ii1l1III('a')]({'type_id':illIl111,'type_name':Iillil[Ii1l1III('9')]('\x21\x21','')});webPaths[illIl111]=lillI11l;}}catch(Ii1Ii11){console[Ii1l1III('7')](Ii1l1III('14')+Ii1Ii11);}}}}function home(I1iiIiIl){return JSON[Ii1l1III('15')]({'class':classes,'filters':null});}function parseM3u(iIi1Ii1I,I1IlIIIi){let iI1iiIii={};let iiI11111=/(#EXTINF:.+?),([^,]+?)\s*\n(.+?)\s*\n/g;let ii1iilil=null;while((ii1iilil=iiI11111[Ii1l1III('16')](iIi1Ii1I))!=null){let lllli1iI=ii1iilil[0x1];let il1Ili1I=ii1iilil[0x2];let liIlll1l=ii1iilil[0x3];if(il1Ili1I==null||liIlll1l==null||il1Ili1I==''||liIlll1l==''){continue;}il1Ili1I=il1Ili1I[Ii1l1III('4')]();liIlll1l=liIlll1l[Ii1l1III('4')]();let IiI1lI1l=I1IlIIIi;let ilIl1i1i=/group-title="(.*?)"/;if(ilIl1i1i[Ii1l1III('17')](lllli1iI)){IiI1lI1l=lllli1iI[Ii1l1III('18')](ilIl1i1i)[0x1];}if(!iI1iiIii[IiI1lI1l]){iI1iiIii[IiI1lI1l]=[];}iI1iiIii[IiI1lI1l][Ii1l1III('a')](il1Ili1I+'\x2c'+liIlll1l);}let ll11III1='';for(const li1Ili in iI1iiIii){ll11III1+=li1Ili+'\x0a';let IlIil1ll=iI1iiIii[li1Ili];for(const li1iI11 of IlIil1ll){ll11III1+=li1iI11+'\x0a';}}return ll11III1;}function parseFm(IliiIl1I){let lliiI1i1='';let Iii1ll=JSON[Ii1l1III('e')](IliiIl1I);for(const i1lIlli1 of Iii1ll){let I111Il1l=i1lIlli1[Ii1l1III('12')];let ilI11li=i1lIlli1[Ii1l1III('19')];lliiI1i1+=I111Il1l+Ii1l1III('1a');for(const iiilI1iI of ilI11li){let I11111l1=iiilI1iI[Ii1l1III('12')];let IlI1l1I1=iiilI1iI[Ii1l1III('1b')];for(const l1II1lll of IlI1l1I1){lliiI1i1+=I11111l1+'\x2c'+l1II1lll+'\x0a';}}}return lliiI1i1;}function parseLu(iIliI1lI){let IIlilI1i='';let I11ilI1i=JSON[Ii1l1III('e')](iIliI1lI)[Ii1l1III('1c')];for(const i1Ii1l1 of I11ilI1i[Ii1l1III('1d')]){let I11111l=i1Ii1l1[Ii1l1III('1e')];let IiIiii1l=i1Ii1l1[Ii1l1III('1f')];IIlilI1i+=I11111l+Ii1l1III('1a');for(const l1111lI of IiIiii1l){let lIlI1iI=l1111lI[Ii1l1III('12')];let ll11i1II=l1111lI[Ii1l1III('1b')];for(const Iliilii of ll11i1II){IIlilI1i+=lIlI1iI+Ii1l1III('20')+Iliilii[Ii1l1III('21')]+'\x2c'+Iliilii[Ii1l1III('13')]+'\x0a';}}}return IIlilI1i;}function getCateData(IliI1i){let iI1I1I1I=picUrl;if(IliI1i[Ii1l1III('1')](Ii1l1III('5'))>0x0){iI1I1I1I=IliI1i[Ii1l1III('3')](Ii1l1III('5'))[0x1][Ii1l1III('4')]();if(iI1I1I1I[Ii1l1III('1')](Ii1l1III('6'))<0x0&&webPaths[IliI1i]){iI1I1I1I=webPaths[IliI1i]+iI1I1I1I;}IliI1i=IliI1i[Ii1l1III('3')](Ii1l1III('5'))[0x0][Ii1l1III('4')]();}console[Ii1l1III('7')](Ii1l1III('22')+iI1I1I1I);let ll1iIiiI=IliI1i[Ii1l1III('3')]('\x24')[0x1];let i1I1l1i=IliI1i[Ii1l1III('3')]('\x24')[0x0];if(!cates[IliI1i]){cates[IliI1i]=[];let iIl11Iii=headers;if(ll1iIiiI[Ii1l1III('1')]('\x7c')>0x0){let ii111I1I=decodeURIComponent(ll1iIiiI[Ii1l1III('3')]('\x7c')[0x1]);ll1iIiiI=ll1iIiiI[Ii1l1III('3')]('\x7c')[0x0];for(const II1Ii1l of ii111I1I[Ii1l1III('3')]('\x26')){if(II1Ii1l[Ii1l1III('1')]('\x3d')>0x0){let lI1lliii=II1Ii1l[Ii1l1III('3')]('\x3d')[0x0];let I11Iii1i=II1Ii1l[Ii1l1III('3')]('\x3d')[0x1];iIl11Iii[lI1lliii]=I11Iii1i;}}}let I111lilI=req(ll1iIiiI,{'\x6d\x65\x74\x68\x6f\x64':Ii1l1III('d'),'\x68\x65\x61\x64\x65\x72\x73':iIl11Iii});I111lilI=I111lilI[Ii1l1III('f')][Ii1l1III('4')]();if(I111lilI[Ii1l1III('1')](Ii1l1III('23'))>=0x0){I111lilI=parseM3u(I111lilI,i1I1l1i);}else if(I111lilI[Ii1l1III('1')](Ii1l1III('24'))>0x0&&I111lilI[Ii1l1III('1')](Ii1l1III('25'))>0x0){I111lilI=parseFm(I111lilI);}else if(I111lilI[Ii1l1III('1')](Ii1l1III('26'))>0x0&&I111lilI[Ii1l1III('1')](Ii1l1III('25'))>0x0){I111lilI=parseLu(I111lilI);}let li1IiiII=(i1I1l1i+'\x0a'+I111lilI[Ii1l1III('9')]('\x0d',''))[Ii1l1III('3')]('\x0a');let lli11iI=i1I1l1i;let IiiIIiIi=null;let iiiI1l='';for(let i1ii1IIl=0x0;i1ii1IIl0x0)){if(iiiI1l!=''){let ilIIIl=iI1I1I1I[Ii1l1III('9')](Ii1l1III('29'),encodeURIComponent(lli11iI))[Ii1l1III('9')](Ii1l1III('2a'),encodeURIComponent(i1I1l1i));let ilI1ilI=ilIIIl[Ii1l1III('1')]('\x3c');let iili1I1i=ilIIIl[Ii1l1III('11')]('\x3e');if(ilI1ilI>-0x1&&iili1I1i>ilI1ilI){let I11Ilili=ilIIIl[Ii1l1III('10')](ilI1ilI,iili1I1i+0x1);let I1liliII=new RegExp(I11Ilili[Ii1l1III('9')](/<|>/g,''));let lii11liI=lli11iI[Ii1l1III('9')](I1liliII,function(Ili1lIi1,iiliII1l){return iiliII1l;});ilIIIl=ilIIIl[Ii1l1III('9')](I11Ilili,lii11liI);console[Ii1l1III('7')](lli11iI+'\x2c\x20'+ilIIIl);}let IiiIIiIi={'vod_id':IliI1i+Ii1l1III('2')+cates[IliI1i][Ii1l1III('27')],'vod_name':lli11iI,'vod_pic':ilIIIl,'vod_remarks':'','type_name':Ii1l1III('2b'),'vod_year':'','vod_area':'','vod_actor':'','vod_director':'','vod_content':'','vod_play_from':i1I1l1i,'vod_play_url':iiiI1l};cates[IliI1i][Ii1l1III('a')](IiiIIiIi);}lli11iI=lIliIii[Ii1l1III('3')]('\x2c')[0x0][Ii1l1III('4')]();iiiI1l='';}else if(lIliIii[Ii1l1III('1')]('\x2c')>0x0&&/http|rtmp|rtsp|rsp/[Ii1l1III('17')](lIliIii)){let l1iiI1ii=lIliIii[Ii1l1III('3')]('\x2c');if(iiiI1l!=''){iiiI1l+='\x23';}iiiI1l+=l1iiI1ii[0x0][Ii1l1III('4')]()+'\x24'+l1iiI1ii[0x1][Ii1l1III('4')]();}}if(iiiI1l!=''){let II1Iliil=iI1I1I1I[Ii1l1III('9')](Ii1l1III('29'),encodeURIComponent(lli11iI))[Ii1l1III('9')](Ii1l1III('2a'),encodeURIComponent(i1I1l1i));let ilI1ilI=II1Iliil[Ii1l1III('1')]('\x3c');let iili1I1i=II1Iliil[Ii1l1III('11')]('\x3e');if(ilI1ilI>-0x1&&iili1I1i>ilI1ilI){let I11Ilili=II1Iliil[Ii1l1III('10')](ilI1ilI,iili1I1i+0x1);let I1liliII=new RegExp(I11Ilili[Ii1l1III('9')](/<|>/g,''));let lii11liI=I1liliII[Ii1l1III('17')](lli11iI)?lli11iI[Ii1l1III('18')](I1liliII)[0x1]:Ii1l1III('2c');II1Iliil=II1Iliil[Ii1l1III('9')](I11Ilili,lii11liI);}let IiiIIiIi={'vod_id':IliI1i+Ii1l1III('2')+cates[IliI1i][Ii1l1III('27')],'vod_name':lli11iI,'vod_pic':II1Iliil,'vod_remarks':'','type_name':Ii1l1III('2b'),'vod_year':'','vod_area':'','vod_actor':'','vod_director':'','vod_content':'','vod_play_from':i1I1l1i,'vod_play_url':iiiI1l};cates[IliI1i][Ii1l1III('a')](IiiIIiIi);}}return cates[IliI1i];}function homeVod(liIIlIl1){let iIl1IIii=getCateData(classes[0x0][Ii1l1III('2d')]);let I1l1iil=JSON[Ii1l1III('15')]({'list':iIl1IIii});return I1l1iil;}function category(I1l1i1Ii,l1IiiIli,IIi1Illi,lilIliIl){let IIi1i1ll=[];if(l1IiiIli==0x1){IIi1i1ll=getCateData(I1l1i1Ii);}let iIiiIi1i=JSON[Ii1l1III('15')]({'list':IIi1i1ll});return iIiiIi1i;}function detail(lIl11iii){let I1IIIil=lIl11iii[Ii1l1III('3')](Ii1l1III('2'));let liiiil1i=I1IIIil[0x0];let l1l111II=liiiil1i[Ii1l1III('3')]('\x24')[0x0];let Il1li11i=parseInt(I1IIIil[0x1]);let Iill11Ii=getCateData(liiiil1i)[Il1li11i];console[Ii1l1III('7')](JSON[Ii1l1III('15')](Iill11Ii));if(l1l111II[Ii1l1III('1')]('\x21\x21')>=0x0){l1l111II=l1l111II[Ii1l1III('9')]('\x21\x21','');const ii1l1iil=Iill11Ii[Ii1l1III('2e')][Ii1l1III('3')]('\x23');console[Ii1l1III('7')](JSON[Ii1l1III('15')](ii1l1iil));let i1Ili1I={};let IIIllli1={};for(const i1IiIlIl of ii1l1iil){let Ill1iii1=i1IiIlIl[Ii1l1III('3')]('\x24')[0x0];let IIiIII11=l1l111II;if(Ill1iii1[Ii1l1III('1')](Ii1l1III('20'))>0x0){IIiIII11=Ill1iii1[Ii1l1III('3')](Ii1l1III('20'))[0x1];Ill1iii1=Ill1iii1[Ii1l1III('3')](Ii1l1III('20'))[0x0];}if(!i1Ili1I[Ii1l1III('2f')](Ill1iii1)){i1Ili1I[Ill1iii1]=0x1;}else{i1Ili1I[Ill1iii1]++;}IIiIII11=l1l111II+(i1Ili1I[Ill1iii1]>0x1?'\x20'+i1Ili1I[Ill1iii1]:'');if(!IIIllli1[Ii1l1III('2f')](IIiIII11)){IIIllli1[IIiIII11]=[];}IIIllli1[IIiIII11][Ii1l1III('a')](Ill1iii1+'\x24'+i1IiIlIl[Ii1l1III('3')]('\x24')[0x1]);}let III1i1ii=[];let iii1lIIi=[];for(let iliI1I1i in IIIllli1){III1i1ii[Ii1l1III('a')](iliI1I1i);iii1lIIi[Ii1l1III('a')](IIIllli1[iliI1I1i][Ii1l1III('30')]('\x23'));}Iill11Ii[Ii1l1III('31')]=III1i1ii[Ii1l1III('30')](Ii1l1III('2'));Iill11Ii[Ii1l1III('2e')]=iii1lIIi[Ii1l1III('30')](Ii1l1III('2'));}return JSON[Ii1l1III('15')]({'list':[Iill11Ii]});}function play(l1llIIii,illiiIII,lIIIiIiI){return JSON[Ii1l1III('15')]({'parse':0x0,'url':illiiIII});}function search(I1lll,lI1iiIII){return null;}__JS_SPIDER__={'\x69\x6e\x69\x74':init,'\x68\x6f\x6d\x65':home,'\x68\x6f\x6d\x65\x56\x6f\x64':homeVod,'\x63\x61\x74\x65\x67\x6f\x72\x79':category,'\x64\x65\x74\x61\x69\x6c':detail,'\x70\x6c\x61\x79':play,'\x73\x65\x61\x72\x63\x68':search};;iil='jsjiami.com.v6'; \ No newline at end of file diff --git a/饭太硬/api/模板.js b/摸鱼儿/api/模板.js similarity index 100% rename from 饭太硬/api/模板.js rename to 摸鱼儿/api/模板.js diff --git a/摸鱼儿/jars/弹幕配置.jar b/摸鱼儿/jars/弹幕配置.jar new file mode 100644 index 0000000..b2d40de Binary files /dev/null and b/摸鱼儿/jars/弹幕配置.jar differ diff --git a/摸鱼儿/jars/登录.jar b/摸鱼儿/jars/登录.jar new file mode 100644 index 0000000..ebadcaf Binary files /dev/null and b/摸鱼儿/jars/登录.jar differ diff --git a/摸鱼儿/js/310直播.js b/摸鱼儿/js/310直播.js new file mode 100644 index 0000000..0f73404 --- /dev/null +++ b/摸鱼儿/js/310直播.js @@ -0,0 +1,22 @@ +var rule = { + title:'310直播', + host:'http://www.310.tv', + url:'/?s=0&t=1&a=fyclass&g=fypage', + searchUrl:'', + searchable:0, + quickSearch:0, + class_name:'热门&足球&篮球', + class_url:'0&1&2', + headers:{ + 'User-Agent':'MOBILE_UA' + }, + timeout:5000, + play_parse:false, + lazy:'', + limit:6, + double:false, + 推荐:'*', + 一级:'.list_content a;.jiabifeng&&p:lt(5)&&Text;.feleimg img&&src;a&&t-nzf-o;a&&href', + 二级:'*', + 搜索:'', +} \ No newline at end of file diff --git a/摸鱼儿/js/58动漫.js b/摸鱼儿/js/58动漫.js new file mode 100644 index 0000000..a0b842d --- /dev/null +++ b/摸鱼儿/js/58动漫.js @@ -0,0 +1,25 @@ +muban.vfed.二级.title = 'h1&&Text;.fed-col-md3:eq(0)&&Text'; +muban.vfed.二级.desc = '.fed-col-md3:eq(3)&&Text;;;.fed-col-md6--span:eq(0)&&Text;.fed-col-md6--span:eq(1)&&Text'; +muban.vfed.二级.tabs = '.nav-tabs&&li'; +muban.vfed.二级.lists = '.myui-content__list:eq(#id)&&li'; +var rule = { + title: '58动漫[漫]', + 模板: 'vfed', + host: 'http://www.ting38.com', + url: '/search.php?page=fypage&searchtype=5&tid=fyclassfyfilter', + class_parse: '.fed-pops-navbar&&li;a&&Text;a&&href;.*/(.*?).html', + play_parse: true, + lazy: "js:var html=JSON.parse(request(input).match(/r player_.*?=(.*?) { + d.push({ + url: it.profileRoom, + title: it.introduction, + img: it.screenshot, + desc: '👁' + it.totalCount + ' 🆙' + it.nick, + }) + }); + setResult(d); + `, + 一级:`js: + let d = []; + let jo = JSON.parse(request(input)).data.datas; + jo.forEach(it => { + d.push({ + url: it.profileRoom, + title: it.introduction, + img: it.screenshot, + desc: '👁' + it.totalCount + ' 🆙' + it.nick, + }) + }); + setResult(d); + `, + // 二级:'*', + 二级: `js: + try { + if (typeof play_url === "undefined") { + var play_url = "" + } + var jo = JSON.parse(request(input)).data; + VOD = { + vod_id: jo.roomId, + vod_name: jo.roomName, + vod_pic: jo.roomPic, + type_name: "虎牙." + jo.categoryName, + vod_director: '🆙 ' + jo.ownerName, + vod_content: "🏷分区:虎牙" + "·" + jo.categoryName + " 🏷UP主:" + jo.ownerName + " 🏷人气:" + jo.online + (jo.isLive === 1 ? " 🏷状态:正在直播" : "状态:未开播") + }; + let episodes = JSON.parse(request("http://live.yj1211.work/api/live/getRealUrlMultiSource?platform=" + jo.platForm + "&roomId=" + jo.roomId)).data; //多线路 + if (Object.keys(episodes).length !== 0) { + let playFrom = []; + let playList = []; + let kplayList = []; + Object.keys(episodes).forEach(function(key) { + playFrom.append(key); + kplayList = episodes[key].map(function(it) { + let title = it.qualityName; + let playUrl = it.playUrl + return title + "$" + play_url + urlencode(playUrl) + }).join("#") + playList.append(kplayList); + }); + let vod_play_from = playFrom.join("$$$"); + let vod_play_url = playList.join("$$$"); + VOD["vod_play_from"] = vod_play_from; + VOD["vod_play_url"] = vod_play_url; + } else { + var d = []; + episodes = JSON.parse(request("http://live.yj1211.work/api/live/getRealUrl?platform=" + jo.platForm + "&roomId=" + jo.roomId)).data; //单线路 + var name = { + "OD": "原画", + "FD": "流畅", + "LD": "标清", + "SD": "高清", + "HD": "超清", + "2K": "2K", + "4K": "4K", + "FHD": "全高清", + "XLD": "极速", + "SQ": "普通音质", + "HQ": "高音质" + }; + Object.keys(episodes).forEach(function(key) { + if (!/ayyuid|to/.test(key)) { + d.push({ + title: name[key], + url: episodes[key] + }) + } + }); + d.push( + { + title: "虎牙解析", + url: "http://cfss.cc/cdn/hy/" + jo.roomId + ".flv" + }, + { + title: "解析1", + url: "http://epg.112114.xyz/huya/" + jo.roomId + }, + { + title: "解析2", + url: "https://www.aois.eu.org/live/huya/" + jo.roomId + }, + { + title: "解析3", + url: "https://www.goodiptv.club/huya/" + jo.roomId + }, + // { + // title: "解析4", + // url: "http://maomao.kandiantv.cn/huya1.php?id=" + jo.roomId + // }, + { + title: "解析5", + url: "http://43.138.170.29:35455/huya/" + jo.roomId + }, + { + title: "解析6", + url: "http://8.210.232.168/php/huya.php?id=" + jo.roomId + }, + { + title: "原址嗅探", + url: "https://m.huya.com/" + jo.roomId + }, + ); + VOD["vod_play_from"] = "播放源"; + VOD["vod_play_url"] = d.map(function(it) { + return it.title + "$" + it.url + }).join("#"); + setResult(d); + } + } catch (e) { + log("获取二级详情页发生错误:" + e.message); + } + `, + // 搜索:'json:response.3.docs;game_roomName;game_screenshot;game_nick;room_id', + 搜索: `js: + var d = []; + let jo = JSON.parse(request(input)).response[3].docs; + jo.forEach(it => { + d.push({ + url: it.room_id, + title: it.game_roomName, + img: it.game_screenshot, + desc: '👁' + it.game_total_count + ' 🆙' + it.game_nick, + }) + }); + setResult(d); + `, + + //是否启用辅助嗅探: 1,0 + sniffer:1, + // 辅助嗅探规则js写法 + isVideo: `js: + log(input); + if(/\\/huya/.test(input)) { + input = true + } else if(/\\.flv?|\\.m3u8?|\\.mp4?/.test(input)){ + input = true + }else{ + input = false + } + `, +} \ No newline at end of file diff --git a/摸鱼儿/js/jp.js b/摸鱼儿/js/jp.js new file mode 100644 index 0000000..64f6de5 --- /dev/null +++ b/摸鱼儿/js/jp.js @@ -0,0 +1,150 @@ +/** + * 影视TV 超連結跳轉支持 + * https://t.me/fongmi_offical/ + * https://github.com/FongMi/Release/tree/main/apk + */ + +var rule = { + title: '荐片', + host: 'http://112.124.0.131:20000/', + homeUrl: '/api/tag/hand?code=unknown601193cf375db73d&channel=wandoujia',//网站的首页链接,用于分类获取和推荐获取 + // url:'/api/crumb/list?area=0&category_id=fyclass&page=fypage&type=0&limit=24&fyfilter', + url: '/api/crumb/list?page=fypage&type=0&limit=24&fyfilter', + class_name: '全部&电影&电视剧&动漫&综艺', // 筛选 /api/term/ad_fenlei?limit=10&page=1 + class_url: '0&1&2&3&4', + detailUrl: '/api/node/detail?channel=wandoujia&token=&id=fyid',//二级详情拼接链接(json格式用) + searchUrl: '/api/video/search?key=**&page=fypage', + searchable: 2, + quickSearch: 0, + filterable: 1, + filter: { + "0":[{"key":"area","name":"地區","value":[{"n":"全部","v":"0"},{"n":"国产","v":"1"},{"n":"中国香港","v":"3"},{"n":"中国台湾","v":"6"},{"n":"美国","v":"5"},{"n":"韩国","v":"18"},{"n":"日本","v":"2"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":"0"},{"n":"2023","v":"153"},{"n":"2022","v":"101"},{"n":"2021","v":"118"},{"n":"2020","v":"16"},{"n":"2019","v":"7"},{"n":"2018","v":"2"},{"n":"2017","v":"3"},{"n":"2016","v":"22"}]},{"key":"sort","name":"排序","value":[{"n":"热门","v":"hot"},{"n":"评分","v":"rating"},{"n":"更新","v":"update"}]}], + "1":[{"key":"cateId","name":"分类","value":[{"n":"全部","v":"1"},{"n":"首推","v":"5"},{"n":"动作","v":"6"},{"n":"喜剧","v":"7"},{"n":"战争","v":"8"},{"n":"恐怖","v":"9"},{"n":"剧情","v":"10"},{"n":"爱情","v":"11"},{"n":"科幻","v":"12"},{"n":"动画","v":"13"}]},{"key":"area","name":"地區","value":[{"n":"全部","v":"0"},{"n":"国产","v":"1"},{"n":"中国香港","v":"3"},{"n":"中国台湾","v":"6"},{"n":"美国","v":"5"},{"n":"韩国","v":"18"},{"n":"日本","v":"2"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":"0"},{"n":"2023","v":"153"},{"n":"2022","v":"101"},{"n":"2021","v":"118"},{"n":"2020","v":"16"},{"n":"2019","v":"7"},{"n":"2018","v":"2"},{"n":"2017","v":"3"},{"n":"2016","v":"22"}]},{"key":"sort","name":"排序","value":[{"n":"热门","v":"hot"},{"n":"评分","v":"rating"},{"n":"更新","v":"update"}]}], + "2":[{"key":"cateId","name":"分类","value":[{"n":"全部","v":"2"},{"n":"首推","v":"14"},{"n":"国产","v":"15"},{"n":"港台","v":"16"},{"n":"日韩","v":"17"},{"n":"海外","v":"18"}]},{"key":"area","name":"地區","value":[{"n":"全部","v":"0"},{"n":"国产","v":"1"},{"n":"中国香港","v":"3"},{"n":"中国台湾","v":"6"},{"n":"美国","v":"5"},{"n":"韩国","v":"18"},{"n":"日本","v":"2"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":"0"},{"n":"2023","v":"153"},{"n":"2022","v":"101"},{"n":"2021","v":"118"},{"n":"2020","v":"16"},{"n":"2019","v":"7"},{"n":"2018","v":"2"},{"n":"2017","v":"3"},{"n":"2016","v":"22"}]},{"key":"sort","name":"排序","value":[{"n":"热门","v":"hot"},{"n":"评分","v":"rating"},{"n":"更新","v":"update"}]}], + "3":[{"key":"cateId","name":"分类","value":[{"n":"全部","v":"3"},{"n":"首推","v":"19"},{"n":"海外","v":"20"},{"n":"日本","v":"21"},{"n":"国产","v":"22"}]},{"key":"area","name":"地區","value":[{"n":"全部","v":"0"},{"n":"国产","v":"1"},{"n":"中国香港","v":"3"},{"n":"中国台湾","v":"6"},{"n":"美国","v":"5"},{"n":"韩国","v":"18"},{"n":"日本","v":"2"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":"0"},{"n":"2023","v":"153"},{"n":"2022","v":"101"},{"n":"2021","v":"118"},{"n":"2020","v":"16"},{"n":"2019","v":"7"},{"n":"2018","v":"2"},{"n":"2017","v":"3"},{"n":"2016","v":"22"}]},{"key":"sort","name":"排序","value":[{"n":"热门","v":"hot"},{"n":"评分","v":"rating"},{"n":"更新","v":"update"}]}], + "4":[{"key":"cateId","name":"分类","value":[{"n":"全部","v":"4"},{"n":"首推","v":"23"},{"n":"国产","v":"24"},{"n":"海外","v":"25"},{"n":"港台","v":"26"}]},{"key":"area","name":"地區","value":[{"n":"全部","v":"0"},{"n":"国产","v":"1"},{"n":"中国香港","v":"3"},{"n":"中国台湾","v":"6"},{"n":"美国","v":"5"},{"n":"韩国","v":"18"},{"n":"日本","v":"2"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":"0"},{"n":"2023","v":"153"},{"n":"2022","v":"101"},{"n":"2021","v":"118"},{"n":"2020","v":"16"},{"n":"2019","v":"7"},{"n":"2018","v":"2"},{"n":"2017","v":"3"},{"n":"2016","v":"22"}]},{"key":"sort","name":"排序","value":[{"n":"热门","v":"hot"},{"n":"评分","v":"rating"},{"n":"更新","v":"update"}]}] + }, + filter_url: 'area={{fl.area or "0"}}&sort={{fl.sort or "update"}}&year={{fl.year or "0"}}&category_id={{fl.cateId}}', + filter_def: { + 0:{cateId:'0'}, + 1:{cateId:'1'}, + 2:{cateId:'2'}, + 3:{cateId:'3'}, + 4:{cateId:'4'} + }, + headers: { + 'User-Agent': 'jianpian-android/350', + 'JPAUTH': 'y261ow7kF2dtzlxh1GS9EB8nbTxNmaK/QQIAjctlKiEv' + }, + timeout: 5000, + limit: 8, + play_parse: true, + play_json: [{ + re: '*', + json: { + parse: 0, + jx: 0 + } + }], + lazy: '', + 图片来源: '@Referer=www.jianpianapp.com@User-Agent=jianpian-version353', + // 推荐:'json:.video;*;*;*;*', + 推荐: `js: + var d = []; + let html = request(input); + html = JSON.parse(html).data[0].video; + html.forEach(it => { + d.push({ + title: it.title, + img: it.path, + desc: it.playlist.title + ' ⭐' + it.score, + url: it.id + }) + }); + setResult(d); + `, + // 一级:'json:data;title;path;playlist.title;id', + 一级: `js: + cateObj.tid = cateObj.tid+''; + if (cateObj.tid.endsWith('_clicklink')) { + cateObj.tid = cateObj.tid.split('_')[0]; + input = HOST + '/api/video/search?key=' + cateObj.tid + '&page=' + + MY_PAGE; + } + var d = []; + let html = request(input); + html = JSON.parse(html).data; + html.forEach(it => { + d.push({ + title: it.title, + img: it.thumbnail||it.path, + desc: (it.mask || it.playlist.title) + ' ⭐' + it.score, + url: it.id + }) + }); + setResult(d); + `, + 二级: `js: + function getLink(data) { + let link = data.map(it => { + return '[a=cr:' + JSON.stringify({'id':it.name+'_clicklink','name':it.name}) + '/]' + it.name + '[/a]' + }).join(', '); + return link + } + try { + let html = request(input); + html = JSON.parse(html); + let node = html.data; + VOD = { + vod_id: node.id, + vod_name: node.title, + vod_pic: node.thumbnail, + type_name: node.types[0].name, + vod_year: node.year.title, + vod_area: node.area.title, + vod_remarks: node.score, + vod_actor: getLink(node.actors), + vod_director: getLink(node.directors), + vod_content: node.description.strip() + }; + if (typeof play_url === 'undefined') { + var play_url = '' + } + let playMap = {}; + if (node.have_ftp_ur == 1) { + playMap["边下边播超清版"] = node.new_ftp_list.map(it => { + return it.title + "$" + (/m3u8/.test(it.url) ? play_url + it.url : "tvbox-xg:" + it.url) + }).join('#'); + } + if (node.have_m3u8_ur == 1) { + playMap["在线点播普清版"] = node.new_m3u8_list.map(it => { + return it.title + "$" + (/m3u8/.test(it.url) ? play_url + it.url : "tvbox-xg:" + it.url) + }).join('#'); + } + let playFrom = []; + let playList = []; + Object.keys(playMap).forEach(key => { + playFrom.append(key); + playList.append(playMap[key]) + }); + VOD.vod_play_from = playFrom.join('$$$'); + VOD.vod_play_url = playList.join('$$$'); + } catch (e) { + log("获取二级详情页发生错误:" + e.message); + } + `, + // 搜索:'json:data;*;thumbnail;mask;*', + 搜索: `js: + var d = []; + let html = request(input); + html = JSON.parse(html).data; + html.forEach(it => { + d.push({ + title: it.title, + img: it.thumbnail, + desc: it.mask + ' ⭐' + it.score, + url: it.id + }) + }); + setResult(d); + `, +} \ No newline at end of file diff --git a/摸鱼儿/js/jrk.js b/摸鱼儿/js/jrk.js new file mode 100644 index 0000000..b2c263f --- /dev/null +++ b/摸鱼儿/js/jrk.js @@ -0,0 +1,33 @@ +var rule = { + title:'JRKAN直播', + host:'http://www.jrkan2022.com/?lan=1', + // JRKAN备用域名:www.jrkankan.com / www.jrkan365.com / jrsyyds.com / www.jryyds.com / jrskan.com / jrsbxj.com /Jrkan备用域名1: www.jrkan2022.com 备用域名2: www.jrs23.com 备用域名2: www.jrskk.com 最新网址发布:www.qiumi1314.co + + url:'/fyclass', + searchUrl:'', + searchable:0, + quickSearch:0, + class_name:'全部', + class_url:'/', + //class_url:'?live', + headers:{ + 'User-Agent':'MOBILE_UA' + }, + timeout:5000, + play_parse:true, + lazy:"", + limit:6, + double:false, + 推荐:'*', + // 一级:'.loc_match:eq(2) ul;li:gt(1):lt(4)&&Text;img&&src;li:lt(2)&&Text;a:eq(1)&&href',//play.sportsteam333.com + 一级:"js:var items=[];pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;var html=request(input);var tabs=pdfa(html,'body&&.d-touch');tabs.forEach(function(it){var pz=pdfh(it,'.name:eq(1)&&Text');var ps=pdfh(it,'.name:eq(0)&&Text');var pk=pdfh(it,'.name:eq(2)&&Text');var img=pd(it,'img&&src');var timer=pdfh(it,'.lab_time&&Text');var url=pd(it,'a.me&&href');items.push({desc:timer+'🏆'+ps,title:pz+'🆚'+pk,pic_url:img,url:url})});setResult(items);", + 二级:{ + "title":".sub_list li:lt(2)&&Text;.sub_list li:eq(0)&&Text", + "img":"img&&src", + "desc":";;;.lab_team_home&&Text;.lab_team_away&&Text", + "content":".sub_list ul&&Text", + "tabs":"js:TABS=['实时直播']", + "lists":"js:LISTS=[];pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;let html=request(input);let data=pdfa(html,'.sub_playlist&&a');TABS.forEach(function(tab){let d=data.map(function(it){let name=pdfh(it,'strong&&Text');let url=pd(it,'a&&data-play');return name+'$'+url});LISTS.push(d)});", + }, + 搜索:'', +} \ No newline at end of file diff --git a/摸鱼儿/js/去看吧.js b/摸鱼儿/js/去看吧.js new file mode 100644 index 0000000..a8e1393 --- /dev/null +++ b/摸鱼儿/js/去看吧.js @@ -0,0 +1,19 @@ +muban.vfed.二级.title = 'h1&&Text;.fed-col-md3--span:eq(0)&&Text'; +muban.vfed.二级.desc = '.fed-col-md3:eq(3)&&Text;;;.fed-col-md6:eq(0)&&Text;.fed-col-md6--span:eq(1)&&Text'; +var rule = { + title: '去看吧', + 模板:'vfed', + host: 'https://www.k9dm.com', + // url: '/index.php/vod/show/id/fyclass/page/fypage.html', + url: '/index.php/vod/show/id/fyclassfyfilter.html', + filterable:1,//是否启用分类筛选, + filter_url:'{{fl.area}}{{fl.by}}{{fl.class}}/page/fypage{{fl.year}}', + filter:{ + "33":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"搞笑","v":"/class/搞笑"},{"n":"经典","v":"/class/经典"},{"n":"热血","v":"/class/热血"},{"n":"催泪","v":"/class/催泪"},{"n":"治愈","v":"/class/治愈"},{"n":"猎奇","v":"/class/猎奇"},{"n":"励志","v":"/class/励志"},{"n":"战斗","v":"/class/战斗"},{"n":"后宫","v":"/class/后宫"},{"n":"机战","v":"/class/机战"},{"n":"恋爱","v":"/class/恋爱"},{"n":"百合","v":"/class/百合"},{"n":"科幻","v":"/class/科幻"},{"n":"奇幻","v":"/class/奇幻"},{"n":"推理","v":"/class/推理"},{"n":"校园","v":"/class/校园"},{"n":"运动","v":"/class/运动"},{"n":"魔法","v":"/class/魔法"},{"n":"历史","v":"/class/历史"},{"n":"伪娘","v":"/class/伪娘"},{"n":"美少女","v":"/class/美少女"},{"n":"萝莉","v":"/class/萝莉"},{"n":"亲子","v":"/class/亲子"},{"n":"青春","v":"/class/青春"},{"n":"冒险","v":"/class/冒险"},{"n":"竞技","v":"/class/竞技"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":""},{"n":"2024","v":"/year/2024"},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"},{"n":"1999","v":"/year/1999"},{"n":"1998","v":"/year/1998"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}], + "21":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"搞笑","v":"/class/搞笑"},{"n":"经典","v":"/class/经典"},{"n":"热血","v":"/class/热血"},{"n":"催泪","v":"/class/催泪"},{"n":"治愈","v":"/class/治愈"},{"n":"猎奇","v":"/class/猎奇"},{"n":"励志","v":"/class/励志"},{"n":"战斗","v":"/class/战斗"},{"n":"后宫","v":"/class/后宫"},{"n":"机战","v":"/class/机战"},{"n":"恋爱","v":"/class/恋爱"},{"n":"百合","v":"/class/百合"},{"n":"科幻","v":"/class/科幻"},{"n":"奇幻","v":"/class/奇幻"},{"n":"推理","v":"/class/推理"},{"n":"校园","v":"/class/校园"},{"n":"运动","v":"/class/运动"},{"n":"魔法","v":"/class/魔法"},{"n":"历史","v":"/class/历史"},{"n":"伪娘","v":"/class/伪娘"},{"n":"美少女","v":"/class/美少女"},{"n":"萝莉","v":"/class/萝莉"},{"n":"亲子","v":"/class/亲子"},{"n":"青春","v":"/class/青春"},{"n":"冒险","v":"/class/冒险"},{"n":"竞技","v":"/class/竞技"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"/area/大陆"},{"n":"美国","v":"/area/美国"},{"n":"韩国","v":"/area/韩国"},{"n":"日本","v":"/area/日本"},{"n":"泰国","v":"/area/泰国"},{"n":"新加坡","v":"/area/新加坡"},{"n":"马来西亚","v":"/area/马来西亚"},{"n":"印度","v":"/area/印度"},{"n":"英国","v":"/area/英国"},{"n":"法国","v":"/area/法国"},{"n":"加拿大","v":"/area/加拿大"},{"n":"西班牙","v":"/area/西班牙"},{"n":"俄罗斯","v":"/area/俄罗斯"},{"n":"其它","v":"/area/其它"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":""},{"n":"2024","v":"/year/2024"},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"},{"n":"1999","v":"/year/1999"},{"n":"1998","v":"/year/1998"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}], + "50":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"搞笑","v":"/class/搞笑"},{"n":"经典","v":"/class/经典"},{"n":"热血","v":"/class/热血"},{"n":"催泪","v":"/class/催泪"},{"n":"治愈","v":"/class/治愈"},{"n":"猎奇","v":"/class/猎奇"},{"n":"励志","v":"/class/励志"},{"n":"战斗","v":"/class/战斗"},{"n":"后宫","v":"/class/后宫"},{"n":"机战","v":"/class/机战"},{"n":"恋爱","v":"/class/恋爱"},{"n":"百合","v":"/class/百合"},{"n":"科幻","v":"/class/科幻"},{"n":"奇幻","v":"/class/奇幻"},{"n":"推理","v":"/class/推理"},{"n":"校园","v":"/class/校园"},{"n":"运动","v":"/class/运动"},{"n":"魔法","v":"/class/魔法"},{"n":"历史","v":"/class/历史"},{"n":"伪娘","v":"/class/伪娘"},{"n":"美少女","v":"/class/美少女"},{"n":"萝莉","v":"/class/萝莉"},{"n":"亲子","v":"/class/亲子"},{"n":"青春","v":"/class/青春"},{"n":"冒险","v":"/class/冒险"},{"n":"竞技","v":"/class/竞技"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"/area/大陆"},{"n":"美国","v":"/area/美国"},{"n":"韩国","v":"/area/韩国"},{"n":"日本","v":"/area/日本"},{"n":"泰国","v":"/area/泰国"},{"n":"新加坡","v":"/area/新加坡"},{"n":"马来西亚","v":"/area/马来西亚"},{"n":"印度","v":"/area/印度"},{"n":"英国","v":"/area/英国"},{"n":"法国","v":"/area/法国"},{"n":"加拿大","v":"/area/加拿大"},{"n":"西班牙","v":"/area/西班牙"},{"n":"俄罗斯","v":"/area/俄罗斯"},{"n":"其它","v":"/area/其它"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":""},{"n":"2024","v":"/year/2024"},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"},{"n":"1999","v":"/year/1999"},{"n":"1998","v":"/year/1998"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}], + "24":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"搞笑","v":"/class/搞笑"},{"n":"经典","v":"/class/经典"},{"n":"热血","v":"/class/热血"},{"n":"催泪","v":"/class/催泪"},{"n":"治愈","v":"/class/治愈"},{"n":"猎奇","v":"/class/猎奇"},{"n":"励志","v":"/class/励志"},{"n":"战斗","v":"/class/战斗"},{"n":"后宫","v":"/class/后宫"},{"n":"机战","v":"/class/机战"},{"n":"恋爱","v":"/class/恋爱"},{"n":"百合","v":"/class/百合"},{"n":"科幻","v":"/class/科幻"},{"n":"奇幻","v":"/class/奇幻"},{"n":"推理","v":"/class/推理"},{"n":"校园","v":"/class/校园"},{"n":"运动","v":"/class/运动"},{"n":"魔法","v":"/class/魔法"},{"n":"历史","v":"/class/历史"},{"n":"伪娘","v":"/class/伪娘"},{"n":"美少女","v":"/class/美少女"},{"n":"萝莉","v":"/class/萝莉"},{"n":"亲子","v":"/class/亲子"},{"n":"青春","v":"/class/青春"},{"n":"冒险","v":"/class/冒险"},{"n":"竞技","v":"/class/竞技"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"/area/大陆"},{"n":"美国","v":"/area/美国"},{"n":"韩国","v":"/area/韩国"},{"n":"日本","v":"/area/日本"},{"n":"泰国","v":"/area/泰国"},{"n":"新加坡","v":"/area/新加坡"},{"n":"马来西亚","v":"/area/马来西亚"},{"n":"印度","v":"/area/印度"},{"n":"英国","v":"/area/英国"},{"n":"法国","v":"/area/法国"},{"n":"加拿大","v":"/area/加拿大"},{"n":"西班牙","v":"/area/西班牙"},{"n":"俄罗斯","v":"/area/俄罗斯"},{"n":"其它","v":"/area/其它"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":""},{"n":"2024","v":"/year/2024"},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"},{"n":"1999","v":"/year/1999"},{"n":"1998","v":"/year/1998"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}], + "22":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"搞笑","v":"/class/搞笑"},{"n":"经典","v":"/class/经典"},{"n":"热血","v":"/class/热血"},{"n":"催泪","v":"/class/催泪"},{"n":"治愈","v":"/class/治愈"},{"n":"猎奇","v":"/class/猎奇"},{"n":"励志","v":"/class/励志"},{"n":"战斗","v":"/class/战斗"},{"n":"后宫","v":"/class/后宫"},{"n":"机战","v":"/class/机战"},{"n":"恋爱","v":"/class/恋爱"},{"n":"百合","v":"/class/百合"},{"n":"科幻","v":"/class/科幻"},{"n":"奇幻","v":"/class/奇幻"},{"n":"推理","v":"/class/推理"},{"n":"校园","v":"/class/校园"},{"n":"运动","v":"/class/运动"},{"n":"魔法","v":"/class/魔法"},{"n":"历史","v":"/class/历史"},{"n":"伪娘","v":"/class/伪娘"},{"n":"美少女","v":"/class/美少女"},{"n":"萝莉","v":"/class/萝莉"},{"n":"亲子","v":"/class/亲子"},{"n":"青春","v":"/class/青春"},{"n":"冒险","v":"/class/冒险"},{"n":"竞技","v":"/class/竞技"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"/area/日本"},{"n":"欧美","v":"/area/欧美"},{"n":"其他","v":"/area/其他"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":""},{"n":"2024","v":"/year/2024"},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"},{"n":"1999","v":"/year/1999"},{"n":"1998","v":"/year/1998"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}] + }, + class_parse: '.fed-pops-list:eq(0)&&li:gt(0):lt(6);a&&Text;a&&href;.*/(.*?).html', +} \ No newline at end of file diff --git a/摸鱼儿/js/喵次元.js b/摸鱼儿/js/喵次元.js new file mode 100644 index 0000000..02e19ad --- /dev/null +++ b/摸鱼儿/js/喵次元.js @@ -0,0 +1,237 @@ +globalThis.getTime = function(){ +let ts= Math.round(new Date().getTime()/1000).toString(); +log('获取时间戳:'+ts); +return ts +} + +globalThis.signUrl=function(json){ +// 获取所有节点的名称并按字母顺序排序 +let json1=JSON.parse(json); +var sortedKeys = Object.keys(json1).sort(); +// 遍历排好序的节点名称列表,并打印相应的值 +let s=''; +for (let key in sortedKeys){ + let value=json1[sortedKeys[key]]; + if(value!=undefined){ + s=s+value; + } +} +//log(s); +//log(md5(s+"alskeuscli")); +s=json.slice(0,-1)+",\"sign\":\""+md5(s+"alskeuscli")+"\"\}"; +log(s); +return s; +} + +globalThis.posturl=function(url,json){ + let html= fetch(url, { + body: JSON.parse(signUrl(json)), + headers: {"User-Agent": "okhttp/3.12.3"}, + method: "POST" + }, true); + return JSON.parse(html); +} +var rule = { + title: '喵次元[APP]', + host: 'https://cym.fengche.tv/api.php/', + hostJs:` + var json2 = '{"versionName":"5.6.9","uuid":"9cc01079c64e2495","version":"4835d0a2","versionCode":"35","ctime":"'+getTime()+'"}'; + let url="https://cym.fengche.tv/api.php/type/get_list"; + let jo=posturl(url,json2).data.list; + let filters = {}; + let cb={"class":"类型","area":"地区","lang":"语言","year":"年份","star":"演员","director":"导演","state":"状态","version":"版本"}; + let class1=[]; + jo.forEach(function(tp) { + rule.class_name=rule.class_name +"&"+tp['type_name']; + rule.class_url=rule.class_url +"&"+tp['type_id']; + let ep=tp['type_extend']; + let classes = []; + for (let key in ep){ + let value=ep[key]; + + if (value.length>1){ + class1.append(key); + //写成{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"}]}这种格式 + let dd=value.toString().split(','); + var s=[]; + dd.forEach(function(i){ + s.append({'n':i,'v':i}); + }) + let ss={"key":key,"name":cb[key],"value":s}; + classes.append(ss); + } + } + filters[tp['type_id']]=classes; + }); + class1=Array.from(new Set(class1)).sort(); + let s="" + class1.forEach(function(tp) { + s=s+"&" + tp +"={{fl."+tp+"}}"; + }) + log(s); + rule.filter_url=s; + rule.filter=filters; + log(rule.filter); + log(rule.class_name); + log(rule.class_url); +`, + + homeUrl:'?hpindigo=**&page=fypage', + url:'?t=fyclass&page=fypage', + filter_url:'', + filter: {}, + detailUrl:'?ids=', + searchUrl: '?hpindigo=**&page=fypage', + searchable: 2, + quickSearch: 0, + filterable:1,//是否启用分类筛选, + headers:{'User-Agent':'MOBILE_UA'}, + timeout:10000, + class_name:'全部', // 分类筛选 /api.php/app/nav + class_url:'0', + play_parse:true, + lazy:`js: + log("*************测试*************"); + let dd=input.split("&"); + let ju_id=dd[0]; + let plyer=dd[1]; + let video_id=dd[2]; + var json2 = '{"player_id":"'+plyer+'","ju_id":"'+ju_id+'","vod_id":"'+video_id+'","versionName":"5.6.9","uuid":"3899af59c0b12b98","version":"4835d0a2","versionCode":"35","ctime":"'+getTime()+'"}'; + let url="https://cym.fengche.tv/api.php/video/get_definition"; + let html = posturl(url,json2).data[0].url.trim(); + log(html); + //input=aesX("AES/CBC/PKCS7",false,html,true,"sLunqcoH85Nm/jDmFKns7A==","fedcba9876543210",false); + //log(input); + eval(getCryptoJS); + var key = CryptoJS.enc.Hex.parse("734C756E71636F4838354E6D2F6A446D464B6E7337413D3D0000000000000000"); + var iv = CryptoJS.enc.Utf8.parse("fedcba9876543210"); + input=(CryptoJS.AES.decrypt(html, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + })).toString(CryptoJS.enc.Utf8) + log(input) + `, + //lazy:'js:input=/m3u8|mp4|flv/.test(input)?{jx:0,url:input,parse:0}:{jx:1,url:input,parse:1}', + limit:6, + // 推荐:'json:items;*;*;*;*', + 推荐:'json:data.sections[0].items;*;*;*;*', + 推荐:`js: + log(input); + let page=input.split("&")[1].split("=")[1]; + log(page); + var json2 = '{"page":"'+page+'","versionName":"5.6.9","uuid":"9cc01079c64e2495","version":"4835d0a2","versionCode":"35","ctime":"'+getTime()+'"}'; + let url="https://cym.fengche.tv/api.php/video/index"; + let jo = posturl(url,json2); + let vodList = jo.data; + log(vodList); + let videos=[]; + vodList.forEach(function(vod) { + vod.video.forEach(function(vod1) { + let aid = (vod1["vod_id"]); + let title = vod1["vod_name"]; + let img = vod1["vod_pic"]; + let remark = vod1["vod_remarks"]; + videos.push({ + vod_id: aid, + vod_name: title, + vod_pic: img, + vod_remarks: remark + }) + }) + }) + + VODS=videos; + `, + 一级:`js: + log(input); + let canshu=input.split("?")[1].split("&"); + let dd={}; + canshu.forEach(function(key){ + log(key); + let k=key.split("="); + dd[k[0]]=k[1]; + }) + var json2 = '{"type_id":"'+dd["t"]+'","vod_year":"'+dd["year"]+'","limit":"20","orderby":"","vod_area":"'+dd["area"]+'","vod_class":"'+dd["class"]+'","page":"'+dd["page"]+'","versionName":"5.6.9","uuid":"9cc01079c64e2495","version":"4835d0a2","vod_name":"","versionCode":"35","ctime":"'+getTime()+'"}'; + log(json2); + let url="https://cym.fengche.tv/api.php/video/get_list"; + let jo = posturl(url,json2); + var d=[]; + jo.data.list.forEach(function(it){ + d.push({ + title:it.vod_name, + img:it.vod_pic, + desc:it.vod_remarks, + url:it.vod_id, + content:it.vod_blurb}) + }); + setResult(d); + `, + 二级:`js: + log(orId); + var json2 = '{"vod_id":"'+orId+'","versionName":"5.6.9","uuid":"3899af59c0b12b98","version":"4835d0a2","versionCode":"35","ctime":"'+getTime()+'"}'; + log(json2); + let url="https://cym.fengche.tv/api.php/video/get_detail"; + let jo = posturl(url,json2); + let node = jo.data; + VOD = { + vod_id: node["vod_id"], + vod_name: node["vod_name"], + vod_pic: node["vod_pic"], + type_name: node["vod_class"], + vod_year: node["vod_year"], + vod_area: node["vod_area"], + vod_remarks: node["vod_remarks"], + vod_actor: node["vod_actor"], + vod_director: node["vod_director"], + vod_content: node["vod_content"] + }; + let episodes = node.player; + let playMap = {}; + episodes.forEach(function(ep) { + let playurls = ep["code"]; + let source = ep["name"]; + log (playurls); + log (source); + //这里分别获取线路 + var json2 = '{"limit":"5000","vod_id":"'+orId+'","page":"1","versionName":"5.6.9","uuid":"9cc01079c64e2495","version":"4835d0a2","versionCode":"35","player":"'+playurls+'","ctime":"'+getTime()+'"}'; + log(json2); + let url="https://cym.fengche.tv/api.php/video/get_player"; + let jo1 = posturl(url,json2); + jo1.data.list.forEach(function(playurl) { + if (!playMap.hasOwnProperty(source)) { + playMap[source] = [] + } + playMap[source].append(playurl["drama"]+"$"+playurl["ju_id"]+"&"+playurl["plyer"]+"&"+playurl["video_id"]) + }) + }); + + let playFrom = []; + let playList = []; + + Object.keys(playMap) + .forEach(function(key) { + playFrom.append(key); + playList.append(playMap[key].join("#")) + }); + let vod_play_from = playFrom.join("$$$"); + let vod_play_url = playList.join("$$$"); + VOD["vod_play_from"] = vod_play_from; + VOD["vod_play_url"] = vod_play_url + `, + 搜索:`js: + let page=input.split("&")[1].split("=")[1]; + log(page); + var json2 = '{"vod_year":"","limit":"20","orderby":"up","vod_area":"","vod_class":"","page":"'+page+'","versionName":"5.6.9","uuid":"9cc01079c64e2495","version":"4835d0a2","vod_name":"'+KEY+'","versionCode":"35","ctime":"'+getTime()+'"}'; + let url="https://cym.fengche.tv/api.php/video/get_list"; + let jo = posturl(url,json2); + var d=[]; + jo.data.list.forEach(function(it){ + d.push({ + title:it.vod_name, + img:it.vod_pic, + desc:it.vod_remarks, + url:it.vod_id}) + }); + setResult(d);`, +} \ No newline at end of file diff --git a/摸鱼儿/js/斗鱼直播.js b/摸鱼儿/js/斗鱼直播.js new file mode 100644 index 0000000..1714c7e --- /dev/null +++ b/摸鱼儿/js/斗鱼直播.js @@ -0,0 +1,198 @@ +var rule = { + title:'斗鱼直播', + host:'https://m.douyu.com', + homeUrl:'/api/home/mix',//网站的首页链接,用于分类获取和推荐获取 + url:'/api/room/list?page=fypage&type=fyfilter', + filterable:1,//是否启用分类筛选, + filter_url:'{{fl.cateId}}', + filter:{ + "yl":[{"key":"cateId","name":"分类","value":[{"n":"原创IP","v":"ip"},{"n":"一起看","v":"yqk"},{"n":"二次元","v":"ecy"},{"n":"音乐","v":"music"},{"n":"户外","v":"HW"},{"n":"美食","v":"ms"},{"n":"心动派对","v":"xdpd"},{"n":"音遇恋人","v":"yinyu"},{"n":"星秀","v":"xingxiu"},{"n":"心动FM","v":"dtxs"},{"n":"娱乐推荐","v":"yltj"},{"n":"新选","v":"xinxuan"}]}], + "PCgame":[{"key":"cateId","name":"分类","value":[{"n":"英雄联盟","v":"LOL"},{"n":"热门游戏","v":"rmyx"},{"n":"穿越火线","v":"CF"},{"n":"重生边缘","v":"CSBYOL"},{"n":"无畏契约","v":"VALORANT"},{"n":"CFHD","v":"CFHD"},{"n":"命运方舟","v":"LostArk"},{"n":"DNF","v":"DNF"},{"n":"DOTA2","v":"DOTA2"},{"n":"使命召唤","v":"COD"},{"n":"炉石传说","v":"How"},{"n":"CS2","v":"CounterStrike"},{"n":"lol云顶之弈","v":"ydzhy"},{"n":"魔兽争霸","v":"mszb"},{"n":"魔兽怀旧服","v":"wowclassic"},{"n":"全民街篮","v":"qmjl"},{"n":"自走棋","v":"dota2rpg"},{"n":"传奇","v":"cq"},{"n":"跑跑卡丁车","v":"Popkart"},{"n":"网易游戏","v":"wyyx"},{"n":"星际争霸","v":"SC"},{"n":"守望先锋","v":"Overwatch"},{"n":"DOTA","v":"DOTA"},{"n":"魔兽世界","v":"WOW"},{"n":"剑网3","v":"JX3"},{"n":"魔域","v":"EudemonsOnline"},{"n":"我的世界","v":"MC"},{"n":"超激斗梦境","v":"cjdmj"},{"n":"冒险岛","v":"mxd"},{"n":"三国杀","v":"sanguosha"},{"n":"梦幻西游","v":"MHXYOL"},{"n":"天涯明月刀","v":"tianya"},{"n":"街头篮球","v":"jtlq"},{"n":"NBA2KOL2","v":"NBA2KOL2"},{"n":"QQ飞车端游","v":"qqfcdy"},{"n":"战地之王","v":"AVA"},{"n":"军事游戏","v":"jsyx"},{"n":"棋牌娱乐","v":"qipai"},{"n":"FC ONLINE","v":"FCOL"},{"n":"热门网游","v":"rmwy"},{"n":"卡拉彼丘","v":"klbq"},{"n":"诛仙世界","v":"zxsj"},{"n":"千古风流","v":"qgflpc"},{"n":"APEX","v":"APEX"},{"n":"流放之路POE","v":"PathofExile"},{"n":"剑网3缘起","v":"JW3YQ"},{"n":"逆水寒","v":"nsh"},{"n":"风暴英雄","v":"HOTS"},{"n":"逆战","v":"NZ"},{"n":"坦克世界","v":"TKSJ"},{"n":"战舰世界","v":"wfws"},{"n":"巫师之昆特牌","v":"wszktp"},{"n":"反恐精英Online","v":"CS"},{"n":"暗黑破坏神","v":"DIABLO"},{"n":"梦三国2","v":"msg2"},{"n":"传奇世界","v":"cqsj"},{"n":"方舟:生存进化","v":"fzscjh"},{"n":"神武4电脑版","v":"swdnb"},{"n":"群雄逐鹿","v":"qxzl"},{"n":"堡垒之夜","v":"blzy"},{"n":"无限法则","v":"roe"},{"n":"问道电脑版","v":"wddnb"},{"n":"西山居游戏","v":"Seasun"},{"n":"最终幻想14","v":"FF14"},{"n":"战意","v":"WYZY"},{"n":"剑灵","v":"BladeSoul"},{"n":"星际战甲","v":"Warframe"},{"n":"龙之谷","v":"DragonNest"},{"n":"铁甲雄兵","v":"tjxb"},{"n":"古剑奇谭网络版","v":"gjqtwlb"},{"n":"轩辕传奇","v":"XYCQ"},{"n":"神途","v":"shentu"},{"n":"激战2","v":"GuildWars2"},{"n":"高达文化区","v":"gdyxq"},{"n":"忍者村大战2","v":"rzcdz2"},{"n":"RPG网游专区","v":"rpgwyzq"},{"n":"诛仙3","v":"zhuxian3"},{"n":"笑傲江湖OL","v":"xajhol"},{"n":"冒险岛2","v":"MXD2"},{"n":"超击突破","v":"SuperPeople"},{"n":"无尽战区","v":"WJZQ"},{"n":"斗战神","v":"dzs"},{"n":"永恒之塔","v":"AION"},{"n":"九阴真经","v":"JYZJ"},{"n":"FPS综合网游","v":"FPSOL"},{"n":"劲舞团","v":"jwt"},{"n":"天下","v":"tianxai"},{"n":"泡泡堂","v":"ppt"},{"n":"武侠乂","v":"wxy"},{"n":"音乐游戏","v":"MG"},{"n":"新倩女幽魂","v":"ONLINE"},{"n":"天谕","v":"tianyu"},{"n":"征途2","v":"zhengtu2"},{"n":"QQ炫舞","v":"qqxw"},{"n":"泰亚史诗","v":"tyss"},{"n":"怪物猎人ol","v":"MHol"},{"n":"手工星球","v":"sgxq"},{"n":"星战前夜:晨曦","v":"EVE"},{"n":"热血传奇:本源","v":"rxcqhjsgb"},{"n":"枪火重生","v":"qhcs"},{"n":"彩虹岛","v":"CHD"},{"n":"御龙在天","v":"YLZT"},{"n":"英魂之刃","v":"YHZR"},{"n":"自由篮球","v":"ZYLQ"},{"n":"洛奇英雄传","v":"LQYXZ"},{"n":"封印者","v":"FYZ"},{"n":"合金弹头","v":"HJDT"},{"n":"新英雄年代","v":"XYXSD"},{"n":"星尘传说","v":"XCCS"},{"n":"盛趣游戏","v":"SQYX"},{"n":"新热血英豪","v":"XRXYH"},{"n":"沙盒游戏","v":"SHYX"},{"n":"我的世界:地下城","v":"MD"},{"n":"恐鬼症","v":"KGZ"},{"n":"领地人生","v":"LDRS"},{"n":"梦塔防","v":"TDOTK"},{"n":"大话西游2","v":"dhxy2"},{"n":"猎人","v":"lr"},{"n":"热血江湖online","v":"rxjhol"},{"n":"千年3","v":"qn3"},{"n":"逍遥情缘","v":"xyqy"},{"n":"快乐西游","v":"klxy"},{"n":"鹿鼎记","v":"ldj"},{"n":"新桃花源记","v":"xthyj"},{"n":"疾风之刃电脑版","v":"jfzr1"},{"n":"武魂2电脑版","v":"wh2pc"},{"n":"奇迹世界sun","v":"qjsjsun"},{"n":"剑侠世界2电脑版","v":"jxsj2pc"},{"n":"斩魂","v":"zhpc"},{"n":"大唐2","v":"dt2pc"},{"n":"蜀山:初章","v":"ssczpc"},{"n":"狼人对决网游","v":"lrdjpc"},{"n":"武林群侠传","v":"wlqxzpc"},{"n":"飘流幻境","v":"plhjpc"},{"n":"破天一剑","v":"ptyj"},{"n":"四国军棋","v":"sgjq"},{"n":"新大话西游3","v":"xy3"},{"n":"装甲战争","v":"zjzz"},{"n":"暴雪游戏综合","v":"g_bliz"},{"n":"长尾4部虚拟分区","v":"cw4bxnfq"},{"n":"燕云十六声","v":"WHEREWINDSMEET"},{"n":"THE FINALS","v":"THEFINALS"},{"n":"NBA2K Online","v":"NBA2KOL"},{"n":"塔瑞斯世界","v":"Tarisland"},{"n":"跑跑卡丁车:漂移","v":"KartRiderDrift"},{"n":"传奇永恒","v":"EternalLegend"},{"n":"全境封锁2","v":"TheDivision2"},{"n":"盛趣传奇","v":"sqcq"},{"n":"火爆热游","v":"hbry"},{"n":"火爆传奇","v":"hbcq"}]}], + "djry":[{"key":"cateId","name":"分类","value":[{"n":"主机游戏","v":"TVgame"},{"n":"刺客信条:英灵殿","v":"AC"},{"n":"马里奥制造","v":"Mario"},{"n":"逃离塔科夫","v":"EFT"},{"n":"命运2","v":"MY2"},{"n":"恐怖游戏","v":"Horror"},{"n":"荒野大镖客","v":"hydbk"},{"n":"灵魂筹码","v":"lhcm"},{"n":"骑马与砍杀","v":"MountAndBlade"},{"n":"只狼","v":"ZL"},{"n":"格斗游戏","v":"FTG"},{"n":"饥荒","v":"DontStarve"},{"n":"全境封锁","v":"qjfs"},{"n":"怀旧游戏","v":"classic"},{"n":"NBA2K","v":"NBA2K"},{"n":"八方旅人","v":"OT"},{"n":"血污:夜之仪式","v":"Blood"},{"n":"人类一败涂地","v":"Human"},{"n":"环世界","v":"RimWorld"},{"n":"古墓丽影","v":"gmly"},{"n":"鬼泣","v":"DMC"},{"n":"往日不再","v":"WRBZ"},{"n":"仙剑奇侠传","v":"PAL"},{"n":"神秘海域","v":"Uncharted"},{"n":"塞尔达系列","v":"TLoZ"},{"n":"僵尸世界大战","v":"WWZ"},{"n":"足球游戏","v":"zq"},{"n":"橙光","v":"cg"},{"n":"了不起的修仙模拟器","v":"ACS"},{"n":"女神异闻录","v":"P5"},{"n":"超级马里奥","v":"SMO"},{"n":"三国志系列","v":"Sangokushi"},{"n":"最终幻想","v":"FF"},{"n":"中土世界:战争之影","v":"MiddleEarth"},{"n":"流放者柯南","v":"Conan"},{"n":"三国群英传","v":"SANGO"},{"n":"无主之地","v":"Bor"},{"n":"辐射","v":"fs"},{"n":"SCUM","v":"Scum"},{"n":"文明","v":"CVI"},{"n":"仁王","v":"NIOH"},{"n":"缺氧","v":"ONI"},{"n":"全面吃鸡模拟器","v":"TAB"},{"n":"古剑奇谭","v":"GuJian3"},{"n":"皇牌空战","v":"hpkz"},{"n":"体育游戏","v":"tyyx"},{"n":"海岛大亨","v":"hddh"},{"n":"碧海黑帆","v":"klhdt"},{"n":"植物大战僵尸:花园战争系列","v":"PvsZ"},{"n":"蜘蛛侠","v":"Spide"},{"n":"勇者斗恶龙:建造者2","v":"DQB2"},{"n":"遗迹:灰烬重生","v":"Rem"},{"n":"血源","v":"BB"},{"n":"旺达与巨像","v":"SotC"},{"n":"死亡搁浅","v":"DS"},{"n":"模拟人生","v":"Sims"},{"n":"空洞骑士","v":"HKS"},{"n":"胡闹厨房","v":"Overcooked"},{"n":"地铁:离去","v":"ME"},{"n":"生死狙击2","v":"ssjjtwo"},{"n":"三国战纪","v":"sgzj"},{"n":"怀旧FC","v":"edwcy"},{"n":"经典单机","v":"jddj"},{"n":"英雄无敌","v":"HoMM"},{"n":"街机游戏","v":"jjyx"},{"n":"合金装备","v":"MetalGear"},{"n":"红色警戒","v":"hsjj"},{"n":"镜之边缘","v":"MsE"},{"n":"勿忘我","v":"Remw"},{"n":"火焰纹章系列","v":"FireEmblem"},{"n":"星露谷物语","v":"Stardew"},{"n":"火炬之光","v":"Torchlight"},{"n":"赛博朋克2077","v":"Cyberpunk"},{"n":"中国式家长","v":"CP"},{"n":"精灵宝可梦系列","v":"Pokemon"},{"n":"尼尔:机械纪元","v":"NieR"},{"n":"无人深空","v":"NMS"},{"n":"EVOTINCTION","v":"EVOTINCTION"},{"n":"GT赛车7","v":"GT"},{"n":"超级机器人大战","v":"SRW"},{"n":"这是我的战争","v":"TWoM"},{"n":"杀戮尖塔","v":"sljt"},{"n":"冰汽时代","v":"Frostpunk"},{"n":"帝国时代","v":"AoEIV"},{"n":"死亡空间","v":"swkj"},{"n":"凯瑟琳Full Body","v":"CFB"},{"n":"足球经理","v":"Football"},{"n":"雨中冒险","v":"RoR"},{"n":"亿万僵尸","v":"Billions"},{"n":"武装突袭","v":"ArmA"},{"n":"石油大亨","v":"Oil"},{"n":"欧洲卡车模拟器","v":"Truck"},{"n":"美国逃亡者","v":"Fugitive"},{"n":"漫漫长夜","v":"mmcy"},{"n":"永恒轮回","v":"Survival"},{"n":"孤岛惊魂","v":"FarCry"},{"n":"都市:天际线","v":"Skylines"},{"n":"盗贼之海","v":"hdzh"},{"n":"Dayz","v":"DayZ"},{"n":"60秒","v":"60S"},{"n":"俄罗斯钓鱼","v":"RF"},{"n":"猎人:荒野的召唤","v":"theHunter"},{"n":"恐怖黎明","v":"GD"},{"n":"看门狗","v":"kmg"},{"n":"真三国无双","v":"DW"},{"n":"战斗砖块剧场","v":"BT"},{"n":"泰拉瑞亚","v":"Terraria"},{"n":"异星工厂","v":"Factorio"},{"n":"UFC","v":"UFC"},{"n":"底特律:变人","v":"Detroit"},{"n":"恶魔城","v":"Castlevania"},{"n":"毁灭战士","v":"Doom"},{"n":"火影忍者:究极忍者风暴","v":"Naruto"},{"n":"坎巴拉太空计划","v":"Kerbal"},{"n":"龙珠:超宇宙","v":"DBX"},{"n":"马里奥赛车","v":"MarioKart"},{"n":"欧陆风云","v":"EU"},{"n":"乞丐模拟器","v":"HoboToughLife"},{"n":"小偷模拟器","v":"ThiefSimulator"},{"n":"逆转裁判","v":"AceA"},{"n":"超越光速","v":"FTL"},{"n":"植物大战僵尸","v":"PvZ"},{"n":"游戏开发者","v":"GGM"},{"n":"最后的绿洲","v":"LO"},{"n":"大富翁","v":"RichMan"},{"n":"反恐精英","v":"fkjy"},{"n":"英雄连","v":"yxl"},{"n":"永劫无间","v":"NB"},{"n":"初音未来:歌姬计划","v":"MIKU"},{"n":"部落与弯刀","v":"BLYWD"},{"n":"一起开火车!","v":"Unrailed"},{"n":"霓虹深渊","v":"NA"},{"n":"主机其他游戏","v":"OG"},{"n":"战场兄弟","v":"ZCXD"},{"n":"地狱潜者","v":"DYQZ"},{"n":"地下城","v":"dxc"},{"n":"人间地狱","v":"RJDY"},{"n":"temtem","v":"temtem"},{"n":"弹丸论破","v":"dwlp"},{"n":"皇家美食","v":"HJMS"},{"n":"基佬大乱斗","v":"jldld"},{"n":"僵尸毁灭工程","v":"jshmgc"},{"n":"岛屿生存者","v":"Sur"},{"n":"冬日计划","v":"drjh"},{"n":"四海兄弟","v":"shxd"},{"n":"创世理想乡","v":"Craftopia"},{"n":"柯娜:精神之桥","v":"Kena"},{"n":"幽灵线:东京","v":"GTO"},{"n":"Solar Ash","v":"Ash"},{"n":"BUGSNAX","v":"BUGSNAX"},{"n":"生化危机4重制版","v":"ResidentEvil"},{"n":"Grounded","v":"Grounded"},{"n":"Superliminal","v":"Superliminal"},{"n":"Omno","v":"Omno"},{"n":"Röki","v":"Roki"},{"n":"Undungeon","v":"Undungeon"},{"n":"糖豆人","v":"FallGuys"},{"n":"渡神纪","v":"Gods"},{"n":"Aeolis Tournament","v":"Aeolis"},{"n":"猛兽派对","v":"Animals"},{"n":"Olija","v":"Olija"},{"n":"Creaks","v":"Creaks"},{"n":"暗影火炬城","v":"FIST"},{"n":"阿尔比恩","v":"Albion"},{"n":"Uragun","v":"Uragun"},{"n":"戴森球计划","v":"DSP"},{"n":"Muse Dash","v":"MuseDash"},{"n":"恐惧之间","v":"Fearsurrounds"},{"n":"孤岛惊魂6","v":"FarCry6"},{"n":"怪物猎人","v":"MonsterHunterRise"},{"n":"黑神话:悟空","v":"BlackMythWuKong"},{"n":"仁王2","v":"Nioh2"},{"n":"三国群英传8","v":"TheThreeKingdoms8"},{"n":"三国志14","v":"THREEKINGDOMSXIV"},{"n":"杀手3","v":"Hitman3"},{"n":"双人成行","v":"ittakestwo"},{"n":"Scrapnaut","v":"Scrapnaut"},{"n":"租房达人","v":"TheTenants"},{"n":"狙击手:幽灵战士契约2","v":"SniperContracts2"},{"n":"全面战争","v":"TotalWarWARHAMMER"},{"n":"复体","v":"TheComplex"},{"n":"战争机器:战术小队","v":"GearsTactics"},{"n":"海绵宝宝:比奇堡的冒险","v":"BattleforBikini"},{"n":"分离","v":"Disintegration"},{"n":"奇妙探险队2","v":"CuriousExpedition2"},{"n":"刺客信条:奥德赛","v":"Odyssey"},{"n":"丧尸围城4","v":"DeadRising4"},{"n":"星球大战:前线","v":"Battlefront"},{"n":"Moonray","v":"Moonray"},{"n":"灵魂旅人","v":"SpiritFarerlhlr"},{"n":"面容","v":"Visage"},{"n":"车祸现场模拟器","v":"Accident"},{"n":"破门而入2:北方特遣队","v":"DoorKickers2"},{"n":"俄罗斯方块效应:连接","v":"TetrisEffect"},{"n":"SD高达G世纪:起源","v":"SDGundamG"},{"n":"东方计划:不可思议的幻想乡","v":"TouHou"},{"n":"Fate/EXTELLA","v":"FateEXTELLA"},{"n":"临终:重生试炼","v":"DYINGReborn"},{"n":"虚拟现实乐园","v":"VRWorlds"},{"n":"苍翼默示录:神观之梦","v":"CentralFiction"},{"n":"晚班","v":"LateShift"},{"n":"子弹风暴","v":"Bulletstorm"},{"n":"巡警","v":"BeatCop"},{"n":"耻辱之日","v":"DayofInfamy"},{"n":"狙击精英4","v":"SniperElite4"},{"n":"热血物语:地下世界","v":"RiverCityRansom"},{"n":"史诗战争模拟器","v":"BattleSimulator"},{"n":"银河护卫队","v":"Guardians"},{"n":"上古卷轴:传奇","v":"ScrollsLegends"},{"n":"闪乱神乐:少女们的选择","v":"SenranKagura"},{"n":"幽灵行动:荒野","v":"GhostReconWildland"},{"n":"白色情人节","v":"WhiteDay"},{"n":"誓死坚守","v":"UntilWeDie"},{"n":"狂战传说","v":"TalesofBerseria"},{"n":"双截龙4","v":"DoubleDragon4"},{"n":"地下蚁国","v":"Undergrowth"},{"n":"寻找天堂","v":"findparadise"},{"n":"画中世界","v":"Gorogoa"},{"n":"现代战争","v":"ModernCombat"},{"n":"绯红结系","v":"SCARLETNEXUS"},{"n":"罪恶装备:STRIVE","v":"GuiltyGear"},{"n":"涅克罗蒙达:赏金猎人","v":"NHiredGun"},{"n":"骑士精神2","v":"Chivalry2"},{"n":"Rune Knights","v":"RuneKnights"},{"n":"红至日2:幸存者","v":"TheRed2"},{"n":"真女神转生3","v":"ShinMegami3"},{"n":"速降王者","v":"Descenders"},{"n":"工业崛起","v":"RiseIndustry"},{"n":"前往中世纪","v":"GoMedieval"},{"n":"Arid","v":"Arid"},{"n":"伊始之地","v":"TerraNil"},{"n":"进击的巨人2","v":"AttackonTitan2"},{"n":"魔域之书","v":"Bookofdevil"},{"n":"自由人:游击战争","v":"Freeman"},{"n":"战国无双5","v":"SWarriors5"},{"n":"不要喂食猴子","v":"NotFeedMonkeys"},{"n":"古剑奇谭3","v":"GuJianqitan3"},{"n":"剑士","v":"KenshiJS"},{"n":"GRIS","v":"GRIS"},{"n":"古剑奇谭:永夜","v":"gujianyongye"},{"n":"永恒边缘","v":"EdgeEternity"},{"n":"Below","v":"Below"},{"n":"彩虹坠入","v":"IrisFall"},{"n":"嗜血印","v":"BloodySpell"},{"n":"兽人必须死3","v":"OrcsDie3"},{"n":"狙击精英VR","v":"SniperEliteVR"},{"n":"遗忘之城","v":"ForgotCity"},{"n":"Last Stop","v":"LastStop"},{"n":"边界之外","v":"OutofLine"},{"n":"从军","v":"jointhearmy"},{"n":"石炉","v":"Stonehearth"},{"n":"狂热运输2","v":"TransportFever2"},{"n":"机甲战士5","v":"MechWarrior5"},{"n":"PICO PARK","v":"PICOPARK"},{"n":"光明记忆:无限","v":"Brightmemory"},{"n":"秘馆疑踪","v":"HeavenDust"},{"n":"侠盗公司","v":"RogueCompany"},{"n":"英雄传说:创之轨迹","v":"HajimariNOKiseki"},{"n":"战地系列","v":"Battlefiel"},{"n":"塞尔达传说:天空之剑HD","v":"SkywardSword"},{"n":"尘埃异变","v":"GRIME"},{"n":"异形:火力小队精英","v":"FireteamElite"},{"n":"12分钟","v":"TwelveMinutes"},{"n":"九十六号公路","v":"Road96"},{"n":"FORECLOSED","v":"FORECLOSED"},{"n":"RiMS Racing","v":"RiMSRacing"},{"n":"钢铁之尾","v":"TailsofIron"},{"n":"剑侠图","v":"JianXiaTu"},{"n":"审判之逝","v":"Lostjudgment"},{"n":"帝国神话","v":"mythofempires"},{"n":"艾尔登法环","v":"ELDENRING"},{"n":"极限竞速:地平线5","v":"ForzaHorizon5"},{"n":"使命召唤系列","v":"CALLOFDUTYCOD"},{"n":"网吧模拟器","v":"InternetCS"},{"n":"The Anacrusis","v":"TheAnacrusis"},{"n":"浩劫前夕","v":"TheDayBefore"},{"n":"文字游戏","v":"WordGame"},{"n":"消逝的光芒2","v":"DyingLight2"},{"n":"无主之地3","v":"Borderlands3"},{"n":"战神:诸神黄昏","v":"GodofWarRagnarok"},{"n":"海上狼人杀","v":"DreadHunger"},{"n":"侠乂行:浪迹天涯","v":"XIAYIXING"},{"n":"最终幻想:起源","v":"STRANGEROFPARADISE"},{"n":"HordeCore","v":"HordeCore"},{"n":"双子星:盛气凌人","v":"YoungSouls"},{"n":"Indies’ Lies","v":"IndiesLies"},{"n":"Deck of Ashes","v":"DeckofAshes"},{"n":"星空","v":"Starfield"},{"n":"Ilysia","v":"Ilysia"},{"n":"Project Q","v":"ProjectQ"},{"n":"Pummel Party","v":"PummelParty"},{"n":"Holomento","v":"Holomento"},{"n":"Overprime","v":"Overprime"},{"n":"森林之子","v":"SonsOfTheForest"},{"n":"弈仙牌","v":"yixianpai"},{"n":"夜族崛起","v":"VRising"},{"n":"罗马复兴","v":"RomanRenaissance"},{"n":"萤火突击","v":"LostLight"},{"n":"High on Life","v":"HighonLife"},{"n":"匹诺曹的谎言","v":"LiesofP"},{"n":"Isonzo","v":"Isonzo"},{"n":"瘟疫传说:安魂曲","v":"Requiem"},{"n":"漂泊牧歌","v":"WanderingVillage"},{"n":"塞尔达传说:王国之泪","v":"TEARSKINGDOM"},{"n":"破碎线","v":"Shatterline"},{"n":"卧龙:苍天陨落","v":"Wolong"},{"n":"卡库远古封印","v":"KAKU"},{"n":"原子之心","v":"AtomicHeart"},{"n":"Warhaven","v":"Warhaven"},{"n":"宝可梦:朱/紫","v":"ScarletandViolet"},{"n":"Evercore Heroes","v":"EvercoreHeroes"},{"n":"灵魂石幸存者","v":"SoulstoneSurvivors"},{"n":"主机一起看","v":"zjyqk"},{"n":"社交互动游戏","v":"SJHDYX"},{"n":"轮回修仙路","v":"lhxxl"},{"n":"Divine Knockout","v":"DivineKnockout"},{"n":"至暗时刻","v":"DarkandDarker"},{"n":"自杀小队:杀死正义联盟","v":"KTJL"},{"n":"XDefiant","v":"XDefiant"},{"n":"Warlander","v":"Warlander"},{"n":"Scars Above","v":"ScarsAbove"},{"n":"Pacific Drive","v":"PacificDrive"},{"n":"最终幻想16","v":"FinalFantasyXVI"},{"n":"街头霸王","v":"StreetFighter"},{"n":"Tchia","v":"Tchia"},{"n":"大侠立志传","v":"HerosAdventure"},{"n":"最后纪元","v":"LastEpoch"},{"n":"魔戒:咕噜","v":"Gollum"},{"n":"Prison Life 2","v":"PrisonLife"},{"n":"Innchanted","v":"Innchanted"},{"n":"幻兽帕鲁","v":"Palworld"},{"n":"Life by You","v":"LifebyYou"},{"n":"Eresys","v":"Eresys"},{"n":"Pax Dei","v":"PaxDei"},{"n":"Teravit","v":"Teravit"},{"n":"Caliber","v":"Caliber"},{"n":"沙盒与副本:英勇之地","v":"HerosLand"},{"n":"Coridden","v":"Coridden"},{"n":"Unrecord","v":"Unrecord"},{"n":"Deducto 2","v":"Deducto2"},{"n":"装甲核心6:境界天火","v":"ArmoredCore"},{"n":"Wayfinder","v":"Wayfinder"},{"n":"迷瘴纪事","v":"MiasmaChronicles"},{"n":"Minigame Madness","v":"MinigameMadness"},{"n":"严阵以待","v":"ReadyorNot"},{"n":"上古卷轴OL","v":"TheElderScrolls"},{"n":"弹幕风暴","v":"dmfb"},{"n":"学园构想家","v":"SchoolHomeroom"},{"n":"弈仙牌手游","v":"YiXianm"},{"n":"Jusant","v":"JUSANT"},{"n":"潜水员戴夫","v":"DAVETHEDIVER"},{"n":"GYLT","v":"GYLT"},{"n":"索利斯堡","v":"FortSolis"},{"n":"Towerborne","v":"Towerborne"},{"n":"33 Immortals","v":"33Immortals"},{"n":"Wildmender","v":"Wildmender"},{"n":"How 2 Escape","v":"How2Escape"},{"n":"碧蓝幻想:Relink","v":"Relink"},{"n":"漫威蜘蛛侠2","v":"MarvelSpiderman2"},{"n":"王权与自由","v":"ThroneandLiberty"},{"n":"博德之门3","v":"BG3"},{"n":"Eternights","v":"Eternights"},{"n":"Project F","v":"ProjectF"},{"n":"BaldMan Climbs Up","v":"BaldManClimbsUp"},{"n":"FC24","v":"FC24"},{"n":"NBA 2K24","v":"NBA2K24"},{"n":"沉没之地","v":"Sunkenland"},{"n":"七日世界","v":"qrsj"},{"n":"雾锁王国","v":"wswg"}]}], + "syxx":[{"key":"cateId","name":"分类","value":[{"n":"元梦之星","v":"YMZX"},{"n":"王者荣耀","v":"wzry"},{"n":"LOL手游","v":"LOLM"},{"n":"崩坏:星穹铁道","v":"bhxqtd"},{"n":"和平精英","v":"hpjy"},{"n":"暗区突围","v":"aqtw"},{"n":"蛋仔派对","v":"dzpd"},{"n":"高能英雄","v":"gnyx"},{"n":"幻塔","v":"ht"},{"n":"火影忍者","v":"hyrz"},{"n":"COD手游","v":"smzhsy"},{"n":"lol电竞经理","v":"EGAME"},{"n":"DNF手游","v":"mdnf"},{"n":"金铲铲之战","v":"JGAME"},{"n":"天刀手游","v":"tdsy"},{"n":"原神","v":"yuanshen"},{"n":"航海王热血航线","v":"HHWRXHX"},{"n":"逆水寒手游","v":"NSHM"},{"n":"万国觉醒","v":"wgjx"},{"n":"鸿图之下","v":"htzx"},{"n":"欢乐麻将","v":"HLMJ"},{"n":"王者模拟战","v":"wzrpg"},{"n":"中国象棋","v":"ZGXQ"},{"n":"天谕手游","v":"tysy"},{"n":"巅峰坦克","v":"DFTK"},{"n":"新游中心","v":"xyzx"},{"n":"热门手游","v":"phone"},{"n":"梦幻手游","v":"mhxy"},{"n":"QQ飞车","v":"qqfcsy"},{"n":"第五人格","v":"dwrg"},{"n":"欢乐斗地主","v":"hlddz"},{"n":"荒野乱斗","v":"hyld"},{"n":"阴阳师","v":"yys"},{"n":"狼人杀","v":"LRS"},{"n":"JJ斗地主","v":"jj"},{"n":"梦幻新诛仙","v":"mhxzx"},{"n":"街霸对决","v":"jbdj"},{"n":"机动都市阿尔法","v":"jddsaef"},{"n":"一人之下","v":"yrzx"},{"n":"多多自走棋","v":"zzq"},{"n":"崩坏3","v":"bhxl"},{"n":"风云岛行动","v":"fydxd"},{"n":"云游戏","v":"cloudgame"},{"n":"跑跑手游","v":"PPKDCSY"},{"n":"率土之滨","v":"stzb"},{"n":"灌篮高手","v":"glgs"},{"n":"皇室战争","v":"hszz"},{"n":"忍者必须死3","v":"rzbxs3"},{"n":"神武4手游","v":"sw3"},{"n":"梦幻模拟战","v":"mhmnz"},{"n":"实况足球","v":"skzq"},{"n":"剑与远征","v":"jyyz"},{"n":"航海王:燃烧意志","v":"hhwrsyz"},{"n":"球球大作战","v":"qqdzz"},{"n":"英雄杀","v":"yxs"},{"n":"魔域口袋版","v":"mykdb"},{"n":"口袋新旅程","v":"KDXLC"},{"n":"剑网3:指尖江湖","v":"jw3zjjh"},{"n":"部落冲突","v":"blct"},{"n":"剑与家园","v":"jyjy"},{"n":"新笑傲江湖","v":"xxajh"},{"n":"猫和老鼠","v":"mhls"},{"n":"猎人手游","v":"lrlr"},{"n":"明日之后","v":"mrzh"},{"n":"影之诗","v":"yzs"},{"n":"决战平安京","v":"jzpaj"},{"n":"魂斗罗归来","v":"DLHGL"},{"n":"贪吃蛇大作战","v":"tcsdzz"},{"n":"圣斗士星矢","v":"sdsxs"},{"n":"魔力宝贝手游","v":"mlbbsy"},{"n":"哈利波特:魔法觉醒","v":"HarryPotter"},{"n":"手游推广","v":"rmsy"},{"n":"魔灵召唤","v":"mlzh"},{"n":"香肠派对","v":"xcpd"},{"n":"迷你世界","v":"MNSJ"},{"n":"荒野行动","v":"hyxd"},{"n":"大话西游2口袋版","v":"dhxy2kdb"},{"n":"FC足球世界","v":"FCZQSJ"},{"n":"街篮","v":"jl"},{"n":"一起来捉妖","v":"yiqilaizhuoyao"},{"n":"明日方舟","v":"mrfz"},{"n":"自由幻想手游","v":"zyhx"},{"n":"一梦江湖","v":"ymjh"},{"n":"王牌战争:文明重启","v":"wmcq"},{"n":"完美世界手游","v":"wmsjsy"},{"n":"拳皇98OL","v":"kof98"},{"n":"赛尔号","v":"srh"},{"n":"猎魂觉醒","v":"lhjx"},{"n":"仙境传说","v":"xjcs"},{"n":"逃跑吧少年","v":"tpbsn"},{"n":"石器时代","v":"sqsd"},{"n":"英魂之刃口袋版","v":"yh"},{"n":"拉结尔","v":"lje"},{"n":"倩女幽魂手游","v":"qnyhsy"},{"n":"决斗之城2","v":"jdzc2"},{"n":"传奇手游","v":"cqsy"},{"n":"欢乐升级","v":"hlsj"},{"n":"雀魂","v":"Majsoul"},{"n":"二次元手游","v":"ecysy"},{"n":"天龙八部online","v":"tianlongbabuonline"},{"n":"征途2手游","v":"zt2sy"},{"n":"万王之王3D","v":"wwzw3D"},{"n":"武林外传","v":"wlwz"},{"n":"我叫MT4","v":"MT4"},{"n":"元气骑士","v":"yuanqiqishi"},{"n":"红警OL手游","v":"hjolsy"},{"n":"植物大战僵尸手游","v":"ZWDZJS"},{"n":"龙之谷手游","v":"lzgsy"},{"n":"创造与魔法","v":"ccymf"},{"n":"境界-死神激斗","v":"jjssjd"},{"n":"奇迹觉醒","v":"qjjx"},{"n":"光遇","v":"skygy"},{"n":"游戏王:决斗链接","v":"yxwjdlj"},{"n":"巅峰战舰","v":"dfzj"},{"n":"绝世战魂","v":"jszh"},{"n":"寻仙","v":"xunxian"},{"n":"天天象棋","v":"ttxq"},{"n":"王国纪元","v":"wgjy"},{"n":"龙族幻想","v":"lzhx"},{"n":"剑网3指尖对弈","v":"jwszjdy"},{"n":"剑侠情缘2:剑歌行","v":"jianxiaqingyuan"},{"n":"三国杀移动版","v":"SGSSY"},{"n":"罗布乐思","v":"Roblox"},{"n":"足球手游","v":"zqsy"},{"n":"月圆之夜","v":"yyzy"},{"n":"王牌战争","v":"wpzz"},{"n":"秦时明月世界","v":"qsmysj"},{"n":"独立手游","v":"dlsy"},{"n":"神都夜行录","v":"sdyxl"},{"n":"风之大陆","v":"fzdl"},{"n":"金属对决","v":"jsdj"},{"n":"轩辕剑龙舞云山","v":"xyjlwys"},{"n":"微乐棋牌","v":"WLQP"},{"n":"辐射:避难所Online","v":"fsbnsonline"},{"n":"街篮2","v":"jl2"},{"n":"极光计划","v":"jgjh"},{"n":"不良人3","v":"blr3"},{"n":"镇魔曲手游","v":"zmq"},{"n":"传奇世界手游","v":"cqsjsy"},{"n":"永恒纪元","v":"yhjy"},{"n":"乱世王者","v":"lswz"},{"n":"数码宝贝:相遇","v":"smbbxy"},{"n":"仙剑4","v":"xjqxz4"},{"n":"长安幻世绘","v":"cahsh"},{"n":"篮球手游","v":"lqsy"},{"n":"鬼泣-巅峰之战","v":"gqdfzz"},{"n":"射击类手游","v":"qtsy"},{"n":"命运歌姬","v":"mygj"},{"n":"光明大陆","v":"gmdl"},{"n":"暗黑不朽","v":"diabloimmortal"},{"n":"新神魔大陆","v":"xsmdl"},{"n":"公主连结Re:Dive","v":"gzlj"},{"n":"三国志战略版","v":"sgzzlb"},{"n":"天地劫:幽城再临","v":"tdj"},{"n":"Disorder","v":"Disorder"},{"n":"凹凸世界","v":"atsj"},{"n":"云上城之歌","v":"ysczg"},{"n":"五子棋","v":"wzq"},{"n":"围棋","v":"wq"},{"n":"梦想新大陆","v":"mxxdl"},{"n":"三国志幻想大陆:国创加强版","v":"sgzhxdl"},{"n":"全球行动","v":"qqxd"},{"n":"诛仙手游","v":"zxsy"},{"n":"妄想山海","v":"wxsh"},{"n":"黎明觉醒:生机","v":"lmjx"},{"n":"龙之谷2手游","v":"lzg2sy"},{"n":"庆余年","v":"QYN"},{"n":"我的侠客","v":"wdxk"},{"n":"曙光英雄","v":"sgyx"},{"n":"真三国无双霸","v":"zsgwsb"},{"n":"大话西游手游","v":"dhxysy"},{"n":"口袋进化","v":"kdjh"},{"n":"开心消消乐","v":"kxxxl"},{"n":"战争怒吼","v":"zznh"},{"n":"忘川风华录","v":"wcfhl"},{"n":"新剑侠情缘手游","v":"xjxqysy"},{"n":"重生细胞","v":"csxb"},{"n":"汉家江湖","v":"HJJH"},{"n":"海岛奇兵","v":"hdqb"},{"n":"钢铁力量2","v":"gtll2"},{"n":"仙剑奇侠传九野","v":"xjqxzjy"},{"n":"魔域手游","v":"mysy"},{"n":"大唐无双手游","v":"dtwssy"},{"n":"地铁跑酷","v":"dtpk"},{"n":"战舰世界闪击战","v":"zjsjsjz"},{"n":"狂暴之翼","v":"kbzy"},{"n":"西游女儿国","v":"xyneg"},{"n":"少年三国志","v":"snsgz"},{"n":"钢琴师","v":"gqs"},{"n":"横扫千军","v":"hsqj"},{"n":"节奏大爆炸","v":"jzdbz"},{"n":"喵斯快跑","v":"mskp"},{"n":"双子","v":"sz"},{"n":"梦想世界3手游","v":"mxsj3"},{"n":"精灵之境","v":"jlzj"},{"n":"镇魂街:武神躯","v":"zhjwsq"},{"n":"斗罗大陆:斗神再临","v":"dldldszl"},{"n":"斗罗大陆:武魂觉醒","v":"dldlwhjx"},{"n":"斗罗大陆2绝世唐门","v":"dldl2jstm"},{"n":"战神觉醒","v":"zsjx"},{"n":"九州仙剑传H5","v":"jzxjzh5"},{"n":"荣耀大天使","v":"rydts"},{"n":"蓝月传奇","v":"lycq"},{"n":"凡人修仙传挂机版H5","v":"frxxzgjbh5"},{"n":"我的帝国H5","v":"wddgh5"},{"n":"盗墓笔记","v":"dmbj"},{"n":"剑与轮回","v":"jylh"},{"n":"混沌起源","v":"hdqy"},{"n":"大天使之剑","v":"dtszj"},{"n":"战斗少女跑酷","v":"zdsnpk"},{"n":"绝世仙王","v":"jsxw"},{"n":"一刀传世","v":"ydcs"},{"n":"斗罗大陆","v":"dldl"},{"n":"破雪刃","v":"pxr"},{"n":"JJ象棋","v":"jjxq"},{"n":"天姬变","v":"tjb"},{"n":"剑玲珑","v":"jll"},{"n":"火线精英","v":"hxjy"},{"n":"造梦西游OL","v":"zmxyol"},{"n":"奥奇传说手游","v":"aqcssy"},{"n":"战斗吧龙魂","v":"zdblh"},{"n":"剑开仙门","v":"jkxm"},{"n":"机甲爱丽丝","v":"jjals"},{"n":"狼人对决","v":"lrdj"},{"n":"最终幻想:勇气启示录 幻影战争","v":"hyzz"},{"n":"贝比岛","v":"bbd"},{"n":"葫芦娃兄弟","v":"hlwxd"},{"n":"造梦西游4","v":"zmxy4"},{"n":"比特小队","v":"btxd"},{"n":"流言侦探","v":"lyzt"},{"n":"少女前线","v":"snqx"},{"n":"遇见","v":"yj"},{"n":"霓虹深渊:无限","v":"nhsywx"},{"n":"胡莱三国3","v":"hlsg3"},{"n":"奥拉星","v":"alx"},{"n":"先游云游戏","v":"Gamer"},{"n":"绿茵信仰","v":"lyxy"},{"n":"蜀山掌门","v":"sszm"},{"n":"球球联盟","v":"qqlm"},{"n":"碧蓝航线手游","v":"blhxsy"},{"n":"300大作战","v":"300dzz"},{"n":"第七史诗","v":"dqss"},{"n":"宝可梦大集结","v":"PokemonUNITE"},{"n":"无极仙途","v":"wjxt"},{"n":"汉末霸业","v":"hmby"},{"n":"EVE星战前夜:无烬星河","v":"evexzqywjxh"},{"n":"少女前线2:追放","v":"sq2zf"},{"n":"火力苏打(T3)","v":"T3"},{"n":"植物大战僵尸2","v":"zwdzjs2"},{"n":"球球英雄","v":"qqyx"},{"n":"悠长假期","v":"ycjq"},{"n":"无悔华夏","v":"whrhx"},{"n":"猫之城","v":"mzc"},{"n":"墨斗","v":"modou"},{"n":"圣斗士星矢:正义传说","v":"sdsxszyz"},{"n":"未定事件簿","v":"wdsjp"},{"n":"白夜极光","v":"byjg"},{"n":"斗罗大陆:魂师对决","v":"dldlhsdj"},{"n":"古墓丽影传说:迷踪","v":"gmlycsmz"},{"n":"放置与召唤","v":"fzyzh"},{"n":"闪烁之光","v":"syzg"},{"n":"老农种树","v":"lnzs"},{"n":"三国演义:吞噬无界","v":"sgyytswj"},{"n":"偶像梦幻祭2","v":"oxmhj2"},{"n":"卡卡保皇","v":"kkbh"},{"n":"灵猫传","v":"lmz"},{"n":"绝对演绎","v":"jdyy"},{"n":"剑侠世界3","v":"jxsj3"},{"n":"召唤与合成2","v":"zhyhc2"},{"n":"仙侠第一放置","v":"xxdyfz"},{"n":"弓箭手大作战","v":"gjsdzz"},{"n":"挨饿荒野","v":"aehy"},{"n":"诺亚之心","v":"nyzx"},{"n":"闪耀暖暖","v":"synn"},{"n":"模拟城市:我是市长","v":"mncswssc"},{"n":"重返帝国","v":"cfdg"},{"n":"长安幻想","v":"cahx"},{"n":"火炬之光:无限","v":"hjzgwx"},{"n":"富豪闯三国","v":"fhcsg"},{"n":"拂晓","v":"fx"},{"n":"火影忍者:忍者新世代","v":"hyrzrzxsd"},{"n":"滚动的天空","v":"gddtk"},{"n":"新斗罗大陆","v":"xdldl"},{"n":"登山赛车","v":"dssc"},{"n":"荒野乱斗(腾讯版)","v":"hyldtxb"},{"n":"小小勇者","v":"xxyz"},{"n":"小冰冰传奇","v":"xbbcq"},{"n":"三国战纪2手游","v":"sgzj2"},{"n":"我的战舰","v":"wdzj"},{"n":"我是大东家","v":"wsddj"},{"n":"幸存者危城","v":"xczwc"},{"n":"暗魔领主","v":"amlz"},{"n":"冒险公社手游","v":"mxgs"},{"n":"欧陆战争5:帝国","v":"olzz5dg"},{"n":"纪念碑谷2","v":"jnbg2"},{"n":"大航海探险物语","v":"dhhtxwy"},{"n":"我在7年后等着你","v":"wz7nhdzn"},{"n":"航海日记","v":"hhrj"},{"n":"一拳超人:最强之男","v":"yqcrzqzn"},{"n":"王国保卫战4","v":"wgbwz4"},{"n":"半世界之旅","v":"bsjzl"},{"n":"奥特曼宇宙英雄","v":"atmyzyx"},{"n":"新三国杀","v":"xsgs"},{"n":"奶块","v":"nk"},{"n":"策魂三国","v":"chsg"},{"n":"奥特曼系列OL","v":"atmxlol"},{"n":"洪荒文明","v":"hhwm"},{"n":"街头足球","v":"jtzq"},{"n":"同人圣三国蜀汉传","v":"trssgshc"},{"n":"我做夫人那些年","v":"wzfrnxn"},{"n":"小小五千年","v":"xxwqn"},{"n":"实况球会经理","v":"skqhjl"},{"n":"时空猎人","v":"sklr"},{"n":"星际逆战","v":"xjnz"},{"n":"LoveLive! 学园偶像祭","v":"lovelivexyoxj"},{"n":"黑色沙漠手游","v":"hesmsy"},{"n":"魔力宝贝:旅人","v":"mlbblr"},{"n":"盾之勇者成名录:浪潮","v":"dzyzcmllc"},{"n":"魔力宝贝归来","v":"mlbbgl"},{"n":"荣耀新三国","v":"ryxsg"},{"n":"巅峰极速","v":"dfjs"},{"n":"新盗墓笔记","v":"xdmbj"},{"n":"卧龙吟2","v":"wly2"},{"n":"武林闲侠","v":"wlxx"},{"n":"淘米游戏","v":"tmyx"},{"n":"暖雪","v":"warmsnow"},{"n":"无期迷途","v":"wqmt"},{"n":"逆光潜入","v":"ngqr"},{"n":"CF手游","v":"CFSY"},{"n":"新天龙八部手游","v":"xtlbbsy"},{"n":"无神之界","v":"wszj"},{"n":"尘白禁区","v":"cbjq"},{"n":"传奇天下","v":"CQTX"},{"n":"全民大灌篮","v":"qmdgl"},{"n":"枪火重生手游","v":"GunfireReborn"},{"n":"火影三国志","v":"g_hysg"},{"n":"网易其它组","v":"g_wyqt"},{"n":"三国战纪手游","v":"sgzjsy"},{"n":"染·钟楼谜团","v":"BOTC"},{"n":"绝区零","v":"jql"},{"n":"魔兽弧光大作战","v":"warcraftrumble"},{"n":"重返CODM","v":"RECODM"},{"n":"综合手游","v":"zhsy"},{"n":"IP游戏","v":"ipyx"},{"n":"鸣潮","v":"cm"},{"n":"棋牌游戏","v":"QPYX"},{"n":"奥比岛:梦想国度","v":"abdmxgd"},{"n":"铃兰之剑","v":"llzjwzhpdsj"},{"n":"晶核","v":"jhcoa"},{"n":"星之破晓","v":"dhpx"},{"n":"赛尔计划","v":"srjh"},{"n":"SLG综合","v":"SLG"},{"n":"代号:伙伴","v":"DHGB"},{"n":"天使之战","v":"tszz"},{"n":"全明星街球派对","v":"hoopheroes"},{"n":"合金弹头:觉醒","v":"MetalSlug"},{"n":"白荆回廊","v":"BJHL"},{"n":"三国志战棋版","v":"g_sgzzqb"},{"n":"鹅鸭杀手游","v":"GooseDuck"},{"n":"太空杀","v":"SuperSus"},{"n":"天龙八部2:飞龙战天","v":"tlbb2flzt"},{"n":"西行纪 燃魂","v":"xxjrh"},{"n":"决胜巅峰","v":"jueshengdianfeng"},{"n":"冒险岛:枫之传说","v":"MapleStory"},{"n":"石器时代:觉醒","v":"sqsdjx"},{"n":"星球:重启","v":"xqcq"},{"n":"决战玛法","v":"jzmf"},{"n":"二次元游戏","v":"ECYYX"},{"n":"圣境之塔","v":"sjzt"},{"n":"传说法师手游","v":"CSFSSY"},{"n":"钢岚","v":"Mecharashi"},{"n":"勇闯三国","v":"ycsg"},{"n":"绯色回响","v":"fshxgf"},{"n":"三国:谋定天下","v":"sgmdtx"}]}], + // "yz":[{"key":"cateId","name":"分类","value":[{"n":"颜值","v":"yz"}]}], + "kjwh":[{"key":"cateId","name":"分类","value":[{"n":"数码科技","v":"smkj"},{"n":"纪录片","v":"jlp"},{"n":"成年教育","v":"jiaoyu"},{"n":"人文社科","v":"Humanities"}]}], + "yp":[{"key":"cateId","name":"分类","value":[{"n":"派对","v":"paidui"},{"n":"心动FM.","v":"DIANT"},{"n":"一起玩","v":"yiqiwan"}]}], + "voice":[{"key":"cateId","name":"分类","value":[{"n":"语音交友","v":"yyjy"},{"n":"音乐之声","v":"yyzs"},{"n":"连麦互动","v":"lianmaihudong"},{"n":"娱乐开黑","v":"ylkh"}]}] + // "znl":[{"key":"cateId","name":"分类","value":[{"n":"正能量","v":"znl"}]}] + }, + filter_def:{ + yl:{cateId:'yqk'}, + PCgame:{cateId:'LOL'}, + djry:{cateId:'TVgame'}, + syxx:{cateId:'wzry'}, + yz:{cateId:'yz'}, + kjwh:{cateId:'smkj'}, + yp:{cateId:'yiqiwan'}, + voice:{cateId:'yyzs'}, + znl:{cateId:'znl'} + }, + class_name:'娱乐天地&网游竞技&单机热游&手游休闲&颜值&科技文化&语音互动&语音直播&正能量',// /api/cate/list + class_url:'yl&PCgame&djry&syxx&yz&kjwh&yp&voice&znl', + detailUrl: 'http://live.yj1211.work/api/live/getRoomInfo?uid=&platform=douyu&roomId=fyid',// JustLive + searchUrl:'/api/search/liveRoom?#did=10000000000000000000000000001501&limit=20&offset=0&sk=**;post', + searchable:2, + quickSearch:0, + headers:{ + 'User-Agent':'MOBILE_UA' + }, + timeout:5000, + limit:8, + play_parse:true, + lazy:'', + 推荐:`js: + let d = []; + let jo = JSON.parse(request(input)).data; + jo.forEach((it,idex) => { + let slist = jo[idex].list ; + slist.forEach(it => { + d.push({ + url: it.rid, + title: it.roomName, + img: it.roomSrc, + desc: '👁' + it.hn + ' 🆙' + it.nickname, + }) + }); + }); + setResult(d); + `, + 一级:`js: + let d = []; + let jo = JSON.parse(request(input)).data.list; + jo.forEach(it => { + d.push({ + url: it.rid, + title: it.roomName, + img: it.roomSrc, + desc: '👁' + it.hn + ' 🆙' + it.nickname, + }) + }); + setResult(d); + `, + 二级:`js: + try { + if (typeof play_url === "undefined") { + var play_url = "" + } + var jo = JSON.parse(request(input)).data; + VOD = { + vod_id: jo.roomId, + vod_name: jo.roomName, + vod_pic: jo.roomPic, + type_name: "斗鱼." + jo.categoryName, + vod_director: '🆙 ' + jo.ownerName, + vod_content: "🏷分区:斗鱼" + "·" + jo.categoryName + " 🏷UP主:" + jo.ownerName + " 🏷人气:" + jo.online + (jo.isLive === 1 ? " 🏷状态:正在直播" : "状态:未开播") + }; + let episodes = JSON.parse(request("http://live.yj1211.work/api/live/getRealUrlMultiSource?platform=" + jo.platForm + "&roomId=" + jo.roomId)).data; //多线路 + if (Object.keys(episodes).length !== 0) { + let playFrom = []; + let playList = []; + let kplayList = []; + Object.keys(episodes).forEach(function(key) { + playFrom.append(key); + kplayList = episodes[key].map(function(it) { + let title = it.qualityName; + let playUrl = it.playUrl + return title + "$" + play_url + urlencode(playUrl) + }).join("#") + playList.append(kplayList); + }); + let vod_play_from = playFrom.join("$$$"); + let vod_play_url = playList.join("$$$"); + VOD["vod_play_from"] = vod_play_from; + VOD["vod_play_url"] = vod_play_url; + } else { + var d = []; + episodes = JSON.parse(request("http://live.yj1211.work/api/live/getRealUrl?platform=" + jo.platForm + "&roomId=" + jo.roomId)).data; //单线路 + var name = { + "OD": "原画", + "FD": "流畅", + "LD": "标清", + "SD": "高清", + "HD": "超清", + "2K": "2K", + "4K": "4K", + "FHD": "全高清", + "XLD": "极速", + "SQ": "普通音质", + "HQ": "高音质" + }; + Object.keys(episodes).forEach(function(key) { + if (!/ayyuid|to/.test(key)) { + d.push({ + title: name[key], + url: episodes[key] + }) + } + }); + d.push( + { + title: "解析1", + url: "http://epg.112114.xyz/huya/" + jo.roomId + }, + { + title: "解析2", + url: "https://www.aois.eu.org/live/huya/" + jo.roomId + }, + { + title: "解析3", + url: "https://www.goodiptv.club/huya/" + jo.roomId + }, + { + title: "解析4", + url: "http://maomao.kandiantv.cn/huya1.php?id=" + jo.roomId + }, + { + title: "解析5", + url: "http://43.138.170.29:35455/huya/" + jo.roomId + }, + { + title: "解析6", + url: "http://8.210.232.168/php/huya.php?id=" + jo.roomId + }, + ); + VOD["vod_play_from"] = "播放源"; + VOD["vod_play_url"] = d.map(function(it) { + return it.title + "$" + it.url + }).join("#"); + setResult(d); + } + } catch (e) { + log("获取二级详情页发生错误:" + e.message); + } + `, + // 搜索:'json:data.list;roomName;roomSrc;nickname;roomId', + 搜索: `js: + var d = []; + let rurls = input.split(';')[0].split('#'); + let rurl = rurls[0]; + let params = rurls.length > 1 ?rurls[1]:''; + let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let postData = {body:params}; + Object.assign(_fetch_params,postData); + let jo = JSON.parse(post(rurl,_fetch_params)).data.list; + jo.forEach(it => { + d.push({ + url: it.roomId, + title: it.roomName, + img: it.roomSrc, + desc: '👁' + it.hn + ' 🆙' + it.nickname, + }) + }); + setResult(d); + `, + + //是否启用辅助嗅探: 1,0 + sniffer:1, + // 辅助嗅探规则js写法 + isVideo: `js: + log(input); + if(/\\/huya/.test(input)) { + input = true + } else if(/\\.flv?|\\.m3u8?|\\.mp4?/.test(input)){ + input = true + }else{ + input = false + } + `, +} \ No newline at end of file diff --git a/摸鱼儿/js/碟调影视.js b/摸鱼儿/js/碟调影视.js new file mode 100644 index 0000000..39ba40f --- /dev/null +++ b/摸鱼儿/js/碟调影视.js @@ -0,0 +1,25 @@ +var rule = { + title:'碟调影视', + host:'http://www.618648.com', + // homeUrl:'/', + url:'/die-tiao/fyclass-fypage.html', + searchUrl:'/diediaoch/page/fypage/wd/**.html', + searchable:2,//是否启用全局搜索, + quickSearch:0,//是否启用快速搜索, + filterable:0,//是否启用分类筛选, + headers:{//网站的请求头,完整支持所有的,常带ua和cookies + 'User-Agent':'MOBILE_UA', + // "Cookie": "searchneed=ok" + }, + //class_parse:'.stui-header__menu li.hidden-xs;a&&Text;a&&href;.*/(.*?).html', + class_name:'电影&电视剧&综艺&动漫', + class_url:'1&2&3&4', + play_parse:true, + lazy:'', + limit:8, + 推荐:'.stui-vodlist.clearfix;.stui-vodlist__box;a&&title;a&&data-original;.pic-text&&Text;a&&href', + double:true, // 推荐内容是否双层定位 + 一级:'.stui-vodlist.clearfix li;a&&title;a&&data-original;.pic-text&&Text;a&&href', + 二级:{"title":"h1.title&&Text;.stui-content__detail p:eq(2)&&Text","img":".lazyload&&data-original","desc":".video-info-items:eq(-2)&&Text;.video-info-items:eq(-1)&&Text;.video-info-items:eq(-2)&&Text;.stui-content__detail p:eq(7)&&Text;.stui-content__detail p:eq(6)&&Text","content":".stui-content__detail p:eq(9)&&Text","tabs":".nav.nav-tabs li","lists":".tab-pane.fade:eq(#id)&&ul&&li"}, + 搜索:'.stui-vodlist.clearfix li;a&&title;a&&data-original;.pic-text&&Text;a&&href', +} diff --git a/摸鱼儿/js/网飞TV.js b/摸鱼儿/js/网飞TV.js new file mode 100644 index 0000000..c310712 --- /dev/null +++ b/摸鱼儿/js/网飞TV.js @@ -0,0 +1,48 @@ +muban.mxpro.二级.desc = '.module-info-item:eq(-1)&&Text;;;.module-info-item-content:eq(2)&&Text;.module-info-item-content:eq(1)&&Text' +muban.mxpro.二级.tabs = '#y-playList&&.tab-item' +muban.mxpro.二级.tab_text = 'body--small&&Text' +var rule={ + title:'网飞.TV', + 模板:'mxpro', + host:'https://www.wangfei.tv', + // url:'/vodshow/id/fyclass/page/fypage.html', + url:'/vodshow/id/fyfilter.html', + filterable:1,//是否启用分类筛选, + filter_url:'{{fl.cateId}}{{fl.area}}{{fl.by or "/by/time"}}{{fl.class}}{{fl.lang}}{{fl.letter}}/page/fypage{{fl.year}}', + filter: { + "dy":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"dy"},{"n":"动作片","v":"dongzuopian"},{"n":"喜剧片","v":"xijupian"},{"n":"爱情片","v":"aiqingpian"},{"n":"犯罪片","v":"fanzuipian"},{"n":"恐怖片","v":"kongbupian"},{"n":"科幻片","v":"kehuanpian"},{"n":"悬疑片","v":"xuanyipian"},{"n":"剧情片","v":"juqingpian"},{"n":"动画片","v":"donghuapian"},{"n":"战争片","v":"zhanzhengpian"}]},{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"喜剧","v":"/class/喜剧"},{"n":"爱情","v":"/class/爱情"},{"n":"恐怖","v":"/class/恐怖"},{"n":"动作","v":"/class/动作"},{"n":"科幻","v":"/class/科幻"},{"n":"剧情","v":"/class/剧情"},{"n":"战争","v":"/class/战争"},{"n":"犯罪","v":"/class/犯罪"},{"n":"动画","v":"/class/动画"},{"n":"奇幻","v":"/class/奇幻"},{"n":"武侠","v":"/class/武侠"},{"n":"冒险","v":"/class/冒险"},{"n":"枪战","v":"/class/枪战"},{"n":"恐怖","v":"/class/恐怖"},{"n":"悬疑","v":"/class/悬疑"},{"n":"惊悚","v":"/class/惊悚"},{"n":"经典","v":"/class/经典"},{"n":"青春","v":"/class/青春"},{"n":"古装","v":"/class/古装"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"中国","v":"/area/中国"},{"n":"香港","v":"/area/香港"},{"n":"台湾","v":"/area/台湾"},{"n":"美国","v":"/area/美国"},{"n":"韩国","v":"/area/韩国"},{"n":"法国","v":"/area/法国"},{"n":"英国","v":"/area/英国"},{"n":"日本","v":"/area/日本"},{"n":"德国","v":"/area/德国"},{"n":"泰国","v":"/area/泰国"},{"n":"印度","v":"/area/印度"},{"n":"意大利","v":"/area/意大利"},{"n":"西班牙","v":"/area/西班牙"},{"n":"加拿大","v":"/area/加拿大"},{"n":"其他","v":"/area/其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"普通话","v":"/lang/普通话"},{"n":"英语","v":"/lang/英语"},{"n":"粤语","v":"/lang/粤语"},{"n":"闽南语","v":"/lang/闽南语"},{"n":"韩语","v":"/lang/韩语"},{"n":"日语","v":"/lang/日语"},{"n":"法语","v":"/lang/法语"},{"n":"德语","v":"/lang/德语"},{"n":"其它","v":"/lang/其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"/year/2024"},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}], + "juji":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"juji"},{"n":"国产剧","v":"guochanju"},{"n":"香港剧","v":"xianggangju"},{"n":"台湾剧","v":"taiwanju"},{"n":"欧美剧","v":"oumeiju"},{"n":"日本剧","v":"ribenju"},{"n":"韩国剧","v":"hanguoju"},{"n":"东南亚","v":"dongnanya"},{"n":"其他剧","v":"qitaju"}]},{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"爱情","v":"/class/爱情"},{"n":"古装","v":"/class/古装"},{"n":"战争","v":"/class/战争"},{"n":"青春","v":"/class/青春"},{"n":"偶像","v":"/class/偶像"},{"n":"喜剧","v":"/class/喜剧"},{"n":"家庭","v":"/class/家庭"},{"n":"犯罪","v":"/class/犯罪"},{"n":"动作","v":"/class/动作"},{"n":"奇幻","v":"/class/奇幻"},{"n":"剧情","v":"/class/剧情"},{"n":"历史","v":"/class/历史"},{"n":"经典","v":"/class/经典"},{"n":"乡村","v":"/class/乡村"},{"n":"情景","v":"/class/情景"},{"n":"商战","v":"/class/商战"},{"n":"犯罪","v":"/class/犯罪"},{"n":"网剧","v":"/class/网剧"},{"n":"其他","v":"/class/其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"中国","v":"/area/中国"},{"n":"韩国","v":"/area/韩国"},{"n":"香港","v":"/area/香港"},{"n":"台湾","v":"/area/台湾"},{"n":"日本","v":"/area/日本"},{"n":"美国","v":"/area/美国"},{"n":"泰国","v":"/area/泰国"},{"n":"英国","v":"/area/英国"},{"n":"新加坡","v":"/area/新加坡"},{"n":"其他","v":"/area/其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"普通话","v":"/lang/普通话"},{"n":"英语","v":"/lang/英语"},{"n":"粤语","v":"/lang/粤语"},{"n":"闽南语","v":"/lang/闽南语"},{"n":"韩语","v":"/lang/韩语"},{"n":"日语","v":"/lang/日语"},{"n":"其它","v":"/lang/其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"/year/2024"},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}], + "zongyi":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"zongyi"},{"n":"大陆综艺","v":"daluzongyi"},{"n":"港台综艺","v":"gangtaizongyi"},{"n":"日韩综艺","v":"rihanzongyi"},{"n":"欧美综艺","v":"oumeizongyi"},{"n":"其他综艺","v":"qitazongyi"}]},{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"选秀","v":"/class/选秀"},{"n":"情感","v":"/class/情感"},{"n":"访谈","v":"/class/访谈"},{"n":"播报","v":"/class/播报"},{"n":"旅游","v":"/class/旅游"},{"n":"音乐","v":"/class/音乐"},{"n":"美食","v":"/class/美食"},{"n":"纪实","v":"/class/纪实"},{"n":"曲艺","v":"/class/曲艺"},{"n":"生活","v":"/class/生活"},{"n":"游戏互动","v":"/class/游戏互动"},{"n":"财经","v":"/class/财经"},{"n":"求职","v":"/class/求职"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"中国","v":"/area/中国"},{"n":"香港","v":"/area/香港"},{"n":"台湾","v":"/area/台湾"},{"n":"日本","v":"/area/日本"},{"n":"韩国","v":"/area/韩国"},{"n":"欧美","v":"/area/欧美"},{"n":"其他","v":"/area/其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"普通话","v":"/lang/普通话"},{"n":"英语","v":"/lang/英语"},{"n":"粤语","v":"/lang/粤语"},{"n":"闽南语","v":"/lang/闽南语"},{"n":"韩语","v":"/lang/韩语"},{"n":"日语","v":"/lang/日语"},{"n":"其它","v":"/lang/其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"/year/2024"},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}], + "dongman":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"dongman"},{"n":"国产动漫","v":"guochandongman"},{"n":"日韩动漫","v":"rihandongman"},{"n":"欧美动漫","v":"oumeidongman"},{"n":"其他动漫","v":"qitadongman"}]},{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"科幻","v":"/class/科幻"},{"n":"热血","v":"/class/热血"},{"n":"推理","v":"/class/推理"},{"n":"搞笑","v":"/class/搞笑"},{"n":"冒险","v":"/class/冒险"},{"n":"校园","v":"/class/校园"},{"n":"动作","v":"/class/动作"},{"n":"机战","v":"/class/机战"},{"n":"运动","v":"/class/运动"},{"n":"战争","v":"/class/战争"},{"n":"少年","v":"/class/少年"},{"n":"少女","v":"/class/少女"},{"n":"社会","v":"/class/社会"},{"n":"原创","v":"/class/原创"},{"n":"亲子","v":"/class/亲子"},{"n":"益智","v":"/class/益智"},{"n":"励志","v":"/class/励志"},{"n":"其他","v":"/class/其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"中国","v":"/area/中国"},{"n":"韩国","v":"/area/韩国"},{"n":"日本","v":"/area/日本"},{"n":"美国","v":"/area/美国"},{"n":"法国","v":"/area/法国"},{"n":"德国","v":"/area/德国"},{"n":"其他","v":"/area/其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"普通话","v":"/lang/普通话"},{"n":"英语","v":"/lang/英语"},{"n":"粤语","v":"/lang/粤语"},{"n":"闽南语","v":"/lang/闽南语"},{"n":"韩语","v":"/lang/韩语"},{"n":"日语","v":"/lang/日语"},{"n":"其它","v":"/lang/其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"/year/2024"},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}], + "jilupian":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"人物","v":"/class/人物"},{"n":"军事","v":"/class/军事"},{"n":"历史","v":"/class/历史"},{"n":"文化","v":"/class/文化"},{"n":"探索","v":"/class/探索"},{"n":"科技","v":"/class/科技"},{"n":"自然","v":"/class/自然"},{"n":"解密","v":"/class/解密"},{"n":"其他","v":"/class/其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"/area/内地"},{"n":"香港","v":"/area/香港"},{"n":"台湾","v":"/area/台湾"},{"n":"美国","v":"/area/美国"},{"n":"韩国","v":"/area/韩国"},{"n":"法国","v":"/area/法国"},{"n":"英国","v":"/area/英国"},{"n":"日本","v":"/area/日本"},{"n":"德国","v":"/area/德国"},{"n":"泰国","v":"/area/泰国"},{"n":"印度","v":"/area/印度"},{"n":"意大利","v":"/area/意大利"},{"n":"西班牙","v":"/area/西班牙"},{"n":"加拿大","v":"/area/加拿大"},{"n":"其他","v":"/area/其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"普通话","v":"/lang/普通话"},{"n":"英语","v":"/lang/英语"},{"n":"粤语","v":"/lang/粤语"},{"n":"闽南语","v":"/lang/闽南语"},{"n":"韩语","v":"/lang/韩语"},{"n":"日语","v":"/lang/日语"},{"n":"法语","v":"/lang/法语"},{"n":"德语","v":"/lang/德语"},{"n":"其它","v":"/lang/其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"/year/2024"},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}], + "dyjs":[{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"/letter/A"},{"n":"B","v":"/letter/B"},{"n":"C","v":"/letter/C"},{"n":"D","v":"/letter/D"},{"n":"E","v":"/letter/E"},{"n":"F","v":"/letter/F"},{"n":"G","v":"/letter/G"},{"n":"H","v":"/letter/H"},{"n":"I","v":"/letter/I"},{"n":"J","v":"/letter/J"},{"n":"K","v":"/letter/K"},{"n":"L","v":"/letter/L"},{"n":"M","v":"/letter/M"},{"n":"N","v":"/letter/N"},{"n":"O","v":"/letter/O"},{"n":"P","v":"/letter/P"},{"n":"Q","v":"/letter/Q"},{"n":"R","v":"/letter/R"},{"n":"S","v":"/letter/S"},{"n":"T","v":"/letter/T"},{"n":"U","v":"/letter/U"},{"n":"V","v":"/letter/V"},{"n":"W","v":"/letter/W"},{"n":"X","v":"/letter/X"},{"n":"Y","v":"/letter/Y"},{"n":"Z","v":"/letter/Z"},{"n":"0-9","v":"/letter/0-9"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}] + }, + filter_def:{ + dy:{cateId:'dy'}, + juji:{cateId:'juji'}, + zongyi:{cateId:'zongyi'}, + dongman:{cateId:'dongman'}, + jilupian:{cateId:'jilupian'}, + dyjs:{cateId:'dyjs'} + }, + searchUrl: '/vodsearch/page/fypage/wd/**.html', + class_parse: '.navbar-items li:gt(1):lt(8);a&&title;a&&href;.*/(.*?).html', + lazy:`js: + var html = JSON.parse(request(input).match(/r player_.*?=(.*?)