mirror of
https://github.com/ls125781003/tvboxtg.git
synced 2026-11-03 02:03:31 +00:00
3.26
up
This commit is contained in:
1 parent
5a0d09c16f
commit
b173e0a0d5
42 files changed
+30679
-17792
No files matched your search
+382
-93
@@ -1,51 +1,290 @@
|
|||||||
央视,#genre#
|
央视,#genre#
|
||||||
CCTV1,http://116.117.105.236:8096/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路193』
|
CCTV1,http://home.kuaidi521.com:35455/gaoma/cctv1.m3u8
|
||||||
CCTV1,http://116.117.105.71:8096/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路194』
|
CCTV1,http://nas.suntao.online:35455/gaoma/cctv1.m3u8
|
||||||
CCTV1,http://116.117.105.96:8096/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路195』
|
CCTV1,http://58.243.224.244:9901/tsfile/live/1031_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
CCTV2,http://116.117.105.236:8096/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路183』
|
CCTV1,http://119.123.178.255:8086/hls/2/index.m3u8
|
||||||
CCTV2,http://116.117.105.71:8096/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路184』
|
CCTV1,http://xiaoya.crccxw.top:35455/gaoma/cctv1.m3u8
|
||||||
CCTV2,http://116.117.105.96:8096/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路185』
|
CCTV1,http://58.220.219.14:9901/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
CCTV3,http://116.117.105.236:8096/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路165』
|
CCTV1,http://175.31.21.146:4480/hls/1/index.m3u8
|
||||||
CCTV3,http://116.117.105.71:8096/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路166』
|
CCTV1,http://183.215.134.239:19901/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
CCTV3,http://116.117.105.96:8096/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路167』
|
CCTV1,http://1752e145z8.vicp.fun:35455/gaoma/cctv1.m3u8
|
||||||
CCTV4,http://116.117.105.236:8096/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路190』
|
CCTV1,http://1.itv.nctv.top:7777/gaoma/cctv1.m3u8
|
||||||
CCTV4,http://116.117.105.71:8096/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路191』
|
CCTV1,http://tv.20191209.xyz:37377/migu/608807420.m3u8?migutoken=004b385f879c68b1898b3b528c53ce2cc69a05fc6ccef397d5ff725950f98cc37983a6c0565ab535a964de0b80663b3a394fd8a43c51d0547d2e232162525de45bdb07292d1fc1944aea97f0
|
||||||
CCTV4,http://116.117.105.96:8096/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路192』
|
CCTV1,http://58.220.211.90:352/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid$LR•IPV4『线路274』
|
||||||
CCTV5,http://116.117.105.236:8096/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路205』
|
CCTV1,http://58.220.211.90:352/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路275』
|
||||||
CCTV5,http://116.117.105.71:8096/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路206』
|
CCTV1,http://36.105.100.208:35455/gaoma/cctv1.m3u8
|
||||||
CCTV5,http://116.117.105.96:8096/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路207』
|
CCTV1,http://3501776.xyz:35455/gaoma/cctv1.m3u8
|
||||||
CCTV6,http://116.117.105.236:8096/tsfile/live/0006_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路167』
|
CCTV1,http://222.134.245.16:9901/tsfile/live/0001_1.m3u8
|
||||||
CCTV6,http://116.117.105.71:8096/tsfile/live/0006_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路168』
|
CCTV1,http://112.81.218.254:35455/gaoma/cctv1.m3u8
|
||||||
CCTV6,http://116.117.105.96:8096/tsfile/live/0006_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路169』
|
CCTV1,http://183.184.228.183:9003//hls/1/index.m3u8
|
||||||
CCTV7,http://116.117.105.236:8096/tsfile/live/0007_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路174』
|
CCTV1,http://39.77.34.83:35455/gaoma/cctv1.m3u8
|
||||||
CCTV7,http://116.117.105.71:8096/tsfile/live/0007_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路175』
|
CCTV1,http://113.140.12.230:8888/newlive/live/hls/2/live.m3u8
|
||||||
CCTV7,http://116.117.105.96:8096/tsfile/live/0007_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路176』
|
CCTV1,http://222.219.183.103:8089/hls/1/index.m3u8
|
||||||
CCTV8,http://116.117.105.236:8096/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路157』
|
CCTV1,http://58.210.168.86:10800/newlive/live/hls/1/live.m3u8
|
||||||
CCTV8,http://116.117.105.71:8096/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路158』
|
CCTV1,http://zjzcf.synology.me:35455/gaoma/cctv1.m3u8
|
||||||
CCTV8,http://116.117.105.96:8096/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路159』
|
CCTV2,http://222.169.85.8:9901/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路251』
|
||||||
CCTV9,http://116.117.105.236:8096/tsfile/live/0009_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路168』
|
CCTV2,http://nas.suntao.online:35455/gaoma/cctv2.m3u8
|
||||||
CCTV9,http://116.117.105.71:8096/tsfile/live/0009_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路169』
|
CCTV2,http://huashetou.fun:35455/gaoma/cctv2.m3u8
|
||||||
CCTV9,http://116.117.105.96:8096/tsfile/live/0009_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路170』
|
CCTV2,http://58.243.224.244:9901/tsfile/live/1000_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
CCTV10,http://110.7.131.129:8096/tsfile/live/0010_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路172』
|
CCTV2,http://yc.myds.me:35455/gaoma/cctv2.m3u8
|
||||||
CCTV10,http://116.117.105.236:8096/tsfile/live/0010_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路177』
|
CCTV2,http://39.164.160.249:9901/tsfile/live/0002_1.m3u8
|
||||||
CCTV10,http://116.117.105.71:8096/tsfile/live/0010_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路178』
|
CCTV2,http://175.31.21.146:4480/hls/2/index.m3u8
|
||||||
CCTV10,http://116.117.105.96:8096/tsfile/live/0010_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路179』
|
CCTV2,http://183.215.134.239:19901/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
CCTV11,http://110.7.131.129:8096/tsfile/live/0011_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路160』
|
CCTV2,http://116.128.243.121:85/tsfile/live/0002_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
CCTV11,http://116.117.105.236:8096/tsfile/live/0011_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路165』
|
CCTV2,http://1752e145z8.vicp.fun:35455/gaoma/cctv2.m3u8
|
||||||
CCTV11,http://116.117.105.71:8096/tsfile/live/0011_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路166』
|
CCTV2,http://1.itv.nctv.top:7777/gaoma/cctv2.m3u8
|
||||||
CCTV11,http://116.117.105.96:8096/tsfile/live/0011_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路167』
|
CCTV2,http://tv.20191209.xyz:37377/migu/631780532.m3u8?migutoken=862217ff2cffee0a741039e700509cb8f9a8b1920fe6cee55afb89ef1551eba3ecc744e93cf8e52cd8b4bf1a27c7a074745b640058072bfa4ad145917cdeb959261218d7b78174684a74ae78
|
||||||
CCTV12,http://110.7.131.129:8096/tsfile/live/0012_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路181』
|
CCTV2,http://36.105.100.208:35455/gaoma/cctv2.m3u8
|
||||||
CCTV12,http://116.117.105.236:8096/tsfile/live/0012_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路186』
|
CCTV2,http://3501776.xyz:35455/gaoma/cctv2.m3u8
|
||||||
CCTV12,http://116.117.105.71:8096/tsfile/live/0012_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路187』
|
CCTV2,http://222.134.245.16:9901/tsfile/live/0002_1.m3u8
|
||||||
CCTV12,http://116.117.105.96:8096/tsfile/live/0012_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路188』
|
CCTV2,http://183.184.228.183:9003//hls/2/index.m3u8
|
||||||
CCTV13,http://110.7.131.129:8096/tsfile/live/0013_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路170』
|
CCTV2,http://39.77.34.83:35455/gaoma/cctv2.m3u8
|
||||||
CCTV13,http://116.117.105.236:8096/tsfile/live/0013_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路175』
|
CCTV2,http://113.140.12.230:8888/newlive/live/hls/3/live.m3u8
|
||||||
CCTV13,http://116.117.105.71:8096/tsfile/live/0013_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路176』
|
CCTV2,http://60.223.224.176:8888/newlive/live/hls/3/live.m3u8
|
||||||
CCTV13,http://116.117.105.96:8096/tsfile/live/0013_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路177』
|
CCTV2,http://zjzcf.synology.me:35455/gaoma/cctv2.m3u8
|
||||||
CCTV14,http://110.7.131.129:8096/tsfile/live/0014_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路177』
|
CCTV3,http://222.134.19.31:352/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路247』
|
||||||
CCTV14,http://116.117.105.236:8096/tsfile/live/0014_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路182』
|
CCTV3,http://1.24.39.180:9003/hls/3/index.m3u8
|
||||||
CCTV14,http://116.117.105.71:8096/tsfile/live/0014_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路183』
|
CCTV3,http://124.93.18.238:9003//hls/3/index.m3u8
|
||||||
CCTV14,http://116.117.105.96:8096/tsfile/live/0014_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路184』
|
CCTV3,http://nas.suntao.online:35455/gaoma/cctv3.m3u8
|
||||||
|
CCTV3,http://183.215.134.239:19901/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV3,http://yc.myds.me:35455/gaoma/cctv3.m3u8
|
||||||
|
CCTV3,http://222.134.19.31:352/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV3,http://60.223.224.176:8888/newlive/live/hls/4/live.m3u8
|
||||||
|
CCTV3,http://113.140.12.230:8888/newlive/live/hls/4/live.m3u8
|
||||||
|
CCTV3,http://1752e145z8.vicp.fun:35455/gaoma/cctv3.m3u8
|
||||||
|
CCTV3,http://1.itv.nctv.top:7777/gaoma/cctv3.m3u8
|
||||||
|
CCTV3,http://tv.20191209.xyz:37377/migu/624878271.m3u8?migutoken=6bf1444e1fd674ffdba5c57e719cecb87358abd9dfd0059ccfaceb24503ca14f393ec4b44fc2a4b2b5eded13d1f30a2052d85600414a1274345fcd95bd9848cf13bffeef1945f996928f0095
|
||||||
|
CCTV3,http://221.2.148.205:8154/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路34』
|
||||||
|
CCTV3,http://36.105.100.208:35455/gaoma/cctv3.m3u8
|
||||||
|
CCTV3,http://39.77.34.83:35455/gaoma/cctv3.m3u8
|
||||||
|
CCTV3,http://222.134.245.16:9901/tsfile/live/0003_1.m3u8
|
||||||
|
CCTV3,http://222.169.85.8:9901/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV3,http://222.169.85.8:9901/tsfile/live/0003_1.m3u8
|
||||||
|
CCTV3,http://112.46.85.60:8009/hls/3/index.m3u8
|
||||||
|
CCTV3,http://3501776.xyz:35455/gaoma/cctv3.m3u8
|
||||||
|
CCTV3,http://183.184.228.183:9003//hls/3/index.m3u8
|
||||||
|
CCTV3,http://218.29.168.146:352/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV3,http://58.220.219.14:9901/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV3,http://zjzcf.synology.me:35455/gaoma/cctv3.m3u8
|
||||||
|
CCTV4,http://tv.20191209.xyz:37377/migu/608807419.m3u8?migutoken=f623911f12100eda47f646cc2a14f2c4563e5d65f3e99dd30284493de9b5ff8389ee51ba62d51bb0a92235ccb1109e54ab6b1b5fe401fe4f60d18b1ccc51f92aa29b70fba7a400ff9058fdf8
|
||||||
|
CCTV4,http://124.93.18.238:9003//hls/4/index.m3u8
|
||||||
|
CCTV4,http://58.243.224.244:9901/tsfile/live/1002_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
|
CCTV4,http://nas.suntao.online:35455/gaoma/cctv4.m3u8
|
||||||
|
CCTV4,http://tv.20191209.xyz:37377/migu/608807416.m3u8?migutoken=3e58d508ab4bf069dc535fdfc6330dfccfc52c3bb391b5b5602cff12f0acbb883fa9280c7422a00e84eba6fd1e2ddb27dc888d6e63e914595ce9fb917d9462307140d2558dac1fb322c2a85b
|
||||||
|
CCTV4,http://huashetou.fun:35455/gaoma/cctv4.m3u8
|
||||||
|
CCTV4,http://1752e145z8.vicp.fun:35455/gaoma/cctv4.m3u8
|
||||||
|
CCTV4,http://1.itv.nctv.top:7777/gaoma/cctv4.m3u8
|
||||||
|
CCTV4,http://1.itv.nctv.top:7777/gaoma/cctv4k_10m.m3u8
|
||||||
|
CCTV4,http://183.66.15.146:60901/tsfile/live/0004_1.m3u8?key=txiptv$LR•IPV4『线路190』
|
||||||
|
CCTV4,http://222.134.245.16:9901/tsfile/live/0004_1.m3u8
|
||||||
|
CCTV4,http://183.184.228.183:9003//hls/4/index.m3u8
|
||||||
|
CCTV4,http://39.77.34.83:35455/gaoma/cctv4.m3u8
|
||||||
|
CCTV4,http://113.140.12.230:8888/newlive/live/hls/5/live.m3u8
|
||||||
|
CCTV4,http://60.223.224.176:8888/newlive/live/hls/5/live.m3u8?
|
||||||
|
CCTV4,http://222.219.183.103:8089/hls/4/index.m3u8
|
||||||
|
CCTV4,http://36.105.100.208:35455/gaoma/cctv4.m3u8
|
||||||
|
CCTV4,http://zjzcf.synology.me:35455/gaoma/cctv4.m3u8
|
||||||
|
CCTV5,http://1.24.39.180:9003/hls/5/index.m3u8
|
||||||
|
CCTV5,http://42.225.117.174:11199/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV5,http://nas.suntao.online:35455/gaoma/cctv5.m3u8
|
||||||
|
CCTV5,http://112.81.218.254:35455/gaoma/cctv5.m3u8
|
||||||
|
CCTV5,http://222.134.19.31:352/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV5,http://huashetou.fun:35455/gaoma/cctv5.m3u8
|
||||||
|
CCTV5,http://60.223.224.176:8888/newlive/live/hls/6/live.m3u8
|
||||||
|
CCTV5,http://113.140.12.230:8888/newlive/live/hls/6/live.m3u8
|
||||||
|
CCTV5,http://1.itv.nctv.top:7777/gaoma/cctv5.m3u8
|
||||||
|
CCTV5,http://tv.20191209.xyz:37377/migu/641886683.m3u8?migutoken=81d12cec2983a402e950068a320720875c9b84d86ead50b7ee5cc3d407f55f3d85a8e298762710bc211027e047162ea27025e20dda4ac4921a6c1d8b950dbe297e15174889d5122c0e3462d0
|
||||||
|
CCTV5,http://116.9.204.242:9901/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路177』
|
||||||
|
CCTV5,http://61.133.10.250:352/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路269』
|
||||||
|
CCTV5,http://36.105.100.208:35455/gaoma/cctv5.m3u8
|
||||||
|
CCTV5,http://home.kuaidi521.com:35455/gaoma/cctv5.m3u8
|
||||||
|
CCTV5,http://222.134.245.16:9901/tsfile/live/0005_1.m3u8
|
||||||
|
CCTV5,http://116.9.204.242:9901/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV5,http://124.93.18.238:9003//hls/5/index.m3u8
|
||||||
|
CCTV5,http://116.9.204.242:9901/tsfile/live/0005_1.m3u8
|
||||||
|
CCTV5,http://183.184.228.183:9003//hls/5/index.m3u8
|
||||||
|
CCTV5,http://39.77.34.83:35455/gaoma/cctv5.m3u8
|
||||||
|
CCTV5,http://xiaoya.crccxw.top:35455/gaoma/cctv5.m3u8
|
||||||
|
CCTV5,http://zjzcf.synology.me:35455/gaoma/cctv5.m3u8
|
||||||
|
CCTV5+,http://cssbyd.imwork.net:8082/hls/6/index.m3u8
|
||||||
|
CCTV5+,http://nas.suntao.online:35455/gaoma/cctv5p.m3u8
|
||||||
|
CCTV5+,http://home.kuaidi521.com:35455/gaoma/cctv5p.m3u8
|
||||||
|
CCTV5+,http://183.215.134.239:19901/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV5+,http://xiaoya.crccxw.top:35455/gaoma/cctv5p.m3u8
|
||||||
|
CCTV5+,http://1.itv.nctv.top:7777/gaoma/cctv5p.m3u8
|
||||||
|
CCTV5+,http://1752e145z8.vicp.fun:35455/gaoma/cctv5p.m3u8
|
||||||
|
CCTV5+,http://112.81.218.254:35455/gaoma/cctv5p.m3u8
|
||||||
|
CCTV5+,http://222.219.183.103:8089/hls/19/index.m3u8
|
||||||
|
CCTV5+,http://183.184.228.183:9003//hls/6/index.m3u8
|
||||||
|
CCTV5+,http://182.37.169.94:352/tsfile/live/0016_1.m3u8
|
||||||
|
CCTV5+,http://zjzcf.synology.me:35455/gaoma/cctv5p.m3u8
|
||||||
|
CCTV6,http://1.24.39.180:9003/hls/6/index.m3u8
|
||||||
|
CCTV6,http://222.134.19.31:352/tsfile/live/0006_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV6,http://39.170.52.236:808/hls/6/index.m3u8
|
||||||
|
CCTV6,http://221.2.148.205:8154/tsfile/live/0006_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路35』
|
||||||
|
CCTV6,http://113.140.12.230:8888/newlive/live/hls/7/live.m3u8
|
||||||
|
CCTV6,http://222.169.85.8:9901/tsfile/live/0006_1.m3u8?key=txiptv
|
||||||
|
CCTV6,http://zzssw01.55555.io:9901/tsfile/live/0006_1.m3u8
|
||||||
|
CCTV6,http://124.93.18.238:9003//hls/6/index.m3u8
|
||||||
|
CCTV6,http://101.19.84.8:9901/tsfile/live/0006_1.m3u8
|
||||||
|
CCTV6,http://183.184.228.183:9003//hls/7/index.m3u8
|
||||||
|
CCTV7,http://8.138.7.223/tv/cctv7.m3u8
|
||||||
|
CCTV7,http://nas.suntao.online:35455/gaoma/cctv7.m3u8
|
||||||
|
CCTV7,http://60.223.224.176:8888/newlive/live/hls/9/live.m3u8
|
||||||
|
CCTV7,https://live.junhao.mil.cn/rmt9502/3e6e7c5477314ec38f5e58e2a5c70024.m3u8?txSecret=57978fafb9c19880afa5c8687e8241d8&txTime=7A42BAFF
|
||||||
|
CCTV7,http://live.junhao.mil.cn/rmt9502/3e6e7c5477314ec38f5e58e2a5c70024.m3u8?txSecret=57978fafb9c19880afa5c8687e8241d8&txTime=7A42BAFF
|
||||||
|
CCTV7,http://1752e145z8.vicp.fun:35455/gaoma/cctv7.m3u8
|
||||||
|
CCTV7,http://huashetou.fun:35455/gaoma/cctv7.m3u8
|
||||||
|
CCTV7,http://yc.myds.me:35455/gaoma/cctv7.m3u8
|
||||||
|
CCTV7,http://xiaoya.crccxw.top:35455/gaoma/cctv7.m3u8
|
||||||
|
CCTV7,http://182.37.169.94:352/tsfile/live/0007_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV7,http://1.itv.nctv.top:7777/gaoma/cctv7.m3u8
|
||||||
|
CCTV7,http://36.105.100.208:35455/gaoma/cctv7.m3u8
|
||||||
|
CCTV7,http://home.kuaidi521.com:35455/gaoma/cctv7.m3u8
|
||||||
|
CCTV7,http://101.19.84.8:9901/tsfile/live/0007_1.m3u8
|
||||||
|
CCTV7,http://183.184.228.183:9003//hls/8/index.m3u8
|
||||||
|
CCTV7,http://39.77.34.83:35455/gaoma/cctv7.m3u8
|
||||||
|
CCTV7,http://112.81.218.254:35455/gaoma/cctv7.m3u8
|
||||||
|
CCTV7,http://124.93.18.238:9003//hls/7/index.m3u8
|
||||||
|
CCTV7,http://222.219.183.103:8089/hls/7/index.m3u8
|
||||||
|
CCTV8,http://tv.20191209.xyz:37377/migu/624878356.m3u8?migutoken=9d347588ab808559db972d3c94b0d970ec130153e4a6dde98c4466f1d3f85f58de23d16994f2f0ed903aa6727a7282cb17103e67b69c8e3f31d253bb78039a4df119e2cfeba6916d123a8003
|
||||||
|
CCTV8,http://1.24.39.180:9003/hls/8/index.m3u8
|
||||||
|
CCTV8,http://112.81.218.254:35455/gaoma/cctv8.m3u8
|
||||||
|
CCTV8,http://nas.suntao.online:35455/gaoma/cctv8.m3u8
|
||||||
|
CCTV8,http://nas.suntao.online:35455/gaoma/cctv8k_36m.m3u8
|
||||||
|
CCTV8,http://183.215.134.239:19901/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV8,http://yc.myds.me:35455/gaoma/cctv8.m3u8
|
||||||
|
CCTV8,http://114.105.98.95:37377/migu/624878356.m3u8?migutoken=9d347588ab808559db972d3c94b0d970ec130153e4a6dde98c4466f1d3f85f58de23d16994f2f0ed903aa6727a7282cb17103e67b69c8e3f31d253bb78039a4df119e2cfeba6916d123a8003
|
||||||
|
CCTV8,http://222.134.19.31:352/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV8,http://1.itv.nctv.top:7777/gaoma/cctv8.m3u8
|
||||||
|
CCTV8,http://1.itv.nctv.top:7777/gaoma/cctv8k_36m.m3u8
|
||||||
|
CCTV8,http://3501776.xyz:35455/gaoma/cctv8.m3u8
|
||||||
|
CCTV8,http://home.kuaidi521.com:35455/gaoma/cctv8.m3u8
|
||||||
|
CCTV8,http://112.46.85.60:8009/hls/8/index.m3u8
|
||||||
|
CCTV8,http://124.93.18.238:9003//hls/8/index.m3u8
|
||||||
|
CCTV8,http://101.19.84.8:9901/tsfile/live/0008_1.m3u8
|
||||||
|
CCTV8,http://183.184.228.183:9003//hls/9/index.m3u8
|
||||||
|
CCTV8,http://113.140.12.230:8888/newlive/live/hls/9/live.m3u8
|
||||||
|
CCTV8,http://huashetou.fun:35455/gaoma/cctv8k_36m.m3u8
|
||||||
|
CCTV8,http://xiaoya.crccxw.top:35455/gaoma/cctv8.m3u8
|
||||||
|
CCTV8,http://60.223.224.176:8888/newlive/live/hls/10/live.m3u8?
|
||||||
|
CCTV8,http://221.2.148.205:8154/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV8,http://61.133.10.250:352/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV8,http://113.140.86.162:8009/hls/8/index.m3u8
|
||||||
|
CCTV8,http://zjzcf.synology.me:35455/gaoma/cctv8.m3u8
|
||||||
|
CCTV9,http://112.81.218.254:35455/gaoma/cctv9.m3u8
|
||||||
|
CCTV9,http://huashetou.fun:35455/gaoma/cctv9.m3u8
|
||||||
|
CCTV9,http://42.225.117.174:11199/tsfile/live/0009_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV9,http://180.213.174.225:9901/tsfile/live/0009_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV9,http://1.itv.nctv.top:7777/gaoma/cctv9.m3u8
|
||||||
|
CCTV9,http://3501776.xyz:35455/gaoma/cctv9.m3u8
|
||||||
|
CCTV9,http://xiaoya.crccxw.top:35455/gaoma/cctv9.m3u8
|
||||||
|
CCTV9,http://nas.suntao.online:35455/gaoma/cctv9.m3u8
|
||||||
|
CCTV9,http://home.kuaidi521.com:35455/gaoma/cctv9.m3u8
|
||||||
|
CCTV9,http://183.184.228.183:9003//hls/10/index.m3u8
|
||||||
|
CCTV9,http://58.243.224.244:9901/tsfile/live/1007_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
|
CCTV9,http://60.223.224.176:8888/newlive/live/hls/11/live.m3u8?
|
||||||
|
CCTV9,http://504099760.qicp.vip:9901/tsfile/live/0009_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV9,http://222.219.183.103:8089/hls/9/index.m3u8
|
||||||
|
CCTV9,http://zjzcf.synology.me:35455/gaoma/cctv9.m3u8
|
||||||
|
CCTV10,http://tv.20191209.xyz:37377/migu/624878405.m3u8?migutoken=06cf776d6a6cbe5cb707174dfad937c2164030bf7ce5f589493870891966f9cdaa5f56bad6e7874d683d5b1e3d9a6e59d0f7c78276d5ec47d979ae42b67833e261a2dda0118f3edcabd6a85b
|
||||||
|
CCTV10,http://nas.suntao.online:35455/gaoma/cctv10.m3u8
|
||||||
|
CCTV10,http://1752e145z8.vicp.fun:35455/gaoma/cctv10.m3u8
|
||||||
|
CCTV10,http://42.225.117.174:11199/tsfile/live/0010_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV10,http://112.81.218.254:35455/gaoma/cctv10.m3u8
|
||||||
|
CCTV10,http://39.164.160.249:9901/tsfile/live/0010_1.m3u8
|
||||||
|
CCTV10,http://huashetou.fun:35455/gaoma/cctv10.m3u8
|
||||||
|
CCTV10,http://36.105.100.208:35455/gaoma/cctv10.m3u8
|
||||||
|
CCTV10,http://3501776.xyz:35455/gaoma/cctv10.m3u8
|
||||||
|
CCTV10,http://xiaoya.crccxw.top:35455/gaoma/cctv10.m3u8
|
||||||
|
CCTV10,http://1.24.39.180:9003/hls/10/index.m3u8
|
||||||
|
CCTV10,http://113.140.12.230:8888/newlive/live/hls/11/live.m3u8
|
||||||
|
CCTV10,http://222.169.85.8:9901/tsfile/live/0010_1.m3u8
|
||||||
|
CCTV10,http://222.219.183.103:8089/hls/10/index.m3u8
|
||||||
|
CCTV10,http://183.184.228.183:9003//hls/11/index.m3u8
|
||||||
|
CCTV10,http://39.77.34.83:35455/gaoma/cctv10.m3u8
|
||||||
|
CCTV10,http://60.223.224.176:8888/newlive/live/hls/12/live.m3u8
|
||||||
|
CCTV10,http://182.37.169.94:352/tsfile/live/0010_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV10,http://180.213.174.225:9901/tsfile/live/0010_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV11,http://tv.20191209.xyz:37377/migu/667987558.m3u8?migutoken=d3962834d5d359e6f7f25a8880b73dac381a999ef87ba6b7f0f985bb5308a73061bbf5a9abdf873debb3b83b31eb7eff72f410c853c86f404b3f3ef269aeb631982e338f1400adcaf902fff7
|
||||||
|
CCTV11,http://nas.suntao.online:35455/gaoma/cctv11.m3u8
|
||||||
|
CCTV11,http://112.81.218.254:35455/gaoma/cctv11.m3u8
|
||||||
|
CCTV11,http://huashetou.fun:35455/gaoma/cctv11.m3u8
|
||||||
|
CCTV11,http://1.itv.nctv.top:7777/gaoma/cctv11.m3u8
|
||||||
|
CCTV11,http://36.105.100.208:35455/gaoma/cctv11.m3u8
|
||||||
|
CCTV11,http://yc.myds.me:35455/gaoma/cctv11.m3u8
|
||||||
|
CCTV11,http://39.164.160.249:9901/tsfile/live/0011_1.m3u8
|
||||||
|
CCTV11,http://home.kuaidi521.com:35455/gaoma/cctv11.m3u8
|
||||||
|
CCTV12,http://nas.suntao.online:35455/gaoma/cctv12.m3u8
|
||||||
|
CCTV12,http://112.81.218.254:35455/gaoma/cctv12.m3u8
|
||||||
|
CCTV12,http://home.kuaidi521.com:35455/gaoma/cctv12.m3u8
|
||||||
|
CCTV12,http://39.164.160.249:9901/tsfile/live/0012_1.m3u8
|
||||||
|
CCTV12,http://36.105.100.208:35455/gaoma/cctv12.m3u8
|
||||||
|
CCTV12,http://xiaoya.crccxw.top:35455/gaoma/cctv12.m3u8
|
||||||
|
CCTV12,http://124.93.18.238:9003//hls/12/index.m3u8
|
||||||
|
CCTV12,http://huashetou.fun:35455/gaoma/cctv12.m3u8
|
||||||
|
CCTV12,http://183.184.228.183:9003//hls/13/index.m3u8
|
||||||
|
CCTV12,http://39.77.34.83:35455/gaoma/cctv12.m3u8
|
||||||
|
CCTV13,http://tv.20191209.xyz:37377/migu/608807423.m3u8?migutoken=948b8b51df7e776bcf238bb9088879a2b71a25a424b0d80d5e71375315cda109c5aab5c79693c4324d45ad012e70208234f659abbe606a595a03d29e06ce931ed56f129fbc95a505ab84f72c
|
||||||
|
CCTV13,http://61.163.181.78:9901/tsfile/live/0013_1.m3u8
|
||||||
|
CCTV13,https://event.pull.hebtv.com/jishi/cp1.m3u8
|
||||||
|
CCTV13,http://ali-m-l.cztv.com/channels/lantian/channel21/1080p.m3u8
|
||||||
|
CCTV13,http://nas.suntao.online:35455/gaoma/cctv13.m3u8
|
||||||
|
CCTV13,http://183.215.134.239:19901/tsfile/live/0013_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV13,http://1.itv.nctv.top:7777/gaoma/cctv13.m3u8
|
||||||
|
CCTV13,http://36.105.100.208:35455/gaoma/cctv13.m3u8
|
||||||
|
CCTV13,http://39.164.160.249:9901/tsfile/live/0013_1.m3u8
|
||||||
|
CCTV13,http://huashetou.fun:35455/gaoma/cctv13.m3u8
|
||||||
|
CCTV13,http://112.81.218.254:35455/gaoma/cctv13.m3u8
|
||||||
|
CCTV13,http://yc.myds.me:35455/gaoma/cctv13.m3u8
|
||||||
|
CCTV13,http://183.184.228.183:9003//hls/14/index.m3u8
|
||||||
|
CCTV14,http://tv.20191209.xyz:37377/migu/624878440.m3u8?migutoken=d84c14c00275d7fa951be2b0a959b0c1af15c62e7f86732fa2306e3a92f447f5b841e0cc26645dc89e70e970812e2c07c2fe24ae5c02b854544ed8c99d6c6d668a402d58cf351e77b5311afd
|
||||||
|
CCTV14,http://nas.suntao.online:35455/gaoma/cctv14.m3u8
|
||||||
|
CCTV14,http://112.81.218.254:35455/gaoma/cctv14.m3u8
|
||||||
|
CCTV14,https://event.pull.hebtv.com/jishi/cp2.m3u8
|
||||||
|
CCTV14,http://42.225.117.174:11199/tsfile/live/0014_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV14,http://3501776.xyz:35455/gaoma/cctv14.m3u8
|
||||||
|
CCTV14,http://39.164.160.249:9901/tsfile/live/0014_1.m3u8
|
||||||
|
CCTV14,http://huashetou.fun:35455/gaoma/cctv14.m3u8
|
||||||
|
CCTV14,http://1.itv.nctv.top:7777/gaoma/cctv14.m3u8
|
||||||
|
CCTV14,http://58.17.48.228:808/hls/14/index.m3u8
|
||||||
|
CCTV14,http://222.173.108.238:352/tsfile/live/0014_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV14,http://36.105.100.208:35455/gaoma/cctv14.m3u8
|
||||||
|
CCTV14,http://39.77.34.83:35455/gaoma/cctv14.m3u8
|
||||||
|
CCTV14,http://124.93.18.238:9003//hls/14/index.m3u8
|
||||||
|
CCTV14,http://183.184.228.183:9003//hls/15/index.m3u8
|
||||||
|
CCTV15,http://tv.20191209.xyz:37377/migu/673168223.m3u8?migutoken=91bfd27ec54e6b68df329e3a36e211ea78e34558edc20ae3d76e0cbf89e6012d4e33c760dd200a4a41b2587c50dee210ca66da4ff8be48c4a97a2c7ab22d824ea440cc9c06961aa846be65a0
|
||||||
|
CCTV15,http://nas.suntao.online:35455/gaoma/cctv15.m3u8
|
||||||
|
CCTV15,http://39.164.160.249:9901/tsfile/live/0015_1.m3u8
|
||||||
|
CCTV15,http://1.itv.nctv.top:7777/gaoma/cctv15.m3u8
|
||||||
|
CCTV15,http://home.kuaidi521.com:35455/gaoma/cctv15.m3u8
|
||||||
|
CCTV15,http://yc.myds.me:35455/gaoma/cctv15.m3u8
|
||||||
|
CCTV15,http://124.93.18.238:9003//hls/15/index.m3u8
|
||||||
|
CCTV16,http://nas.suntao.online:35455/gaoma/cctv16.m3u8
|
||||||
|
CCTV16,http://1.24.39.180:9003/hls/60/index.m3u8
|
||||||
|
CCTV16,http://124.93.18.238:9003//hls/16/index.m3u8
|
||||||
|
CCTV16,http://xiaoya.crccxw.top:35455/gaoma/cctv16.m3u8
|
||||||
|
CCTV16,http://1.itv.nctv.top:7777/gaoma/cctv16.m3u8
|
||||||
|
CCTV16,http://36.105.100.208:35455/gaoma/cctv16.m3u8
|
||||||
|
CCTV16,http://112.81.218.254:35455/gaoma/cctv16.m3u8
|
||||||
|
CCTV16,http://huashetou.fun:35455/gaoma/cctv16.m3u8
|
||||||
|
CCTV16,http://39.77.34.83:35455/gaoma/cctv16.m3u8
|
||||||
|
CCTV16,http://yc.myds.me:35455/gaoma/cctv16.m3u8
|
||||||
|
CCTV16,http://183.184.228.183:9003//hls/17/index.m3u8
|
||||||
|
CCTV17,http://tv.20191209.xyz:37377/migu/673168256.m3u8?migutoken=eb3fbda758006d66837b5b6ef1b7ab6847a99f05f6b3303861d81e6e1335349499a40c8479d9a801327519db10547f9870398da6796159db51812e236c1b6c07d2c0f7e5bc32101c9cc222dc
|
||||||
|
CCTV17,http://112.81.218.254:35455/gaoma/cctv17.m3u8
|
||||||
|
CCTV17,http://yc.myds.me:35455/gaoma/cctv17.m3u8
|
||||||
|
CCTV17,http://1.itv.nctv.top:7777/gaoma/cctv17.m3u8
|
||||||
|
CCTV17,http://36.105.100.208:35455/gaoma/cctv17.m3u8
|
||||||
|
CCTV17,http://39.77.34.83:35455/gaoma/cctv17.m3u8
|
||||||
|
CCTV17,http://xiaoya.crccxw.top:35455/gaoma/cctv17.m3u8
|
||||||
|
CCTV164,http://1.itv.nctv.top:7777/gaoma/cctv4k16.m3u8
|
||||||
|
CCTV风云剧场,http://dassby.qqff.top:99/live/风云剧场/index.m3u8
|
||||||
|
CCTV世界地理,http://180.213.174.225:9901/tsfile/live/1051_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV怀旧剧场,http://180.213.174.225:9901/tsfile/live/1049_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV第一剧场,http://180.213.174.225:9901/tsfile/live/1050_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV第一剧场,http://180.213.174.225:9901/tsfile/live/1048_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
CCTV20241,https://p2.bdstatic.com/rtmp.liveshow.lss-user.baidubce.com/live/stream_bduid_6488563992_8982723413/merged_1707497046297_88536_25144_41936.m3u8
|
||||||
CCTV15,http://113.57.93.165:9900/tsfile/live/0015_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路30』
|
CCTV15,http://113.57.93.165:9900/tsfile/live/0015_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路30』
|
||||||
CCTV15,http://123.130.84.106:8154/tsfile/live/0015_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路32』
|
CCTV15,http://123.130.84.106:8154/tsfile/live/0015_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路32』
|
||||||
CCTV15,http://113.57.20.158:9901/tsfile/live/1034_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路36』
|
CCTV15,http://113.57.20.158:9901/tsfile/live/1034_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路36』
|
||||||
@@ -68,6 +307,102 @@ CCTV15,http://61.156.228.12:8154/tsfile/live/0015_1.m3u8
|
|||||||
|
|
||||||
|
|
||||||
卫视,#genre#
|
卫视,#genre#
|
||||||
|
安多卫视,https://liveout.xntv.tv/a65jur/96iln2.m3u8
|
||||||
|
安多卫视,https://livecdn.dmqhyadmin.com/hls/xjmenyuan.m3u8
|
||||||
|
安徽卫视,http://43.129.81.169/live.ahsx.ahtv.cn/live/ahwssx.m3u8
|
||||||
|
安徽卫视,http://115.149.139.141:10000/tsfile/live/1028_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
|
安徽卫视,http://39.164.160.249:9901/tsfile/live/0130_1.m3u8
|
||||||
|
北京卫视,http://183.215.134.239:19901/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
北京卫视,http://115.149.139.141:10000/tsfile/live/1022_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
|
北京卫视,http://42.225.117.174:11199/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
北京卫视,http://58.220.219.14:9901/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
兵团卫视,http://liveout.btzx.com.cn/62ds9e/yil08g.m3u8
|
||||||
|
兵团卫视,https://liveout.btzx.com.cn/62ds9e/yil08g.m3u8
|
||||||
|
藏语卫视,http://php.jdshipin.com:8880/xztv.php?id=zy
|
||||||
|
重庆卫视,http://zzssw01.55555.io:9901/tsfile/live/0142_1.m3u8
|
||||||
|
重庆卫视,http://218.29.168.146:352/tsfile/live/0142_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
重庆卫视,http://220.164.192.48:50085/tsfile/live/0131_1.m3u8
|
||||||
|
重庆卫视,http://61.136.67.238:50085/tsfile/live/0142_1.m3u8
|
||||||
|
重庆卫视,http://222.173.108.238:352/tsfile/live/1016_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
大湾区卫视,http://222.128.55.152:9080/live/dwq.m3u8
|
||||||
|
东方卫视,http://183.215.134.239:19901/tsfile/live/0107_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
东方卫视,http://39.164.160.249:9901/tsfile/live/0107_1.m3u8
|
||||||
|
东方卫视,http://tv.20191209.xyz:37377/migu/651632648.m3u8?migutoken=a9a2b71c87ef01a1f546b80d3776d4e2ab5a03525b06b379f6d3ebca3a7a40f732115ab805783c8a8a73e5580900755cdfb3b6d3c2b9308a46141d56b6b629038613c381a9027a60e527e1c8
|
||||||
|
东南卫视,http://120.76.248.139/live/bfgd/4200000483.m3u8
|
||||||
|
东南卫视,http://115.149.139.141:10001/tsfile/live/1035_1.m3u8?blog.ntnas.top
|
||||||
|
东南卫视,http://live.nctv.top/IDOPEpiryt/fjtv.php?id=5
|
||||||
|
东南卫视,http://220.164.192.48:50085/tsfile/live/0120_1.m3u8
|
||||||
|
甘肃卫视,http://live.zohi.tv/video/s10001-fztv-3/index.m3u8
|
||||||
|
广东卫视,http://183.215.134.239:19901/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
广东卫视,http://115.149.139.141:10001/tsfile/live/1029_1.m3u8?blog.ntnas.top
|
||||||
|
广东卫视,http://222.173.108.238:352/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
广东卫视,http://39.164.160.249:9901/tsfile/live/0125_1.m3u8
|
||||||
|
广东卫视,http://ttkx.cc:1658/公开源454/mg9.php?id=gdws
|
||||||
|
广东卫视,http://live.nctv.top/IDOPEpiryt/migu.php?id=gdws
|
||||||
|
广西卫视,http://live.cztv.cc:85/live/ggpd.m3u8
|
||||||
|
广西卫视,https://mobilelive.gxtv.cn/live/gx_live1004/playlist.m3u8
|
||||||
|
广西卫视,http://42.225.117.174:11199/tsfile/live/0113_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
广西卫视,http://115.149.139.141:10000/tsfile/live/1037_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
|
广西卫视,http://220.164.192.48:50085/tsfile/live/0112_1.m3u8
|
||||||
|
广西卫视,http://115.149.139.141:10001/tsfile/live/1037_1.m3u8?blog.ntnas.top
|
||||||
|
广西卫视,http://116.9.204.242:9901/tsfile/live/0113_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
广西卫视,http://116.9.204.242:9901/tsfile/live/0113_1.m3u8
|
||||||
|
贵州卫视,http://39.164.160.249:9901/tsfile/live/0120_1.m3u8
|
||||||
|
海峡卫视,http://live.nctv.top/IDOPEpiryt/fjtv.php?id=3
|
||||||
|
河北卫视,http://116.131.190.210:352/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
河北卫视,http://60.8.49.38:352/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
河南卫视,http://42.225.117.174:11199/tsfile/live/0139_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
河南卫视,http://live.nctv.top/IDOPEpiryt/hntv.php?id=hnws
|
||||||
|
河南卫视,http://39.164.160.249:9901/tsfile/live/0139_1.m3u8
|
||||||
|
黑龙江卫视,http://115.149.139.141:10000/tsfile/live/1030_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
|
黑龙江卫视,http://39.164.160.249:9901/tsfile/live/0143_1.m3u8
|
||||||
|
湖北卫视,http://115.149.139.141:10001/tsfile/live/1027_1.m3u8
|
||||||
|
湖南卫视,http://183.215.134.239:19901/tsfile/live/0128_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
湖南卫视,http://39.164.160.249:9901/tsfile/live/0128_1.m3u8
|
||||||
|
湖南卫视,http://60.223.224.176:8888/newlive/live/hls/22/live.m3u8
|
||||||
|
吉林卫视,http://220.164.192.48:50085/tsfile/live/0118_1.m3u8
|
||||||
|
江苏卫视,http://42.225.117.174:11199/tsfile/live/0127_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
江苏卫视,http://114.105.98.95:37377/migu/623899368.m3u8?migutoken=0c1255f44cf0460d401afd9fdc722c6398b97c5880dc9c45f00ae3faa4d208ecd6942cc08a2f3f09bac00b520297cc93d1b83c17d52ade00620508eae303d397c58e8b1deb59c8ac4158cd7d
|
||||||
|
江苏卫视,http://tv.20191209.xyz:37377/migu/623899368.m3u8?migutoken=0c1255f44cf0460d401afd9fdc722c6398b97c5880dc9c45f00ae3faa4d208ecd6942cc08a2f3f09bac00b520297cc93d1b83c17d52ade00620508eae303d397c58e8b1deb59c8ac4158cd7d
|
||||||
|
江苏卫视,http://live.nctv.top/IDOPEpiryt/jstv5.php?id=jsws
|
||||||
|
江苏卫视,http://live.nctv.top/IDOPEpiryt/jstv.php?id=jsws
|
||||||
|
江西卫视,http://120.76.248.139/live/bfgd/4200000098.m3u8
|
||||||
|
江西卫视,http://183.215.134.239:19901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
江西卫视,http://222.173.108.238:352/tsfile/live/1010_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
辽宁卫视,http://222.173.108.238:352/tsfile/live/1008_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
辽宁卫视,http://39.164.160.249:9901/tsfile/live/0121_1.m3u8
|
||||||
|
辽宁卫视,http://115.149.139.141:10001/tsfile/live/1028_1.m3u8
|
||||||
|
辽宁卫视,http://115.149.139.141:10001/tsfile/live/1028_1.m3u8?blog.ntnas.top
|
||||||
|
内蒙古蒙古语卫视,http://live.nctv.top/IDOPEpiryt/nmgtv.php?id=nmmyws
|
||||||
|
内蒙古蒙语卫视,https://livestream-bt.nmtv.cn/nmtv/2315general.m3u8?txSecret=4971666599ef9411629213c9a300bf66&txTime=771EF880
|
||||||
|
内蒙古卫视,https://ali-m-l.cztv.com/channels/lantian/channel007/1080p.m3u8
|
||||||
|
内蒙古卫视,https://livestream-bt.nmtv.cn/nmtv/3208526general.m3u8?txSecret=eb5a3102dd5406c7ffeddf560b024952&txTime=76B2F9A0
|
||||||
|
厦门卫视,http://220.161.87.62:8090/hls/0/index.m3u8?zfud$LR•IPV4『线路28』
|
||||||
|
厦门卫视,http://220.161.87.62:8090/hls/0/index.m3u8?zfud
|
||||||
|
山东卫视,http://120.76.248.139/live/bfgd/4200000099.m3u8
|
||||||
|
山西卫视,http://m3u8.channel.wsrtv.com.cn/cms/videos/nmip-media/channellive/channel7/playlist.m3u8
|
||||||
|
山西卫视,http://42.225.117.174:11199/tsfile/live/0118_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
山西卫视,http://60.223.224.176:8888/newlive/live/hls/43/live.m3u8?
|
||||||
|
陕西卫视,http://42.225.117.174:11199/tsfile/live/0136_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
深圳卫视,http://120.76.248.139/live/bfgd/4200000100.m3u8
|
||||||
|
深圳卫视,http://115.149.139.141:10000/tsfile/live/1032_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
|
深圳卫视,http://183.215.134.239:19901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
深圳卫视,http://yncbn.ks-cdn.gitv.tv/gitv_live/G_SHENZHEN-HQ/G_SHENZHEN-HQ.m3u8
|
||||||
|
深圳卫视,http://115.149.139.141:10001/tsfile/live/1032_1.m3u8
|
||||||
|
天津卫视,http://115.149.139.141:10001/tsfile/live/1036_1.m3u8
|
||||||
|
天津卫视,http://222.173.108.238:352/tsfile/live/0135_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
亚洲卫视,https://p2hs.vzan.com/slowlive/821481626725612419/live.m3u8
|
||||||
|
延边卫视,http://l.cztvcloud.com/channels/lantian/SXxinchang2/720p.m3u8
|
||||||
|
延边卫视,http://l.cztvcloud.com/channels/lantian/SXxinchang2/720p.m3u8$LR•IPV4『线路20』
|
||||||
|
云南卫视,http://39.164.160.249:9901/tsfile/live/0119_1.m3u8
|
||||||
|
浙江卫视,https://ali-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8?
|
||||||
|
浙江卫视,http://ali-m-l.cztv.com:80/channels/lantian/channel001/1080p.m3u8
|
||||||
|
浙江卫视,https://ali-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8
|
||||||
|
浙江卫视,http://ali-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8
|
||||||
|
浙江卫视,http://zwebl02.cztv.com/live/channel011080P.m3u8?auth_key=2524708799-0-0-9a1229d8b9d311024ebea08c3fb1d63f
|
||||||
|
浙江卫视,http://ali-m-l.cztv.com/channels/lantian/channel01/1080p.m3u8
|
||||||
|
浙江卫视,https://stream1.freetv.fun/2e3a01b886780ceca10b44bb6cdb57413757275a6fdcb083800db996bc2f81e3.m3u8
|
||||||
|
|
||||||
湖南卫视,http://61.136.172.236:9901/tsfile/live/0128_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路77』
|
湖南卫视,http://61.136.172.236:9901/tsfile/live/0128_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路77』
|
||||||
浙江卫视,http://wouu.net:9977/udp/239.93.0.124:5140$LR•IPV4『线路157』
|
浙江卫视,http://wouu.net:9977/udp/239.93.0.124:5140$LR•IPV4『线路157』
|
||||||
北京卫视,http://61.156.228.12:8154/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路83』
|
北京卫视,http://61.156.228.12:8154/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路83』
|
||||||
@@ -81,52 +416,6 @@ CCTV15,http://61.156.228.12:8154/tsfile/live/0015_1.m3u8
|
|||||||
深圳卫视,http://123.129.70.178:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路68』
|
深圳卫视,http://123.129.70.178:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路68』
|
||||||
广东卫视,http://123.129.70.178:9901/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路88』
|
广东卫视,http://123.129.70.178:9901/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路88』
|
||||||
广西卫视,http://61.136.172.236:9901/tsfile/live/0113_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路54』
|
广西卫视,http://61.136.172.236:9901/tsfile/live/0113_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路54』
|
||||||
南方卫视,http://114.252.238.87:8000/udp/239.3.1.161:8001$LR•IPV4『线路3』
|
|
||||||
湖南卫视,http://110.7.131.129:8096/tsfile/live/0128_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路113』
|
|
||||||
湖南卫视,http://116.117.105.236:8096/tsfile/live/0128_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路117』
|
|
||||||
湖南卫视,http://116.117.105.71:8096/tsfile/live/0128_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路118』
|
|
||||||
湖南卫视,http://116.117.105.96:8096/tsfile/live/0128_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路119』
|
|
||||||
浙江卫视,http://110.7.131.129:8096/tsfile/live/0124_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路122』
|
|
||||||
浙江卫视,http://116.117.105.236:8096/tsfile/live/0124_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路126』
|
|
||||||
浙江卫视,http://116.117.105.71:8096/tsfile/live/0124_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路127』
|
|
||||||
浙江卫视,http://116.117.105.96:8096/tsfile/live/0124_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路128』
|
|
||||||
东方卫视,http://110.7.131.129:8096/tsfile/live/0107_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路125』
|
|
||||||
东方卫视,http://116.117.105.236:8096/tsfile/live/0107_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路128』
|
|
||||||
东方卫视,http://116.117.105.71:8096/tsfile/live/0107_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路129』
|
|
||||||
东方卫视,http://116.117.105.96:8096/tsfile/live/0107_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路130』
|
|
||||||
北京卫视,http://110.7.131.129:8096/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路115』
|
|
||||||
北京卫视,http://116.117.105.236:8096/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路119』
|
|
||||||
北京卫视,http://116.117.105.71:8096/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路120』
|
|
||||||
北京卫视,http://116.117.105.96:8096/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路121』
|
|
||||||
江苏卫视,http://110.7.131.129:8096/tsfile/live/0127_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路124』
|
|
||||||
江苏卫视,http://116.117.105.236:8096/tsfile/live/0127_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路128』
|
|
||||||
江苏卫视,http://116.117.105.71:8096/tsfile/live/0127_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路129』
|
|
||||||
江苏卫视,http://116.117.105.96:8096/tsfile/live/0127_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路130』
|
|
||||||
安徽卫视,http://110.7.131.129:8096/tsfile/live/0130_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路107』
|
|
||||||
安徽卫视,http://116.117.105.236:8096/tsfile/live/0130_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路111』
|
|
||||||
安徽卫视,http://116.117.105.71:8096/tsfile/live/0130_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路112』
|
|
||||||
安徽卫视,http://116.117.105.96:8096/tsfile/live/0130_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路113』
|
|
||||||
广东卫视,http://110.7.131.129:8096/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路124』
|
|
||||||
广东卫视,http://116.117.105.236:8096/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路128』
|
|
||||||
广东卫视,http://116.117.105.71:8096/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路129』
|
|
||||||
广东卫视,http://116.117.105.96:8096/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路130』
|
|
||||||
甘肃卫视,http://58.220.219.14:9901/tsfile/live/0141_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路65』
|
|
||||||
黑龙江卫视,http://110.7.131.129:8096/tsfile/live/0143_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路111』
|
|
||||||
黑龙江卫视,http://116.117.105.236:8096/tsfile/live/0143_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路114』
|
|
||||||
黑龙江卫视,http://116.117.105.71:8096/tsfile/live/0143_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路115』
|
|
||||||
黑龙江卫视,http://116.117.105.96:8096/tsfile/live/0143_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路116』
|
|
||||||
江西卫视,http://110.7.131.129:8096/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路109』
|
|
||||||
江西卫视,http://116.117.105.236:8096/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路113』
|
|
||||||
江西卫视,http://116.117.105.71:8096/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路114』
|
|
||||||
江西卫视,http://116.117.105.96:8096/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路115』
|
|
||||||
天津卫视,http://110.7.131.129:8096/tsfile/live/0135_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路115』
|
|
||||||
天津卫视,http://116.117.105.236:8096/tsfile/live/0135_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路118』
|
|
||||||
天津卫视,http://116.117.105.71:8096/tsfile/live/0135_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路119』
|
|
||||||
天津卫视,http://116.117.105.96:8096/tsfile/live/0135_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路120』
|
|
||||||
兵团卫视,http://110.7.131.129:8096/tsfile/live/0115_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路26』
|
|
||||||
兵团卫视,http://116.117.105.236:8096/tsfile/live/0115_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路28』
|
|
||||||
兵团卫视,http://116.117.105.71:8096/tsfile/live/0115_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路29』
|
|
||||||
兵团卫视,http://116.117.105.96:8096/tsfile/live/0115_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路30』
|
|
||||||
天津卫视,http://60.7.56.33:4000/rtp/239.253.92.91:8021$1920x1080
|
天津卫视,http://60.7.56.33:4000/rtp/239.253.92.91:8021$1920x1080
|
||||||
青海卫视,http://stream.qhbtv.com/qhws/sd/live.m3u8
|
青海卫视,http://stream.qhbtv.com/qhws/sd/live.m3u8
|
||||||
延边卫视,http://live.ybtvyun.com/video/s10006-44f040627ca1/index.m3u8
|
延边卫视,http://live.ybtvyun.com/video/s10006-44f040627ca1/index.m3u8
|
||||||
|
|||||||
+98
-64
@@ -121,70 +121,104 @@ https://tv.iill.top/migu/dds
|
|||||||
https://tv.iill.top/migu/mgty
|
https://tv.iill.top/migu/mgty
|
||||||
|
|
||||||
#INSERT_HERE
|
#INSERT_HERE
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」06:55 常规赛 湖人VS魔术 王晓晨 孔德昕
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」06:55 常规赛 魔术VS黄蜂 周赫
|
||||||
https://tv.iill.top/NBA/CbWNev
|
https://tv.iill.top/NBA/SjOKO0
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」06:55 常规赛 湖人VS魔术 郑泽鹏
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」06:55 常规赛 马刺VS活塞 王晓晨
|
||||||
https://tv.iill.top/NBA/RA1Z7Z
|
https://tv.iill.top/NBA/CBnDms
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」06:55 常规赛 森林狼VS步行者 邢晨
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」07:15 常规赛 勇士VS热火 杨健 李根 小七
|
||||||
https://tv.iill.top/NBA/HGLdH7
|
https://tv.iill.top/NBA/mOYwZG
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」06:55 常规赛 猛龙VS奇才 董倡硕
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」07:25 常规赛 勇士VS热火 拜月宁
|
||||||
https://tv.iill.top/NBA/CpzmxH
|
https://tv.iill.top/NBA/xkxny2
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」07:25 常规赛 独行侠VS篮网 陈鑫隆
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」07:25 常规赛 勇士VS热火 莫俊祺
|
||||||
https://tv.iill.top/NBA/dZZqHs
|
https://tv.iill.top/NBA/p5ZYge
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」07:55 常规赛 76人VS鹈鹕 姜帆 贾磊
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」07:25 常规赛 勇士VS热火 洪荒
|
||||||
https://tv.iill.top/NBA/itOtVZ
|
https://tv.iill.top/NBA/eVTb2F
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」08:55 常规赛 公牛VS掘金 邵化谦 周赫
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」07:25 常规赛 独行侠VS尼克斯 刘芳宇
|
||||||
https://tv.iill.top/NBA/7Ld8AD
|
https://tv.iill.top/NBA/pgWuT6
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」09:45 常规赛 雄鹿VS太阳 张浩岳 徐咏 王羽希
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」07:55 常规赛 老鹰VS火箭 陈鑫隆
|
||||||
https://tv.iill.top/NBA/TftHAK
|
https://tv.iill.top/NBA/2xUwaM
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」09:45 常规赛 凯尔特人VS国王 季孟年 李根 拜月宁
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」08:55 常规赛 灰熊VS爵士 邵化谦
|
||||||
https://tv.iill.top/NBA/2cslkV
|
https://tv.iill.top/NBA/moRfuI
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」10:00 陈垣宇/蒯曼、黄友政/孙晨晋级 陈垣宇/蒯曼、黄友政/孙晨晋级 2号桌
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」09:55 常规赛 骑士VS开拓者 姜帆
|
||||||
https://tv.iill.top/Migu/0ugFPi
|
https://tv.iill.top/NBA/FlbdFU
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「LPL」15:40 2025LPL第二赛段小组赛Day4 2025LPL第二赛段小组赛Day4 官方解说
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」09:45 常规赛 雷霆VS国王 庄宁宇 陈正昊 魏欣怡
|
||||||
https://tv.iill.top/Migu/fwUW9g
|
https://tv.iill.top/NBA/2ocC55
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTT」17:30 姚钧涛领衔港乒众将冲正赛 姚钧涛领衔港乒众将冲正赛 2号桌
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTA」02:00 郑钦文0-2萨巴伦卡 郑钦文0-2萨巴伦卡 清流播出
|
||||||
https://tv.iill.top/Migu/qKu0V8
|
https://tv.iill.top/Migu/9LpQXJ
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTT」17:30 姚钧涛领衔港乒众将冲正赛 姚钧涛领衔港乒众将冲正赛 3号桌
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」10:00 钱天一晋级16强 刘炜珊3-4王添艺 钱天一晋级16强 刘炜珊3-4王添艺 周泽昊
|
||||||
https://tv.iill.top/Migu/75DWEd
|
https://tv.iill.top/Migu/l8OdmG
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTT」17:30 姚钧涛领衔港乒众将冲正赛 姚钧涛领衔港乒众将冲正赛 4号桌
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」10:00 钱天一晋级16强 刘炜珊3-4王添艺 钱天一晋级16强 刘炜珊3-4王添艺 2号桌
|
||||||
https://tv.iill.top/Migu/GLPXBV
|
https://tv.iill.top/Migu/8n4dqT
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」18:00 徐海东/陈幸同、诗和远方出战 徐海东/陈幸同、诗和远方出战 周泽昊
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」10:00 钱天一晋级16强 刘炜珊3-4王添艺 钱天一晋级16强 刘炜珊3-4王添艺 3号桌
|
||||||
https://tv.iill.top/Migu/fVFZNp
|
https://tv.iill.top/Migu/nn7lBG
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」18:00 徐海东/陈幸同、诗和远方出战 徐海东/陈幸同、诗和远方出战 1号桌
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」10:00 钱天一晋级16强 刘炜珊3-4王添艺 钱天一晋级16强 刘炜珊3-4王添艺 4号桌
|
||||||
https://tv.iill.top/Migu/cIr2o9
|
https://tv.iill.top/Migu/HOaXJJ
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」18:00 徐海东/陈幸同、诗和远方出战 徐海东/陈幸同、诗和远方出战 2号桌
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」10:00 钱天一晋级16强 刘炜珊3-4王添艺 钱天一晋级16强 刘炜珊3-4王添艺 5号桌
|
||||||
https://tv.iill.top/Migu/5jwsFC
|
https://tv.iill.top/Migu/wB3HDA
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」18:00 徐海东/陈幸同、诗和远方出战 徐海东/陈幸同、诗和远方出战 3号桌
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」10:00 钱天一晋级16强 刘炜珊3-4王添艺 钱天一晋级16强 刘炜珊3-4王添艺 1号桌
|
||||||
https://tv.iill.top/Migu/2GhqAu
|
https://tv.iill.top/Migu/t49ghE
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」18:00 徐海东/陈幸同、诗和远方出战 徐海东/陈幸同、诗和远方出战 4号桌
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」10:00 钱天一晋级16强 刘炜珊3-4王添艺 钱天一晋级16强 刘炜珊3-4王添艺 狂欢Yeah
|
||||||
https://tv.iill.top/Migu/SR7bfi
|
https://tv.iill.top/Migu/AhlTKq
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」18:00 徐海东/陈幸同、诗和远方出战 徐海东/陈幸同、诗和远方出战 5号桌
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「LPL」15:40 2025LPL第二赛段小组赛Day5 2025LPL第二赛段小组赛Day5 官方解说
|
||||||
https://tv.iill.top/Migu/QVDq1y
|
https://tv.iill.top/Migu/CaWWbk
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」18:00 徐海东/陈幸同、诗和远方出战 徐海东/陈幸同、诗和远方出战 狂欢Yeah
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「KPL」16:40 长沙TES.A vs 深圳KLG 长沙TES.A vs 深圳KLG 官方解说
|
||||||
https://tv.iill.top/Migu/eGKpAT
|
https://tv.iill.top/Migu/ihROzt
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「咪咕体育日报」18:00 咪咕体育日报-场外直击国足世预赛 咪咕体育日报-场外直击国足世预赛 咪咕体育日报: 咪咕体育日报-在现场
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTT」17:30 申裕斌/柳韩娜女双出战冲正赛 申裕斌/柳韩娜女双出战冲正赛 1号桌
|
||||||
https://tv.iill.top/Migu/7MoZnp
|
https://tv.iill.top/Migu/mVZR6F
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WCBA」19:20 半决赛 内蒙古农信 VS 东莞新彤盛 吕程
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTT」17:30 申裕斌/柳韩娜女双出战冲正赛 申裕斌/柳韩娜女双出战冲正赛 2号桌
|
||||||
https://tv.iill.top/Migu/jQ3fhV
|
https://tv.iill.top/Migu/vwysIL
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WCBA」19:20 半决赛 内蒙古农信 VS 东莞新彤盛 解说
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTT」18:40 申裕斌/柳韩娜女双出战冲正赛 申裕斌/柳韩娜女双出战冲正赛 3号桌
|
||||||
https://tv.iill.top/Migu/ojKo7S
|
https://tv.iill.top/Migu/KVnIvZ
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WCBA」19:15 半决赛 四川蜀道远达 VS 山西竹叶青酒 解说
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTT」18:40 申裕斌/柳韩娜女双出战冲正赛 申裕斌/柳韩娜女双出战冲正赛 4号桌
|
||||||
https://tv.iill.top/Migu/MrvBY3
|
https://tv.iill.top/Migu/fs2zxg
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:00 常规赛第44轮 南京头排苏酒vs北京北汽 杨健 李根 秋童
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」18:00 混双、男女单打17至32名附加赛 混双、男女单打17至32名附加赛 周冠达
|
||||||
https://tv.iill.top/Migu/W5GNzf
|
https://tv.iill.top/Migu/qBX9Xm
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第44轮 南京头排苏酒vs北京北汽 王港
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」18:00 混双、男女单打17至32名附加赛 混双、男女单打17至32名附加赛 1号桌
|
||||||
https://tv.iill.top/Migu/bmqbV2
|
https://tv.iill.top/Migu/tDFNPJ
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第44轮 南京头排苏酒vs北京北汽 刘芳宇
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」18:00 混双、男女单打17至32名附加赛 混双、男女单打17至32名附加赛 2号桌
|
||||||
https://tv.iill.top/Migu/uX4pNw
|
https://tv.iill.top/Migu/ugDcec
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第44轮 南京头排苏酒vs北京北汽 现场原声
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」18:00 混双、男女单打17至32名附加赛 混双、男女单打17至32名附加赛 3号桌
|
||||||
https://tv.iill.top/Migu/0erVhX
|
https://tv.iill.top/Migu/ncf0a0
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:00 常规赛第44轮 宁波町渥vs天津先行者 寇逸豪
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」18:00 混双、男女单打17至32名附加赛 混双、男女单打17至32名附加赛 4号桌
|
||||||
https://tv.iill.top/Migu/xTva5t
|
https://tv.iill.top/Migu/y9mTW1
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第44轮 宁波町渥vs天津先行者 现场原声
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」18:00 混双、男女单打17至32名附加赛 混双、男女单打17至32名附加赛 5号桌
|
||||||
https://tv.iill.top/Migu/uf8faZ
|
https://tv.iill.top/Migu/2gO5o3
|
||||||
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「盐城国际足球邀请赛」19:35 盐城国际足球邀请赛 中国U22 vs 越南U22 2025中国之队国际足球邀请赛-中国U22-越南U22
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「十五运乒乓球项目资格赛」18:00 混双、男女单打17至32名附加赛 混双、男女单打17至32名附加赛 狂欢Yeah
|
||||||
https://tv.iill.top/Migu/gOWq8w
|
https://tv.iill.top/Migu/F64sWN
|
||||||
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」18:30 北控vs辽宁赛前训练 北控vs辽宁赛前训练 周赫
|
||||||
|
https://tv.iill.top/Migu/1ilKbK
|
||||||
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」18:30 北控vs辽宁赛前训练 北控vs辽宁赛前训练 哈秋
|
||||||
|
https://tv.iill.top/Migu/Pii6G9
|
||||||
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:00 常规赛第45轮 山东高速vs新疆伊力特 邵化谦 曾令旭 拜月宁
|
||||||
|
https://tv.iill.top/Migu/vXpfQ3
|
||||||
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第45轮 山东高速vs新疆伊力特 罗森
|
||||||
|
https://tv.iill.top/Migu/c8N85B
|
||||||
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第45轮 山东高速vs新疆伊力特 盛哲
|
||||||
|
https://tv.iill.top/Migu/NAAKfZ
|
||||||
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第45轮 山东高速vs新疆伊力特 现场原声
|
||||||
|
https://tv.iill.top/Migu/d6YAed
|
||||||
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:10 常规赛第45轮 青岛国信制药vs上海久事 连睿 周鹏 张兆旭
|
||||||
|
https://tv.iill.top/Migu/4TI1Sb
|
||||||
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第45轮 青岛国信制药vs上海久事 刘沛元
|
||||||
|
https://tv.iill.top/Migu/VDpSaQ
|
||||||
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第45轮 青岛国信制药vs上海久事 陈渤胄
|
||||||
|
https://tv.iill.top/Migu/DDln5n
|
||||||
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第45轮 青岛国信制药vs上海久事 现场原声
|
||||||
|
https://tv.iill.top/Migu/4S6vBd
|
||||||
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:10 常规赛第45轮 北京控股vs辽宁本钢 孔德昕 霍楠
|
||||||
|
https://tv.iill.top/Migu/5CQ1Wh
|
||||||
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第45轮 北京控股vs辽宁本钢 周赫
|
||||||
|
https://tv.iill.top/Migu/yNtdij
|
||||||
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第45轮 北京控股vs辽宁本钢 哈秋
|
||||||
|
https://tv.iill.top/Migu/Xsp6K9
|
||||||
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第45轮 北京控股vs辽宁本钢 现场原声
|
||||||
|
https://tv.iill.top/Migu/LfFT1t
|
||||||
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第45轮 北京控股vs辽宁本钢 明星机位1
|
||||||
|
https://tv.iill.top/Migu/gGboBD
|
||||||
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第45轮 北京控股vs辽宁本钢 明星机位2
|
||||||
|
https://tv.iill.top/Migu/RAeFLD
|
||||||
|
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「KPL」20:00 济南RW侠 vs 西安WE 济南RW侠 vs 西安WE 官方解说
|
||||||
|
https://tv.iill.top/Migu/jk8AQM
|
||||||
|
|
||||||
#EXTINF:-1 tvg-id="凤凰中文" tvg-name="凤凰中文" tvg-logo="https://epg.iill.top/logo/凤凰中文.png" http-user-agent="FengWatch/5.4.14" group-title="•港澳「限制」",鳳凰衛視·中文「限UA」
|
#EXTINF:-1 tvg-id="凤凰中文" tvg-name="凤凰中文" tvg-logo="https://epg.iill.top/logo/凤凰中文.png" http-user-agent="FengWatch/5.4.14" group-title="•港澳「限制」",鳳凰衛視·中文「限UA」
|
||||||
http://dns.yiandrive.com:15907/phenix/fhzw
|
http://dns.yiandrive.com:15907/phenix/fhzw
|
||||||
|
|||||||
+1386
-1548
File diff suppressed because it is too large.
Load diff
+1719
-1797
File diff suppressed because it is too large.
Load diff
+1719
-1797
File diff suppressed because it is too large.
Load diff
+1386
-1548
File diff suppressed because it is too large.
Load diff
+1719
-1797
File diff suppressed because it is too large.
Load diff
@@ -27,8 +27,6 @@
|
|||||||
"site_urls": [
|
"site_urls": [
|
||||||
"https://mihdr.top",
|
"https://mihdr.top",
|
||||||
"http://www.miqk.cc",
|
"http://www.miqk.cc",
|
||||||
"http://www.xhww.net",
|
|
||||||
"http://xhww.net",
|
|
||||||
"https://xiaomiai.site"
|
"https://xiaomiai.site"
|
||||||
],
|
],
|
||||||
"url_key": "Netfixtv",
|
"url_key": "Netfixtv",
|
||||||
|
|||||||
+305
-441
File diff suppressed because it is too large.
Load diff
+1294
-1478
File diff suppressed because it is too large.
Load diff
+88
-47
@@ -2,12 +2,12 @@
|
|||||||
"wallpaper": "https://xn--dkw0c.v.nxog.top/m//t/",
|
"wallpaper": "https://xn--dkw0c.v.nxog.top/m//t/",
|
||||||
"logo": "https://alicliimg.clewm.net/342/790/68790342/17369906896774bd3d1d8ba1877dea5d967a137aa23d91736990672.gif",
|
"logo": "https://alicliimg.clewm.net/342/790/68790342/17369906896774bd3d1d8ba1877dea5d967a137aa23d91736990672.gif",
|
||||||
"spider": "./spider.jar",
|
"spider": "./spider.jar",
|
||||||
"warningText": "【网络收集,免费分享】请勿演示贩卖,接口即将关闭提示:\n📢接口软件永远免费 \n📢长期维护切勿贩卖",
|
"warningText": "【公众号欧歌APP网络收集】接口即将关闭,请勿演示提示:\n📢接口软件永远免费 \n📢长期维护切勿贩卖",
|
||||||
"lives": [
|
"lives": [
|
||||||
{
|
{
|
||||||
"name": "【网络收集,免费分享】请勿演示贩卖,接口即将关闭",
|
"name": "【公众号欧歌APP网络收集】接口即将关闭,请勿演示",
|
||||||
"type": 0,
|
"type": 0,
|
||||||
"url": "./lives/【网络收集,免费分享】请勿演示贩卖,接口即将关闭.txt",
|
"url": "./lives/【公众号欧歌APP网络收集】接口即将关闭,请勿演示.txt",
|
||||||
"epg": "http://cdn.1678520.xyz/epg/?ch={name}&date={date}"
|
"epg": "http://cdn.1678520.xyz/epg/?ch={name}&date={date}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -32,20 +32,20 @@
|
|||||||
"sites": [
|
"sites": [
|
||||||
{
|
{
|
||||||
"key": "豆瓣2",
|
"key": "豆瓣2",
|
||||||
"name": "📢【网络收集,免费分享】请勿演示贩卖,接口即将关闭",
|
"name": "📢【公众号欧歌APP网络收集】接口即将关闭,请勿演示",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_Douban",
|
"api": "csp_Douban",
|
||||||
"searchable": 0
|
"searchable": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "豆瓣1",
|
"key": "豆瓣1",
|
||||||
"name": "📢【网络收集,免费分享】请勿演示贩卖,接口即将关闭公告❤更新:3/11❤",
|
"name": "📢【公众号欧歌APP网络收集】接口即将关闭,请勿演示公告❤更新:3/26❤",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_Notice",
|
"api": "csp_Notice",
|
||||||
"searchable": 0,
|
"searchable": 0,
|
||||||
"changeable": 0,
|
"changeable": 0,
|
||||||
"jar": "./jars/豆瓣1.jar",
|
"jar": "./jars/豆瓣1.jar",
|
||||||
"ext": "https://nxog.top/%E5%85%AC%E4%BC%97%E5%8F%B7%E6%AC%A7%E6%AD%8CAPP/ts/?b=【网络收集,免费分享】请勿演示贩卖,接口即将关闭"
|
"ext": "https://欧歌.yy.nxog.top/公告.php?b=【公众号欧歌APP网络收集】接口即将关闭,请勿演示"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "欧歌弹幕",
|
"key": "欧歌弹幕",
|
||||||
@@ -159,16 +159,6 @@
|
|||||||
"playerType": 2,
|
"playerType": 2,
|
||||||
"ext": "eaHR0cHM6Ly9kLmRjbW92aWUudG9w"
|
"ext": "eaHR0cHM6Ly9kLmRjbW92aWUudG9w"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "全网",
|
|
||||||
"name": "💡全网|影视",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_Quanwk",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"ext": "https://www.91qkw.com"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "低端",
|
"key": "低端",
|
||||||
"name": "💡低端|影视",
|
"name": "💡低端|影视",
|
||||||
@@ -187,23 +177,6 @@
|
|||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1
|
"filterable": 1
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "厂长",
|
|
||||||
"name": "💡厂长|资源",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_Czzy",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "米兔",
|
|
||||||
"name": "💡米兔|影视",
|
|
||||||
"type": 3,
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"api": "csp_MiTuApp"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "洽洽影视",
|
"key": "洽洽影视",
|
||||||
"name": "💡洽洽|影视",
|
"name": "💡洽洽|影视",
|
||||||
@@ -222,14 +195,6 @@
|
|||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"api": "csp_MovieApp"
|
"api": "csp_MovieApp"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "小米兄弟",
|
|
||||||
"name": "💡兄弟|影视",
|
|
||||||
"type": 3,
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"api": "csp_XiongDiApp"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "金牌影视",
|
"key": "金牌影视",
|
||||||
"name": "💡金牌|影视",
|
"name": "💡金牌|影视",
|
||||||
@@ -249,20 +214,52 @@
|
|||||||
"ext": "caHR0cHM6Ly8xMjN5c3cuY29tfDIz5b2x6KeGfDQuMS44"
|
"ext": "caHR0cHM6Ly8xMjN5c3cuY29tfDIz5b2x6KeGfDQuMS44"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "时常",
|
"key": "起点",
|
||||||
"name": "💡时常|影视",
|
"name": "💡起点|影视",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_Xdai",
|
"api": "csp_Xdai",
|
||||||
"playerType": 1,
|
"playerType": 1,
|
||||||
"ext": "jaHR0cHM6Ly9zYzEwODAudG9wfGU1OWQ0NGIyZWVmMDNiYTJ8ZTU5ZDQ0YjJlZWYwM2JhMnwxMzQ="
|
"ext": "jaHR0cDovL2NhaWppLm8wYS5jbnw3MGZkNjFkOTkxZjQzMjU3fDcwZmQ2MWQ5OTFmNDMyNTd8MTAw"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "现代",
|
"key": "光速",
|
||||||
"name": "💡现代|影视",
|
"name": "💡光速|影视",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_Xdai",
|
"api": "csp_Xdai",
|
||||||
"playerType": 1,
|
"playerType": 1,
|
||||||
"ext": "caHR0cHM6Ly94ZHlzLnZpcC9nZXRhcHAudHh0fHN6ZGp3ZGFwcHdjbm1kaGJ8c3pkandkYXBwd2NubWRoYnwxMTQ="
|
"ext": "jaHR0cDovLzU5LjE1My4xNjcuMTM3Ojg4OTl8NGQ4M2I4N2M0YzVlYTExMXw0ZDgzYjg3YzRjNWVhMTExfDQ2Mg=="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "优秀",
|
||||||
|
"name": "💡优秀|影视",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_Xdai",
|
||||||
|
"playerType": 1,
|
||||||
|
"ext": "jaHR0cDovL2FpLnhpYW95dW4uaW5rfEtMckZxU2ptYzRPSWo3NkJ8S0xyRnFTam1jNE9Jajc2QnwzMDA="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "莉莉",
|
||||||
|
"name": "💡莉莉|影视",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_Xdai",
|
||||||
|
"playerType": 1,
|
||||||
|
"ext": "jaHR0cDovLzExMS4xODAuMTk4LjQwOjExMTB8NDk0ODA4MDgwbGdneXNjb3w0OTQ4MDgwODBsZ2d5c2NvfDY2Ng=="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "雨滴",
|
||||||
|
"name": "💡雨滴|影视",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_Xdai",
|
||||||
|
"playerType": 1,
|
||||||
|
"ext": "jaHR0cHM6Ly95ZHlzZHluYW1pY2RvbWFpbm5hbWUuNjguZ3k6MTA2NzgvYzltMmpzMjk4eDgyaDYvbDltOGJ4MjNqMm8ycDlxL2R5bmFtaWNkb21haW5uYW1lLnR4dHxrOW8zcDJjOGI3bTN6MG84fGs5bzNwMmM4YjdtM3owbzh8MTAw"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "优质",
|
||||||
|
"name": "💡优质|影视",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_Xdai",
|
||||||
|
"playerType": 1,
|
||||||
|
"ext": "jaHR0cHM6Ly9keXl6dHZhcHBhcGlnb29kZ3guNjguZ3k6MTI2ODkvY2l3azI4dnUzOGlvOC9hcGl1cmwudHh0fGR5eXp0dmFwaWFwcHl5ZHN8ZHl5enR2YXBpYXBweXlkc3wxMDA="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "来看影视",
|
"key": "来看影视",
|
||||||
@@ -280,6 +277,50 @@
|
|||||||
"api": "csp_YGP",
|
"api": "csp_YGP",
|
||||||
"searchable": 0
|
"searchable": 0
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "猎手影视",
|
||||||
|
"name": "💡猎手|影视",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./api/猎手影视.py",
|
||||||
|
"searchable": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"playerType": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "火车影视",
|
||||||
|
"name": "💡火车|影视",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./api/火车影视.py",
|
||||||
|
"searchable": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"playerType": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "美帕影视",
|
||||||
|
"name": "💡美帕|影视",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./api/美帕影视.py",
|
||||||
|
"searchable": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"playerType": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "嗨皮影视",
|
||||||
|
"name": "💡嗨皮|影视",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./api/嗨皮影视.py",
|
||||||
|
"searchable": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"playerType": 2
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "厂长弹幕",
|
"key": "厂长弹幕",
|
||||||
"name": "💘厂长|弹幕",
|
"name": "💘厂长|弹幕",
|
||||||
|
|||||||
Vendored
+3045
-10
File diff suppressed because it is too large.
Load diff
@@ -1,68 +0,0 @@
|
|||||||
/***
|
|
||||||
* gbk编码解码函数
|
|
||||||
* strTool = gbkTool() strTool.encode(key)
|
|
||||||
* @returns {{encode: (function(*): *), decode: (function(*): *)}}
|
|
||||||
*/
|
|
||||||
export function gbkTool(){
|
|
||||||
var data=function(zipData){
|
|
||||||
var re=zipData
|
|
||||||
.replace(/#(\d+)\$/g,function(a,b){
|
|
||||||
return Array(+b+3).join('#');
|
|
||||||
})
|
|
||||||
.replace(/#/g,'####')
|
|
||||||
.replace(/(\w\w):([\w#]+)(?:,|$)/g,function(a,hd,dt){
|
|
||||||
return dt.replace(/../g,function(a){
|
|
||||||
if(a!='##'){
|
|
||||||
return hd+a;
|
|
||||||
}else{
|
|
||||||
return a;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
return re;
|
|
||||||
}('4e:020405060f12171f20212326292e2f313335373c40414244464a5155575a5b6263646567686a6b6c6d6e6f727475767778797a7b7c7d7f808182838485878a#909697999c9d9ea3aaafb0b1b4b6b7b8b9bcbdbec8cccfd0d2dadbdce0e2e6e7e9edeeeff1f4f8f9fafcfe,4f:00020304050607080b0c12131415161c1d212328292c2d2e31333537393b3e3f40414244454748494a4b4c525456616266686a6b6d6e7172757778797a7d8081828586878a8c8e909293959698999a9c9e9fa1a2a4abadb0b1b2b3b4b6b7b8b9babbbcbdbec0c1c2c6c7c8c9cbcccdd2d3d4d5d6d9dbe0e2e4e5e7ebecf0f2f4f5f6f7f9fbfcfdff,50:000102030405060708090a#0b0e1011131516171b1d1e20222324272b2f303132333435363738393b3d3f404142444546494a4b4d5051525354565758595b5d5e5f6061626364666768696a6b6d6e6f70717273747578797a7c7d818283848687898a8b8c8e8f909192939495969798999a9b9c9d9e9fa0a1a2a4a6aaabadaeafb0b1b3b4b5b6b7b8b9bcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdced0d1d2d3d4d5d7d8d9dbdcdddedfe0e1e2e3e4e5e8e9eaebeff0f1f2f4f6f7f8f9fafcfdfeff,51:00010203040508#090a0c0d0e0f1011131415161718191a1b1c1d1e1f2022232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e42474a4c4e4f5052535758595b5d5e5f606163646667696a6f727a7e7f838486878a8b8e8f90919394989a9d9e9fa1a3a6a7a8a9aaadaeb4b8b9babebfc1c2c3c5c8cacdced0d2d3d4d5d6d7d8d9dadcdedfe2e3e5e6e7e8e9eaeceef1f2f4f7fe,52:0405090b0c0f101314151c1e1f2122232526272a2c2f313234353c3e4445464748494b4e4f5253555758#595a5b5d5f6062636466686b6c6d6e7071737475767778797a7b7c7e808384858687898a8b8c8d8e8f91929495969798999a9ca4a5a6a7aeafb0b4b5b6b7b8b9babbbcbdc0c1c2c4c5c6c8cacccdcecfd1d3d4d5d7d9dadbdcdddee0e1e2e3e5e6e7e8e9eaebecedeeeff1f2f3f4f5f6f7f8fbfcfd,53:0102030407090a0b0c0e11121314181b1c1e1f2224252728292b2c2d2f3031323334353637383c3d404244464b4c4d505458595b5d65686a6c6d7276797b7c7d7e80818387888a8e8f#90919293949697999b9c9ea0a1a4a7aaabacadafb0b1b2b3b4b5b7b8b9babcbdbec0c3c4c5c6c7cecfd0d2d3d5dadcdddee1e2e7f4fafeff,54:000205070b1418191a1c2224252a303336373a3d3f4142444547494c4d4e4f515a5d5e5f6061636567696a6b6c6d6e6f7074797a7e7f8183858788898a8d919397989c9e9fa0a1a2a5aeb0b2b5b6b7b9babcbec3c5cacbd6d8dbe0e1e2e3e4ebeceff0f1f4f5f6f7f8f9fbfe,55:0002030405080a0b0c0d0e121315161718191a1c1d1e1f212526#28292b2d3234353638393a3b3d40424547484b4c4d4e4f515253545758595a5b5d5e5f60626368696b6f7071727374797a7d7f85868c8d8e9092939596979a9b9ea0a1a2a3a4a5a6a8a9aaabacadaeafb0b2b4b6b8babcbfc0c1c2c3c6c7c8cacbcecfd0d5d7d8d9dadbdee0e2e7e9edeef0f1f4f6f8f9fafbfcff,56:0203040506070a0b0d1011121314151617191a1c1d202122252628292a2b2e2f30333537383a3c3d3e404142434445464748494a4b4f5051525355565a5b5d5e5f6061#636566676d6e6f70727374757778797a7d7e7f80818283848788898a8b8c8d9091929495969798999a9b9c9d9e9fa0a1a2a4a5a6a7a8a9aaabacadaeb0b1b2b3b4b5b6b8b9babbbdbebfc0c1c2c3c4c5c6c7c8c9cbcccdcecfd0d1d2d3d5d6d8d9dce3e5e6e7e8e9eaeceeeff2f3f6f7f8fbfc,57:00010205070b0c0d0e0f101112131415161718191a1b1d1e202122242526272b313234353637383c3d3f414344454648494b52535455565859626365676c6e707172747578797a7d7e7f80#818788898a8d8e8f90919495969798999a9c9d9e9fa5a8aaacafb0b1b3b5b6b7b9babbbcbdbebfc0c1c4c5c6c7c8c9cacccdd0d1d3d6d7dbdcdee1e2e3e5e6e7e8e9eaebeceef0f1f2f3f5f6f7fbfcfeff,58:0103040508090a0c0e0f101213141617181a1b1c1d1f222325262728292b2c2d2e2f31323334363738393a3b3c3d3e3f4041424345464748494a4b4e4f505253555657595a5b5c5d5f6061626364666768696a6d6e6f707172737475767778797a7b7c7d7f82848687888a8b8c#8d8e8f909194959697989b9c9da0a1a2a3a4a5a6a7aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbdbebfc0c2c3c4c6c7c8c9cacbcccdcecfd0d2d3d4d6d7d8d9dadbdcdddedfe0e1e2e3e5e6e7e8e9eaedeff1f2f4f5f7f8fafbfcfdfeff,59:000103050608090a0b0c0e1011121317181b1d1e2021222326282c30323335363b3d3e3f404345464a4c4d505253595b5c5d5e5f616364666768696a6b6c6d6e6f70717275777a7b7c7e7f8085898b8c8e8f90919495989a9b9c9d9fa0a1a2a6#a7acadb0b1b3b4b5b6b7b8babcbdbfc0c1c2c3c4c5c7c8c9cccdcecfd5d6d9dbdedfe0e1e2e4e6e7e9eaebedeeeff0f1f2f3f4f5f6f7f8fafcfdfe,5a:00020a0b0d0e0f101214151617191a1b1d1e2122242627282a2b2c2d2e2f3033353738393a3b3d3e3f414243444547484b4c4d4e4f5051525354565758595b5c5d5e5f60616364656668696b6c6d6e6f7071727378797b7c7d7e808182838485868788898a8b8c8d8e8f9091939495969798999c9d9e9fa0a1a2a3a4a5a6a7a8a9abac#adaeafb0b1b4b6b7b9babbbcbdbfc0c3c4c5c6c7c8cacbcdcecfd0d1d3d5d7d9dadbdddedfe2e4e5e7e8eaecedeeeff0f2f3f4f5f6f7f8f9fafbfcfdfeff,5b:0001020304050607080a0b0c0d0e0f10111213141518191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303133353638393a3b3c3d3e3f4142434445464748494a4b4c4d4e4f52565e606167686b6d6e6f7274767778797b7c7e7f82868a8d8e90919294969fa7a8a9acadaeafb1b2b7babbbcc0c1c3c8c9cacbcdcecf#d1d4d5d6d7d8d9dadbdce0e2e3e6e7e9eaebecedeff1f2f3f4f5f6f7fdfe,5c:0002030507080b0c0d0e10121317191b1e1f2021232628292a2b2d2e2f303233353637434446474c4d5253545657585a5b5c5d5f62646768696a6b6c6d70727374757677787b7c7d7e808384858687898a8b8e8f9293959d9e9fa0a1a4a5a6a7a8aaaeafb0b2b4b6b9babbbcbec0c2c3c5c6c7c8c9cacccdcecfd0d1d3d4d5d6d7d8dadbdcdddedfe0e2e3e7e9ebeceeeff1f2f3f4f5f6f7f8f9fafcfdfeff,5d:00#01040508090a0b0c0d0f10111213151718191a1c1d1f2021222325282a2b2c2f3031323335363738393a3b3c3f4041424344454648494d4e4f5051525354555657595a5c5e5f6061626364656667686a6d6e7071727375767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f90Line truncated
|
|
||||||
U2Ghash={},
|
|
||||||
G2Uhash={};
|
|
||||||
!function(data){
|
|
||||||
var k=0;
|
|
||||||
data=data.match(/..../g);
|
|
||||||
for(var i=0x81;i<=0xfe;i++){
|
|
||||||
for(var j=0x40;j<=0xFE;j++){
|
|
||||||
U2Ghash[data[k++]]=('%'+i.toString(16)+'%'+j.toString(16))
|
|
||||||
.toUpperCase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for(var key in U2Ghash){
|
|
||||||
G2Uhash[U2Ghash[key]]=key;
|
|
||||||
}
|
|
||||||
}(data);
|
|
||||||
function isAscii(unicode) {
|
|
||||||
return ((unicode == 0x20AC) || (unicode <= 0x007F && unicode >= 0x0000));
|
|
||||||
}
|
|
||||||
return{
|
|
||||||
encode:function(str){
|
|
||||||
return str.replace(/./g,function(a){
|
|
||||||
var code=a.charCodeAt(0);
|
|
||||||
if(isAscii(code)){
|
|
||||||
return encodeURIComponent(a);
|
|
||||||
}else{
|
|
||||||
var key=code.toString(16);
|
|
||||||
if(key.length!=4)key=('000'+key).match(/....$/)[0];
|
|
||||||
return U2Ghash[key]||a;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
decode:function(str){
|
|
||||||
return str.replace(/%[0-9A-F]{2}%[0-9A-F]{2}/g,function(a){
|
|
||||||
if(a in G2Uhash){
|
|
||||||
return String.fromCharCode('0x'+G2Uhash[a]);
|
|
||||||
}else{
|
|
||||||
return a;
|
|
||||||
}
|
|
||||||
}).replace(/%[\w]{2}/g,function(a){
|
|
||||||
return decodeURIComponent(a);
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
+48
-18
@@ -89,7 +89,9 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
Parser.prototype.tokenize = function(src) {
|
Parser.prototype.tokenize = function(src) {
|
||||||
var lastEnd = 0, parser = this, trimLeading = false;
|
var lastEnd = 0,
|
||||||
|
parser = this,
|
||||||
|
trimLeading = false;
|
||||||
matchAll(src, START_TOKEN, function(open, index, src) {
|
matchAll(src, START_TOKEN, function(open, index, src) {
|
||||||
//here we match the rest of the src against a regex for this tag
|
//here we match the rest of the src against a regex for this tag
|
||||||
var match = src.slice(index + open.length).match(TAGS[open]);
|
var match = src.slice(index + open.length).match(TAGS[open]);
|
||||||
@@ -169,12 +171,15 @@
|
|||||||
if (i < 0) return JSON.stringify([src]);
|
if (i < 0) return JSON.stringify([src]);
|
||||||
var name = src.slice(0, i);
|
var name = src.slice(0, i);
|
||||||
var args = src.charAt(i) === ':' ? src.slice(i + 1) : src.slice(i + 1, -1);
|
var args = src.charAt(i) === ':' ? src.slice(i + 1) : src.slice(i + 1, -1);
|
||||||
args = this.parseExpr(args, {terms: true});
|
args = this.parseExpr(args, {
|
||||||
|
terms: true
|
||||||
|
});
|
||||||
return '[' + JSON.stringify(name) + ',' + args + ']';
|
return '[' + JSON.stringify(name) + ',' + args + ']';
|
||||||
};
|
};
|
||||||
|
|
||||||
Parser.prototype.extractEnt = function(src, regex, placeholder) {
|
Parser.prototype.extractEnt = function(src, regex, placeholder) {
|
||||||
var subs = [], isFunc = typeof placeholder == 'function';
|
var subs = [],
|
||||||
|
isFunc = typeof placeholder == 'function';
|
||||||
src = src.replace(regex, function(str) {
|
src = src.replace(regex, function(str) {
|
||||||
var replacement = isFunc ? placeholder(str) : placeholder;
|
var replacement = isFunc ? placeholder(str) : placeholder;
|
||||||
if (replacement) {
|
if (replacement) {
|
||||||
@@ -183,13 +188,19 @@
|
|||||||
}
|
}
|
||||||
return str;
|
return str;
|
||||||
});
|
});
|
||||||
return {src: src, subs: subs};
|
return {
|
||||||
|
src: src,
|
||||||
|
subs: subs
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
Parser.prototype.injectEnt = function(extracted, placeholder) {
|
Parser.prototype.injectEnt = function(extracted, placeholder) {
|
||||||
var src = extracted.src, subs = extracted.subs, isArr = Array.isArray(src);
|
var src = extracted.src,
|
||||||
|
subs = extracted.subs,
|
||||||
|
isArr = Array.isArray(src);
|
||||||
var arr = (isArr) ? src : [src];
|
var arr = (isArr) ? src : [src];
|
||||||
var re = new RegExp('[' + placeholder + ']', 'g'), i = 0;
|
var re = new RegExp('[' + placeholder + ']', 'g'),
|
||||||
|
i = 0;
|
||||||
arr.forEach(function(src, index) {
|
arr.forEach(function(src, index) {
|
||||||
arr[index] = src.replace(re, function() {
|
arr[index] = src.replace(re, function() {
|
||||||
return subs[i++];
|
return subs[i++];
|
||||||
@@ -257,7 +268,8 @@
|
|||||||
|
|
||||||
Parser.prototype.parseVar = function(src) {
|
Parser.prototype.parseVar = function(src) {
|
||||||
var args = Array.prototype.slice.call(arguments);
|
var args = Array.prototype.slice.call(arguments);
|
||||||
var str = args.pop(), index = args.pop();
|
var str = args.pop(),
|
||||||
|
index = args.pop();
|
||||||
//quote bare object identifiers (might be a reserved word like {while: 1})
|
//quote bare object identifiers (might be a reserved word like {while: 1})
|
||||||
if (src === 'i' && str.charAt(index + 1) === ':') {
|
if (src === 'i' && str.charAt(index + 1) === ':') {
|
||||||
return '"i"';
|
return '"i"';
|
||||||
@@ -385,20 +397,22 @@
|
|||||||
tagHandlers.elif = tagHandlers.elseif;
|
tagHandlers.elif = tagHandlers.elseif;
|
||||||
|
|
||||||
var getRuntime = function runtime(data, opts) {
|
var getRuntime = function runtime(data, opts) {
|
||||||
var defaults = {autoEscape: 'toJson'};
|
var defaults = {
|
||||||
|
autoEscape: 'toJson'
|
||||||
|
};
|
||||||
var _toString = Object.prototype.toString;
|
var _toString = Object.prototype.toString;
|
||||||
var _hasOwnProperty = Object.prototype.hasOwnProperty;
|
var _hasOwnProperty = Object.prototype.hasOwnProperty;
|
||||||
var getKeys = Object.keys || function(obj) {
|
var getKeys = Object.keys || function(obj) {
|
||||||
var keys = [];
|
var keys = [];
|
||||||
for (var n in obj) if (_hasOwnProperty.call(obj, n)) keys.push(n);
|
for (var n in obj)
|
||||||
|
if (_hasOwnProperty.call(obj, n)) keys.push(n);
|
||||||
return keys;
|
return keys;
|
||||||
};
|
};
|
||||||
var isArray = Array.isArray || function(obj) {
|
var isArray = Array.isArray || function(obj) {
|
||||||
return _toString.call(obj) === '[object Array]';
|
return _toString.call(obj) === '[object Array]';
|
||||||
};
|
};
|
||||||
var create = Object.create || function(obj) {
|
var create = Object.create || function(obj) {
|
||||||
function F() {
|
function F() {}
|
||||||
}
|
|
||||||
|
|
||||||
F.prototype = obj;
|
F.prototype = obj;
|
||||||
return new F();
|
return new F();
|
||||||
@@ -417,7 +431,8 @@
|
|||||||
};
|
};
|
||||||
//get a value, lexically, starting in current context; a.b -> get("a","b")
|
//get a value, lexically, starting in current context; a.b -> get("a","b")
|
||||||
var get = function() {
|
var get = function() {
|
||||||
var val, n = arguments[0], c = stack.length;
|
var val, n = arguments[0],
|
||||||
|
c = stack.length;
|
||||||
while (c--) {
|
while (c--) {
|
||||||
val = stack[c][n];
|
val = stack[c][n];
|
||||||
if (typeof val != 'undefined') break;
|
if (typeof val != 'undefined') break;
|
||||||
@@ -443,7 +458,9 @@
|
|||||||
};
|
};
|
||||||
var filter = function(val) {
|
var filter = function(val) {
|
||||||
for (var i = 1, len = arguments.length; i < len; i++) {
|
for (var i = 1, len = arguments.length; i < len; i++) {
|
||||||
var arr = arguments[i], name = arr[0], filter = filters[name];
|
var arr = arguments[i],
|
||||||
|
name = arr[0],
|
||||||
|
filter = filters[name];
|
||||||
if (filter) {
|
if (filter) {
|
||||||
arr[0] = val;
|
arr[0] = val;
|
||||||
//now arr looks like [val, arg1, arg2]
|
//now arr looks like [val, arg1, arg2]
|
||||||
@@ -460,11 +477,21 @@
|
|||||||
};
|
};
|
||||||
var each = function(obj, loopvar, fn1, fn2) {
|
var each = function(obj, loopvar, fn1, fn2) {
|
||||||
if (obj == null) return;
|
if (obj == null) return;
|
||||||
var arr = isArray(obj) ? obj : getKeys(obj), len = arr.length;
|
var arr = isArray(obj) ? obj : getKeys(obj),
|
||||||
var ctx = {loop: {length: len, first: arr[0], last: arr[len - 1]}};
|
len = arr.length;
|
||||||
|
var ctx = {
|
||||||
|
loop: {
|
||||||
|
length: len,
|
||||||
|
first: arr[0],
|
||||||
|
last: arr[len - 1]
|
||||||
|
}
|
||||||
|
};
|
||||||
push(ctx);
|
push(ctx);
|
||||||
for (var i = 0; i < len; i++) {
|
for (var i = 0; i < len; i++) {
|
||||||
extend(ctx.loop, {index: i + 1, index0: i});
|
extend(ctx.loop, {
|
||||||
|
index: i + 1,
|
||||||
|
index0: i
|
||||||
|
});
|
||||||
fn1(ctx[loopvar] = arr[i]);
|
fn1(ctx[loopvar] = arr[i]);
|
||||||
}
|
}
|
||||||
if (len === 0 && fn2) fn2();
|
if (len === 0 && fn2) fn2();
|
||||||
@@ -498,7 +525,8 @@
|
|||||||
return toString(val);
|
return toString(val);
|
||||||
}
|
}
|
||||||
}, opts.filters || {});
|
}, opts.filters || {});
|
||||||
var stack = [create(data || {})], output = [];
|
var stack = [create(data || {})],
|
||||||
|
output = [];
|
||||||
return {
|
return {
|
||||||
get: get,
|
get: get,
|
||||||
set: set,
|
set: set,
|
||||||
@@ -531,7 +559,9 @@
|
|||||||
runtime = runtime || (runtime = getRuntime.toString());
|
runtime = runtime || (runtime = getRuntime.toString());
|
||||||
fn = new Function('data', 'options', 'return (' + code + ')((' + runtime + ')(data, options))');
|
fn = new Function('data', 'options', 'return (' + code + ')((' + runtime + ')(data, options))');
|
||||||
}
|
}
|
||||||
return {render: fn};
|
return {
|
||||||
|
render: fn
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
jinja.render = function(markup, data, opts) {
|
jinja.render = function(markup, data, opts) {
|
||||||
|
|||||||
+185
-90
@@ -19,247 +19,342 @@
|
|||||||
}
|
}
|
||||||
})(this, () => {
|
})(this, () => {
|
||||||
return /******/ (() => { // webpackBootstrap
|
return /******/ (() => { // webpackBootstrap
|
||||||
/******/ var __webpack_modules__ = ({
|
/******/
|
||||||
|
var __webpack_modules__ = ({
|
||||||
|
|
||||||
/***/ "./lib/JSEncrypt.js":
|
/***/
|
||||||
|
"./lib/JSEncrypt.js":
|
||||||
/*!**************************!*\
|
/*!**************************!*\
|
||||||
!*** ./lib/JSEncrypt.js ***!
|
!*** ./lib/JSEncrypt.js ***!
|
||||||
\**************************/
|
\**************************/
|
||||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
/***/
|
||||||
|
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
"use strict";
|
"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
Line truncated
|
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
Line truncated
|
||||||
|
|
||||||
/***/ }),
|
/***/
|
||||||
|
}),
|
||||||
|
|
||||||
/***/ "./lib/JSEncryptRSAKey.js":
|
/***/
|
||||||
|
"./lib/JSEncryptRSAKey.js":
|
||||||
/*!********************************!*\
|
/*!********************************!*\
|
||||||
!*** ./lib/JSEncryptRSAKey.js ***!
|
!*** ./lib/JSEncryptRSAKey.js ***!
|
||||||
\********************************/
|
\********************************/
|
||||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
/***/
|
||||||
|
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
"use strict";
|
"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
Line truncated
|
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
Line truncated
|
||||||
|
|
||||||
/***/ }),
|
/***/
|
||||||
|
}),
|
||||||
|
|
||||||
/***/ "./lib/index.js":
|
/***/
|
||||||
|
"./lib/index.js":
|
||||||
/*!**********************!*\
|
/*!**********************!*\
|
||||||
!*** ./lib/index.js ***!
|
!*** ./lib/index.js ***!
|
||||||
\**********************/
|
\**********************/
|
||||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
/***/
|
||||||
|
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
"use strict";
|
"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?");
|
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":
|
||||||
/*!********************************!*\
|
/*!********************************!*\
|
||||||
!*** ./lib/lib/asn1js/asn1.js ***!
|
!*** ./lib/lib/asn1js/asn1.js ***!
|
||||||
\********************************/
|
\********************************/
|
||||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
/***/
|
||||||
|
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ASN1\": () => (/* binding */ ASN1),\n/* harmony export */ \"ASN1Tag\": () => (/* binding */ ASN1Tag),\n/* harmony export */ \"Stream\": () => (/* binding */ Stream)\n/* harmony export */ });\n/* harmony import */ var _int10__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./int10 */ \"./lib/lib/asn1js/int10.js\");\n// ASN.1 JavaScript decoder\n// Copyright (c) 2008-2014 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\n/*global oids */\n\nvar ellipsis = \"\\u2026\";\nvar reTimeS = /^(\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;\nvar reTimeL = /^(\\d\\d\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;\nfunction stringCut(str, len) {\n if (str.length > len) {\n str = str.substring(0, len) + ellipsis;\n }\n return str;\n}\nvar Stream = /** @class */ (function () {\n function Stream(enc, pos) {\n this.hexDigits = \"0123456789ABCDEF\";\n if (enc instanceof Stream) {\n this.enc = enc.enc;\n this.pos = enc.pos;\n }\n else {\n // enc should be an array or a binary string\n this.enc = enc;\n this.pos = pos;\n }\n }\n Stream.prototype.get = function (pos) {\n if (pos === undefined) {\n pos = this.pos++;\n }\n if (pos >= this.enc.length) {\n throw new Error(\"Requesting byte offset \".concat(pos, \" on a stream of length \").concat(this.enc.length));\n }\n return (\"string\" === typeof this.enc) ? this.enc.charCodeAt(pos) : this.enc[pos];\n };\n Stream.prototype.hexByte = function (b) {\n return this.hexDigits.charAt((b >> 4) & 0xF) + this.hexDigits.charAt(b & 0xF);\n };\n Stream.prototype.hexDump = function (start, end, raw) {\n var s = \"\";\n for (var i = start; i < end; ++i) {\n s += this.hexByte(this.get(i));\n if (raw !== true) {\n switch (i & 0xF) {\n case 0x7:\n s += \" \";\n break;\n case 0xF:\n s += \"\\n\";\n break;\n default:\n s += \" \";\n }\n }\n }\n return s;\n };\n Stream.prototype.isASCII = function (start, end) {\n for (var i = start; i < end; ++i) {\n var c = this.get(i);\n if (c < 32 || c > 176) {\n return false;\n }\n }\n return true;\n };\n Stream.prototype.parseStringISO = function (start, end) {\n var s = \"\";\n for (var i = start; i < end; ++i) {\n s += String.fromCharCode(this.get(i));\n }\n return s;\n };\n Stream.prototype.parseStringUTF = function (start, end) {\n var s = \"\";\n for (var i = start; i < end;) {\n var c = this.get(i++);\n if (c < 128) {\n s += String.fromCharCode(c);\n }\n else if ((c > 191) && (c < 224)) {\n s += String.fromCharCode(((c & 0x1F) << 6) | (this.get(i++) & 0x3F));\n }\n else {\n s += String.fromCharCode(((c & 0x0F) << 12) | ((this.get(i++) & 0x3F) << 6) | (this.get(i++) & 0x3F));\n }\n }\n return s;\n };\n Stream.prototype.parseStringBMP = function (start, end) {\n var str = \"\";\n var hi;\n var lo;\n for (var i = start; i < end;) {\n hi = this.get(i++);\n lo = this.get(i++);\n str += String.fromCharCode((hi << 8) | lo);\n }\n return str;\n };\n Stream.prototype.parseTime = function (start, end, shortYear) {\n var s = this.parseStringISO(start, end);\n var m = (shoLine truncated
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ASN1\": () => (/* binding */ ASN1),\n/* harmony export */ \"ASN1Tag\": () => (/* binding */ ASN1Tag),\n/* harmony export */ \"Stream\": () => (/* binding */ Stream)\n/* harmony export */ });\n/* harmony import */ var _int10__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./int10 */ \"./lib/lib/asn1js/int10.js\");\n// ASN.1 JavaScript decoder\n// Copyright (c) 2008-2014 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\n/*global oids */\n\nvar ellipsis = \"\\u2026\";\nvar reTimeS = /^(\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;\nvar reTimeL = /^(\\d\\d\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;\nfunction stringCut(str, len) {\n if (str.length > len) {\n str = str.substring(0, len) + ellipsis;\n }\n return str;\n}\nvar Stream = /** @class */ (function () {\n function Stream(enc, pos) {\n this.hexDigits = \"0123456789ABCDEF\";\n if (enc instanceof Stream) {\n this.enc = enc.enc;\n this.pos = enc.pos;\n }\n else {\n // enc should be an array or a binary string\n this.enc = enc;\n this.pos = pos;\n }\n }\n Stream.prototype.get = function (pos) {\n if (pos === undefined) {\n pos = this.pos++;\n }\n if (pos >= this.enc.length) {\n throw new Error(\"Requesting byte offset \".concat(pos, \" on a stream of length \").concat(this.enc.length));\n }\n return (\"string\" === typeof this.enc) ? this.enc.charCodeAt(pos) : this.enc[pos];\n };\n Stream.prototype.hexByte = function (b) {\n return this.hexDigits.charAt((b >> 4) & 0xF) + this.hexDigits.charAt(b & 0xF);\n };\n Stream.prototype.hexDump = function (start, end, raw) {\n var s = \"\";\n for (var i = start; i < end; ++i) {\n s += this.hexByte(this.get(i));\n if (raw !== true) {\n switch (i & 0xF) {\n case 0x7:\n s += \" \";\n break;\n case 0xF:\n s += \"\\n\";\n break;\n default:\n s += \" \";\n }\n }\n }\n return s;\n };\n Stream.prototype.isASCII = function (start, end) {\n for (var i = start; i < end; ++i) {\n var c = this.get(i);\n if (c < 32 || c > 176) {\n return false;\n }\n }\n return true;\n };\n Stream.prototype.parseStringISO = function (start, end) {\n var s = \"\";\n for (var i = start; i < end; ++i) {\n s += String.fromCharCode(this.get(i));\n }\n return s;\n };\n Stream.prototype.parseStringUTF = function (start, end) {\n var s = \"\";\n for (var i = start; i < end;) {\n var c = this.get(i++);\n if (c < 128) {\n s += String.fromCharCode(c);\n }\n else if ((c > 191) && (c < 224)) {\n s += String.fromCharCode(((c & 0x1F) << 6) | (this.get(i++) & 0x3F));\n }\n else {\n s += String.fromCharCode(((c & 0x0F) << 12) | ((this.get(i++) & 0x3F) << 6) | (this.get(i++) & 0x3F));\n }\n }\n return s;\n };\n Stream.prototype.parseStringBMP = function (start, end) {\n var str = \"\";\n var hi;\n var lo;\n for (var i = start; i < end;) {\n hi = this.get(i++);\n lo = this.get(i++);\n str += String.fromCharCode((hi << 8) | lo);\n }\n return str;\n };\n Stream.prototype.parseTime = function (start, end, shortYear) {\n var s = this.parseStringISO(start, end);\n var m = (shoLine truncated
|
||||||
|
|
||||||
/***/ }),
|
/***/
|
||||||
|
}),
|
||||||
|
|
||||||
/***/ "./lib/lib/asn1js/base64.js":
|
/***/
|
||||||
|
"./lib/lib/asn1js/base64.js":
|
||||||
/*!**********************************!*\
|
/*!**********************************!*\
|
||||||
!*** ./lib/lib/asn1js/base64.js ***!
|
!*** ./lib/lib/asn1js/base64.js ***!
|
||||||
\**********************************/
|
\**********************************/
|
||||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
/***/
|
||||||
|
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Base64\": () => (/* binding */ Base64)\n/* harmony export */ });\n// Base64 JavaScript decoder\n// Copyright (c) 2008-2013 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar decoder;\nvar Base64 = {\n decode: function (a) {\n var i;\n if (decoder === undefined) {\n var b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var ignore = \"= \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";\n decoder = Object.create(null);\n for (i = 0; i < 64; ++i) {\n decoder[b64.charAt(i)] = i;\n }\n decoder['-'] = 62; //+\n decoder['_'] = 63; //-\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1;\n }\n }\n var out = [];\n var bits = 0;\n var char_count = 0;\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i);\n if (c == \"=\") {\n break;\n }\n c = decoder[c];\n if (c == -1) {\n continue;\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i);\n }\n bits |= c;\n if (++char_count >= 4) {\n out[out.length] = (bits >> 16);\n out[out.length] = (bits >> 8) & 0xFF;\n out[out.length] = bits & 0xFF;\n bits = 0;\n char_count = 0;\n }\n else {\n bits <<= 6;\n }\n }\n switch (char_count) {\n case 1:\n throw new Error(\"Base64 encoding incomplete: at least 2 bits missing\");\n case 2:\n out[out.length] = (bits >> 10);\n break;\n case 3:\n out[out.length] = (bits >> 16);\n out[out.length] = (bits >> 8) & 0xFF;\n break;\n }\n return out;\n },\n re: /-----BEGIN [^-]+-----([A-Za-z0-9+\\/=\\s]+)-----END [^-]+-----|begin-base64[^\\n]+\\n([A-Za-z0-9+\\/=\\s]+)====/,\n unarmor: function (a) {\n var m = Base64.re.exec(a);\n if (m) {\n if (m[1]) {\n a = m[1];\n }\n else if (m[2]) {\n a = m[2];\n }\n else {\n throw new Error(\"RegExp out of sync\");\n }\n }\n return Base64.decode(a);\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/base64.js?");
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Base64\": () => (/* binding */ Base64)\n/* harmony export */ });\n// Base64 JavaScript decoder\n// Copyright (c) 2008-2013 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar decoder;\nvar Base64 = {\n decode: function (a) {\n var i;\n if (decoder === undefined) {\n var b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var ignore = \"= \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";\n decoder = Object.create(null);\n for (i = 0; i < 64; ++i) {\n decoder[b64.charAt(i)] = i;\n }\n decoder['-'] = 62; //+\n decoder['_'] = 63; //-\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1;\n }\n }\n var out = [];\n var bits = 0;\n var char_count = 0;\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i);\n if (c == \"=\") {\n break;\n }\n c = decoder[c];\n if (c == -1) {\n continue;\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i);\n }\n bits |= c;\n if (++char_count >= 4) {\n out[out.length] = (bits >> 16);\n out[out.length] = (bits >> 8) & 0xFF;\n out[out.length] = bits & 0xFF;\n bits = 0;\n char_count = 0;\n }\n else {\n bits <<= 6;\n }\n }\n switch (char_count) {\n case 1:\n throw new Error(\"Base64 encoding incomplete: at least 2 bits missing\");\n case 2:\n out[out.length] = (bits >> 10);\n break;\n case 3:\n out[out.length] = (bits >> 16);\n out[out.length] = (bits >> 8) & 0xFF;\n break;\n }\n return out;\n },\n re: /-----BEGIN [^-]+-----([A-Za-z0-9+\\/=\\s]+)-----END [^-]+-----|begin-base64[^\\n]+\\n([A-Za-z0-9+\\/=\\s]+)====/,\n unarmor: function (a) {\n var m = Base64.re.exec(a);\n if (m) {\n if (m[1]) {\n a = m[1];\n }\n else if (m[2]) {\n a = m[2];\n }\n else {\n throw new Error(\"RegExp out of sync\");\n }\n }\n return Base64.decode(a);\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/base64.js?");
|
||||||
|
|
||||||
/***/ }),
|
/***/
|
||||||
|
}),
|
||||||
|
|
||||||
/***/ "./lib/lib/asn1js/hex.js":
|
/***/
|
||||||
|
"./lib/lib/asn1js/hex.js":
|
||||||
/*!*******************************!*\
|
/*!*******************************!*\
|
||||||
!*** ./lib/lib/asn1js/hex.js ***!
|
!*** ./lib/lib/asn1js/hex.js ***!
|
||||||
\*******************************/
|
\*******************************/
|
||||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
/***/
|
||||||
|
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Hex\": () => (/* binding */ Hex)\n/* harmony export */ });\n// Hex JavaScript decoder\n// Copyright (c) 2008-2013 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar decoder;\nvar Hex = {\n decode: function (a) {\n var i;\n if (decoder === undefined) {\n var hex = \"0123456789ABCDEF\";\n var ignore = \" \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";\n decoder = {};\n for (i = 0; i < 16; ++i) {\n decoder[hex.charAt(i)] = i;\n }\n hex = hex.toLowerCase();\n for (i = 10; i < 16; ++i) {\n decoder[hex.charAt(i)] = i;\n }\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1;\n }\n }\n var out = [];\n var bits = 0;\n var char_count = 0;\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i);\n if (c == \"=\") {\n break;\n }\n c = decoder[c];\n if (c == -1) {\n continue;\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i);\n }\n bits |= c;\n if (++char_count >= 2) {\n out[out.length] = bits;\n bits = 0;\n char_count = 0;\n }\n else {\n bits <<= 4;\n }\n }\n if (char_count) {\n throw new Error(\"Hex encoding incomplete: 4 bits missing\");\n }\n return out;\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/hex.js?");
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Hex\": () => (/* binding */ Hex)\n/* harmony export */ });\n// Hex JavaScript decoder\n// Copyright (c) 2008-2013 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar decoder;\nvar Hex = {\n decode: function (a) {\n var i;\n if (decoder === undefined) {\n var hex = \"0123456789ABCDEF\";\n var ignore = \" \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";\n decoder = {};\n for (i = 0; i < 16; ++i) {\n decoder[hex.charAt(i)] = i;\n }\n hex = hex.toLowerCase();\n for (i = 10; i < 16; ++i) {\n decoder[hex.charAt(i)] = i;\n }\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1;\n }\n }\n var out = [];\n var bits = 0;\n var char_count = 0;\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i);\n if (c == \"=\") {\n break;\n }\n c = decoder[c];\n if (c == -1) {\n continue;\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i);\n }\n bits |= c;\n if (++char_count >= 2) {\n out[out.length] = bits;\n bits = 0;\n char_count = 0;\n }\n else {\n bits <<= 4;\n }\n }\n if (char_count) {\n throw new Error(\"Hex encoding incomplete: 4 bits missing\");\n }\n return out;\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/hex.js?");
|
||||||
|
|
||||||
/***/ }),
|
/***/
|
||||||
|
}),
|
||||||
|
|
||||||
/***/ "./lib/lib/asn1js/int10.js":
|
/***/
|
||||||
|
"./lib/lib/asn1js/int10.js":
|
||||||
/*!*********************************!*\
|
/*!*********************************!*\
|
||||||
!*** ./lib/lib/asn1js/int10.js ***!
|
!*** ./lib/lib/asn1js/int10.js ***!
|
||||||
\*********************************/
|
\*********************************/
|
||||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
/***/
|
||||||
|
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Int10\": () => (/* binding */ Int10)\n/* harmony export */ });\n// Big integer base-10 printing library\n// Copyright (c) 2014 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar max = 10000000000000; // biggest integer that can still fit 2^53 when multiplied by 256\nvar Int10 = /** @class */ (function () {\n function Int10(value) {\n this.buf = [+value || 0];\n }\n Int10.prototype.mulAdd = function (m, c) {\n // assert(m <= 256)\n var b = this.buf;\n var l = b.length;\n var i;\n var t;\n for (i = 0; i < l; ++i) {\n t = b[i] * m + c;\n if (t < max) {\n c = 0;\n }\n else {\n c = 0 | (t / max);\n t -= c * max;\n }\n b[i] = t;\n }\n if (c > 0) {\n b[i] = c;\n }\n };\n Int10.prototype.sub = function (c) {\n // assert(m <= 256)\n var b = this.buf;\n var l = b.length;\n var i;\n var t;\n for (i = 0; i < l; ++i) {\n t = b[i] - c;\n if (t < 0) {\n t += max;\n c = 1;\n }\n else {\n c = 0;\n }\n b[i] = t;\n }\n while (b[b.length - 1] === 0) {\n b.pop();\n }\n };\n Int10.prototype.toString = function (base) {\n if ((base || 10) != 10) {\n throw new Error(\"only base 10 is supported\");\n }\n var b = this.buf;\n var s = b[b.length - 1].toString();\n for (var i = b.length - 2; i >= 0; --i) {\n s += (max + b[i]).toString().substring(1);\n }\n return s;\n };\n Int10.prototype.valueOf = function () {\n var b = this.buf;\n var v = 0;\n for (var i = b.length - 1; i >= 0; --i) {\n v = v * max + b[i];\n }\n return v;\n };\n Int10.prototype.simplify = function () {\n var b = this.buf;\n return (b.length == 1) ? b[0] : this;\n };\n return Int10;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/int10.js?");
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Int10\": () => (/* binding */ Int10)\n/* harmony export */ });\n// Big integer base-10 printing library\n// Copyright (c) 2014 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar max = 10000000000000; // biggest integer that can still fit 2^53 when multiplied by 256\nvar Int10 = /** @class */ (function () {\n function Int10(value) {\n this.buf = [+value || 0];\n }\n Int10.prototype.mulAdd = function (m, c) {\n // assert(m <= 256)\n var b = this.buf;\n var l = b.length;\n var i;\n var t;\n for (i = 0; i < l; ++i) {\n t = b[i] * m + c;\n if (t < max) {\n c = 0;\n }\n else {\n c = 0 | (t / max);\n t -= c * max;\n }\n b[i] = t;\n }\n if (c > 0) {\n b[i] = c;\n }\n };\n Int10.prototype.sub = function (c) {\n // assert(m <= 256)\n var b = this.buf;\n var l = b.length;\n var i;\n var t;\n for (i = 0; i < l; ++i) {\n t = b[i] - c;\n if (t < 0) {\n t += max;\n c = 1;\n }\n else {\n c = 0;\n }\n b[i] = t;\n }\n while (b[b.length - 1] === 0) {\n b.pop();\n }\n };\n Int10.prototype.toString = function (base) {\n if ((base || 10) != 10) {\n throw new Error(\"only base 10 is supported\");\n }\n var b = this.buf;\n var s = b[b.length - 1].toString();\n for (var i = b.length - 2; i >= 0; --i) {\n s += (max + b[i]).toString().substring(1);\n }\n return s;\n };\n Int10.prototype.valueOf = function () {\n var b = this.buf;\n var v = 0;\n for (var i = b.length - 1; i >= 0; --i) {\n v = v * max + b[i];\n }\n return v;\n };\n Int10.prototype.simplify = function () {\n var b = this.buf;\n return (b.length == 1) ? b[0] : this;\n };\n return Int10;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/int10.js?");
|
||||||
|
|
||||||
/***/ }),
|
/***/
|
||||||
|
}),
|
||||||
|
|
||||||
/***/ "./lib/lib/jsbn/base64.js":
|
/***/
|
||||||
|
"./lib/lib/jsbn/base64.js":
|
||||||
/*!********************************!*\
|
/*!********************************!*\
|
||||||
!*** ./lib/lib/jsbn/base64.js ***!
|
!*** ./lib/lib/jsbn/base64.js ***!
|
||||||
\********************************/
|
\********************************/
|
||||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
/***/
|
||||||
|
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
"use strict";
|
"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?");
|
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":
|
||||||
/*!******************************!*\
|
/*!******************************!*\
|
||||||
!*** ./lib/lib/jsbn/jsbn.js ***!
|
!*** ./lib/lib/jsbn/jsbn.js ***!
|
||||||
\******************************/
|
\******************************/
|
||||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
/***/
|
||||||
|
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
"use strict";
|
"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.protot
Line truncated
|
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.protot
Line truncated
|
||||||
|
|
||||||
/***/ }),
|
/***/
|
||||||
|
}),
|
||||||
|
|
||||||
/***/ "./lib/lib/jsbn/prng4.js":
|
/***/
|
||||||
|
"./lib/lib/jsbn/prng4.js":
|
||||||
/*!*******************************!*\
|
/*!*******************************!*\
|
||||||
!*** ./lib/lib/jsbn/prng4.js ***!
|
!*** ./lib/lib/jsbn/prng4.js ***!
|
||||||
\*******************************/
|
\*******************************/
|
||||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
/***/
|
||||||
|
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
"use strict";
|
"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?");
|
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":
|
||||||
/*!*****************************!*\
|
/*!*****************************!*\
|
||||||
!*** ./lib/lib/jsbn/rng.js ***!
|
!*** ./lib/lib/jsbn/rng.js ***!
|
||||||
\*****************************/
|
\*****************************/
|
||||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
/***/
|
||||||
|
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
"use strict";
|
"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?");
|
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":
|
||||||
/*!*****************************!*\
|
/*!*****************************!*\
|
||||||
!*** ./lib/lib/jsbn/rsa.js ***!
|
!*** ./lib/lib/jsbn/rsa.js ***!
|
||||||
\*****************************/
|
\*****************************/
|
||||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
/***/
|
||||||
|
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
"use strict";
|
"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,
Line truncated
|
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,
Line truncated
|
||||||
|
|
||||||
/***/ }),
|
/***/
|
||||||
|
}),
|
||||||
|
|
||||||
/***/ "./lib/lib/jsbn/util.js":
|
/***/
|
||||||
|
"./lib/lib/jsbn/util.js":
|
||||||
/*!******************************!*\
|
/*!******************************!*\
|
||||||
!*** ./lib/lib/jsbn/util.js ***!
|
!*** ./lib/lib/jsbn/util.js ***!
|
||||||
\******************************/
|
\******************************/
|
||||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
/***/
|
||||||
|
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
"use strict";
|
"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?");
|
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":
|
||||||
/*!***************************************!*\
|
/*!***************************************!*\
|
||||||
!*** ./lib/lib/jsrsasign/asn1-1.0.js ***!
|
!*** ./lib/lib/jsrsasign/asn1-1.0.js ***!
|
||||||
\***************************************/
|
\***************************************/
|
||||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
/***/
|
||||||
|
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"KJUR\": () => (/* binding */ KJUR)\n/* harmony export */ });\n/* harmony import */ var _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsbn/jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _yahoo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./yahoo */ \"./lib/lib/jsrsasign/yahoo.js\");\n/* asn1-1.0.13.js (c) 2013-2017 Kenji Urushima | kjur.github.com/jsrsasign/license\n */\n/*\n * asn1.js - ASN.1 DER encoder classes\n *\n * Copyright (c) 2013-2017 Kenji Urushima (kenji.urushima@gmail.com)\n *\n * This software is licensed under the terms of the MIT License.\n * https://kjur.github.io/jsrsasign/license\n *\n * The above copyright and license notice shall be\n * included in all copies or substantial portions of the Software.\n */\n\n\n/**\n * @fileOverview\n * @name asn1-1.0.js\n * @author Kenji Urushima kenji.urushima@gmail.com\n * @version asn1 1.0.13 (2017-Jun-02)\n * @since jsrsasign 2.1\n * @license <a href=\"https://kjur.github.io/jsrsasign/license/\">MIT License</a>\n */\n/**\n * kjur's class library name space\n * <p>\n * This name space provides following name spaces:\n * <ul>\n * <li>{@link KJUR.asn1} - ASN.1 primitive hexadecimal encoder</li>\n * <li>{@link KJUR.asn1.x509} - ASN.1 structure for X.509 certificate and CRL</li>\n * <li>{@link KJUR.crypto} - Java Cryptographic Extension(JCE) style MessageDigest/Signature\n * class and utilities</li>\n * </ul>\n * </p>\n * NOTE: Please ignore method summary and document of this namespace. This caused by a bug of jsdoc2.\n * @name KJUR\n * @namespace kjur's class library name space\n */\nvar KJUR = {};\n/**\n * kjur's ASN.1 class library name space\n * <p>\n * This is ITU-T X.690 ASN.1 DER encoder class library and\n * class structure and methods is very similar to\n * org.bouncycastle.asn1 package of\n * well known BouncyCaslte Cryptography Library.\n * <h4>PROVIDING ASN.1 PRIMITIVES</h4>\n * Here are ASN.1 DER primitive classes.\n * <ul>\n * <li>0x01 {@link KJUR.asn1.DERBoolean}</li>\n * <li>0x02 {@link KJUR.asn1.DERInteger}</li>\n * <li>0x03 {@link KJUR.asn1.DERBitString}</li>\n * <li>0x04 {@link KJUR.asn1.DEROctetString}</li>\n * <li>0x05 {@link KJUR.asn1.DERNull}</li>\n * <li>0x06 {@link KJUR.asn1.DERObjectIdentifier}</li>\n * <li>0x0a {@link KJUR.asn1.DEREnumerated}</li>\n * <li>0x0c {@link KJUR.asn1.DERUTF8String}</li>\n * <li>0x12 {@link KJUR.asn1.DERNumericString}</li>\n * <li>0x13 {@link KJUR.asn1.DERPrintableString}</li>\n * <li>0x14 {@link KJUR.asn1.DERTeletexString}</li>\n * <li>0x16 {@link KJUR.asn1.DERIA5String}</li>\n * <li>0x17 {@link KJUR.asn1.DERUTCTime}</li>\n * <li>0x18 {@link KJUR.asn1.DERGeneralizedTime}</li>\n * <li>0x30 {@link KJUR.asn1.DERSequence}</li>\n * <li>0x31 {@link KJUR.asn1.DERSet}</li>\n * </ul>\n * <h4>OTHER ASN.1 CLASSES</h4>\n * <ul>\n * <li>{@link KJUR.asn1.ASN1Object}</li>\n * <li>{@link KJUR.asn1.DERAbstractString}</li>\n * <li>{@link KJUR.asn1.DERAbstractTime}</li>\n * <li>{@link KJUR.asn1.DERAbstractStructured}</li>\n * <li>{@link KJUR.asn1.DERTaggedObject}</li>\n * </ul>\n * <h4>SUB NAME SPACES</h4>\n * <ul>\n * <li>{@link KJUR.asn1.cades} - CAdES long term signature format</li>\n * <li>{@link KJUR.asn1.cms} - Cryptographic Message Syntax</li>\n * <li>{@link KJUR.asn1.csr} - Certificate Signing Request (CSR/PKCS#10)</li>\n * <li>{@link KJUR.asn1.tsp} - RFC 3161 Timestamping Protocol Format</li>\n * <li>{@link KJUR.asn1.x509} - RFC 5280 X.509 certificate and CRL</li>\n * </ul>\n * </p>\n * NOTE: Please ignore method summary and document of this namespace.\n * This caused by a bug of jsdoc2.\n * @name KJUR.asn1\n * @namespace\n */\nif (typeof KJUR.asn1 == \"undefined\" || !KJUR.asn1)\n KJUR.asn1 = {};\n/**\n * ASN1 utilities class\n * @name KJUR.asn1.ASN1Util\n * @class ASN1 utilities class\n * @since asn1 1.0.2\n */\nKJUR.asn1.ASN1Util = new function () {\n this.integerToByteHex = function (i) {\n var h = i.toString(16);\n if ((h.length % 2) == 1)\n h = '0' + h;\n return h;\n };\n this.bigIntToMinTwosComplementsHex = function (bigIntegerValue) {\n var h = bigIntegerValue.toString(16);\n if (h.substr(0, 1) != '-') {\n if (h.length % 2 == 1) {\n h = '0' + h;\n }\n else {\n if (!h.match(/^[0-7]/)) {\n h = '00' + h;\n }\n }\n }\n else {\n var hPos = h.substr(1);\n var xorLen = hPos.length;\n if (xorLen % 2 == 1) {\n xorLen += 1;\n }\n else {\n if (!h.match(/^[0-7]/)) {\n xorLen += 2;\n }\n }\n var hMask = '';\n for (var i = 0; i < xorLen; i++) {\n hMask += 'f';\n
Line truncated
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"KJUR\": () => (/* binding */ KJUR)\n/* harmony export */ });\n/* harmony import */ var _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsbn/jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _yahoo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./yahoo */ \"./lib/lib/jsrsasign/yahoo.js\");\n/* asn1-1.0.13.js (c) 2013-2017 Kenji Urushima | kjur.github.com/jsrsasign/license\n */\n/*\n * asn1.js - ASN.1 DER encoder classes\n *\n * Copyright (c) 2013-2017 Kenji Urushima (kenji.urushima@gmail.com)\n *\n * This software is licensed under the terms of the MIT License.\n * https://kjur.github.io/jsrsasign/license\n *\n * The above copyright and license notice shall be\n * included in all copies or substantial portions of the Software.\n */\n\n\n/**\n * @fileOverview\n * @name asn1-1.0.js\n * @author Kenji Urushima kenji.urushima@gmail.com\n * @version asn1 1.0.13 (2017-Jun-02)\n * @since jsrsasign 2.1\n * @license <a href=\"https://kjur.github.io/jsrsasign/license/\">MIT License</a>\n */\n/**\n * kjur's class library name space\n * <p>\n * This name space provides following name spaces:\n * <ul>\n * <li>{@link KJUR.asn1} - ASN.1 primitive hexadecimal encoder</li>\n * <li>{@link KJUR.asn1.x509} - ASN.1 structure for X.509 certificate and CRL</li>\n * <li>{@link KJUR.crypto} - Java Cryptographic Extension(JCE) style MessageDigest/Signature\n * class and utilities</li>\n * </ul>\n * </p>\n * NOTE: Please ignore method summary and document of this namespace. This caused by a bug of jsdoc2.\n * @name KJUR\n * @namespace kjur's class library name space\n */\nvar KJUR = {};\n/**\n * kjur's ASN.1 class library name space\n * <p>\n * This is ITU-T X.690 ASN.1 DER encoder class library and\n * class structure and methods is very similar to\n * org.bouncycastle.asn1 package of\n * well known BouncyCaslte Cryptography Library.\n * <h4>PROVIDING ASN.1 PRIMITIVES</h4>\n * Here are ASN.1 DER primitive classes.\n * <ul>\n * <li>0x01 {@link KJUR.asn1.DERBoolean}</li>\n * <li>0x02 {@link KJUR.asn1.DERInteger}</li>\n * <li>0x03 {@link KJUR.asn1.DERBitString}</li>\n * <li>0x04 {@link KJUR.asn1.DEROctetString}</li>\n * <li>0x05 {@link KJUR.asn1.DERNull}</li>\n * <li>0x06 {@link KJUR.asn1.DERObjectIdentifier}</li>\n * <li>0x0a {@link KJUR.asn1.DEREnumerated}</li>\n * <li>0x0c {@link KJUR.asn1.DERUTF8String}</li>\n * <li>0x12 {@link KJUR.asn1.DERNumericString}</li>\n * <li>0x13 {@link KJUR.asn1.DERPrintableString}</li>\n * <li>0x14 {@link KJUR.asn1.DERTeletexString}</li>\n * <li>0x16 {@link KJUR.asn1.DERIA5String}</li>\n * <li>0x17 {@link KJUR.asn1.DERUTCTime}</li>\n * <li>0x18 {@link KJUR.asn1.DERGeneralizedTime}</li>\n * <li>0x30 {@link KJUR.asn1.DERSequence}</li>\n * <li>0x31 {@link KJUR.asn1.DERSet}</li>\n * </ul>\n * <h4>OTHER ASN.1 CLASSES</h4>\n * <ul>\n * <li>{@link KJUR.asn1.ASN1Object}</li>\n * <li>{@link KJUR.asn1.DERAbstractString}</li>\n * <li>{@link KJUR.asn1.DERAbstractTime}</li>\n * <li>{@link KJUR.asn1.DERAbstractStructured}</li>\n * <li>{@link KJUR.asn1.DERTaggedObject}</li>\n * </ul>\n * <h4>SUB NAME SPACES</h4>\n * <ul>\n * <li>{@link KJUR.asn1.cades} - CAdES long term signature format</li>\n * <li>{@link KJUR.asn1.cms} - Cryptographic Message Syntax</li>\n * <li>{@link KJUR.asn1.csr} - Certificate Signing Request (CSR/PKCS#10)</li>\n * <li>{@link KJUR.asn1.tsp} - RFC 3161 Timestamping Protocol Format</li>\n * <li>{@link KJUR.asn1.x509} - RFC 5280 X.509 certificate and CRL</li>\n * </ul>\n * </p>\n * NOTE: Please ignore method summary and document of this namespace.\n * This caused by a bug of jsdoc2.\n * @name KJUR.asn1\n * @namespace\n */\nif (typeof KJUR.asn1 == \"undefined\" || !KJUR.asn1)\n KJUR.asn1 = {};\n/**\n * ASN1 utilities class\n * @name KJUR.asn1.ASN1Util\n * @class ASN1 utilities class\n * @since asn1 1.0.2\n */\nKJUR.asn1.ASN1Util = new function () {\n this.integerToByteHex = function (i) {\n var h = i.toString(16);\n if ((h.length % 2) == 1)\n h = '0' + h;\n return h;\n };\n this.bigIntToMinTwosComplementsHex = function (bigIntegerValue) {\n var h = bigIntegerValue.toString(16);\n if (h.substr(0, 1) != '-') {\n if (h.length % 2 == 1) {\n h = '0' + h;\n }\n else {\n if (!h.match(/^[0-7]/)) {\n h = '00' + h;\n }\n }\n }\n else {\n var hPos = h.substr(1);\n var xorLen = hPos.length;\n if (xorLen % 2 == 1) {\n xorLen += 1;\n }\n else {\n if (!h.match(/^[0-7]/)) {\n xorLen += 2;\n }\n }\n var hMask = '';\n for (var i = 0; i < xorLen; i++) {\n hMask += 'f';\n
Line truncated
|
||||||
|
|
||||||
/***/ }),
|
/***/
|
||||||
|
}),
|
||||||
|
|
||||||
/***/ "./lib/lib/jsrsasign/yahoo.js":
|
/***/
|
||||||
|
"./lib/lib/jsrsasign/yahoo.js":
|
||||||
/*!************************************!*\
|
/*!************************************!*\
|
||||||
!*** ./lib/lib/jsrsasign/yahoo.js ***!
|
!*** ./lib/lib/jsrsasign/yahoo.js ***!
|
||||||
\************************************/
|
\************************************/
|
||||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
/***/
|
||||||
|
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||||
|
|
||||||
"use strict";
|
"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?");
|
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":
|
||||||
/*!*****************************************!*\
|
/*!*****************************************!*\
|
||||||
!*** ./node_modules/process/browser.js ***!
|
!*** ./node_modules/process/browser.js ***!
|
||||||
\*****************************************/
|
\*****************************************/
|
||||||
/***/ ((module) => {
|
/***/
|
||||||
|
((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
Line truncated
|
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
Line truncated
|
||||||
|
|
||||||
/***/ })
|
/***/
|
||||||
|
})
|
||||||
|
|
||||||
/******/ });
|
/******/
|
||||||
|
});
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
/******/ // The module cache
|
/******/ // The module cache
|
||||||
/******/ var __webpack_module_cache__ = {};
|
/******/
|
||||||
|
var __webpack_module_cache__ = {};
|
||||||
/******/
|
/******/
|
||||||
/******/ // The require function
|
/******/ // The require function
|
||||||
/******/ function __webpack_require__(moduleId) {
|
/******/
|
||||||
|
function __webpack_require__(moduleId) {
|
||||||
/******/ // Check if module is in cache
|
/******/ // Check if module is in cache
|
||||||
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
/******/
|
||||||
/******/ if (cachedModule !== undefined) {
|
var cachedModule = __webpack_module_cache__[moduleId];
|
||||||
/******/ return cachedModule.exports;
|
/******/
|
||||||
/******/ }
|
if (cachedModule !== undefined) {
|
||||||
|
/******/
|
||||||
|
return cachedModule.exports;
|
||||||
|
/******/
|
||||||
|
}
|
||||||
/******/ // Create a new module (and put it into the cache)
|
/******/ // Create a new module (and put it into the cache)
|
||||||
/******/ var module = __webpack_module_cache__[moduleId] = {
|
/******/
|
||||||
|
var module = __webpack_module_cache__[moduleId] = {
|
||||||
/******/ // no module.id needed
|
/******/ // no module.id needed
|
||||||
/******/ // no module.loaded needed
|
/******/ // no module.loaded needed
|
||||||
/******/ exports: {}
|
/******/
|
||||||
/******/ };
|
exports: {}
|
||||||
|
/******/
|
||||||
|
};
|
||||||
/******/
|
/******/
|
||||||
/******/ // Execute the module function
|
/******/ // Execute the module function
|
||||||
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
/******/
|
||||||
|
__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
||||||
/******/
|
/******/
|
||||||
/******/ // Return the exports of the module
|
/******/ // Return the exports of the module
|
||||||
/******/ return module.exports;
|
/******/
|
||||||
/******/ }
|
return module.exports;
|
||||||
|
/******/
|
||||||
|
}
|
||||||
/******/
|
/******/
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
/******/ /* webpack/runtime/define property getters */
|
/******/
|
||||||
/******/ (() => {
|
/* webpack/runtime/define property getters */
|
||||||
|
/******/
|
||||||
|
(() => {
|
||||||
/******/ // define getter functions for harmony exports
|
/******/ // 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__.d = (exports, definition) => {
|
||||||
/******/ (() => {
|
|
||||||
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
||||||
/******/ })();
|
|
||||||
/******/
|
/******/
|
||||||
/******/ /* webpack/runtime/make namespace object */
|
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
|
/******/ // define __esModule on exports
|
||||||
/******/ __webpack_require__.r = (exports) => {
|
/******/
|
||||||
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
__webpack_require__.r = (exports) => {
|
||||||
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
/******/
|
||||||
/******/ }
|
if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
||||||
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
/******/
|
||||||
/******/ };
|
Object.defineProperty(exports, Symbol.toStringTag, {
|
||||||
/******/ })();
|
value: 'Module'
|
||||||
|
});
|
||||||
|
/******/
|
||||||
|
}
|
||||||
|
/******/
|
||||||
|
Object.defineProperty(exports, '__esModule', {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
/******/
|
||||||
|
};
|
||||||
|
/******/
|
||||||
|
})();
|
||||||
/******/
|
/******/
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
/******/
|
/******/
|
||||||
/******/ // startup
|
/******/ // startup
|
||||||
/******/ // Load entry module and return exports
|
/******/ // Load entry module and return exports
|
||||||
/******/ // This entry module can't be inlined because the eval devtool is used.
|
/******/ // 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__;
|
var __webpack_exports__ = __webpack_require__("./lib/index.js");
|
||||||
/******/ })()
|
/******/
|
||||||
;
|
__webpack_exports__ = __webpack_exports__["default"];
|
||||||
|
/******/
|
||||||
|
/******/
|
||||||
|
return __webpack_exports__;
|
||||||
|
/******/
|
||||||
|
})();
|
||||||
});
|
});
|
||||||
+119
-47
@@ -2,24 +2,34 @@
|
|||||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||||
typeof define === 'function' && define.amd ? define(factory) :
|
typeof define === 'function' && define.amd ? define(factory) :
|
||||||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.JSON5 = factory());
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.JSON5 = factory());
|
||||||
}(this, (function () { 'use strict';
|
}(this, (function() {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
function createCommonjsModule(fn, module) {
|
function createCommonjsModule(fn, module) {
|
||||||
return module = { exports: {} }, fn(module, module.exports), module.exports;
|
return module = {
|
||||||
|
exports: {}
|
||||||
|
}, fn(module, module.exports), module.exports;
|
||||||
}
|
}
|
||||||
|
|
||||||
var _global = createCommonjsModule(function(module) {
|
var _global = createCommonjsModule(function(module) {
|
||||||
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
|
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
|
||||||
var global = module.exports = typeof window != 'undefined' && window.Math == Math
|
var global = module.exports = typeof window != 'undefined' && window.Math == Math ?
|
||||||
? window : typeof self != 'undefined' && self.Math == Math ? self
|
window : typeof self != 'undefined' && self.Math == Math ? self
|
||||||
// eslint-disable-next-line no-new-func
|
// eslint-disable-next-line no-new-func
|
||||||
: Function('return this')();
|
:
|
||||||
if (typeof __g == 'number') { __g = global; } // eslint-disable-line no-undef
|
Function('return this')();
|
||||||
|
if (typeof __g == 'number') {
|
||||||
|
__g = global;
|
||||||
|
} // eslint-disable-line no-undef
|
||||||
});
|
});
|
||||||
|
|
||||||
var _core = createCommonjsModule(function(module) {
|
var _core = createCommonjsModule(function(module) {
|
||||||
var core = module.exports = { version: '2.6.5' };
|
var core = module.exports = {
|
||||||
if (typeof __e == 'number') { __e = core; } // eslint-disable-line no-undef
|
version: '2.6.5'
|
||||||
|
};
|
||||||
|
if (typeof __e == 'number') {
|
||||||
|
__e = core;
|
||||||
|
} // eslint-disable-line no-undef
|
||||||
});
|
});
|
||||||
var _core_1 = _core.version;
|
var _core_1 = _core.version;
|
||||||
|
|
||||||
@@ -28,7 +38,9 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
var _anObject = function(it) {
|
var _anObject = function(it) {
|
||||||
if (!_isObject(it)) { throw TypeError(it + ' is not an object!'); }
|
if (!_isObject(it)) {
|
||||||
|
throw TypeError(it + ' is not an object!');
|
||||||
|
}
|
||||||
return it;
|
return it;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -42,7 +54,11 @@
|
|||||||
|
|
||||||
// Thank's IE8 for his funny defineProperty
|
// Thank's IE8 for his funny defineProperty
|
||||||
var _descriptors = !_fails(function() {
|
var _descriptors = !_fails(function() {
|
||||||
return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
|
return Object.defineProperty({}, 'a', {
|
||||||
|
get: function() {
|
||||||
|
return 7;
|
||||||
|
}
|
||||||
|
}).a != 7;
|
||||||
});
|
});
|
||||||
|
|
||||||
var document = _global.document;
|
var document = _global.document;
|
||||||
@@ -53,7 +69,11 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
var _ie8DomDefine = !_descriptors && !_fails(function() {
|
var _ie8DomDefine = !_descriptors && !_fails(function() {
|
||||||
return Object.defineProperty(_domCreate('div'), 'a', { get: function () { return 7; } }).a != 7;
|
return Object.defineProperty(_domCreate('div'), 'a', {
|
||||||
|
get: function() {
|
||||||
|
return 7;
|
||||||
|
}
|
||||||
|
}).a != 7;
|
||||||
});
|
});
|
||||||
|
|
||||||
// 7.1.1 ToPrimitive(input [, PreferredType])
|
// 7.1.1 ToPrimitive(input [, PreferredType])
|
||||||
@@ -61,11 +81,19 @@
|
|||||||
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
|
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
|
||||||
// and the second argument - flag - preferred type is a string
|
// and the second argument - flag - preferred type is a string
|
||||||
var _toPrimitive = function(it, S) {
|
var _toPrimitive = function(it, S) {
|
||||||
if (!_isObject(it)) { return it; }
|
if (!_isObject(it)) {
|
||||||
|
return it;
|
||||||
|
}
|
||||||
var fn, val;
|
var fn, val;
|
||||||
if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; }
|
if (S && typeof(fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) {
|
||||||
if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) { return val; }
|
return val;
|
||||||
if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; }
|
}
|
||||||
|
if (typeof(fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
if (!S && typeof(fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
throw TypeError("Can't convert object to primitive value");
|
throw TypeError("Can't convert object to primitive value");
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -75,11 +103,18 @@
|
|||||||
_anObject(O);
|
_anObject(O);
|
||||||
P = _toPrimitive(P, true);
|
P = _toPrimitive(P, true);
|
||||||
_anObject(Attributes);
|
_anObject(Attributes);
|
||||||
if (_ie8DomDefine) { try {
|
if (_ie8DomDefine) {
|
||||||
|
try {
|
||||||
return dP(O, P, Attributes);
|
return dP(O, P, Attributes);
|
||||||
} catch (e) { /* empty */ } }
|
} catch (e) {
|
||||||
if ('get' in Attributes || 'set' in Attributes) { throw TypeError('Accessors not supported!'); }
|
/* empty */ }
|
||||||
if ('value' in Attributes) { O[P] = Attributes.value; }
|
}
|
||||||
|
if ('get' in Attributes || 'set' in Attributes) {
|
||||||
|
throw TypeError('Accessors not supported!');
|
||||||
|
}
|
||||||
|
if ('value' in Attributes) {
|
||||||
|
O[P] = Attributes.value;
|
||||||
|
}
|
||||||
return O;
|
return O;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -143,9 +178,15 @@
|
|||||||
|
|
||||||
(module.exports = function(O, key, val, safe) {
|
(module.exports = function(O, key, val, safe) {
|
||||||
var isFunction = typeof val == 'function';
|
var isFunction = typeof val == 'function';
|
||||||
if (isFunction) { _has(val, 'name') || _hide(val, 'name', key); }
|
if (isFunction) {
|
||||||
if (O[key] === val) { return; }
|
_has(val, 'name') || _hide(val, 'name', key);
|
||||||
if (isFunction) { _has(val, SRC) || _hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); }
|
}
|
||||||
|
if (O[key] === val) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (isFunction) {
|
||||||
|
_has(val, SRC) || _hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
|
||||||
|
}
|
||||||
if (O === _global) {
|
if (O === _global) {
|
||||||
O[key] = val;
|
O[key] = val;
|
||||||
} else if (!safe) {
|
} else if (!safe) {
|
||||||
@@ -163,7 +204,9 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
var _aFunction = function(it) {
|
var _aFunction = function(it) {
|
||||||
if (typeof it != 'function') { throw TypeError(it + ' is not a function!'); }
|
if (typeof it != 'function') {
|
||||||
|
throw TypeError(it + ' is not a function!');
|
||||||
|
}
|
||||||
return it;
|
return it;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -171,15 +214,20 @@
|
|||||||
|
|
||||||
var _ctx = function(fn, that, length) {
|
var _ctx = function(fn, that, length) {
|
||||||
_aFunction(fn);
|
_aFunction(fn);
|
||||||
if (that === undefined) { return fn; }
|
if (that === undefined) {
|
||||||
|
return fn;
|
||||||
|
}
|
||||||
switch (length) {
|
switch (length) {
|
||||||
case 1: return function (a) {
|
case 1:
|
||||||
|
return function(a) {
|
||||||
return fn.call(that, a);
|
return fn.call(that, a);
|
||||||
};
|
};
|
||||||
case 2: return function (a, b) {
|
case 2:
|
||||||
|
return function(a, b) {
|
||||||
return fn.call(that, a, b);
|
return fn.call(that, a, b);
|
||||||
};
|
};
|
||||||
case 3: return function (a, b, c) {
|
case 3:
|
||||||
|
return function(a, b, c) {
|
||||||
return fn.call(that, a, b, c);
|
return fn.call(that, a, b, c);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -200,7 +248,9 @@
|
|||||||
var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {});
|
var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {});
|
||||||
var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
|
var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
|
||||||
var key, own, out, exp;
|
var key, own, out, exp;
|
||||||
if (IS_GLOBAL) { source = name; }
|
if (IS_GLOBAL) {
|
||||||
|
source = name;
|
||||||
|
}
|
||||||
for (key in source) {
|
for (key in source) {
|
||||||
// contains in native
|
// contains in native
|
||||||
own = !IS_FORCED && target && target[key] !== undefined;
|
own = !IS_FORCED && target && target[key] !== undefined;
|
||||||
@@ -209,10 +259,16 @@
|
|||||||
// bind timers to global for call from export context
|
// bind timers to global for call from export context
|
||||||
exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out;
|
exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out;
|
||||||
// extend global
|
// extend global
|
||||||
if (target) { _redefine(target, key, out, type & $export.U); }
|
if (target) {
|
||||||
|
_redefine(target, key, out, type & $export.U);
|
||||||
|
}
|
||||||
// export
|
// export
|
||||||
if (exports[key] != out) { _hide(exports, key, exp); }
|
if (exports[key] != out) {
|
||||||
if (IS_PROTO && expProto[key] != out) { expProto[key] = out; }
|
_hide(exports, key, exp);
|
||||||
|
}
|
||||||
|
if (IS_PROTO && expProto[key] != out) {
|
||||||
|
expProto[key] = out;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
_global.core = _core;
|
_global.core = _core;
|
||||||
@@ -236,7 +292,9 @@
|
|||||||
|
|
||||||
// 7.2.1 RequireObjectCoercible(argument)
|
// 7.2.1 RequireObjectCoercible(argument)
|
||||||
var _defined = function(it) {
|
var _defined = function(it) {
|
||||||
if (it == undefined) { throw TypeError("Can't call method on " + it); }
|
if (it == undefined) {
|
||||||
|
throw TypeError("Can't call method on " + it);
|
||||||
|
}
|
||||||
return it;
|
return it;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -248,11 +306,13 @@
|
|||||||
var i = _toInteger(pos);
|
var i = _toInteger(pos);
|
||||||
var l = s.length;
|
var l = s.length;
|
||||||
var a, b;
|
var a, b;
|
||||||
if (i < 0 || i >= l) { return TO_STRING ? '' : undefined; }
|
if (i < 0 || i >= l) {
|
||||||
|
return TO_STRING ? '' : undefined;
|
||||||
|
}
|
||||||
a = s.charCodeAt(i);
|
a = s.charCodeAt(i);
|
||||||
return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
|
return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ?
|
||||||
? TO_STRING ? s.charAt(i) : a
|
TO_STRING ? s.charAt(i) : a :
|
||||||
: TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
|
TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -288,12 +348,15 @@
|
|||||||
var code;
|
var code;
|
||||||
while (aLen > i) {
|
while (aLen > i) {
|
||||||
code = +arguments$1[i++];
|
code = +arguments$1[i++];
|
||||||
if (_toAbsoluteIndex(code, 0x10ffff) !== code) { throw RangeError(code + ' is not a valid code point'); }
|
if (_toAbsoluteIndex(code, 0x10ffff) !== code) {
|
||||||
res.push(code < 0x10000
|
throw RangeError(code + ' is not a valid code point');
|
||||||
? fromCharCode(code)
|
}
|
||||||
: fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
|
res.push(code < 0x10000 ?
|
||||||
|
fromCharCode(code) :
|
||||||
|
fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
|
||||||
);
|
);
|
||||||
} return res.join('');
|
}
|
||||||
|
return res.join('');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -377,7 +440,9 @@
|
|||||||
} while (token.type !== 'eof')
|
} while (token.type !== 'eof')
|
||||||
|
|
||||||
if (typeof reviver === 'function') {
|
if (typeof reviver === 'function') {
|
||||||
return internalize({'': root}, '', reviver)
|
return internalize({
|
||||||
|
'': root
|
||||||
|
}, '', reviver)
|
||||||
}
|
}
|
||||||
|
|
||||||
return root
|
return root
|
||||||
@@ -1517,7 +1582,9 @@
|
|||||||
gap = space.substr(0, 10);
|
gap = space.substr(0, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
return serializeProperty('', {'': value})
|
return serializeProperty('', {
|
||||||
|
'': value
|
||||||
|
})
|
||||||
|
|
||||||
function serializeProperty(key, holder) {
|
function serializeProperty(key, holder) {
|
||||||
var value = holder[key];
|
var value = holder[key];
|
||||||
@@ -1542,9 +1609,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (value) {
|
switch (value) {
|
||||||
case null: return 'null'
|
case null:
|
||||||
case true: return 'true'
|
return 'null'
|
||||||
case false: return 'false'
|
case true:
|
||||||
|
return 'true'
|
||||||
|
case false:
|
||||||
|
return 'false'
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof value === 'string') {
|
if (typeof value === 'string') {
|
||||||
@@ -1615,7 +1685,9 @@
|
|||||||
product += c;
|
product += c;
|
||||||
}
|
}
|
||||||
|
|
||||||
var quoteChar = quote || Object.keys(quotes).reduce(function (a, b) { return (quotes[a] < quotes[b]) ? a : b; });
|
var quoteChar = quote || Object.keys(quotes).reduce(function(a, b) {
|
||||||
|
return (quotes[a] < quotes[b]) ? a : b;
|
||||||
|
});
|
||||||
|
|
||||||
product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);
|
product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);
|
||||||
|
|
||||||
|
|||||||
+5858
-2
File diff suppressed because it is too large.
Load diff
Vendored
+1439
-2
File diff suppressed because it is too large.
Load diff
+146
@@ -0,0 +1,146 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# by @嗷呜
|
||||||
|
import sys
|
||||||
|
sys.path.append('..')
|
||||||
|
from base.spider import Spider
|
||||||
|
import requests
|
||||||
|
|
||||||
|
|
||||||
|
class Spider(Spider):
|
||||||
|
|
||||||
|
def init(self, extend=""):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def getName(self):
|
||||||
|
return "hitv"
|
||||||
|
|
||||||
|
def isVideoFormat(self, url):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def manualVideoCheck(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def destroy(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def homeContent(self, filter):
|
||||||
|
result = {}
|
||||||
|
cateManual = {
|
||||||
|
# "直播": "live",
|
||||||
|
'排行榜': 'rank',
|
||||||
|
"电影": "1",
|
||||||
|
"剧集": "2",
|
||||||
|
"综艺": "3",
|
||||||
|
"动画": "4",
|
||||||
|
"短片": "5"
|
||||||
|
}
|
||||||
|
classes = []
|
||||||
|
for k in cateManual:
|
||||||
|
classes.append({
|
||||||
|
'type_name': k,
|
||||||
|
'type_id': cateManual[k]
|
||||||
|
})
|
||||||
|
result['class'] = classes
|
||||||
|
return result
|
||||||
|
|
||||||
|
host = "https://wys.upfuhn.com"
|
||||||
|
headers = {
|
||||||
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
||||||
|
"Chrome/80.0.3987.149 Safari/537.36"
|
||||||
|
}
|
||||||
|
|
||||||
|
def list(self, list):
|
||||||
|
videos = []
|
||||||
|
for it in list:
|
||||||
|
videos.append({
|
||||||
|
"vod_id": it['video_site_id'],
|
||||||
|
"vod_name": it['video_name'],
|
||||||
|
"vod_pic": it['video_horizontal_url'] or it['video_vertical_url'],
|
||||||
|
"vod_remarks": it['newest_series_num'],
|
||||||
|
"vod_year": it['years'],
|
||||||
|
})
|
||||||
|
return videos
|
||||||
|
|
||||||
|
def homeVideoContent(self):
|
||||||
|
url = f'{self.host}/v1/ys_video_sites/hot?t=1'
|
||||||
|
data = requests.get(url, headers=self.headers).json()
|
||||||
|
videos = self.list(data['data']['data'])
|
||||||
|
result = {'list': videos}
|
||||||
|
return result
|
||||||
|
|
||||||
|
def categoryContent(self, tid, pg, filter, extend):
|
||||||
|
path = f'/v1/ys_video_sites?t={tid}&s_t=0&a&y&o=0&ps=21&pn={pg}'
|
||||||
|
rank = False
|
||||||
|
if tid == 'rank':
|
||||||
|
if pg == 1:
|
||||||
|
path = f'/v1/ys_video_sites/ranking'
|
||||||
|
rank = True
|
||||||
|
else:
|
||||||
|
path = ''
|
||||||
|
# elif tid == 'live' and pg == 1:
|
||||||
|
# path = f'/v1/ys_live_tvs'
|
||||||
|
videos = []
|
||||||
|
result = {}
|
||||||
|
try:
|
||||||
|
data = requests.get(self.host + path, headers=self.headers).json()
|
||||||
|
if rank:
|
||||||
|
for video in data['data']:
|
||||||
|
videos.extend(data['data'][video])
|
||||||
|
else:
|
||||||
|
videos = data['data']['data']
|
||||||
|
result = {}
|
||||||
|
result['list'] = self.list(videos)
|
||||||
|
result['page'] = pg
|
||||||
|
result['pagecount'] = 9999
|
||||||
|
result['limit'] = 90
|
||||||
|
result['total'] = 999999
|
||||||
|
except:
|
||||||
|
result['list'] = []
|
||||||
|
return result
|
||||||
|
|
||||||
|
def detailContent(self, ids):
|
||||||
|
tid = ids[0]
|
||||||
|
url = f'{self.host}/v1/ys_video_series/by_vid/{tid}'
|
||||||
|
data = requests.get(url, headers=self.headers).json()
|
||||||
|
data1 = data['data']['ys_video_site']
|
||||||
|
urls = []
|
||||||
|
for it in data['data']['data']:
|
||||||
|
urls.append(it['series_num'] + '$' + it['video_url'])
|
||||||
|
vod = {
|
||||||
|
'vod_name': data1['video_name'],
|
||||||
|
'type_name': data1['tag'],
|
||||||
|
'vod_year': data1['years'],
|
||||||
|
'vod_area': data1['area'],
|
||||||
|
'vod_director': data1['main_actor'],
|
||||||
|
'vod_content': data1['video_desc'],
|
||||||
|
'vod_play_from': '嗨皮在线',
|
||||||
|
'vod_play_url': '#'.join(urls),
|
||||||
|
}
|
||||||
|
result = {
|
||||||
|
'list': [
|
||||||
|
vod
|
||||||
|
]
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
|
||||||
|
def searchContent(self, key, quick, pg=1):
|
||||||
|
url = f'{self.host}/v1/ys_video_sites/search?s={key}&o=0&ps=200&pn={pg}'
|
||||||
|
data = requests.get(url, headers=self.headers).json()
|
||||||
|
videos = data['data']['video_sites']
|
||||||
|
if data['data']['first_video_series'] is not None:
|
||||||
|
videos = [data['data']['first_video_series']] + videos
|
||||||
|
result = {}
|
||||||
|
result['list'] = self.list(videos)
|
||||||
|
result['page'] = pg
|
||||||
|
return result
|
||||||
|
|
||||||
|
def playerContent(self, flag, id, vipFlags):
|
||||||
|
result = {
|
||||||
|
'url': id,
|
||||||
|
'parse': 0,
|
||||||
|
'header': self.headers
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
|
||||||
|
def localProxy(self, param):
|
||||||
|
pass
|
||||||
+31
-14
@@ -31,7 +31,7 @@ let common_lazy = `js:
|
|||||||
url: url,
|
url: url,
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
input;
|
input = url && url.startsWith('http') && tellIsJx(url) ? {parse:0,jx:1,url:url}:input;
|
||||||
}`;
|
}`;
|
||||||
// 默认嗅探播放
|
// 默认嗅探播放
|
||||||
|
|
||||||
@@ -113,7 +113,8 @@ function getMubans() {
|
|||||||
tab_text: 'div--small&&Text',
|
tab_text: 'div--small&&Text',
|
||||||
},
|
},
|
||||||
搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
|
搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
|
||||||
}, mxone5: {
|
},
|
||||||
|
mxone5: {
|
||||||
title: '',
|
title: '',
|
||||||
host: '',
|
host: '',
|
||||||
url: '/show/fyclass--------fypage---.html',
|
url: '/show/fyclass--------fypage---.html',
|
||||||
@@ -138,7 +139,8 @@ function getMubans() {
|
|||||||
tab_text: 'div--small&&Text',
|
tab_text: 'div--small&&Text',
|
||||||
},
|
},
|
||||||
搜索: '.module-items .module-search-item;a&&title;img&&data-src;.video-serial&&Text;a&&href',
|
搜索: '.module-items .module-search-item;a&&title;img&&data-src;.video-serial&&Text;a&&href',
|
||||||
}, 首图: {
|
},
|
||||||
|
首图: {
|
||||||
title: '',
|
title: '',
|
||||||
host: '',
|
host: '',
|
||||||
url: '/vodshow/fyclass--------fypage---/',
|
url: '/vodshow/fyclass--------fypage---/',
|
||||||
@@ -166,7 +168,8 @@ function getMubans() {
|
|||||||
lists: '.myui-content__list:eq(#id) li',
|
lists: '.myui-content__list:eq(#id) li',
|
||||||
},
|
},
|
||||||
搜索: '#searchList li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&Text',
|
搜索: '#searchList li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&Text',
|
||||||
}, 首图2: {
|
},
|
||||||
|
首图2: {
|
||||||
title: '',
|
title: '',
|
||||||
host: '',
|
host: '',
|
||||||
url: '/list/fyclass-fypage.html',
|
url: '/list/fyclass-fypage.html',
|
||||||
@@ -196,7 +199,8 @@ function getMubans() {
|
|||||||
lists: '.stui-content__playlist:eq(#id) li',
|
lists: '.stui-content__playlist:eq(#id) li',
|
||||||
},
|
},
|
||||||
搜索: 'ul.stui-vodlist__media,ul.stui-vodlist,#searchList li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&Text',
|
搜索: 'ul.stui-vodlist__media,ul.stui-vodlist,#searchList li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&Text',
|
||||||
}, 默认: {
|
},
|
||||||
|
默认: {
|
||||||
title: '',
|
title: '',
|
||||||
host: '',
|
host: '',
|
||||||
url: '',
|
url: '',
|
||||||
@@ -230,7 +234,8 @@ function getMubans() {
|
|||||||
list_url: 'a&&href',
|
list_url: 'a&&href',
|
||||||
},
|
},
|
||||||
搜索: '列表;标题;图片;描述;链接;详情',
|
搜索: '列表;标题;图片;描述;链接;详情',
|
||||||
}, vfed: {
|
},
|
||||||
|
vfed: {
|
||||||
title: '',
|
title: '',
|
||||||
host: '',
|
host: '',
|
||||||
url: '/index.php/vod/show/id/fyclass/page/fypage.html',
|
url: '/index.php/vod/show/id/fyclass/page/fypage.html',
|
||||||
@@ -257,7 +262,8 @@ function getMubans() {
|
|||||||
lists: '.fed-play-item:eq(#id)&&ul:eq(1)&&li',
|
lists: '.fed-play-item:eq(#id)&&ul:eq(1)&&li',
|
||||||
},
|
},
|
||||||
搜索: '.fed-deta-info;h1&&Text;.lazyload&&data-original;.fed-list-remarks&&Text;a&&href;.fed-deta-content&&Text',
|
搜索: '.fed-deta-info;h1&&Text;.lazyload&&data-original;.fed-list-remarks&&Text;a&&href;.fed-deta-content&&Text',
|
||||||
}, 海螺3: {
|
},
|
||||||
|
海螺3: {
|
||||||
title: '',
|
title: '',
|
||||||
host: '',
|
host: '',
|
||||||
searchUrl: '/v_search/**----------fypage---.html',
|
searchUrl: '/v_search/**----------fypage---.html',
|
||||||
@@ -287,7 +293,8 @@ function getMubans() {
|
|||||||
searchable: 2, //是否启用全局搜索,
|
searchable: 2, //是否启用全局搜索,
|
||||||
quickSearch: 0, //是否启用快速搜索,
|
quickSearch: 0, //是否启用快速搜索,
|
||||||
filterable: 0, //是否启用分类筛选,
|
filterable: 0, //是否启用分类筛选,
|
||||||
}, 海螺2: {
|
},
|
||||||
|
海螺2: {
|
||||||
title: '',
|
title: '',
|
||||||
host: '',
|
host: '',
|
||||||
searchUrl: '/index.php/vod/search/page/fypage/wd/**/',
|
searchUrl: '/index.php/vod/search/page/fypage/wd/**/',
|
||||||
@@ -315,7 +322,8 @@ function getMubans() {
|
|||||||
searchable: 2, //是否启用全局搜索,
|
searchable: 2, //是否启用全局搜索,
|
||||||
quickSearch: 0, //是否启用快速搜索,
|
quickSearch: 0, //是否启用快速搜索,
|
||||||
filterable: 0, //是否启用分类筛选,
|
filterable: 0, //是否启用分类筛选,
|
||||||
}, 短视: {
|
},
|
||||||
|
短视: {
|
||||||
title: '',
|
title: '',
|
||||||
host: '', // homeUrl:'/',
|
host: '', // homeUrl:'/',
|
||||||
url: '/channel/fyclass-fypage.html',
|
url: '/channel/fyclass-fypage.html',
|
||||||
@@ -343,7 +351,8 @@ function getMubans() {
|
|||||||
lists: '.player:eq(#id) li',
|
lists: '.player:eq(#id) li',
|
||||||
},
|
},
|
||||||
搜索: '.sr_lists&&ul&&li;h3&&Text;img&&data-src;.int&&p:eq(0)&&Text;a&&href',
|
搜索: '.sr_lists&&ul&&li;h3&&Text;img&&data-src;.int&&p:eq(0)&&Text;a&&href',
|
||||||
}, 短视2: {
|
},
|
||||||
|
短视2: {
|
||||||
title: '',
|
title: '',
|
||||||
host: '',
|
host: '',
|
||||||
class_name: '电影&电视剧&综艺&动漫',
|
class_name: '电影&电视剧&综艺&动漫',
|
||||||
@@ -351,7 +360,9 @@ function getMubans() {
|
|||||||
searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50',
|
searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50',
|
||||||
searchable: 2,
|
searchable: 2,
|
||||||
quickSearch: 0,
|
quickSearch: 0,
|
||||||
headers: {'User-Agent': 'MOBILE_UA'},
|
headers: {
|
||||||
|
'User-Agent': 'MOBILE_UA'
|
||||||
|
},
|
||||||
url: '/index.php/api/vod#type=fyclass&page=fypage',
|
url: '/index.php/api/vod#type=fyclass&page=fypage',
|
||||||
filterable: 0, //是否启用分类筛选,
|
filterable: 0, //是否启用分类筛选,
|
||||||
filter_url: '',
|
filter_url: '',
|
||||||
@@ -373,7 +384,8 @@ function getMubans() {
|
|||||||
lists: '.anthology-list-box:eq(#id) li',
|
lists: '.anthology-list-box:eq(#id) li',
|
||||||
},
|
},
|
||||||
搜索: 'json:list;name;pic;;id',
|
搜索: 'json:list;name;pic;;id',
|
||||||
}, 采集1: {
|
},
|
||||||
|
采集1: {
|
||||||
title: '',
|
title: '',
|
||||||
host: '',
|
host: '',
|
||||||
homeTid: '13',
|
homeTid: '13',
|
||||||
@@ -381,7 +393,9 @@ function getMubans() {
|
|||||||
detailUrl: '/api.php/provide/vod/?ac=detail&ids=fyid',
|
detailUrl: '/api.php/provide/vod/?ac=detail&ids=fyid',
|
||||||
searchUrl: '/api.php/provide/vod/?wd=**&pg=fypage',
|
searchUrl: '/api.php/provide/vod/?wd=**&pg=fypage',
|
||||||
url: '/api.php/provide/vod/?ac=detail&pg=fypage&t=fyclass',
|
url: '/api.php/provide/vod/?ac=detail&pg=fypage&t=fyclass',
|
||||||
headers: {'User-Agent': 'MOBILE_UA'},
|
headers: {
|
||||||
|
'User-Agent': 'MOBILE_UA'
|
||||||
|
},
|
||||||
timeout: 5000, // class_name: '电影&电视剧&综艺&动漫',
|
timeout: 5000, // class_name: '电影&电视剧&综艺&动漫',
|
||||||
// class_url: '1&2&3&4',
|
// class_url: '1&2&3&4',
|
||||||
// class_parse:'js:let html=request(input);input=JSON.parse(html).class;',
|
// class_parse:'js:let html=request(input);input=JSON.parse(html).class;',
|
||||||
@@ -409,4 +423,7 @@ function getMubans() {
|
|||||||
|
|
||||||
var mubanDict = getMubans();
|
var mubanDict = getMubans();
|
||||||
var muban = getMubans();
|
var muban = getMubans();
|
||||||
export default {muban, getMubans};
|
export default {
|
||||||
|
muban,
|
||||||
|
getMubans
|
||||||
|
};
|
||||||
+301
@@ -0,0 +1,301 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# by @嗷呜
|
||||||
|
import sys
|
||||||
|
from urllib.parse import urlparse
|
||||||
|
sys.path.append("..")
|
||||||
|
import re
|
||||||
|
import hashlib
|
||||||
|
import hmac
|
||||||
|
import random
|
||||||
|
import string
|
||||||
|
from Crypto.Util.Padding import unpad
|
||||||
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
|
from Crypto.PublicKey import RSA
|
||||||
|
from Crypto.Cipher import PKCS1_v1_5, AES
|
||||||
|
from base64 import b64encode, b64decode
|
||||||
|
import json
|
||||||
|
import time
|
||||||
|
from base.spider import Spider
|
||||||
|
|
||||||
|
|
||||||
|
class Spider(Spider):
|
||||||
|
|
||||||
|
def init(self, extend=""):
|
||||||
|
self.device = self.device_id()
|
||||||
|
self.host = self.gethost()
|
||||||
|
pass
|
||||||
|
|
||||||
|
def getName(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def isVideoFormat(self, url):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def manualVideoCheck(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def action(self, action):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def destroy(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def homeContent(self, filter):
|
||||||
|
result = {}
|
||||||
|
filters = {}
|
||||||
|
classes = []
|
||||||
|
bba = self.url()
|
||||||
|
data = self.fetch(f"{self.host}/api/v1/app/config?pack={bba[0]}&signature={bba[1]}", headers=self.header()).text
|
||||||
|
data1 = self.aes(data)
|
||||||
|
dy = {"class": "类型", "area": "地区", "lang": "语言", "year": "年份", "letter": "字母", "by": "排序",
|
||||||
|
"sort": "排序"}
|
||||||
|
data1['data']['movie_screen']['sort'].pop(0)
|
||||||
|
for item in data1['data']['movie_screen']['sort']:
|
||||||
|
item['n'] = item.pop('name')
|
||||||
|
item['v'] = item.pop('value')
|
||||||
|
for item in data1['data']['movie_screen']['filter']:
|
||||||
|
has_non_empty_field = False
|
||||||
|
classes.append({"type_name": item["name"], "type_id": str(item["id"])})
|
||||||
|
for key in dy:
|
||||||
|
if key in item and item[key]:
|
||||||
|
has_non_empty_field = True
|
||||||
|
break
|
||||||
|
if has_non_empty_field:
|
||||||
|
filters[str(item["id"])] = []
|
||||||
|
filters[str(item["id"])].append(
|
||||||
|
{"key": 'sort', "name": '排序', "value": data1['data']['movie_screen']['sort']})
|
||||||
|
for dkey in item:
|
||||||
|
if dkey in dy and item[dkey]:
|
||||||
|
item[dkey].pop(0)
|
||||||
|
value_array = [
|
||||||
|
{"n": value.strip(), "v": value.strip()}
|
||||||
|
for value in item[dkey]
|
||||||
|
if value.strip() != ""
|
||||||
|
]
|
||||||
|
filters[str(item["id"])].append(
|
||||||
|
{"key": dkey, "name": dy[dkey], "value": value_array}
|
||||||
|
)
|
||||||
|
result["class"] = classes
|
||||||
|
result["filters"] = filters
|
||||||
|
return result
|
||||||
|
|
||||||
|
def homeVideoContent(self):
|
||||||
|
bba = self.url()
|
||||||
|
url = f'{self.host}/api/v1/movie/index_recommend?pack={bba[0]}&signature={bba[1]}'
|
||||||
|
data = self.fetch(url, headers=self.header()).json()
|
||||||
|
videos = []
|
||||||
|
for item in data['data']:
|
||||||
|
if len(item['list']) > 0:
|
||||||
|
for it in item['list']:
|
||||||
|
try:
|
||||||
|
videos.append(self.voides(it))
|
||||||
|
except Exception as e:
|
||||||
|
continue
|
||||||
|
result = {"list": videos}
|
||||||
|
return result
|
||||||
|
|
||||||
|
def categoryContent(self, tid, pg, filter, extend):
|
||||||
|
body = {"type_id": tid, "sort": extend.get("sort", "by_default"), "class": extend.get("class", "类型"),
|
||||||
|
"area": extend.get("area", "地区"), "year": extend.get("year", "年份"), "page": str(pg),
|
||||||
|
"pageSize": "21"}
|
||||||
|
result = {}
|
||||||
|
list = []
|
||||||
|
bba = self.url(body)
|
||||||
|
url = f"{self.host}/api/v1/movie/screen/list?pack={bba[0]}&signature={bba[1]}"
|
||||||
|
data = self.fetch(url, headers=self.header()).json()['data']['list']
|
||||||
|
for item in data:
|
||||||
|
list.append(self.voides(item))
|
||||||
|
result["list"] = list
|
||||||
|
result["page"] = pg
|
||||||
|
result["pagecount"] = 9999
|
||||||
|
result["limit"] = 90
|
||||||
|
result["total"] = 999999
|
||||||
|
return result
|
||||||
|
|
||||||
|
def detailContent(self, ids):
|
||||||
|
body = {"id": ids[0]}
|
||||||
|
bba = self.url(body)
|
||||||
|
url = f'{self.host}/api/v1/movie/detail?pack={bba[0]}&signature={bba[1]}'
|
||||||
|
data = self.fetch(url, headers=self.header()).json()['data']
|
||||||
|
video = {'vod_name': data.get('name'), 'type_name': data.get('type_name'), 'vod_year': data.get('year'),
|
||||||
|
'vod_area': data.get('area'), 'vod_remarks': data.get('dynami'), 'vod_content': data.get('content')}
|
||||||
|
play = []
|
||||||
|
names = []
|
||||||
|
tasks = []
|
||||||
|
for itt in data["play_from"]:
|
||||||
|
name = itt["name"]
|
||||||
|
a = []
|
||||||
|
if len(itt["list"]) > 0:
|
||||||
|
names.append(name)
|
||||||
|
play.append(self.playeach(itt['list']))
|
||||||
|
else:
|
||||||
|
tasks.append({"movie_id": ids[0], "from_code": itt["code"]})
|
||||||
|
names.append(name)
|
||||||
|
if tasks:
|
||||||
|
with ThreadPoolExecutor(max_workers=len(tasks)) as executor:
|
||||||
|
results = executor.map(self.playlist, tasks)
|
||||||
|
for result in results:
|
||||||
|
if result:
|
||||||
|
play.append(result)
|
||||||
|
else:
|
||||||
|
play.append("")
|
||||||
|
video["vod_play_from"] = "$$$".join(names)
|
||||||
|
video["vod_play_url"] = "$$$".join(play)
|
||||||
|
result = {"list": [video]}
|
||||||
|
return result
|
||||||
|
|
||||||
|
def searchContent(self, key, quick, pg=1):
|
||||||
|
body = {"keyword": key, "sort": "", "type_id": "0", "page": str(pg), "pageSize": "10",
|
||||||
|
"res_type": "by_movie_name"}
|
||||||
|
bba = self.url(body)
|
||||||
|
url = f"{self.host}/api/v1/movie/search?pack={bba[0]}&signature={bba[1]}"
|
||||||
|
data = self.fetch(url, headers=self.header()).json()['data'].get('list')
|
||||||
|
videos = []
|
||||||
|
for it in data:
|
||||||
|
try:
|
||||||
|
videos.append(self.voides(it))
|
||||||
|
except Exception as e:
|
||||||
|
continue
|
||||||
|
result = {"list": videos, "page": pg}
|
||||||
|
return result
|
||||||
|
|
||||||
|
def playerContent(self, flag, id, vipFlags):
|
||||||
|
url = id
|
||||||
|
if not re.search(r"\.m3u8|\.mp4", url):
|
||||||
|
try:
|
||||||
|
data = json.loads(b64decode(id.encode('utf-8')).decode('utf-8'))
|
||||||
|
bba = self.url(data)
|
||||||
|
data2 = self.fetch(f"{self.host}/api/v1/movie_addr/parse_url?pack={bba[0]}&signature={bba[1]}",
|
||||||
|
headers=self.header()).json()['data']
|
||||||
|
url = data2.get('play_url') or data2.get('download_url')
|
||||||
|
except Exception as e:
|
||||||
|
pass
|
||||||
|
if re.search(r'\.jpg|\.png|\.jpeg', url):
|
||||||
|
url = self.Mproxy(url)
|
||||||
|
result = {}
|
||||||
|
result["parse"] = 0
|
||||||
|
result["url"] = url
|
||||||
|
result["header"] = {'user-agent': 'okhttp/4.9.2'}
|
||||||
|
return result
|
||||||
|
|
||||||
|
def localProxy(self, param):
|
||||||
|
return self.Mlocal(param)
|
||||||
|
|
||||||
|
def Mproxy(self, url):
|
||||||
|
return self.getProxyUrl() + "&url=" + b64encode(url.encode('utf-8')).decode('utf-8') + "&type=m3u8"
|
||||||
|
|
||||||
|
def Mlocal(self, param,header=None):
|
||||||
|
url = self.d64(param["url"])
|
||||||
|
ydata = self.fetch(url, headers=header, allow_redirects=False)
|
||||||
|
data = ydata.content.decode('utf-8')
|
||||||
|
if ydata.headers.get('Location'):
|
||||||
|
url = ydata.headers['Location']
|
||||||
|
data = self.fetch(url, headers=header).content.decode('utf-8')
|
||||||
|
parsed_url = urlparse(url)
|
||||||
|
durl = parsed_url.scheme + "://" + parsed_url.netloc
|
||||||
|
lines = data.strip().split('\n')
|
||||||
|
for index, string in enumerate(lines):
|
||||||
|
if '#EXT' not in string and 'http' not in string:
|
||||||
|
last_slash_index = string.rfind('/')
|
||||||
|
lpath = string[:last_slash_index + 1]
|
||||||
|
lines[index] = durl + ('' if lpath.startswith('/') else '/') + lpath
|
||||||
|
data = '\n'.join(lines)
|
||||||
|
return [200, "application/vnd.apple.mpegur", data]
|
||||||
|
|
||||||
|
def device_id(self):
|
||||||
|
characters = string.ascii_lowercase + string.digits
|
||||||
|
random_string = ''.join(random.choices(characters, k=32))
|
||||||
|
return random_string
|
||||||
|
|
||||||
|
def gethost(self):
|
||||||
|
try:
|
||||||
|
url = 'https://dns.alidns.com/dns-query'
|
||||||
|
headers = {
|
||||||
|
'User-Agent': 'okhttp/4.9.2',
|
||||||
|
'Accept': 'application/dns-message'
|
||||||
|
}
|
||||||
|
params = {
|
||||||
|
'dns': 'AAABAAABAAAAAAAACWJmbTExYXM5ZgdmdXFpeXVuAmNuAAAcAAE'
|
||||||
|
}
|
||||||
|
response = self.fetch(url, headers=headers, params=params)
|
||||||
|
host=self.parse_dns_name(response.content, 12)
|
||||||
|
return f"https://{host}"
|
||||||
|
except:
|
||||||
|
return "https://bfm11as9f.fuqiyun.cn"
|
||||||
|
|
||||||
|
def parse_dns_name(self, data, offset):
|
||||||
|
parts = []
|
||||||
|
while True:
|
||||||
|
length = data[offset]
|
||||||
|
if length == 0:
|
||||||
|
break
|
||||||
|
offset += 1
|
||||||
|
parts.append(data[offset:offset + length].decode('utf-8'))
|
||||||
|
offset += length
|
||||||
|
return '.'.join(parts)
|
||||||
|
|
||||||
|
def header(self):
|
||||||
|
headers = {
|
||||||
|
'User-Agent': 'Android',
|
||||||
|
'Accept': 'application/prs.55App.v2+json',
|
||||||
|
'timestamp': str(int(time.time())),
|
||||||
|
'x-client-setting': '{"pure-mode":0}',
|
||||||
|
'x-client-uuid': '{"device_id":' + self.device + '}, "type":1,"brand":"Redmi", "model":"M2012K10C", "system_version":30, "sdk_version":"3.1.0.7"}',
|
||||||
|
'x-client-version': '3096 '
|
||||||
|
}
|
||||||
|
return headers
|
||||||
|
|
||||||
|
def url(self, id=None):
|
||||||
|
if not id:
|
||||||
|
id = {}
|
||||||
|
id["timestamp"] = str(int(time.time()))
|
||||||
|
public_key = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA02F/kPg5A2NX4qZ5JSns+bjhVMCC6JbTiTKpbgNgiXU+Kkorg6Dj76gS68gB8llhbUKCXjIdygnHPrxVHWfzmzisq9P9awmXBkCk74Skglx2LKHa/mNz9ivg6YzQ5pQFUEWS0DfomGBXVtqvBlOXMCRxp69oWaMsnfjnBV+0J7vHbXzUIkqBLdXSNfM9Ag5qdRDrJC3CqB65EJ3ARWVzZTTcXSdMW9i3qzEZPawPNPe5yPYbMZIoXLcrqvEZnRK1oak67/ihf7iwPJqdc+68ZYEmmdqwunOvRdjq89fQMVelmqcRD9RYe08v+xDxG9Co9z7hcXGTsUquMxkh29uNawIDAQAB'
|
||||||
|
encrypted_text = json.dumps(id)
|
||||||
|
public_key = RSA.import_key(b64decode(public_key))
|
||||||
|
cipher = PKCS1_v1_5.new(public_key)
|
||||||
|
encrypted_message = cipher.encrypt(encrypted_text.encode('utf-8'))
|
||||||
|
encrypted_message_base64 = b64encode(encrypted_message).decode('utf-8')
|
||||||
|
result = encrypted_message_base64.replace('+', '-').replace('/', '_').replace('=', '')
|
||||||
|
key = '635a580fcb5dc6e60caa39c31a7bde48'
|
||||||
|
sign = hmac.new(key.encode(), result.encode(), hashlib.md5).hexdigest()
|
||||||
|
return result, sign
|
||||||
|
|
||||||
|
def playlist(self, body):
|
||||||
|
try:
|
||||||
|
bba = self.url(body)
|
||||||
|
url = f'{self.host}/api/v1/movie_addr/list?pack={bba[0]}&signature={bba[1]}'
|
||||||
|
data = self.fetch(url, headers=self.header()).json()['data']
|
||||||
|
return self.playeach(data)
|
||||||
|
except Exception:
|
||||||
|
return []
|
||||||
|
|
||||||
|
def playeach(self, data):
|
||||||
|
play_urls = []
|
||||||
|
for it in data:
|
||||||
|
if re.search(r"mp4|m3u8", it["play_url"]):
|
||||||
|
play_urls.append(f"{it['episode_name']}${it['play_url']}")
|
||||||
|
else:
|
||||||
|
vd={"from_code": it['from_code'], "play_url": it['play_url'], "episode_id": it['episode_id'], "type": "play"}
|
||||||
|
play_urls.append(
|
||||||
|
f"{it['episode_name']}${b64encode(json.dumps(vd).encode('utf-8')).decode('utf-8')}"
|
||||||
|
)
|
||||||
|
return '#'.join(play_urls)
|
||||||
|
|
||||||
|
def voides(self, item):
|
||||||
|
if item['name'] or item['title']:
|
||||||
|
voide = {
|
||||||
|
"vod_id": item.get('id') or item.get('click'),
|
||||||
|
'vod_name': item.get('name') or item.get('title'),
|
||||||
|
'vod_pic': item.get('cover') or item.get('image'),
|
||||||
|
'vod_year': item.get('year') or item.get('label'),
|
||||||
|
'vod_remarks': item.get('dynamic') or item.get('sub_title')
|
||||||
|
}
|
||||||
|
return voide
|
||||||
|
|
||||||
|
def aes(self, text):
|
||||||
|
text = text.replace('-', '+').replace('_', '/') + '=='
|
||||||
|
key = b"e6d5de5fcc51f53d"
|
||||||
|
iv = b"2f13eef7dfc6c613"
|
||||||
|
cipher = AES.new(key, AES.MODE_CBC, iv)
|
||||||
|
pt = unpad(cipher.decrypt(b64decode(text)), AES.block_size).decode("utf-8")
|
||||||
|
return json.loads(pt)
|
||||||
+279
@@ -0,0 +1,279 @@
|
|||||||
|
# coding=utf-8
|
||||||
|
# !/usr/bin/python
|
||||||
|
# by嗷呜(finally)
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
sys.path.append("..")
|
||||||
|
import re
|
||||||
|
import hashlib
|
||||||
|
import hmac
|
||||||
|
import random
|
||||||
|
import string
|
||||||
|
from Crypto.Util.Padding import unpad
|
||||||
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
|
from Crypto.PublicKey import RSA
|
||||||
|
from Crypto.Cipher import PKCS1_v1_5, AES
|
||||||
|
from base64 import b64encode, b64decode
|
||||||
|
import json
|
||||||
|
import time
|
||||||
|
from base.spider import Spider
|
||||||
|
|
||||||
|
class Spider(Spider):
|
||||||
|
|
||||||
|
def getName(self):
|
||||||
|
return "电影猎手"
|
||||||
|
|
||||||
|
def init(self, extend=""):
|
||||||
|
self.device = self.device_id()
|
||||||
|
self.host = self.gethost()
|
||||||
|
pass
|
||||||
|
|
||||||
|
def isVideoFormat(self, url):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def manualVideoCheck(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def action(self, action):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def destroy(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
t = str(int(time.time()))
|
||||||
|
|
||||||
|
def homeContent(self, filter):
|
||||||
|
result = {}
|
||||||
|
filters = {}
|
||||||
|
classes = []
|
||||||
|
bba = self.url()
|
||||||
|
data = self.fetch(f"{self.host}/api/v1/app/config?pack={bba[0]}&signature={bba[1]}", headers=self.header()).text
|
||||||
|
data1 = self.aes(data)
|
||||||
|
dy = {"class":"类型","area":"地区","lang":"语言","year":"年份","letter":"字母","by":"排序","sort":"排序"}
|
||||||
|
data1['data']['movie_screen']['sort'].pop(0)
|
||||||
|
for item in data1['data']['movie_screen']['sort']:
|
||||||
|
item['n'] = item.pop('name')
|
||||||
|
item['v'] = item.pop('value')
|
||||||
|
for item in data1['data']['movie_screen']['filter']:
|
||||||
|
has_non_empty_field = False
|
||||||
|
classes.append({"type_name": item["name"], "type_id": str(item["id"])})
|
||||||
|
for key in dy:
|
||||||
|
if key in item and item[key]:
|
||||||
|
has_non_empty_field = True
|
||||||
|
break
|
||||||
|
if has_non_empty_field:
|
||||||
|
filters[str(item["id"])] = []
|
||||||
|
filters[str(item["id"])].append(
|
||||||
|
{"key": 'sort', "name": '排序', "value": data1['data']['movie_screen']['sort']})
|
||||||
|
for dkey in item:
|
||||||
|
if dkey in dy and item[dkey]:
|
||||||
|
item[dkey].pop(0)
|
||||||
|
value_array = [
|
||||||
|
{"n": value.strip(), "v": value.strip()}
|
||||||
|
for value in item[dkey]
|
||||||
|
if value.strip() != ""
|
||||||
|
]
|
||||||
|
filters[str(item["id"])].append(
|
||||||
|
{"key": dkey, "name": dy[dkey], "value": value_array}
|
||||||
|
)
|
||||||
|
result["class"] = classes
|
||||||
|
result["filters"] = filters
|
||||||
|
return result
|
||||||
|
|
||||||
|
def homeVideoContent(self):
|
||||||
|
bba = self.url()
|
||||||
|
url = f'{self.host}/api/v1/movie/index_recommend?pack={bba[0]}&signature={bba[1]}'
|
||||||
|
data = self.fetch(url, headers=self.header()).json()
|
||||||
|
videos = []
|
||||||
|
for item in data['data']:
|
||||||
|
if len(item['list']) > 0:
|
||||||
|
for it in item['list']:
|
||||||
|
try:
|
||||||
|
videos.append(self.voides(it))
|
||||||
|
except Exception as e:
|
||||||
|
continue
|
||||||
|
result = {"list": videos}
|
||||||
|
return result
|
||||||
|
|
||||||
|
def categoryContent(self, tid, pg, filter, extend):
|
||||||
|
body = {"type_id": tid, "sort": extend.get("sort", "by_default"), "class": extend.get("class", "类型"),
|
||||||
|
"area": extend.get("area", "地区"), "year": extend.get("year", "年份"), "page": str(pg),
|
||||||
|
"pageSize": "21"}
|
||||||
|
result = {}
|
||||||
|
list = []
|
||||||
|
bba = self.url(body)
|
||||||
|
url = f"{self.host}/api/v1/movie/screen/list?pack={bba[0]}&signature={bba[1]}"
|
||||||
|
data = self.fetch(url, headers=self.header()).json()['data']['list']
|
||||||
|
for item in data:
|
||||||
|
list.append(self.voides(item))
|
||||||
|
result["list"] = list
|
||||||
|
result["page"] = pg
|
||||||
|
result["pagecount"] = 9999
|
||||||
|
result["limit"] = 90
|
||||||
|
result["total"] = 999999
|
||||||
|
return result
|
||||||
|
|
||||||
|
def detailContent(self, ids):
|
||||||
|
body = {"id": ids[0]}
|
||||||
|
bba = self.url(body)
|
||||||
|
url = f'{self.host}/api/v1/movie/detail?pack={bba[0]}&signature={bba[1]}'
|
||||||
|
data = self.fetch(url, headers=self.header()).json()['data']
|
||||||
|
video = {'vod_name': data.get('name'),'type_name': data.get('type_name'),'vod_year': data.get('year'),'vod_area': data.get('area'),'vod_remarks': data.get('dynami'),'vod_content': data.get('content')}
|
||||||
|
play = []
|
||||||
|
names = []
|
||||||
|
tasks = []
|
||||||
|
for itt in data["play_from"]:
|
||||||
|
name = itt["name"]
|
||||||
|
a = []
|
||||||
|
if len(itt["list"]) > 0:
|
||||||
|
names.append(name)
|
||||||
|
play.append(self.playeach(itt['list']))
|
||||||
|
else:
|
||||||
|
tasks.append({"movie_id": ids[0], "from_code": itt["code"]})
|
||||||
|
names.append(name)
|
||||||
|
if tasks:
|
||||||
|
with ThreadPoolExecutor(max_workers=len(tasks)) as executor:
|
||||||
|
results = executor.map(self.playlist, tasks)
|
||||||
|
for result in results:
|
||||||
|
if result:
|
||||||
|
play.append(result)
|
||||||
|
else:
|
||||||
|
play.append("")
|
||||||
|
video["vod_play_from"] = "$$$".join(names)
|
||||||
|
video["vod_play_url"] = "$$$".join(play)
|
||||||
|
result = {"list": [video]}
|
||||||
|
return result
|
||||||
|
|
||||||
|
def searchContent(self, key, quick, pg=1):
|
||||||
|
body = {"keyword": key, "sort": "", "type_id": "0", "page": str(pg), "pageSize": "10",
|
||||||
|
"res_type": "by_movie_name"}
|
||||||
|
bba = self.url(body)
|
||||||
|
url = f"{self.host}/api/v1/movie/search?pack={bba[0]}&signature={bba[1]}"
|
||||||
|
data = self.fetch(url, headers=self.header()).json()['data'].get('list')
|
||||||
|
videos = []
|
||||||
|
for it in data:
|
||||||
|
try:
|
||||||
|
videos.append(self.voides(it))
|
||||||
|
except Exception as e:
|
||||||
|
continue
|
||||||
|
result = {"list": videos, "page": pg}
|
||||||
|
return result
|
||||||
|
|
||||||
|
def playerContent(self, flag, id, vipFlags):
|
||||||
|
url = id
|
||||||
|
if "m3u8" not in url and "mp4" not in url:
|
||||||
|
try:
|
||||||
|
add = id.split('|||')
|
||||||
|
data = {"from_code": add[0], "play_url": add[1], "episode_id": add[2], "type": "play"}
|
||||||
|
bba = self.url(data)
|
||||||
|
data2 = self.fetch(f"{self.host}/api/v1/movie_addr/parse_url?pack={bba[0]}&signature={bba[1]}",
|
||||||
|
headers=self.header()).json()['data']
|
||||||
|
url = data2.get('play_url') or data2.get('download_url')
|
||||||
|
try:
|
||||||
|
url1 = self.fetch(url, headers=self.header(), allow_redirects=False).headers['Location']
|
||||||
|
if url1 and "http" in url1:
|
||||||
|
url = url1
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
except Exception as e:
|
||||||
|
pass
|
||||||
|
if '.jpg' in url or '.jpeg' in url or '.png' in url:
|
||||||
|
url = self.getProxyUrl() + "&url=" + b64encode(url.encode('utf-8')).decode('utf-8') + "&type=m3u8"
|
||||||
|
result = {}
|
||||||
|
result["parse"] = 0
|
||||||
|
result["url"] = url
|
||||||
|
result["header"] = {'user-agent': 'okhttp/4.9.2'}
|
||||||
|
return result
|
||||||
|
|
||||||
|
def localProxy(self, param):
|
||||||
|
url = b64decode(param["url"]).decode('utf-8')
|
||||||
|
durl = url[:url.rfind('/')]
|
||||||
|
data = self.fetch(url, headers=self.header()).content.decode("utf-8")
|
||||||
|
lines = data.strip().split('\n')
|
||||||
|
for index, string in enumerate(lines):
|
||||||
|
# if 'URI="' in string and 'http' not in string:
|
||||||
|
# lines[index] = index
|
||||||
|
# 暂时预留,貌似用不到
|
||||||
|
if '#EXT' not in string and 'http' not in string:
|
||||||
|
lines[index] = durl + ('' if string.startswith('/') else '/') + string
|
||||||
|
data = '\n'.join(lines)
|
||||||
|
return [200, "application/vnd.apple.mpegur", data]
|
||||||
|
|
||||||
|
def device_id(self):
|
||||||
|
characters = string.ascii_lowercase + string.digits
|
||||||
|
random_string = ''.join(random.choices(characters, k=32))
|
||||||
|
return random_string
|
||||||
|
|
||||||
|
def gethost(self):
|
||||||
|
headers = {
|
||||||
|
'User-Agent': 'okhttp/4.9.2',
|
||||||
|
'Connection': 'Keep-Alive',
|
||||||
|
}
|
||||||
|
response = self.fetch('https://app-site.ecoliving168.com/domain_v5.json', headers=headers).json()
|
||||||
|
url = response['api_service'].replace('/api/', '')
|
||||||
|
return url
|
||||||
|
|
||||||
|
def header(self):
|
||||||
|
headers = {
|
||||||
|
'User-Agent': 'Android',
|
||||||
|
'Accept': 'application/prs.55App.v2+json',
|
||||||
|
'timestamp': self.t,
|
||||||
|
'x-client-setting': '{"pure-mode":1}',
|
||||||
|
'x-client-uuid': '{"device_id":' + self.device + '}, "type":1,"brand":"Redmi", "model":"M2012K10C", "system_version":30, "sdk_version":"3.1.0.7"}',
|
||||||
|
'x-client-version': '3096 '
|
||||||
|
}
|
||||||
|
return headers
|
||||||
|
|
||||||
|
def url(self, id=None):
|
||||||
|
if not id:
|
||||||
|
id = {}
|
||||||
|
id["timestamp"] = self.t
|
||||||
|
public_key = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA02F/kPg5A2NX4qZ5JSns+bjhVMCC6JbTiTKpbgNgiXU+Kkorg6Dj76gS68gB8llhbUKCXjIdygnHPrxVHWfzmzisq9P9awmXBkCk74Skglx2LKHa/mNz9ivg6YzQ5pQFUEWS0DfomGBXVtqvBlOXMCRxp69oWaMsnfjnBV+0J7vHbXzUIkqBLdXSNfM9Ag5qdRDrJC3CqB65EJ3ARWVzZTTcXSdMW9i3qzEZPawPNPe5yPYbMZIoXLcrqvEZnRK1oak67/ihf7iwPJqdc+68ZYEmmdqwunOvRdjq89fQMVelmqcRD9RYe08v+xDxG9Co9z7hcXGTsUquMxkh29uNawIDAQAB'
|
||||||
|
encrypted_text = json.dumps(id)
|
||||||
|
public_key = RSA.import_key(b64decode(public_key))
|
||||||
|
cipher = PKCS1_v1_5.new(public_key)
|
||||||
|
encrypted_message = cipher.encrypt(encrypted_text.encode('utf-8'))
|
||||||
|
encrypted_message_base64 = b64encode(encrypted_message).decode('utf-8')
|
||||||
|
result = encrypted_message_base64.replace('+', '-').replace('/', '_').replace('=', '')
|
||||||
|
key = '635a580fcb5dc6e60caa39c31a7bde48'
|
||||||
|
sign = hmac.new(key.encode(), result.encode(), hashlib.md5).hexdigest()
|
||||||
|
return result, sign
|
||||||
|
|
||||||
|
def playlist(self, body):
|
||||||
|
try:
|
||||||
|
bba = self.url(body)
|
||||||
|
url = f'{self.host}/api/v1/movie_addr/list?pack={bba[0]}&signature={bba[1]}'
|
||||||
|
data = self.fetch(url, headers=self.header()).json()['data']
|
||||||
|
return self.playeach(data)
|
||||||
|
except Exception:
|
||||||
|
return []
|
||||||
|
|
||||||
|
def playeach(self,data):
|
||||||
|
play_urls = []
|
||||||
|
for it in data:
|
||||||
|
if re.search(r"mp4|m3u8", it["play_url"]):
|
||||||
|
play_urls.append(f"{it['episode_name']}${it['play_url']}")
|
||||||
|
else:
|
||||||
|
play_urls.append(
|
||||||
|
f"{it['episode_name']}${it['from_code']}|||{it['play_url']}|||{it['episode_id']}"
|
||||||
|
)
|
||||||
|
return '#'.join(play_urls)
|
||||||
|
|
||||||
|
def voides(self, item):
|
||||||
|
if item['name'] or item['title']:
|
||||||
|
voide = {
|
||||||
|
"vod_id": item.get('id') or item.get('click'),
|
||||||
|
'vod_name': item.get('name') or item.get('title'),
|
||||||
|
'vod_pic': item.get('cover') or item.get('image'),
|
||||||
|
'vod_year': item.get('year') or item.get('label'),
|
||||||
|
'vod_remarks': item.get('dynamic') or item.get('sub_title')
|
||||||
|
}
|
||||||
|
return voide
|
||||||
|
|
||||||
|
def aes(self, text):
|
||||||
|
text = text.replace('-', '+').replace('_', '/') + '=='
|
||||||
|
key = b"e6d5de5fcc51f53d"
|
||||||
|
iv = b"2f13eef7dfc6c613"
|
||||||
|
cipher = AES.new(key, AES.MODE_CBC, iv)
|
||||||
|
pt = unpad(cipher.decrypt(b64decode(text)), AES.block_size).decode("utf-8")
|
||||||
|
return json.loads(pt)
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# by @嗷呜
|
||||||
|
import sys
|
||||||
|
sys.path.append('..')
|
||||||
|
from base.spider import Spider
|
||||||
|
|
||||||
|
|
||||||
|
class Spider(Spider):
|
||||||
|
def getName(self):
|
||||||
|
return "mp"
|
||||||
|
|
||||||
|
def init(self, extend=""):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def isVideoFormat(self, url):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def manualVideoCheck(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def destroy(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
host = 'https://g.c494.com'
|
||||||
|
|
||||||
|
header = {
|
||||||
|
'User-Agent': 'Dart/2.10 (dart:io)',
|
||||||
|
'platform_version': 'RP1A.200720.011',
|
||||||
|
'version': '2.2.3',
|
||||||
|
'copyright': 'xiaogui',
|
||||||
|
'platform': 'android',
|
||||||
|
'client_name': '576O5p+P5b2x6KeG',
|
||||||
|
}
|
||||||
|
|
||||||
|
def homeContent(self, filter):
|
||||||
|
data = self.fetch(f'{self.host}/api.php/app/nav?token=', headers=self.header).json()
|
||||||
|
dy = {"class": "类型", "area": "地区", "lang": "语言", "year": "年份", "letter": "字母", "by": "排序",
|
||||||
|
"sort": "排序"}
|
||||||
|
filters = {}
|
||||||
|
classes = []
|
||||||
|
json_data = data["list"]
|
||||||
|
for item in json_data:
|
||||||
|
has_non_empty_field = False
|
||||||
|
jsontype_extend = item["type_extend"]
|
||||||
|
classes.append({"type_name": item["type_name"], "type_id": str(item["type_id"])})
|
||||||
|
for key in dy:
|
||||||
|
if key in jsontype_extend and jsontype_extend[key].strip() != "":
|
||||||
|
has_non_empty_field = True
|
||||||
|
break
|
||||||
|
if has_non_empty_field:
|
||||||
|
filters[str(item["type_id"])] = []
|
||||||
|
for dkey in jsontype_extend:
|
||||||
|
if dkey in dy and jsontype_extend[dkey].strip() != "":
|
||||||
|
values = jsontype_extend[dkey].split(",")
|
||||||
|
value_array = [{"n": value.strip(), "v": value.strip()} for value in values if
|
||||||
|
value.strip() != ""]
|
||||||
|
filters[str(item["type_id"])].append({"key": dkey, "name": dy[dkey], "value": value_array})
|
||||||
|
result = {}
|
||||||
|
result["class"] = classes
|
||||||
|
result["filters"] = filters
|
||||||
|
return result
|
||||||
|
|
||||||
|
def homeVideoContent(self):
|
||||||
|
rsp = self.fetch(f"{self.host}/api.php/app/index_video?token=", headers=self.header)
|
||||||
|
root = rsp.json()['list']
|
||||||
|
videos = [item for vodd in root for item in vodd['vlist']]
|
||||||
|
return {'list': videos}
|
||||||
|
|
||||||
|
def categoryContent(self, tid, pg, filter, extend):
|
||||||
|
parms = {"pg": pg, "tid": tid, "class": extend.get("class", ""), "area": extend.get("area", ""),
|
||||||
|
"lang": extend.get("lang", ""), "year": extend.get("year", ""), "token": ""}
|
||||||
|
data = self.fetch(f'{self.host}/api.php/app/video', params=parms, headers=self.header).json()
|
||||||
|
return data
|
||||||
|
|
||||||
|
def detailContent(self, ids):
|
||||||
|
parms = {"id": ids[0], "token": ""}
|
||||||
|
data = self.fetch(f'{self.host}/api.php/app/video_detail', params=parms, headers=self.header).json()
|
||||||
|
vod = data['data']
|
||||||
|
vod.pop('pause_advert_list', None)
|
||||||
|
vod.pop('init_advert_list', None)
|
||||||
|
vod.pop('vod_url_with_player', None)
|
||||||
|
return {"list": [vod]}
|
||||||
|
|
||||||
|
def searchContent(self, key, quick, pg='1'):
|
||||||
|
parms = {'pg': pg, 'text': key, 'token': ''}
|
||||||
|
data = self.fetch(f'{self.host}/api.php/app/search', params=parms, headers=self.header).json()
|
||||||
|
return data
|
||||||
|
|
||||||
|
def playerContent(self, flag, id, vipFlags):
|
||||||
|
return {"parse": 0, "url": id, "header": {'User-Agent': 'User-Agent: Lavf/58.12.100'}}
|
||||||
|
|
||||||
|
def localProxy(self, param):
|
||||||
|
pass
|
||||||
+1506
File diff suppressed because it is too large.
Load diff
+238
-233
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 4.0 KiB |
-224
@@ -1,224 +0,0 @@
|
|||||||
globalThis.h_ost = 'http://mitu.jiajiayoutian.top/';
|
|
||||||
var key = CryptoJS.enc.Base64.parse("ZDAzMmMxMjg3NmJjNjg0OA==");
|
|
||||||
var iv = CryptoJS.enc.Base64.parse("ZDAzMmMxMjg3NmJjNjg0OA==");
|
|
||||||
globalThis.AES_Decrypt = function(word) {
|
|
||||||
try {
|
|
||||||
var decrypt = CryptoJS.AES.decrypt(word, key, {
|
|
||||||
iv: iv,
|
|
||||||
mode: CryptoJS.mode.CBC,
|
|
||||||
padding: CryptoJS.pad.Pkcs7,
|
|
||||||
});
|
|
||||||
const decryptedText = decrypt.toString(CryptoJS.enc.Utf8);
|
|
||||||
if (!decryptedText) {
|
|
||||||
throw new Error("解密后的内容为空");
|
|
||||||
}
|
|
||||||
return decryptedText;
|
|
||||||
} catch (e) {
|
|
||||||
console.error("解密失败:", e);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
globalThis.AES_Encrypt = function(word) {
|
|
||||||
var encrypted = CryptoJS.AES.encrypt(word, key, {
|
|
||||||
iv: iv,
|
|
||||||
mode: CryptoJS.mode.CBC,
|
|
||||||
padding: CryptoJS.pad.Pkcs7
|
|
||||||
});
|
|
||||||
return encrypted.toString();
|
|
||||||
};
|
|
||||||
|
|
||||||
globalThis.vod1 = function(t, pg) {
|
|
||||||
let html1 = request(h_ost + 'api.php/getappapi.index/typeFilterVodList', {
|
|
||||||
body: {
|
|
||||||
area: '全部',
|
|
||||||
year: '全部',
|
|
||||||
type_id: t,
|
|
||||||
page: pg,
|
|
||||||
sort: '最新',
|
|
||||||
lang: '全部',
|
|
||||||
class: '全部'
|
|
||||||
},
|
|
||||||
headers: {
|
|
||||||
'User-Agent': 'okhttp/3.14.9',
|
|
||||||
'Content-Type': 'application/x-www-form-urlencoded'
|
|
||||||
},
|
|
||||||
'method': 'POST'
|
|
||||||
}, true);
|
|
||||||
let html = JSON.parse(html1);
|
|
||||||
return (AES_Decrypt(html.data));
|
|
||||||
}
|
|
||||||
globalThis.vodids = function(ids) {
|
|
||||||
let html1 = fetch(h_ost + 'api.php/getappapi.index/vodDetail', {
|
|
||||||
method: 'POST',
|
|
||||||
headers: {
|
|
||||||
'User-Agent': 'okhttp/3.14.9',
|
|
||||||
'Content-Type': 'application/x-www-form-urlencoded'
|
|
||||||
},
|
|
||||||
body: {
|
|
||||||
vod_id: ids,
|
|
||||||
}
|
|
||||||
});
|
|
||||||
let html = JSON.parse(html1);
|
|
||||||
const rdata = JSON.parse(AES_Decrypt(html.data));
|
|
||||||
console.log(rdata);
|
|
||||||
const data = {
|
|
||||||
vod_id: ids,
|
|
||||||
vod_name: rdata.vod.vod_name,
|
|
||||||
vod_remarks: rdata.vod.vod_remarks,
|
|
||||||
vod_actor: rdata.vod.vod_actor,
|
|
||||||
vod_director: rdata.vod.vod_director,
|
|
||||||
vod_content: rdata.vod.vod_content,
|
|
||||||
vod_play_from: '',
|
|
||||||
vod_play_url: ''
|
|
||||||
};
|
|
||||||
|
|
||||||
rdata.vod_play_list.forEach((value) => {
|
|
||||||
data.vod_play_from += value.player_info.show + '$$$';
|
|
||||||
value.urls.forEach((v) => {
|
|
||||||
data.vod_play_url += v.name + '$' + value.player_info.parse + '~' + v.url + '~' + rdata.vod.vod_name + '~' + v.name + '#';
|
|
||||||
});
|
|
||||||
data.vod_play_url += '$$$';
|
|
||||||
});
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
//搜索
|
|
||||||
globalThis.ssvod = function(wd) {
|
|
||||||
var html1 = fetch(h_ost + 'api.php/getappapi.index/searchList', {
|
|
||||||
method: 'POST',
|
|
||||||
headers: {
|
|
||||||
'User-Agent': 'okhttp/3.14.9',
|
|
||||||
'Content-Type': 'application/x-www-form-urlencoded'
|
|
||||||
},
|
|
||||||
body: {
|
|
||||||
keywords: wd,
|
|
||||||
typepage_id: 1,
|
|
||||||
}
|
|
||||||
});
|
|
||||||
let html = JSON.parse(html1);
|
|
||||||
return AES_Decrypt(html.data);
|
|
||||||
}
|
|
||||||
//解析
|
|
||||||
globalThis.jxx = function(id, url, name, juji) {
|
|
||||||
try {
|
|
||||||
if (id.includes('xmflv')) {
|
|
||||||
return {
|
|
||||||
parse: 1,
|
|
||||||
url: id + url,
|
|
||||||
jx: 0,
|
|
||||||
danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
|
|
||||||
};
|
|
||||||
}
|
|
||||||
//log(id);
|
|
||||||
if (url.includes('m3u8')) {
|
|
||||||
return {
|
|
||||||
parse: 0,
|
|
||||||
url: url,
|
|
||||||
jx: 1,
|
|
||||||
danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
|
|
||||||
};
|
|
||||||
}
|
|
||||||
if (id.includes('http')) {
|
|
||||||
let purl = JSON.parse(request(id + url)).url;
|
|
||||||
return {
|
|
||||||
parse: 0,
|
|
||||||
url: purl,
|
|
||||||
jx: 0,
|
|
||||||
danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
|
|
||||||
};
|
|
||||||
}
|
|
||||||
let html1 = request(h_ost + 'api.php/getappapi.index/vodParse', {
|
|
||||||
method: 'POST',
|
|
||||||
headers: {
|
|
||||||
'User-Agent': 'okhttp/3.14.9',
|
|
||||||
'Content-Type': 'application/x-www-form-urlencoded'
|
|
||||||
},
|
|
||||||
body: {
|
|
||||||
parse_api: id,
|
|
||||||
url: AES_Encrypt(url),
|
|
||||||
}
|
|
||||||
});
|
|
||||||
let html = AES_Decrypt(JSON.parse(html1).data);
|
|
||||||
console.log(html1);
|
|
||||||
let decry = html.replace(/\n/g, '').replace(/\\/g, '');
|
|
||||||
let matches = decry.match(/"url":"([^"]+)"/);
|
|
||||||
if (!matches || matches[1] === null) {
|
|
||||||
matches = decry.match(/"url": "([^"]+)"/);
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
parse: 0,
|
|
||||||
url: matches[1],
|
|
||||||
jx: 0,
|
|
||||||
danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
|
|
||||||
};
|
|
||||||
} catch {
|
|
||||||
return {
|
|
||||||
parse: 0,
|
|
||||||
url: '解析失败',
|
|
||||||
jx: 0
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var rule = {
|
|
||||||
title: '米兔[资]',
|
|
||||||
host: '',
|
|
||||||
detailUrl: 'fyid',
|
|
||||||
searchUrl: '**',
|
|
||||||
url: 'fyclass',
|
|
||||||
searchable: 2,
|
|
||||||
quickSearch: 1,
|
|
||||||
filterable: 0,
|
|
||||||
class_name: '电影&电视剧&综艺&动漫',
|
|
||||||
class_url: '1&2&3&4',
|
|
||||||
play_parse: true,
|
|
||||||
lazy: $js.toString(() => {
|
|
||||||
const parts = input.split('~');
|
|
||||||
input = jxx(parts[0], parts[1], parts[2], parts[3]);
|
|
||||||
}),
|
|
||||||
推荐: $js.toString(() => {
|
|
||||||
let data = vod1(0, 0);
|
|
||||||
let bata = JSON.parse(data).recommend_list;
|
|
||||||
bata.forEach(it => {
|
|
||||||
d.push({
|
|
||||||
url: it.vod_id,
|
|
||||||
title: it.vod_name,
|
|
||||||
img: it.vod_pic,
|
|
||||||
desc: it.vod_remarks
|
|
||||||
});
|
|
||||||
});
|
|
||||||
setResult(d);
|
|
||||||
}),
|
|
||||||
一级: $js.toString(() => {
|
|
||||||
let data = vod1(input, MY_PAGE);
|
|
||||||
let bata = JSON.parse(data).recommend_list;
|
|
||||||
bata.forEach(it => {
|
|
||||||
d.push({
|
|
||||||
url: it.vod_id,
|
|
||||||
title: it.vod_name,
|
|
||||||
img: it.vod_pic,
|
|
||||||
desc: it.vod_remarks
|
|
||||||
});
|
|
||||||
});
|
|
||||||
setResult(d);
|
|
||||||
}),
|
|
||||||
二级: $js.toString(() => {
|
|
||||||
console.log("调试信息2" + input);
|
|
||||||
let data = vodids(input);
|
|
||||||
//console.log(data);
|
|
||||||
VOD = data;
|
|
||||||
}),
|
|
||||||
搜索: $js.toString(() => {
|
|
||||||
let data = ssvod(input);
|
|
||||||
let bata = JSON.parse(data).search_list;
|
|
||||||
bata.forEach(it => {
|
|
||||||
d.push({
|
|
||||||
url: it.vod_id,
|
|
||||||
title: it.vod_name,
|
|
||||||
img: it.vod_pic,
|
|
||||||
desc: it.vod_remarks
|
|
||||||
});
|
|
||||||
});
|
|
||||||
// console.log(data);
|
|
||||||
setResult(d);
|
|
||||||
}),
|
|
||||||
}
|
|
||||||
-743
@@ -1,743 +0,0 @@
|
|||||||
// 地址发布页 https://subaibai.vip/
|
|
||||||
// 搜索数字验证
|
|
||||||
var rule = {
|
|
||||||
title: '素白白',
|
|
||||||
// host:'https://www.subaibaiys.com',
|
|
||||||
host: 'https://subaibai.vip',
|
|
||||||
hostJs: 'print(HOST);let html=request(HOST,{headers:{"User-Agent":PC_UA}});let src = jsp.pdfh(html,".go:eq(0)&&a&&href");print(src);HOST=src', //网页域名根动态抓取js代码。通过HOST=赋值
|
|
||||||
// url:'/fyclass/page/fypage',
|
|
||||||
url: '/fyclassfyfilter',
|
|
||||||
filterable: 1, //是否启用分类筛选,
|
|
||||||
filter_url: '{{fl.area}}{{fl.year}}{{fl.class}}{{fl.cateId}}/page/fypage',
|
|
||||||
filter: {
|
|
||||||
"movie_bt": [{
|
|
||||||
"key": "cateId",
|
|
||||||
"name": "分类",
|
|
||||||
"value": [{
|
|
||||||
"n": "全部",
|
|
||||||
"v": ""
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_series/dongmanju",
|
|
||||||
"n": "动漫剧"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_series/dongmandy",
|
|
||||||
"n": "动漫电影"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_series/yindudy",
|
|
||||||
"n": "印度电影"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_series/guochanju",
|
|
||||||
"n": "国产剧"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_series/guochandy",
|
|
||||||
"n": "国产电影"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_series/riju",
|
|
||||||
"n": "日剧"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_series/rihandy",
|
|
||||||
"n": "日韩电影"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_series/oumeiju",
|
|
||||||
"n": "欧美剧"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_series/oumeidy",
|
|
||||||
"n": "欧美电影"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_series/taiju",
|
|
||||||
"n": "泰剧"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_series/thaidy",
|
|
||||||
"n": "泰国电影"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_series/gangju",
|
|
||||||
"n": "港台剧"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_series/gangtaidy",
|
|
||||||
"n": "港台电影"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_series/documentary",
|
|
||||||
"n": "纪录片"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_series/zongyi",
|
|
||||||
"n": "综艺"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_series/hanju",
|
|
||||||
"n": "韩剧"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_series/xianggangdy",
|
|
||||||
"n": "香港经典电影"
|
|
||||||
}]
|
|
||||||
}, {
|
|
||||||
"key": "class",
|
|
||||||
"name": "类型",
|
|
||||||
"value": [{
|
|
||||||
"n": "全部",
|
|
||||||
"v": ""
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/pop-popular",
|
|
||||||
"n": "POP流行"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/biography",
|
|
||||||
"n": "传记"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/child",
|
|
||||||
"n": "儿童"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/adventure",
|
|
||||||
"n": "冒险"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/plot",
|
|
||||||
"n": "剧情"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/action",
|
|
||||||
"n": "动作"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/anime",
|
|
||||||
"n": "动漫"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/animation",
|
|
||||||
"n": "动画"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/history",
|
|
||||||
"n": "历史"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/costume",
|
|
||||||
"n": "古装"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/antiquity",
|
|
||||||
"n": "古风"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/homosexual",
|
|
||||||
"n": "同性"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/comedy",
|
|
||||||
"n": "喜剧"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/fantasy",
|
|
||||||
"n": "奇幻"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/family",
|
|
||||||
"n": "家庭"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/terror",
|
|
||||||
"n": "恐怖"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/suspense",
|
|
||||||
"n": "悬疑"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/erotic",
|
|
||||||
"n": "情色"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/thriller",
|
|
||||||
"n": "惊悚"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/drama",
|
|
||||||
"n": "戏曲"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/war",
|
|
||||||
"n": "战争"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/latin",
|
|
||||||
"n": "拉丁"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/funny",
|
|
||||||
"n": "搞笑"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/campus",
|
|
||||||
"n": "校园"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/song-and-dance",
|
|
||||||
"n": "歌舞"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/martial-arts",
|
|
||||||
"n": "武侠"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/disaster",
|
|
||||||
"n": "灾难"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/love",
|
|
||||||
"n": "爱情"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/crime",
|
|
||||||
"n": "犯罪"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/fancy",
|
|
||||||
"n": "玄幻"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/reality-show",
|
|
||||||
"n": "真人秀"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/short-film",
|
|
||||||
"n": "短片"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/kehuan",
|
|
||||||
"n": "科幻"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/documentary",
|
|
||||||
"n": "纪录片"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/talkshow",
|
|
||||||
"n": "脱口秀"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/stageart",
|
|
||||||
"n": "舞台艺术"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/west",
|
|
||||||
"n": "西部"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/sport",
|
|
||||||
"n": "运动"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/youth",
|
|
||||||
"n": "青春"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/music",
|
|
||||||
"n": "音乐"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/ghost",
|
|
||||||
"n": "鬼怪"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_tags/black-film",
|
|
||||||
"n": "黑色电影"
|
|
||||||
}]
|
|
||||||
}, {
|
|
||||||
"key": "area",
|
|
||||||
"name": "地区",
|
|
||||||
"value": [{
|
|
||||||
"n": "全部",
|
|
||||||
"v": ""
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/bhutan",
|
|
||||||
"n": "不丹"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/china",
|
|
||||||
"n": "中国"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/china-taiwan",
|
|
||||||
"n": "中国台湾"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/china-mainland",
|
|
||||||
"n": "中国大陆"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/china-hongkong",
|
|
||||||
"n": "中国香港"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/denmark",
|
|
||||||
"n": "丹麦"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/ukraine",
|
|
||||||
"n": "乌克兰"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/uruguay",
|
|
||||||
"n": "乌拉圭"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/israel",
|
|
||||||
"n": "以色列"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/iraq",
|
|
||||||
"n": "伊拉克"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/iran",
|
|
||||||
"n": "伊朗"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/russia",
|
|
||||||
"n": "俄罗斯"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/bulgaria",
|
|
||||||
"n": "保加利亚"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/croatia",
|
|
||||||
"n": "克罗地亚"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/iceland",
|
|
||||||
"n": "冰岛"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/canada",
|
|
||||||
"n": "加拿大"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/hungary",
|
|
||||||
"n": "匈牙利"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/south-africa",
|
|
||||||
"n": "南非"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/botswana",
|
|
||||||
"n": "博茨瓦纳"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/qatar",
|
|
||||||
"n": "卡塔尔"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/luxembourg",
|
|
||||||
"n": "卢森堡"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/india",
|
|
||||||
"n": "印度"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/indonesia",
|
|
||||||
"n": "印度尼西亚"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/kazakhstan",
|
|
||||||
"n": "哈萨克斯坦"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/colombia",
|
|
||||||
"n": "哥伦比亚"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/turkey",
|
|
||||||
"n": "土耳其"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/serbia",
|
|
||||||
"n": "塞尔维亚"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/cyprus",
|
|
||||||
"n": "塞浦路斯"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/mexico",
|
|
||||||
"n": "墨西哥"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/dominica",
|
|
||||||
"n": "多米尼加"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/austria",
|
|
||||||
"n": "奥地利"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/venezuela",
|
|
||||||
"n": "委内瑞拉"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/nigeria",
|
|
||||||
"n": "尼日利亚"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/巴基斯坦",
|
|
||||||
"n": "巴基斯坦"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/paraguay",
|
|
||||||
"n": "巴拉圭"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/brazil",
|
|
||||||
"n": "巴西"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/greece",
|
|
||||||
"n": "希腊"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/germany",
|
|
||||||
"n": "德国"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/italy",
|
|
||||||
"n": "意大利"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/latvia",
|
|
||||||
"n": "拉脱维亚"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/norway",
|
|
||||||
"n": "挪威"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/chech",
|
|
||||||
"n": "捷克"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/摩洛哥",
|
|
||||||
"n": "摩洛哥"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/斯洛伐克",
|
|
||||||
"n": "斯洛伐克"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/slovenia",
|
|
||||||
"n": "斯洛文尼亚"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/singapore",
|
|
||||||
"n": "新加坡"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/zealand",
|
|
||||||
"n": "新西兰"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/japan",
|
|
||||||
"n": "日本"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/chile",
|
|
||||||
"n": "智利"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/north-korea",
|
|
||||||
"n": "朝鲜"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/cambodia",
|
|
||||||
"n": "柬埔寨"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/georgia",
|
|
||||||
"n": "格鲁吉亚"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/belgium",
|
|
||||||
"n": "比利时"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/saudi-arabia",
|
|
||||||
"n": "沙特阿拉伯"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/france",
|
|
||||||
"n": "法国"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/poland",
|
|
||||||
"n": "波兰"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/puertorco",
|
|
||||||
"n": "波多黎各"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/bohei",
|
|
||||||
"n": "波黑"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/thailand",
|
|
||||||
"n": "泰国"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/australia",
|
|
||||||
"n": "澳大利亚"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/ireland",
|
|
||||||
"n": "爱尔兰"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/estonia",
|
|
||||||
"n": "爱沙尼亚"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/sweden",
|
|
||||||
"n": "瑞典"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/switzerland",
|
|
||||||
"n": "瑞士"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/belarus",
|
|
||||||
"n": "白俄罗斯"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/peru",
|
|
||||||
"n": "秘鲁"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/tunisia",
|
|
||||||
"n": "突尼斯"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/lithuania",
|
|
||||||
"n": "立陶宛"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/romania",
|
|
||||||
"n": "罗马尼亚"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/america",
|
|
||||||
"n": "美国"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/finland",
|
|
||||||
"n": "芬兰"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/sovietunion",
|
|
||||||
"n": "苏联"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/england",
|
|
||||||
"n": "英国"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/netherlands",
|
|
||||||
"n": "荷兰"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/philippines",
|
|
||||||
"n": "菲律宾"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/葡萄牙",
|
|
||||||
"n": "葡萄牙"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/west-germany",
|
|
||||||
"n": "西德"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/spain",
|
|
||||||
"n": "西班牙"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/vietnam",
|
|
||||||
"n": "越南"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/argentina",
|
|
||||||
"n": "阿根廷"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/korea",
|
|
||||||
"n": "韩国"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/malaysia",
|
|
||||||
"n": "马来西亚"
|
|
||||||
}, {
|
|
||||||
"v": "/movie_bt_cat/马耳他",
|
|
||||||
"n": "马耳他"
|
|
||||||
}]
|
|
||||||
}, {
|
|
||||||
"key": "year",
|
|
||||||
"name": "年份",
|
|
||||||
"value": [{
|
|
||||||
"n": "全部",
|
|
||||||
"v": ""
|
|
||||||
}, {
|
|
||||||
"v": "/year/2024",
|
|
||||||
"n": "2024"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2023",
|
|
||||||
"n": "2023"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2022",
|
|
||||||
"n": "2022"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2021",
|
|
||||||
"n": "2021"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2020",
|
|
||||||
"n": "2020"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2019",
|
|
||||||
"n": "2019"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2018",
|
|
||||||
"n": "2018"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2017",
|
|
||||||
"n": "2017"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2016",
|
|
||||||
"n": "2016"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2015",
|
|
||||||
"n": "2015"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2014",
|
|
||||||
"n": "2014"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2013",
|
|
||||||
"n": "2013"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2012",
|
|
||||||
"n": "2012"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2011",
|
|
||||||
"n": "2011"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2010",
|
|
||||||
"n": "2010"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2009",
|
|
||||||
"n": "2009"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2008",
|
|
||||||
"n": "2008"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2007",
|
|
||||||
"n": "2007"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2006",
|
|
||||||
"n": "2006"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2005",
|
|
||||||
"n": "2005"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2004",
|
|
||||||
"n": "2004"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2003",
|
|
||||||
"n": "2003"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2002",
|
|
||||||
"n": "2002"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2001",
|
|
||||||
"n": "2001"
|
|
||||||
}, {
|
|
||||||
"v": "/year/2000",
|
|
||||||
"n": "2000"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1999",
|
|
||||||
"n": "1999"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1998",
|
|
||||||
"n": "1998"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1997",
|
|
||||||
"n": "1997"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1996",
|
|
||||||
"n": "1996"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1995",
|
|
||||||
"n": "1995"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1994",
|
|
||||||
"n": "1994"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1993",
|
|
||||||
"n": "1993"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1992",
|
|
||||||
"n": "1992"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1991",
|
|
||||||
"n": "1991"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1990",
|
|
||||||
"n": "1990"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1989",
|
|
||||||
"n": "1989"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1988",
|
|
||||||
"n": "1988"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1987",
|
|
||||||
"n": "1987"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1986",
|
|
||||||
"n": "1986"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1985",
|
|
||||||
"n": "1985"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1984",
|
|
||||||
"n": "1984"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1983",
|
|
||||||
"n": "1983"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1982",
|
|
||||||
"n": "1982"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1981",
|
|
||||||
"n": "1981"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1980",
|
|
||||||
"n": "1980"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1979",
|
|
||||||
"n": "1979"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1978",
|
|
||||||
"n": "1978"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1977",
|
|
||||||
"n": "1977"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1976",
|
|
||||||
"n": "1976"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1975",
|
|
||||||
"n": "1975"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1974",
|
|
||||||
"n": "1974"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1973",
|
|
||||||
"n": "1973"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1972",
|
|
||||||
"n": "1972"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1971",
|
|
||||||
"n": "1971"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1970",
|
|
||||||
"n": "1970"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1969",
|
|
||||||
"n": "1969"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1968",
|
|
||||||
"n": "1968"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1967",
|
|
||||||
"n": "1967"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1966",
|
|
||||||
"n": "1966"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1965",
|
|
||||||
"n": "1965"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1964",
|
|
||||||
"n": "1964"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1963",
|
|
||||||
"n": "1963"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1962",
|
|
||||||
"n": "1962"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1960",
|
|
||||||
"n": "1960"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1959",
|
|
||||||
"n": "1959"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1954",
|
|
||||||
"n": "1954"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1952",
|
|
||||||
"n": "1952"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1950",
|
|
||||||
"n": "1950"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1949",
|
|
||||||
"n": "1949"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1948",
|
|
||||||
"n": "1948"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1940",
|
|
||||||
"n": "1940"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1939",
|
|
||||||
"n": "1939"
|
|
||||||
}, {
|
|
||||||
"v": "/year/1925",
|
|
||||||
"n": "1925"
|
|
||||||
}]
|
|
||||||
}]
|
|
||||||
},
|
|
||||||
// searchUrl:'/search?q=**',
|
|
||||||
searchUrl: '/search?q=**',
|
|
||||||
searchable: 2, //是否启用全局搜索,
|
|
||||||
quickSearch: 0, //是否启用快速搜索,
|
|
||||||
headers: {
|
|
||||||
'User-Agent': 'UC_UA',
|
|
||||||
},
|
|
||||||
class_parse: '.navlist&&li;a&&Text;a&&href;.*/([^/]+)',
|
|
||||||
play_parse: true,
|
|
||||||
// lazy:'',
|
|
||||||
lazy: `js:
|
|
||||||
pdfh = jsp.pdfh;
|
|
||||||
var html = request(input);
|
|
||||||
var ohtml = pdfh(html, '.videoplay&&Html');
|
|
||||||
var url = pdfh(ohtml, "body&&iframe&&src");
|
|
||||||
if (/Cloud/.test(url)) {
|
|
||||||
var ifrwy = request(url);
|
|
||||||
let code = ifrwy.match(/var url = '(.*?)'/)[1].split('').reverse().join('');
|
|
||||||
let temp = '';
|
|
||||||
for (let i = 0x0; i < code.length; i = i + 0x2) {
|
|
||||||
temp += String.fromCharCode(parseInt(code[i] + code[i + 0x1], 0x10))
|
|
||||||
}
|
|
||||||
input = {
|
|
||||||
jx: 0,
|
|
||||||
url: temp.substring(0x0, (temp.length - 0x7) / 0x2) + temp.substring((temp.length - 0x7) / 0x2 + 0x7),
|
|
||||||
parse: 0
|
|
||||||
}
|
|
||||||
} else if (/decrypted/.test(ohtml)) {
|
|
||||||
var phtml = pdfh(ohtml, "body&&script:not([src])&&Html");
|
|
||||||
eval(getCryptoJS());
|
|
||||||
var scrpt = phtml.match(/var.*?\\)\\);/g)[0];
|
|
||||||
var data = [];
|
|
||||||
eval(scrpt.replace(/md5/g, 'CryptoJS').replace('eval', 'data = '));
|
|
||||||
input = {
|
|
||||||
jx: 0,
|
|
||||||
url: data.match(/url:.*?[\\'\\"](.*?)[\\'\\"]/)[1],
|
|
||||||
parse: 0
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
input
|
|
||||||
}
|
|
||||||
`,
|
|
||||||
limit: 6,
|
|
||||||
推荐: '.leibox&&li;*;*;*;*',
|
|
||||||
// double:true, // 推荐内容是否双层定位
|
|
||||||
一级: '.mrb&&li;img&&alt;img&&data-original;.jidi&&Text;a&&href',
|
|
||||||
二级: {
|
|
||||||
"title": "h1&&Text;.moviedteail_list&&li:eq(0)&&Text",
|
|
||||||
"img": ".dyimg&&img&&src",
|
|
||||||
"desc": ".moviedteail_list&&li:eq(-1)&&Text;;;.moviedteail_list&&li:eq(7)&&Text;.moviedteail_list&&li:eq(5)&&Text",
|
|
||||||
"content": ".yp_context&&p&&Text",
|
|
||||||
"tabs": ".mi_paly_box .ypxingq_t--span",
|
|
||||||
"lists": ".paly_list_btn:eq(#id) a"
|
|
||||||
},
|
|
||||||
搜索: '.search_list&&li;img&&alt;img&&data-original;.nostag&&Text;a&&href',
|
|
||||||
}
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
var rule = {
|
|
||||||
title: '追剧迷',
|
|
||||||
模板: 'vfed',
|
|
||||||
host: 'https://www.zhuijumi.cc',
|
|
||||||
// url:'/videotype/fyclass-fypage.html',
|
|
||||||
url: '/mp4type/fyclass-fypage.html',
|
|
||||||
searchUrl: '/mp4search/-.html?wd=**',
|
|
||||||
class_parse: '.fed-part-tips li;a&&Text;a&&href;.*/(.*?).html',
|
|
||||||
cate_exclude: '更多|申请',
|
|
||||||
lazy: `js:
|
|
||||||
var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);
|
|
||||||
var url = html.url;
|
|
||||||
if (html.encrypt == '1') {
|
|
||||||
url = unescape(url)
|
|
||||||
} else if (html.encrypt == '2') {
|
|
||||||
url = unescape(base64Decode(url))
|
|
||||||
}
|
|
||||||
if (/\\.m3u8|\\.mp4/.test(url)) {
|
|
||||||
input = {
|
|
||||||
jx: 0,
|
|
||||||
url: url,
|
|
||||||
parse: 0
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
input
|
|
||||||
}
|
|
||||||
`,
|
|
||||||
二级: {
|
|
||||||
"title": "h1&&Text;.fed-col-xs6--span:eq(0)&&Text",
|
|
||||||
"img": ".fed-list-info&&a&&data-original",
|
|
||||||
"desc": ".fed-col-xs12.fed-part-eone:eq(3)&&Text;;;.fed-col-xs12.fed-part-eone--span:eq(0)&&Text;.fed-col-xs12.fed-part-eone--span:eq(1)&&Text",
|
|
||||||
"content": ".fed-conv-text:eq(0)&&Text",
|
|
||||||
"tabs": "ul.fed-padding&&li",
|
|
||||||
"lists": ".fed-tabs-btm:eq(#id) li"
|
|
||||||
},
|
|
||||||
搜索: '.fed-list-deta;h1&&Text;.fed-lazy&&data-original;.fed-list-remarks&&Text;a&&href;.fed-col-xs12.fed-part-eone:eq(2)&&Text',
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
"drives": [
|
|
||||||
{
|
|
||||||
"name": "七米藍",
|
|
||||||
"server": "https://al.chirmyram.com/dav",
|
|
||||||
"user": "alist",
|
|
||||||
"pass": "alist"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "影視庫",
|
|
||||||
"server": "https://esir.eu.org/dav",
|
|
||||||
"user": "alist",
|
|
||||||
"pass": "alist"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
{
|
|
||||||
"规则名": " 星辰影院",
|
|
||||||
"规则作者": "香雅情",
|
|
||||||
"请求头参数": "User-Agent$手机#Cookie$tcpvsd=1686288471101",
|
|
||||||
"网页编码格式": "UTF-8",
|
|
||||||
"图片是否需要代理": "0",
|
|
||||||
"是否开启获取首页数据": "是",
|
|
||||||
"首页推荐链接": "http://www.40yb.com",
|
|
||||||
"首页列表数组规则": "body&&.stui-vodlist:has(h4)",
|
|
||||||
"首页片单列表数组规则": "li",
|
|
||||||
"首页片单是否Jsoup写法": "1",
|
|
||||||
"分类起始页码": "1",
|
|
||||||
"分类链接": "http://www.40yb.com/{cateId}/index{catePg}.html[firstPage=http://www.40yb.com/{cateId}/index.html]",
|
|
||||||
"分类名称": "电影&电视剧&综艺&动漫",
|
|
||||||
"分类名称替换词": "dianying&dianshiju&zongyi&dongman",
|
|
||||||
"筛选数据": "ext",
|
|
||||||
"筛选子分类名称": "动作片&爱情片&科幻片&恐怖片&喜剧片&剧情片&在线直播||国产剧&港台剧&欧美剧&日韩剧",
|
|
||||||
"筛选子分类替换词": "dongzuopian&aiqingpian&kehuanpian&kongbupian&xijupian&juqingpian&zaixianzhibo||guochanju&tangtaiju&oumeiju&rihanju",
|
|
||||||
"筛选类型名称": "",
|
|
||||||
"筛选类型替换词": "*",
|
|
||||||
"筛选地区名称": "",
|
|
||||||
"筛选地区替换词": "*",
|
|
||||||
"筛选年份名称": "",
|
|
||||||
"筛选年份替换词": "*",
|
|
||||||
"筛选语言名称": "",
|
|
||||||
"筛选语言替换词": "*",
|
|
||||||
"筛选排序名称": "",
|
|
||||||
"筛选排序替换词": "",
|
|
||||||
"分类截取模式": "1",
|
|
||||||
"分类列表数组规则": ".stui-vodlist&&li",
|
|
||||||
"分类片单是否Jsoup写法": "1",
|
|
||||||
"分类片单标题": "h4&&a&&Text",
|
|
||||||
"分类片单链接": "h4&&a&&href",
|
|
||||||
"分类片单图片": ".lazyload&&data-original",
|
|
||||||
"分类片单副标题": ".pic-text&&Text",
|
|
||||||
"分类片单链接加前缀": "http://www.40yb.com",
|
|
||||||
"分类片单链接加后缀": "",
|
|
||||||
"搜索请求头参数": "User-Agent$手机#Cookie$tcpvsd=1686288471101",
|
|
||||||
"搜索链接": "http://www.40yb.com/search.php;post",
|
|
||||||
"POST请求数据": "searchword={wd}",
|
|
||||||
"搜索截取模式": "1",
|
|
||||||
"搜索列表数组规则": ".stui-vodlist__media&&li",
|
|
||||||
"搜索片单是否Jsoup写法": "1",
|
|
||||||
"搜索片单图片": ".lazyload&&data-original",
|
|
||||||
"搜索片单标题": "h3&&a&&Text",
|
|
||||||
"搜索片单链接": "h3&&a&&href",
|
|
||||||
"搜索片单副标题": ".pic-text&&Text",
|
|
||||||
"搜索片单链接加前缀": "http://www.40yb.com",
|
|
||||||
"搜索片单链接加后缀": "",
|
|
||||||
"链接是否直接播放": "0",
|
|
||||||
"直接播放链接加前缀": "",
|
|
||||||
"直接播放链接加后缀": "",
|
|
||||||
"直接播放直链视频请求头": "",
|
|
||||||
"详情是否Jsoup写法": "0",
|
|
||||||
"类型详情": "类型:</span>&&</a>",
|
|
||||||
"年代详情": "年份:</span>&&</a>",
|
|
||||||
"地区详情": "地区:</span>&&</a>",
|
|
||||||
"演员详情": "主演:</span>&&</p>",
|
|
||||||
"简介详情": "简介:</span>&&</p>",
|
|
||||||
"线路列表数组规则": "body&&#playlist",
|
|
||||||
"线路标题": "h3&&Text",
|
|
||||||
"播放列表数组规则": "body&&.stui-content__playlist",
|
|
||||||
"选集列表数组规则": "li",
|
|
||||||
"选集标题链接是否Jsoup写法": "1",
|
|
||||||
"选集标题": "a&&Text",
|
|
||||||
"选集链接": "a&&href",
|
|
||||||
"是否反转选集序列": "0",
|
|
||||||
"选集链接加前缀": "http://www.40yb.com",
|
|
||||||
"选集链接加后缀": "",
|
|
||||||
"分析MacPlayer": "0",
|
|
||||||
"是否开启手动嗅探": "0",
|
|
||||||
"手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos",
|
|
||||||
"手动嗅探视频链接过滤词": ".html#=http"
|
|
||||||
}
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
{
|
|
||||||
"规则名": "百思派电影网",
|
|
||||||
"请求头参数": "手机",
|
|
||||||
"网页编码格式": "UTF-8",
|
|
||||||
"图片是否需要代理": "0",
|
|
||||||
"是否开启获取首页数据": "1",
|
|
||||||
"首页推荐链接": "https://www.bestpipe.cn",
|
|
||||||
"首页列表数组规则": "body&&.stui-vodlist",
|
|
||||||
"首页片单列表数组规则": "li",
|
|
||||||
"首页片单是否Jsoup写法": "1",
|
|
||||||
"分类起始页码": "1",
|
|
||||||
"分类链接": "https://www.bestpipe.cn/vodshow/{cateId}-{area}-{by}-{class}-{lang}----{catePg}---{year}.html",
|
|
||||||
"分类名称": "电影&剧集&短剧&动漫&综艺",
|
|
||||||
"分类名称替换词": "20&21&24&22&23",
|
|
||||||
"筛选数据": "ext",
|
|
||||||
"筛选类型名称": "Netflix&剧情&科幻&动作&喜剧&爱情&冒险&儿童&歌舞&音乐&奇幻&动画&恐怖&惊悚&战争&传记&纪录&犯罪&悬疑&西部&灾难&古装&武侠&家庭&短片&校园&文艺&运动&青春&同性&励志&历史||Netflix&欧美&短剧&古装&武侠&励志&家庭&剧情&喜剧&战争&科幻&惊悚&恐怖&悬疑&犯罪&动作&冒险&历史&同性||古代&现代&穿越&玄幻&霸总&英雄救美&未婚妻&师姐&绝美&逆袭&美女&爱情&甜宠&虐恋&爽剧&搞笑&情感&动漫&萌宝&都市&言情&重生&乡村&神医&幻想&反转&复仇&修仙&古装&男频||Netflix&热血&科幻&美少女&魔幻&经典&励志&少儿&冒险&搞笑&推理&恋爱&治愈&幻想&校园&动物&机战&亲子&儿歌&运动&悬疑&怪物&战争&益智&青春&童话&竞技&动作&社会&友情&真人版&电影版&OVA版&TV版&新番动画&完结动画||Netflix&脱口秀&真人秀&选秀&八卦&访谈&情感&生活&晚会&搞笑&音乐&时尚&游戏&少儿&体育&纪实&科教&曲艺&歌舞&财经&汽车&播报&其他",
|
|
||||||
"筛选类型替换词": "*",
|
|
||||||
"筛选地区名称": "大陆&香港&台湾&美国&日本&韩国&英国&法国&德国&印度&泰国&丹麦&瑞典&巴西&加拿大&俄罗斯&意大利&比利时&爱尔兰&西班牙&澳大利亚&其它||大陆&香港&韩国&美国&日本&法国&英国&德国&台湾&泰国&印度&其他||大陆&香港&韩国&美国&日本&法国&英国&德国&台湾&泰国&印度&其他||大陆&日本&欧美&其他||大陆&韩国&香港&台湾&美国&其它",
|
|
||||||
"筛选地区替换词": "*",
|
|
||||||
"筛选语言名称": "英语&法语&国语&粤语&日语&韩语&泰语&德语&俄语&闽南语&丹麦语&波兰语&瑞典语&印地语&挪威语&意大利语&西班牙语||空||空||国语&英语&粤语&闽南语&韩语&日语&其它||国语&英语&粤语&闽南语&韩语&日语&其它",
|
|
||||||
"筛选语言替换词": "*",
|
|
||||||
"详情是否Jsoup写法": "是",
|
|
||||||
"类型详情": ".stui-content__detail&&.data,1&&Text!状态:",
|
|
||||||
"年代详情": ".stui-content__detail&&.data,4&&Text!年份:",
|
|
||||||
"地区详情": ".stui-content__detail&&.data,2&&Text!地区:",
|
|
||||||
"演员详情": ".stui-content__detail&&.data,6&&Text!主演:",
|
|
||||||
"简介详情": ".stui-content__detail&&.detail-content&&Text",
|
|
||||||
"分类截取模式": "1",
|
|
||||||
"分类列表数组规则": "body&&.stui-vodlist__box",
|
|
||||||
"分类片单是否Jsoup写法": "1",
|
|
||||||
"分类片单标题": "a&&title",
|
|
||||||
"分类片单链接": "a&&href",
|
|
||||||
"分类片单图片": ".stui-vodlist__thumb&&data-original",
|
|
||||||
"分类片单副标题": ".pic-text&&Text",
|
|
||||||
"分类片单链接加前缀": "https://www.bestpipe.cn",
|
|
||||||
"搜索请求头参数": "User-Agent$手机",
|
|
||||||
"搜索链接": "https://www.bestpipe.cn/vodsearch/{wd}----------1---.html",
|
|
||||||
"搜索截取模式": "1",
|
|
||||||
"搜索列表数组规则": "body&&.stui-vodlist__box",
|
|
||||||
"搜索片单是否Jsoup写法": "1",
|
|
||||||
"搜索片单标题": "a&&title",
|
|
||||||
"搜索片单链接": "a&&href",
|
|
||||||
"搜索片单图片": ".stui-vodlist__thumb&&data-original",
|
|
||||||
"搜索片单副标题": ".pic-text&&Text",
|
|
||||||
"搜索片单链接加前缀": "https://www.bestpipe.cn",
|
|
||||||
"线路列表数组规则": "body&&.nav-tabs&&a",
|
|
||||||
"线路标题": "Text",
|
|
||||||
"播放列表数组规则": "body&&.stui-content__playlist",
|
|
||||||
"选集列表数组规则": "a",
|
|
||||||
"选集标题链接是否Jsoup写法": "1",
|
|
||||||
"选集标题": "a&&Text",
|
|
||||||
"选集链接": "a&&href",
|
|
||||||
"是否反转选集序列": "0",
|
|
||||||
"选集链接加前缀": "https://www.bestpipe.cn",
|
|
||||||
"选集链接加后缀": "",
|
|
||||||
"分析MacPlayer": "2",
|
|
||||||
"是否开启手动嗅探": "0",
|
|
||||||
"手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos",
|
|
||||||
"手动嗅探视频链接过滤词": ".html#=http"
|
|
||||||
}
|
|
||||||
+50
-41
@@ -195,13 +195,6 @@
|
|||||||
"api": "./JS/drpy2.min.js",
|
"api": "./JS/drpy2.min.js",
|
||||||
"ext": "./JS/爱奇艺弹幕.js"
|
"ext": "./JS/爱奇艺弹幕.js"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "米兔弹幕",
|
|
||||||
"name": "米兔|弹幕",
|
|
||||||
"type": 3,
|
|
||||||
"api": "./JS/drpy2.min.js",
|
|
||||||
"ext": "./JS/米兔弹幕.js"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "追剧弹幕",
|
"key": "追剧弹幕",
|
||||||
"name": "追剧|弹幕",
|
"name": "追剧|弹幕",
|
||||||
@@ -723,6 +716,14 @@
|
|||||||
"playerType": 1,
|
"playerType": 1,
|
||||||
"ext": "jaHR0cDovLzExMS4xODAuMTk4LjQwOjExMTB8NDk0ODA4MDgwbGdneXNjb3w0OTQ4MDgwODBsZ2d5c2NvfDY2Ng=="
|
"ext": "jaHR0cDovLzExMS4xODAuMTk4LjQwOjExMTB8NDk0ODA4MDgwbGdneXNjb3w0OTQ4MDgwODBsZ2d5c2NvfDY2Ng=="
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "奇妙",
|
||||||
|
"name": "奇妙|APP",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_Xdai",
|
||||||
|
"playerType": 1,
|
||||||
|
"ext": "jaHR0cDovLzE1NC4xMi45MS4yMTE6NjY4fDEyMzQ1Njc4OUFCQ0RFRkd8MTIzNDU2Nzg5QUJDREVGR3wxMDY="
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "时常",
|
"key": "时常",
|
||||||
"name": "时常|APP",
|
"name": "时常|APP",
|
||||||
@@ -1085,26 +1086,6 @@
|
|||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"ext": "./XYQHiker/骚火影视.json"
|
"ext": "./XYQHiker/骚火影视.json"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "星辰影视",
|
|
||||||
"name": "星辰|影视",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_XYQHiker",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"ext": "./XYQHiker/星辰影视.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "百思派",
|
|
||||||
"name": "百思派|影视",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_XYQHiker",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"ext": "./XYQHiker/百思派.json"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "电影牛",
|
"key": "电影牛",
|
||||||
"name": "电影牛|影视",
|
"name": "电影牛|影视",
|
||||||
@@ -1115,13 +1096,6 @@
|
|||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"ext": "./XYQHiker/电影牛.json"
|
"ext": "./XYQHiker/电影牛.json"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "素白白",
|
|
||||||
"name": "素白白|影视",
|
|
||||||
"type": 3,
|
|
||||||
"api": "./JS/drpy2.min.js",
|
|
||||||
"ext": "./JS/素白白.js"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "剧圈圈",
|
"key": "剧圈圈",
|
||||||
"name": "剧圈圈|影视",
|
"name": "剧圈圈|影视",
|
||||||
@@ -1129,13 +1103,6 @@
|
|||||||
"api": "./JS/drpy2.min.js",
|
"api": "./JS/drpy2.min.js",
|
||||||
"ext": "./JS/剧圈圈.js"
|
"ext": "./JS/剧圈圈.js"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "追剧迷",
|
|
||||||
"name": "追剧迷|影视",
|
|
||||||
"type": 3,
|
|
||||||
"api": "./JS/drpy2.min.js",
|
|
||||||
"ext": "./JS/追剧迷.js"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "看了么",
|
"key": "看了么",
|
||||||
"name": "看了么|影视",
|
"name": "看了么|影视",
|
||||||
@@ -1886,6 +1853,19 @@
|
|||||||
"api": "csp_Living",
|
"api": "csp_Living",
|
||||||
"searchable": 1
|
"searchable": 1
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "急救教学",
|
||||||
|
"name": "急救|教学",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_FirstAid",
|
||||||
|
"searchable": 0,
|
||||||
|
"quickSearch": 0,
|
||||||
|
"changeable": 0,
|
||||||
|
"style": {
|
||||||
|
"type": "rect",
|
||||||
|
"ratio": 3.8
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "版本信息",
|
"key": "版本信息",
|
||||||
"name": "版本|信息",
|
"name": "版本|信息",
|
||||||
@@ -1913,6 +1893,35 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parses": [
|
"parses": [
|
||||||
|
{
|
||||||
|
"name": "夏夜",
|
||||||
|
"type": "1",
|
||||||
|
"url": "http://8.155.50.80/xiaye.php?url=",
|
||||||
|
"ext": {
|
||||||
|
"flag": [
|
||||||
|
"qq",
|
||||||
|
"腾讯",
|
||||||
|
"qiyi",
|
||||||
|
"爱奇艺",
|
||||||
|
"奇艺",
|
||||||
|
"youku",
|
||||||
|
"优酷",
|
||||||
|
"sohu",
|
||||||
|
"搜狐",
|
||||||
|
"letv",
|
||||||
|
"乐视",
|
||||||
|
"mgtv",
|
||||||
|
"芒果",
|
||||||
|
"tnmb",
|
||||||
|
"seven",
|
||||||
|
"bilibili",
|
||||||
|
"1905"
|
||||||
|
],
|
||||||
|
"header": {
|
||||||
|
"User-Agent": "okhttp/4.9.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "臻享",
|
"name": "臻享",
|
||||||
"type": "1",
|
"type": "1",
|
||||||
|
|||||||
Binary file not shown.
+35
-11
@@ -50,10 +50,10 @@
|
|||||||
"changeable": 1
|
"changeable": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "Wexpan123ziyuanGuard",
|
"key": "WexxzysGuard",
|
||||||
"name": "💓123┃4K💓",
|
"name": "💓校长┃4K💓",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_Wexpan123ziyuanGuard",
|
"api": "csp_WexxzysGuard",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"changeable": 1
|
"changeable": 1
|
||||||
},
|
},
|
||||||
@@ -138,14 +138,6 @@
|
|||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"changeable": 1
|
"changeable": 1
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "WexxzysGuard",
|
|
||||||
"name": "💓校长┃4K💓",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_WexxzysGuard",
|
|
||||||
"searchable": 1,
|
|
||||||
"changeable": 1
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "盘他",
|
"key": "盘他",
|
||||||
"name": "💓盘他┃4K💓",
|
"name": "💓盘他┃4K💓",
|
||||||
@@ -154,6 +146,14 @@
|
|||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"changeable": 1
|
"changeable": 1
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "Wexpan123ziyuanGuard",
|
||||||
|
"name": "💓123┃4K💓",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_Wexpan123ziyuanGuard",
|
||||||
|
"searchable": 1,
|
||||||
|
"changeable": 1
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "雷鲸",
|
"key": "雷鲸",
|
||||||
"name": "💓雷鲸┃4K💓",
|
"name": "💓雷鲸┃4K💓",
|
||||||
@@ -798,6 +798,30 @@
|
|||||||
"type": "list"
|
"type": "list"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "xunlei",
|
||||||
|
"name": "💓我的┃讯蕾💓",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_WexWoXunLeiPanGuard",
|
||||||
|
"searchable": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"timeout": 50,
|
||||||
|
"style": {
|
||||||
|
"type": "list"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "baidu",
|
||||||
|
"name": "💓我的┃百度💓",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_WexWoBaiduPanGuard",
|
||||||
|
"searchable": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"timeout": 50,
|
||||||
|
"style": {
|
||||||
|
"type": "list"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "push_agent",
|
"key": "push_agent",
|
||||||
"name": "推送",
|
"name": "推送",
|
||||||
|
|||||||
Binary file not shown.
+305
-441
File diff suppressed because it is too large.
Load diff
+1294
-1478
File diff suppressed because it is too large.
Load diff
+1669
-1711
File diff suppressed because it is too large.
Load diff
+339
-230
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user