Pending changes exported from your codespace

This commit is contained in:
xiaoliu 2024-09-25 02:11:59 +00:00
parent f0612690d9
commit 5dde1b0660
56 changed files with 17232 additions and 6811 deletions

@ -5,6 +5,10 @@
* 把本zip文件解壓縮到安卓設備的任意目錄 *
* 然後在播放器的點播接口設定中指定到解壓後目錄中的jsm.json *
****************************************************************
* 每次更新zip都可以覆蓋到同一個目錄覆蓋后無需重新掃碼就可以繼續使用網盤
* 可以使用影視的内部http服務器實現zip上傳和自動解壓方法用手機或PC打開http://播放器IP:9978/
* 然後點擊最後一個TAB(本地)然後創建一個新文件夾例如“tvbox”然後進入"tvbox",然後創建"js"和"lib"兩個子目錄,
* 然後點擊“上傳檔案”把本zip上傳到該目錄就會自動解壓。
================================================================
以下所有说明不看也可以正常使用本zip只是给动手能力强的有缘人更多定制化的可能性。默认设置就可以欣赏绝大部分网络资源只需要切换到“网盘及弹幕设置”这个视频源扫不同网盘的二维码即可。切换方法播放器首页点击左上角图标或文字找到“网盘及弹幕设置”点击

BIN
PG/pg.jar

Binary file not shown.

@ -1 +1 @@
6f961440f06f0d23d3a172dad1fa5733
7dec0ff48ae517111c680e3d23b6552d

Binary file not shown.

@ -1 +1 @@
6f961440f06f0d23d3a172dad1fa5733
7dec0ff48ae517111c680e3d23b6552d

@ -1,25 +1,640 @@
央视,#genre#
CCTV-1,http://183.185.222.245:8084/rtp/226.0.2.153:9136$1920x1080
CCTV-1,http://183.185.222.245:8085/rtp/226.0.2.153:9136$1920x1080
CCTV-1,http://101.27.106.176:8888/rtp/239.253.92.83:8012$1920x1080
CCTV-1,http://27.11.52.62:8005/rtp/225.0.4.74:7980$1920x1080
CCTV-1,http://171.120.20.181:8004/rtp/226.0.2.153:9136$1920x1080
CCTV-1,http://27.11.52.62:8003/rtp/225.0.4.74:7980$1920x1080
CCTV-1,http://60.7.56.33:4000/rtp/239.253.92.83:8012$1920x1080
CCTV-1,http://220.192.2.245:8004/rtp/225.0.4.74:7980$1920x1080
CCTV-1,http://27.11.49.234:8007/rtp/225.0.4.74:7980$1920x1080
CCTV-1,http://118.81.48.104:8084/rtp/226.0.2.153:9136$1920x1080
CCTV-1,http://118.81.48.104:8085/rtp/226.0.2.153:9136$1920x1080
CCTV-1,http://27.11.52.62:8001/rtp/225.0.4.74:7980$1920x1080
CCTV-1,http://183.184.181.5:8085/rtp/226.0.2.153:9136$1920x1080
CCTV-2,http://sweetown.fun:4000/rtp/239.3.1.60:8084$1920x1080
CCTV-2,http://60.178.151.155:4022/rtp/233.50.201.119:5140$1920x1080
CCTV-2,http://60.7.56.33:4000/rtp/239.253.92.190:6065$1920x1080
CCTV-2,http://114.252.229.100:8000/rtp/239.3.1.60:8084$1920x1080
CCTV-2,http://111.165.222.109:8000/rtp/225.1.1.133:5002$1920x1080
CCTV-2,http://221.198.182.240:8888/rtp/225.1.1.133:5002$1920x1080
CCTV-2,http://123.144.22.32:8005/rtp/225.0.4.132:7980$1920x1080
CCTV-2,http://60.178.151.155:4022/rtp/233.50.201.2:5140$720x576
CCTV-2,http://183.185.222.245:8085/rtp/226.0.2.19:8064$720x576
CCTV-2,http://183.185.222.245:8084/rtp/226.0.2.154:9144
CCTV-3,http://118.81.48.104:8083/rtp/226.0.2.208:9576$1920x1080
CCTV-3,http://111.165.222.109:8000/rtp/225.1.1.158:5002$1920x1080
CCTV-3,http://171.213.206.59:8000/rtp/239.93.1.11:2223$1920x1080
CCTV-3,http://123.144.22.32:8005/rtp/225.0.4.142:7980$1920x1080
CCTV-3,http://221.198.182.240:8888/rtp/225.1.1.158:5002$1920x1080
CCTV-3,http://60.178.151.155:4022/rtp/233.50.201.16:5140$720x576
CCTV-3,http://183.185.222.245:8084/rtp/226.0.2.208:9576
CCTV-3,http://183.185.222.245:8083/rtp/226.0.2.208:9576
CCTV-3,http://183.185.222.245:8085/rtp/226.0.2.208:9576
CCTV-3,http://118.81.48.104:8085/rtp/226.0.2.208:9576
CCTV-3,http://183.185.222.245:8084/rtp/226.0.2.20:8072
CCTV-3,http://183.185.222.245:8083/rtp/226.0.2.20:8072
CCTV-4,http://60.7.56.33:4000/rtp/239.253.93.192:6370$1920x1080
CCTV-4,http://114.252.229.100:8000/rtp/239.3.1.105:8092$1920x1080
CCTV-4,http://sweetown.fun:4000/rtp/239.3.1.105:8092$1920x1080
CCTV-4,http://60.178.151.155:4022/rtp/233.50.200.101:5140$1920x1080
CCTV-4,http://221.198.182.240:8888/rtp/225.1.1.150:5002$1920x1080
CCTV-4,http://60.178.151.155:4022/rtp/233.50.201.4:5140$720x576
CCTV-4,http://183.185.222.245:8084/rtp/226.0.2.156:9160
CCTV-4,http://183.185.222.245:8083/rtp/226.0.2.156:9160
CCTV-4,http://183.185.222.245:8085/rtp/226.0.2.156:9160
CCTV-4,http://118.81.48.104:8085/rtp/226.0.2.156:9160
CCTV-4,http://183.185.222.245:8084/rtp/226.0.2.21:8080
CCTV-4,http://183.185.222.245:8083/rtp/226.0.2.21:8080
CCTV-5,http://60.7.56.33:4000/rtp/239.253.92.181:6046$1920x1080
CCTV-5,http://111.165.222.109:8000/rtp/225.1.1.160:5002$1920x1080
CCTV-5,http://sweetown.fun:4000/rtp/239.3.1.173:8001$1920x1080
CCTV-5,http://123.144.22.32:8005/rtp/225.0.4.143:7980$1920x1080
CCTV-5,http://171.213.206.59:8000/rtp/239.93.42.37:5140$1920x1080
CCTV-5,http://221.198.182.240:8888/rtp/225.1.1.160:5002$1920x1080
CCTV-5,http://60.178.151.155:4022/rtp/233.50.201.17:5140$720x576
CCTV-5,http://118.81.48.104:8083/rtp/226.0.2.22:8088$720x576
CCTV-5,http://171.116.191.164:8084/rtp/226.0.2.22:8088$720x576
CCTV-5,http://183.185.222.245:8084/rtp/226.0.2.209:9584
CCTV-5,http://183.185.222.245:8083/rtp/226.0.2.209:9584
CCTV-5,http://183.185.222.245:8085/rtp/226.0.2.209:9584
CCTV-5,http://118.81.48.104:8085/rtp/226.0.2.209:9584
CCTV-5+,http://60.178.151.155:4022/rtp/233.50.201.220:5140$1920x1080
CCTV-5+,http://60.7.56.33:4000/rtp/239.253.92.82:8013$1920x1080
CCTV-5+,http://221.198.182.240:8888/rtp/225.1.1.121:5002$1920x1080
CCTV-5+,http://221.216.137.230:8012/rtp/239.3.1.130:8004$1920x1080
CCTV-5+,http://123.144.22.32:8005/rtp/225.0.4.73:7980$1920x1080
CCTV-5+,http://117.32.85.224:8014/rtp/239.111.205.13:5140$1920x1080
CCTV-5+,http://183.185.222.245:8084/rtp/226.0.2.168:9256
CCTV-5+,http://183.185.222.245:8083/rtp/226.0.2.168:9256
CCTV-5+,http://183.185.222.245:8085/rtp/226.0.2.168:9256
CCTV-5+,http://118.81.48.104:8085/rtp/226.0.2.168:9256
CCTV-5+,http://123.144.22.32:8005/rtp/225.0.4.73:7980
CCTV-5+,http://118.81.48.104:8083/rtp/226.0.2.168:9256
CCTV-6,http://60.7.56.33:4000/rtp/239.253.92.193:6058$1920x1080
CCTV-6,http://27.10.210.156:8004/rtp/225.0.4.144:7980$1920x1080
CCTV-6,http://221.198.182.240:8888/rtp/225.1.1.195:5002$1920x1080
CCTV-6,http://221.216.137.230:8012/rtp/239.3.1.174:8001$1920x1080
CCTV-6,http://123.144.22.32:8005/rtp/225.0.4.144:7980$1920x1080
CCTV-6,http://183.185.222.245:8084/rtp/226.0.2.210:9592
CCTV-6,http://183.185.222.245:8083/rtp/226.0.2.210:9592
CCTV-6,http://183.185.222.245:8085/rtp/226.0.2.210:9592
CCTV-6,http://118.81.48.104:8085/rtp/226.0.2.210:9592
CCTV-6,http://183.185.222.245:8084/rtp/226.0.2.23:8096
CCTV-6,http://183.185.222.245:8083/rtp/226.0.2.23:8096
CCTV-6,http://183.185.222.245:8085/rtp/226.0.2.23:8096
CCTV-6,http://118.81.48.104:8085/rtp/226.0.2.23:8096
CCTV-6,http://123.144.22.32:8005/rtp/225.0.4.144:7980
CCTV-7,http://60.178.151.155:4022/rtp/233.50.201.120:5140$1920x1080
CCTV-7,http://111.165.222.109:8000/rtp/225.1.1.138:5002$1920x1080
CCTV-7,http://sweetown.fun:4000/rtp/239.3.1.61:8104$1920x1080
CCTV-7,http://123.144.22.32:8005/rtp/225.0.4.127:7980$1920x1080
CCTV-7,http://221.198.182.240:8888/rtp/225.1.1.138:5002$1920x1080
CCTV-7,http://60.178.151.155:4022/rtp/233.50.201.7:5140$720x576
CCTV-7,http://183.185.222.245:8084/rtp/226.0.2.159:9184
CCTV-7,http://183.185.222.245:8083/rtp/226.0.2.159:9184
CCTV-7,http://183.185.222.245:8085/rtp/226.0.2.159:9184
CCTV-7,http://118.81.48.104:8085/rtp/226.0.2.159:9184
CCTV-7,http://183.185.222.245:8084/rtp/226.0.2.24:8104
CCTV-7,http://183.185.222.245:8083/rtp/226.0.2.24:8104
CCTV-7,http://183.185.222.245:8085/rtp/226.0.2.24:8104
CCTV-8,http://60.178.151.155:4022/rtp/233.50.201.199:5140$1920x1080
CCTV-8,http://111.165.222.109:8000/rtp/225.1.1.196:5002$1920x1080
CCTV-8,http://221.198.182.240:8888/rtp/225.1.1.196:5002$1920x1080
CCTV-8,http://171.213.206.59:8000/rtp/239.93.42.39:5140$1920x1080
CCTV-8,http://123.144.22.32:8005/rtp/225.0.4.137:7980$1920x1080
CCTV-8,http://60.178.151.155:4022/rtp/233.50.201.19:5140$720x576
CCTV-8,http://183.185.222.245:8084/rtp/226.0.2.211:9600
CCTV-8,http://183.185.222.245:8083/rtp/226.0.2.211:9600
CCTV-8,http://183.185.222.245:8085/rtp/226.0.2.211:9600
CCTV-8,http://118.81.48.104:8085/rtp/226.0.2.211:9600
CCTV-8,http://183.185.222.245:8084/rtp/226.0.2.25:8112
CCTV-8,http://183.185.222.245:8083/rtp/226.0.2.25:8112
CCTV-8,http://183.185.222.245:8085/rtp/226.0.2.25:8112
CCTV-9,http://60.178.151.155:4022/rtp/233.50.201.121:5140$1920x1080
CCTV-9,http://111.165.222.109:8000/rtp/225.1.1.119:5002$1920x1080
CCTV-9,http://sweetown.fun:4000/rtp/239.3.1.62:8112$1920x1080
CCTV-9,http://221.216.137.230:8012/rtp/239.3.1.62:8112$1920x1080
CCTV-9,http://221.198.182.240:8888/rtp/225.1.1.119:5002$1920x1080
CCTV-9,http://27.10.210.156:8004/rtp/225.0.4.131:7980$1920x1080
CCTV-9,http://171.213.206.59:8000/rtp/239.93.1.24:5140$1920x1080
CCTV-9,http://183.185.222.245:8084/rtp/226.0.2.161:9200
CCTV-9,http://183.185.222.245:8083/rtp/226.0.2.161:9200
CCTV-9,http://183.185.222.245:8085/rtp/226.0.2.161:9200
CCTV-9,http://118.81.48.104:8085/rtp/226.0.2.161:9200
CCTV-10,http://114.252.229.100:8000/rtp/239.3.1.63:8116$1920x1080
CCTV-10,http://60.178.151.155:4022/rtp/233.50.201.122:5140$1920x1080
CCTV-10,http://221.198.182.240:8888/rtp/225.1.1.140:5002$1920x1080
CCTV-10,http://123.144.22.32:8005/rtp/225.0.4.130:7980$1920x1080
CCTV-10,http://27.10.210.156:8004/rtp/225.0.4.130:7980$1920x1080
CCTV-10,http://171.116.191.164:8084/rtp/226.0.2.27:8128$720x576
CCTV-10,http://183.185.222.245:8084/rtp/226.0.2.162:9208
CCTV-10,http://183.185.222.245:8083/rtp/226.0.2.162:9208
CCTV-10,http://183.185.222.245:8085/rtp/226.0.2.162:9208
CCTV-10,http://118.81.48.104:8085/rtp/226.0.2.162:9208
CCTV-10,http://183.185.222.245:8084/rtp/226.0.2.27:8128
CCTV-10,http://183.185.222.245:8083/rtp/226.0.2.27:8128
CCTV-11,http://114.252.229.100:8000/rtp/239.3.1.152:8120$1920x1080
CCTV-11,http://111.165.222.109:8000/rtp/225.1.2.192:5002$1920x1080
CCTV-11,http://sweetown.fun:4000/rtp/239.3.1.152:8120$1920x1080
CCTV-11,http://221.198.182.240:8888/rtp/225.1.2.192:5002$1920x1080
CCTV-11,http://221.216.137.230:8012/rtp/239.3.1.152:8120$1920x1080
CCTV-11,http://60.178.151.155:4022/rtp/233.50.201.11:5140$720x576
CCTV-11,http://183.185.222.245:8084/rtp/226.0.2.28:8136
CCTV-11,http://183.185.222.245:8083/rtp/226.0.2.28:8136
CCTV-11,http://183.185.222.245:8085/rtp/226.0.2.28:8136
CCTV-11,http://118.81.48.104:8085/rtp/226.0.2.28:8136
CCTV-11,http://123.144.22.32:8005/rtp/225.0.4.218:7980
CCTV-11,http://118.81.48.104:8083/rtp/226.0.2.28:8136
CCTV-12,http://60.7.56.33:4000/rtp/239.253.92.197:6062$1920x1080
CCTV-12,http://114.252.229.100:8000/rtp/239.3.1.64:8124$1920x1080
CCTV-12,http://221.198.182.240:8888/rtp/225.1.1.142:5002$1920x1080
CCTV-12,http://27.11.49.234:8001/rtp/225.0.4.129:7980$1920x1080
CCTV-12,http://60.178.151.155:4022/rtp/233.50.201.12:5140$720x576
CCTV-12,http://183.185.222.245:8084/rtp/226.0.2.164:9224
CCTV-12,http://183.185.222.245:8083/rtp/226.0.2.164:9224
CCTV-12,http://183.185.222.245:8085/rtp/226.0.2.164:9224
CCTV-12,http://118.81.48.104:8085/rtp/226.0.2.164:9224
CCTV-12,http://183.185.222.245:8084/rtp/226.0.2.29:8144
CCTV-12,http://183.185.222.245:8083/rtp/226.0.2.29:8144
CCTV-12,http://183.185.222.245:8085/rtp/226.0.2.29:8144
CCTV-12,http://118.81.48.104:8085/rtp/226.0.2.29:8144
CCTV-13,http://sweetown.fun:4000/rtp/239.3.1.124:8128$1920x1080
CCTV-13,http://114.252.229.100:8000/rtp/239.3.1.124:8128$1920x1080
CCTV-13,http://60.178.151.155:4022/rtp/233.50.201.246:5140$1920x1080
CCTV-13,http://123.144.22.32:8005/rtp/225.0.4.219:7980$1920x1080
CCTV-13,http://171.213.206.59:8000/rtp/239.93.0.66:5140$1920x1080
CCTV-13,http://221.198.182.240:8888/rtp/225.1.2.193:5002$1920x1080
CCTV-13,http://60.178.151.155:4022/rtp/233.50.201.13:5140$720x576
CCTV-13,http://171.116.191.164:8084/rtp/226.0.2.30:8152$720x576
CCTV-13,http://183.185.222.245:8084/rtp/226.0.2.165:9232
CCTV-13,http://183.185.222.245:8083/rtp/226.0.2.165:9232
CCTV-13,http://183.185.222.245:8085/rtp/226.0.2.165:9232
CCTV-13,http://118.81.48.104:8085/rtp/226.0.2.165:9232
CCTV-14,http://60.178.151.155:4022/rtp/233.50.201.124:5140$1920x1080
CCTV-14,http://114.252.229.100:8000/rtp/239.3.1.65:8132$1920x1080
CCTV-14,http://27.10.210.156:8004/rtp/225.0.4.128:7980$1920x1080
CCTV-14,http://123.144.22.32:8005/rtp/225.0.4.128:7980$1920x1080
CCTV-14,http://221.198.182.240:8888/rtp/225.1.1.144:5002$1920x1080
CCTV-14,http://27.11.49.234:8001/rtp/225.0.4.128:7980$1920x1080
CCTV-14,http://60.178.151.155:4022/rtp/233.50.201.14:5140$720x576
CCTV-14,http://118.81.48.104:8083/rtp/226.0.2.31:8160$720x576
CCTV-14,http://183.185.222.245:8084/rtp/226.0.2.166:9240
CCTV-14,http://183.185.222.245:8083/rtp/226.0.2.166:9240
CCTV-14,http://183.185.222.245:8085/rtp/226.0.2.166:9240
CCTV-14,http://118.81.48.104:8085/rtp/226.0.2.166:9240
CCTV-14,http://183.185.222.245:8084/rtp/226.0.2.31:8160
CCTV-15,http://sweetown.fun:4000/rtp/239.3.1.153:8136$1920x1080
CCTV-15,http://111.165.222.109:8000/rtp/225.1.2.194:5002$1920x1080
CCTV-15,http://221.216.137.230:8012/rtp/239.3.1.153:8136$1920x1080
CCTV-15,http://221.198.182.240:8888/rtp/225.1.2.194:5002$1920x1080
CCTV-15,http://171.117.245.185:8084/rtp/226.0.2.32:8168$720x576
CCTV-15,http://60.178.151.155:4022/rtp/233.50.201.15:5140$720x576
CCTV-15,http://183.185.222.245:8084/rtp/226.0.2.32:8168
CCTV-15,http://183.185.222.245:8083/rtp/226.0.2.32:8168
CCTV-15,http://183.185.222.245:8085/rtp/226.0.2.32:8168
CCTV-15,http://118.81.48.104:8085/rtp/226.0.2.32:8168
CCTV-15,http://123.144.22.32:8005/rtp/225.0.4.220:7980
CCTV-15,http://118.81.48.104:8083/rtp/226.0.2.32:8168
CCTV-16,http://60.178.151.155:4022/rtp/233.50.201.192:5140$1920x1080
CCTV-16,http://221.198.182.240:8888/rtp/225.1.2.237:5002$1920x1080
CCTV-16,http://117.32.85.224:8014/rtp/239.111.205.134:5140$1920x1080
CCTV-16,http://221.216.137.230:8012/rtp/239.3.1.184:8001$1920x1080
CCTV-16,http://114.246.181.171:4022/rtp/239.3.1.184:8001$1920x1080
CCTV-16,http://183.185.222.245:8084/rtp/226.0.2.169:9264
CCTV-16,http://183.185.222.245:8083/rtp/226.0.2.169:9264
CCTV-16,http://183.185.222.245:8085/rtp/226.0.2.169:9264
CCTV-16,http://118.81.48.104:8085/rtp/226.0.2.169:9264
CCTV-16,http://118.81.48.104:8083/rtp/226.0.2.169:9264
CCTV-16,http://183.184.181.5:8085/rtp/226.0.2.169:9264
CCTV-16,http://114.252.229.100:8000/rtp/239.3.1.183:8001
CCTV-17,http://sweetown.fun:4000/rtp/239.3.1.151:8144$1920x1080
CCTV-17,http://221.198.182.240:8888/rtp/225.1.2.52:5002$1920x1080
CCTV-17,http://117.32.85.224:8014/rtp/239.112.205.211:5140$1920x1080
CCTV-17,http://171.213.206.59:8000/rtp/239.93.0.92:5140$1920x1080
CCTV-17,http://123.144.22.32:8005/rtp/225.0.4.179:7980$1920x1080
CCTV-17,http://60.178.151.155:4022/rtp/233.50.201.35:5140$720x576
CCTV-17,http://183.185.222.245:8084/rtp/226.0.2.170:9272
CCTV-17,http://183.185.222.245:8083/rtp/226.0.2.170:9272
CCTV-17,http://183.185.222.245:8085/rtp/226.0.2.170:9272
CCTV-17,http://118.81.48.104:8085/rtp/226.0.2.170:9272
CCTV-17,http://183.185.222.245:8084/rtp/226.0.2.207:9568
CCTV1,http://www.furymax.top:85/rtp/239.254.96.96:8550
CCTV2,http://1.195.111.251:11190/tsfile/live/0002_1.m3u8
CCTV3,http://1.195.111.251:11190/tsfile/live/0003_1.m3u8
CCTV4,http://1.195.111.251:11190/tsfile/live/0004_1.m3u8
CCTV5,http://1.195.111.251:11190/tsfile/live/0005_1.m3u8
CCTV6,http://1.195.111.251:11190/tsfile/live/0006_1.m3u8
CCTV7,http://1.195.111.251:11190/tsfile/live/0007_1.m3u8
CCTV8,http://1.195.111.251:11190/tsfile/live/0008_1.m3u8
CCTV9,http://1.195.111.251:11190/tsfile/live/0009_1.m3u8
CCTV10,http://1.195.111.251:11190/tsfile/live/0010_1.m3u8
CCTV11,http://1.195.111.251:11190/tsfile/live/0011_1.m3u8
CCTV12,http://1.195.111.251:11190/tsfile/live/0012_1.m3u8
CCTV13,http://1.195.111.251:11190/tsfile/live/0013_1.m3u8
CCTV14,http://1.195.111.251:11190/tsfile/live/0014_1.m3u8
CCTV15,http://1.195.111.251:11190/tsfile/live/0015_1.m3u8
CCTV10,http://1.195.111.251:11190/tsfile/live/0010_1.m3u8?%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7%E3%80%90%E6%99%B4%E5%9B%AD%E3%80%91%E6%95%B4%E7%90%86%E5%88%86%E4%BA%AB
CCTV11,http://1.195.111.251:11190/tsfile/live/0011_1.m3u8?
CCTV12,http://1.195.111.251:11190/tsfile/live/0012_1.m3u8?%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7%E3%80%90%E6%99%B4%E5%9B%AD%E3%80%91%E6%95%B4%E7%90%86%E5%88%86%E4%BA%AB
卫视,#genre#
广东卫视,http://sweetown.fun:4000/rtp/239.3.1.142:8048$1920x1080
广东卫视,http://111.165.222.109:8000/rtp/225.1.1.116:5002$1920x1080
广东卫视,http://27.11.49.234:8001/rtp/225.0.4.84:7980$1920x1080
广东卫视,http://221.198.182.240:8888/rtp/225.1.1.116:5002$1920x1080
广东卫视,http://60.178.151.155:4022/rtp/233.50.201.56:5140$720x576
广东卫视,http://183.185.222.245:8084/rtp/226.0.2.146:9080
广东卫视,http://183.185.222.245:8083/rtp/226.0.2.146:9080
广东卫视,http://183.185.222.245:8085/rtp/226.0.2.146:9080
广东卫视,http://118.81.48.104:8085/rtp/226.0.2.146:9080
广东卫视,http://183.185.222.245:8084/rtp/226.0.2.45:8272
广东卫视,http://183.185.222.245:8083/rtp/226.0.2.45:8272
浙江卫视,http://221.198.182.240:8888/rtp/225.1.1.112:5002$1920x1080
浙江卫视,http://60.178.151.155:4022/rtp/233.50.200.231:5140$1920x1080
浙江卫视,http://114.252.229.100:8000/rtp/239.3.1.137:8036$1920x1080
浙江卫视,http://sweetown.fun:4000/rtp/239.3.1.137:8036$1920x1080
浙江卫视,http://111.165.222.109:8000/rtp/225.1.1.112:5002$1920x1080
浙江卫视,http://27.10.210.156:8004/rtp/225.0.4.81:7980$1920x1080
浙江卫视,http://123.144.22.32:8005/rtp/225.0.4.81:7980$1920x1080
浙江卫视,http://183.185.222.245:8084/rtp/226.0.2.144:9064
浙江卫视,http://183.185.222.245:8083/rtp/226.0.2.144:9064
浙江卫视,http://183.185.222.245:8085/rtp/226.0.2.144:9064
浙江卫视,http://118.81.48.104:8085/rtp/226.0.2.144:9064
浙江卫视,http://183.185.222.245:8084/rtp/226.0.2.36:8200
浙江卫视,http://183.185.222.245:8083/rtp/226.0.2.36:8200
浙江卫视,http://183.185.222.245:8085/rtp/226.0.2.36:8200
湖南卫视,http://120.10.101.13:4000/rtp/239.253.92.84:8015$1920x1080
湖南卫视,http://60.178.151.155:4022/rtp/233.50.201.103:5140$1920x1080
湖南卫视,http://221.198.182.240:8888/rtp/225.1.1.114:5002$1920x1080
湖南卫视,http://171.213.206.59:8000/rtp/239.93.0.88:5140$1920x1080
湖南卫视,http://27.11.49.234:8001/rtp/225.0.4.75:7980$1920x1080
湖南卫视,http://123.144.22.32:8005/rtp/225.0.4.75:7980$1920x1080
湖南卫视,http://60.178.151.155:4022/rtp/233.50.201.52:5140$720x576
湖南卫视,http://171.116.191.164:8084/rtp/226.0.2.33:8176$720x576
湖南卫视,http://183.185.222.245:8084/rtp/226.0.2.143:9056
湖南卫视,http://183.185.222.245:8083/rtp/226.0.2.143:9056
湖南卫视,http://183.185.222.245:8085/rtp/226.0.2.143:9056
湖南卫视,http://118.81.48.104:8085/rtp/226.0.2.143:9056
湖南卫视,http://183.185.222.245:8084/rtp/226.0.2.33:8176
北京卫视,http://111.165.222.109:8000/rtp/225.1.1.113:5002$1920x1080
北京卫视,http://221.198.182.240:8888/rtp/225.1.1.113:5002$1920x1080
北京卫视,http://27.10.210.156:8004/rtp/225.0.4.78:7980$1920x1080
北京卫视,http://60.178.151.155:4022/rtp/233.50.201.40:5140$720x576
北京卫视,http://183.185.222.245:8084/rtp/226.0.2.177:9328
北京卫视,http://183.185.222.245:8083/rtp/226.0.2.177:9328
北京卫视,http://183.185.222.245:8085/rtp/226.0.2.177:9328
北京卫视,http://118.81.48.104:8085/rtp/226.0.2.177:9328
北京卫视,http://183.185.222.245:8084/rtp/226.0.2.39:8224
北京卫视,http://183.185.222.245:8083/rtp/226.0.2.39:8224
北京卫视,http://183.185.222.245:8085/rtp/226.0.2.39:8224
湖北卫视,http://60.178.151.155:4022/rtp/233.50.201.114:5140$1920x1080
湖北卫视,http://111.165.222.109:8000/rtp/225.1.1.147:5002$1920x1080
湖北卫视,http://221.198.182.240:8888/rtp/225.1.1.147:5002$1920x1080
湖北卫视,http://sweetown.fun:4000/rtp/239.3.1.138:8044$1920x1080
湖北卫视,http://171.213.206.59:8000/rtp/239.93.0.250:5140$1920x1080
湖北卫视,http://171.116.191.164:8084/rtp/226.0.2.49:8304$720x576
湖北卫视,http://118.81.48.104:8083/rtp/226.0.2.49:8304$720x576
湖北卫视,http://183.185.222.245:8085/rtp/226.0.2.49:8304$720x576
湖北卫视,http://183.185.222.245:8084/rtp/226.0.2.150:9112
湖北卫视,http://183.185.222.245:8083/rtp/226.0.2.150:9112
湖北卫视,http://183.185.222.245:8085/rtp/226.0.2.150:9112
湖北卫视,http://118.81.48.104:8085/rtp/226.0.2.150:9112
黑龙江卫视,http://111.165.222.109:8000/rtp/225.1.1.115:5002$1920x1080
黑龙江卫视,http://60.178.151.155:4022/rtp/233.50.201.115:5140$1920x1080
黑龙江卫视,http://221.198.182.240:8888/rtp/225.1.1.115:5002$1920x1080
黑龙江卫视,http://171.213.206.59:8000/rtp/239.93.0.183:5140$1920x1080
黑龙江卫视,http://60.178.151.155:4022/rtp/233.50.201.42:5140$720x576
黑龙江卫视,http://183.185.222.245:8084/rtp/226.0.2.151:9120
黑龙江卫视,http://183.185.222.245:8083/rtp/226.0.2.151:9120
黑龙江卫视,http://183.185.222.245:8085/rtp/226.0.2.151:9120
黑龙江卫视,http://118.81.48.104:8085/rtp/226.0.2.151:9120
黑龙江卫视,http://183.185.222.245:8084/rtp/226.0.2.48:8296
黑龙江卫视,http://183.185.222.245:8083/rtp/226.0.2.48:8296
黑龙江卫视,http://183.185.222.245:8085/rtp/226.0.2.48:8296
安徽卫视,http://60.178.151.155:4022/rtp/233.50.201.113:5140$1920x1080
安徽卫视,http://114.252.229.100:8000/rtp/239.3.1.211:8064$1920x1080
安徽卫视,http://111.165.222.109:8000/rtp/225.1.1.127:5002$1920x1080
安徽卫视,http://27.11.49.234:8001/rtp/225.0.4.133:7980$1920x1080
安徽卫视,http://221.198.182.240:8888/rtp/225.1.1.127:5002$1920x1080
安徽卫视,http://27.10.210.156:8004/rtp/225.0.4.133:7980$1920x1080
安徽卫视,http://123.144.22.32:8005/rtp/225.0.4.133:7980$1920x1080
安徽卫视,http://60.178.151.155:4022/rtp/233.50.201.62:5140$720x576
安徽卫视,http://183.185.222.245:8084/rtp/226.0.2.145:9072
安徽卫视,http://183.185.222.245:8083/rtp/226.0.2.145:9072
安徽卫视,http://183.185.222.245:8085/rtp/226.0.2.145:9072
安徽卫视,http://118.81.48.104:8085/rtp/226.0.2.145:9072
重庆卫视,http://114.252.229.100:8000/rtp/239.3.1.122:8160$1920x1080
重庆卫视,http://221.198.182.240:8888/rtp/225.1.1.155:5002$1920x1080
重庆卫视,http://27.11.49.234:8001/rtp/225.0.4.187:7980$1920x1080
重庆卫视,http://111.165.222.109:8000/rtp/225.1.1.155:5002$1920x1080
重庆卫视,http://171.213.206.59:8000/rtp/239.93.1.107:5140$1920x1080
重庆卫视,http://171.116.191.164:8084/rtp/226.0.2.174:9304$1920x1080
重庆卫视,http://60.178.151.155:4022/rtp/233.50.201.66:5140$720x576
重庆卫视,http://171.116.191.164:8084/rtp/226.0.2.50:8312$720x576
重庆卫视,http://183.185.222.245:8084/rtp/226.0.2.174:9304
重庆卫视,http://183.185.222.245:8083/rtp/226.0.2.174:9304
重庆卫视,http://183.185.222.245:8085/rtp/226.0.2.174:9304
重庆卫视,http://118.81.48.104:8085/rtp/226.0.2.174:9304
东方卫视,http://27.11.49.234:8001/rtp/225.0.4.80:7980$1920x1080
东方卫视,http://221.198.182.240:8888/rtp/225.1.2.31:5002$1920x1080
东方卫视,http://111.165.222.109:8000/rtp/225.1.2.31:5002$1920x1080
东方卫视,http://60.178.151.155:4022/rtp/233.50.201.68:5140$720x576
东方卫视,http://171.116.191.164:8084/rtp/226.0.2.34:8184$720x576
东方卫视,http://183.185.222.245:8084/rtp/226.0.2.175:9312
东方卫视,http://183.185.222.245:8083/rtp/226.0.2.175:9312
东方卫视,http://183.185.222.245:8085/rtp/226.0.2.175:9312
东方卫视,http://118.81.48.104:8085/rtp/226.0.2.175:9312
东方卫视,http://183.185.222.245:8084/rtp/226.0.2.34:8184
东方卫视,http://183.185.222.245:8083/rtp/226.0.2.34:8184
东方卫视,http://183.185.222.245:8085/rtp/226.0.2.34:8184
东方卫视,http://118.81.48.104:8085/rtp/226.0.2.34:8184
东南卫视,http://60.7.56.33:4000/rtp/239.253.92.201:6146$1920x1080
东南卫视,http://114.252.229.100:8000/rtp/239.3.1.156:8148$1920x1080
东南卫视,http://sweetown.fun:4000/rtp/239.3.1.156:8148$1920x1080
东南卫视,http://60.178.151.155:4022/rtp/233.50.201.58:5140$720x576
东南卫视,http://183.185.222.245:8085/rtp/226.0.2.40:8232$720x576
东南卫视,http://183.185.222.245:8084/rtp/226.0.2.40:8232
东南卫视,http://183.185.222.245:8083/rtp/226.0.2.40:8232
东南卫视,http://183.185.222.245:8085/rtp/226.0.2.40:8232
东南卫视,http://118.81.48.104:8085/rtp/226.0.2.40:8232
东南卫视,http://183.185.222.245:8084/rtp/226.0.2.188:9416
东南卫视,http://183.185.222.245:8083/rtp/226.0.2.188:9416
东南卫视,http://183.185.222.245:8085/rtp/226.0.2.188:9416
甘肃卫视,http://183.185.222.245:8085/rtp/226.0.2.55:8352$720x576
甘肃卫视,http://114.252.229.100:8000/rtp/239.3.1.49:8188$720x576
甘肃卫视,http://sweetown.fun:4000/rtp/239.3.1.49:8188$720x576
甘肃卫视,http://117.32.85.224:8014/rtp/239.112.205.48:5140$720x576
甘肃卫视,http://111.165.222.109:8000/rtp/225.1.1.30:5002$720x576
甘肃卫视,http://171.116.191.164:8084/rtp/226.0.2.55:8352$720x576
甘肃卫视,http://221.198.182.240:8888/rtp/225.1.1.30:5002$720x576
甘肃卫视,http://221.216.137.230:8012/rtp/239.3.1.49:8188$720x576
甘肃卫视,http://183.185.222.245:8084/rtp/226.0.2.55:8352
甘肃卫视,http://183.185.222.245:8083/rtp/226.0.2.55:8352
甘肃卫视,http://183.185.222.245:8085/rtp/226.0.2.55:8352
甘肃卫视,http://118.81.48.104:8085/rtp/226.0.2.55:8352
甘肃卫视,http://118.81.48.104:8083/rtp/226.0.2.55:8352
广西卫视,http://221.198.182.240:8888/rtp/225.1.2.81:5002$1920x1080
广西卫视,http://111.165.222.109:8000/rtp/225.1.2.81:5002$1920x1080
广西卫视,http://www.dsmcloud.top:8888/udp/239.81.0.107:4056$1920x1080
广西卫视,http://114.252.229.100:8000/rtp/239.3.1.39:8300$720x576
广西卫视,http://60.178.151.155:4022/rtp/233.50.201.49:5140$720x576
广西卫视,http://171.116.191.164:8084/rtp/226.0.2.46:8280$720x576
广西卫视,http://221.216.137.230:8012/rtp/239.3.1.39:8300$720x576
广西卫视,http://183.185.222.245:8084/rtp/226.0.2.46:8280
广西卫视,http://183.185.222.245:8083/rtp/226.0.2.46:8280
广西卫视,http://183.185.222.245:8085/rtp/226.0.2.46:8280
广西卫视,http://118.81.48.104:8085/rtp/226.0.2.46:8280
广西卫视,http://183.185.222.245:8084/rtp/226.0.2.231:9760
贵州卫视,http://sweetown.fun:4000/rtp/239.3.1.149:8076$1920x1080
贵州卫视,http://114.252.229.100:8000/rtp/239.3.1.149:8076$1920x1080
贵州卫视,http://221.198.182.240:8888/rtp/225.1.2.28:5002$1920x1080
贵州卫视,http://123.144.22.32:8005/rtp/225.0.4.175:7980$1920x1080
贵州卫视,http://171.116.191.164:8084/rtp/226.0.2.43:8256$720x576
贵州卫视,http://183.185.222.245:8084/rtp/226.0.2.180:9352
贵州卫视,http://183.185.222.245:8083/rtp/226.0.2.180:9352
贵州卫视,http://183.185.222.245:8085/rtp/226.0.2.180:9352
贵州卫视,http://118.81.48.104:8085/rtp/226.0.2.180:9352
贵州卫视,http://183.185.222.245:8084/rtp/226.0.2.43:8256
贵州卫视,http://183.185.222.245:8083/rtp/226.0.2.43:8256
贵州卫视,http://183.185.222.245:8085/rtp/226.0.2.43:8256
海南卫视,http://221.198.182.240:8888/rtp/225.1.2.82:5002$1920x1080
海南卫视,http://171.117.245.185:8085/rtp/226.0.2.61:8400$720x576
海南卫视,http://60.178.151.155:4022/rtp/233.50.201.55:5140$720x576
海南卫视,http://114.252.229.100:8000/rtp/239.3.1.45:8304$720x576
海南卫视,http://117.32.85.224:8014/rtp/239.112.205.50:5140$720x576
海南卫视,http://sweetown.fun:4000/rtp/239.3.1.45:8304$720x576
海南卫视,http://221.216.137.230:8012/rtp/239.3.1.45:8304$720x576
海南卫视,http://183.185.222.245:8084/rtp/226.0.2.61:8400
海南卫视,http://183.185.222.245:8083/rtp/226.0.2.61:8400
海南卫视,http://183.185.222.245:8085/rtp/226.0.2.61:8400
海南卫视,http://118.81.48.104:8085/rtp/226.0.2.61:8400
海南卫视,http://183.185.222.245:8084/rtp/226.0.2.212:9608
河北卫视,http://60.178.151.155:4022/rtp/233.50.201.140:5140$1920x1080
河北卫视,http://114.252.229.100:8000/rtp/239.3.1.148:8072$1920x1080
河北卫视,http://123.144.22.32:8005/rtp/225.0.4.174:7980$1920x1080
河北卫视,http://221.198.182.240:8888/rtp/225.1.2.27:5002$1920x1080
河北卫视,http://27.11.49.234:8001/rtp/225.0.4.174:7980$1920x1080
河北卫视,http://117.32.85.224:8014/rtp/239.112.205.200:5140$1920x1080
河北卫视,http://183.185.222.245:8084/rtp/226.0.2.178:9336
河北卫视,http://183.185.222.245:8083/rtp/226.0.2.178:9336
河北卫视,http://183.185.222.245:8085/rtp/226.0.2.178:9336
河北卫视,http://118.81.48.104:8085/rtp/226.0.2.178:9336
河北卫视,http://183.185.222.245:8084/rtp/226.0.2.65:8432
河北卫视,http://183.185.222.245:8083/rtp/226.0.2.65:8432
河南卫视,http://60.178.151.155:4022/rtp/233.50.201.144:5140$1920x1080
河南卫视,http://221.198.182.240:8888/rtp/225.1.2.61:5002$1920x1080
河南卫视,http://60.178.151.155:4022/rtp/233.50.201.44:5140$720x576
河南卫视,http://114.252.229.100:8000/rtp/239.3.1.27:8128$720x576
河南卫视,http://183.185.222.245:8085/rtp/226.0.2.195:9472$720x576
河南卫视,http://171.116.191.164:8084/rtp/226.0.2.195:9472$720x576
河南卫视,http://183.185.222.245:8084/rtp/226.0.2.52:8328
河南卫视,http://183.185.222.245:8083/rtp/226.0.2.52:8328
河南卫视,http://183.185.222.245:8085/rtp/226.0.2.52:8328
河南卫视,http://118.81.48.104:8085/rtp/226.0.2.52:8328
河南卫视,http://183.185.222.245:8084/rtp/226.0.2.195:9472
河南卫视,http://183.185.222.245:8083/rtp/226.0.2.195:9472
吉林卫视,http://sweetown.fun:4000/rtp/239.3.1.240:8172$1920x1080
吉林卫视,http://221.198.182.240:8888/rtp/225.1.2.26:5002$1920x1080
吉林卫视,http://111.165.222.109:8000/rtp/225.1.2.26:5002$1920x1080
吉林卫视,http://60.10.225.157:555/rtp/239.253.92.202:6147$1920x1080
吉林卫视,http://171.213.206.59:8000/rtp/239.93.0.248:5140$1920x1080
吉林卫视,http://118.81.48.104:8083/rtp/226.0.2.58:8376$1920x1080
吉林卫视,http://60.178.151.155:4022/rtp/233.50.201.48:5140$720x576
吉林卫视,http://171.116.191.164:8084/rtp/226.0.2.199:9504$720x576
吉林卫视,http://118.81.48.104:8083/rtp/226.0.2.199:9504$720x576
吉林卫视,http://183.185.222.245:8084/rtp/226.0.2.58:8376
吉林卫视,http://183.185.222.245:8083/rtp/226.0.2.58:8376
吉林卫视,http://183.185.222.245:8085/rtp/226.0.2.58:8376
江苏卫视,http://123.144.22.32:8005/rtp/225.0.4.79:7980$1920x1080
江苏卫视,http://60.178.151.155:4022/rtp/233.50.201.106:5140$1920x1080
江苏卫视,http://221.198.182.240:8888/rtp/225.1.1.126:5002$1920x1080
江苏卫视,http://111.165.222.109:8000/rtp/225.1.1.126:5002$1920x1080
江苏卫视,http://27.11.49.234:8001/rtp/225.0.4.79:7980$1920x1080
江苏卫视,http://60.10.225.157:555/rtp/239.253.92.88:8018$1920x1080
江苏卫视,http://60.178.151.155:4022/rtp/233.50.201.41:5140$720x576
江苏卫视,http://183.185.222.245:8084/rtp/226.0.2.176:9320
江苏卫视,http://183.185.222.245:8083/rtp/226.0.2.176:9320
江苏卫视,http://183.185.222.245:8085/rtp/226.0.2.176:9320
江苏卫视,http://118.81.48.104:8085/rtp/226.0.2.176:9320
江苏卫视,http://183.185.222.245:8084/rtp/226.0.2.38:8216
江西卫视,http://sweetown.fun:4000/rtp/239.3.1.123:8164$1920x1080
江西卫视,http://221.198.182.240:8888/rtp/225.1.2.29:5002$1920x1080
江西卫视,http://60.178.151.155:4022/rtp/233.50.201.145:5140$1920x1080
江西卫视,http://60.178.151.155:4022/rtp/233.50.201.53:5140$720x576
江西卫视,http://183.185.222.245:8084/rtp/226.0.2.54:8344
江西卫视,http://183.185.222.245:8083/rtp/226.0.2.54:8344
江西卫视,http://183.185.222.245:8085/rtp/226.0.2.54:8344
江西卫视,http://118.81.48.104:8085/rtp/226.0.2.54:8344
江西卫视,http://183.185.222.245:8084/rtp/226.0.2.198:9496
江西卫视,http://183.185.222.245:8083/rtp/226.0.2.198:9496
江西卫视,http://183.185.222.245:8085/rtp/226.0.2.198:9496
江西卫视,http://118.81.48.104:8085/rtp/226.0.2.198:9496
江西卫视,http://123.144.22.32:8005/rtp/225.0.4.203:7980
辽宁卫视,http://60.178.151.155:4022/rtp/233.50.201.141:5140$1920x1080
辽宁卫视,http://sweetown.fun:4000/rtp/239.3.1.210:8056$1920x1080
辽宁卫视,http://111.165.222.109:8000/rtp/225.1.1.154:5002$1920x1080
辽宁卫视,http://123.144.22.32:8005/rtp/225.0.4.98:7980$1920x1080
辽宁卫视,http://27.11.49.234:8001/rtp/225.0.4.98:7980$1920x1080
辽宁卫视,http://221.198.182.240:8888/rtp/225.1.1.154:5002$1920x1080
辽宁卫视,http://60.178.151.155:4022/rtp/233.50.201.60:5140$720x576
辽宁卫视,http://118.81.48.104:8084/rtp/226.0.2.35:8192$720x576
辽宁卫视,http://183.185.222.245:8084/rtp/226.0.2.173:9296
辽宁卫视,http://183.185.222.245:8083/rtp/226.0.2.173:9296
辽宁卫视,http://183.185.222.245:8085/rtp/226.0.2.173:9296
辽宁卫视,http://118.81.48.104:8085/rtp/226.0.2.173:9296
辽宁卫视,http://183.185.222.245:8084/rtp/226.0.2.35:8192
辽宁卫视,http://183.185.222.245:8083/rtp/226.0.2.35:8192
内蒙古卫视,http://114.252.229.100:8000/rtp/239.3.1.43:8176$720x576
内蒙古卫视,http://117.32.85.224:8014/rtp/239.112.205.55:5140$720x576
内蒙古卫视,http://111.165.222.109:8000/rtp/225.1.1.32:5002$720x576
内蒙古卫视,http://171.116.191.164:8084/rtp/226.0.2.63:8416$720x576
内蒙古卫视,http://xeace.cn:8888/rtp/239.93.0.8:5140$720x576
内蒙古卫视,http://221.198.182.240:8888/rtp/225.1.1.32:5002$720x576
内蒙古卫视,http://221.216.137.230:8012/rtp/239.3.1.43:8176$720x576
内蒙古卫视,http://114.246.181.171:4022/rtp/239.3.1.43:8176$720x576
内蒙古卫视,http://183.185.222.245:8085/rtp/226.0.2.63:8416$720x576
内蒙古卫视,http://183.185.222.245:8084/rtp/226.0.2.63:8416
内蒙古卫视,http://183.185.222.245:8083/rtp/226.0.2.63:8416
内蒙古卫视,http://183.185.222.245:8085/rtp/226.0.2.63:8416
内蒙古卫视,http://118.81.48.104:8085/rtp/226.0.2.63:8416
宁夏卫视,http://114.252.229.100:8000/rtp/239.3.1.46:8124$720x576
宁夏卫视,http://60.178.151.155:4022/rtp/233.50.201.57:5140$720x576
宁夏卫视,http://183.185.222.245:8085/rtp/226.0.2.64:8424$720x576
宁夏卫视,http://xeace.cn:8888/rtp/239.93.0.247:5140$720x576
宁夏卫视,http://171.213.206.59:8000/rtp/239.93.0.247:5140$720x576
宁夏卫视,http://221.198.182.240:8888/rtp/225.1.1.56:5002$720x576
宁夏卫视,http://221.216.137.230:8012/rtp/239.3.1.46:8124$720x576
宁夏卫视,http://114.246.181.171:4022/rtp/239.3.1.46:8124$720x576
宁夏卫视,http://117.32.85.224:8014/rtp/239.112.205.49:5140$720x576
宁夏卫视,http://xeace.cn:8888/rtp/239.93.1.212:5140$576x320
宁夏卫视,http://183.185.222.245:8084/rtp/226.0.2.64:8424
宁夏卫视,http://183.185.222.245:8083/rtp/226.0.2.64:8424
宁夏卫视,http://183.185.222.245:8085/rtp/226.0.2.64:8424
青海卫视,http://114.252.229.100:8000/rtp/239.3.1.44:8184$720x576
青海卫视,http://60.178.151.155:4022/rtp/233.50.201.65:5140$720x576
青海卫视,http://117.32.85.224:8014/rtp/239.112.205.53:5140$720x576
青海卫视,http://183.185.222.245:8085/rtp/226.0.2.59:8384$720x576
青海卫视,http://111.165.222.109:8000/rtp/225.1.1.54:5002$720x576
青海卫视,http://xeace.cn:8888/rtp/239.93.0.192:5140$720x576
青海卫视,http://171.116.191.164:8084/rtp/226.0.2.59:8384$720x576
青海卫视,http://171.213.206.59:8000/rtp/239.93.0.192:5140$720x576
青海卫视,http://221.198.182.240:8888/rtp/225.1.1.54:5002$720x576
青海卫视,http://221.216.137.230:8012/rtp/239.3.1.44:8184$720x576
青海卫视,http://183.185.222.245:8084/rtp/226.0.2.59:8384
青海卫视,http://183.185.222.245:8083/rtp/226.0.2.59:8384
青海卫视,http://183.185.222.245:8085/rtp/226.0.2.59:8384
山东卫视,http://114.252.229.100:8000/rtp/239.3.1.209:8052$1920x1080
山东卫视,http://60.7.56.33:4000/rtp/239.253.92.207:8109$1920x1080
山东卫视,http://60.178.151.155:4022/rtp/233.50.201.105:5140$1920x1080
山东卫视,http://120.10.101.13:4000/rtp/239.253.92.207:8109$1920x1080
山东卫视,http://60.10.225.157:555/rtp/239.253.92.207:8109$1920x1080
山东卫视,http://27.11.49.234:8001/rtp/225.0.4.199:7980$1920x1080
山东卫视,http://123.144.22.32:8005/rtp/225.0.4.199:7980$1920x1080
山东卫视,http://60.178.151.155:4022/rtp/233.50.201.64:5140$720x576
山东卫视,http://183.185.222.245:8085/rtp/226.0.2.51:8320$720x576
山东卫视,http://183.185.222.245:8084/rtp/226.0.2.149:9104
山东卫视,http://183.185.222.245:8083/rtp/226.0.2.149:9104
山东卫视,http://183.185.222.245:8085/rtp/226.0.2.149:9104
山西卫视,http://114.252.229.100:8000/rtp/239.3.1.42:8172$720x576
山西卫视,http://60.178.151.155:4022/rtp/233.50.201.51:5140$720x576
山西卫视,http://117.32.85.224:8014/rtp/239.112.205.46:5140$720x576
山西卫视,http://171.213.146.138:5555/rtp/239.93.0.6:5140$720x576
山西卫视,http://sweetown.fun:4000/rtp/239.3.1.42:8172$720x576
山西卫视,http://111.165.222.109:8000/rtp/225.1.1.50:5002$720x576
山西卫视,http://171.116.191.164:8084/rtp/226.0.2.11:8000$720x576
山西卫视,http://171.213.206.59:8000/rtp/239.93.0.6:5140$720x576
山西卫视,http://221.198.182.240:8888/rtp/225.1.1.50:5002$720x576
山西卫视,http://221.216.137.230:8012/rtp/239.3.1.42:8172$720x576
山西卫视,http://xeace.cn:8888/rtp/239.93.1.207:5140$576x320
山西卫视,http://183.185.222.245:8084/rtp/226.0.2.11:8000
山西卫视,http://183.185.222.245:8083/rtp/226.0.2.11:8000
陕西卫视,http://117.32.85.224:8014/rtp/239.111.205.35:5140$1920x1080
陕西卫视,http://114.252.229.100:8000/rtp/239.3.1.41:8140$720x576
陕西卫视,http://60.178.151.155:4022/rtp/233.50.201.59:5140$720x576
陕西卫视,http://sweetown.fun:4000/rtp/239.3.1.41:8140$720x576
陕西卫视,http://183.185.222.245:8085/rtp/226.0.2.53:8336$720x576
陕西卫视,http://111.165.222.109:8000/rtp/225.1.1.41:5002$720x576
陕西卫视,http://221.198.182.240:8888/rtp/225.1.1.41:5002$720x576
陕西卫视,http://221.216.137.230:8012/rtp/239.3.1.41:8140$720x576
陕西卫视,http://183.185.222.245:8084/rtp/226.0.2.53:8336
陕西卫视,http://183.185.222.245:8083/rtp/226.0.2.53:8336
陕西卫视,http://183.185.222.245:8085/rtp/226.0.2.53:8336
陕西卫视,http://118.81.48.104:8085/rtp/226.0.2.53:8336
陕西卫视,http://118.81.48.104:8083/rtp/226.0.2.53:8336
四川卫视,http://171.213.206.59:8000/rtp/239.93.0.20:1235$1920x1080
四川卫视,http://111.165.222.109:8000/rtp/225.1.1.123:5002$1920x1080
四川卫视,http://60.10.225.157:555/rtp/239.253.92.16:6043$1920x1080
四川卫视,http://221.198.182.240:8888/rtp/225.1.1.123:5002$1920x1080
四川卫视,http://sweetown.fun:4000/rtp/239.3.1.29:8288$720x576
四川卫视,http://123.144.22.32:8005/rtp/225.0.4.204:7980$720x576
四川卫视,http://xeace.cn:8888/rtp/239.93.1.88:5140$576x320
四川卫视,http://183.185.222.245:8084/rtp/226.0.2.179:9344
四川卫视,http://183.185.222.245:8083/rtp/226.0.2.179:9344
四川卫视,http://183.185.222.245:8085/rtp/226.0.2.179:9344
四川卫视,http://118.81.48.104:8085/rtp/226.0.2.179:9344
四川卫视,http://183.185.222.245:8084/rtp/226.0.2.42:8248
深圳卫视,http://120.10.101.13:4000/rtp/239.253.92.86:8017$1920x1080
深圳卫视,http://60.10.225.157:555/rtp/239.253.92.86:8017$1920x1080
深圳卫视,http://111.165.222.109:8000/rtp/225.1.1.117:5002$1920x1080
深圳卫视,http://171.213.206.59:8000/rtp/239.93.0.182:5140$1920x1080
深圳卫视,http://183.185.222.245:8085/rtp/226.0.2.147:9088$1920x1080
深圳卫视,http://221.198.182.240:8888/rtp/225.1.1.117:5002$1920x1080
深圳卫视,http://171.116.191.164:8084/rtp/226.0.2.47:8288$720x576
深圳卫视,http://183.185.222.245:8084/rtp/226.0.2.147:9088
深圳卫视,http://183.185.222.245:8083/rtp/226.0.2.147:9088
深圳卫视,http://183.185.222.245:8085/rtp/226.0.2.147:9088
深圳卫视,http://118.81.48.104:8085/rtp/226.0.2.147:9088
深圳卫视,http://183.185.222.245:8084/rtp/226.0.2.47:8288
三沙卫视,http://222.138.212.223:9999/rtp/225.1.4.234:1280$720x576
三沙卫视,http://sweetown.fun:4000/rtp/239.3.1.155:4120$720x576
三沙卫视,http://171.213.137.173:8088/rtp/239.93.42.58:5140$720x576
三沙卫视,http://114.243.104.92:8888/rtp/239.3.1.155:4120$720x576
三沙卫视,http://123.123.167.240:8000/rtp/239.3.1.155:4120$720x576
三沙卫视,http://111.165.222.109:8000/rtp/225.1.2.181:5002$720x576
三沙卫视,http://xeace.cn:8888/rtp/239.93.42.58:5140$720x576
三沙卫视,http://171.213.206.59:8000/rtp/239.93.42.58:5140$720x576
三沙卫视,http://221.198.182.240:8888/rtp/225.1.2.181:5002$720x576
三沙卫视,http://221.216.137.230:8012/rtp/239.3.1.155:4120$720x576
三沙卫视,http://114.252.229.100:8000/rtp/239.3.1.155:4120
三沙卫视,http://114.240.43.183:8888/rtp/239.3.1.155:4120
三沙卫视,http://221.216.137.230:8012/rtp/239.3.1.155:4120
三沙卫视,http://171.213.128.130:8123/rtp/239.93.42.58:5140
天津卫视,http://60.178.151.155:4022/rtp/233.50.201.104:5140$1920x1080
天津卫视,http://60.7.56.33:4000/rtp/239.253.92.91:8021$1920x1080
天津卫视,http://221.198.182.240:8888/rtp/225.1.1.111:5002$1920x1080
天津卫视,http://123.144.22.32:8005/rtp/225.0.4.82:7980$1920x1080
天津卫视,http://60.178.151.155:4022/rtp/233.50.201.47:5140$720x576
天津卫视,http://183.185.222.245:8084/rtp/226.0.2.148:9096
天津卫视,http://183.185.222.245:8083/rtp/226.0.2.148:9096
天津卫视,http://183.185.222.245:8085/rtp/226.0.2.148:9096
天津卫视,http://118.81.48.104:8085/rtp/226.0.2.148:9096
天津卫视,http://183.185.222.245:8084/rtp/226.0.2.56:8360
天津卫视,http://183.185.222.245:8083/rtp/226.0.2.56:8360
天津卫视,http://183.185.222.245:8085/rtp/226.0.2.56:8360
天津卫视,http://118.81.48.104:8085/rtp/226.0.2.56:8360
西藏卫视,http://114.252.229.100:8000/rtp/239.3.1.47:8164$720x576
西藏卫视,http://60.178.151.155:4022/rtp/233.50.201.70:5140$720x576
西藏卫视,http://117.32.85.224:8014/rtp/239.112.205.54:5140$720x576
西藏卫视,http://183.185.222.245:8085/rtp/226.0.2.66:8440$720x576
西藏卫视,http://xeace.cn:8888/rtp/239.93.0.175:5140$720x576
西藏卫视,http://171.116.191.164:8084/rtp/226.0.2.66:8440$720x576
西藏卫视,http://171.213.206.59:8000/rtp/239.93.0.175:5140$720x576
西藏卫视,http://221.198.182.240:8888/rtp/225.1.1.51:5002$720x576
西藏卫视,http://221.216.137.230:8012/rtp/239.3.1.47:8164$720x576
西藏卫视,http://183.185.222.245:8084/rtp/226.0.2.66:8440
西藏卫视,http://183.185.222.245:8083/rtp/226.0.2.66:8440
新疆卫视,http://114.252.229.100:8000/rtp/239.3.1.48:8160$720x576
新疆卫视,http://111.165.222.109:8000/rtp/225.1.1.35:5002$720x576
新疆卫视,http://sweetown.fun:4000/rtp/239.3.1.48:8160$720x576
新疆卫视,http://171.116.191.164:8084/rtp/226.0.2.67:8448$720x576
新疆卫视,http://171.213.206.59:8000/rtp/239.93.0.194:5140$720x576
新疆卫视,http://221.198.182.240:8888/rtp/225.1.1.35:5002$720x576
新疆卫视,http://221.216.137.230:8012/rtp/239.3.1.48:8160$720x576
新疆卫视,http://114.246.181.171:4022/rtp/239.3.1.48:8160$720x576
新疆卫视,http://117.32.85.224:8014/rtp/239.112.205.56:5140$720x576
新疆卫视,http://183.185.222.245:8084/rtp/226.0.2.67:8448
新疆卫视,http://183.185.222.245:8083/rtp/226.0.2.67:8448
新疆卫视,http://183.185.222.245:8085/rtp/226.0.2.67:8448
新疆卫视,http://118.81.48.104:8085/rtp/226.0.2.67:8448
新疆卫视,http://118.81.48.104:8083/rtp/226.0.2.67:8448
云南卫视,http://60.178.151.155:4022/rtp/233.50.200.115:5140$1920x1080
云南卫视,http://222.138.212.223:9999/rtp/225.1.4.152:1307$1920x1080
云南卫视,http://60.178.151.155:4022/rtp/233.50.201.46:5140$720x576
云南卫视,http://114.252.229.100:8000/rtp/239.3.1.26:8108$720x576
云南卫视,http://117.32.85.224:8014/rtp/239.112.205.58:5140$720x576
云南卫视,http://183.185.222.245:8085/rtp/226.0.2.60:8392$720x576
云南卫视,http://171.116.191.164:8084/rtp/226.0.2.60:8392$720x576
云南卫视,http://221.198.182.240:8888/rtp/225.1.1.61:5002$720x576
云南卫视,http://183.185.222.245:8084/rtp/226.0.2.60:8392
云南卫视,http://183.185.222.245:8083/rtp/226.0.2.60:8392
云南卫视,http://183.185.222.245:8085/rtp/226.0.2.60:8392
云南卫视,http://118.81.48.104:8085/rtp/226.0.2.60:8392
云南卫视,http://118.81.48.104:8083/rtp/226.0.2.60:8392
青海卫视,http://stream.qhbtv.com/qhws/sd/live.m3u8
延边卫视,http://live.ybtvyun.com/video/s10006-44f040627ca1/index.m3u8
延边卫视,http://live.ybtvyun.com/video/s10006-28bc40431485/index.m3u8
@ -45,15 +660,11 @@ CCTV12,http://1.195.111.251:11190/tsfile/live/0012_1.m3u8?%E5%BE%AE%E4%BF%A1%E5%
延边卫视,http://live.ybtvyun.com/video/s10016-6f0dfd97912f/index.m3u8
延边卫视,http://live.ybtvyun.com/video/s10006-44f040627ca1/index.m3u8
延边卫视,http://live.ybtvyun.com/video/s10006-90fe76c52091/index.m3u8
东方卫视,http://223.112.219.174:9901/tsfile/live/0107_1.m3u8?key=txiptv&playlive=1&authid=0
北京卫视,http://223.112.219.174:9901/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0
浙江卫视,http://223.112.219.174:9901/tsfile/live/0124_1.m3u8?key=txiptv&playlive=1&authid=0
湖南卫视,http://223.112.219.174:9901/tsfile/live/0128_1.m3u8?key=txiptv&playlive=1&authid=0
IPV6,#genre#
CCTV-1 综合,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226559/index.m3u8
CCTV-2 财经,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226540/index.m3u8
CCTV-2 财经,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010211/1.m3u8
CCTV-3 综艺,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226021/index.m3u8
CCTV-4 中文国际,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226428/index.m3u8
CCTV-5 体育,http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226019/index.m3u8
@ -79,6 +690,9 @@ CGTN俄语,https://0472.org/hls/cgtne.m3u8
CGTN法语,https://0472.org/hls/cgtnf.m3u8
CGTN西语,https://0472.org/hls/cgtnx.m3u8
CGTN阿语,https://0472.org/hls/cgtna.m3u8
凤凰中文,http://58.144.154.93/qctv.fengshows.cn/live/0701pcc72.m3u8
凤凰资讯,http://58.144.154.93/qctv.fengshows.cn/live/0701pin72.m3u8
凤凰香港,http://58.144.154.93/qctv.fengshows.cn/live/0701phk72.m3u8
北京卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226450/index.m3u8
湖南卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226307/index.m3u8
东方卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226345/index.m3u8
@ -134,15 +748,15 @@ CETV-4,http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/PLTV/888888
动漫秀场,http://[2409:8087:5e00:24::1e]:6060/000000001000/5000000011000031113/1.m3u8
嘉佳卡通,http://[2409:8087:5e00:24::1e]:6060/000000001000/1000000002000025964/1.m3u8
哒啵赛事,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225675/index.m3u8
哒啵电竞,http://[2409:8087:5e08:24::11]:6610/000000001000/2000000003000000066/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000003000000066&IASHttpSessionId=OTT19019320240419154124000281
哒啵电竞,http://[2409:8087:5e01:24::16]:6610/000000001000/2000000003000000066/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000003000000066&IASHttpSessionId=OTT19019320240419154124000281
优漫卡通,http://[2409:8087:1a0b:df::4005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225656/index.m3u8
哈哈炫动,http://[2409:8087:1a0b:df::4001]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225657/index.m3u8
黑莓动画,http://[2409:8087:1a0b:df::4006]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225662/index.m3u8
黑莓电影,http://[2409:8087:1a0b:df::4014]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225743/index.m3u8
求索纪录,http://[2409:8087:5e08:24::11]:6610/000000001000/2000000004000000010/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000010&IASHttpSessionId=OTT19019320240419154124000281
求索生活,http://[2409:8087:5e08:24::11]:6610/000000001000/2000000004000000008/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000008&IASHttpSessionId=OTT19019320240419154124000281
求索动物,http://[2409:8087:5e08:24::11]:6610/000000001000/2000000004000000009/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000009&IASHttpSessionId=OTT19019320240419154124000281
求索科学,http://[2409:8087:5e08:24::11]:6610/000000001000/2000000004000000011/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000011&IASHttpSessionId=OTT19019320240419154124000281
求索纪录,http://[2409:8087:5e01:24::16]:6610/000000001000/2000000004000000010/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000010&IASHttpSessionId=OTT19019320240419154124000281
求索生活,http://[2409:8087:5e01:24::16]:6610/000000001000/2000000004000000008/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000008&IASHttpSessionId=OTT19019320240419154124000281
求索动物,http://[2409:8087:5e01:24::16]:6610/000000001000/2000000004000000009/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000009&IASHttpSessionId=OTT19019320240419154124000281
求索科学,http://[2409:8087:5e01:24::16]:6610/000000001000/2000000004000000011/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000011&IASHttpSessionId=OTT19019320240419154124000281
超级体育,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225715/index.m3u8
超级电影,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225717/index.m3u8
超级视剧,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225716/index.m3u8
@ -162,15 +776,15 @@ CETV-4,http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/PLTV/888888
精品萌宠,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226505/index.m3u8
超级综艺,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225714/index.m3u8
金牌综艺,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225666/index.m3u8
上海新闻,http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000005/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000005&IASHttpSessionId=OTT19019320240419154124000281
上海都市,http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000012/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000012&IASHttpSessionId=OTT19019320240419154124000281
上海外语,http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000001/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000001&IASHttpSessionId=OTT19019320240419154124000281
七彩戏剧,http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000010/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000010&IASHttpSessionId=OTT19019320240419154124000281
五星体育,http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000007/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000007&IASHttpSessionId=OTT19019320240419154124000281
东方影视,http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000013/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000013&IASHttpSessionId=OTT19019320240419154124000281
东方财经,http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000090/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000090&IASHttpSessionId=OTT19019320240419154124000281
法治天地,http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000014/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000014&IASHttpSessionId=OTT19019320240419154124000281
第一财经,http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000004/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000004&IASHttpSessionId=OTT19019320240419154124000281
上海新闻,http://[2409:8087:5e01:24::16]:6610/000000001000/2000000002000000005/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000005&IASHttpSessionId=OTT19019320240419154124000281
上海都市,http://[2409:8087:5e01:24::16]:6610/000000001000/2000000002000000012/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000012&IASHttpSessionId=OTT19019320240419154124000281
上海外语,http://[2409:8087:5e01:24::16]:6610/000000001000/2000000002000000001/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000001&IASHttpSessionId=OTT19019320240419154124000281
七彩戏剧,http://[2409:8087:5e01:24::16]:6610/000000001000/2000000002000000010/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000010&IASHttpSessionId=OTT19019320240419154124000281
五星体育,http://[2409:8087:5e01:24::16]:6610/000000001000/2000000002000000007/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000007&IASHttpSessionId=OTT19019320240419154124000281
东方影视,http://[2409:8087:5e01:24::16]:6610/000000001000/2000000002000000013/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000013&IASHttpSessionId=OTT19019320240419154124000281
东方财经,http://[2409:8087:5e01:24::16]:6610/000000001000/2000000002000000090/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000090&IASHttpSessionId=OTT19019320240419154124000281
法治天地,http://[2409:8087:5e01:24::16]:6610/000000001000/2000000002000000014/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000014&IASHttpSessionId=OTT19019320240419154124000281
第一财经,http://[2409:8087:5e01:24::16]:6610/000000001000/2000000002000000004/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000004&IASHttpSessionId=OTT19019320240419154124000281
浙江新闻,https://ali-m-l.cztv.com/channels/lantian/channel007/1080p.m3u8
浙江国际,https://ali-m-l.cztv.com/channels/lantian/channel010/1080p.m3u8
浙江少儿,https://ali-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8
@ -261,8 +875,6 @@ key=0b292c335e5837e947f9409c59228f3e6
哈尔滨影,http://stream.hrbtv.net/yspd/sd/live.m3u8?zheild
哈尔滨生活,http://stream.hrbtv.net/shpd/sd/live.m3u8?zheild
哈尔滨娱乐,http://stream.hrbtv.net/ylpd/sd/live.m3u8?zheild
伊春综合,http://live.yichuntv.com/e5d7b4b95cf849d79fa3964431dca1f3/h264_800k_ts/index.m3u8?type=flv2hls_m3u8?zheild
伊春公共,http://live.yichuntv.com/1501fae792774811b2cd1366a078e666/h264_800k_ts/index.m3u8?type=flv2hls_m3u8?zheild
达茂综合,http://pili-live-hls.nmgapp12019.sobeylive.com/nmgapp12019/live164301116493025.m3u8?zneimd
库伦旗电视台,http://pili-live-hls.nmgapp12019.sobeylive.com/nmgapp12019/live161942247484390.m3u8?zneimd
奈曼旗电视台,http://pili-live-hls.nmgapp12019.sobeylive.com/nmgapp12019/live161888593025926.m3u8?zneimd

Binary file not shown.

@ -10,16 +10,6 @@
"api": "csp_Douban",
"searchable": 0
},
{
"key": "csp_瓜子",
"name": "🌰瓜子┃1080P",
"api": "csp_Gz360",
"type": 3,
"searchable": 1,
"playerType": 2,
"timeout": 30,
"changeable": 0
},
{
"key": "csp_wanou",
"name": "🧸玩偶┃盘聚4K",
@ -70,6 +60,28 @@
"filterable": 1,
"ext": ""
},
{
"key": "csp_JPYY",
"name": "🥇金牌┃1080P",
"type": 3,
"searchable": 1,
"changeable": 1,
"api": "csp_Jpyy",
"playerType": 1,
"filterable": 1,
"ext": ""
},
{
"key": "csp_subaobai",
"name": "✍白白┃1080P",
"type": 3,
"searchable": 1,
"changeable": 1,
"api": "csp_SuBaiBai",
"playerType": 1,
"filterable": 1,
"ext": ""
},
{
"key": "君君",
"name": "🚗君君┃1080P",
@ -100,7 +112,7 @@
"key": "hipy_js_腾云驾雾[官]",
"name": "🌞腾腾┃解析",
"type": 3,
"api": "./api/drpy2.min.js",
"api": "./api/drpy.min.js",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
@ -112,7 +124,7 @@
"key": "guoguo",
"name": "🌞果果┃解析",
"type": 3,
"api": "./api/drpy2.min.js",
"api": "./api/drpy.min.js",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
@ -124,7 +136,7 @@
"key": "摘星",
"name": "✨摘星┃解析",
"type": 3,
"api": "./api/drpy2.min.js",
"api": "./api/drpy.min.js",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
@ -156,6 +168,7 @@
"name": "🥛耐看┃1080P",
"type": 3,
"changeable": 0,
"click": "document.querySelector(\"#playleft iframe\").contentWindow.document.querySelector(\"#start\").click();",
"api": "csp_Nkdy",
"playerType": 2,
"filterable": 1
@ -186,7 +199,7 @@
"searchable": 1,
"quickSearch": 0,
"changeable": 0,
"ext": "./json/bilibili.json"
"ext": "./json/Bili.json"
},
{
"key": "csp_农民",
@ -292,38 +305,6 @@
"跳转播放链接": "url\"*\"&&\""
}
},
{
"key": "文采影视",
"name": "🌼文采┃1080P",
"type": 3,
"api": "csp_XBPQ",
"changeable": 0,
"jar": "./jars/小米.jar",
"ext": {
"主页url": "https://www.hkybqufgh.com/",
"播放请求头": "User-Agent$Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
"简介": "</label>&&</div>",
"嗅探词": "m3u8",
"影片类型": "tags\">&&director\">",
"影片状态": "bottom\">&&</div>",
"二次截取": "videoList\":\\[&&\\]",
"数组": "{&&}[不包含:伦理剧]",
"图片": "https+://ywxohs.com+obs.gduamoe.com&&\",",
"标题": "vodName\":\"&&\"",
"副标题": "vodRemarks\":\"&&\"",
"链接": "https://www.hkybqufgh.com/detail/+vodId\":&&,",
"导演": "导演:</div>&&主演",
"主演": "主演:</div>&&别名",
"线路标题": "小米文采",
"播放数组": "listitem\">&&info\">",
"播放列表": "<a&&</a>",
"倒序": "否",
"搜索url": "https://www.hkybqufgh.com/vod/search/{wd}",
"搜索副标题": "class=\"boottom\"*<div>&&</div",
"分类": "电影$1#电视剧$2#综艺$3#动漫$4",
"分类url": "https://www.hkybqufgh.com/vod/show/id/{cateId}/class/{class}/year/{year}/area/{area}/page/{catePg}"
}
},
{
"key": "有声小说js",
"name": "🎧有声┃小说",
@ -504,7 +485,7 @@
{
"name": "1080解析",
"type": 1,
"url": "https://jf.lemiaoyun.cn/api/?key=86950663b3198d25885fdf61501a3366&url=",
"url": "https://jf.lemiaoyun.cn/api/?key=8b7dec2f10ce79cd5687a7d6f6a335a8&url=",
"ext": {
"flag": [
"qq",

73
小米/api/drpy.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,304 +1,412 @@
if (typeof Object.assign != 'function') {
Object.assign = function () {
var target = arguments[0];
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
}
function getMubans() {
var mubanDict = { // 模板字典
mxpro: {
title: '',
host: '',
// homeUrl:'/',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.navbar-items li:gt(2):lt(8);a&&Text;a&&href;/(\\d+).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: 'body a.module-poster-item.module-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href',
二级: {
"title": "h1&&Text;.module-info-tag&&Text",
"img": ".lazyload&&data-original",
"desc": ".module-info-item:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(3)&&Text",
"content": ".module-info-introduction&&Text",
"tabs": ".module-tab-item",
"lists": ".module-play-list:eq(#id) a"
},
搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
},
mxone5: {
title: '',
host: '',
url: '/show/fyclass--------fypage---.html',
searchUrl: '/search/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
class_parse: '.nav-menu-items&&li;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.module-list;.module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.module-items .module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
二级: {
"title": "h1&&Text;.tag-link&&Text",
"img": ".module-item-pic&&img&&data-src",
"desc": ".video-info-items:eq(0)&&Text;.video-info-items:eq(1)&&Text;.video-info-items:eq(2)&&Text;.video-info-items:eq(3)&&Text",
"content": ".vod_content&&Text",
"tabs": ".module-tab-item",
"lists": ".module-player-list:eq(#id)&&.scroll-content&&a"
},
搜索: '.module-items .module-search-item;a&&title;img&&data-src;.video-serial&&Text;a&&href',
},
首图: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---/',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.myui-header__menu li.hidden-sm:gt(0):lt(5);a&&Text;a&&href;/(\\d+).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.myui-vodlist.clearfix;li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.myui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
"title": ".myui-content__detail .title&&Text;.myui-content__detail p:eq(-2)&&Text",
"img": ".myui-content__thumb .lazyload&&data-original",
"desc": ".myui-content__detail p:eq(0)&&Text;.myui-content__detail p:eq(1)&&Text;.myui-content__detail p:eq(2)&&Text",
"content": ".content&&Text",
"tabs": ".nav-tabs:eq(0) li",
"lists": ".myui-content__list:eq(#id) li"
},
搜索: '#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
},
首图2: {
title: '',
host: '',
url: '/list/fyclass-fypage.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA',
// "Cookie": ""
},
// class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
class_parse: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
"title": ".stui-content__detail .title&&Text;.stui-content__detail p:eq(-2)&&Text",
"img": ".stui-content__thumb .lazyload&&data-original",
"desc": ".stui-content__detail p:eq(0)&&Text;.stui-content__detail p:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text",
"content": ".detail&&Text",
"tabs": ".stui-vodlist__head h3",
"lists": ".stui-content__playlist:eq(#id) li"
},
搜索: 'ul.stui-vodlist__media:eq(0) li,ul.stui-vodlist:eq(0) li,#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
搜索1: 'ul.stui-vodlist&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
搜索2: 'ul.stui-vodlist__media&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
},
默认: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/-------------.html?wd=**',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'MOBILE_UA',
},
play_parse: true,
lazy: '',
limit: 6,
double: true, // 推荐内容是否双层定位
},
vfed: {
title: '',
host: '',
url: '/index.php/vod/show/id/fyclass/page/fypage.html',
searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA',
},
// class_parse:'.fed-pops-navbar&&ul.fed-part-rows&&a.fed-part-eone:gt(0):lt(5);a&&Text;a&&href;.*/(.*?).html',
class_parse: '.fed-pops-navbar&&ul.fed-part-rows&&a;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.fed-list-info.fed-part-rows;li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.fed-list-info&&li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
二级: {
"title": "h1.fed-part-eone&&Text;.fed-deta-content&&.fed-part-rows&&li&&Text",
"img": ".fed-list-info&&a&&data-original",
"desc": ".fed-deta-content&&.fed-part-rows&&li:eq(1)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(2)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(3)&&Text",
"content": ".fed-part-esan&&Text",
"tabs": ".fed-drop-boxs&&.fed-part-rows&&li",
"lists": ".fed-play-item:eq(#id)&&ul:eq(1)&&li"
},
搜索: '.fed-deta-info;h1&&Text;.lazyload&&data-original;.fed-list-remarks&&Text;a&&href;.fed-deta-content&&Text',
},
海螺3: {
title: '',
host: '',
searchUrl: '/v_search/**----------fypage---.html',
url: '/vod_____show/fyclass--------fypage---.html',
headers: {
'User-Agent': 'MOBILE_UA'
},
timeout: 5000,
class_parse: 'body&&.hl-nav li:gt(0);a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '明星|专题|最新|排行',
limit: 40,
play_parse: true,
lazy: '',
推荐: '.hl-vod-list;li;a&&title;a&&data-original;.remarks&&Text;a&&href',
double: true,
一级: '.hl-vod-list&&.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
二级: {
"title": ".hl-infos-title&&Text;.hl-text-conch&&Text",
"img": ".hl-lazy&&data-original",
"desc": ".hl-infos-content&&.hl-text-conch&&Text",
"content": ".hl-content-text&&Text",
"tabs": ".hl-tabs&&a",
"lists": ".hl-plays-list:eq(#id)&&li"
},
搜索: '.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
},
海螺2: {
title: '',
host: '',
searchUrl: '/index.php/vod/search/page/fypage/wd/**/',
url: '/index.php/vod/show/id/fyclass/page/fypage/',
headers: {
'User-Agent': 'MOBILE_UA'
},
timeout: 5000,
class_parse: '#nav-bar li;a&&Text;a&&href;id/(.*?)/',
limit: 40,
play_parse: true,
lazy: '',
推荐: '.list-a.size;li;a&&title;.lazy&&data-original;.bt&&Text;a&&href',
double: true,
一级: '.list-a&&li;a&&title;.lazy&&data-original;.list-remarks&&Text;a&&href',
二级: {
"title": "h2&&Text;.deployment&&Text",
"img": ".lazy&&data-original",
"desc": ".deployment&&Text",
"content": ".ec-show&&Text",
"tabs": "#tag&&a",
"lists": ".play_list_box:eq(#id)&&li"
},
搜索: '.search-list;a&&title;.lazy&&data-original;.deployment&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
},
短视: {
title: '',
host: '',
// homeUrl:'/',
url: '/channel/fyclass-fypage.html',
searchUrl: '/search.html?wd=**',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.menu_bottom ul li;a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '解析|动态',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.indexShowBox;ul&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.pic-list&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
二级: {
"title": "h1&&Text;.content-rt&&p:eq(0)&&Text",
"img": ".img&&img&&data-src",
"desc": ".content-rt&&p:eq(1)&&Text;.content-rt&&p:eq(2)&&Text;.content-rt&&p:eq(3)&&Text;.content-rt&&p:eq(4)&&Text;.content-rt&&p:eq(5)&&Text",
"content": ".zkjj_a&&Text",
"tabs": ".py-tabs&&option",
"lists": ".player:eq(#id) li"
},
搜索: '.sr_lists&&ul&&li;h3&&Text;img&&data-src;.int&&p:eq(0)&&Text;a&&href',
},
短视2:{
title: '',
host: '',
class_name:'电影&电视剧&综艺&动漫',
class_url:'1&2&3&4',
searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50',
searchable: 2,
quickSearch: 0,
headers:{'User-Agent':'MOBILE_UA'},
url: '/index.php/api/vod#type=fyclass&page=fypage',
filterable:0,//是否启用分类筛选,
filter_url:'',
filter: {},
filter_def:{},
detailUrl:'/index.php/vod/detail/id/fyid.html',
play_parse: true,
lazy: '',
limit: 6,
推荐:'.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href',
一级:'js:let body=input.split("#")[1];let t=Math.round(new Date/1e3).toString();let key=md5("DS"+t+"DCC147D11943AF75");let url=input.split("#")[0];body=body+"&time="+t+"&key="+key;print(body);fetch_params.body=body;let html=post(url,fetch_params);let data=JSON.parse(html);VODS=data.list.map(function(it){it.vod_pic=urljoin2(input.split("/i")[0],it.vod_pic);return it});',
二级:{
"title":".slide-info-title&&Text;.slide-info:eq(3)--strong&&Text",
"img":".detail-pic&&data-original",
"desc":".fraction&&Text;.slide-info-remarks:eq(1)&&Text;.slide-info-remarks:eq(2)&&Text;.slide-info:eq(2)--strong&&Text;.slide-info:eq(1)--strong&&Text",
"content":"#height_limit&&Text",
"tabs":".anthology.wow.fadeInUp.animated&&.swiper-wrapper&&a",
"tab_text":".swiper-slide&&Text",
"lists":".anthology-list-box:eq(#id) li"
},
搜索:'json:list;name;pic;;id',
}
};
return JSON.parse(JSON.stringify(mubanDict));
}
var mubanDict = getMubans();
var muban = getMubans();
export default {muban,getMubans};
if (typeof Object.assign !== 'function') {
Object.assign = function () {
let target = arguments[0];
for (let i = 1; i < arguments.length; i++) {
let source = arguments[i];
for (let key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
}
// 通用免嗅探播放
let common_lazy = `js:
let html = request(input);
let hconf = html.match(/r player_.*?=(.*?)</)[1];
let json = JSON5.parse(hconf);
let url = json.url;
if (json.encrypt == '1') {
url = unescape(url);
} else if (json.encrypt == '2') {
url = unescape(base64Decode(url));
}
if (/\\.(m3u8|mp4|m4a|mp3)/.test(url)) {
input = {
parse: 0,
jx: 0,
url: url,
};
} else {
input;
}`;
// 默认嗅探播放
let def_lazy = `js:
input = { parse: 1, url: input, js: '' };`;
// 采集站播放
let cj_lazy = `js:
if (/\\.(m3u8|mp4)/.test(input)) {
input = { parse: 0, url: input };
} else {
if (rule.parse_url.startsWith('json:')) {
let purl = rule.parse_url.replace('json:', '') + input;
let html = request(purl);
let json = JSON.parse(html);
if (json.url) {
input = { parse: 0, url: json.url };
}
} else {
input = rule.parse_url + input;
}
}`;
function getMubans() {
const mubanDict = { // 模板字典
mx: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---/',
searchUrl: '/vodsearch/**----------fypage---/',
class_parse: '.top_nav li;a&&Text;a&&href;.*/(.*?)/',
searchable: 2,
quickSearch: 0,
filterable: 0,
headers: {
'User-Agent': 'MOBILE_UA',
},
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true,
推荐: '.cbox_list;*;*;*;*;*',
一级: 'ul.vodlist li;a&&title;a&&data-original;.pic_text&&Text;a&&href',
二级: {
title: 'h2&&Text;.content_detail:eq(1)&&li&&a:eq(2)&&Text',
img: '.vodlist_thumb&&data-original',
desc: '.content_detail:eq(1)&&li:eq(1)&&Text;.content_detail:eq(1)&&li&&a&&Text;.content_detail:eq(1)&&li&&a:eq(1)&&Text;.content_detail:eq(1)&&li:eq(2)&&Text;.content_detail:eq(1)&&li:eq(3)&&Text',
content: '.content_desc&&span&&Text',
tabs: '.play_source_tab&&a',
lists: '.content_playlist:eq(#id) li',
},
搜索: '*',
},
mxpro: {
title: '',
host: '', // homeUrl:'/',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
class_parse: '.navbar-items li:gt(0):lt(10);a&&Text;a&&href;/(\\d+)',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: '.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href',
一级: 'body a.module-poster-item.module-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href',
二级: {
title: 'h1&&Text;.module-info-tag-link:eq(-1)&&Text',
img: '.lazyload&&data-original||data-src||src',
desc: '.module-info-item:eq(-2)&&Text;.module-info-tag-link&&Text;.module-info-tag-link:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(1)&&Text',
content: '.module-info-introduction&&Text',
tabs: '.module-tab-item',
lists: '.module-play-list:eq(#id) a',
tab_text: 'div--small&&Text',
},
搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
}, mxone5: {
title: '',
host: '',
url: '/show/fyclass--------fypage---.html',
searchUrl: '/search/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
class_parse: '.nav-menu-items&&li;a&&Text;a&&href;.*/(.*?)\.html',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: '.module-list;.module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
一级: '.module-items .module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
二级: {
title: 'h1&&Text;.tag-link&&Text',
img: '.module-item-pic&&img&&data-src',
desc: '.video-info-items:eq(3)&&Text;.tag-link:eq(2)&&Text;.tag-link:eq(1)&&Text;.video-info-items:eq(1)&&Text;.video-info-items:eq(0)&&Text',
content: '.vod_content&&Text',
tabs: '.module-tab-item',
lists: '.module-player-list:eq(#id)&&.scroll-content&&a',
tab_text: 'div--small&&Text',
},
搜索: '.module-items .module-search-item;a&&title;img&&data-src;.video-serial&&Text;a&&href',
}, 首图: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---/',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
class_parse: '.myui-header__menu li.hidden-sm:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: 'ul.myui-vodlist.clearfix;li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
一级: '.myui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
title: '.myui-content__detail .title--span&&Text;.myui-content__detail p.data:eq(3)&&Text',
img: '.myui-content__thumb .lazyload&&data-original',
desc: '.myui-content__detail p.otherbox&&Text;.year&&Text;.myui-content__detail p.data:eq(4)&&Text;.myui-content__detail p.data:eq(2)&&Text;.myui-content__detail p.data:eq(0)&&Text',
content: '.content&&Text',
tabs: '.myui-panel__head&&li',
// tabs: '.nav-tabs&&li',
lists: '.myui-content__list:eq(#id) li',
},
搜索: '#searchList li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&Text',
}, 首图2: {
title: '',
host: '',
url: '/list/fyclass-fypage.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA', // "Cookie": ""
},
class_parse: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
title: '.stui-content__detail .title&&Text;.stui-content__detail&&p:eq(-2)&&a&&Text',
title1: '.stui-content__detail .title&&Text;.stui-content__detail&&p&&Text',
img: '.stui-content__thumb .lazyload&&data-original',
desc: '.stui-content__detail p&&Text;.stui-content__detail&&p:eq(-2)&&a:eq(2)&&Text;.stui-content__detail&&p:eq(-2)&&a:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text;.stui-content__detail p:eq(1)&&Text',
desc1: '.stui-content__detail p:eq(4)&&Text;;;.stui-content__detail p:eq(1)&&Text',
content: '.detail&&Text',
tabs: '.stui-pannel__head h3',
tabs1: '.stui-vodlist__head h3',
lists: '.stui-content__playlist:eq(#id) li',
},
搜索: 'ul.stui-vodlist__media,ul.stui-vodlist,#searchList li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&Text',
}, 默认: {
title: '',
host: '',
url: '',
searchUrl: '',
searchable: 2,
quickSearch: 0,
filterable: 0,
filter: '',
filter_url: '',
filter_def: {},
headers: {
'User-Agent': 'MOBILE_UA',
},
timeout: 5000,
class_parse: '#side-menu li;a&&Text;a&&href;/(.*?)\.html',
cate_exclude: '',
play_parse: true,
lazy: def_lazy,
double: true,
推荐: '列表1;列表2;标题;图片;描述;链接;详情',
一级: '列表;标题;图片;描述;链接;详情',
二级: {
title: 'vod_name;vod_type',
img: '图片链接',
desc: '主要信息;年代;地区;演员;导演',
content: '简介',
tabs: '',
lists: 'xx:eq(#id)&&a',
tab_text: 'body&&Text',
list_text: 'body&&Text',
list_url: 'a&&href',
},
搜索: '列表;标题;图片;描述;链接;详情',
}, vfed: {
title: '',
host: '',
url: '/index.php/vod/show/id/fyclass/page/fypage.html',
searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA',
},
class_parse: '.fed-pops-navbar&&ul.fed-part-rows&&a;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: 'ul.fed-list-info.fed-part-rows;li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
一级: '.fed-list-info&&li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
二级: {
title: 'h1.fed-part-eone&&Text;.fed-deta-content&&.fed-part-rows&&li&&Text',
img: '.fed-list-info&&a&&data-original',
desc: '.fed-deta-content&&.fed-part-rows&&li:eq(1)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(2)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(3)&&Text',
content: '.fed-part-esan&&Text',
tabs: '.fed-drop-boxs&&.fed-part-rows&&li',
lists: '.fed-play-item:eq(#id)&&ul:eq(1)&&li',
},
搜索: '.fed-deta-info;h1&&Text;.lazyload&&data-original;.fed-list-remarks&&Text;a&&href;.fed-deta-content&&Text',
}, 海螺3: {
title: '',
host: '',
searchUrl: '/v_search/**----------fypage---.html',
url: '/vod_____show/fyclass--------fypage---.html',
headers: {
'User-Agent': 'MOBILE_UA',
},
timeout: 5000,
class_parse: 'body&&.hl-nav li:gt(0);a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '明星|专题|最新|排行',
limit: 40,
play_parse: true,
lazy: common_lazy,
double: true,
推荐: '.hl-vod-list;li;a&&title;a&&data-original;.remarks&&Text;a&&href',
一级: '.hl-vod-list&&.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
二级: {
title: '.hl-dc-title&&Text;.hl-dc-content&&li:eq(6)&&Text',
img: '.hl-lazy&&data-original',
desc: '.hl-dc-content&&li:eq(10)&&Text;.hl-dc-content&&li:eq(4)&&Text;.hl-dc-content&&li:eq(5)&&Text;.hl-dc-content&&li:eq(2)&&Text;.hl-dc-content&&li:eq(3)&&Text',
content: '.hl-content-text&&Text',
tabs: '.hl-tabs&&a',
tab_text: 'a--span&&Text',
lists: '.hl-plays-list:eq(#id)&&li',
},
搜索: '.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
}, 海螺2: {
title: '',
host: '',
searchUrl: '/index.php/vod/search/page/fypage/wd/**/',
url: '/index.php/vod/show/id/fyclass/page/fypage/',
headers: {
'User-Agent': 'MOBILE_UA',
},
timeout: 5000,
class_parse: '#nav-bar li;a&&Text;a&&href;id/(.*?)/',
limit: 40,
play_parse: true,
lazy: common_lazy,
double: true,
推荐: '.list-a.size;li;a&&title;.lazy&&data-original;.bt&&Text;a&&href',
一级: '.list-a&&li;a&&title;.lazy&&data-original;.list-remarks&&Text;a&&href',
二级: {
title: 'h2&&Text;.deployment&&Text',
img: '.lazy&&data-original',
desc: '.deployment&&Text',
content: '.ec-show&&Text',
tabs: '#tag&&a',
lists: '.play_list_box:eq(#id)&&li',
},
搜索: '.search-list;a&&title;.lazy&&data-original;.deployment&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
}, 短视: {
title: '',
host: '', // homeUrl:'/',
url: '/channel/fyclass-fypage.html',
searchUrl: '/search.html?wd=**',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
class_parse: '.menu_bottom ul li;a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '解析|动态',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: '.indexShowBox;ul&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
一级: '.pic-list&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
二级: {
title: 'h1&&Text;.content-rt&&p:eq(0)&&Text',
img: '.img&&img&&data-src',
desc: '.content-rt&&p:eq(1)&&Text;.content-rt&&p:eq(2)&&Text;.content-rt&&p:eq(3)&&Text;.content-rt&&p:eq(4)&&Text;.content-rt&&p:eq(5)&&Text',
content: '.zkjj_a&&Text',
tabs: '.py-tabs&&option',
lists: '.player:eq(#id) li',
},
搜索: '.sr_lists&&ul&&li;h3&&Text;img&&data-src;.int&&p:eq(0)&&Text;a&&href',
}, 短视2: {
title: '',
host: '',
class_name: '电影&电视剧&综艺&动漫',
class_url: '1&2&3&4',
searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50',
searchable: 2,
quickSearch: 0,
headers: {'User-Agent': 'MOBILE_UA'},
url: '/index.php/api/vod#type=fyclass&page=fypage',
filterable: 0,//是否启用分类筛选,
filter_url: '',
filter: {},
filter_def: {},
detailUrl: '/index.php/vod/detail/id/fyid.html',
play_parse: true,
lazy: common_lazy,
limit: 6,
推荐: '.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href',
一级: 'js:let body=input.split("#")[1];let t=Math.round(new Date/1e3).toString();let key=md5("DS"+t+"DCC147D11943AF75");let url=input.split("#")[0];body=body+"&time="+t+"&key="+key;print(body);fetch_params.body=body;let html=post(url,fetch_params);let data=JSON.parse(html);VODS=data.list.map(function(it){it.vod_pic=urljoin2(input.split("/i")[0],it.vod_pic);return it});',
二级: {
title: '.slide-info-title&&Text;.slide-info:eq(2)--strong&&Text',
img: '.detail-pic&&data-original',
desc: '.slide-info-remarks&&Text;.slide-info-remarks:eq(1)&&Text;.slide-info-remarks:eq(2)&&Text;.slide-info:eq(1)--strong&&Text;.info-parameter&&ul&&li:eq(3)&&Text',
content: '#height_limit&&Text',
tabs: '.anthology.wow.fadeInUp.animated&&.swiper-wrapper&&a',
tab_text: 'a--span&&Text',
lists: '.anthology-list-box:eq(#id) li',
},
搜索: 'json:list;name;pic;;id',
}, 采集1: {
title: '',
host: '',
homeTid: '13',
homeUrl: '/api.php/provide/vod/?ac=detail&t={{rule.homeTid}}',
detailUrl: '/api.php/provide/vod/?ac=detail&ids=fyid',
searchUrl: '/api.php/provide/vod/?wd=**&pg=fypage',
url: '/api.php/provide/vod/?ac=detail&pg=fypage&t=fyclass',
headers: {'User-Agent': 'MOBILE_UA'},
timeout: 5000, // class_name: '电影&电视剧&综艺&动漫',
// class_url: '1&2&3&4',
// class_parse:'js:let html=request(input);input=JSON.parse(html).class;',
class_parse: 'json:class;',
limit: 20,
multi: 1,
searchable: 2,//是否启用全局搜索,
quickSearch: 1,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
play_parse: true,
parse_url: '',
lazy: cj_lazy,
推荐: '*',
一级: 'json:list;vod_name;vod_pic;vod_remarks;vod_id;vod_play_from',
二级: `js:
let html=request(input);
html=JSON.parse(html);
let data=html.list;
VOD=data[0];`,
搜索: '*',
},
};
return JSON.parse(JSON.stringify(mubanDict));
}
var mubanDict = getMubans();
var muban = getMubans();
export default {muban, getMubans};

@ -29,7 +29,7 @@ var rule = {
play_parse: true,
lazy: $js.toString(() => {
let d = [];
let url1=JSON.parse(request("https://vip.ysctv.cn/api/index?parsesId=26&appid=4&videoUrl="+input)).url;
let url1=JSON.parse(request("https://vip.ysctv.cn/api/index?parsesId=23&appid=4&videoUrl="+input)).url;
var withoutDomain = url1.replace(/^https:\/\/baidu\.con\//, '');
var first16Chars = withoutDomain.substring(0, 16);
var remainingString = withoutDomain.substring(16);

4643
小米/json/Bili.json Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -508,90 +508,10 @@ http://gslbserv.itv.cmvideo.cn:80/3000000020000011530/index.m3u8?channel-id=Fifa
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「移动」",咪咕直播 𝟜𝟝「移动」
http://gslbserv.itv.cmvideo.cn:80/3000000020000011531/index.m3u8?channel-id=FifastbLive&Contentid=3000000020000011531&livemode=1&stbId=3
#INSERT_HERE
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」13:00 3X决赛 解说
https://tv.iill.top/NBA/1
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「中超」15:15 联赛 青岛西海岸vs深圳新鹏城 解说
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「NBL」19:10 总决赛 安徽文一vs香港金牛 解说
https://tv.iill.top/Migu/1
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「中超」15:15 联赛 青岛西海岸vs深圳新鹏城 赛场原声
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「NBL」19:10 原声
https://tv.iill.top/Migu/2
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」15:20 季前赛 江苏肯帝亚vs上海久事 解说
https://tv.iill.top/Migu/3
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」15:20 清流播出
https://tv.iill.top/Migu/4
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」15:50 季前赛 宁波町渥vs深圳马可波罗 解说
https://tv.iill.top/Migu/5
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」15:50 清流播出
https://tv.iill.top/Migu/6
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」15:50 季前赛 广州龙狮vs天津先行者 解说
https://tv.iill.top/Migu/7
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」15:50 清流播出
https://tv.iill.top/Migu/8
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」15:50 季前赛 新疆伊力特vs青岛国信水产 解说
https://tv.iill.top/Migu/9
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」15:50 清流播出
https://tv.iill.top/Migu/10
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」15:50 季前赛 浙江广厦vs九台农商银行 解说
https://tv.iill.top/Migu/11
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」15:50 清流播出
https://tv.iill.top/Migu/12
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「意甲」18:15 联赛 佛罗伦萨vs拉齐奥 解说
https://tv.iill.top/Migu/13
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「中超」18:45 联赛 南通支云vs青岛海牛 解说
https://tv.iill.top/Migu/14
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「中超」18:45 联赛 南通支云vs青岛海牛 赛场原声
https://tv.iill.top/Migu/15
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:15 季前赛 广东华南虎vs福建浔兴股份 解说
https://tv.iill.top/Migu/16
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:15 清流播出
https://tv.iill.top/Migu/17
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:15 清流播出
https://tv.iill.top/Migu/18
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:20 季前赛 浙江稠州金租vs山东高速 解说
https://tv.iill.top/Migu/19
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:20 清流播出
https://tv.iill.top/Migu/20
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:20 季前赛 北京北汽vs辽宁本钢 解说
https://tv.iill.top/Migu/21
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:20 清流播出
https://tv.iill.top/Migu/22
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:20 季前赛 山西汾酒vs北京控股 解说
https://tv.iill.top/Migu/23
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:20 清流播出
https://tv.iill.top/Migu/24
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「中超」19:45 联赛 浙江vs沧州雄狮 解说
https://tv.iill.top/Migu/25
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「中超」19:45 联赛 浙江vs沧州雄狮 赛场原声
https://tv.iill.top/Migu/26
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「西甲」19:50 联赛 赫塔菲vs莱加内斯 解说
https://tv.iill.top/Migu/27
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:50 季前赛 南京头排苏酒vs四川金强 解说
https://tv.iill.top/Migu/28
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:50 清流播出
https://tv.iill.top/Migu/29
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「英超」20:50 联赛 布莱顿vs诺丁汉森林 解说
https://tv.iill.top/Migu/30
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「意甲」20:50 联赛 蒙扎vs博洛尼亚 解说
https://tv.iill.top/Migu/31
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「法甲」20:50 联赛 摩纳哥vs勒阿弗尔 解说
https://tv.iill.top/Migu/32
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「西甲」22:05 联赛 毕尔巴鄂竞技vs塞尔塔 解说
https://tv.iill.top/Migu/33
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「法甲」22:50 联赛 蒙彼利埃vs欧塞尔 解说
https://tv.iill.top/Migu/34
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「法甲」22:50 联赛 昂热vs南特 解说
https://tv.iill.top/Migu/35
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「法甲」22:50 联赛 布雷斯特vs图卢兹 解说
https://tv.iill.top/Migu/36
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「英超」23:15 联赛 曼城vs阿森纳 解说
https://tv.iill.top/Migu/37
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「英超」23:15 联赛 曼城vs阿森纳 粤语
https://tv.iill.top/Migu/38
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「英超」23:15 联赛 曼城vs阿森纳 闽南语
https://tv.iill.top/Migu/39
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「英超」23:15 联赛 曼城vs阿森纳 沪语
https://tv.iill.top/Migu/40
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「意甲」23:50 联赛 罗马vs乌迪内斯 解说
https://tv.iill.top/Migu/41
#EXTINF:-1 tvg-id="CCTV-1" tvg-name="CCTV1" tvg-logo="https://epg.iill.top/logo/CCTV1.png" group-title="•咪咕「TV」",CCTV 1 综合
https://tv.iill.top/migu/cctv1
#EXTINF:-1 tvg-id="CCTV-2" tvg-name="CCTV2" tvg-logo="https://epg.iill.top/logo/CCTV2.png" group-title="•咪咕「TV」",CCTV 2 财经

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,412 +1,304 @@
if (typeof Object.assign !== 'function') {
Object.assign = function () {
let target = arguments[0];
for (let i = 1; i < arguments.length; i++) {
let source = arguments[i];
for (let key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
}
// 通用免嗅探播放
let common_lazy = `js:
let html = request(input);
let hconf = html.match(/r player_.*?=(.*?)</)[1];
let json = JSON5.parse(hconf);
let url = json.url;
if (json.encrypt == '1') {
url = unescape(url);
} else if (json.encrypt == '2') {
url = unescape(base64Decode(url));
}
if (/\\.(m3u8|mp4|m4a|mp3)/.test(url)) {
input = {
parse: 0,
jx: 0,
url: url,
};
} else {
input;
}`;
// 默认嗅探播放
let def_lazy = `js:
input = { parse: 1, url: input, js: '' };`;
// 采集站播放
let cj_lazy = `js:
if (/\\.(m3u8|mp4)/.test(input)) {
input = { parse: 0, url: input };
} else {
if (rule.parse_url.startsWith('json:')) {
let purl = rule.parse_url.replace('json:', '') + input;
let html = request(purl);
let json = JSON.parse(html);
if (json.url) {
input = { parse: 0, url: json.url };
}
} else {
input = rule.parse_url + input;
}
}`;
function getMubans() {
const mubanDict = { // 模板字典
mx: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---/',
searchUrl: '/vodsearch/**----------fypage---/',
class_parse: '.top_nav li;a&&Text;a&&href;.*/(.*?)/',
searchable: 2,
quickSearch: 0,
filterable: 0,
headers: {
'User-Agent': 'MOBILE_UA',
},
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true,
推荐: '.cbox_list;*;*;*;*;*',
一级: 'ul.vodlist li;a&&title;a&&data-original;.pic_text&&Text;a&&href',
二级: {
title: 'h2&&Text;.content_detail:eq(1)&&li&&a:eq(2)&&Text',
img: '.vodlist_thumb&&data-original',
desc: '.content_detail:eq(1)&&li:eq(1)&&Text;.content_detail:eq(1)&&li&&a&&Text;.content_detail:eq(1)&&li&&a:eq(1)&&Text;.content_detail:eq(1)&&li:eq(2)&&Text;.content_detail:eq(1)&&li:eq(3)&&Text',
content: '.content_desc&&span&&Text',
tabs: '.play_source_tab&&a',
lists: '.content_playlist:eq(#id) li',
},
搜索: '*',
},
mxpro: {
title: '',
host: '', // homeUrl:'/',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
class_parse: '.navbar-items li:gt(0):lt(10);a&&Text;a&&href;/(\\d+)',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: '.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href',
一级: 'body a.module-poster-item.module-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href',
二级: {
title: 'h1&&Text;.module-info-tag-link:eq(-1)&&Text',
img: '.lazyload&&data-original||data-src||src',
desc: '.module-info-item:eq(-2)&&Text;.module-info-tag-link&&Text;.module-info-tag-link:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(1)&&Text',
content: '.module-info-introduction&&Text',
tabs: '.module-tab-item',
lists: '.module-play-list:eq(#id) a',
tab_text: 'div--small&&Text',
},
搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
}, mxone5: {
title: '',
host: '',
url: '/show/fyclass--------fypage---.html',
searchUrl: '/search/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
class_parse: '.nav-menu-items&&li;a&&Text;a&&href;.*/(.*?)\.html',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: '.module-list;.module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
一级: '.module-items .module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
二级: {
title: 'h1&&Text;.tag-link&&Text',
img: '.module-item-pic&&img&&data-src',
desc: '.video-info-items:eq(3)&&Text;.tag-link:eq(2)&&Text;.tag-link:eq(1)&&Text;.video-info-items:eq(1)&&Text;.video-info-items:eq(0)&&Text',
content: '.vod_content&&Text',
tabs: '.module-tab-item',
lists: '.module-player-list:eq(#id)&&.scroll-content&&a',
tab_text: 'div--small&&Text',
},
搜索: '.module-items .module-search-item;a&&title;img&&data-src;.video-serial&&Text;a&&href',
}, 首图: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---/',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
class_parse: '.myui-header__menu li.hidden-sm:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: 'ul.myui-vodlist.clearfix;li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
一级: '.myui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
title: '.myui-content__detail .title--span&&Text;.myui-content__detail p.data:eq(3)&&Text',
img: '.myui-content__thumb .lazyload&&data-original',
desc: '.myui-content__detail p.otherbox&&Text;.year&&Text;.myui-content__detail p.data:eq(4)&&Text;.myui-content__detail p.data:eq(2)&&Text;.myui-content__detail p.data:eq(0)&&Text',
content: '.content&&Text',
tabs: '.myui-panel__head&&li',
// tabs: '.nav-tabs&&li',
lists: '.myui-content__list:eq(#id) li',
},
搜索: '#searchList li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&Text',
}, 首图2: {
title: '',
host: '',
url: '/list/fyclass-fypage.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA', // "Cookie": ""
},
class_parse: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
title: '.stui-content__detail .title&&Text;.stui-content__detail&&p:eq(-2)&&a&&Text',
title1: '.stui-content__detail .title&&Text;.stui-content__detail&&p&&Text',
img: '.stui-content__thumb .lazyload&&data-original',
desc: '.stui-content__detail p&&Text;.stui-content__detail&&p:eq(-2)&&a:eq(2)&&Text;.stui-content__detail&&p:eq(-2)&&a:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text;.stui-content__detail p:eq(1)&&Text',
desc1: '.stui-content__detail p:eq(4)&&Text;;;.stui-content__detail p:eq(1)&&Text',
content: '.detail&&Text',
tabs: '.stui-pannel__head h3',
tabs1: '.stui-vodlist__head h3',
lists: '.stui-content__playlist:eq(#id) li',
},
搜索: 'ul.stui-vodlist__media,ul.stui-vodlist,#searchList li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&Text',
}, 默认: {
title: '',
host: '',
url: '',
searchUrl: '',
searchable: 2,
quickSearch: 0,
filterable: 0,
filter: '',
filter_url: '',
filter_def: {},
headers: {
'User-Agent': 'MOBILE_UA',
},
timeout: 5000,
class_parse: '#side-menu li;a&&Text;a&&href;/(.*?)\.html',
cate_exclude: '',
play_parse: true,
lazy: def_lazy,
double: true,
推荐: '列表1;列表2;标题;图片;描述;链接;详情',
一级: '列表;标题;图片;描述;链接;详情',
二级: {
title: 'vod_name;vod_type',
img: '图片链接',
desc: '主要信息;年代;地区;演员;导演',
content: '简介',
tabs: '',
lists: 'xx:eq(#id)&&a',
tab_text: 'body&&Text',
list_text: 'body&&Text',
list_url: 'a&&href',
},
搜索: '列表;标题;图片;描述;链接;详情',
}, vfed: {
title: '',
host: '',
url: '/index.php/vod/show/id/fyclass/page/fypage.html',
searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA',
},
class_parse: '.fed-pops-navbar&&ul.fed-part-rows&&a;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: 'ul.fed-list-info.fed-part-rows;li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
一级: '.fed-list-info&&li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
二级: {
title: 'h1.fed-part-eone&&Text;.fed-deta-content&&.fed-part-rows&&li&&Text',
img: '.fed-list-info&&a&&data-original',
desc: '.fed-deta-content&&.fed-part-rows&&li:eq(1)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(2)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(3)&&Text',
content: '.fed-part-esan&&Text',
tabs: '.fed-drop-boxs&&.fed-part-rows&&li',
lists: '.fed-play-item:eq(#id)&&ul:eq(1)&&li',
},
搜索: '.fed-deta-info;h1&&Text;.lazyload&&data-original;.fed-list-remarks&&Text;a&&href;.fed-deta-content&&Text',
}, 海螺3: {
title: '',
host: '',
searchUrl: '/v_search/**----------fypage---.html',
url: '/vod_____show/fyclass--------fypage---.html',
headers: {
'User-Agent': 'MOBILE_UA',
},
timeout: 5000,
class_parse: 'body&&.hl-nav li:gt(0);a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '明星|专题|最新|排行',
limit: 40,
play_parse: true,
lazy: common_lazy,
double: true,
推荐: '.hl-vod-list;li;a&&title;a&&data-original;.remarks&&Text;a&&href',
一级: '.hl-vod-list&&.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
二级: {
title: '.hl-dc-title&&Text;.hl-dc-content&&li:eq(6)&&Text',
img: '.hl-lazy&&data-original',
desc: '.hl-dc-content&&li:eq(10)&&Text;.hl-dc-content&&li:eq(4)&&Text;.hl-dc-content&&li:eq(5)&&Text;.hl-dc-content&&li:eq(2)&&Text;.hl-dc-content&&li:eq(3)&&Text',
content: '.hl-content-text&&Text',
tabs: '.hl-tabs&&a',
tab_text: 'a--span&&Text',
lists: '.hl-plays-list:eq(#id)&&li',
},
搜索: '.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
}, 海螺2: {
title: '',
host: '',
searchUrl: '/index.php/vod/search/page/fypage/wd/**/',
url: '/index.php/vod/show/id/fyclass/page/fypage/',
headers: {
'User-Agent': 'MOBILE_UA',
},
timeout: 5000,
class_parse: '#nav-bar li;a&&Text;a&&href;id/(.*?)/',
limit: 40,
play_parse: true,
lazy: common_lazy,
double: true,
推荐: '.list-a.size;li;a&&title;.lazy&&data-original;.bt&&Text;a&&href',
一级: '.list-a&&li;a&&title;.lazy&&data-original;.list-remarks&&Text;a&&href',
二级: {
title: 'h2&&Text;.deployment&&Text',
img: '.lazy&&data-original',
desc: '.deployment&&Text',
content: '.ec-show&&Text',
tabs: '#tag&&a',
lists: '.play_list_box:eq(#id)&&li',
},
搜索: '.search-list;a&&title;.lazy&&data-original;.deployment&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
}, 短视: {
title: '',
host: '', // homeUrl:'/',
url: '/channel/fyclass-fypage.html',
searchUrl: '/search.html?wd=**',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
class_parse: '.menu_bottom ul li;a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '解析|动态',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: '.indexShowBox;ul&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
一级: '.pic-list&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
二级: {
title: 'h1&&Text;.content-rt&&p:eq(0)&&Text',
img: '.img&&img&&data-src',
desc: '.content-rt&&p:eq(1)&&Text;.content-rt&&p:eq(2)&&Text;.content-rt&&p:eq(3)&&Text;.content-rt&&p:eq(4)&&Text;.content-rt&&p:eq(5)&&Text',
content: '.zkjj_a&&Text',
tabs: '.py-tabs&&option',
lists: '.player:eq(#id) li',
},
搜索: '.sr_lists&&ul&&li;h3&&Text;img&&data-src;.int&&p:eq(0)&&Text;a&&href',
}, 短视2: {
title: '',
host: '',
class_name: '电影&电视剧&综艺&动漫',
class_url: '1&2&3&4',
searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50',
searchable: 2,
quickSearch: 0,
headers: {'User-Agent': 'MOBILE_UA'},
url: '/index.php/api/vod#type=fyclass&page=fypage',
filterable: 0,//是否启用分类筛选,
filter_url: '',
filter: {},
filter_def: {},
detailUrl: '/index.php/vod/detail/id/fyid.html',
play_parse: true,
lazy: common_lazy,
limit: 6,
推荐: '.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href',
一级: 'js:let body=input.split("#")[1];let t=Math.round(new Date/1e3).toString();let key=md5("DS"+t+"DCC147D11943AF75");let url=input.split("#")[0];body=body+"&time="+t+"&key="+key;print(body);fetch_params.body=body;let html=post(url,fetch_params);let data=JSON.parse(html);VODS=data.list.map(function(it){it.vod_pic=urljoin2(input.split("/i")[0],it.vod_pic);return it});',
二级: {
title: '.slide-info-title&&Text;.slide-info:eq(2)--strong&&Text',
img: '.detail-pic&&data-original',
desc: '.slide-info-remarks&&Text;.slide-info-remarks:eq(1)&&Text;.slide-info-remarks:eq(2)&&Text;.slide-info:eq(1)--strong&&Text;.info-parameter&&ul&&li:eq(3)&&Text',
content: '#height_limit&&Text',
tabs: '.anthology.wow.fadeInUp.animated&&.swiper-wrapper&&a',
tab_text: 'a--span&&Text',
lists: '.anthology-list-box:eq(#id) li',
},
搜索: 'json:list;name;pic;;id',
}, 采集1: {
title: '',
host: '',
homeTid: '13',
homeUrl: '/api.php/provide/vod/?ac=detail&t={{rule.homeTid}}',
detailUrl: '/api.php/provide/vod/?ac=detail&ids=fyid',
searchUrl: '/api.php/provide/vod/?wd=**&pg=fypage',
url: '/api.php/provide/vod/?ac=detail&pg=fypage&t=fyclass',
headers: {'User-Agent': 'MOBILE_UA'},
timeout: 5000, // class_name: '电影&电视剧&综艺&动漫',
// class_url: '1&2&3&4',
// class_parse:'js:let html=request(input);input=JSON.parse(html).class;',
class_parse: 'json:class;',
limit: 20,
multi: 1,
searchable: 2,//是否启用全局搜索,
quickSearch: 1,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
play_parse: true,
parse_url: '',
lazy: cj_lazy,
推荐: '*',
一级: 'json:list;vod_name;vod_pic;vod_remarks;vod_id;vod_play_from',
二级: `js:
let html=request(input);
html=JSON.parse(html);
let data=html.list;
VOD=data[0];`,
搜索: '*',
},
};
return JSON.parse(JSON.stringify(mubanDict));
}
var mubanDict = getMubans();
var muban = getMubans();
export default {muban, getMubans};
if (typeof Object.assign != 'function') {
Object.assign = function () {
var target = arguments[0];
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
}
function getMubans() {
var mubanDict = { // 模板字典
mxpro: {
title: '',
host: '',
// homeUrl:'/',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.navbar-items li:gt(2):lt(8);a&&Text;a&&href;/(\\d+).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: 'body a.module-poster-item.module-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href',
二级: {
"title": "h1&&Text;.module-info-tag&&Text",
"img": ".lazyload&&data-original",
"desc": ".module-info-item:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(3)&&Text",
"content": ".module-info-introduction&&Text",
"tabs": ".module-tab-item",
"lists": ".module-play-list:eq(#id) a"
},
搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
},
mxone5: {
title: '',
host: '',
url: '/show/fyclass--------fypage---.html',
searchUrl: '/search/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
class_parse: '.nav-menu-items&&li;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.module-list;.module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.module-items .module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
二级: {
"title": "h1&&Text;.tag-link&&Text",
"img": ".module-item-pic&&img&&data-src",
"desc": ".video-info-items:eq(0)&&Text;.video-info-items:eq(1)&&Text;.video-info-items:eq(2)&&Text;.video-info-items:eq(3)&&Text",
"content": ".vod_content&&Text",
"tabs": ".module-tab-item",
"lists": ".module-player-list:eq(#id)&&.scroll-content&&a"
},
搜索: '.module-items .module-search-item;a&&title;img&&data-src;.video-serial&&Text;a&&href',
},
首图: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---/',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.myui-header__menu li.hidden-sm:gt(0):lt(5);a&&Text;a&&href;/(\\d+).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.myui-vodlist.clearfix;li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.myui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
"title": ".myui-content__detail .title&&Text;.myui-content__detail p:eq(-2)&&Text",
"img": ".myui-content__thumb .lazyload&&data-original",
"desc": ".myui-content__detail p:eq(0)&&Text;.myui-content__detail p:eq(1)&&Text;.myui-content__detail p:eq(2)&&Text",
"content": ".content&&Text",
"tabs": ".nav-tabs:eq(0) li",
"lists": ".myui-content__list:eq(#id) li"
},
搜索: '#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
},
首图2: {
title: '',
host: '',
url: '/list/fyclass-fypage.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA',
// "Cookie": ""
},
// class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
class_parse: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
"title": ".stui-content__detail .title&&Text;.stui-content__detail p:eq(-2)&&Text",
"img": ".stui-content__thumb .lazyload&&data-original",
"desc": ".stui-content__detail p:eq(0)&&Text;.stui-content__detail p:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text",
"content": ".detail&&Text",
"tabs": ".stui-vodlist__head h3",
"lists": ".stui-content__playlist:eq(#id) li"
},
搜索: 'ul.stui-vodlist__media:eq(0) li,ul.stui-vodlist:eq(0) li,#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
搜索1: 'ul.stui-vodlist&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
搜索2: 'ul.stui-vodlist__media&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
},
默认: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/-------------.html?wd=**',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'MOBILE_UA',
},
play_parse: true,
lazy: '',
limit: 6,
double: true, // 推荐内容是否双层定位
},
vfed: {
title: '',
host: '',
url: '/index.php/vod/show/id/fyclass/page/fypage.html',
searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA',
},
// class_parse:'.fed-pops-navbar&&ul.fed-part-rows&&a.fed-part-eone:gt(0):lt(5);a&&Text;a&&href;.*/(.*?).html',
class_parse: '.fed-pops-navbar&&ul.fed-part-rows&&a;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.fed-list-info.fed-part-rows;li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.fed-list-info&&li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
二级: {
"title": "h1.fed-part-eone&&Text;.fed-deta-content&&.fed-part-rows&&li&&Text",
"img": ".fed-list-info&&a&&data-original",
"desc": ".fed-deta-content&&.fed-part-rows&&li:eq(1)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(2)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(3)&&Text",
"content": ".fed-part-esan&&Text",
"tabs": ".fed-drop-boxs&&.fed-part-rows&&li",
"lists": ".fed-play-item:eq(#id)&&ul:eq(1)&&li"
},
搜索: '.fed-deta-info;h1&&Text;.lazyload&&data-original;.fed-list-remarks&&Text;a&&href;.fed-deta-content&&Text',
},
海螺3: {
title: '',
host: '',
searchUrl: '/v_search/**----------fypage---.html',
url: '/vod_____show/fyclass--------fypage---.html',
headers: {
'User-Agent': 'MOBILE_UA'
},
timeout: 5000,
class_parse: 'body&&.hl-nav li:gt(0);a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '明星|专题|最新|排行',
limit: 40,
play_parse: true,
lazy: '',
推荐: '.hl-vod-list;li;a&&title;a&&data-original;.remarks&&Text;a&&href',
double: true,
一级: '.hl-vod-list&&.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
二级: {
"title": ".hl-infos-title&&Text;.hl-text-conch&&Text",
"img": ".hl-lazy&&data-original",
"desc": ".hl-infos-content&&.hl-text-conch&&Text",
"content": ".hl-content-text&&Text",
"tabs": ".hl-tabs&&a",
"lists": ".hl-plays-list:eq(#id)&&li"
},
搜索: '.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
},
海螺2: {
title: '',
host: '',
searchUrl: '/index.php/vod/search/page/fypage/wd/**/',
url: '/index.php/vod/show/id/fyclass/page/fypage/',
headers: {
'User-Agent': 'MOBILE_UA'
},
timeout: 5000,
class_parse: '#nav-bar li;a&&Text;a&&href;id/(.*?)/',
limit: 40,
play_parse: true,
lazy: '',
推荐: '.list-a.size;li;a&&title;.lazy&&data-original;.bt&&Text;a&&href',
double: true,
一级: '.list-a&&li;a&&title;.lazy&&data-original;.list-remarks&&Text;a&&href',
二级: {
"title": "h2&&Text;.deployment&&Text",
"img": ".lazy&&data-original",
"desc": ".deployment&&Text",
"content": ".ec-show&&Text",
"tabs": "#tag&&a",
"lists": ".play_list_box:eq(#id)&&li"
},
搜索: '.search-list;a&&title;.lazy&&data-original;.deployment&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
},
短视: {
title: '',
host: '',
// homeUrl:'/',
url: '/channel/fyclass-fypage.html',
searchUrl: '/search.html?wd=**',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.menu_bottom ul li;a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '解析|动态',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.indexShowBox;ul&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.pic-list&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
二级: {
"title": "h1&&Text;.content-rt&&p:eq(0)&&Text",
"img": ".img&&img&&data-src",
"desc": ".content-rt&&p:eq(1)&&Text;.content-rt&&p:eq(2)&&Text;.content-rt&&p:eq(3)&&Text;.content-rt&&p:eq(4)&&Text;.content-rt&&p:eq(5)&&Text",
"content": ".zkjj_a&&Text",
"tabs": ".py-tabs&&option",
"lists": ".player:eq(#id) li"
},
搜索: '.sr_lists&&ul&&li;h3&&Text;img&&data-src;.int&&p:eq(0)&&Text;a&&href',
},
短视2:{
title: '',
host: '',
class_name:'电影&电视剧&综艺&动漫',
class_url:'1&2&3&4',
searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50',
searchable: 2,
quickSearch: 0,
headers:{'User-Agent':'MOBILE_UA'},
url: '/index.php/api/vod#type=fyclass&page=fypage',
filterable:0,//是否启用分类筛选,
filter_url:'',
filter: {},
filter_def:{},
detailUrl:'/index.php/vod/detail/id/fyid.html',
play_parse: true,
lazy: '',
limit: 6,
推荐:'.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href',
一级:'js:let body=input.split("#")[1];let t=Math.round(new Date/1e3).toString();let key=md5("DS"+t+"DCC147D11943AF75");let url=input.split("#")[0];body=body+"&time="+t+"&key="+key;print(body);fetch_params.body=body;let html=post(url,fetch_params);let data=JSON.parse(html);VODS=data.list.map(function(it){it.vod_pic=urljoin2(input.split("/i")[0],it.vod_pic);return it});',
二级:{
"title":".slide-info-title&&Text;.slide-info:eq(3)--strong&&Text",
"img":".detail-pic&&data-original",
"desc":".fraction&&Text;.slide-info-remarks:eq(1)&&Text;.slide-info-remarks:eq(2)&&Text;.slide-info:eq(2)--strong&&Text;.slide-info:eq(1)--strong&&Text",
"content":"#height_limit&&Text",
"tabs":".anthology.wow.fadeInUp.animated&&.swiper-wrapper&&a",
"tab_text":".swiper-slide&&Text",
"lists":".anthology-list-box:eq(#id) li"
},
搜索:'json:list;name;pic;;id',
}
};
return JSON.parse(JSON.stringify(mubanDict));
}
var mubanDict = getMubans();
var muban = getMubans();
export default {muban,getMubans};

@ -1 +0,0 @@
未找到对应的下载链接

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

@ -1,150 +0,0 @@
/**
* 影视TV 超連結跳轉支持
* https://t.me/fongmi_offical/
* https://github.com/FongMi/Release/tree/main/apk
*/
var rule = {
title: '荐片',
host: 'http://api2.rinhome.com',
homeUrl: '/api/tag/hand?code=unknown601193cf375db73d&channel=wandoujia',//网站的首页链接,用于分类获取和推荐获取
// url:'/api/crumb/list?area=0&category_id=fyclass&page=fypage&type=0&limit=24&fyfilter',
url: '/api/crumb/list?page=fypage&type=0&limit=24&fyfilter',
class_name: '全部&电影&电视剧&动漫&综艺', // 筛选 /api/term/ad_fenlei?limit=10&page=1
class_url: '0&1&2&3&4',
detailUrl: '/api/node/detail?channel=wandoujia&token=&id=fyid',//二级详情拼接链接(json格式用)
searchUrl: '/api/video/search?key=**&page=fypage',
searchable: 2,
quickSearch: 0,
filterable: 1,
filter: {
"0":[{"key":"area","name":"地區","value":[{"n":"全部","v":"0"},{"n":"国产","v":"1"},{"n":"中国香港","v":"3"},{"n":"中国台湾","v":"6"},{"n":"美国","v":"5"},{"n":"韩国","v":"18"},{"n":"日本","v":"2"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":"0"},{"n":"2023","v":"153"},{"n":"2022","v":"101"},{"n":"2021","v":"118"},{"n":"2020","v":"16"},{"n":"2019","v":"7"},{"n":"2018","v":"2"},{"n":"2017","v":"3"},{"n":"2016","v":"22"}]},{"key":"sort","name":"排序","value":[{"n":"热门","v":"hot"},{"n":"评分","v":"rating"},{"n":"更新","v":"update"}]}],
"1":[{"key":"cateId","name":"分类","value":[{"n":"全部","v":"1"},{"n":"首推","v":"5"},{"n":"动作","v":"6"},{"n":"喜剧","v":"7"},{"n":"战争","v":"8"},{"n":"恐怖","v":"9"},{"n":"剧情","v":"10"},{"n":"爱情","v":"11"},{"n":"科幻","v":"12"},{"n":"动画","v":"13"}]},{"key":"area","name":"地區","value":[{"n":"全部","v":"0"},{"n":"国产","v":"1"},{"n":"中国香港","v":"3"},{"n":"中国台湾","v":"6"},{"n":"美国","v":"5"},{"n":"韩国","v":"18"},{"n":"日本","v":"2"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":"0"},{"n":"2023","v":"153"},{"n":"2022","v":"101"},{"n":"2021","v":"118"},{"n":"2020","v":"16"},{"n":"2019","v":"7"},{"n":"2018","v":"2"},{"n":"2017","v":"3"},{"n":"2016","v":"22"}]},{"key":"sort","name":"排序","value":[{"n":"热门","v":"hot"},{"n":"评分","v":"rating"},{"n":"更新","v":"update"}]}],
"2":[{"key":"cateId","name":"分类","value":[{"n":"全部","v":"2"},{"n":"首推","v":"14"},{"n":"国产","v":"15"},{"n":"港台","v":"16"},{"n":"日韩","v":"17"},{"n":"海外","v":"18"}]},{"key":"area","name":"地區","value":[{"n":"全部","v":"0"},{"n":"国产","v":"1"},{"n":"中国香港","v":"3"},{"n":"中国台湾","v":"6"},{"n":"美国","v":"5"},{"n":"韩国","v":"18"},{"n":"日本","v":"2"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":"0"},{"n":"2023","v":"153"},{"n":"2022","v":"101"},{"n":"2021","v":"118"},{"n":"2020","v":"16"},{"n":"2019","v":"7"},{"n":"2018","v":"2"},{"n":"2017","v":"3"},{"n":"2016","v":"22"}]},{"key":"sort","name":"排序","value":[{"n":"热门","v":"hot"},{"n":"评分","v":"rating"},{"n":"更新","v":"update"}]}],
"3":[{"key":"cateId","name":"分类","value":[{"n":"全部","v":"3"},{"n":"首推","v":"19"},{"n":"海外","v":"20"},{"n":"日本","v":"21"},{"n":"国产","v":"22"}]},{"key":"area","name":"地區","value":[{"n":"全部","v":"0"},{"n":"国产","v":"1"},{"n":"中国香港","v":"3"},{"n":"中国台湾","v":"6"},{"n":"美国","v":"5"},{"n":"韩国","v":"18"},{"n":"日本","v":"2"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":"0"},{"n":"2023","v":"153"},{"n":"2022","v":"101"},{"n":"2021","v":"118"},{"n":"2020","v":"16"},{"n":"2019","v":"7"},{"n":"2018","v":"2"},{"n":"2017","v":"3"},{"n":"2016","v":"22"}]},{"key":"sort","name":"排序","value":[{"n":"热门","v":"hot"},{"n":"评分","v":"rating"},{"n":"更新","v":"update"}]}],
"4":[{"key":"cateId","name":"分类","value":[{"n":"全部","v":"4"},{"n":"首推","v":"23"},{"n":"国产","v":"24"},{"n":"海外","v":"25"},{"n":"港台","v":"26"}]},{"key":"area","name":"地區","value":[{"n":"全部","v":"0"},{"n":"国产","v":"1"},{"n":"中国香港","v":"3"},{"n":"中国台湾","v":"6"},{"n":"美国","v":"5"},{"n":"韩国","v":"18"},{"n":"日本","v":"2"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":"0"},{"n":"2023","v":"153"},{"n":"2022","v":"101"},{"n":"2021","v":"118"},{"n":"2020","v":"16"},{"n":"2019","v":"7"},{"n":"2018","v":"2"},{"n":"2017","v":"3"},{"n":"2016","v":"22"}]},{"key":"sort","name":"排序","value":[{"n":"热门","v":"hot"},{"n":"评分","v":"rating"},{"n":"更新","v":"update"}]}]
},
filter_url: 'area={{fl.area or "0"}}&sort={{fl.sort or "update"}}&year={{fl.year or "0"}}&category_id={{fl.cateId}}',
filter_def: {
0:{cateId:'0'},
1:{cateId:'1'},
2:{cateId:'2'},
3:{cateId:'3'},
4:{cateId:'4'}
},
headers: {
'User-Agent': 'jianpian-android/350',
'JPAUTH': 'y261ow7kF2dtzlxh1GS9EB8nbTxNmaK/QQIAjctlKiEv'
},
timeout: 5000,
limit: 8,
play_parse: true,
play_json: [{
re: '*',
json: {
parse: 0,
jx: 0
}
}],
lazy: '',
图片来源: '@Referer=www.jianpianapp.com@User-Agent=jianpian-version353',
// 推荐:'json:.video;*;*;*;*',
推荐: `js:
var d = [];
let html = request(input);
html = JSON.parse(html).data[0].video;
html.forEach(it => {
d.push({
title: it.title,
img: it.path,
desc: it.playlist.title + ' ⭐' + it.score,
url: it.id
})
});
setResult(d);
`,
// 一级:'json:data;title;path;playlist.title;id',
一级: `js:
cateObj.tid = cateObj.tid+'';
if (cateObj.tid.endsWith('_clicklink')) {
cateObj.tid = cateObj.tid.split('_')[0];
input = HOST + '/api/video/search?key=' + cateObj.tid + '&page=' + + MY_PAGE;
}
var d = [];
let html = request(input);
html = JSON.parse(html).data;
html.forEach(it => {
d.push({
title: it.title,
img: it.thumbnail||it.path,
desc: (it.mask || it.playlist.title) + ' ⭐' + it.score,
url: it.id
})
});
setResult(d);
`,
二级: `js:
function getLink(data) {
let link = data.map(it => {
return '[a=cr:' + JSON.stringify({'id':it.name+'_clicklink','name':it.name}) + '/]' + it.name + '[/a]'
}).join(', ');
return link
}
try {
let html = request(input);
html = JSON.parse(html);
let node = html.data;
VOD = {
vod_id: node.id,
vod_name: node.title,
vod_pic: node.thumbnail,
type_name: node.types[0].name,
vod_year: node.year.title,
vod_area: node.area.title,
vod_remarks: node.score,
vod_actor: getLink(node.actors),
vod_director: getLink(node.directors),
vod_content: node.description.strip()
};
if (typeof play_url === 'undefined') {
var play_url = ''
}
let playMap = {};
if (node.have_ftp_ur == 1) {
playMap["边下边播,勤去清缓存"] = node.new_ftp_list.map(it => {
return it.title + "$" + (/m3u8/.test(it.url) ? play_url + it.url : "tvbox-xg:" + it.url)
}).join('#');
}
if (node.have_m3u8_ur == 1) {
playMap["在线点播普清版"] = node.new_m3u8_list.map(it => {
return it.title + "$" + (/m3u8/.test(it.url) ? play_url + it.url : "tvbox-xg:" + it.url)
}).join('#');
}
let playFrom = [];
let playList = [];
Object.keys(playMap).forEach(key => {
playFrom.append(key);
playList.append(playMap[key])
});
VOD.vod_play_from = playFrom.join('$$$');
VOD.vod_play_url = playList.join('$$$');
} catch (e) {
log("获取二级详情页发生错误:" + e.message);
}
`,
// 搜索:'json:data;*;thumbnail;mask;*',
搜索: `js:
var d = [];
let html = request(input);
html = JSON.parse(html).data;
html.forEach(it => {
d.push({
title: it.title,
img: it.thumbnail,
desc: it.mask + ' ⭐' + it.score,
url: it.id
})
});
setResult(d);
`,
}

File diff suppressed because one or more lines are too long

@ -2,7 +2,7 @@
#EXTINF:-1 tvg-name="CCTV1" tvg-logo="https://live.fanmingming.com/tv/CCTV1.png" group-title="央视频道",CCTV-1 综合
http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226559/index.m3u8
#EXTINF:-1 tvg-name="CCTV2" tvg-logo="https://live.fanmingming.com/tv/CCTV2.png" group-title="央视频道",CCTV-2 财经
http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226540/index.m3u8
http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010211/1.m3u8
#EXTINF:-1 tvg-name="CCTV3" tvg-logo="https://live.fanmingming.com/tv/CCTV3.png" group-title="央视频道",CCTV-3 综艺
http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226021/index.m3u8
#EXTINF:-1 tvg-name="CCTV4" tvg-logo="https://live.fanmingming.com/tv/CCTV4.png" group-title="央视频道",CCTV-4 中文国际
@ -41,6 +41,12 @@ http://[2001:250:5800:1005::155]:80/liverespath/bca6167afdef7fc773405c38e695b342
http://[2001:250:5800:1005::155]:80/liverespath/e0096742f0c5be4c5225cf3c7ab1077177bec05f/index.m3u8
#EXTINF:-1 tvg-name="CHC家庭影院" tvg-logo="https://live.fanmingming.com/tv/CHC家庭影院.png" group-title="央视频道",CHC家庭影院
http://[2001:250:5800:1005::155]:80/liverespath/449d51febadb152094085d373b9af94a6ac5f1dd/index.m3u8
#EXTINF:-1 tvg-name="凤凰中文" tvg-logo="https://live.fanmingming.com/tv/凤凰卫视中文台.png" group-title="卫视频道",凤凰中文
http://58.144.154.93/qctv.fengshows.cn/live/0701pcc72.m3u8
#EXTINF:-1 tvg-name="凤凰资讯" tvg-logo="https://live.fanmingming.com/tv/凤凰卫视资讯台.png" group-title="卫视频道",凤凰资讯
http://58.144.154.93/qctv.fengshows.cn/live/0701pin72.m3u8
#EXTINF:-1 tvg-name="凤凰香港" tvg-logo="https://live.fanmingming.com/tv/凤凰卫视香港台.png" group-title="卫视频道",凤凰香港
http://58.144.154.93/qctv.fengshows.cn/live/0701phk72.m3u8
#EXTINF:-1 tvg-name="北京卫视" tvg-logo="https://live.fanmingming.com/tv/北京卫视.png" group-title="卫视频道",北京卫视
http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226450/index.m3u8
#EXTINF:-1 tvg-name="湖南卫视" tvg-logo="https://live.fanmingming.com/tv/湖南卫视.png" group-title="卫视频道",湖南卫视

File diff suppressed because it is too large Load Diff

Binary file not shown.

@ -36,10 +36,18 @@
"https://duopan.fun",
"http://labipan.com",
"https://mihdr.top",
"https://feimaoai.site"
"http://feimaoai.site"
]
}
},
{
"key": "肥猫4K",
"name": "🖍┃肥猫┃4K",
"type": 3,
"api": "./api/drpy.min.js",
"ext": "./js/肥猫4K.js",
"searchable": 0
},
{
"key": "nangua",
"name": "🎃┃南瓜┃影视",

@ -1,304 +0,0 @@
if (typeof Object.assign != 'function') {
Object.assign = function () {
var target = arguments[0];
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
}
function getMubans() {
var mubanDict = { // 模板字典
mxpro: {
title: '',
host: '',
// homeUrl:'/',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.navbar-items li:gt(2):lt(8);a&&Text;a&&href;/(\\d+).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: 'body a.module-poster-item.module-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href',
二级: {
"title": "h1&&Text;.module-info-tag&&Text",
"img": ".lazyload&&data-original",
"desc": ".module-info-item:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(3)&&Text",
"content": ".module-info-introduction&&Text",
"tabs": ".module-tab-item",
"lists": ".module-play-list:eq(#id) a"
},
搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
},
mxone5: {
title: '',
host: '',
url: '/show/fyclass--------fypage---.html',
searchUrl: '/search/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
class_parse: '.nav-menu-items&&li;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.module-list;.module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.module-items .module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
二级: {
"title": "h1&&Text;.tag-link&&Text",
"img": ".module-item-pic&&img&&data-src",
"desc": ".video-info-items:eq(0)&&Text;.video-info-items:eq(1)&&Text;.video-info-items:eq(2)&&Text;.video-info-items:eq(3)&&Text",
"content": ".vod_content&&Text",
"tabs": ".module-tab-item",
"lists": ".module-player-list:eq(#id)&&.scroll-content&&a"
},
搜索: '.module-items .module-search-item;a&&title;img&&data-src;.video-serial&&Text;a&&href',
},
首图: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---/',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.myui-header__menu li.hidden-sm:gt(0):lt(5);a&&Text;a&&href;/(\\d+).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.myui-vodlist.clearfix;li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.myui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
"title": ".myui-content__detail .title&&Text;.myui-content__detail p:eq(-2)&&Text",
"img": ".myui-content__thumb .lazyload&&data-original",
"desc": ".myui-content__detail p:eq(0)&&Text;.myui-content__detail p:eq(1)&&Text;.myui-content__detail p:eq(2)&&Text",
"content": ".content&&Text",
"tabs": ".nav-tabs:eq(0) li",
"lists": ".myui-content__list:eq(#id) li"
},
搜索: '#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
},
首图2: {
title: '',
host: '',
url: '/list/fyclass-fypage.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA',
// "Cookie": ""
},
// class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
class_parse: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
"title": ".stui-content__detail .title&&Text;.stui-content__detail p:eq(-2)&&Text",
"img": ".stui-content__thumb .lazyload&&data-original",
"desc": ".stui-content__detail p:eq(0)&&Text;.stui-content__detail p:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text",
"content": ".detail&&Text",
"tabs": ".stui-vodlist__head h3",
"lists": ".stui-content__playlist:eq(#id) li"
},
搜索: 'ul.stui-vodlist__media:eq(0) li,ul.stui-vodlist:eq(0) li,#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
搜索1: 'ul.stui-vodlist&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
搜索2: 'ul.stui-vodlist__media&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
},
默认: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/-------------.html?wd=**',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'MOBILE_UA',
},
play_parse: true,
lazy: '',
limit: 6,
double: true, // 推荐内容是否双层定位
},
vfed: {
title: '',
host: '',
url: '/index.php/vod/show/id/fyclass/page/fypage.html',
searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA',
},
// class_parse:'.fed-pops-navbar&&ul.fed-part-rows&&a.fed-part-eone:gt(0):lt(5);a&&Text;a&&href;.*/(.*?).html',
class_parse: '.fed-pops-navbar&&ul.fed-part-rows&&a;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.fed-list-info.fed-part-rows;li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.fed-list-info&&li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
二级: {
"title": "h1.fed-part-eone&&Text;.fed-deta-content&&.fed-part-rows&&li&&Text",
"img": ".fed-list-info&&a&&data-original",
"desc": ".fed-deta-content&&.fed-part-rows&&li:eq(1)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(2)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(3)&&Text",
"content": ".fed-part-esan&&Text",
"tabs": ".fed-drop-boxs&&.fed-part-rows&&li",
"lists": ".fed-play-item:eq(#id)&&ul:eq(1)&&li"
},
搜索: '.fed-deta-info;h1&&Text;.lazyload&&data-original;.fed-list-remarks&&Text;a&&href;.fed-deta-content&&Text',
},
海螺3: {
title: '',
host: '',
searchUrl: '/v_search/**----------fypage---.html',
url: '/vod_____show/fyclass--------fypage---.html',
headers: {
'User-Agent': 'MOBILE_UA'
},
timeout: 5000,
class_parse: 'body&&.hl-nav li:gt(0);a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '明星|专题|最新|排行',
limit: 40,
play_parse: true,
lazy: '',
推荐: '.hl-vod-list;li;a&&title;a&&data-original;.remarks&&Text;a&&href',
double: true,
一级: '.hl-vod-list&&.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
二级: {
"title": ".hl-infos-title&&Text;.hl-text-conch&&Text",
"img": ".hl-lazy&&data-original",
"desc": ".hl-infos-content&&.hl-text-conch&&Text",
"content": ".hl-content-text&&Text",
"tabs": ".hl-tabs&&a",
"lists": ".hl-plays-list:eq(#id)&&li"
},
搜索: '.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
},
海螺2: {
title: '',
host: '',
searchUrl: '/index.php/vod/search/page/fypage/wd/**/',
url: '/index.php/vod/show/id/fyclass/page/fypage/',
headers: {
'User-Agent': 'MOBILE_UA'
},
timeout: 5000,
class_parse: '#nav-bar li;a&&Text;a&&href;id/(.*?)/',
limit: 40,
play_parse: true,
lazy: '',
推荐: '.list-a.size;li;a&&title;.lazy&&data-original;.bt&&Text;a&&href',
double: true,
一级: '.list-a&&li;a&&title;.lazy&&data-original;.list-remarks&&Text;a&&href',
二级: {
"title": "h2&&Text;.deployment&&Text",
"img": ".lazy&&data-original",
"desc": ".deployment&&Text",
"content": ".ec-show&&Text",
"tabs": "#tag&&a",
"lists": ".play_list_box:eq(#id)&&li"
},
搜索: '.search-list;a&&title;.lazy&&data-original;.deployment&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
},
短视: {
title: '',
host: '',
// homeUrl:'/',
url: '/channel/fyclass-fypage.html',
searchUrl: '/search.html?wd=**',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.menu_bottom ul li;a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '解析|动态',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.indexShowBox;ul&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.pic-list&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
二级: {
"title": "h1&&Text;.content-rt&&p:eq(0)&&Text",
"img": ".img&&img&&data-src",
"desc": ".content-rt&&p:eq(1)&&Text;.content-rt&&p:eq(2)&&Text;.content-rt&&p:eq(3)&&Text;.content-rt&&p:eq(4)&&Text;.content-rt&&p:eq(5)&&Text",
"content": ".zkjj_a&&Text",
"tabs": ".py-tabs&&option",
"lists": ".player:eq(#id) li"
},
搜索: '.sr_lists&&ul&&li;h3&&Text;img&&data-src;.int&&p:eq(0)&&Text;a&&href',
},
短视2:{
title: '',
host: '',
class_name:'电影&电视剧&综艺&动漫',
class_url:'1&2&3&4',
searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50',
searchable: 2,
quickSearch: 0,
headers:{'User-Agent':'MOBILE_UA'},
url: '/index.php/api/vod#type=fyclass&page=fypage',
filterable:0,//是否启用分类筛选,
filter_url:'',
filter: {},
filter_def:{},
detailUrl:'/index.php/vod/detail/id/fyid.html',
play_parse: true,
lazy: '',
limit: 6,
推荐:'.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href',
一级:'js:let body=input.split("#")[1];let t=Math.round(new Date/1e3).toString();let key=md5("DS"+t+"DCC147D11943AF75");let url=input.split("#")[0];body=body+"&time="+t+"&key="+key;print(body);fetch_params.body=body;let html=post(url,fetch_params);let data=JSON.parse(html);VODS=data.list.map(function(it){it.vod_pic=urljoin2(input.split("/i")[0],it.vod_pic);return it});',
二级:{
"title":".slide-info-title&&Text;.slide-info:eq(3)--strong&&Text",
"img":".detail-pic&&data-original",
"desc":".fraction&&Text;.slide-info-remarks:eq(1)&&Text;.slide-info-remarks:eq(2)&&Text;.slide-info:eq(2)--strong&&Text;.slide-info:eq(1)--strong&&Text",
"content":"#height_limit&&Text",
"tabs":".anthology.wow.fadeInUp.animated&&.swiper-wrapper&&a",
"tab_text":".swiper-slide&&Text",
"lists":".anthology-list-box:eq(#id) li"
},
搜索:'json:list;name;pic;;id',
}
};
return JSON.parse(JSON.stringify(mubanDict));
}
var mubanDict = getMubans();
var muban = getMubans();
export default {muban,getMubans};

73
肥猫/api/drpy.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

577
肥猫/api/jinja.js Normal file

@ -0,0 +1,577 @@
/*!
* Jinja Templating for JavaScript v0.1.8
* https://github.com/sstur/jinja-js
*
* This is a slimmed-down Jinja2 implementation [http://jinja.pocoo.org/]
*
* In the interest of simplicity, it deviates from Jinja2 as follows:
* - Line statements, cycle, super, macro tags and block nesting are not implemented
* - auto escapes html by default (the filter is "html" not "e")
* - Only "html" and "safe" filters are built in
* - Filters are not valid in expressions; `foo|length > 1` is not valid
* - Expression Tests (`if num is odd`) not implemented (`is` translates to `==` and `isnot` to `!=`)
*
* Notes:
* - if property is not found, but method '_get' exists, it will be called with the property name (and cached)
* - `{% for n in obj %}` iterates the object's keys; get the value with `{% for n in obj %}{{ obj[n] }}{% endfor %}`
* - subscript notation `a[0]` takes literals or simple variables but not `a[item.key]`
* - `.2` is not a valid number literal; use `0.2`
*
*/
/*global require, exports, module, define */
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jinja = {}));
})(this, (function (jinja) {
"use strict";
var STRINGS = /'(\\.|[^'])*'|"(\\.|[^"'"])*"/g;
var IDENTS_AND_NUMS = /([$_a-z][$\w]*)|([+-]?\d+(\.\d+)?)/g;
var NUMBER = /^[+-]?\d+(\.\d+)?$/;
//non-primitive literals (array and object literals)
var NON_PRIMITIVES = /\[[@#~](,[@#~])*\]|\[\]|\{([@i]:[@#~])(,[@i]:[@#~])*\}|\{\}/g;
//bare identifiers such as variables and in object literals: {foo: 'value'}
var IDENTIFIERS = /[$_a-z][$\w]*/ig;
var VARIABLES = /i(\.i|\[[@#i]\])*/g;
var ACCESSOR = /(\.i|\[[@#i]\])/g;
var OPERATORS = /(===?|!==?|>=?|<=?|&&|\|\||[+\-\*\/%])/g;
//extended (english) operators
var EOPS = /(^|[^$\w])(and|or|not|is|isnot)([^$\w]|$)/g;
var LEADING_SPACE = /^\s+/;
var TRAILING_SPACE = /\s+$/;
var START_TOKEN = /\{\{\{|\{\{|\{%|\{#/;
var TAGS = {
'{{{': /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?\}\}\}/,
'{{': /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?\}\}/,
'{%': /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?%\}/,
'{#': /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?#\}/
};
var delimeters = {
'{%': 'directive',
'{{': 'output',
'{#': 'comment'
};
var operators = {
and: '&&',
or: '||',
not: '!',
is: '==',
isnot: '!='
};
var constants = {
'true': true,
'false': false,
'null': null
};
function Parser() {
this.nest = [];
this.compiled = [];
this.childBlocks = 0;
this.parentBlocks = 0;
this.isSilent = false;
}
Parser.prototype.push = function (line) {
if (!this.isSilent) {
this.compiled.push(line);
}
};
Parser.prototype.parse = function (src) {
this.tokenize(src);
return this.compiled;
};
Parser.prototype.tokenize = function (src) {
var lastEnd = 0, parser = this, trimLeading = false;
matchAll(src, START_TOKEN, function (open, index, src) {
//here we match the rest of the src against a regex for this tag
var match = src.slice(index + open.length).match(TAGS[open]);
match = (match ? match[0] : '');
//here we sub out strings so we don't get false matches
var simplified = match.replace(STRINGS, '@');
//if we don't have a close tag or there is a nested open tag
if (!match || ~simplified.indexOf(open)) {
return index + 1;
}
var inner = match.slice(0, 0 - open.length);
//check for white-space collapse syntax
if (inner.charAt(0) === '-') var wsCollapseLeft = true;
if (inner.slice(-1) === '-') var wsCollapseRight = true;
inner = inner.replace(/^-|-$/g, '').trim();
//if we're in raw mode and we are not looking at an "endraw" tag, move along
if (parser.rawMode && (open + inner) !== '{%endraw') {
return index + 1;
}
var text = src.slice(lastEnd, index);
lastEnd = index + open.length + match.length;
if (trimLeading) text = trimLeft(text);
if (wsCollapseLeft) text = trimRight(text);
if (wsCollapseRight) trimLeading = true;
if (open === '{{{') {
//liquid-style: make {{{x}}} => {{x|safe}}
open = '{{';
inner += '|safe';
}
parser.textHandler(text);
parser.tokenHandler(open, inner);
});
var text = src.slice(lastEnd);
if (trimLeading) text = trimLeft(text);
this.textHandler(text);
};
Parser.prototype.textHandler = function (text) {
this.push('write(' + JSON.stringify(text) + ');');
};
Parser.prototype.tokenHandler = function (open, inner) {
var type = delimeters[open];
if (type === 'directive') {
this.compileTag(inner);
} else if (type === 'output') {
var extracted = this.extractEnt(inner, STRINGS, '@');
//replace || operators with ~
extracted.src = extracted.src.replace(/\|\|/g, '~').split('|');
//put back || operators
extracted.src = extracted.src.map(function (part) {
return part.split('~').join('||');
});
var parts = this.injectEnt(extracted, '@');
if (parts.length > 1) {
var filters = parts.slice(1).map(this.parseFilter.bind(this));
this.push('filter(' + this.parseExpr(parts[0]) + ',' + filters.join(',') + ');');
} else {
this.push('filter(' + this.parseExpr(parts[0]) + ');');
}
}
};
Parser.prototype.compileTag = function (str) {
var directive = str.split(' ')[0];
var handler = tagHandlers[directive];
if (!handler) {
throw new Error('Invalid tag: ' + str);
}
handler.call(this, str.slice(directive.length).trim());
};
Parser.prototype.parseFilter = function (src) {
src = src.trim();
var match = src.match(/[:(]/);
var i = match ? match.index : -1;
if (i < 0) return JSON.stringify([src]);
var name = src.slice(0, i);
var args = src.charAt(i) === ':' ? src.slice(i + 1) : src.slice(i + 1, -1);
args = this.parseExpr(args, {terms: true});
return '[' + JSON.stringify(name) + ',' + args + ']';
};
Parser.prototype.extractEnt = function (src, regex, placeholder) {
var subs = [], isFunc = typeof placeholder == 'function';
src = src.replace(regex, function (str) {
var replacement = isFunc ? placeholder(str) : placeholder;
if (replacement) {
subs.push(str);
return replacement;
}
return str;
});
return {src: src, subs: subs};
};
Parser.prototype.injectEnt = function (extracted, placeholder) {
var src = extracted.src, subs = extracted.subs, isArr = Array.isArray(src);
var arr = (isArr) ? src : [src];
var re = new RegExp('[' + placeholder + ']', 'g'), i = 0;
arr.forEach(function (src, index) {
arr[index] = src.replace(re, function () {
return subs[i++];
});
});
return isArr ? arr : arr[0];
};
//replace complex literals without mistaking subscript notation with array literals
Parser.prototype.replaceComplex = function (s) {
var parsed = this.extractEnt(s, /i(\.i|\[[@#i]\])+/g, 'v');
parsed.src = parsed.src.replace(NON_PRIMITIVES, '~');
return this.injectEnt(parsed, 'v');
};
//parse expression containing literals (including objects/arrays) and variables (including dot and subscript notation)
//valid expressions: `a + 1 > b.c or c == null`, `a and b[1] != c`, `(a < b) or (c < d and e)`, 'a || [1]`
Parser.prototype.parseExpr = function (src, opts) {
opts = opts || {};
//extract string literals -> @
var parsed1 = this.extractEnt(src, STRINGS, '@');
//note: this will catch {not: 1} and a.is; could we replace temporarily and then check adjacent chars?
parsed1.src = parsed1.src.replace(EOPS, function (s, before, op, after) {
return (op in operators) ? before + operators[op] + after : s;
});
//sub out non-string literals (numbers/true/false/null) -> #
// the distinction is necessary because @ can be object identifiers, # cannot
var parsed2 = this.extractEnt(parsed1.src, IDENTS_AND_NUMS, function (s) {
return (s in constants || NUMBER.test(s)) ? '#' : null;
});
//sub out object/variable identifiers -> i
var parsed3 = this.extractEnt(parsed2.src, IDENTIFIERS, 'i');
//remove white-space
parsed3.src = parsed3.src.replace(/\s+/g, '');
//the rest of this is simply to boil the expression down and check validity
var simplified = parsed3.src;
//sub out complex literals (objects/arrays) -> ~
// the distinction is necessary because @ and # can be subscripts but ~ cannot
while (simplified !== (simplified = this.replaceComplex(simplified))) ;
//now @ represents strings, # represents other primitives and ~ represents non-primitives
//replace complex variables (those with dot/subscript accessors) -> v
while (simplified !== (simplified = simplified.replace(/i(\.i|\[[@#i]\])+/, 'v'))) ;
//empty subscript or complex variables in subscript, are not permitted
simplified = simplified.replace(/[iv]\[v?\]/g, 'x');
//sub in "i" for @ and # and ~ and v (now "i" represents all literals, variables and identifiers)
simplified = simplified.replace(/[@#~v]/g, 'i');
//sub out operators
simplified = simplified.replace(OPERATORS, '%');
//allow 'not' unary operator
simplified = simplified.replace(/!+[i]/g, 'i');
var terms = opts.terms ? simplified.split(',') : [simplified];
terms.forEach(function (term) {
//simplify logical grouping
while (term !== (term = term.replace(/\(i(%i)*\)/g, 'i'))) ;
if (!term.match(/^i(%i)*/)) {
throw new Error('Invalid expression: ' + src + " " + term);
}
});
parsed3.src = parsed3.src.replace(VARIABLES, this.parseVar.bind(this));
parsed2.src = this.injectEnt(parsed3, 'i');
parsed1.src = this.injectEnt(parsed2, '#');
return this.injectEnt(parsed1, '@');
};
Parser.prototype.parseVar = function (src) {
var args = Array.prototype.slice.call(arguments);
var str = args.pop(), index = args.pop();
//quote bare object identifiers (might be a reserved word like {while: 1})
if (src === 'i' && str.charAt(index + 1) === ':') {
return '"i"';
}
var parts = ['"i"'];
src.replace(ACCESSOR, function (part) {
if (part === '.i') {
parts.push('"i"');
} else if (part === '[i]') {
parts.push('get("i")');
} else {
parts.push(part.slice(1, -1));
}
});
return 'get(' + parts.join(',') + ')';
};
//escapes a name to be used as a javascript identifier
Parser.prototype.escName = function (str) {
return str.replace(/\W/g, function (s) {
return '$' + s.charCodeAt(0).toString(16);
});
};
Parser.prototype.parseQuoted = function (str) {
if (str.charAt(0) === "'") {
str = str.slice(1, -1).replace(/\\.|"/, function (s) {
if (s === "\\'") return "'";
return s.charAt(0) === '\\' ? s : ('\\' + s);
});
str = '"' + str + '"';
}
//todo: try/catch or deal with invalid characters (linebreaks, control characters)
return JSON.parse(str);
};
//the context 'this' inside tagHandlers is the parser instance
var tagHandlers = {
'if': function (expr) {
this.push('if (' + this.parseExpr(expr) + ') {');
this.nest.unshift('if');
},
'else': function () {
if (this.nest[0] === 'for') {
this.push('}, function() {');
} else {
this.push('} else {');
}
},
'elseif': function (expr) {
this.push('} else if (' + this.parseExpr(expr) + ') {');
},
'endif': function () {
this.nest.shift();
this.push('}');
},
'for': function (str) {
var i = str.indexOf(' in ');
var name = str.slice(0, i).trim();
var expr = str.slice(i + 4).trim();
this.push('each(' + this.parseExpr(expr) + ',' + JSON.stringify(name) + ',function() {');
this.nest.unshift('for');
},
'endfor': function () {
this.nest.shift();
this.push('});');
},
'raw': function () {
this.rawMode = true;
},
'endraw': function () {
this.rawMode = false;
},
'set': function (stmt) {
var i = stmt.indexOf('=');
var name = stmt.slice(0, i).trim();
var expr = stmt.slice(i + 1).trim();
this.push('set(' + JSON.stringify(name) + ',' + this.parseExpr(expr) + ');');
},
'block': function (name) {
if (this.isParent) {
++this.parentBlocks;
var blockName = 'block_' + (this.escName(name) || this.parentBlocks);
this.push('block(typeof ' + blockName + ' == "function" ? ' + blockName + ' : function() {');
} else if (this.hasParent) {
this.isSilent = false;
++this.childBlocks;
blockName = 'block_' + (this.escName(name) || this.childBlocks);
this.push('function ' + blockName + '() {');
}
this.nest.unshift('block');
},
'endblock': function () {
this.nest.shift();
if (this.isParent) {
this.push('});');
} else if (this.hasParent) {
this.push('}');
this.isSilent = true;
}
},
'extends': function (name) {
name = this.parseQuoted(name);
var parentSrc = this.readTemplateFile(name);
this.isParent = true;
this.tokenize(parentSrc);
this.isParent = false;
this.hasParent = true;
//silence output until we enter a child block
this.isSilent = true;
},
'include': function (name) {
name = this.parseQuoted(name);
var incSrc = this.readTemplateFile(name);
this.isInclude = true;
this.tokenize(incSrc);
this.isInclude = false;
}
};
//liquid style
tagHandlers.assign = tagHandlers.set;
//python/django style
tagHandlers.elif = tagHandlers.elseif;
var getRuntime = function runtime(data, opts) {
var defaults = {autoEscape: 'toJson'};
var _toString = Object.prototype.toString;
var _hasOwnProperty = Object.prototype.hasOwnProperty;
var getKeys = Object.keys || function (obj) {
var keys = [];
for (var n in obj) if (_hasOwnProperty.call(obj, n)) keys.push(n);
return keys;
};
var isArray = Array.isArray || function (obj) {
return _toString.call(obj) === '[object Array]';
};
var create = Object.create || function (obj) {
function F() {
}
F.prototype = obj;
return new F();
};
var toString = function (val) {
if (val == null) return '';
return (typeof val.toString == 'function') ? val.toString() : _toString.call(val);
};
var extend = function (dest, src) {
var keys = getKeys(src);
for (var i = 0, len = keys.length; i < len; i++) {
var key = keys[i];
dest[key] = src[key];
}
return dest;
};
//get a value, lexically, starting in current context; a.b -> get("a","b")
var get = function () {
var val, n = arguments[0], c = stack.length;
while (c--) {
val = stack[c][n];
if (typeof val != 'undefined') break;
}
for (var i = 1, len = arguments.length; i < len; i++) {
if (val == null) continue;
n = arguments[i];
val = (_hasOwnProperty.call(val, n)) ? val[n] : (typeof val._get == 'function' ? (val[n] = val._get(n)) : null);
}
return (val == null) ? '' : val;
};
var set = function (n, val) {
stack[stack.length - 1][n] = val;
};
var push = function (ctx) {
stack.push(ctx || {});
};
var pop = function () {
stack.pop();
};
var write = function (str) {
output.push(str);
};
var filter = function (val) {
for (var i = 1, len = arguments.length; i < len; i++) {
var arr = arguments[i], name = arr[0], filter = filters[name];
if (filter) {
arr[0] = val;
//now arr looks like [val, arg1, arg2]
val = filter.apply(data, arr);
} else {
throw new Error('Invalid filter: ' + name);
}
}
if (opts.autoEscape && name !== opts.autoEscape && name !== 'safe') {
//auto escape if not explicitly safe or already escaped
val = filters[opts.autoEscape].call(data, val);
}
output.push(val);
};
var each = function (obj, loopvar, fn1, fn2) {
if (obj == null) return;
var arr = isArray(obj) ? obj : getKeys(obj), len = arr.length;
var ctx = {loop: {length: len, first: arr[0], last: arr[len - 1]}};
push(ctx);
for (var i = 0; i < len; i++) {
extend(ctx.loop, {index: i + 1, index0: i});
fn1(ctx[loopvar] = arr[i]);
}
if (len === 0 && fn2) fn2();
pop();
};
var block = function (fn) {
push();
fn();
pop();
};
var render = function () {
return output.join('');
};
data = data || {};
opts = extend(defaults, opts || {});
var filters = extend({
html: function (val) {
return toString(val)
.split('&').join('&amp;')
.split('<').join('&lt;')
.split('>').join('&gt;')
.split('"').join('&quot;');
},
safe: function (val) {
return val;
},
toJson: function (val) {
if (typeof val === 'object') {
return JSON.stringify(val);
}
return toString(val);
}
}, opts.filters || {});
var stack = [create(data || {})], output = [];
return {
get: get,
set: set,
push: push,
pop: pop,
write: write,
filter: filter,
each: each,
block: block,
render: render
};
};
var runtime;
jinja.compile = function (markup, opts) {
opts = opts || {};
var parser = new Parser();
parser.readTemplateFile = this.readTemplateFile;
var code = [];
code.push('function render($) {');
code.push('var get = $.get, set = $.set, push = $.push, pop = $.pop, write = $.write, filter = $.filter, each = $.each, block = $.block;');
code.push.apply(code, parser.parse(markup));
code.push('return $.render();');
code.push('}');
code = code.join('\n');
if (opts.runtime === false) {
var fn = new Function('data', 'options', 'return (' + code + ')(runtime(data, options))');
} else {
runtime = runtime || (runtime = getRuntime.toString());
fn = new Function('data', 'options', 'return (' + code + ')((' + runtime + ')(data, options))');
}
return {render: fn};
};
jinja.render = function (markup, data, opts) {
var tmpl = jinja.compile(markup);
return tmpl.render(data, opts);
};
jinja.templateFiles = [];
jinja.readTemplateFile = function (name) {
var templateFiles = this.templateFiles || [];
var templateFile = templateFiles[name];
if (templateFile == null) {
throw new Error('Template file not found: ' + name);
}
return templateFile;
};
/*!
* Helpers
*/
function trimLeft(str) {
return str.replace(LEADING_SPACE, '');
}
function trimRight(str) {
return str.replace(TRAILING_SPACE, '');
}
function matchAll(str, reg, fn) {
//copy as global
reg = new RegExp(reg.source, 'g' + (reg.ignoreCase ? 'i' : '') + (reg.multiline ? 'm' : ''));
var match;
while ((match = reg.exec(str))) {
var result = fn(match[0], match.index, str);
if (typeof result == 'number') {
reg.lastIndex = result;
}
}
}
}));

265
肥猫/api/jsencrypt.js Normal file

File diff suppressed because one or more lines are too long

1737
肥猫/api/json5.js Normal file

File diff suppressed because one or more lines are too long

2
肥猫/api/node-rsa.js Normal file

File diff suppressed because one or more lines are too long

2
肥猫/api/pako.min.js vendored Normal file

File diff suppressed because one or more lines are too long

412
肥猫/api/模板.js Normal file

@ -0,0 +1,412 @@
if (typeof Object.assign !== 'function') {
Object.assign = function () {
let target = arguments[0];
for (let i = 1; i < arguments.length; i++) {
let source = arguments[i];
for (let key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
}
// 通用免嗅探播放
let common_lazy = `js:
let html = request(input);
let hconf = html.match(/r player_.*?=(.*?)</)[1];
let json = JSON5.parse(hconf);
let url = json.url;
if (json.encrypt == '1') {
url = unescape(url);
} else if (json.encrypt == '2') {
url = unescape(base64Decode(url));
}
if (/\\.(m3u8|mp4|m4a|mp3)/.test(url)) {
input = {
parse: 0,
jx: 0,
url: url,
};
} else {
input;
}`;
// 默认嗅探播放
let def_lazy = `js:
input = { parse: 1, url: input, js: '' };`;
// 采集站播放
let cj_lazy = `js:
if (/\\.(m3u8|mp4)/.test(input)) {
input = { parse: 0, url: input };
} else {
if (rule.parse_url.startsWith('json:')) {
let purl = rule.parse_url.replace('json:', '') + input;
let html = request(purl);
let json = JSON.parse(html);
if (json.url) {
input = { parse: 0, url: json.url };
}
} else {
input = rule.parse_url + input;
}
}`;
function getMubans() {
const mubanDict = { // 模板字典
mx: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---/',
searchUrl: '/vodsearch/**----------fypage---/',
class_parse: '.top_nav li;a&&Text;a&&href;.*/(.*?)/',
searchable: 2,
quickSearch: 0,
filterable: 0,
headers: {
'User-Agent': 'MOBILE_UA',
},
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true,
推荐: '.cbox_list;*;*;*;*;*',
一级: 'ul.vodlist li;a&&title;a&&data-original;.pic_text&&Text;a&&href',
二级: {
title: 'h2&&Text;.content_detail:eq(1)&&li&&a:eq(2)&&Text',
img: '.vodlist_thumb&&data-original',
desc: '.content_detail:eq(1)&&li:eq(1)&&Text;.content_detail:eq(1)&&li&&a&&Text;.content_detail:eq(1)&&li&&a:eq(1)&&Text;.content_detail:eq(1)&&li:eq(2)&&Text;.content_detail:eq(1)&&li:eq(3)&&Text',
content: '.content_desc&&span&&Text',
tabs: '.play_source_tab&&a',
lists: '.content_playlist:eq(#id) li',
},
搜索: '*',
},
mxpro: {
title: '',
host: '', // homeUrl:'/',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
class_parse: '.navbar-items li:gt(0):lt(10);a&&Text;a&&href;/(\\d+)',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: '.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href',
一级: 'body a.module-poster-item.module-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href',
二级: {
title: 'h1&&Text;.module-info-tag-link:eq(-1)&&Text',
img: '.lazyload&&data-original||data-src||src',
desc: '.module-info-item:eq(-2)&&Text;.module-info-tag-link&&Text;.module-info-tag-link:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(1)&&Text',
content: '.module-info-introduction&&Text',
tabs: '.module-tab-item',
lists: '.module-play-list:eq(#id) a',
tab_text: 'div--small&&Text',
},
搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
}, mxone5: {
title: '',
host: '',
url: '/show/fyclass--------fypage---.html',
searchUrl: '/search/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
class_parse: '.nav-menu-items&&li;a&&Text;a&&href;.*/(.*?)\.html',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: '.module-list;.module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
一级: '.module-items .module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
二级: {
title: 'h1&&Text;.tag-link&&Text',
img: '.module-item-pic&&img&&data-src',
desc: '.video-info-items:eq(3)&&Text;.tag-link:eq(2)&&Text;.tag-link:eq(1)&&Text;.video-info-items:eq(1)&&Text;.video-info-items:eq(0)&&Text',
content: '.vod_content&&Text',
tabs: '.module-tab-item',
lists: '.module-player-list:eq(#id)&&.scroll-content&&a',
tab_text: 'div--small&&Text',
},
搜索: '.module-items .module-search-item;a&&title;img&&data-src;.video-serial&&Text;a&&href',
}, 首图: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---/',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
class_parse: '.myui-header__menu li.hidden-sm:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: 'ul.myui-vodlist.clearfix;li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
一级: '.myui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
title: '.myui-content__detail .title--span&&Text;.myui-content__detail p.data:eq(3)&&Text',
img: '.myui-content__thumb .lazyload&&data-original',
desc: '.myui-content__detail p.otherbox&&Text;.year&&Text;.myui-content__detail p.data:eq(4)&&Text;.myui-content__detail p.data:eq(2)&&Text;.myui-content__detail p.data:eq(0)&&Text',
content: '.content&&Text',
tabs: '.myui-panel__head&&li',
// tabs: '.nav-tabs&&li',
lists: '.myui-content__list:eq(#id) li',
},
搜索: '#searchList li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&Text',
}, 首图2: {
title: '',
host: '',
url: '/list/fyclass-fypage.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA', // "Cookie": ""
},
class_parse: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
title: '.stui-content__detail .title&&Text;.stui-content__detail&&p:eq(-2)&&a&&Text',
title1: '.stui-content__detail .title&&Text;.stui-content__detail&&p&&Text',
img: '.stui-content__thumb .lazyload&&data-original',
desc: '.stui-content__detail p&&Text;.stui-content__detail&&p:eq(-2)&&a:eq(2)&&Text;.stui-content__detail&&p:eq(-2)&&a:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text;.stui-content__detail p:eq(1)&&Text',
desc1: '.stui-content__detail p:eq(4)&&Text;;;.stui-content__detail p:eq(1)&&Text',
content: '.detail&&Text',
tabs: '.stui-pannel__head h3',
tabs1: '.stui-vodlist__head h3',
lists: '.stui-content__playlist:eq(#id) li',
},
搜索: 'ul.stui-vodlist__media,ul.stui-vodlist,#searchList li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&Text',
}, 默认: {
title: '',
host: '',
url: '',
searchUrl: '',
searchable: 2,
quickSearch: 0,
filterable: 0,
filter: '',
filter_url: '',
filter_def: {},
headers: {
'User-Agent': 'MOBILE_UA',
},
timeout: 5000,
class_parse: '#side-menu li;a&&Text;a&&href;/(.*?)\.html',
cate_exclude: '',
play_parse: true,
lazy: def_lazy,
double: true,
推荐: '列表1;列表2;标题;图片;描述;链接;详情',
一级: '列表;标题;图片;描述;链接;详情',
二级: {
title: 'vod_name;vod_type',
img: '图片链接',
desc: '主要信息;年代;地区;演员;导演',
content: '简介',
tabs: '',
lists: 'xx:eq(#id)&&a',
tab_text: 'body&&Text',
list_text: 'body&&Text',
list_url: 'a&&href',
},
搜索: '列表;标题;图片;描述;链接;详情',
}, vfed: {
title: '',
host: '',
url: '/index.php/vod/show/id/fyclass/page/fypage.html',
searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA',
},
class_parse: '.fed-pops-navbar&&ul.fed-part-rows&&a;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: 'ul.fed-list-info.fed-part-rows;li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
一级: '.fed-list-info&&li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
二级: {
title: 'h1.fed-part-eone&&Text;.fed-deta-content&&.fed-part-rows&&li&&Text',
img: '.fed-list-info&&a&&data-original',
desc: '.fed-deta-content&&.fed-part-rows&&li:eq(1)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(2)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(3)&&Text',
content: '.fed-part-esan&&Text',
tabs: '.fed-drop-boxs&&.fed-part-rows&&li',
lists: '.fed-play-item:eq(#id)&&ul:eq(1)&&li',
},
搜索: '.fed-deta-info;h1&&Text;.lazyload&&data-original;.fed-list-remarks&&Text;a&&href;.fed-deta-content&&Text',
}, 海螺3: {
title: '',
host: '',
searchUrl: '/v_search/**----------fypage---.html',
url: '/vod_____show/fyclass--------fypage---.html',
headers: {
'User-Agent': 'MOBILE_UA',
},
timeout: 5000,
class_parse: 'body&&.hl-nav li:gt(0);a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '明星|专题|最新|排行',
limit: 40,
play_parse: true,
lazy: common_lazy,
double: true,
推荐: '.hl-vod-list;li;a&&title;a&&data-original;.remarks&&Text;a&&href',
一级: '.hl-vod-list&&.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
二级: {
title: '.hl-dc-title&&Text;.hl-dc-content&&li:eq(6)&&Text',
img: '.hl-lazy&&data-original',
desc: '.hl-dc-content&&li:eq(10)&&Text;.hl-dc-content&&li:eq(4)&&Text;.hl-dc-content&&li:eq(5)&&Text;.hl-dc-content&&li:eq(2)&&Text;.hl-dc-content&&li:eq(3)&&Text',
content: '.hl-content-text&&Text',
tabs: '.hl-tabs&&a',
tab_text: 'a--span&&Text',
lists: '.hl-plays-list:eq(#id)&&li',
},
搜索: '.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
}, 海螺2: {
title: '',
host: '',
searchUrl: '/index.php/vod/search/page/fypage/wd/**/',
url: '/index.php/vod/show/id/fyclass/page/fypage/',
headers: {
'User-Agent': 'MOBILE_UA',
},
timeout: 5000,
class_parse: '#nav-bar li;a&&Text;a&&href;id/(.*?)/',
limit: 40,
play_parse: true,
lazy: common_lazy,
double: true,
推荐: '.list-a.size;li;a&&title;.lazy&&data-original;.bt&&Text;a&&href',
一级: '.list-a&&li;a&&title;.lazy&&data-original;.list-remarks&&Text;a&&href',
二级: {
title: 'h2&&Text;.deployment&&Text',
img: '.lazy&&data-original',
desc: '.deployment&&Text',
content: '.ec-show&&Text',
tabs: '#tag&&a',
lists: '.play_list_box:eq(#id)&&li',
},
搜索: '.search-list;a&&title;.lazy&&data-original;.deployment&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
}, 短视: {
title: '',
host: '', // homeUrl:'/',
url: '/channel/fyclass-fypage.html',
searchUrl: '/search.html?wd=**',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
class_parse: '.menu_bottom ul li;a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '解析|动态',
play_parse: true,
lazy: common_lazy,
limit: 6,
double: true, // 推荐内容是否双层定位
推荐: '.indexShowBox;ul&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
一级: '.pic-list&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
二级: {
title: 'h1&&Text;.content-rt&&p:eq(0)&&Text',
img: '.img&&img&&data-src',
desc: '.content-rt&&p:eq(1)&&Text;.content-rt&&p:eq(2)&&Text;.content-rt&&p:eq(3)&&Text;.content-rt&&p:eq(4)&&Text;.content-rt&&p:eq(5)&&Text',
content: '.zkjj_a&&Text',
tabs: '.py-tabs&&option',
lists: '.player:eq(#id) li',
},
搜索: '.sr_lists&&ul&&li;h3&&Text;img&&data-src;.int&&p:eq(0)&&Text;a&&href',
}, 短视2: {
title: '',
host: '',
class_name: '电影&电视剧&综艺&动漫',
class_url: '1&2&3&4',
searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50',
searchable: 2,
quickSearch: 0,
headers: {'User-Agent': 'MOBILE_UA'},
url: '/index.php/api/vod#type=fyclass&page=fypage',
filterable: 0,//是否启用分类筛选,
filter_url: '',
filter: {},
filter_def: {},
detailUrl: '/index.php/vod/detail/id/fyid.html',
play_parse: true,
lazy: common_lazy,
limit: 6,
推荐: '.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href',
一级: 'js:let body=input.split("#")[1];let t=Math.round(new Date/1e3).toString();let key=md5("DS"+t+"DCC147D11943AF75");let url=input.split("#")[0];body=body+"&time="+t+"&key="+key;print(body);fetch_params.body=body;let html=post(url,fetch_params);let data=JSON.parse(html);VODS=data.list.map(function(it){it.vod_pic=urljoin2(input.split("/i")[0],it.vod_pic);return it});',
二级: {
title: '.slide-info-title&&Text;.slide-info:eq(2)--strong&&Text',
img: '.detail-pic&&data-original',
desc: '.slide-info-remarks&&Text;.slide-info-remarks:eq(1)&&Text;.slide-info-remarks:eq(2)&&Text;.slide-info:eq(1)--strong&&Text;.info-parameter&&ul&&li:eq(3)&&Text',
content: '#height_limit&&Text',
tabs: '.anthology.wow.fadeInUp.animated&&.swiper-wrapper&&a',
tab_text: 'a--span&&Text',
lists: '.anthology-list-box:eq(#id) li',
},
搜索: 'json:list;name;pic;;id',
}, 采集1: {
title: '',
host: '',
homeTid: '13',
homeUrl: '/api.php/provide/vod/?ac=detail&t={{rule.homeTid}}',
detailUrl: '/api.php/provide/vod/?ac=detail&ids=fyid',
searchUrl: '/api.php/provide/vod/?wd=**&pg=fypage',
url: '/api.php/provide/vod/?ac=detail&pg=fypage&t=fyclass',
headers: {'User-Agent': 'MOBILE_UA'},
timeout: 5000, // class_name: '电影&电视剧&综艺&动漫',
// class_url: '1&2&3&4',
// class_parse:'js:let html=request(input);input=JSON.parse(html).class;',
class_parse: 'json:class;',
limit: 20,
multi: 1,
searchable: 2,//是否启用全局搜索,
quickSearch: 1,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
play_parse: true,
parse_url: '',
lazy: cj_lazy,
推荐: '*',
一级: 'json:list;vod_name;vod_pic;vod_remarks;vod_id;vod_play_from',
二级: `js:
let html=request(input);
html=JSON.parse(html);
let data=html.list;
VOD=data[0];`,
搜索: '*',
},
};
return JSON.parse(JSON.stringify(mubanDict));
}
var mubanDict = getMubans();
var muban = getMubans();
export default {muban, getMubans};

25
肥猫/js/肥猫4K.js Normal file

@ -0,0 +1,25 @@
Object.assign(muban.mxone5.二级, {
desc: '.video-info-items:eq(3)&&Text;.tag-link:eq(2)&&Text;.tag-link:eq(3)&&Text;.video-info-actor:eq(1)&&Text;.video-info-actor:eq(0)&&Text',
content: '.sqjj_a--span&&Text',
lists: '.module-row-one:eq(#id)&&a.module-row-text',
list_text: 'h4&&Text',
list_url: 'a&&data-clipboard-text',
list_url_prefix: 'push://'
});
var rule = {
title: '蜡笔盘盘',
模板: 'mxone5',
host: 'http://labipan.com',
homeUrl: '/index.php/vod/show/id/24/page/1.html',
url: '/index.php/vod/show/id/fyclass/page/fypage.html',
filter_url: '{{fl.cateId}}{{fl.area}}{{fl.by}}{{fl.class}}{{fl.lang}}{{fl.letter}}/page/fypage{{fl.year}}',
searchUrl: '/index.php/vod/search.html?wd=**',
filter: 'H4sIAAAAAAAAA+2bW08bRxTHn5NPUfmZyqy55y33EHK/J1UenGC1qJRKgVZCERJgMLYB2yCCcW1uDRdzMZhLKZgYfxnPrv0tusuMz8yctcSioKaq5pH/7+TM7JnZ2fNfbz5evuTSXFd++Oj62dfruuJ67+3xtba7alxd3l985t/GzjGZGzX//t3b+ZvvNLDLlMlwuuxPW7L5h6uvhqrG6gQ5OjZCIwy4O9rdjZwGd3T/sEybgOrBmWIuJNNmTgdiev+0TFuAljdmjIUBmWq1gEk4bUyhaWmaiIv5FMIeV99bK4BVpdPb3c2LQkKr5pU4LAqZTpnxldynmdxMkysjhzBNLoAcwjT5OtBAVJMXCA1ENcgC1yZkoZq8VGguVKuElDIrZGxdDmEazCW8beRRCNPkhbNdkaVByPKI7YqYBtPNrBRPFtB0qQZZApPlxBrKQjXIMrduXiPKQrVzrJE+uGlMT6AQqkGIP6wP/oFCqAalO46S4UNUOqrBLTE7qc8syyFMg4GmR0qhHBqIalCXky1j6i+S30GlARkCo0ulz3jXUA1CIgES3UUhVINdU4iZy4t2DdX4SqX02Qm8UqcahAwVjA106UyDAuYnjONUtUuTiHgEeD/4vMIJkMqSsZzTE2BptZwIVMaxErmLhxmSzDMAa7aS0A+3q8QxwIud1Y9OquWjABY4vqynNqU4JsGI82vmP5MimASVOongCCbBKHufcASTYFlHd3AEk/g++xtHMImPkrWPkpVyjGdJbkXOQSXIMRQ1K06Ca3IaUGG+ywUjmjFCCXnKoPLjaUEfLZj/WB4UVIgbPigeT8tBVBI3WKe360e+wUrbmVK63+kGS+bN+MoAViI3k4QlwBFMgoXeXcIRTILNEs+T8TgO4qqwqWxBVBI2Jo5gkrCpbBFUEraM7ZqpJJSdbPnlCCqJZe/1eT/wsuvxg3J832HZPbWe+kp6K437VBBoHaZ1IvVg6hGphqkm0lpMawWqtSCqtYi0GdNmkTZh2iTSRkwbRdqAaYNIca00sVYarpUm1krDtdLEWmm4VppYKw3XyuoMxfvO19PjE7YAycT17XGHW+AqbK/TLO6rQK4hcg3IdUSuA7mByA0gNxG5CeQWIreA3EbkNpA7iNwB0opIK5C7iNwF0oZIG5B7iNwDch+R+0AeIPIAyENEHgJ5hMgjII8ReQzkCSJPgDxF5CmQZ4g8A/IckedAXiDyAshLRF4CeYXIKyCvEXkN5A0ib4DUft+CmKWIt8C7XuEEjEySXNS2/fnBaOV51+vu6TDDK0MUczk9OyXQnzp6uvnDZ3uIBAMC7X7/6wefNYO3NZe/c3m+0n7yo8B86BVzq4LbspwcP0fMZ4zV3ciYH0L65qrV2siYn2BmB2b2Vwg3XpxNPLuDduC7aItPBg6IP1qt+WfkHN6UbB2QXAaFUO18Tu4sb+rAyTnwpg5chgP3VDxatLkMpnGbNqwnttFiUA3m8ilgs4xME4yIbQGYVr17ZFns7aPyJ8qfKH/yb/kT5S2Ut1DeQnkL5S3+y97ikqte9BZf0Z2X+0PGaj/qqKkmNoRD8/aG0NRgsluFUjYohzANskxm9DB6ec00/nQa1g9R/8o0/ojbKx7F0HSpJjRO5c9oukyDkNw62ZpDIVSDuSR37b8hUA2yTM3r+/g3J6pxa3WoB6PF3KTt7b9EoIz7f5r9Oioj1SDjzmBpYAzloppqmlXTzKesmmbVNKumWTXNqmlWTbNqmmnTXHdR34PR9/GVcTra3cKpSF/Gi4yfIPRNvMi0C3vP7qBNd/CVlOHPlBaRH2AaDBRJG7EAGohqEBKbMzbx10BUgxKe/WVSKTZbiqCfBZgGAy0skiR6ic803vec+YZeT+Xsn0BRDeZy9hc8Dn7FIFmz2PtoLlQTQ5b37CGmBmu0dFL8gj6kYhpkicyTYBJloRq/k3ZJBlkppsFAybCeQCaIaby6O6QQx9U91ao3lOo9v7IsyrIoy6Isi7IsyrIIRFkWZVnslqVBsCzqZlQ3o7oZv+HN6Km/qBcI9W3y/9GwXgU0CtR0/uVkQKRNIg2n9S8bIm2+KCtFfU4V63POZlt1jv/PzlH1hupxpB5H3/5x1PcPFtDfoOA8AAA=',
//class_parse: '.grid-box&&ul&&li;a&&Text;a&&href;.*/(.*?).html',
class_parse: '',
class_name: '肥猫4K&电影&剧集&动漫&综艺&短剧',
class_url: '24&1&2&3&4&5',
cate_exclude: '网址|专题|全部影片',
搜索: '.module-search-item;.video-serial&&title;*;.video-serial&&Text;.video-serial&&href',
一级: '.module-items .module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href'
}

File diff suppressed because it is too large Load Diff

@ -20,7 +20,7 @@
"quickSearch": 1,
"changeable": 0,
"ext": {
"Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox/Cloud-drive.txt",
"Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox//Cloud-drive.txt",
"from": "4k|auto",
"siteUrl": "https://www.wogg.net/",
"danMu": "弹"
@ -54,7 +54,7 @@
"quickSearch": 1,
"changeable": 0,
"ext": {
"Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox/Cloud-drive.txt",
"Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox//Cloud-drive.txt",
"from": "4k|auto"
}
},
@ -67,7 +67,7 @@
"quickSearch": 1,
"changeable": 0,
"ext": {
"Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox/Cloud-drive.txt",
"Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox//Cloud-drive.txt",
"from": "4k|auto"
}
},
@ -80,7 +80,7 @@
"quickSearch": 1,
"changeable": 1,
"ext": {
"Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox/Cloud-drive.txt",
"Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox//Cloud-drive.txt",
"from": "4k|auto"
}
},
@ -136,27 +136,39 @@
"quickSearch": 1,
"changeable": 1
},
{
"key": "萌米",
"name": "👀萌米┃多线",
"type": 3,
"api": "csp_AppTT",
"playerType": 2,
"searchable": 1,
"quickSearch": 1,
"changeable": 1,
"ext": "AO7TcBkd8Iifux0Y8Qze6tVlMg=="
},
{
"key": "欢视",
"name": "👓欢视┃多线",
"type": 3,
"api": "csp_AppTT",
"playerType": 2,
"searchable": 1,
"quickSearch": 1,
"changeable": 1,
"ext": "AO7TcBkd8IPB+BwH4Qma+opv"
},
{
"key": "热播",
"name": "📺热播┃多线",
"type": 3,
"api": "csp_AppTT",
"timeout": 15,
"playerType": 2,
"searchable": 1,
"quickSearch": 1,
"changeable": 1,
"ext": "AO7TcBkd8I/B5wQc4Qma+pU="
},
{
"key": "萌米",
"name": "👀萌米┃多线",
"type": 3,
"api": "csp_AppTT",
"timeout": 15,
"playerType": 1,
"ext": "AO7TcBkd8Iifux0Y8Qze6tVlMg=="
},
{
"key": "南瓜",
"name": "🎃南瓜┃多线",
@ -173,7 +185,6 @@
"name": "👻可可┃多线",
"type": 3,
"api": "csp_Kekys",
"timeout": 15,
"playerType": 2,
"searchable": 1,
"quickSearch": 1,
@ -418,14 +429,11 @@
"key": "Sso",
"name": "🐌盘他┃三盘",
"type": 3,
"api": "csp_PanSso",
"api": "./api/drpy2.min.js",
"ext": "./js/盘他.js",
"searchable": 1,
"quickSearch": 1,
"changeable": 0,
"ext": {
"Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox/Cloud-drive.txt",
"from": "4k|auto"
}
"changeable": 0
},
{
"key": "夸搜",
@ -437,7 +445,7 @@
"changeable": 0,
"ext": {
"pan": "quark",
"Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox/Cloud-drive.txt",
"Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox//Cloud-drive.txt",
"from": "4k|auto"
}
},
@ -450,7 +458,7 @@
"quickSearch": 1,
"changeable": 0,
"ext": {
"Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox/Cloud-drive.txt",
"Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox//Cloud-drive.txt",
"from": "4k|auto"
}
},
@ -463,7 +471,7 @@
"quickSearch": 1,
"changeable": 0,
"ext": {
"Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox/Cloud-drive.txt",
"Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox//Cloud-drive.txt",
"from": "4k|auto"
}
},
@ -475,7 +483,7 @@
"searchable": 0,
"quickSearch": 0,
"ext": {
"Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox/Cloud-drive.txt",
"Cloud-drive": "http://127.0.0.1:9978/file/XYQTVBox//Cloud-drive.txt",
"from": "4k|auto"
}
},

46
饭太硬/js/盘他.js Normal file

@ -0,0 +1,46 @@
var rule = {
title: '盘他',
host: 'https://sousou.pro',
searchUrl: '/search?exact=false&page=fypage&q=**&share_time=&type=&user=',
searchable: 2,
quickSearch: 0,
headers: {
'User-Agent': 'PC_UA',
},
timeout: 5000,
play_parse: true,
lazy: $js.toString(() => {
let url = input.startsWith('push://') ? input : 'push://' + input;
input = {parse: 0, url: url};
}),
一级: '',
二级: $js.toString(() => {
VOD = {};
VOD.vod_id = input;
let html = request(input);
let title = pdfh(html, 'h1&&Text');
let share_url = pdfh(html, '.semi-typography-link:eq(-1)&&a&&href');
let share_type = pdfh(html, '.semi-descriptions-value:eq(3)&&Text');
VOD.vod_name = title;
VOD.vod_pic = '';
VOD.content = share_url;
VOD.vod_remarks = pdfh(html, '.semi-descriptions-value&&Text');
VOD.vod_play_from = '点击下方播放';
VOD.vod_play_url = share_type + '$' + 'push://' + share_url;
}),
搜索: $js.toString(() => {
let html = request(input);
let data = pdfa(html, '.rm-search-content&&.semi-space-vertical');
let d = [];
data.forEach(it => {
d.push({
title: pdfh(it, 'a&&title'),
desc: pdfh(it, 'span:eq(3)&&Text') + '|' + pdfh(it, 'span:eq(-1)&&Text'),
img: "",
url: pd(it, 'a&&href', MY_URL)
});
});
setResult(d);
}),
}

@ -2,7 +2,7 @@
#EXTINF:-1 tvg-name="CCTV1" tvg-logo="https://live.fanmingming.com/tv/CCTV1.png" group-title="央视频道",CCTV-1 综合
http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226559/index.m3u8
#EXTINF:-1 tvg-name="CCTV2" tvg-logo="https://live.fanmingming.com/tv/CCTV2.png" group-title="央视频道",CCTV-2 财经
http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226540/index.m3u8
http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010211/1.m3u8
#EXTINF:-1 tvg-name="CCTV3" tvg-logo="https://live.fanmingming.com/tv/CCTV3.png" group-title="央视频道",CCTV-3 综艺
http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226021/index.m3u8
#EXTINF:-1 tvg-name="CCTV4" tvg-logo="https://live.fanmingming.com/tv/CCTV4.png" group-title="央视频道",CCTV-4 中文国际
@ -41,6 +41,12 @@ http://[2001:250:5800:1005::155]:80/liverespath/bca6167afdef7fc773405c38e695b342
http://[2001:250:5800:1005::155]:80/liverespath/e0096742f0c5be4c5225cf3c7ab1077177bec05f/index.m3u8
#EXTINF:-1 tvg-name="CHC家庭影院" tvg-logo="https://live.fanmingming.com/tv/CHC家庭影院.png" group-title="央视频道",CHC家庭影院
http://[2001:250:5800:1005::155]:80/liverespath/449d51febadb152094085d373b9af94a6ac5f1dd/index.m3u8
#EXTINF:-1 tvg-name="凤凰中文" tvg-logo="https://live.fanmingming.com/tv/凤凰卫视中文台.png" group-title="卫视频道",凤凰中文
http://58.144.154.93/qctv.fengshows.cn/live/0701pcc72.m3u8
#EXTINF:-1 tvg-name="凤凰资讯" tvg-logo="https://live.fanmingming.com/tv/凤凰卫视资讯台.png" group-title="卫视频道",凤凰资讯
http://58.144.154.93/qctv.fengshows.cn/live/0701pin72.m3u8
#EXTINF:-1 tvg-name="凤凰香港" tvg-logo="https://live.fanmingming.com/tv/凤凰卫视香港台.png" group-title="卫视频道",凤凰香港
http://58.144.154.93/qctv.fengshows.cn/live/0701phk72.m3u8
#EXTINF:-1 tvg-name="北京卫视" tvg-logo="https://live.fanmingming.com/tv/北京卫视.png" group-title="卫视频道",北京卫视
http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226450/index.m3u8
#EXTINF:-1 tvg-name="湖南卫视" tvg-logo="https://live.fanmingming.com/tv/湖南卫视.png" group-title="卫视频道",湖南卫视

Binary file not shown.

@ -161,6 +161,25 @@
"danMu": "弹"
}
},
{
"key": "比特",
"name": "比特",
"type": 3,
"api": "csp_Bttwoo",
"searchable": 1,
"quickSearch": 1,
"changeable": 1
},
{
"key": "alllive",
"name": "一直播",
"type": 3,
"api": "csp_Alllive",
"playerType": 2,
"searchable": 0,
"quickSearch": 0,
"changeable": 0
},
{
"key": "米搜",
"name": "小米(网盘搜索)",

File diff suppressed because one or more lines are too long

577
骚零/api/jinja.js Normal file

@ -0,0 +1,577 @@
/*!
* Jinja Templating for JavaScript v0.1.8
* https://github.com/sstur/jinja-js
*
* This is a slimmed-down Jinja2 implementation [http://jinja.pocoo.org/]
*
* In the interest of simplicity, it deviates from Jinja2 as follows:
* - Line statements, cycle, super, macro tags and block nesting are not implemented
* - auto escapes html by default (the filter is "html" not "e")
* - Only "html" and "safe" filters are built in
* - Filters are not valid in expressions; `foo|length > 1` is not valid
* - Expression Tests (`if num is odd`) not implemented (`is` translates to `==` and `isnot` to `!=`)
*
* Notes:
* - if property is not found, but method '_get' exists, it will be called with the property name (and cached)
* - `{% for n in obj %}` iterates the object's keys; get the value with `{% for n in obj %}{{ obj[n] }}{% endfor %}`
* - subscript notation `a[0]` takes literals or simple variables but not `a[item.key]`
* - `.2` is not a valid number literal; use `0.2`
*
*/
/*global require, exports, module, define */
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jinja = {}));
})(this, (function (jinja) {
"use strict";
var STRINGS = /'(\\.|[^'])*'|"(\\.|[^"'"])*"/g;
var IDENTS_AND_NUMS = /([$_a-z][$\w]*)|([+-]?\d+(\.\d+)?)/g;
var NUMBER = /^[+-]?\d+(\.\d+)?$/;
//non-primitive literals (array and object literals)
var NON_PRIMITIVES = /\[[@#~](,[@#~])*\]|\[\]|\{([@i]:[@#~])(,[@i]:[@#~])*\}|\{\}/g;
//bare identifiers such as variables and in object literals: {foo: 'value'}
var IDENTIFIERS = /[$_a-z][$\w]*/ig;
var VARIABLES = /i(\.i|\[[@#i]\])*/g;
var ACCESSOR = /(\.i|\[[@#i]\])/g;
var OPERATORS = /(===?|!==?|>=?|<=?|&&|\|\||[+\-\*\/%])/g;
//extended (english) operators
var EOPS = /(^|[^$\w])(and|or|not|is|isnot)([^$\w]|$)/g;
var LEADING_SPACE = /^\s+/;
var TRAILING_SPACE = /\s+$/;
var START_TOKEN = /\{\{\{|\{\{|\{%|\{#/;
var TAGS = {
'{{{': /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?\}\}\}/,
'{{': /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?\}\}/,
'{%': /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?%\}/,
'{#': /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?#\}/
};
var delimeters = {
'{%': 'directive',
'{{': 'output',
'{#': 'comment'
};
var operators = {
and: '&&',
or: '||',
not: '!',
is: '==',
isnot: '!='
};
var constants = {
'true': true,
'false': false,
'null': null
};
function Parser() {
this.nest = [];
this.compiled = [];
this.childBlocks = 0;
this.parentBlocks = 0;
this.isSilent = false;
}
Parser.prototype.push = function (line) {
if (!this.isSilent) {
this.compiled.push(line);
}
};
Parser.prototype.parse = function (src) {
this.tokenize(src);
return this.compiled;
};
Parser.prototype.tokenize = function (src) {
var lastEnd = 0, parser = this, trimLeading = false;
matchAll(src, START_TOKEN, function (open, index, src) {
//here we match the rest of the src against a regex for this tag
var match = src.slice(index + open.length).match(TAGS[open]);
match = (match ? match[0] : '');
//here we sub out strings so we don't get false matches
var simplified = match.replace(STRINGS, '@');
//if we don't have a close tag or there is a nested open tag
if (!match || ~simplified.indexOf(open)) {
return index + 1;
}
var inner = match.slice(0, 0 - open.length);
//check for white-space collapse syntax
if (inner.charAt(0) === '-') var wsCollapseLeft = true;
if (inner.slice(-1) === '-') var wsCollapseRight = true;
inner = inner.replace(/^-|-$/g, '').trim();
//if we're in raw mode and we are not looking at an "endraw" tag, move along
if (parser.rawMode && (open + inner) !== '{%endraw') {
return index + 1;
}
var text = src.slice(lastEnd, index);
lastEnd = index + open.length + match.length;
if (trimLeading) text = trimLeft(text);
if (wsCollapseLeft) text = trimRight(text);
if (wsCollapseRight) trimLeading = true;
if (open === '{{{') {
//liquid-style: make {{{x}}} => {{x|safe}}
open = '{{';
inner += '|safe';
}
parser.textHandler(text);
parser.tokenHandler(open, inner);
});
var text = src.slice(lastEnd);
if (trimLeading) text = trimLeft(text);
this.textHandler(text);
};
Parser.prototype.textHandler = function (text) {
this.push('write(' + JSON.stringify(text) + ');');
};
Parser.prototype.tokenHandler = function (open, inner) {
var type = delimeters[open];
if (type === 'directive') {
this.compileTag(inner);
} else if (type === 'output') {
var extracted = this.extractEnt(inner, STRINGS, '@');
//replace || operators with ~
extracted.src = extracted.src.replace(/\|\|/g, '~').split('|');
//put back || operators
extracted.src = extracted.src.map(function (part) {
return part.split('~').join('||');
});
var parts = this.injectEnt(extracted, '@');
if (parts.length > 1) {
var filters = parts.slice(1).map(this.parseFilter.bind(this));
this.push('filter(' + this.parseExpr(parts[0]) + ',' + filters.join(',') + ');');
} else {
this.push('filter(' + this.parseExpr(parts[0]) + ');');
}
}
};
Parser.prototype.compileTag = function (str) {
var directive = str.split(' ')[0];
var handler = tagHandlers[directive];
if (!handler) {
throw new Error('Invalid tag: ' + str);
}
handler.call(this, str.slice(directive.length).trim());
};
Parser.prototype.parseFilter = function (src) {
src = src.trim();
var match = src.match(/[:(]/);
var i = match ? match.index : -1;
if (i < 0) return JSON.stringify([src]);
var name = src.slice(0, i);
var args = src.charAt(i) === ':' ? src.slice(i + 1) : src.slice(i + 1, -1);
args = this.parseExpr(args, {terms: true});
return '[' + JSON.stringify(name) + ',' + args + ']';
};
Parser.prototype.extractEnt = function (src, regex, placeholder) {
var subs = [], isFunc = typeof placeholder == 'function';
src = src.replace(regex, function (str) {
var replacement = isFunc ? placeholder(str) : placeholder;
if (replacement) {
subs.push(str);
return replacement;
}
return str;
});
return {src: src, subs: subs};
};
Parser.prototype.injectEnt = function (extracted, placeholder) {
var src = extracted.src, subs = extracted.subs, isArr = Array.isArray(src);
var arr = (isArr) ? src : [src];
var re = new RegExp('[' + placeholder + ']', 'g'), i = 0;
arr.forEach(function (src, index) {
arr[index] = src.replace(re, function () {
return subs[i++];
});
});
return isArr ? arr : arr[0];
};
//replace complex literals without mistaking subscript notation with array literals
Parser.prototype.replaceComplex = function (s) {
var parsed = this.extractEnt(s, /i(\.i|\[[@#i]\])+/g, 'v');
parsed.src = parsed.src.replace(NON_PRIMITIVES, '~');
return this.injectEnt(parsed, 'v');
};
//parse expression containing literals (including objects/arrays) and variables (including dot and subscript notation)
//valid expressions: `a + 1 > b.c or c == null`, `a and b[1] != c`, `(a < b) or (c < d and e)`, 'a || [1]`
Parser.prototype.parseExpr = function (src, opts) {
opts = opts || {};
//extract string literals -> @
var parsed1 = this.extractEnt(src, STRINGS, '@');
//note: this will catch {not: 1} and a.is; could we replace temporarily and then check adjacent chars?
parsed1.src = parsed1.src.replace(EOPS, function (s, before, op, after) {
return (op in operators) ? before + operators[op] + after : s;
});
//sub out non-string literals (numbers/true/false/null) -> #
// the distinction is necessary because @ can be object identifiers, # cannot
var parsed2 = this.extractEnt(parsed1.src, IDENTS_AND_NUMS, function (s) {
return (s in constants || NUMBER.test(s)) ? '#' : null;
});
//sub out object/variable identifiers -> i
var parsed3 = this.extractEnt(parsed2.src, IDENTIFIERS, 'i');
//remove white-space
parsed3.src = parsed3.src.replace(/\s+/g, '');
//the rest of this is simply to boil the expression down and check validity
var simplified = parsed3.src;
//sub out complex literals (objects/arrays) -> ~
// the distinction is necessary because @ and # can be subscripts but ~ cannot
while (simplified !== (simplified = this.replaceComplex(simplified))) ;
//now @ represents strings, # represents other primitives and ~ represents non-primitives
//replace complex variables (those with dot/subscript accessors) -> v
while (simplified !== (simplified = simplified.replace(/i(\.i|\[[@#i]\])+/, 'v'))) ;
//empty subscript or complex variables in subscript, are not permitted
simplified = simplified.replace(/[iv]\[v?\]/g, 'x');
//sub in "i" for @ and # and ~ and v (now "i" represents all literals, variables and identifiers)
simplified = simplified.replace(/[@#~v]/g, 'i');
//sub out operators
simplified = simplified.replace(OPERATORS, '%');
//allow 'not' unary operator
simplified = simplified.replace(/!+[i]/g, 'i');
var terms = opts.terms ? simplified.split(',') : [simplified];
terms.forEach(function (term) {
//simplify logical grouping
while (term !== (term = term.replace(/\(i(%i)*\)/g, 'i'))) ;
if (!term.match(/^i(%i)*/)) {
throw new Error('Invalid expression: ' + src + " " + term);
}
});
parsed3.src = parsed3.src.replace(VARIABLES, this.parseVar.bind(this));
parsed2.src = this.injectEnt(parsed3, 'i');
parsed1.src = this.injectEnt(parsed2, '#');
return this.injectEnt(parsed1, '@');
};
Parser.prototype.parseVar = function (src) {
var args = Array.prototype.slice.call(arguments);
var str = args.pop(), index = args.pop();
//quote bare object identifiers (might be a reserved word like {while: 1})
if (src === 'i' && str.charAt(index + 1) === ':') {
return '"i"';
}
var parts = ['"i"'];
src.replace(ACCESSOR, function (part) {
if (part === '.i') {
parts.push('"i"');
} else if (part === '[i]') {
parts.push('get("i")');
} else {
parts.push(part.slice(1, -1));
}
});
return 'get(' + parts.join(',') + ')';
};
//escapes a name to be used as a javascript identifier
Parser.prototype.escName = function (str) {
return str.replace(/\W/g, function (s) {
return '$' + s.charCodeAt(0).toString(16);
});
};
Parser.prototype.parseQuoted = function (str) {
if (str.charAt(0) === "'") {
str = str.slice(1, -1).replace(/\\.|"/, function (s) {
if (s === "\\'") return "'";
return s.charAt(0) === '\\' ? s : ('\\' + s);
});
str = '"' + str + '"';
}
//todo: try/catch or deal with invalid characters (linebreaks, control characters)
return JSON.parse(str);
};
//the context 'this' inside tagHandlers is the parser instance
var tagHandlers = {
'if': function (expr) {
this.push('if (' + this.parseExpr(expr) + ') {');
this.nest.unshift('if');
},
'else': function () {
if (this.nest[0] === 'for') {
this.push('}, function() {');
} else {
this.push('} else {');
}
},
'elseif': function (expr) {
this.push('} else if (' + this.parseExpr(expr) + ') {');
},
'endif': function () {
this.nest.shift();
this.push('}');
},
'for': function (str) {
var i = str.indexOf(' in ');
var name = str.slice(0, i).trim();
var expr = str.slice(i + 4).trim();
this.push('each(' + this.parseExpr(expr) + ',' + JSON.stringify(name) + ',function() {');
this.nest.unshift('for');
},
'endfor': function () {
this.nest.shift();
this.push('});');
},
'raw': function () {
this.rawMode = true;
},
'endraw': function () {
this.rawMode = false;
},
'set': function (stmt) {
var i = stmt.indexOf('=');
var name = stmt.slice(0, i).trim();
var expr = stmt.slice(i + 1).trim();
this.push('set(' + JSON.stringify(name) + ',' + this.parseExpr(expr) + ');');
},
'block': function (name) {
if (this.isParent) {
++this.parentBlocks;
var blockName = 'block_' + (this.escName(name) || this.parentBlocks);
this.push('block(typeof ' + blockName + ' == "function" ? ' + blockName + ' : function() {');
} else if (this.hasParent) {
this.isSilent = false;
++this.childBlocks;
blockName = 'block_' + (this.escName(name) || this.childBlocks);
this.push('function ' + blockName + '() {');
}
this.nest.unshift('block');
},
'endblock': function () {
this.nest.shift();
if (this.isParent) {
this.push('});');
} else if (this.hasParent) {
this.push('}');
this.isSilent = true;
}
},
'extends': function (name) {
name = this.parseQuoted(name);
var parentSrc = this.readTemplateFile(name);
this.isParent = true;
this.tokenize(parentSrc);
this.isParent = false;
this.hasParent = true;
//silence output until we enter a child block
this.isSilent = true;
},
'include': function (name) {
name = this.parseQuoted(name);
var incSrc = this.readTemplateFile(name);
this.isInclude = true;
this.tokenize(incSrc);
this.isInclude = false;
}
};
//liquid style
tagHandlers.assign = tagHandlers.set;
//python/django style
tagHandlers.elif = tagHandlers.elseif;
var getRuntime = function runtime(data, opts) {
var defaults = {autoEscape: 'toJson'};
var _toString = Object.prototype.toString;
var _hasOwnProperty = Object.prototype.hasOwnProperty;
var getKeys = Object.keys || function (obj) {
var keys = [];
for (var n in obj) if (_hasOwnProperty.call(obj, n)) keys.push(n);
return keys;
};
var isArray = Array.isArray || function (obj) {
return _toString.call(obj) === '[object Array]';
};
var create = Object.create || function (obj) {
function F() {
}
F.prototype = obj;
return new F();
};
var toString = function (val) {
if (val == null) return '';
return (typeof val.toString == 'function') ? val.toString() : _toString.call(val);
};
var extend = function (dest, src) {
var keys = getKeys(src);
for (var i = 0, len = keys.length; i < len; i++) {
var key = keys[i];
dest[key] = src[key];
}
return dest;
};
//get a value, lexically, starting in current context; a.b -> get("a","b")
var get = function () {
var val, n = arguments[0], c = stack.length;
while (c--) {
val = stack[c][n];
if (typeof val != 'undefined') break;
}
for (var i = 1, len = arguments.length; i < len; i++) {
if (val == null) continue;
n = arguments[i];
val = (_hasOwnProperty.call(val, n)) ? val[n] : (typeof val._get == 'function' ? (val[n] = val._get(n)) : null);
}
return (val == null) ? '' : val;
};
var set = function (n, val) {
stack[stack.length - 1][n] = val;
};
var push = function (ctx) {
stack.push(ctx || {});
};
var pop = function () {
stack.pop();
};
var write = function (str) {
output.push(str);
};
var filter = function (val) {
for (var i = 1, len = arguments.length; i < len; i++) {
var arr = arguments[i], name = arr[0], filter = filters[name];
if (filter) {
arr[0] = val;
//now arr looks like [val, arg1, arg2]
val = filter.apply(data, arr);
} else {
throw new Error('Invalid filter: ' + name);
}
}
if (opts.autoEscape && name !== opts.autoEscape && name !== 'safe') {
//auto escape if not explicitly safe or already escaped
val = filters[opts.autoEscape].call(data, val);
}
output.push(val);
};
var each = function (obj, loopvar, fn1, fn2) {
if (obj == null) return;
var arr = isArray(obj) ? obj : getKeys(obj), len = arr.length;
var ctx = {loop: {length: len, first: arr[0], last: arr[len - 1]}};
push(ctx);
for (var i = 0; i < len; i++) {
extend(ctx.loop, {index: i + 1, index0: i});
fn1(ctx[loopvar] = arr[i]);
}
if (len === 0 && fn2) fn2();
pop();
};
var block = function (fn) {
push();
fn();
pop();
};
var render = function () {
return output.join('');
};
data = data || {};
opts = extend(defaults, opts || {});
var filters = extend({
html: function (val) {
return toString(val)
.split('&').join('&amp;')
.split('<').join('&lt;')
.split('>').join('&gt;')
.split('"').join('&quot;');
},
safe: function (val) {
return val;
},
toJson: function (val) {
if (typeof val === 'object') {
return JSON.stringify(val);
}
return toString(val);
}
}, opts.filters || {});
var stack = [create(data || {})], output = [];
return {
get: get,
set: set,
push: push,
pop: pop,
write: write,
filter: filter,
each: each,
block: block,
render: render
};
};
var runtime;
jinja.compile = function (markup, opts) {
opts = opts || {};
var parser = new Parser();
parser.readTemplateFile = this.readTemplateFile;
var code = [];
code.push('function render($) {');
code.push('var get = $.get, set = $.set, push = $.push, pop = $.pop, write = $.write, filter = $.filter, each = $.each, block = $.block;');
code.push.apply(code, parser.parse(markup));
code.push('return $.render();');
code.push('}');
code = code.join('\n');
if (opts.runtime === false) {
var fn = new Function('data', 'options', 'return (' + code + ')(runtime(data, options))');
} else {
runtime = runtime || (runtime = getRuntime.toString());
fn = new Function('data', 'options', 'return (' + code + ')((' + runtime + ')(data, options))');
}
return {render: fn};
};
jinja.render = function (markup, data, opts) {
var tmpl = jinja.compile(markup);
return tmpl.render(data, opts);
};
jinja.templateFiles = [];
jinja.readTemplateFile = function (name) {
var templateFiles = this.templateFiles || [];
var templateFile = templateFiles[name];
if (templateFile == null) {
throw new Error('Template file not found: ' + name);
}
return templateFile;
};
/*!
* Helpers
*/
function trimLeft(str) {
return str.replace(LEADING_SPACE, '');
}
function trimRight(str) {
return str.replace(TRAILING_SPACE, '');
}
function matchAll(str, reg, fn) {
//copy as global
reg = new RegExp(reg.source, 'g' + (reg.ignoreCase ? 'i' : '') + (reg.multiline ? 'm' : ''));
var match;
while ((match = reg.exec(str))) {
var result = fn(match[0], match.index, str);
if (typeof result == 'number') {
reg.lastIndex = result;
}
}
}
}));

1737
骚零/api/json5.js Normal file

File diff suppressed because one or more lines are too long

2
骚零/api/node-rsa.js Normal file

File diff suppressed because one or more lines are too long

2
骚零/api/pako.min.js vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.