mirror of
https://github.com/ls125781003/tvboxtg.git
synced 2026-11-01 17:25:34 +00:00
4.18
up
This commit is contained in:
1 parent
29b45a8f67
commit
631ac04fc1
34 files changed
+99120
-25021
No files matched your search
+1
-14
@@ -213,7 +213,7 @@
|
|||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"ext": "https://www.momp4.cc"
|
"ext": "https://www.xlmp4.com"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_New6v",
|
"key": "csp_New6v",
|
||||||
@@ -553,19 +553,6 @@
|
|||||||
"filter": "./json/wogg.json"
|
"filter": "./json/wogg.json"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "MIUC",
|
|
||||||
"name": "💌MIUC",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_kongbai",
|
|
||||||
"searchable": 1,
|
|
||||||
"changeable": 0,
|
|
||||||
"ext": {
|
|
||||||
"commonConfig": "./json/peizhi.json",
|
|
||||||
"siteUrl": "https://mucpan.cc/",
|
|
||||||
"filter": "./json/wogg.json"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "闪电",
|
"key": "闪电",
|
||||||
"name": "⚡闪电",
|
"name": "⚡闪电",
|
||||||
|
|||||||
@@ -1,11 +1,9 @@
|
|||||||
央视,#genre#
|
央视,#genre#
|
||||||
CCTV1,http://home.kuaidi521.com:35455/gaoma/cctv1.m3u8
|
|
||||||
CCTV1,http://xiaoya.crccxw.top:35455/gaoma/cctv1.m3u8
|
CCTV1,http://xiaoya.crccxw.top:35455/gaoma/cctv1.m3u8
|
||||||
CCTV1,http://58.220.219.14:9901/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0
|
CCTV1,http://58.220.219.14:9901/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
CCTV1,http://175.31.21.146:4480/hls/1/index.m3u8
|
CCTV1,http://175.31.21.146:4480/hls/1/index.m3u8
|
||||||
CCTV1,http://58.220.211.90:352/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid$LR•IPV4『线路274』
|
CCTV1,http://58.220.211.90:352/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid$LR•IPV4『线路274』
|
||||||
CCTV1,http://58.220.211.90:352/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路275』
|
CCTV1,http://58.220.211.90:352/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路275』
|
||||||
CCTV1,http://3501776.xyz:35455/gaoma/cctv1.m3u8
|
|
||||||
CCTV1,http://113.140.12.230:8888/newlive/live/hls/2/live.m3u8
|
CCTV1,http://113.140.12.230:8888/newlive/live/hls/2/live.m3u8
|
||||||
CCTV1,http://222.219.183.103:8089/hls/1/index.m3u8
|
CCTV1,http://222.219.183.103:8089/hls/1/index.m3u8
|
||||||
CCTV1,http://58.210.168.86:10800/newlive/live/hls/1/live.m3u8
|
CCTV1,http://58.210.168.86:10800/newlive/live/hls/1/live.m3u8
|
||||||
@@ -13,7 +11,6 @@ CCTV2,http://222.169.85.8:9901/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&aut
|
|||||||
CCTV2,http://39.164.160.249:9901/tsfile/live/0002_1.m3u8
|
CCTV2,http://39.164.160.249:9901/tsfile/live/0002_1.m3u8
|
||||||
CCTV2,http://175.31.21.146:4480/hls/2/index.m3u8
|
CCTV2,http://175.31.21.146:4480/hls/2/index.m3u8
|
||||||
CCTV2,http://116.128.243.121:85/tsfile/live/0002_1.m3u8?key=txiptv&playlive=0&authid=0
|
CCTV2,http://116.128.243.121:85/tsfile/live/0002_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
CCTV2,http://3501776.xyz:35455/gaoma/cctv2.m3u8
|
|
||||||
CCTV2,http://113.140.12.230:8888/newlive/live/hls/3/live.m3u8
|
CCTV2,http://113.140.12.230:8888/newlive/live/hls/3/live.m3u8
|
||||||
CCTV2,http://60.223.224.176:8888/newlive/live/hls/3/live.m3u8
|
CCTV2,http://60.223.224.176:8888/newlive/live/hls/3/live.m3u8
|
||||||
CCTV3,http://222.134.19.31:352/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路247』
|
CCTV3,http://222.134.19.31:352/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路247』
|
||||||
@@ -23,7 +20,6 @@ CCTV3,http://113.140.12.230:8888/newlive/live/hls/4/live.m3u8
|
|||||||
CCTV3,http://222.169.85.8:9901/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0
|
CCTV3,http://222.169.85.8:9901/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
CCTV3,http://222.169.85.8:9901/tsfile/live/0003_1.m3u8
|
CCTV3,http://222.169.85.8:9901/tsfile/live/0003_1.m3u8
|
||||||
CCTV3,http://112.46.85.60:8009/hls/3/index.m3u8
|
CCTV3,http://112.46.85.60:8009/hls/3/index.m3u8
|
||||||
CCTV3,http://3501776.xyz:35455/gaoma/cctv3.m3u8
|
|
||||||
CCTV3,http://218.29.168.146:352/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0
|
CCTV3,http://218.29.168.146:352/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
CCTV3,http://58.220.219.14:9901/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0
|
CCTV3,http://58.220.219.14:9901/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
CCTV4,http://113.140.12.230:8888/newlive/live/hls/5/live.m3u8
|
CCTV4,http://113.140.12.230:8888/newlive/live/hls/5/live.m3u8
|
||||||
@@ -34,14 +30,11 @@ CCTV5,http://60.223.224.176:8888/newlive/live/hls/6/live.m3u8
|
|||||||
CCTV5,http://113.140.12.230:8888/newlive/live/hls/6/live.m3u8
|
CCTV5,http://113.140.12.230:8888/newlive/live/hls/6/live.m3u8
|
||||||
CCTV5,http://116.9.204.242:9901/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路177』
|
CCTV5,http://116.9.204.242:9901/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路177』
|
||||||
CCTV5,http://61.133.10.250:352/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路269』
|
CCTV5,http://61.133.10.250:352/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路269』
|
||||||
CCTV5,http://home.kuaidi521.com:35455/gaoma/cctv5.m3u8
|
|
||||||
CCTV5,http://116.9.204.242:9901/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0
|
CCTV5,http://116.9.204.242:9901/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
CCTV5,http://116.9.204.242:9901/tsfile/live/0005_1.m3u8
|
CCTV5,http://116.9.204.242:9901/tsfile/live/0005_1.m3u8
|
||||||
CCTV5,http://xiaoya.crccxw.top:35455/gaoma/cctv5.m3u8
|
CCTV5,http://xiaoya.crccxw.top:35455/gaoma/cctv5.m3u8
|
||||||
CCTV5+,http://home.kuaidi521.com:35455/gaoma/cctv5p.m3u8
|
|
||||||
CCTV5+,http://xiaoya.crccxw.top:35455/gaoma/cctv5p.m3u8
|
CCTV5+,http://xiaoya.crccxw.top:35455/gaoma/cctv5p.m3u8
|
||||||
CCTV5+,http://222.219.183.103:8089/hls/19/index.m3u8
|
CCTV5+,http://222.219.183.103:8089/hls/19/index.m3u8
|
||||||
CCTV5+,http://182.37.169.94:352/tsfile/live/0016_1.m3u8
|
|
||||||
CCTV6,http://222.134.19.31:352/tsfile/live/0006_1.m3u8?key=txiptv&playlive=1&authid=0
|
CCTV6,http://222.134.19.31:352/tsfile/live/0006_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
CCTV6,http://39.170.52.236:808/hls/6/index.m3u8
|
CCTV6,http://39.170.52.236:808/hls/6/index.m3u8
|
||||||
CCTV6,http://113.140.12.230:8888/newlive/live/hls/7/live.m3u8
|
CCTV6,http://113.140.12.230:8888/newlive/live/hls/7/live.m3u8
|
||||||
@@ -53,12 +46,9 @@ CCTV7,http://60.223.224.176:8888/newlive/live/hls/9/live.m3u8
|
|||||||
CCTV7,https://live.junhao.mil.cn/rmt9502/3e6e7c5477314ec38f5e58e2a5c70024.m3u8?txSecret=57978fafb9c19880afa5c8687e8241d8&txTime=7A42BAFF
|
CCTV7,https://live.junhao.mil.cn/rmt9502/3e6e7c5477314ec38f5e58e2a5c70024.m3u8?txSecret=57978fafb9c19880afa5c8687e8241d8&txTime=7A42BAFF
|
||||||
CCTV7,http://live.junhao.mil.cn/rmt9502/3e6e7c5477314ec38f5e58e2a5c70024.m3u8?txSecret=57978fafb9c19880afa5c8687e8241d8&txTime=7A42BAFF
|
CCTV7,http://live.junhao.mil.cn/rmt9502/3e6e7c5477314ec38f5e58e2a5c70024.m3u8?txSecret=57978fafb9c19880afa5c8687e8241d8&txTime=7A42BAFF
|
||||||
CCTV7,http://xiaoya.crccxw.top:35455/gaoma/cctv7.m3u8
|
CCTV7,http://xiaoya.crccxw.top:35455/gaoma/cctv7.m3u8
|
||||||
CCTV7,http://home.kuaidi521.com:35455/gaoma/cctv7.m3u8
|
|
||||||
CCTV7,http://101.19.84.8:9901/tsfile/live/0007_1.m3u8
|
CCTV7,http://101.19.84.8:9901/tsfile/live/0007_1.m3u8
|
||||||
CCTV7,http://222.219.183.103:8089/hls/7/index.m3u8
|
CCTV7,http://222.219.183.103:8089/hls/7/index.m3u8
|
||||||
CCTV8,http://222.134.19.31:352/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0
|
CCTV8,http://222.134.19.31:352/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
CCTV8,http://3501776.xyz:35455/gaoma/cctv8.m3u8
|
|
||||||
CCTV8,http://home.kuaidi521.com:35455/gaoma/cctv8.m3u8
|
|
||||||
CCTV8,http://112.46.85.60:8009/hls/8/index.m3u8
|
CCTV8,http://112.46.85.60:8009/hls/8/index.m3u8
|
||||||
CCTV8,http://101.19.84.8:9901/tsfile/live/0008_1.m3u8
|
CCTV8,http://101.19.84.8:9901/tsfile/live/0008_1.m3u8
|
||||||
CCTV8,http://113.140.12.230:8888/newlive/live/hls/9/live.m3u8
|
CCTV8,http://113.140.12.230:8888/newlive/live/hls/9/live.m3u8
|
||||||
@@ -66,23 +56,16 @@ CCTV8,http://xiaoya.crccxw.top:35455/gaoma/cctv8.m3u8
|
|||||||
CCTV8,http://60.223.224.176:8888/newlive/live/hls/10/live.m3u8?
|
CCTV8,http://60.223.224.176:8888/newlive/live/hls/10/live.m3u8?
|
||||||
CCTV8,http://61.133.10.250:352/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0
|
CCTV8,http://61.133.10.250:352/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
CCTV9,http://180.213.174.225:9901/tsfile/live/0009_1.m3u8?key=txiptv&playlive=1&authid=0
|
CCTV9,http://180.213.174.225:9901/tsfile/live/0009_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
CCTV9,http://3501776.xyz:35455/gaoma/cctv9.m3u8
|
|
||||||
CCTV9,http://xiaoya.crccxw.top:35455/gaoma/cctv9.m3u8
|
CCTV9,http://xiaoya.crccxw.top:35455/gaoma/cctv9.m3u8
|
||||||
CCTV9,http://home.kuaidi521.com:35455/gaoma/cctv9.m3u8
|
|
||||||
CCTV9,http://60.223.224.176:8888/newlive/live/hls/11/live.m3u8?
|
CCTV9,http://60.223.224.176:8888/newlive/live/hls/11/live.m3u8?
|
||||||
CCTV9,http://222.219.183.103:8089/hls/9/index.m3u8
|
CCTV9,http://222.219.183.103:8089/hls/9/index.m3u8
|
||||||
CCTV10,http://39.164.160.249:9901/tsfile/live/0010_1.m3u8
|
CCTV10,http://39.164.160.249:9901/tsfile/live/0010_1.m3u8
|
||||||
CCTV10,http://3501776.xyz:35455/gaoma/cctv10.m3u8
|
|
||||||
CCTV10,http://xiaoya.crccxw.top:35455/gaoma/cctv10.m3u8
|
CCTV10,http://xiaoya.crccxw.top:35455/gaoma/cctv10.m3u8
|
||||||
CCTV10,http://113.140.12.230:8888/newlive/live/hls/11/live.m3u8
|
CCTV10,http://113.140.12.230:8888/newlive/live/hls/11/live.m3u8
|
||||||
CCTV10,http://222.169.85.8:9901/tsfile/live/0010_1.m3u8
|
|
||||||
CCTV10,http://222.219.183.103:8089/hls/10/index.m3u8
|
CCTV10,http://222.219.183.103:8089/hls/10/index.m3u8
|
||||||
CCTV10,http://60.223.224.176:8888/newlive/live/hls/12/live.m3u8
|
CCTV10,http://60.223.224.176:8888/newlive/live/hls/12/live.m3u8
|
||||||
CCTV10,http://182.37.169.94:352/tsfile/live/0010_1.m3u8?key=txiptv&playlive=1&authid=0
|
CCTV10,http://182.37.169.94:352/tsfile/live/0010_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
CCTV11,http://39.164.160.249:9901/tsfile/live/0011_1.m3u8
|
CCTV11,http://39.164.160.249:9901/tsfile/live/0011_1.m3u8
|
||||||
CCTV11,http://home.kuaidi521.com:35455/gaoma/cctv11.m3u8
|
|
||||||
CCTV12,http://home.kuaidi521.com:35455/gaoma/cctv12.m3u8
|
|
||||||
CCTV12,http://39.164.160.249:9901/tsfile/live/0012_1.m3u8
|
|
||||||
CCTV12,http://xiaoya.crccxw.top:35455/gaoma/cctv12.m3u8
|
CCTV12,http://xiaoya.crccxw.top:35455/gaoma/cctv12.m3u8
|
||||||
CCTV13,http://61.163.181.78:9901/tsfile/live/0013_1.m3u8
|
CCTV13,http://61.163.181.78:9901/tsfile/live/0013_1.m3u8
|
||||||
CCTV13,https://event.pull.hebtv.com/jishi/cp1.m3u8
|
CCTV13,https://event.pull.hebtv.com/jishi/cp1.m3u8
|
||||||
@@ -90,12 +73,9 @@ CCTV13,http://ali-m-l.cztv.com/channels/lantian/channel21/1080p.m3u8
|
|||||||
CCTV13,http://183.215.134.239:19901/tsfile/live/0013_1.m3u8?key=txiptv&playlive=1&authid=0
|
CCTV13,http://183.215.134.239:19901/tsfile/live/0013_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
CCTV13,http://39.164.160.249:9901/tsfile/live/0013_1.m3u8
|
CCTV13,http://39.164.160.249:9901/tsfile/live/0013_1.m3u8
|
||||||
CCTV14,https://event.pull.hebtv.com/jishi/cp2.m3u8
|
CCTV14,https://event.pull.hebtv.com/jishi/cp2.m3u8
|
||||||
CCTV14,http://3501776.xyz:35455/gaoma/cctv14.m3u8
|
|
||||||
CCTV14,http://39.164.160.249:9901/tsfile/live/0014_1.m3u8
|
|
||||||
CCTV14,http://58.17.48.228:808/hls/14/index.m3u8
|
CCTV14,http://58.17.48.228:808/hls/14/index.m3u8
|
||||||
CCTV14,http://222.173.108.238:352/tsfile/live/0014_1.m3u8?key=txiptv&playlive=1&authid=0
|
CCTV14,http://222.173.108.238:352/tsfile/live/0014_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
CCTV15,http://39.164.160.249:9901/tsfile/live/0015_1.m3u8
|
CCTV15,http://39.164.160.249:9901/tsfile/live/0015_1.m3u8
|
||||||
CCTV15,http://home.kuaidi521.com:35455/gaoma/cctv15.m3u8
|
|
||||||
CCTV16,http://xiaoya.crccxw.top:35455/gaoma/cctv16.m3u8
|
CCTV16,http://xiaoya.crccxw.top:35455/gaoma/cctv16.m3u8
|
||||||
CCTV17,http://xiaoya.crccxw.top:35455/gaoma/cctv17.m3u8
|
CCTV17,http://xiaoya.crccxw.top:35455/gaoma/cctv17.m3u8
|
||||||
CCTV风云剧场,http://dassby.qqff.top:99/live/风云剧场/index.m3u8
|
CCTV风云剧场,http://dassby.qqff.top:99/live/风云剧场/index.m3u8
|
||||||
@@ -118,7 +98,6 @@ CCTV15,http://61.156.228.12:8154/tsfile/live/0015_1.m3u8
|
|||||||
安多卫视,https://liveout.xntv.tv/a65jur/96iln2.m3u8
|
安多卫视,https://liveout.xntv.tv/a65jur/96iln2.m3u8
|
||||||
安多卫视,https://livecdn.dmqhyadmin.com/hls/xjmenyuan.m3u8
|
安多卫视,https://livecdn.dmqhyadmin.com/hls/xjmenyuan.m3u8
|
||||||
安徽卫视,http://115.149.139.141:10000/tsfile/live/1028_1.m3u8?key=txiptv&playlive=0&authid=0
|
安徽卫视,http://115.149.139.141:10000/tsfile/live/1028_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
安徽卫视,http://39.164.160.249:9901/tsfile/live/0130_1.m3u8
|
|
||||||
北京卫视,http://183.215.134.239:19901/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0
|
北京卫视,http://183.215.134.239:19901/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
北京卫视,http://115.149.139.141:10000/tsfile/live/1022_1.m3u8?key=txiptv&playlive=0&authid=0
|
北京卫视,http://115.149.139.141:10000/tsfile/live/1022_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
北京卫视,http://58.220.219.14:9901/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0
|
北京卫视,http://58.220.219.14:9901/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
@@ -131,37 +110,29 @@ CCTV15,http://61.156.228.12:8154/tsfile/live/0015_1.m3u8
|
|||||||
重庆卫视,http://222.173.108.238:352/tsfile/live/1016_1.m3u8?key=txiptv&playlive=1&authid=0
|
重庆卫视,http://222.173.108.238:352/tsfile/live/1016_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
大湾区卫视,http://222.128.55.152:9080/live/dwq.m3u8
|
大湾区卫视,http://222.128.55.152:9080/live/dwq.m3u8
|
||||||
东方卫视,http://183.215.134.239:19901/tsfile/live/0107_1.m3u8?key=txiptv&playlive=1&authid=0
|
东方卫视,http://183.215.134.239:19901/tsfile/live/0107_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
东方卫视,http://39.164.160.249:9901/tsfile/live/0107_1.m3u8
|
|
||||||
东南卫视,http://120.76.248.139/live/bfgd/4200000483.m3u8
|
东南卫视,http://120.76.248.139/live/bfgd/4200000483.m3u8
|
||||||
东南卫视,http://115.149.139.141:10001/tsfile/live/1035_1.m3u8?blog.ntnas.top
|
东南卫视,http://115.149.139.141:10001/tsfile/live/1035_1.m3u8?blog.ntnas.top
|
||||||
东南卫视,http://220.164.192.48:50085/tsfile/live/0120_1.m3u8
|
|
||||||
甘肃卫视,http://live.zohi.tv/video/s10001-fztv-3/index.m3u8
|
甘肃卫视,http://live.zohi.tv/video/s10001-fztv-3/index.m3u8
|
||||||
广东卫视,http://183.215.134.239:19901/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0
|
广东卫视,http://183.215.134.239:19901/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
广东卫视,http://115.149.139.141:10001/tsfile/live/1029_1.m3u8?blog.ntnas.top
|
广东卫视,http://115.149.139.141:10001/tsfile/live/1029_1.m3u8?blog.ntnas.top
|
||||||
广东卫视,http://222.173.108.238:352/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0
|
广东卫视,http://222.173.108.238:352/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
广东卫视,http://39.164.160.249:9901/tsfile/live/0125_1.m3u8
|
|
||||||
广西卫视,http://live.cztv.cc:85/live/ggpd.m3u8
|
广西卫视,http://live.cztv.cc:85/live/ggpd.m3u8
|
||||||
广西卫视,http://115.149.139.141:10000/tsfile/live/1037_1.m3u8?key=txiptv&playlive=0&authid=0
|
广西卫视,http://115.149.139.141:10000/tsfile/live/1037_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
广西卫视,http://220.164.192.48:50085/tsfile/live/0112_1.m3u8
|
广西卫视,http://220.164.192.48:50085/tsfile/live/0112_1.m3u8
|
||||||
广西卫视,http://115.149.139.141:10001/tsfile/live/1037_1.m3u8?blog.ntnas.top
|
广西卫视,http://115.149.139.141:10001/tsfile/live/1037_1.m3u8?blog.ntnas.top
|
||||||
广西卫视,http://116.9.204.242:9901/tsfile/live/0113_1.m3u8?key=txiptv&playlive=1&authid=0
|
广西卫视,http://116.9.204.242:9901/tsfile/live/0113_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
广西卫视,http://116.9.204.242:9901/tsfile/live/0113_1.m3u8
|
广西卫视,http://116.9.204.242:9901/tsfile/live/0113_1.m3u8
|
||||||
贵州卫视,http://39.164.160.249:9901/tsfile/live/0120_1.m3u8
|
|
||||||
河北卫视,http://116.131.190.210:352/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0
|
河北卫视,http://116.131.190.210:352/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
河北卫视,http://60.8.49.38:352/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0
|
河北卫视,http://60.8.49.38:352/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
河南卫视,http://39.164.160.249:9901/tsfile/live/0139_1.m3u8
|
|
||||||
黑龙江卫视,http://115.149.139.141:10000/tsfile/live/1030_1.m3u8?key=txiptv&playlive=0&authid=0
|
黑龙江卫视,http://115.149.139.141:10000/tsfile/live/1030_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
黑龙江卫视,http://39.164.160.249:9901/tsfile/live/0143_1.m3u8
|
|
||||||
湖北卫视,http://115.149.139.141:10001/tsfile/live/1027_1.m3u8
|
湖北卫视,http://115.149.139.141:10001/tsfile/live/1027_1.m3u8
|
||||||
湖南卫视,http://183.215.134.239:19901/tsfile/live/0128_1.m3u8?key=txiptv&playlive=1&authid=0
|
湖南卫视,http://183.215.134.239:19901/tsfile/live/0128_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
湖南卫视,http://39.164.160.249:9901/tsfile/live/0128_1.m3u8
|
|
||||||
湖南卫视,http://60.223.224.176:8888/newlive/live/hls/22/live.m3u8
|
湖南卫视,http://60.223.224.176:8888/newlive/live/hls/22/live.m3u8
|
||||||
吉林卫视,http://220.164.192.48:50085/tsfile/live/0118_1.m3u8
|
吉林卫视,http://220.164.192.48:50085/tsfile/live/0118_1.m3u8
|
||||||
江西卫视,http://120.76.248.139/live/bfgd/4200000098.m3u8
|
江西卫视,http://120.76.248.139/live/bfgd/4200000098.m3u8
|
||||||
江西卫视,http://183.215.134.239:19901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0
|
江西卫视,http://183.215.134.239:19901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
江西卫视,http://222.173.108.238:352/tsfile/live/1010_1.m3u8?key=txiptv&playlive=1&authid=0
|
江西卫视,http://222.173.108.238:352/tsfile/live/1010_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
辽宁卫视,http://222.173.108.238:352/tsfile/live/1008_1.m3u8?key=txiptv&playlive=1&authid=0
|
辽宁卫视,http://222.173.108.238:352/tsfile/live/1008_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
辽宁卫视,http://39.164.160.249:9901/tsfile/live/0121_1.m3u8
|
|
||||||
辽宁卫视,http://115.149.139.141:10001/tsfile/live/1028_1.m3u8
|
辽宁卫视,http://115.149.139.141:10001/tsfile/live/1028_1.m3u8
|
||||||
辽宁卫视,http://115.149.139.141:10001/tsfile/live/1028_1.m3u8?blog.ntnas.top
|
辽宁卫视,http://115.149.139.141:10001/tsfile/live/1028_1.m3u8?blog.ntnas.top
|
||||||
内蒙古蒙语卫视,https://livestream-bt.nmtv.cn/nmtv/2315general.m3u8?txSecret=4971666599ef9411629213c9a300bf66&txTime=771EF880
|
内蒙古蒙语卫视,https://livestream-bt.nmtv.cn/nmtv/2315general.m3u8?txSecret=4971666599ef9411629213c9a300bf66&txTime=771EF880
|
||||||
@@ -182,7 +153,6 @@ CCTV15,http://61.156.228.12:8154/tsfile/live/0015_1.m3u8
|
|||||||
亚洲卫视,https://p2hs.vzan.com/slowlive/821481626725612419/live.m3u8
|
亚洲卫视,https://p2hs.vzan.com/slowlive/821481626725612419/live.m3u8
|
||||||
延边卫视,http://l.cztvcloud.com/channels/lantian/SXxinchang2/720p.m3u8
|
延边卫视,http://l.cztvcloud.com/channels/lantian/SXxinchang2/720p.m3u8
|
||||||
延边卫视,http://l.cztvcloud.com/channels/lantian/SXxinchang2/720p.m3u8$LR•IPV4『线路20』
|
延边卫视,http://l.cztvcloud.com/channels/lantian/SXxinchang2/720p.m3u8$LR•IPV4『线路20』
|
||||||
云南卫视,http://39.164.160.249:9901/tsfile/live/0119_1.m3u8
|
|
||||||
浙江卫视,https://ali-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8?
|
浙江卫视,https://ali-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8?
|
||||||
浙江卫视,http://ali-m-l.cztv.com:80/channels/lantian/channel001/1080p.m3u8
|
浙江卫视,http://ali-m-l.cztv.com:80/channels/lantian/channel001/1080p.m3u8
|
||||||
浙江卫视,https://ali-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8
|
浙江卫视,https://ali-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8
|
||||||
@@ -194,7 +164,6 @@ CCTV15,http://61.156.228.12:8154/tsfile/live/0015_1.m3u8
|
|||||||
浙江卫视,http://wouu.net:9977/udp/239.93.0.124:5140$LR•IPV4『线路157』
|
浙江卫视,http://wouu.net:9977/udp/239.93.0.124:5140$LR•IPV4『线路157』
|
||||||
北京卫视,http://61.156.228.12:8154/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路83』
|
北京卫视,http://61.156.228.12:8154/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路83』
|
||||||
北京卫视,http://123.129.70.178:9901/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路88』
|
北京卫视,http://123.129.70.178:9901/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路88』
|
||||||
江苏卫视,http://124.128.73.58:9901/tsfile/live/0127_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路95』
|
|
||||||
安徽卫视,http://123.129.70.178:9901/tsfile/live/0130_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路73』
|
安徽卫视,http://123.129.70.178:9901/tsfile/live/0130_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路73』
|
||||||
安徽卫视,http://61.136.172.236:9901/tsfile/live/0130_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路75』
|
安徽卫视,http://61.136.172.236:9901/tsfile/live/0130_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路75』
|
||||||
安徽卫视,http://61.156.228.12:8154/tsfile/live/0130_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路76』
|
安徽卫视,http://61.156.228.12:8154/tsfile/live/0130_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路76』
|
||||||
@@ -292,7 +261,6 @@ CGTN阿语,https://0472.org/hls/cgtna.m3u8
|
|||||||
少儿频道,#genre#
|
少儿频道,#genre#
|
||||||
熊大熊二,https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/1733da751de64e6e910abda889d87a26/1200.m3u8
|
熊大熊二,https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/1733da751de64e6e910abda889d87a26/1200.m3u8
|
||||||
福州少儿,http://live.zohi.tv/video/s10001-fztv-4/index.m3u8
|
福州少儿,http://live.zohi.tv/video/s10001-fztv-4/index.m3u8
|
||||||
武汉少儿,http://stream.appwuhan.com/7tzb/sd/live.m3u8
|
|
||||||
GOOD卡通,https://dqhxk7sbp7xog.cloudfront.net/osmflivech45.m3u8
|
GOOD卡通,https://dqhxk7sbp7xog.cloudfront.net/osmflivech45.m3u8
|
||||||
倒霉特熊,https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/87f87ba569c147e3805f80e4844d2de9/1200.m3u8
|
倒霉特熊,https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/87f87ba569c147e3805f80e4844d2de9/1200.m3u8
|
||||||
雲朵妈妈,https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/d8ad434c6b08421a927557a4d98da65c/1200.m3u8
|
雲朵妈妈,https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/d8ad434c6b08421a927557a4d98da65c/1200.m3u8
|
||||||
@@ -314,7 +282,6 @@ key=0b292c335e5837e947f9409c59228f3e6
|
|||||||
新昌休闲影视,http://l.cztvcloud.com/channels/lantian/SXxinchang2/720p.m3u8
|
新昌休闲影视,http://l.cztvcloud.com/channels/lantian/SXxinchang2/720p.m3u8
|
||||||
石河子影视文体,http://124.88.144.73:1935/live/jjsh/HasBahCa.m3u8
|
石河子影视文体,http://124.88.144.73:1935/live/jjsh/HasBahCa.m3u8
|
||||||
烟台影视,http://live.yantaitv.cn/live/e9f1d9045d474c31884d13fa4ffbbd16/a4a9b3704d854756907845107cc56129-1.m3u8
|
烟台影视,http://live.yantaitv.cn/live/e9f1d9045d474c31884d13fa4ffbbd16/a4a9b3704d854756907845107cc56129-1.m3u8
|
||||||
影视频道,http://112.30.194.221:20080/live/d18ff95cb1fb4bbcb56215e189fc12be/hls.m3u8
|
|
||||||
美丽中国说,http://newcntv.qcloudcdn.com/asp/hls/4000/0303000a/3/default/8cdd688b04e4495ba1635e218419d6f9/4000.m3u8
|
美丽中国说,http://newcntv.qcloudcdn.com/asp/hls/4000/0303000a/3/default/8cdd688b04e4495ba1635e218419d6f9/4000.m3u8
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+7724
File diff suppressed because it is too large.
Load diff
Binary file not shown.
+20
-4
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
|
||||||
"spider": "./spider.jar",
|
"spider": "./spider.jar",
|
||||||
"wallpaper": "https://xn--11x805d.xn--4kq62z5rby2qupq9ub.xyz/",
|
"wallpaper": "https://t.alcy.cc/fj",
|
||||||
"sites": [
|
"sites": [
|
||||||
{
|
{
|
||||||
"key": "豆豆",
|
"key": "豆豆",
|
||||||
@@ -247,7 +248,7 @@
|
|||||||
"type": 3,
|
"type": 3,
|
||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"changeable": "0",
|
"changeable": "0",
|
||||||
"api": "csp_MiSouGuard",
|
"api": "csp_XiaoYiGuard",
|
||||||
"ext": ""
|
"ext": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -290,9 +291,24 @@
|
|||||||
"url": "影视"
|
"url": "影视"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "自用",
|
"name": "巧技三",
|
||||||
"type": 1,
|
"type": 1,
|
||||||
"url": ""
|
"url": "https://zy.qiaoji8.com/xiafan.php?url=",
|
||||||
|
"ext": {
|
||||||
|
"flag": [
|
||||||
|
"QD4K",
|
||||||
|
"iyf",
|
||||||
|
"duanju",
|
||||||
|
"gzcj",
|
||||||
|
"GTV",
|
||||||
|
"GZYS",
|
||||||
|
"weggz",
|
||||||
|
"Ace"
|
||||||
|
],
|
||||||
|
"header": {
|
||||||
|
"User-Agent": "okhttp/4.9.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "8090g",
|
"name": "8090g",
|
||||||
|
|||||||
+577
@@ -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('&')
|
||||||
|
.split('<').join('<')
|
||||||
|
.split('>').join('>')
|
||||||
|
.split('"').join('"');
|
||||||
|
},
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}));
|
||||||
+77338
-930
File diff suppressed because it is too large.
Load diff
+1792
-2278
File diff suppressed because it is too large.
Load diff
Binary file not shown.
+120
-96
@@ -4,9 +4,9 @@
|
|||||||
"spider": "./spider.jar",
|
"spider": "./spider.jar",
|
||||||
"lives": [
|
"lives": [
|
||||||
{
|
{
|
||||||
"name": "【公众号欧歌APP】测试完请删除,请勿贩卖",
|
"name": "【公众号光歌软件分享】永久免费,请勿演示贩卖",
|
||||||
"type": 0,
|
"type": 0,
|
||||||
"url": "./lives/【公众号欧歌APP】测试完请删除,请勿贩卖.txt",
|
"url": "./lives/【公众号光歌软件分享】永久免费,请勿演示贩卖.txt",
|
||||||
"epg": "http://cdn.1678520.xyz/epg/?ch={name}&date={date}"
|
"epg": "http://cdn.1678520.xyz/epg/?ch={name}&date={date}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -31,41 +31,20 @@
|
|||||||
"sites": [
|
"sites": [
|
||||||
{
|
{
|
||||||
"key": "豆瓣2",
|
"key": "豆瓣2",
|
||||||
"name": "📢【公众号欧歌APP】测试完请删除,请勿贩卖",
|
"name": "📢【公众号光歌软件分享】永久免费,请勿演示贩卖",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_Douban",
|
"api": "csp_Douban",
|
||||||
"searchable": 0
|
"searchable": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "豆瓣1",
|
"key": "豆瓣1",
|
||||||
"name": "📢【公众号欧歌APP】测试完请删除,请勿贩卖公告❤更新:4/14❤",
|
"name": "📢【公众号光歌软件分享】永久免费,请勿演示贩卖公告❤更新:4/17❤",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_Notice",
|
"api": "csp_Notice",
|
||||||
"searchable": 0,
|
"searchable": 0,
|
||||||
"changeable": 0,
|
"changeable": 0,
|
||||||
"jar": "./jars/豆瓣1.jar",
|
"jar": "./jars/豆瓣1.jar",
|
||||||
"ext": "https://xn--dkw0c.v.nxog.top/m//公告.php?b=【公众号欧歌APP】测试完请删除,请勿贩卖"
|
"ext": "https://xn--dkw0c.v.nxog.top/m//公告.php?b=【公众号光歌软件分享】永久免费,请勿演示贩卖"
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "config",
|
|
||||||
"name": "🐲玩欧┃配置中心",
|
|
||||||
"type": 3,
|
|
||||||
"jar": "./jars/config.jar",
|
|
||||||
"api": "csp_Config",
|
|
||||||
"searchable": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "配置中心",
|
|
||||||
"name": "❤配置|中心",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_Config",
|
|
||||||
"searchable": 0,
|
|
||||||
"changeable": 0,
|
|
||||||
"indexs": 0,
|
|
||||||
"style": {
|
|
||||||
"type": "rect",
|
|
||||||
"ratio": 1.597
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_woog",
|
"key": "csp_woog",
|
||||||
@@ -82,31 +61,49 @@
|
|||||||
],
|
],
|
||||||
"url_key": "woog",
|
"url_key": "woog",
|
||||||
"threadinfo": {
|
"threadinfo": {
|
||||||
"chunksize": 400,
|
"chunksize": 300,
|
||||||
"threads": 10
|
"threads": 10
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_woog2",
|
"key": "config",
|
||||||
"name": "🐲玩欧|非会员4K",
|
"name": "🐲玩欧┃配置",
|
||||||
|
"type": 3,
|
||||||
|
"jar": "./jars/config.jar",
|
||||||
|
"api": "csp_Config",
|
||||||
|
"searchable": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_woogkk",
|
||||||
|
"name": "🐲夸快┃非会员4K",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"changeable": "0",
|
"changeable": "0",
|
||||||
"api": "csp_DuopanGuard",
|
"api": "csp_woog",
|
||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"jar": "./jars/csp_woog.jar",
|
"jar": "./jars/csp_woogkk.jar",
|
||||||
"ext": {
|
"ext": {
|
||||||
"site_urls": [
|
"site_urls": [
|
||||||
"https://woog.xn--dkw.xn--6qq986b3xl",
|
"hhttps://ogkk.nxog.eu.org",
|
||||||
"https://woog.nxog.eu.org"
|
"https://ogkk.xn--dkw.xn--6qq986b3xl"
|
||||||
],
|
],
|
||||||
"url_key": "woog2",
|
"url_key": "woogkk",
|
||||||
"threadinfo": {
|
"threadinfo": {
|
||||||
"chunksize": 400,
|
"chunksize": 282,
|
||||||
"threads": 60
|
"threads": 60
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "csp_欧歌123",
|
||||||
|
"name": "🐲夸快┃配置",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_Config",
|
||||||
|
"searchable": 0,
|
||||||
|
"quickSearch": 0,
|
||||||
|
"filterable": 1,
|
||||||
|
"jar": "./jars/csp_欧歌123.jar"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "欧哥",
|
"key": "欧哥",
|
||||||
"name": "❤欧歌|4K弹幕",
|
"name": "❤欧歌|4K弹幕",
|
||||||
@@ -118,6 +115,19 @@
|
|||||||
"changeable": 1,
|
"changeable": 1,
|
||||||
"ext": "./json/og.json?"
|
"ext": "./json/og.json?"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "配置中心",
|
||||||
|
"name": "❤配置|中心",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_Config",
|
||||||
|
"searchable": 0,
|
||||||
|
"changeable": 0,
|
||||||
|
"indexs": 0,
|
||||||
|
"style": {
|
||||||
|
"type": "rect",
|
||||||
|
"ratio": 1.597
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "荐片",
|
"key": "荐片",
|
||||||
"name": "💡荐片|影视",
|
"name": "💡荐片|影视",
|
||||||
@@ -254,50 +264,6 @@
|
|||||||
"quickSearch": 1,
|
"quickSearch": 1,
|
||||||
"filterable": 1
|
"filterable": 1
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "猎手影视",
|
|
||||||
"name": "💡猎手|影视",
|
|
||||||
"type": 3,
|
|
||||||
"api": "./api/猎手影视.py",
|
|
||||||
"searchable": 1,
|
|
||||||
"changeable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"playerType": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "火车影视",
|
|
||||||
"name": "💡火车|影视",
|
|
||||||
"type": 3,
|
|
||||||
"api": "./api/火车影视.py",
|
|
||||||
"searchable": 1,
|
|
||||||
"changeable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"playerType": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "美帕影视",
|
|
||||||
"name": "💡美帕|影视",
|
|
||||||
"type": 3,
|
|
||||||
"api": "./api/美帕影视.py",
|
|
||||||
"searchable": 1,
|
|
||||||
"changeable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"playerType": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "嗨皮影视",
|
|
||||||
"name": "💡嗨皮|影视",
|
|
||||||
"type": 3,
|
|
||||||
"api": "./api/嗨皮影视.py",
|
|
||||||
"searchable": 1,
|
|
||||||
"changeable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"playerType": 2
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "厂长影视",
|
"key": "厂长影视",
|
||||||
"name": "💡厂长|影视",
|
"name": "💡厂长|影视",
|
||||||
@@ -370,17 +336,9 @@
|
|||||||
"playerType": 2,
|
"playerType": 2,
|
||||||
"ext": "https://shdy5.us"
|
"ext": "https://shdy5.us"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "光速",
|
|
||||||
"name": "💡光速|影视",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_Xdai",
|
|
||||||
"playerType": 1,
|
|
||||||
"ext": "jaHR0cDovLzU5LjE1My4xNjcuMTM3Ojg4OTl8NGQ4M2I4N2M0YzVlYTExMXw0ZDgzYjg3YzRjNWVhMTExfDQ2Mg=="
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "现代",
|
"key": "现代",
|
||||||
"name": "💡现代|APP",
|
"name": "💡现代|影视",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_Xdai",
|
"api": "csp_Xdai",
|
||||||
"playerType": 1,
|
"playerType": 1,
|
||||||
@@ -460,9 +418,75 @@
|
|||||||
"api": "csp_AppFerr",
|
"api": "csp_AppFerr",
|
||||||
"ext": "sHR2rlsfjI4L3t4RXQMkn/M3t4AXAKTrZj3tfhm1t/gMT3dOrHqIzUNqLUEOIDMvllTbX6e1hMhB2mfpOaCmHNOL1yBB3SmxNyqXlai90EIpdnwOOgCR9Z+YwCTj6ySjzJ2VBiH3eXeOGcavcNeVRA=="
|
"ext": "sHR2rlsfjI4L3t4RXQMkn/M3t4AXAKTrZj3tfhm1t/gMT3dOrHqIzUNqLUEOIDMvllTbX6e1hMhB2mfpOaCmHNOL1yBB3SmxNyqXlai90EIpdnwOOgCR9Z+YwCTj6ySjzJ2VBiH3eXeOGcavcNeVRA=="
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "猎手影视",
|
||||||
|
"name": "🧡猎手|PY影视",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./api/猎手影视.py",
|
||||||
|
"searchable": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"playerType": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "火车影视",
|
||||||
|
"name": "🧡火车|PY影视",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./api/火车影视.py",
|
||||||
|
"searchable": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"playerType": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "嗨皮影视",
|
||||||
|
"name": "🧡嗨皮|PY影视",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./api/嗨皮影视.py",
|
||||||
|
"searchable": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"playerType": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "边缘",
|
||||||
|
"name": "🧡边缘|PY影视",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./api/边缘影视APP.py",
|
||||||
|
"searchable": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"playerType": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "若惜",
|
||||||
|
"name": "🧡若惜|PY影视",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./api/若惜追剧APP.py",
|
||||||
|
"searchable": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"playerType": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "悠悠",
|
||||||
|
"name": "🧡悠悠|PY影视",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./api/悠悠APP.py",
|
||||||
|
"searchable": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"playerType": 2
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_XYQHiker_农民影视",
|
"key": "csp_XYQHiker_农民影视",
|
||||||
"name": "🧿农民|影视",
|
"name": "🧿农民|XBPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XYQHiker",
|
"api": "csp_XYQHiker",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
@@ -472,7 +496,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "嫖嫖嫖",
|
"key": "嫖嫖嫖",
|
||||||
"name": "🧿嫖嫖┃影视",
|
"name": "🧿嫖嫖┃XBPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"ext": {
|
"ext": {
|
||||||
@@ -502,7 +526,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "白嫖者",
|
"key": "白嫖者",
|
||||||
"name": "🧿白嫖┃影视",
|
"name": "🧿白嫖┃XBPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"ext": {
|
"ext": {
|
||||||
@@ -514,7 +538,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "656",
|
"key": "656",
|
||||||
"name": "🧿梦想┃影视",
|
"name": "🧿梦想┃XBPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
@@ -554,7 +578,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "8号影院",
|
"key": "8号影院",
|
||||||
"name": "🧿8号┃影视",
|
"name": "🧿8号┃XBPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
@@ -572,7 +596,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "csp_红狐狸影视",
|
"key": "csp_红狐狸影视",
|
||||||
"name": "🧿狐狸┃影视",
|
"name": "🧿狐狸┃XBPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"ext": {
|
"ext": {
|
||||||
@@ -582,7 +606,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "大师兄",
|
"key": "大师兄",
|
||||||
"name": "🧿大师┃影视",
|
"name": "🧿大师┃XBPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"ext": {
|
"ext": {
|
||||||
@@ -592,7 +616,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "疯狗",
|
"key": "疯狗",
|
||||||
"name": "🧿疯狗┃影视",
|
"name": "🧿疯狗┃XBPQ",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_XBPQ",
|
"api": "csp_XBPQ",
|
||||||
"ext": {
|
"ext": {
|
||||||
|
|||||||
+220
@@ -0,0 +1,220 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# by @嗷呜
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from Crypto.Hash import MD5
|
||||||
|
sys.path.append("..")
|
||||||
|
from Crypto.Cipher import AES
|
||||||
|
from Crypto.Util.Padding import pad, unpad
|
||||||
|
from urllib.parse import quote, urlparse
|
||||||
|
from base64 import b64encode, b64decode
|
||||||
|
import json
|
||||||
|
import time
|
||||||
|
from base.spider import Spider
|
||||||
|
|
||||||
|
class Spider(Spider):
|
||||||
|
|
||||||
|
def init(self, extend=""):
|
||||||
|
self.host = self.gethost()
|
||||||
|
pass
|
||||||
|
|
||||||
|
def getName(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def isVideoFormat(self, url):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def manualVideoCheck(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def action(self, action):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def destroy(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def homeContent(self, filter):
|
||||||
|
data = self.getdata("/api.php/getappapi.index/initV119")
|
||||||
|
dy = {"class": "类型", "area": "地区", "lang": "语言", "year": "年份", "letter": "字母", "by": "排序",
|
||||||
|
"sort": "排序"}
|
||||||
|
filters = {}
|
||||||
|
classes = []
|
||||||
|
json_data = data["type_list"]
|
||||||
|
homedata = data["banner_list"][8:]
|
||||||
|
for item in json_data:
|
||||||
|
if item["type_name"] == "全部":
|
||||||
|
continue
|
||||||
|
has_non_empty_field = False
|
||||||
|
jsontype_extend = json.loads(item["type_extend"])
|
||||||
|
homedata.extend(item["recommend_list"])
|
||||||
|
jsontype_extend["sort"] = "最新,最热,最赞"
|
||||||
|
classes.append({"type_name": item["type_name"], "type_id": item["type_id"]})
|
||||||
|
for key in dy:
|
||||||
|
if key in jsontype_extend and jsontype_extend[key].strip() != "":
|
||||||
|
has_non_empty_field = True
|
||||||
|
break
|
||||||
|
if has_non_empty_field:
|
||||||
|
filters[str(item["type_id"])] = []
|
||||||
|
for dkey in jsontype_extend:
|
||||||
|
if dkey in dy and jsontype_extend[dkey].strip() != "":
|
||||||
|
values = jsontype_extend[dkey].split(",")
|
||||||
|
value_array = [{"n": value.strip(), "v": value.strip()} for value in values if
|
||||||
|
value.strip() != ""]
|
||||||
|
filters[str(item["type_id"])].append({"key": dkey, "name": dy[dkey], "value": value_array})
|
||||||
|
result = {}
|
||||||
|
result["class"] = classes
|
||||||
|
result["filters"] = filters
|
||||||
|
result["list"] = homedata[1:]
|
||||||
|
return result
|
||||||
|
|
||||||
|
def homeVideoContent(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def categoryContent(self, tid, pg, filter, extend):
|
||||||
|
body = {"area": extend.get('area', '全部'), "year": extend.get('year', '全部'), "type_id": tid, "page": pg,
|
||||||
|
"sort": extend.get('sort', '最新'), "lang": extend.get('lang', '全部'),
|
||||||
|
"class": extend.get('class', '全部')}
|
||||||
|
result = {}
|
||||||
|
data = self.getdata("/api.php/getappapi.index/typeFilterVodList", body)
|
||||||
|
result["list"] = data["recommend_list"]
|
||||||
|
result["page"] = pg
|
||||||
|
result["pagecount"] = 9999
|
||||||
|
result["limit"] = 90
|
||||||
|
result["total"] = 999999
|
||||||
|
return result
|
||||||
|
|
||||||
|
def detailContent(self, ids):
|
||||||
|
body = f"vod_id={ids[0]}"
|
||||||
|
data = self.getdata("/api.php/getappapi.index/vodDetail", body)
|
||||||
|
vod = data["vod"]
|
||||||
|
play = []
|
||||||
|
names = []
|
||||||
|
for itt in data["vod_play_list"]:
|
||||||
|
a = []
|
||||||
|
names.append(itt["player_info"]["show"])
|
||||||
|
for it in itt['urls']:
|
||||||
|
it['user_agent']=itt["player_info"].get("user_agent")
|
||||||
|
it["parse"]=itt["player_info"].get("parse")
|
||||||
|
a.append(f"{it['name']}${self.e64(json.dumps(it))}")
|
||||||
|
play.append("#".join(a))
|
||||||
|
vod["vod_play_from"] = "$$$".join(names)
|
||||||
|
vod["vod_play_url"] = "$$$".join(play)
|
||||||
|
result = {"list": [vod]}
|
||||||
|
return result
|
||||||
|
|
||||||
|
def searchContent(self, key, quick, pg="1"):
|
||||||
|
body = f"keywords={key}&type_id=0&page={pg}"
|
||||||
|
data = self.getdata("/api.php/getappapi.index/searchList", body)
|
||||||
|
result = {"list": data["search_list"], "page": pg}
|
||||||
|
return result
|
||||||
|
|
||||||
|
def playerContent(self, flag, id, vipFlags):
|
||||||
|
ids = json.loads(self.d64(id))
|
||||||
|
h = {"User-Agent": (ids['user_agent'] or "okhttp/3.14.9")}
|
||||||
|
try:
|
||||||
|
if re.search(r'url=', ids['parse_api_url']):
|
||||||
|
data = self.fetch(ids['parse_api_url'], headers=h, timeout=10).json()
|
||||||
|
url = data.get('url') or data['data'].get('url')
|
||||||
|
else:
|
||||||
|
body = f"parse_api={ids.get('parse') or ids['parse_api_url'].replace(ids['url'], '')}&url={quote(self.aes(ids['url'], True))}&token={ids.get('token')}"
|
||||||
|
b = self.getdata("/api.php/getappapi.index/vodParse", body)['json']
|
||||||
|
url = json.loads(b)['url']
|
||||||
|
if 'error' in url: raise ValueError(f"解析失败: {url}")
|
||||||
|
p = 0
|
||||||
|
except Exception as e:
|
||||||
|
print('错误信息:', e)
|
||||||
|
url, p = ids['url'], 1
|
||||||
|
|
||||||
|
if re.search(r'\.jpg|\.png|\.jpeg', url):
|
||||||
|
url = self.Mproxy(url)
|
||||||
|
result = {}
|
||||||
|
result["parse"] = p
|
||||||
|
result["url"] = url
|
||||||
|
result["header"] = h
|
||||||
|
return result
|
||||||
|
|
||||||
|
def localProxy(self, param):
|
||||||
|
return self.Mlocal(param)
|
||||||
|
|
||||||
|
def gethost(self):
|
||||||
|
headers = {
|
||||||
|
'User-Agent': 'okhttp/3.14.9'
|
||||||
|
}
|
||||||
|
host = self.fetch('http://host.yyys.news/250123.txt', headers=headers).text
|
||||||
|
return host.strip()
|
||||||
|
|
||||||
|
phend = {
|
||||||
|
'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 11; M2012K10C Build/RP1A.200720.011)',
|
||||||
|
'allowCrossProtocolRedirects': 'true'
|
||||||
|
}
|
||||||
|
|
||||||
|
def aes(self, text,b=None):
|
||||||
|
key = b"RuN9LRvwTRgpQnpK"
|
||||||
|
cipher = AES.new(key, AES.MODE_CBC, key)
|
||||||
|
if b:
|
||||||
|
ct_bytes = cipher.encrypt(pad(text.encode("utf-8"), AES.block_size))
|
||||||
|
ct = b64encode(ct_bytes).decode("utf-8")
|
||||||
|
return ct
|
||||||
|
else :
|
||||||
|
pt = unpad(cipher.decrypt(b64decode(text)), AES.block_size)
|
||||||
|
return pt.decode("utf-8")
|
||||||
|
|
||||||
|
def header(self):
|
||||||
|
t = str(int(time.time()))
|
||||||
|
header = {"Referer":self.host,
|
||||||
|
"User-Agent": "okhttp/3.14.9", "app-version-code": "547", "app-ui-mode": "light",
|
||||||
|
"app-api-verify-time": t, "app-user-device-id": self.md5(t),
|
||||||
|
"app-api-verify-sign": self.aes(t,True),
|
||||||
|
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"}
|
||||||
|
return header
|
||||||
|
|
||||||
|
def getdata(self, path, data=None):
|
||||||
|
vdata = self.post(f"{self.host}{path}", headers=self.header(), data=data, timeout=10).json()['data']
|
||||||
|
data1 = self.aes(vdata)
|
||||||
|
return json.loads(data1)
|
||||||
|
|
||||||
|
def Mproxy(self, url):
|
||||||
|
return f"{self.getProxyUrl()}&url={self.e64(url)}&type=m3u8"
|
||||||
|
|
||||||
|
def Mlocal(self, param,header=None):
|
||||||
|
url = self.d64(param["url"])
|
||||||
|
ydata = self.fetch(url, headers=header, allow_redirects=False)
|
||||||
|
data = ydata.content.decode('utf-8')
|
||||||
|
if ydata.headers.get('Location'):
|
||||||
|
url = ydata.headers['Location']
|
||||||
|
data = self.fetch(url, headers=header).content.decode('utf-8')
|
||||||
|
parsed_url = urlparse(url)
|
||||||
|
durl = parsed_url.scheme + "://" + parsed_url.netloc
|
||||||
|
lines = data.strip().split('\n')
|
||||||
|
for index, string in enumerate(lines):
|
||||||
|
if '#EXT' not in string and 'http' not in string:
|
||||||
|
last_slash_index = string.rfind('/')
|
||||||
|
lpath = string[:last_slash_index + 1]
|
||||||
|
lines[index] = durl + ('' if lpath.startswith('/') else '/') + lpath
|
||||||
|
data = '\n'.join(lines)
|
||||||
|
return [200, "application/vnd.apple.mpegur", data]
|
||||||
|
|
||||||
|
def e64(self, text):
|
||||||
|
try:
|
||||||
|
text_bytes = text.encode('utf-8')
|
||||||
|
encoded_bytes = b64encode(text_bytes)
|
||||||
|
return encoded_bytes.decode('utf-8')
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Base64编码错误: {str(e)}")
|
||||||
|
return ""
|
||||||
|
|
||||||
|
def d64(self,encoded_text):
|
||||||
|
try:
|
||||||
|
encoded_bytes = encoded_text.encode('utf-8')
|
||||||
|
decoded_bytes = b64decode(encoded_bytes)
|
||||||
|
return decoded_bytes.decode('utf-8')
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Base64解码错误: {str(e)}")
|
||||||
|
return ""
|
||||||
|
|
||||||
|
def md5(self, text):
|
||||||
|
h = MD5.new()
|
||||||
|
h.update(text.encode('utf-8'))
|
||||||
|
return h.hexdigest()
|
||||||
|
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# by @嗷呜
|
|
||||||
import sys
|
|
||||||
sys.path.append('..')
|
|
||||||
from base.spider import Spider
|
|
||||||
|
|
||||||
|
|
||||||
class Spider(Spider):
|
|
||||||
def getName(self):
|
|
||||||
return "mp"
|
|
||||||
|
|
||||||
def init(self, extend=""):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def isVideoFormat(self, url):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def manualVideoCheck(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def destroy(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
host = 'https://g.c494.com'
|
|
||||||
|
|
||||||
header = {
|
|
||||||
'User-Agent': 'Dart/2.10 (dart:io)',
|
|
||||||
'platform_version': 'RP1A.200720.011',
|
|
||||||
'version': '2.2.3',
|
|
||||||
'copyright': 'xiaogui',
|
|
||||||
'platform': 'android',
|
|
||||||
'client_name': '576O5p+P5b2x6KeG',
|
|
||||||
}
|
|
||||||
|
|
||||||
def homeContent(self, filter):
|
|
||||||
data = self.fetch(f'{self.host}/api.php/app/nav?token=', headers=self.header).json()
|
|
||||||
dy = {"class": "类型", "area": "地区", "lang": "语言", "year": "年份", "letter": "字母", "by": "排序",
|
|
||||||
"sort": "排序"}
|
|
||||||
filters = {}
|
|
||||||
classes = []
|
|
||||||
json_data = data["list"]
|
|
||||||
for item in json_data:
|
|
||||||
has_non_empty_field = False
|
|
||||||
jsontype_extend = item["type_extend"]
|
|
||||||
classes.append({"type_name": item["type_name"], "type_id": str(item["type_id"])})
|
|
||||||
for key in dy:
|
|
||||||
if key in jsontype_extend and jsontype_extend[key].strip() != "":
|
|
||||||
has_non_empty_field = True
|
|
||||||
break
|
|
||||||
if has_non_empty_field:
|
|
||||||
filters[str(item["type_id"])] = []
|
|
||||||
for dkey in jsontype_extend:
|
|
||||||
if dkey in dy and jsontype_extend[dkey].strip() != "":
|
|
||||||
values = jsontype_extend[dkey].split(",")
|
|
||||||
value_array = [{"n": value.strip(), "v": value.strip()} for value in values if
|
|
||||||
value.strip() != ""]
|
|
||||||
filters[str(item["type_id"])].append({"key": dkey, "name": dy[dkey], "value": value_array})
|
|
||||||
result = {}
|
|
||||||
result["class"] = classes
|
|
||||||
result["filters"] = filters
|
|
||||||
return result
|
|
||||||
|
|
||||||
def homeVideoContent(self):
|
|
||||||
rsp = self.fetch(f"{self.host}/api.php/app/index_video?token=", headers=self.header)
|
|
||||||
root = rsp.json()['list']
|
|
||||||
videos = [item for vodd in root for item in vodd['vlist']]
|
|
||||||
return {'list': videos}
|
|
||||||
|
|
||||||
def categoryContent(self, tid, pg, filter, extend):
|
|
||||||
parms = {"pg": pg, "tid": tid, "class": extend.get("class", ""), "area": extend.get("area", ""),
|
|
||||||
"lang": extend.get("lang", ""), "year": extend.get("year", ""), "token": ""}
|
|
||||||
data = self.fetch(f'{self.host}/api.php/app/video', params=parms, headers=self.header).json()
|
|
||||||
return data
|
|
||||||
|
|
||||||
def detailContent(self, ids):
|
|
||||||
parms = {"id": ids[0], "token": ""}
|
|
||||||
data = self.fetch(f'{self.host}/api.php/app/video_detail', params=parms, headers=self.header).json()
|
|
||||||
vod = data['data']
|
|
||||||
vod.pop('pause_advert_list', None)
|
|
||||||
vod.pop('init_advert_list', None)
|
|
||||||
vod.pop('vod_url_with_player', None)
|
|
||||||
return {"list": [vod]}
|
|
||||||
|
|
||||||
def searchContent(self, key, quick, pg='1'):
|
|
||||||
parms = {'pg': pg, 'text': key, 'token': ''}
|
|
||||||
data = self.fetch(f'{self.host}/api.php/app/search', params=parms, headers=self.header).json()
|
|
||||||
return data
|
|
||||||
|
|
||||||
def playerContent(self, flag, id, vipFlags):
|
|
||||||
return {"parse": 0, "url": id, "header": {'User-Agent': 'User-Agent: Lavf/58.12.100'}}
|
|
||||||
|
|
||||||
def localProxy(self, param):
|
|
||||||
pass
|
|
||||||
@@ -0,0 +1,255 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# by @嗷呜
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from Crypto.Hash import MD5
|
||||||
|
sys.path.append("..")
|
||||||
|
from Crypto.Cipher import AES
|
||||||
|
from Crypto.Util.Padding import pad, unpad
|
||||||
|
from urllib.parse import quote, urlparse
|
||||||
|
from base64 import b64encode, b64decode
|
||||||
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
|
import json
|
||||||
|
import time
|
||||||
|
from base.spider import Spider
|
||||||
|
|
||||||
|
class Spider(Spider):
|
||||||
|
|
||||||
|
'''
|
||||||
|
sites照常配置,
|
||||||
|
lives配置:
|
||||||
|
{
|
||||||
|
"name": "xxxx",
|
||||||
|
"type": 3,
|
||||||
|
"api": "路径/若惜追剧APP.py",
|
||||||
|
"ext": ""
|
||||||
|
}
|
||||||
|
'''
|
||||||
|
|
||||||
|
def init(self, extend=""):
|
||||||
|
self.host = self.gethost()
|
||||||
|
pass
|
||||||
|
|
||||||
|
def getName(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def isVideoFormat(self, url):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def manualVideoCheck(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def action(self, action):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def destroy(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def homeContent(self, filter):
|
||||||
|
data = self.getdata("/api.php/getappapi.index/initV119")
|
||||||
|
dy = {"class": "类型", "area": "地区", "lang": "语言", "year": "年份", "letter": "字母", "by": "排序",
|
||||||
|
"sort": "排序"}
|
||||||
|
filters = {}
|
||||||
|
classes = []
|
||||||
|
json_data = data["type_list"]
|
||||||
|
homedata = data["banner_list"][8:]
|
||||||
|
for item in json_data:
|
||||||
|
if item["type_name"] == "全部":
|
||||||
|
continue
|
||||||
|
has_non_empty_field = False
|
||||||
|
jsontype_extend = json.loads(item["type_extend"])
|
||||||
|
homedata.extend(item["recommend_list"])
|
||||||
|
jsontype_extend["sort"] = "最新,最热,最赞"
|
||||||
|
classes.append({"type_name": item["type_name"], "type_id": item["type_id"]})
|
||||||
|
for key in dy:
|
||||||
|
if key in jsontype_extend and jsontype_extend[key].strip() != "":
|
||||||
|
has_non_empty_field = True
|
||||||
|
break
|
||||||
|
if has_non_empty_field:
|
||||||
|
filters[str(item["type_id"])] = []
|
||||||
|
for dkey in jsontype_extend:
|
||||||
|
if dkey in dy and jsontype_extend[dkey].strip() != "":
|
||||||
|
values = jsontype_extend[dkey].split(",")
|
||||||
|
value_array = [{"n": value.strip(), "v": value.strip()} for value in values if
|
||||||
|
value.strip() != ""]
|
||||||
|
filters[str(item["type_id"])].append({"key": dkey, "name": dy[dkey], "value": value_array})
|
||||||
|
result = {}
|
||||||
|
result["class"] = classes
|
||||||
|
result["filters"] = filters
|
||||||
|
result["list"] = homedata[1:]
|
||||||
|
return result
|
||||||
|
|
||||||
|
def homeVideoContent(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def categoryContent(self, tid, pg, filter, extend):
|
||||||
|
body = {"area": extend.get('area', '全部'), "year": extend.get('year', '全部'), "type_id": tid, "page": pg,
|
||||||
|
"sort": extend.get('sort', '最新'), "lang": extend.get('lang', '全部'),
|
||||||
|
"class": extend.get('class', '全部')}
|
||||||
|
result = {}
|
||||||
|
data = self.getdata("/api.php/getappapi.index/typeFilterVodList", body)
|
||||||
|
result["list"] = data["recommend_list"]
|
||||||
|
result["page"] = pg
|
||||||
|
result["pagecount"] = 9999
|
||||||
|
result["limit"] = 90
|
||||||
|
result["total"] = 999999
|
||||||
|
return result
|
||||||
|
|
||||||
|
def detailContent(self, ids):
|
||||||
|
body = f"vod_id={ids[0]}"
|
||||||
|
data = self.getdata("/api.php/getappapi.index/vodDetail", body)
|
||||||
|
vod = data["vod"]
|
||||||
|
play = []
|
||||||
|
names = []
|
||||||
|
for itt in data["vod_play_list"]:
|
||||||
|
a = []
|
||||||
|
names.append(itt["player_info"]["show"])
|
||||||
|
for it in itt['urls']:
|
||||||
|
it['user_agent']=itt["player_info"].get("user_agent")
|
||||||
|
it["parse"]=itt["player_info"].get("parse")
|
||||||
|
a.append(f"{it['name']}${self.e64(json.dumps(it))}")
|
||||||
|
play.append("#".join(a))
|
||||||
|
vod["vod_play_from"] = "$$$".join(names)
|
||||||
|
vod["vod_play_url"] = "$$$".join(play)
|
||||||
|
result = {"list": [vod]}
|
||||||
|
return result
|
||||||
|
|
||||||
|
def searchContent(self, key, quick, pg="1"):
|
||||||
|
body = f"keywords={key}&type_id=0&page={pg}"
|
||||||
|
data = self.getdata("/api.php/getappapi.index/searchList", body)
|
||||||
|
result = {"list": data["search_list"], "page": pg}
|
||||||
|
return result
|
||||||
|
|
||||||
|
def playerContent(self, flag, id, vipFlags):
|
||||||
|
ids = json.loads(self.d64(id))
|
||||||
|
h={"User-Agent": (ids['user_agent'] or "okhttp/3.14.9")}
|
||||||
|
try:
|
||||||
|
if re.search(r'url=', ids['parse_api_url']):
|
||||||
|
data=self.fetch(ids['parse_api_url'], headers=h, timeout=10).json()
|
||||||
|
url=data.get('url') or data['data'].get('url')
|
||||||
|
else:
|
||||||
|
body = f"parse_api={ids.get('parse') or ids['parse_api_url'].replace(ids['url'], '')}&url={quote(self.aes(ids['url'],True))}&token={ids.get('token')}"
|
||||||
|
b = self.getdata("/api.php/getappapi.index/vodParse", body)['json']
|
||||||
|
url = json.loads(b)['url']
|
||||||
|
if 'error' in url:raise ValueError(f"解析失败: {url}")
|
||||||
|
p=0
|
||||||
|
except Exception as e:
|
||||||
|
print('错误信息:',e)
|
||||||
|
url, p = ids['url'], 1
|
||||||
|
|
||||||
|
if re.search(r'\.jpg|\.png|\.jpeg', url):
|
||||||
|
url = self.Mproxy(url)
|
||||||
|
result = {}
|
||||||
|
result["parse"] = p
|
||||||
|
result["url"] = url
|
||||||
|
result["header"] = h
|
||||||
|
return result
|
||||||
|
|
||||||
|
def liveContent(self, url):
|
||||||
|
id=self.homeContent(True)['class'][-1]['type_id']
|
||||||
|
vlist=self.categoryContent(id,1,False,{})['list']
|
||||||
|
results = []
|
||||||
|
with ThreadPoolExecutor(max_workers=len(vlist)) as executor:
|
||||||
|
futures = [executor.submit(self.livedetailContent, item['vod_name'], item['vod_id']) for item in vlist]
|
||||||
|
for future in futures:
|
||||||
|
try:
|
||||||
|
detail = future.result()
|
||||||
|
if detail:
|
||||||
|
results.append(detail)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"处理详情数据失败: {str(e)}")
|
||||||
|
return '\n'.join(results)
|
||||||
|
|
||||||
|
def livedetailContent(self, name,id):
|
||||||
|
try:
|
||||||
|
print(f"获取直播源:{name}")
|
||||||
|
body = f"vod_id={id}"
|
||||||
|
data = self.getdata("/api.php/getappapi.index/vodDetail", body)
|
||||||
|
play = [f"{name},#genre#"]
|
||||||
|
for itt in data["vod_play_list"]:
|
||||||
|
for it in itt['urls']:
|
||||||
|
play.append(f"{it['name']}, {it['url']}")
|
||||||
|
except Exception as e:
|
||||||
|
print(f"获取直播源失败:{str(e)}")
|
||||||
|
play=[]
|
||||||
|
return '\n'.join(play)
|
||||||
|
|
||||||
|
def localProxy(self, param):
|
||||||
|
return self.Mlocal(param)
|
||||||
|
|
||||||
|
def gethost(self):
|
||||||
|
headers = {
|
||||||
|
'User-Agent': 'okhttp/3.14.9'
|
||||||
|
}
|
||||||
|
host = self.fetch('https://rxysyyds.oss-cn-chengdu.aliyuncs.com/getapp.txt', headers=headers).text
|
||||||
|
return host.strip()
|
||||||
|
|
||||||
|
def aes(self, text,b=None):
|
||||||
|
key = b"ebad3f1a58b13933"
|
||||||
|
cipher = AES.new(key, AES.MODE_CBC, key)
|
||||||
|
if b:
|
||||||
|
ct_bytes = cipher.encrypt(pad(text.encode("utf-8"), AES.block_size))
|
||||||
|
ct = b64encode(ct_bytes).decode("utf-8")
|
||||||
|
return ct
|
||||||
|
else :
|
||||||
|
pt = unpad(cipher.decrypt(b64decode(text)), AES.block_size)
|
||||||
|
return pt.decode("utf-8")
|
||||||
|
|
||||||
|
def header(self):
|
||||||
|
t = str(int(time.time()))
|
||||||
|
header = {"Referer":self.host,
|
||||||
|
"User-Agent": "okhttp/3.14.9", "app-version-code": "140", "app-ui-mode": "light",
|
||||||
|
"app-api-verify-time": t, "app-user-device-id": self.md5(t),
|
||||||
|
"app-api-verify-sign": self.aes(t,True),
|
||||||
|
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"}
|
||||||
|
return header
|
||||||
|
|
||||||
|
def getdata(self, path, data=None):
|
||||||
|
vdata = self.post(f"{self.host}{path}", headers=self.header(), data=data, timeout=10).json()['data']
|
||||||
|
data1 = self.aes(vdata)
|
||||||
|
return json.loads(data1)
|
||||||
|
|
||||||
|
def Mproxy(self, url):
|
||||||
|
return f"{self.getProxyUrl()}&url={self.e64(url)}&type=m3u8"
|
||||||
|
|
||||||
|
def Mlocal(self, param,header=None):
|
||||||
|
url = self.d64(param["url"])
|
||||||
|
ydata = self.fetch(url, headers=header, allow_redirects=False)
|
||||||
|
data = ydata.content.decode('utf-8')
|
||||||
|
if ydata.headers.get('Location'):
|
||||||
|
url = ydata.headers['Location']
|
||||||
|
data = self.fetch(url, headers=header).content.decode('utf-8')
|
||||||
|
parsed_url = urlparse(url)
|
||||||
|
durl = parsed_url.scheme + "://" + parsed_url.netloc
|
||||||
|
lines = data.strip().split('\n')
|
||||||
|
for index, string in enumerate(lines):
|
||||||
|
if '#EXT' not in string and 'http' not in string:
|
||||||
|
last_slash_index = string.rfind('/')
|
||||||
|
lpath = string[:last_slash_index + 1]
|
||||||
|
lines[index] = durl + ('' if lpath.startswith('/') else '/') + lpath
|
||||||
|
data = '\n'.join(lines)
|
||||||
|
return [200, "application/vnd.apple.mpegur", data]
|
||||||
|
|
||||||
|
def e64(self, text):
|
||||||
|
try:
|
||||||
|
text_bytes = text.encode('utf-8')
|
||||||
|
encoded_bytes = b64encode(text_bytes)
|
||||||
|
return encoded_bytes.decode('utf-8')
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Base64编码错误: {str(e)}")
|
||||||
|
return ""
|
||||||
|
|
||||||
|
def d64(self,encoded_text):
|
||||||
|
try:
|
||||||
|
encoded_bytes = encoded_text.encode('utf-8')
|
||||||
|
decoded_bytes = b64decode(encoded_bytes)
|
||||||
|
return decoded_bytes.decode('utf-8')
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Base64解码错误: {str(e)}")
|
||||||
|
return ""
|
||||||
|
|
||||||
|
def md5(self, text):
|
||||||
|
h = MD5.new()
|
||||||
|
h.update(text.encode('utf-8'))
|
||||||
|
return h.hexdigest()
|
||||||
@@ -0,0 +1,340 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# by @嗷呜
|
||||||
|
import binascii
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import uuid
|
||||||
|
from urllib.parse import urlparse
|
||||||
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
|
sys.path.append('..')
|
||||||
|
from base.spider import Spider
|
||||||
|
from base64 import b64encode, b64decode
|
||||||
|
from Crypto.PublicKey import RSA
|
||||||
|
from Crypto.Cipher import AES, PKCS1_v1_5
|
||||||
|
from Crypto.Util.Padding import unpad, pad
|
||||||
|
from Crypto.Hash import MD5
|
||||||
|
|
||||||
|
|
||||||
|
class Spider(Spider):
|
||||||
|
|
||||||
|
def init(self, extend=""):
|
||||||
|
self.host = self.gethost()
|
||||||
|
pass
|
||||||
|
|
||||||
|
def getName(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def isVideoFormat(self, url):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def manualVideoCheck(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def destroy(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
headers = {
|
||||||
|
'AppID': '534',
|
||||||
|
'app_id': '534',
|
||||||
|
'version': '1.0.3',
|
||||||
|
'package': 'com.hjmore.wallpaper',
|
||||||
|
'user_id': '3507f394e83d2424',
|
||||||
|
'user-id': '3507f394e83d2424',
|
||||||
|
'app_name': 'lanlan',
|
||||||
|
'app-name': 'lanlan',
|
||||||
|
'Content-Type': 'application/json; charset=utf-8;',
|
||||||
|
'User-Agent': 'okhttp/4.9.0'
|
||||||
|
}
|
||||||
|
|
||||||
|
def homeContent(self, filter):
|
||||||
|
hdata=self.getdata('/api.php/provide/index',self.getbody({'tid':'0'}))
|
||||||
|
vlist=hdata['data'].get('tj',[])
|
||||||
|
result = {}
|
||||||
|
classes = []
|
||||||
|
filters = {}
|
||||||
|
for i in hdata['data']['sub_data']:
|
||||||
|
id=str(i['type_id'])
|
||||||
|
classes.append({'type_id': id, 'type_name': i['type_name']})
|
||||||
|
if len(i['data']):
|
||||||
|
vlist.extend(i['data'])
|
||||||
|
with ThreadPoolExecutor(max_workers=len(classes)) as executor:
|
||||||
|
results = executor.map(self.getf, classes)
|
||||||
|
for id, ft in results:
|
||||||
|
if len(ft):filters[id] = ft
|
||||||
|
result['class'] = classes
|
||||||
|
result['filters'] = filters
|
||||||
|
result['list'] = vlist
|
||||||
|
return result
|
||||||
|
|
||||||
|
def homeVideoContent(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def categoryContent(self, tid, pg, filter, extend):
|
||||||
|
body={
|
||||||
|
"tid": tid,
|
||||||
|
"type": extend.get('type'),
|
||||||
|
"lang": extend.get('lang'),
|
||||||
|
"area": extend.get('area'),
|
||||||
|
"year": extend.get('year'),
|
||||||
|
"pg": pg
|
||||||
|
}
|
||||||
|
body = {k: v for k, v in body.items() if v is not None and v != ""}
|
||||||
|
data=self.getdata('/api.php/provide/nav',self.getbody(body))
|
||||||
|
result = {}
|
||||||
|
result['list'] = data['data']['data']
|
||||||
|
result['page'] = pg
|
||||||
|
result['pagecount'] = 9999
|
||||||
|
result['limit'] = 90
|
||||||
|
result['total'] = 999999
|
||||||
|
return result
|
||||||
|
pass
|
||||||
|
|
||||||
|
def detailContent(self, ids):
|
||||||
|
data=self.getdata('/api.php/provide/vod',self.getbody({'ids':ids[0]}))
|
||||||
|
vod=data['data']
|
||||||
|
plist=[]
|
||||||
|
names=[]
|
||||||
|
for i in vod['vod_play_url']:
|
||||||
|
ulist=[]
|
||||||
|
names.append(i['name'].split(' ')[0])
|
||||||
|
jdata={'parse':''}
|
||||||
|
if i.get('parse') and isinstance(i['parse'], list) and len(i['parse']):
|
||||||
|
jdata['parse']=self.e64(json.dumps(i['parse']))
|
||||||
|
for j in i['data']:
|
||||||
|
jdata['url']=j['url']
|
||||||
|
ulist.append(f'{j["name"]}${self.e64(json.dumps(jdata))}')
|
||||||
|
plist.append('#'.join(ulist))
|
||||||
|
vod['vod_play_from']='$$$'.join(names)
|
||||||
|
vod['vod_play_url']='$$$'.join(plist)
|
||||||
|
vod.pop('cover_list', None)
|
||||||
|
return {'list':[vod]}
|
||||||
|
|
||||||
|
def searchContent(self, key, quick, pg="1"):
|
||||||
|
body={"wd":key,"tid":"0","pg":pg}
|
||||||
|
data=self.getdata('/api.php/provide/search',self.getbody(body))
|
||||||
|
vlist=[]
|
||||||
|
for i in data['data']:
|
||||||
|
i.pop('vod_play_from', None)
|
||||||
|
vlist.append(i)
|
||||||
|
return {'list':vlist,'page':pg}
|
||||||
|
|
||||||
|
def playerContent(self, flag, id, vipFlags):
|
||||||
|
data=json.loads(self.d64(id))
|
||||||
|
parse=data.get('parse')
|
||||||
|
url,p,head = data.get('url'),1,''
|
||||||
|
if parse:
|
||||||
|
parse=json.loads(self.d64(parse))
|
||||||
|
if not re.search(r'\.m3u8|.mp4|\.flv', url) and parse:
|
||||||
|
for p in parse:
|
||||||
|
try:
|
||||||
|
data=self.fetch(f'{p}{url}',self.headers).json()
|
||||||
|
url=data.get('data',{}).get('url') or data.get('url')
|
||||||
|
head=data.get('data',{}).get('header') or data.get('header')
|
||||||
|
p=0
|
||||||
|
break
|
||||||
|
except:
|
||||||
|
p,url=1,data.get('url')
|
||||||
|
head = {'User-Agent': 'okhttp/4.9.0'}
|
||||||
|
return {'parse': p, 'url': url, 'header': head}
|
||||||
|
|
||||||
|
def localProxy(self, param):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def getf(self, map):
|
||||||
|
ft,id =[], map['type_id']
|
||||||
|
try:
|
||||||
|
fdata = self.getdata('/api.php/provide/nav', self.getbody({'tid': id, 'pg': '1'}))
|
||||||
|
dy = ['area', 'year', 'lang', 'type']
|
||||||
|
fd = fdata['data']['type_extend']
|
||||||
|
has_non_empty_field = False
|
||||||
|
for key in dy:
|
||||||
|
if key in fd and fd[key].strip() != "":
|
||||||
|
has_non_empty_field = True
|
||||||
|
break
|
||||||
|
if has_non_empty_field:
|
||||||
|
for dkey in fd:
|
||||||
|
if dkey in dy and fd[dkey].strip() != "":
|
||||||
|
values = fd[dkey].split(",")
|
||||||
|
value_array = [{"n": value.strip(), "v": value.strip()} for value in values if
|
||||||
|
value.strip() != ""]
|
||||||
|
ft.append({"key": dkey, "name": dkey, "value": value_array})
|
||||||
|
return (id, ft)
|
||||||
|
except:
|
||||||
|
return (id, ft)
|
||||||
|
|
||||||
|
def getskey(self):
|
||||||
|
random_bytes = os.urandom(16)
|
||||||
|
return binascii.hexlify(random_bytes).decode()
|
||||||
|
|
||||||
|
def getohost(self):
|
||||||
|
url='https://bianyuan001.oss-cn-beijing.aliyuncs.com/huidu1.0.0.json'
|
||||||
|
response = self.fetch(url, headers=self.headers).json()
|
||||||
|
return response['servers'][0]
|
||||||
|
|
||||||
|
def gethost(self):
|
||||||
|
body={
|
||||||
|
"gr_rp_size": "1080*2272",
|
||||||
|
"gr_app_list": "%E5%B1%8F%E5%B9%95%E5%BD%95%E5%88%B6%EF%BC%88com.miui.screenrecorder%29%0A%E5%A4%B8%E5%85%8B%EF%BC%88com.quark.browser%29%0A%E8%BE%B9%E7%BC%98%E8%A7%86%E9%A2%91%EF%BC%88com.hjmore.wallpaper%29%0A%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9%EF%BC%88tv.danmaku.bili%29%0A%E7%81%AB%E6%98%9F%E6%90%9C%E9%A2%98%EF%BC%88com.fenbi.android.souti%29%0A%E6%94%AF%E4%BB%98%E5%AE%9D%EF%BC%88com.eg.android.AlipayGphone%29%0AWPS%20Office%EF%BC%88cn.wps.moffice_eng%29",
|
||||||
|
"gr_lal": "0.0%2C0.0",
|
||||||
|
"gr_system_type": "android",
|
||||||
|
"gr_device_imei": "3507f394e83d2424",
|
||||||
|
"gr_app_version": "1.0.3",
|
||||||
|
"gr_device_model": "Xiaomi%20M2012K10C%20%28Android%20%E7%89%88%E6%9C%AC%3A%2011%2C%20SDK%E7%89%88%E6%9C%AC%3A%2030%29",
|
||||||
|
"gr_city": "%E8%B4%B5%E5%B7%9E%2C%E6%9C%AA%E7%9F%A5%2C%E6%9C%AA%E7%9F%A5",
|
||||||
|
"requestId": self.uuid(),
|
||||||
|
"timeStamp": str(int(time.time() * 1000)),
|
||||||
|
"version": "1.0.3",
|
||||||
|
"package": "com.hjmore.wallpaper",
|
||||||
|
"userLoginToken": "",
|
||||||
|
"app_id": "534",
|
||||||
|
"appName": 2131951658,
|
||||||
|
"device_id": "3507f394e83d2424",
|
||||||
|
"device-id": "3507f394e83d2424",
|
||||||
|
"oaid": "",
|
||||||
|
"imei": "",
|
||||||
|
"referer_shop": "边缘影视",
|
||||||
|
"referer-shop": "边缘影视",
|
||||||
|
"access_fine_location": 0,
|
||||||
|
"access-fine-location": 0
|
||||||
|
}
|
||||||
|
ohost = self.getohost()
|
||||||
|
data=self.getdata(f'/api.php/settings/grayscale_list',body,ohost)
|
||||||
|
parsed_url = urlparse(data['data']['grayscale']['server_url'][0])
|
||||||
|
domain = parsed_url.scheme + "://" + parsed_url.netloc
|
||||||
|
return domain
|
||||||
|
|
||||||
|
def drsa(self, encrypted_data):
|
||||||
|
private_key_pem = """-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDA5NWiAwRjH50/
|
||||||
|
IJY1N0zLopa4jpuWE7kWMn1Qunu6SjBgTvNRmRUoPDHn54haLfbfXIa2X+/sIaMB
|
||||||
|
/O3HhrpVsz55E5W2vpZ5fBYWh+M65bQERKTW+l72H7GR9x0yj3QPByzzfsj/QkyP
|
||||||
|
81prpwR9i8yMe7yG9TFKqUQCPE+/GrhNU1Qf6nFmV+vMnlP9DantkwAt4fPOMZn3
|
||||||
|
j4da65/1YQV+F5bYzaLenNVKbHf8U8fVYLZWIy4yk2Vpe4R2Z+JX/eHWsChE9hOu
|
||||||
|
iFm02eTW5NJLZlWUxYrSE23VXi8oXSEdON3UEOrwSdAUh4SXxLZ9U7KpNVdTwWyR
|
||||||
|
AS4GyzJ/AgMBAAECggEBAKzmcXefLLeNBu4mz30z7Go7es5DRcLoOudiqmFKRs1c
|
||||||
|
4q/xFLj3drdx/WnZZ6ctvDPKRBYFOJF4NRz7Ekfew/c9i6oLnA8KFuceCs53T37j
|
||||||
|
ltCclwT7t1L2ZbxovIsteuJdlDVOV+w2CVqez1Xfh27heKAT6ZEvBtfdkVBPr0uj
|
||||||
|
oVwa2+XlJmYZw5dHeB7ySVeAQ+69zDuADB8OWxPWsv6Del+Fhf0kTHAw4WgqcYsd
|
||||||
|
JUunCjgLdJUlDgXzH/M/Nj8NYVEuq6QpmhaktJ4fwn/F7u3lQllVCFKj5lr0Xb92
|
||||||
|
y7lvQlGqMKX1oxf+P5c5/vie1kDx1Rj4S++flIcVlUECgYEA4BuxCZ1c8oOF98bs
|
||||||
|
KTAONnnZniQ1BRt7rA+O9+++lDjxJhxkuthwjB9YzrnZtxHJtvIIie9Jv8MVfzHa
|
||||||
|
p2woDtiEh3YYwmIlgNUFvTcGe++tTiEiLDcGc/xNhpvfbLaw9QB7/HQ+LT1QCMxJ
|
||||||
|
ufdBrR98l0khIGjYqxDW3W5pV70CgYEA3Ff/9+GM2XI/EUSTYrpnwp5R5OsXz1DL
|
||||||
|
3CFFgp1EPCNk/c3YNWnrUtTkfmKAlRqWIHfphvH/jS6jpGrfRxDggPwGMtBc134b
|
||||||
|
brIM5i4KNj/EcE+w5g03HaKBf1ZihHDQ53c6wTn6IFOHJNSPRLqMNqRymfbclNyO
|
||||||
|
lBMHQmB8yOsCgYBCdZPTwRnuRTi2WQRx1nFwkEQL1Lrwb80GInsIZc2DkTtaTPNG
|
||||||
|
QadmtmkUrSK2Wo0SNsZ3eUHKn2TBmpw4KCfc9zKeJVSEWKy8fu+7xBSlLlebotHK
|
||||||
|
gOrl/H1VHOZuC+OAVItwO1yw98zDPynh/0Q3ve2pw6MSRGV0nYLKmdKdlQKBgQCJ
|
||||||
|
Ty1rw1qKhu9WS22tMIxIc3CFPxtvTeI8I1+1rVtAPq5Im2YIoyDKVXCucaO/RvoW
|
||||||
|
8aLNPTELQe0oIJFTL+k3d9ZFBCNXBncB3GK9biNe+w3nD0IlmkamaQZZ2/M4pTUJ
|
||||||
|
iPtMPlzomCS3ht5g7f9CbegcmgGLooYXMGRtsMMSUQKBgQCoj+3UciH2i+HyUla5
|
||||||
|
1FxivjH3MqSTE4Q7OdzrELb6DoLYzjgWAbpG8HIuodD4uG5xz1oR5H7vkblf1itB
|
||||||
|
hwOwDEiabyX76e/I3Q0ovwBV+9PMjM4UVU0kHoiu3Z2s90ckwNh58w3QH5fn9E0b
|
||||||
|
fqMnB6uWze+xrXWijaOzVZhIZg==
|
||||||
|
-----END RSA PRIVATE KEY-----"""
|
||||||
|
private_key = RSA.import_key(private_key_pem)
|
||||||
|
cipher = PKCS1_v1_5.new(private_key)
|
||||||
|
decrypted_data = cipher.decrypt(b64decode(encrypted_data), None)
|
||||||
|
return decrypted_data.decode('utf-8')
|
||||||
|
|
||||||
|
def ersa(self, data):
|
||||||
|
public_key = """-----BEGIN PUBLIC KEY-----
|
||||||
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+0QMb3WDXjNBRovRhTLH
|
||||||
|
g3d+CliZAva2tepWNNN0Pj6DgE3ZTnPR34iL/cjo9Jbd3dqAJs/YkKnFurGkDxz5
|
||||||
|
TthIqvmz244wiFcHt+FGWoJsj5ZVvrH3pPwH85ggmI1DjxSJEUhB12Z9X6FGli8D
|
||||||
|
drR9xeLe5y8vFekux8xCQ7pwH1mNQu4Wy32WVM8aLjmRjNzEWOvEMAWCRuwymEdS
|
||||||
|
zlWoH53qk1dqd6DAmOJhWU2hH6Yt2ZY9LTaDGiHrS+g0DuwajAQzhbM8eonGYMph
|
||||||
|
nP4q0UTHWEfaGR3HoILmeM32M+qF/UCGfgfR6tCMiXPoHwnD2zoxbZ2p+QlYuTZL
|
||||||
|
vQIDAQAB
|
||||||
|
-----END PUBLIC KEY-----"""
|
||||||
|
key = RSA.importKey(public_key)
|
||||||
|
cipher = PKCS1_v1_5.new(key)
|
||||||
|
encrypted = cipher.encrypt(data.encode())
|
||||||
|
return b64encode(encrypted).decode()
|
||||||
|
|
||||||
|
def eaes(self, data, key):
|
||||||
|
key = key.encode('utf-8')
|
||||||
|
cipher = AES.new(key, AES.MODE_ECB)
|
||||||
|
padded = pad(data.encode('utf-8'), AES.block_size)
|
||||||
|
encrypted = cipher.encrypt(padded)
|
||||||
|
word = b64encode(encrypted).decode('utf-8')
|
||||||
|
return word
|
||||||
|
|
||||||
|
def daes(self, encrypted_data, key):
|
||||||
|
key = key.encode('utf-8')
|
||||||
|
cipher = AES.new(key, AES.MODE_ECB)
|
||||||
|
encrypted = b64decode(encrypted_data)
|
||||||
|
decrypted = cipher.decrypt(encrypted)
|
||||||
|
unpadded = unpad(decrypted, AES.block_size)
|
||||||
|
return unpadded.decode('utf-8')
|
||||||
|
|
||||||
|
def getbody(self,params=None):
|
||||||
|
body = {
|
||||||
|
"requestId": self.uuid(),
|
||||||
|
"timeStamp": str(int(time.time()*1000)),
|
||||||
|
"version": "1.0.3",
|
||||||
|
"package": "com.hjmore.wallpaper",
|
||||||
|
"userLoginToken": "",
|
||||||
|
"app_id": "534",
|
||||||
|
"appName": 2131951658,
|
||||||
|
"device_id": "3507f394e83d2424",
|
||||||
|
"device-id": "3507f394e83d2424",
|
||||||
|
"oaid": "",
|
||||||
|
"imei": "",
|
||||||
|
"referer_shop": "边缘影视",
|
||||||
|
"referer-shop": "边缘影视",
|
||||||
|
"access_fine_location": 0,
|
||||||
|
"access-fine-location": 0
|
||||||
|
}
|
||||||
|
if params:
|
||||||
|
body.update(params)
|
||||||
|
return body
|
||||||
|
|
||||||
|
def getdata(self, path, body,host=None):
|
||||||
|
jdata=json.dumps(body)
|
||||||
|
msign = self.md5(jdata)
|
||||||
|
skey = self.getskey()
|
||||||
|
jsign={'key': skey,'sign': msign}
|
||||||
|
Sign=self.ersa(json.dumps(jsign))
|
||||||
|
header=self.headers.copy()
|
||||||
|
header['Sign']=Sign
|
||||||
|
dbody=self.eaes(jdata, skey)
|
||||||
|
response = self.post(f'{host or self.host}{path}', headers=header, data=dbody)
|
||||||
|
rdata=response.text
|
||||||
|
if response.headers.get('Sign'):
|
||||||
|
dkey=self.drsa(response.headers['Sign'])
|
||||||
|
rdata=self.daes(rdata, dkey)
|
||||||
|
return json.loads(rdata)
|
||||||
|
|
||||||
|
def e64(self, text):
|
||||||
|
try:
|
||||||
|
text_bytes = text.encode('utf-8')
|
||||||
|
encoded_bytes = b64encode(text_bytes)
|
||||||
|
return encoded_bytes.decode('utf-8')
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Base64编码错误: {str(e)}")
|
||||||
|
return ""
|
||||||
|
|
||||||
|
def d64(self,encoded_text):
|
||||||
|
try:
|
||||||
|
encoded_bytes = encoded_text.encode('utf-8')
|
||||||
|
decoded_bytes = b64decode(encoded_bytes)
|
||||||
|
return decoded_bytes.decode('utf-8')
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Base64解码错误: {str(e)}")
|
||||||
|
return ""
|
||||||
|
|
||||||
|
def md5(self,text):
|
||||||
|
h = MD5.new()
|
||||||
|
h.update(text.encode('utf-8'))
|
||||||
|
return h.hexdigest()
|
||||||
|
|
||||||
|
def uuid(self):
|
||||||
|
return str(uuid.uuid4())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1729
-1176
File diff suppressed because it is too large.
Load diff
+3613
-2709
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
Binary file not shown.
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 3.7 KiB |
@@ -1,25 +0,0 @@
|
|||||||
{
|
|
||||||
"请求头": "User-Agent$MOBILE_UA",
|
|
||||||
"主页url": "https://www.aiwodj.com",
|
|
||||||
"数组": "lazy lazyloaded&&</a[替换:amp;>>]",
|
|
||||||
"图片": "data-src=\"&&\"",
|
|
||||||
"标题": "title=\"&&\"",
|
|
||||||
"链接": "href=\"&&\"",
|
|
||||||
"副标题": "+module-item-caption\">&&</div",
|
|
||||||
"简介": "description\" content=\"&&,这里",
|
|
||||||
"线路数组": "module-tab-item tab-item&&</div",
|
|
||||||
"线路标题": "+span>&&</span",
|
|
||||||
"播放数组": "module-blocklist&&</div>",
|
|
||||||
"播放列表": "<a&&</a>",
|
|
||||||
"播放标题": "span>&&</span>",
|
|
||||||
"播放链接": "href=\"&&\"",
|
|
||||||
"跳转播放链接": "urlDecode(var player_*\"url\":\"&&\")",
|
|
||||||
"搜索url": "https://www.aiwodj.com/vodsearch/{wd}----------{pg}---.html",
|
|
||||||
"搜索数组": "lazy lazyload&&</a[替换:amp;>>]",
|
|
||||||
"搜索图片": "data-src=\"&&\"",
|
|
||||||
"搜索标题": "+title=\"&&\"",
|
|
||||||
"搜索链接": "href=\"&&\"",
|
|
||||||
"分类url": "https://www.aiwodj.com/vodshow/{cateId}--{by}-{class}-{lang}----{catePg}---{year}.html",
|
|
||||||
"分类": "穿越&战神&重生&爱情&萌娃&神医&古代&玄幻&言情",
|
|
||||||
"分类值": "fenle&fenlei2&fenlei3&fenlei4&guda&shenyi&gudai&xuanhuan&yanqing"
|
|
||||||
}
|
|
||||||
+105
-37
@@ -89,6 +89,29 @@
|
|||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"ext": "http://cmsyt114.lyyytv.cn/api.php/app/"
|
"ext": "http://cmsyt114.lyyytv.cn/api.php/app/"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "乐享影视",
|
||||||
|
"name": "乐享|影视",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_AppYsV2",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"ext": "http://114.66.55.28:8818/api.php/app/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "金牌影视",
|
||||||
|
"name": "金牌|影视",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./py/金牌影视.py",
|
||||||
|
"searchable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"playerType": 2,
|
||||||
|
"ext": {
|
||||||
|
"site": "https://www.hkybqufgh.com,https://www.sizhengxt.com,https://0996zp.com,https://9zhoukj.com/,https://www.sizhengxt.com,https://www.tjrongze.com,https://www.jiabaide.cn,https://cqzuoer.com"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "哔哩视频",
|
"key": "哔哩视频",
|
||||||
"name": "哔哩|视频",
|
"name": "哔哩|视频",
|
||||||
@@ -195,17 +218,6 @@
|
|||||||
"changeable": 1,
|
"changeable": 1,
|
||||||
"ext": "./json/lb.json?"
|
"ext": "./json/lb.json?"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "小米",
|
|
||||||
"name": "小米|4K弹幕",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_PanWebShare",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"changeable": 1,
|
|
||||||
"ext": "./json/xm.json?"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "至臻",
|
"key": "至臻",
|
||||||
"name": "至臻|4K弹幕",
|
"name": "至臻|4K弹幕",
|
||||||
@@ -415,10 +427,23 @@
|
|||||||
"key": "河马短剧",
|
"key": "河马短剧",
|
||||||
"name": "河马|短剧",
|
"name": "河马|短剧",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"api": "csp_AppHMDJ",
|
"api": "./py/河马短剧.py",
|
||||||
"searchable": 1,
|
"searchable": 1,
|
||||||
"quickSearch": 0,
|
"changeable": 1,
|
||||||
"filterable": 0
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"playerType": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "偷乐短剧",
|
||||||
|
"name": "偷乐|短剧",
|
||||||
|
"type": 3,
|
||||||
|
"api": "./py/偷乐短剧.py",
|
||||||
|
"searchable": 1,
|
||||||
|
"changeable": 1,
|
||||||
|
"quickSearch": 1,
|
||||||
|
"filterable": 1,
|
||||||
|
"playerType": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "爱看短剧",
|
"key": "爱看短剧",
|
||||||
@@ -431,16 +456,6 @@
|
|||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"playerType": 2
|
"playerType": 2
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "爱我短剧",
|
|
||||||
"name": "爱我|短剧",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_XBPQ",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"ext": "./XBPQ/爱我短剧.json"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "短剧网",
|
"key": "短剧网",
|
||||||
"name": "短剧网|短剧",
|
"name": "短剧网|短剧",
|
||||||
@@ -468,19 +483,6 @@
|
|||||||
"filterable": 1,
|
"filterable": 1,
|
||||||
"ext": "https://cs.hgyx.vip/api2/api.php/app/"
|
"ext": "https://cs.hgyx.vip/api2/api.php/app/"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "金牌影视",
|
|
||||||
"name": "金牌|影视",
|
|
||||||
"type": 3,
|
|
||||||
"api": "./py/金牌影视.py",
|
|
||||||
"searchable": 1,
|
|
||||||
"quickSearch": 1,
|
|
||||||
"filterable": 1,
|
|
||||||
"playerType": 2,
|
|
||||||
"ext": {
|
|
||||||
"site": "https://www.hkybqufgh.com,https://www.sizhengxt.com,https://0996zp.com,https://9zhoukj.com/,https://www.sizhengxt.com,https://www.tjrongze.com,https://www.jiabaide.cn,https://cqzuoer.com"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "猎手影视",
|
"key": "猎手影视",
|
||||||
"name": "猎手|APP",
|
"name": "猎手|APP",
|
||||||
@@ -1782,6 +1784,64 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "钓鱼",
|
||||||
|
"type": "1",
|
||||||
|
"url": "http://8.129.30.117:8117/diaoyu.php?url=",
|
||||||
|
"ext": {
|
||||||
|
"flag": [
|
||||||
|
"qq",
|
||||||
|
"腾讯",
|
||||||
|
"qiyi",
|
||||||
|
"爱奇艺",
|
||||||
|
"奇艺",
|
||||||
|
"youku",
|
||||||
|
"优酷",
|
||||||
|
"sohu",
|
||||||
|
"搜狐",
|
||||||
|
"letv",
|
||||||
|
"乐视",
|
||||||
|
"mgtv",
|
||||||
|
"芒果",
|
||||||
|
"tnmb",
|
||||||
|
"seven",
|
||||||
|
"bilibili",
|
||||||
|
"1905"
|
||||||
|
],
|
||||||
|
"header": {
|
||||||
|
"User-Agent": "okhttp/4.9.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "无上",
|
||||||
|
"type": "1",
|
||||||
|
"url": "https://mfjx.iwsyy.xyz/?url=",
|
||||||
|
"ext": {
|
||||||
|
"flag": [
|
||||||
|
"qq",
|
||||||
|
"腾讯",
|
||||||
|
"qiyi",
|
||||||
|
"爱奇艺",
|
||||||
|
"奇艺",
|
||||||
|
"youku",
|
||||||
|
"优酷",
|
||||||
|
"sohu",
|
||||||
|
"搜狐",
|
||||||
|
"letv",
|
||||||
|
"乐视",
|
||||||
|
"mgtv",
|
||||||
|
"芒果",
|
||||||
|
"tnmb",
|
||||||
|
"seven",
|
||||||
|
"bilibili",
|
||||||
|
"1905"
|
||||||
|
],
|
||||||
|
"header": {
|
||||||
|
"User-Agent": "okhttp/4.9.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "臻享",
|
"name": "臻享",
|
||||||
"type": "1",
|
"type": "1",
|
||||||
@@ -2064,6 +2124,14 @@
|
|||||||
"playerType": 2,
|
"playerType": 2,
|
||||||
"timeout": 10
|
"timeout": 10
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "Guovin",
|
||||||
|
"type": 0,
|
||||||
|
"url": "https://gitee.com/mytv-android/iptv-api/raw/master/output/result.m3u",
|
||||||
|
"epg": "http://cdn.1678520.xyz/epg/?ch={name}&date={date}",
|
||||||
|
"playerType": 2,
|
||||||
|
"timeout": 10
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "虎牙一起看",
|
"name": "虎牙一起看",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
|
|||||||
-1457
File diff suppressed because it is too large.
Load diff
+790
@@ -0,0 +1,790 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# 偷乐短剧爬虫
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
import time
|
||||||
|
import urllib.parse
|
||||||
|
import requests
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
|
|
||||||
|
# 导入基础类
|
||||||
|
sys.path.append('../../')
|
||||||
|
try:
|
||||||
|
from base.spider import Spider
|
||||||
|
except ImportError:
|
||||||
|
# 本地调试时的替代实现
|
||||||
|
class Spider:
|
||||||
|
def init(self, extend=""):
|
||||||
|
pass
|
||||||
|
|
||||||
|
class Spider(Spider):
|
||||||
|
def __init__(self):
|
||||||
|
# 网站主URL
|
||||||
|
self.siteUrl = "https://www.toule.top"
|
||||||
|
|
||||||
|
# 根据网站实际结构,分类链接格式为: /index.php/vod/show/class/分类名/id/1.html
|
||||||
|
# 分类ID映射 - 从网站中提取的分类
|
||||||
|
self.cateManual = {
|
||||||
|
"男频": "/index.php/vod/show/class/%E7%94%B7%E9%A2%91/id/1.html",
|
||||||
|
"女频": "/index.php/vod/show/class/%E5%A5%B3%E9%A2%91/id/1.html",
|
||||||
|
"都市": "/index.php/vod/show/class/%E9%83%BD%E5%B8%82/id/1.html",
|
||||||
|
"赘婿": "/index.php/vod/show/class/%E8%B5%98%E5%A9%BF/id/1.html",
|
||||||
|
"战神": "/index.php/vod/show/class/%E6%88%98%E7%A5%9E/id/1.html",
|
||||||
|
"古代言情": "/index.php/vod/show/class/%E5%8F%A4%E4%BB%A3%E8%A8%80%E6%83%85/id/1.html",
|
||||||
|
"现代言情": "/index.php/vod/show/class/%E7%8E%B0%E4%BB%A3%E8%A8%80%E6%83%85/id/1.html",
|
||||||
|
"历史": "/index.php/vod/show/class/%E5%8E%86%E5%8F%B2/id/1.html",
|
||||||
|
"玄幻": "/index.php/vod/show/class/%E7%8E%84%E5%B9%BB/id/1.html",
|
||||||
|
"搞笑": "/index.php/vod/show/class/%E6%90%9E%E7%AC%91/id/1.html",
|
||||||
|
"甜宠": "/index.php/vod/show/class/%E7%94%9C%E5%AE%A0/id/1.html",
|
||||||
|
"励志": "/index.php/vod/show/class/%E5%8A%B1%E5%BF%97/id/1.html",
|
||||||
|
"逆袭": "/index.php/vod/show/class/%E9%80%86%E8%A2%AD/id/1.html",
|
||||||
|
"穿越": "/index.php/vod/show/class/%E7%A9%BF%E8%B6%8A/id/1.html",
|
||||||
|
"古装": "/index.php/vod/show/class/%E5%8F%A4%E8%A3%85/id/1.html"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 请求头
|
||||||
|
self.headers = {
|
||||||
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
|
||||||
|
"Referer": "https://www.toule.top/",
|
||||||
|
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
|
||||||
|
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
|
||||||
|
"Accept-Encoding": "gzip, deflate, br",
|
||||||
|
"Connection": "keep-alive",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# 缓存
|
||||||
|
self.cache = {}
|
||||||
|
self.cache_timeout = {}
|
||||||
|
|
||||||
|
def getName(self):
|
||||||
|
return "偷乐短剧"
|
||||||
|
|
||||||
|
def init(self, extend=""):
|
||||||
|
# 初始化方法,可以留空
|
||||||
|
return
|
||||||
|
|
||||||
|
def isVideoFormat(self, url):
|
||||||
|
"""判断是否为视频格式"""
|
||||||
|
video_formats = ['.mp4', '.m3u8', '.ts', '.flv', '.avi', '.mkv', '.mov', '.rmvb', '.3gp']
|
||||||
|
for format in video_formats:
|
||||||
|
if format in url.lower():
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def manualVideoCheck(self):
|
||||||
|
"""是否需要手动检查视频"""
|
||||||
|
return False
|
||||||
|
|
||||||
|
# 工具方法 - 网络请求
|
||||||
|
def fetch(self, url, headers=None, data=None, method="GET"):
|
||||||
|
"""统一的网络请求方法"""
|
||||||
|
try:
|
||||||
|
if headers is None:
|
||||||
|
headers = self.headers.copy()
|
||||||
|
|
||||||
|
if method.upper() == "GET":
|
||||||
|
response = requests.get(url, headers=headers, params=data, timeout=10,verify=False)
|
||||||
|
else: # POST
|
||||||
|
response = requests.post(url, headers=headers, data=data, timeout=10,verify=False)
|
||||||
|
|
||||||
|
response.raise_for_status()
|
||||||
|
response.encoding = response.apparent_encoding or 'utf-8'
|
||||||
|
return response
|
||||||
|
except Exception as e:
|
||||||
|
self.log(f"请求失败: {url}, 错误: {str(e)}", "ERROR")
|
||||||
|
return None
|
||||||
|
|
||||||
|
# 缓存方法
|
||||||
|
def getCache(self, key, timeout=3600):
|
||||||
|
"""获取缓存数据"""
|
||||||
|
if key in self.cache and key in self.cache_timeout:
|
||||||
|
if time.time() < self.cache_timeout[key]:
|
||||||
|
return self.cache[key]
|
||||||
|
else:
|
||||||
|
del self.cache[key]
|
||||||
|
del self.cache_timeout[key]
|
||||||
|
return None
|
||||||
|
|
||||||
|
def setCache(self, key, value, timeout=3600):
|
||||||
|
"""设置缓存数据"""
|
||||||
|
self.cache[key] = value
|
||||||
|
self.cache_timeout[key] = time.time() + timeout
|
||||||
|
|
||||||
|
# 日志方法
|
||||||
|
def log(self, msg, level='INFO'):
|
||||||
|
"""记录日志"""
|
||||||
|
levels = {
|
||||||
|
'DEBUG': 0,
|
||||||
|
'INFO': 1,
|
||||||
|
'WARNING': 2,
|
||||||
|
'ERROR': 3
|
||||||
|
}
|
||||||
|
|
||||||
|
current_level = 'INFO' # 可以设置为DEBUG以获取更多信息
|
||||||
|
|
||||||
|
if levels.get(level, 4) >= levels.get(current_level, 1):
|
||||||
|
print(f"[{level}] {time.strftime('%Y-%m-%d %H:%M:%S')} - {msg}")
|
||||||
|
|
||||||
|
# 辅助方法 - 从URL中提取视频ID
|
||||||
|
def extractVodId(self, url):
|
||||||
|
"""从URL中提取视频ID"""
|
||||||
|
# 路径格式: /index.php/vod/play/id/9024/sid/1/nid/1.html
|
||||||
|
match = re.search(r'/id/(\d+)/', url)
|
||||||
|
if match:
|
||||||
|
return match.group(1)
|
||||||
|
return ""
|
||||||
|
|
||||||
|
# 辅助方法 - 从网页内容中提取分类
|
||||||
|
def extractCategories(self, text):
|
||||||
|
"""从网页内容中提取分类标签"""
|
||||||
|
cats = []
|
||||||
|
# 匹配标签字符串,例如: "男频,逆袭,亲情,短剧"
|
||||||
|
if "," in text:
|
||||||
|
parts = text.split(",")
|
||||||
|
for part in parts:
|
||||||
|
part = part.strip()
|
||||||
|
if part and part != "短剧":
|
||||||
|
cats.append(part)
|
||||||
|
return cats
|
||||||
|
|
||||||
|
# 主要接口实现
|
||||||
|
def homeContent(self, filter):
|
||||||
|
"""获取首页分类及内容"""
|
||||||
|
result = {}
|
||||||
|
classes = []
|
||||||
|
|
||||||
|
# 从缓存获取
|
||||||
|
cache_key = 'home_classes'
|
||||||
|
cached_classes = self.getCache(cache_key)
|
||||||
|
if cached_classes:
|
||||||
|
classes = cached_classes
|
||||||
|
else:
|
||||||
|
# 使用预定义的分类
|
||||||
|
for k, v in self.cateManual.items():
|
||||||
|
classes.append({
|
||||||
|
'type_id': v, # 使用完整URL路径作为type_id
|
||||||
|
'type_name': k
|
||||||
|
})
|
||||||
|
|
||||||
|
# 保存到缓存
|
||||||
|
self.setCache(cache_key, classes, 24*3600) # 缓存24小时
|
||||||
|
|
||||||
|
result['class'] = classes
|
||||||
|
|
||||||
|
# 获取首页推荐视频
|
||||||
|
videos = self.homeVideoContent().get('list', [])
|
||||||
|
result['list'] = videos
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
def homeVideoContent(self):
|
||||||
|
"""获取首页推荐视频内容"""
|
||||||
|
result = {'list': []}
|
||||||
|
videos = []
|
||||||
|
|
||||||
|
# 从缓存获取
|
||||||
|
cache_key = 'home_videos'
|
||||||
|
cached_videos = self.getCache(cache_key)
|
||||||
|
if cached_videos:
|
||||||
|
return {'list': cached_videos}
|
||||||
|
|
||||||
|
try:
|
||||||
|
response = self.fetch(self.siteUrl)
|
||||||
|
if response and response.status_code == 200:
|
||||||
|
html = response.text
|
||||||
|
soup = BeautifulSoup(html, 'html.parser')
|
||||||
|
|
||||||
|
# 查找最新更新区域
|
||||||
|
latest_section = soup.find('h2', text=lambda t: t and '最新更新' in t)
|
||||||
|
if latest_section:
|
||||||
|
container = latest_section.parent # 获取容器
|
||||||
|
if container:
|
||||||
|
# 查找所有 li.item 元素
|
||||||
|
items = container.find_all('li', class_='item')
|
||||||
|
|
||||||
|
for item in items:
|
||||||
|
try:
|
||||||
|
# 获取链接和标题
|
||||||
|
title_link = item.find('h3')
|
||||||
|
if not title_link:
|
||||||
|
continue
|
||||||
|
|
||||||
|
title = title_link.text.strip()
|
||||||
|
|
||||||
|
# 获取第一个链接作为详情页链接
|
||||||
|
link_tag = item.find('a')
|
||||||
|
if not link_tag:
|
||||||
|
continue
|
||||||
|
|
||||||
|
link = link_tag.get('href', '')
|
||||||
|
if not link.startswith('http'):
|
||||||
|
link = urllib.parse.urljoin(self.siteUrl, link)
|
||||||
|
|
||||||
|
# 提取ID
|
||||||
|
vid = self.extractVodId(link)
|
||||||
|
if not vid:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# 获取图片
|
||||||
|
img_tag = item.find('img')
|
||||||
|
img_url = ""
|
||||||
|
if img_tag:
|
||||||
|
img_url = img_tag.get('src', img_tag.get('data-src', ''))
|
||||||
|
if img_url and not img_url.startswith('http'):
|
||||||
|
img_url = urllib.parse.urljoin(self.siteUrl, img_url)
|
||||||
|
|
||||||
|
# 获取备注信息
|
||||||
|
remarks = ""
|
||||||
|
remarks_tag = item.find('span', class_='remarks')
|
||||||
|
if remarks_tag:
|
||||||
|
remarks = remarks_tag.text.strip()
|
||||||
|
|
||||||
|
# 获取标签信息
|
||||||
|
tags = ""
|
||||||
|
tags_tag = item.find('span', class_='tags')
|
||||||
|
if tags_tag:
|
||||||
|
tags = tags_tag.text.strip()
|
||||||
|
|
||||||
|
# 合并备注和标签
|
||||||
|
if remarks and tags:
|
||||||
|
remarks = f"{remarks} | {tags}"
|
||||||
|
elif tags:
|
||||||
|
remarks = tags
|
||||||
|
|
||||||
|
# 构建视频项
|
||||||
|
videos.append({
|
||||||
|
'vod_id': vid,
|
||||||
|
'vod_name': title,
|
||||||
|
'vod_pic': img_url,
|
||||||
|
'vod_remarks': remarks
|
||||||
|
})
|
||||||
|
except Exception as e:
|
||||||
|
self.log(f"处理视频项时出错: {str(e)}", "ERROR")
|
||||||
|
continue
|
||||||
|
|
||||||
|
# 保存到缓存
|
||||||
|
self.setCache(cache_key, videos, 3600) # 缓存1小时
|
||||||
|
except Exception as e:
|
||||||
|
self.log(f"获取首页视频内容发生错误: {str(e)}", "ERROR")
|
||||||
|
|
||||||
|
result['list'] = videos
|
||||||
|
return result
|
||||||
|
|
||||||
|
def categoryContent(self, tid, pg, filter, extend):
|
||||||
|
"""获取分类内容"""
|
||||||
|
result = {}
|
||||||
|
videos = []
|
||||||
|
|
||||||
|
# 处理页码
|
||||||
|
if pg is None:
|
||||||
|
pg = 1
|
||||||
|
else:
|
||||||
|
pg = int(pg)
|
||||||
|
|
||||||
|
# 构建分类URL - tid是完整的URL路径
|
||||||
|
if tid.startswith("/"):
|
||||||
|
# 替换页码,URL格式可能像: /index.php/vod/show/class/男频/id/1.html
|
||||||
|
if pg > 1:
|
||||||
|
if "html" in tid:
|
||||||
|
category_url = tid.replace(".html", f"/page/{pg}.html")
|
||||||
|
else:
|
||||||
|
category_url = f"{tid}/page/{pg}.html"
|
||||||
|
else:
|
||||||
|
category_url = tid
|
||||||
|
|
||||||
|
full_url = urllib.parse.urljoin(self.siteUrl, category_url)
|
||||||
|
else:
|
||||||
|
# 如果tid不是URL路径,可能是旧版分类ID,尝试查找对应URL
|
||||||
|
category_url = ""
|
||||||
|
for name, url in self.cateManual.items():
|
||||||
|
if name == tid:
|
||||||
|
category_url = url
|
||||||
|
break
|
||||||
|
|
||||||
|
if not category_url:
|
||||||
|
self.log(f"未找到分类ID对应的URL: {tid}", "ERROR")
|
||||||
|
result['list'] = []
|
||||||
|
result['page'] = pg
|
||||||
|
result['pagecount'] = 1
|
||||||
|
result['limit'] = 0
|
||||||
|
result['total'] = 0
|
||||||
|
return result
|
||||||
|
|
||||||
|
# 处理页码
|
||||||
|
if pg > 1:
|
||||||
|
if "html" in category_url:
|
||||||
|
category_url = category_url.replace(".html", f"/page/{pg}.html")
|
||||||
|
else:
|
||||||
|
category_url = f"{category_url}/page/{pg}.html"
|
||||||
|
|
||||||
|
full_url = urllib.parse.urljoin(self.siteUrl, category_url)
|
||||||
|
|
||||||
|
# 请求分类页
|
||||||
|
try:
|
||||||
|
response = self.fetch(full_url)
|
||||||
|
if response and response.status_code == 200:
|
||||||
|
html = response.text
|
||||||
|
soup = BeautifulSoup(html, 'html.parser')
|
||||||
|
|
||||||
|
# 查找视频项,根据实际HTML结构调整
|
||||||
|
items = soup.find_all('li', class_='item')
|
||||||
|
|
||||||
|
for item in items:
|
||||||
|
try:
|
||||||
|
# 获取链接和标题
|
||||||
|
title_tag = item.find('h3')
|
||||||
|
if not title_tag:
|
||||||
|
continue
|
||||||
|
|
||||||
|
title = title_tag.text.strip()
|
||||||
|
|
||||||
|
# 获取链接
|
||||||
|
link_tag = item.find('a')
|
||||||
|
if not link_tag:
|
||||||
|
continue
|
||||||
|
|
||||||
|
link = link_tag.get('href', '')
|
||||||
|
if not link.startswith('http'):
|
||||||
|
link = urllib.parse.urljoin(self.siteUrl, link)
|
||||||
|
|
||||||
|
# 提取ID
|
||||||
|
vid = self.extractVodId(link)
|
||||||
|
if not vid:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# 获取图片
|
||||||
|
img_tag = item.find('img')
|
||||||
|
img_url = ""
|
||||||
|
if img_tag:
|
||||||
|
img_url = img_tag.get('src', img_tag.get('data-src', ''))
|
||||||
|
if img_url and not img_url.startswith('http'):
|
||||||
|
img_url = urllib.parse.urljoin(self.siteUrl, img_url)
|
||||||
|
|
||||||
|
# 获取备注信息
|
||||||
|
remarks = ""
|
||||||
|
remarks_tag = item.find('span', class_='remarks')
|
||||||
|
if remarks_tag:
|
||||||
|
remarks = remarks_tag.text.strip()
|
||||||
|
|
||||||
|
# 获取标签信息
|
||||||
|
tags = ""
|
||||||
|
tags_tag = item.find('span', class_='tags')
|
||||||
|
if tags_tag:
|
||||||
|
tags = tags_tag.text.strip()
|
||||||
|
|
||||||
|
# 合并备注和标签
|
||||||
|
if remarks and tags:
|
||||||
|
remarks = f"{remarks} | {tags}"
|
||||||
|
elif tags:
|
||||||
|
remarks = tags
|
||||||
|
|
||||||
|
# 构建视频项
|
||||||
|
videos.append({
|
||||||
|
'vod_id': vid,
|
||||||
|
'vod_name': title,
|
||||||
|
'vod_pic': img_url,
|
||||||
|
'vod_remarks': remarks
|
||||||
|
})
|
||||||
|
except Exception as e:
|
||||||
|
self.log(f"处理分类视频项时出错: {str(e)}", "ERROR")
|
||||||
|
continue
|
||||||
|
|
||||||
|
# 查找分页信息
|
||||||
|
# 默认值
|
||||||
|
total = len(videos)
|
||||||
|
pagecount = 1
|
||||||
|
limit = 20
|
||||||
|
|
||||||
|
# 尝试查找分页元素
|
||||||
|
pagination = soup.find('ul', class_='page')
|
||||||
|
if pagination:
|
||||||
|
# 查找最后一页的链接
|
||||||
|
last_page_links = pagination.find_all('a')
|
||||||
|
for link in last_page_links:
|
||||||
|
page_text = link.text.strip()
|
||||||
|
if page_text.isdigit():
|
||||||
|
pagecount = max(pagecount, int(page_text))
|
||||||
|
except Exception as e:
|
||||||
|
self.log(f"获取分类内容发生错误: {str(e)}", "ERROR")
|
||||||
|
|
||||||
|
result['list'] = videos
|
||||||
|
result['page'] = pg
|
||||||
|
result['pagecount'] = pagecount
|
||||||
|
result['limit'] = limit
|
||||||
|
result['total'] = total
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
def detailContent(self, ids):
|
||||||
|
"""获取详情内容"""
|
||||||
|
result = {}
|
||||||
|
|
||||||
|
if not ids or len(ids) == 0:
|
||||||
|
return result
|
||||||
|
|
||||||
|
# 视频ID
|
||||||
|
vid = ids[0]
|
||||||
|
|
||||||
|
# 构建播放页URL
|
||||||
|
play_url = f"{self.siteUrl}/index.php/vod/play/id/{vid}/sid/1/nid/1.html"
|
||||||
|
|
||||||
|
try:
|
||||||
|
response = self.fetch(play_url)
|
||||||
|
if not response or response.status_code != 200:
|
||||||
|
return result
|
||||||
|
|
||||||
|
html = response.text
|
||||||
|
soup = BeautifulSoup(html, 'html.parser')
|
||||||
|
|
||||||
|
# 提取视频基本信息
|
||||||
|
# 标题
|
||||||
|
title = ""
|
||||||
|
title_tag = soup.find('h1', class_='items-title')
|
||||||
|
if title_tag:
|
||||||
|
title = title_tag.text.strip()
|
||||||
|
|
||||||
|
# 图片
|
||||||
|
pic = ""
|
||||||
|
pic_tag = soup.find('img', class_='thumb')
|
||||||
|
if pic_tag:
|
||||||
|
pic = pic_tag.get('src', '')
|
||||||
|
if pic and not pic.startswith('http'):
|
||||||
|
pic = urllib.parse.urljoin(self.siteUrl, pic)
|
||||||
|
|
||||||
|
# 简介
|
||||||
|
desc = ""
|
||||||
|
desc_tag = soup.find('div', class_='text-content')
|
||||||
|
if desc_tag:
|
||||||
|
desc = desc_tag.text.strip()
|
||||||
|
|
||||||
|
# 标签/分类
|
||||||
|
tags = []
|
||||||
|
tags_container = soup.find('span', class_='items-tags')
|
||||||
|
if tags_container:
|
||||||
|
tag_links = tags_container.find_all('a')
|
||||||
|
for tag in tag_links:
|
||||||
|
tag_text = tag.text.strip()
|
||||||
|
if tag_text:
|
||||||
|
tags.append(tag_text)
|
||||||
|
|
||||||
|
# 提取播放列表
|
||||||
|
play_from = "偷乐短剧"
|
||||||
|
play_list = []
|
||||||
|
|
||||||
|
# 查找播放列表区域
|
||||||
|
play_area = soup.find('div', class_='swiper-wrapper')
|
||||||
|
if play_area:
|
||||||
|
# 查找所有剧集链接
|
||||||
|
episode_links = play_area.find_all('a')
|
||||||
|
for ep in episode_links:
|
||||||
|
ep_title = ep.text.strip()
|
||||||
|
ep_url = ep.get('href', '')
|
||||||
|
|
||||||
|
if ep_url:
|
||||||
|
# 直接使用URL作为ID
|
||||||
|
if not ep_url.startswith('http'):
|
||||||
|
ep_url = urllib.parse.urljoin(self.siteUrl, ep_url)
|
||||||
|
|
||||||
|
# 提取集数信息
|
||||||
|
ep_num = ep_title
|
||||||
|
if ep_num.isdigit():
|
||||||
|
ep_num = f"第{ep_num}集"
|
||||||
|
|
||||||
|
play_list.append(f"{ep_num}${ep_url}")
|
||||||
|
|
||||||
|
# 如果没有找到播放列表,查找播放按钮
|
||||||
|
if not play_list:
|
||||||
|
play_btn = soup.find('a', class_='btn-play')
|
||||||
|
if play_btn:
|
||||||
|
play_url = play_btn.get('href', '')
|
||||||
|
if play_url:
|
||||||
|
if not play_url.startswith('http'):
|
||||||
|
play_url = urllib.parse.urljoin(self.siteUrl, play_url)
|
||||||
|
|
||||||
|
play_list.append(f"播放${play_url}")
|
||||||
|
|
||||||
|
# 如果仍然没有找到播放链接,使用播放页URL
|
||||||
|
if not play_list:
|
||||||
|
play_url = f"{self.siteUrl}/index.php/vod/play/id/{vid}/sid/1/nid/1.html"
|
||||||
|
play_list.append(f"播放${play_url}")
|
||||||
|
|
||||||
|
# 提取更多信息(导演、演员等)
|
||||||
|
director = ""
|
||||||
|
actor = ""
|
||||||
|
year = ""
|
||||||
|
area = ""
|
||||||
|
remarks = ""
|
||||||
|
|
||||||
|
# 查找备注信息
|
||||||
|
meta_items = soup.find_all('div', class_='meta-item')
|
||||||
|
for item in meta_items:
|
||||||
|
item_title = item.find('span', class_='item-title')
|
||||||
|
item_content = item.find('span', class_='item-content')
|
||||||
|
|
||||||
|
if item_title and item_content:
|
||||||
|
title_text = item_title.text.strip()
|
||||||
|
content_text = item_content.text.strip()
|
||||||
|
|
||||||
|
if "导演" in title_text:
|
||||||
|
director = content_text
|
||||||
|
elif "主演" in title_text:
|
||||||
|
actor = content_text
|
||||||
|
elif "年份" in title_text:
|
||||||
|
year = content_text
|
||||||
|
elif "地区" in title_text:
|
||||||
|
area = content_text
|
||||||
|
elif "简介" in title_text:
|
||||||
|
if not desc:
|
||||||
|
desc = content_text
|
||||||
|
elif "状态" in title_text:
|
||||||
|
remarks = content_text
|
||||||
|
|
||||||
|
# 如果没有从meta-item中获取到remarks
|
||||||
|
if not remarks:
|
||||||
|
remarks_tag = soup.find('span', class_='remarks')
|
||||||
|
if remarks_tag:
|
||||||
|
remarks = remarks_tag.text.strip()
|
||||||
|
|
||||||
|
# 构建标准数据结构
|
||||||
|
vod = {
|
||||||
|
"vod_id": vid,
|
||||||
|
"vod_name": title,
|
||||||
|
"vod_pic": pic,
|
||||||
|
"vod_year": year,
|
||||||
|
"vod_area": area,
|
||||||
|
"vod_remarks": remarks,
|
||||||
|
"vod_actor": actor,
|
||||||
|
"vod_director": director,
|
||||||
|
"vod_content": desc,
|
||||||
|
"type_name": ",".join(tags),
|
||||||
|
"vod_play_from": play_from,
|
||||||
|
"vod_play_url": "#".join(play_list)
|
||||||
|
}
|
||||||
|
|
||||||
|
result = {
|
||||||
|
'list': [vod]
|
||||||
|
}
|
||||||
|
except Exception as e:
|
||||||
|
self.log(f"获取详情内容时出错: {str(e)}", "ERROR")
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
def searchContent(self, key, quick, pg=1):
|
||||||
|
"""搜索功能"""
|
||||||
|
result = {}
|
||||||
|
videos = []
|
||||||
|
|
||||||
|
# 构建搜索URL和参数
|
||||||
|
search_url = f"{self.siteUrl}/index.php/vod/search.html"
|
||||||
|
params = {"wd": key}
|
||||||
|
|
||||||
|
try:
|
||||||
|
response = self.fetch(search_url, data=params)
|
||||||
|
if response and response.status_code == 200:
|
||||||
|
html = response.text
|
||||||
|
soup = BeautifulSoup(html, 'html.parser')
|
||||||
|
|
||||||
|
# 查找搜索结果项
|
||||||
|
search_items = soup.find_all('li', class_='item')
|
||||||
|
|
||||||
|
for item in search_items:
|
||||||
|
try:
|
||||||
|
# 获取标题
|
||||||
|
title_tag = item.find('h3')
|
||||||
|
if not title_tag:
|
||||||
|
continue
|
||||||
|
|
||||||
|
title = title_tag.text.strip()
|
||||||
|
|
||||||
|
# 获取链接
|
||||||
|
link_tag = item.find('a')
|
||||||
|
if not link_tag:
|
||||||
|
continue
|
||||||
|
|
||||||
|
link = link_tag.get('href', '')
|
||||||
|
if not link.startswith('http'):
|
||||||
|
link = urllib.parse.urljoin(self.siteUrl, link)
|
||||||
|
|
||||||
|
# 提取视频ID
|
||||||
|
vid = self.extractVodId(link)
|
||||||
|
if not vid:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# 获取图片
|
||||||
|
img_tag = item.find('img')
|
||||||
|
img_url = ""
|
||||||
|
if img_tag:
|
||||||
|
img_url = img_tag.get('src', img_tag.get('data-src', ''))
|
||||||
|
if img_url and not img_url.startswith('http'):
|
||||||
|
img_url = urllib.parse.urljoin(self.siteUrl, img_url)
|
||||||
|
|
||||||
|
# 获取备注信息
|
||||||
|
remarks = ""
|
||||||
|
remarks_tag = item.find('span', class_='remarks')
|
||||||
|
if remarks_tag:
|
||||||
|
remarks = remarks_tag.text.strip()
|
||||||
|
|
||||||
|
# 获取标签信息
|
||||||
|
tags = ""
|
||||||
|
tags_tag = item.find('span', class_='tags')
|
||||||
|
if tags_tag:
|
||||||
|
tags = tags_tag.text.strip()
|
||||||
|
|
||||||
|
# 合并备注和标签
|
||||||
|
if remarks and tags:
|
||||||
|
remarks = f"{remarks} | {tags}"
|
||||||
|
elif tags:
|
||||||
|
remarks = tags
|
||||||
|
|
||||||
|
# 构建视频项
|
||||||
|
videos.append({
|
||||||
|
'vod_id': vid,
|
||||||
|
'vod_name': title,
|
||||||
|
'vod_pic': img_url,
|
||||||
|
'vod_remarks': remarks
|
||||||
|
})
|
||||||
|
except Exception as e:
|
||||||
|
self.log(f"处理搜索结果时出错: {str(e)}", "ERROR")
|
||||||
|
continue
|
||||||
|
except Exception as e:
|
||||||
|
self.log(f"搜索功能发生错误: {str(e)}", "ERROR")
|
||||||
|
|
||||||
|
result['list'] = videos
|
||||||
|
return result
|
||||||
|
|
||||||
|
def searchContentPage(self, key, quick, pg=1):
|
||||||
|
return self.searchContent(key, quick, pg)
|
||||||
|
|
||||||
|
def playerContent(self, flag, id, vipFlags):
|
||||||
|
"""获取播放内容"""
|
||||||
|
result = {}
|
||||||
|
|
||||||
|
try:
|
||||||
|
# 判断是否已经是视频URL
|
||||||
|
if self.isVideoFormat(id):
|
||||||
|
result["parse"] = 0
|
||||||
|
result["url"] = id
|
||||||
|
result["playUrl"] = ""
|
||||||
|
result["header"] = json.dumps(self.headers)
|
||||||
|
return result
|
||||||
|
|
||||||
|
# 判断是否是完整的页面URL
|
||||||
|
if id.startswith(('http://', 'https://')):
|
||||||
|
play_url = id
|
||||||
|
# 尝试作为相对路径处理
|
||||||
|
elif id.startswith('/'):
|
||||||
|
play_url = urllib.parse.urljoin(self.siteUrl, id)
|
||||||
|
# 假设是视频ID,构建播放页面URL
|
||||||
|
else:
|
||||||
|
# 检查是否是"视频ID_集数"格式
|
||||||
|
parts = id.split('_')
|
||||||
|
if len(parts) > 1 and parts[0].isdigit():
|
||||||
|
vid = parts[0]
|
||||||
|
nid = parts[1]
|
||||||
|
play_url = f"{self.siteUrl}/index.php/vod/play/id/{vid}/sid/1/nid/{nid}.html"
|
||||||
|
else:
|
||||||
|
# 直接当作视频ID处理
|
||||||
|
play_url = f"{self.siteUrl}/index.php/vod/play/id/{id}/sid/1/nid/1.html"
|
||||||
|
|
||||||
|
# 访问播放页获取真实播放地址
|
||||||
|
try:
|
||||||
|
self.log(f"正在解析播放页面: {play_url}")
|
||||||
|
response = self.fetch(play_url)
|
||||||
|
if response and response.status_code == 200:
|
||||||
|
html = response.text
|
||||||
|
|
||||||
|
# 查找player_aaaa变量
|
||||||
|
player_match = re.search(r'var\s+player_aaaa\s*=\s*({.*?});', html, re.DOTALL)
|
||||||
|
if player_match:
|
||||||
|
try:
|
||||||
|
player_data = json.loads(player_match.group(1))
|
||||||
|
if 'url' in player_data:
|
||||||
|
video_url = player_data['url']
|
||||||
|
if not video_url.startswith('http'):
|
||||||
|
video_url = urllib.parse.urljoin(self.siteUrl, video_url)
|
||||||
|
|
||||||
|
self.log(f"从player_aaaa获取到视频地址: {video_url}")
|
||||||
|
result["parse"] = 0
|
||||||
|
result["url"] = video_url
|
||||||
|
result["playUrl"] = ""
|
||||||
|
result["header"] = json.dumps(self.headers)
|
||||||
|
return result
|
||||||
|
except json.JSONDecodeError as e:
|
||||||
|
self.log(f"解析player_aaaa JSON出错: {str(e)}", "ERROR")
|
||||||
|
|
||||||
|
# 如果player_aaaa解析失败,尝试其他方式
|
||||||
|
# 1. 查找video标签
|
||||||
|
video_match = re.search(r'<video[^>]*src=["\'](.*?)["\']', html)
|
||||||
|
if video_match:
|
||||||
|
video_url = video_match.group(1)
|
||||||
|
if not video_url.startswith('http'):
|
||||||
|
video_url = urllib.parse.urljoin(self.siteUrl, video_url)
|
||||||
|
|
||||||
|
self.log(f"从video标签找到视频地址: {video_url}")
|
||||||
|
result["parse"] = 0
|
||||||
|
result["url"] = video_url
|
||||||
|
result["playUrl"] = ""
|
||||||
|
result["header"] = json.dumps(self.headers)
|
||||||
|
return result
|
||||||
|
|
||||||
|
# 2. 查找iframe
|
||||||
|
iframe_match = re.search(r'<iframe[^>]*src=["\'](.*?)["\']', html)
|
||||||
|
if iframe_match:
|
||||||
|
iframe_url = iframe_match.group(1)
|
||||||
|
if not iframe_url.startswith('http'):
|
||||||
|
iframe_url = urllib.parse.urljoin(self.siteUrl, iframe_url)
|
||||||
|
|
||||||
|
self.log(f"找到iframe,正在解析: {iframe_url}")
|
||||||
|
# 访问iframe内容
|
||||||
|
iframe_response = self.fetch(iframe_url)
|
||||||
|
if iframe_response and iframe_response.status_code == 200:
|
||||||
|
iframe_html = iframe_response.text
|
||||||
|
|
||||||
|
# 在iframe内容中查找视频地址
|
||||||
|
iframe_video_match = re.search(r'(https?://[^\'"]+\.(mp4|m3u8|ts))', iframe_html)
|
||||||
|
if iframe_video_match:
|
||||||
|
video_url = iframe_video_match.group(1)
|
||||||
|
|
||||||
|
self.log(f"从iframe中找到视频地址: {video_url}")
|
||||||
|
result["parse"] = 0
|
||||||
|
result["url"] = video_url
|
||||||
|
result["playUrl"] = ""
|
||||||
|
result["header"] = json.dumps({
|
||||||
|
"User-Agent": self.headers["User-Agent"],
|
||||||
|
"Referer": iframe_url
|
||||||
|
})
|
||||||
|
return result
|
||||||
|
|
||||||
|
# 3. 查找任何可能的视频URL
|
||||||
|
url_match = re.search(r'(https?://[^\'"]+\.(mp4|m3u8|ts))', html)
|
||||||
|
if url_match:
|
||||||
|
video_url = url_match.group(1)
|
||||||
|
|
||||||
|
self.log(f"找到可能的视频地址: {video_url}")
|
||||||
|
result["parse"] = 0
|
||||||
|
result["url"] = video_url
|
||||||
|
result["playUrl"] = ""
|
||||||
|
result["header"] = json.dumps(self.headers)
|
||||||
|
return result
|
||||||
|
except Exception as e:
|
||||||
|
self.log(f"解析播放地址时出错: {str(e)}", "ERROR")
|
||||||
|
|
||||||
|
# 如果所有方式都失败,返回外部解析标志
|
||||||
|
self.log("未找到直接可用的视频地址,需要外部解析", "WARNING")
|
||||||
|
result["parse"] = 1 # 表示需要外部解析
|
||||||
|
result["url"] = play_url # 返回播放页面URL
|
||||||
|
result["playUrl"] = ""
|
||||||
|
result["header"] = json.dumps(self.headers)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
self.log(f"获取播放内容时出错: {str(e)}", "ERROR")
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
def localProxy(self, param):
|
||||||
|
"""本地代理"""
|
||||||
|
return [404, "text/plain", {}, "Not Found"]
|
||||||
+581
@@ -0,0 +1,581 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import requests
|
||||||
|
import re
|
||||||
|
import json
|
||||||
|
import traceback
|
||||||
|
import sys
|
||||||
|
|
||||||
|
sys.path.append('../../')
|
||||||
|
try:
|
||||||
|
from base.spider import Spider
|
||||||
|
except ImportError:
|
||||||
|
# 定义一个基础接口类,用于本地测试
|
||||||
|
class Spider:
|
||||||
|
def init(self, extend=""):
|
||||||
|
pass
|
||||||
|
|
||||||
|
class Spider(Spider):
|
||||||
|
def __init__(self):
|
||||||
|
self.siteUrl = "https://www.kuaikaw.cn"
|
||||||
|
self.nextData = None # 缓存NEXT_DATA数据
|
||||||
|
self.cateManual = {
|
||||||
|
"甜宠": "462",
|
||||||
|
"古装仙侠": "1102",
|
||||||
|
"现代言情": "1145",
|
||||||
|
"青春": "1170",
|
||||||
|
"豪门恩怨": "585",
|
||||||
|
"逆袭": "417-464",
|
||||||
|
"重生": "439-465",
|
||||||
|
"系统": "1159",
|
||||||
|
"总裁": "1147",
|
||||||
|
"职场商战": "943"
|
||||||
|
}
|
||||||
|
|
||||||
|
def getName(self):
|
||||||
|
# 返回爬虫名称
|
||||||
|
return "河马短剧"
|
||||||
|
|
||||||
|
def init(self, extend=""):
|
||||||
|
return
|
||||||
|
|
||||||
|
def fetch(self, url, headers=None):
|
||||||
|
"""统一的网络请求接口"""
|
||||||
|
if headers is None:
|
||||||
|
headers = {
|
||||||
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0",
|
||||||
|
"Referer": self.siteUrl,
|
||||||
|
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8",
|
||||||
|
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8"
|
||||||
|
}
|
||||||
|
|
||||||
|
try:
|
||||||
|
response = requests.get(url, headers=headers, timeout=10, allow_redirects=True)
|
||||||
|
response.raise_for_status()
|
||||||
|
return response
|
||||||
|
except Exception as e:
|
||||||
|
print(f"请求异常: {url}, 错误: {str(e)}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
def isVideoFormat(self, url):
|
||||||
|
# 检查是否为视频格式
|
||||||
|
video_formats = ['.mp4', '.mkv', '.avi', '.wmv', '.m3u8', '.flv', '.rmvb']
|
||||||
|
for format in video_formats:
|
||||||
|
if format in url.lower():
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def manualVideoCheck(self):
|
||||||
|
# 不需要手动检查
|
||||||
|
return False
|
||||||
|
|
||||||
|
def homeContent(self, filter):
|
||||||
|
"""获取首页分类及筛选"""
|
||||||
|
result = {}
|
||||||
|
# 分类列表,使用已初始化的cateManual
|
||||||
|
classes = []
|
||||||
|
for k in self.cateManual:
|
||||||
|
classes.append({
|
||||||
|
'type_name': k,
|
||||||
|
'type_id': self.cateManual[k]
|
||||||
|
})
|
||||||
|
result['class'] = classes
|
||||||
|
# 获取首页推荐视频
|
||||||
|
try:
|
||||||
|
result['list'] = self.homeVideoContent()['list']
|
||||||
|
except:
|
||||||
|
result['list'] = []
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
def homeVideoContent(self):
|
||||||
|
"""获取首页推荐视频内容"""
|
||||||
|
videos = []
|
||||||
|
try:
|
||||||
|
response = self.fetch(self.siteUrl)
|
||||||
|
html_content = response.text
|
||||||
|
# 提取NEXT_DATA JSON数据
|
||||||
|
next_data_pattern = r'<script id="__NEXT_DATA__" type="application/json">(.*?)</script>'
|
||||||
|
next_data_match = re.search(next_data_pattern, html_content, re.DOTALL)
|
||||||
|
if next_data_match:
|
||||||
|
next_data_json = json.loads(next_data_match.group(1))
|
||||||
|
page_props = next_data_json.get("props", {}).get("pageProps", {})
|
||||||
|
# 获取轮播图数据 - 这些通常是推荐内容
|
||||||
|
if "bannerList" in page_props and isinstance(page_props["bannerList"], list):
|
||||||
|
banner_list = page_props["bannerList"]
|
||||||
|
for banner in banner_list:
|
||||||
|
book_id = banner.get("bookId", "")
|
||||||
|
book_name = banner.get("bookName", "")
|
||||||
|
cover_url = banner.get("coverWap", banner.get("wapUrl", ""))
|
||||||
|
# 获取状态和章节数
|
||||||
|
status = banner.get("statusDesc", "")
|
||||||
|
total_chapters = banner.get("totalChapterNum", "")
|
||||||
|
if book_id and book_name:
|
||||||
|
videos.append({
|
||||||
|
"vod_id": f"/drama/{book_id}",
|
||||||
|
"vod_name": book_name,
|
||||||
|
"vod_pic": cover_url,
|
||||||
|
"vod_remarks": f"{status} {total_chapters}集" if total_chapters else status
|
||||||
|
})
|
||||||
|
|
||||||
|
# SEO分类下的推荐
|
||||||
|
if "seoColumnVos" in page_props and isinstance(page_props["seoColumnVos"], list):
|
||||||
|
for column in page_props["seoColumnVos"]:
|
||||||
|
book_infos = column.get("bookInfos", [])
|
||||||
|
for book in book_infos:
|
||||||
|
book_id = book.get("bookId", "")
|
||||||
|
book_name = book.get("bookName", "")
|
||||||
|
cover_url = book.get("coverWap", "")
|
||||||
|
status = book.get("statusDesc", "")
|
||||||
|
total_chapters = book.get("totalChapterNum", "")
|
||||||
|
|
||||||
|
if book_id and book_name:
|
||||||
|
videos.append({
|
||||||
|
"vod_id": f"/drama/{book_id}",
|
||||||
|
"vod_name": book_name,
|
||||||
|
"vod_pic": cover_url,
|
||||||
|
"vod_remarks": f"{status} {total_chapters}集" if total_chapters else status
|
||||||
|
})
|
||||||
|
|
||||||
|
# # 去重
|
||||||
|
# seen = set()
|
||||||
|
# unique_videos = []
|
||||||
|
# for video in videos:
|
||||||
|
# if video["vod_id"] not in seen:
|
||||||
|
# seen.add(video["vod_id"])
|
||||||
|
# unique_videos.append(video)
|
||||||
|
# videos = unique_videos
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"获取首页推荐内容出错: {e}")
|
||||||
|
|
||||||
|
result = {
|
||||||
|
"list": videos
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
|
||||||
|
def categoryContent(self, tid, pg, filter, extend):
|
||||||
|
"""获取分类内容"""
|
||||||
|
result = {}
|
||||||
|
videos = []
|
||||||
|
url = f"{self.siteUrl}/browse/{tid}/{pg}"
|
||||||
|
response = self.fetch(url)
|
||||||
|
html_content = response.text
|
||||||
|
# 提取NEXT_DATA JSON数据
|
||||||
|
next_data_pattern = r'<script id="__NEXT_DATA__" type="application/json">(.*?)</script>'
|
||||||
|
next_data_match = re.search(next_data_pattern, html_content, re.DOTALL)
|
||||||
|
if next_data_match:
|
||||||
|
next_data_json = json.loads(next_data_match.group(1))
|
||||||
|
page_props = next_data_json.get("props", {}).get("pageProps", {})
|
||||||
|
# 获取总页数和当前页
|
||||||
|
current_page = page_props.get("page", 1)
|
||||||
|
total_pages = page_props.get("pages", 1)
|
||||||
|
# 获取书籍列表
|
||||||
|
book_list = page_props.get("bookList", [])
|
||||||
|
# 转换为通用格式
|
||||||
|
for book in book_list:
|
||||||
|
book_id = book.get("bookId", "")
|
||||||
|
book_name = book.get("bookName", "")
|
||||||
|
cover_url = book.get("coverWap", "")
|
||||||
|
status_desc = book.get("statusDesc", "")
|
||||||
|
total_chapters = book.get("totalChapterNum", "")
|
||||||
|
if book_id and book_name:
|
||||||
|
videos.append({
|
||||||
|
"vod_id": f"/drama/{book_id}",
|
||||||
|
"vod_name": book_name,
|
||||||
|
"vod_pic": cover_url,
|
||||||
|
"vod_remarks": f"{status_desc} {total_chapters}集" if total_chapters else status_desc
|
||||||
|
})
|
||||||
|
# 构建返回结果
|
||||||
|
result = {
|
||||||
|
"list": videos,
|
||||||
|
"page": int(current_page),
|
||||||
|
"pagecount": total_pages,
|
||||||
|
"limit": len(videos),
|
||||||
|
"total": total_pages * len(videos) if videos else 0
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
|
||||||
|
def switch(self, key, pg):
|
||||||
|
# 搜索功能
|
||||||
|
search_results = []
|
||||||
|
# 获取第一页结果,并检查总页数
|
||||||
|
url = f"{self.siteUrl}/search?searchValue={key}&page={pg}"
|
||||||
|
response = self.fetch(url)
|
||||||
|
html_content = response.text
|
||||||
|
# 提取NEXT_DATA JSON数据
|
||||||
|
next_data_pattern = r'<script id="__NEXT_DATA__" type="application/json">(.*?)</script>'
|
||||||
|
next_data_match = re.search(next_data_pattern, html_content, re.DOTALL)
|
||||||
|
if next_data_match:
|
||||||
|
next_data_json = json.loads(next_data_match.group(1))
|
||||||
|
page_props = next_data_json.get("props", {}).get("pageProps", {})
|
||||||
|
# 获取总页数
|
||||||
|
total_pages = page_props.get("pages", 1)
|
||||||
|
# 处理所有页的数据
|
||||||
|
all_book_list = []
|
||||||
|
# 添加第一页的书籍列表
|
||||||
|
book_list = page_props.get("bookList", [])
|
||||||
|
all_book_list.extend(book_list)
|
||||||
|
# 如果有多页,获取其他页的数据
|
||||||
|
if total_pages > 1 : # quick模式只获取第一页
|
||||||
|
for page in range(2, total_pages + 1):
|
||||||
|
next_page_url = f"{self.siteUrl}/search?searchValue={key}&page={page}"
|
||||||
|
next_page_response = self.fetch(next_page_url)
|
||||||
|
next_page_html = next_page_response.text
|
||||||
|
next_page_match = re.search(next_data_pattern, next_page_html, re.DOTALL)
|
||||||
|
if next_page_match:
|
||||||
|
next_page_json = json.loads(next_page_match.group(1))
|
||||||
|
next_page_props = next_page_json.get("props", {}).get("pageProps", {})
|
||||||
|
next_page_books = next_page_props.get("bookList", [])
|
||||||
|
all_book_list.extend(next_page_books)
|
||||||
|
# 转换为统一的搜索结果格式
|
||||||
|
for book in all_book_list:
|
||||||
|
book_id = book.get("bookId", "")
|
||||||
|
book_name = book.get("bookName", "")
|
||||||
|
cover_url = book.get("coverWap", "")
|
||||||
|
total_chapters = book.get("totalChapterNum", "0")
|
||||||
|
status_desc = book.get("statusDesc", "")
|
||||||
|
# 构建视频项
|
||||||
|
vod = {
|
||||||
|
"vod_id": f"/drama/{book_id}",
|
||||||
|
"vod_name": book_name,
|
||||||
|
"vod_pic": cover_url,
|
||||||
|
"vod_remarks": f"{status_desc} {total_chapters}集"
|
||||||
|
}
|
||||||
|
search_results.append(vod)
|
||||||
|
result = {
|
||||||
|
"list": search_results,
|
||||||
|
"page": pg
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
|
||||||
|
def searchContent(self, key, quick, pg=1):
|
||||||
|
result = self.switch(key, pg=pg)
|
||||||
|
result['page'] = pg
|
||||||
|
return result
|
||||||
|
|
||||||
|
def searchContentPage(self, key, quick, pg=1):
|
||||||
|
return self.searchContent(key, quick, pg)
|
||||||
|
|
||||||
|
def detailContent(self, ids):
|
||||||
|
# 获取剧集信息
|
||||||
|
vod_id = ids[0]
|
||||||
|
episode_id = None
|
||||||
|
chapter_id = None
|
||||||
|
|
||||||
|
if not vod_id.startswith('/drama/'):
|
||||||
|
if vod_id.startswith('/episode/'):
|
||||||
|
episode_info = vod_id.replace('/episode/', '').split('/')
|
||||||
|
if len(episode_info) >= 2:
|
||||||
|
episode_id = episode_info[0]
|
||||||
|
chapter_id = episode_info[1]
|
||||||
|
vod_id = f'/drama/{episode_id}'
|
||||||
|
else:
|
||||||
|
vod_id = '/drama/' + vod_id
|
||||||
|
|
||||||
|
drama_url = self.siteUrl + vod_id
|
||||||
|
print(f"请求URL: {drama_url}")
|
||||||
|
|
||||||
|
headers = {
|
||||||
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0",
|
||||||
|
"Referer": self.siteUrl,
|
||||||
|
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8",
|
||||||
|
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8"
|
||||||
|
}
|
||||||
|
|
||||||
|
rsp = self.fetch(drama_url, headers=headers)
|
||||||
|
if not rsp or rsp.status_code != 200:
|
||||||
|
print(f"请求失败,状态码: {getattr(rsp, 'status_code', 'N/A')}")
|
||||||
|
return {}
|
||||||
|
|
||||||
|
html = rsp.text
|
||||||
|
next_data_match = re.search(r'<script id="__NEXT_DATA__" type="application/json">(.*?)</script>', html, re.DOTALL)
|
||||||
|
|
||||||
|
if not next_data_match:
|
||||||
|
print("未找到NEXT_DATA内容")
|
||||||
|
return {}
|
||||||
|
|
||||||
|
try:
|
||||||
|
next_data = json.loads(next_data_match.group(1))
|
||||||
|
page_props = next_data.get("props", {}).get("pageProps", {})
|
||||||
|
print(f"找到页面属性,包含 {len(page_props.keys())} 个键")
|
||||||
|
|
||||||
|
book_info = page_props.get("bookInfoVo", {})
|
||||||
|
chapter_list = page_props.get("chapterList", [])
|
||||||
|
|
||||||
|
title = book_info.get("title", "")
|
||||||
|
sub_title = f"{book_info.get('totalChapterNum', '')}集"
|
||||||
|
|
||||||
|
categories = []
|
||||||
|
for category in book_info.get("categoryList", []):
|
||||||
|
categories.append(category.get("name", ""))
|
||||||
|
|
||||||
|
vod_content = book_info.get("introduction", "")
|
||||||
|
|
||||||
|
vod = {
|
||||||
|
"vod_id": vod_id,
|
||||||
|
"vod_name": title,
|
||||||
|
"vod_pic": book_info.get("coverWap", ""),
|
||||||
|
"type_name": ",".join(categories),
|
||||||
|
"vod_year": "",
|
||||||
|
"vod_area": book_info.get("countryName", ""),
|
||||||
|
"vod_remarks": sub_title,
|
||||||
|
"vod_actor": ", ".join([p.get("name", "") for p in book_info.get("performerList", [])]),
|
||||||
|
"vod_director": "",
|
||||||
|
"vod_content": vod_content
|
||||||
|
}
|
||||||
|
|
||||||
|
# 处理播放列表
|
||||||
|
play_url_list = []
|
||||||
|
episodes = []
|
||||||
|
|
||||||
|
if chapter_list:
|
||||||
|
print(f"找到 {len(chapter_list)} 个章节")
|
||||||
|
|
||||||
|
# 先检查是否有可以直接使用的MP4链接作为模板
|
||||||
|
mp4_template = None
|
||||||
|
first_mp4_chapter_id = None
|
||||||
|
|
||||||
|
# 先搜索第一个章节的MP4链接
|
||||||
|
# 为提高成功率,尝试直接请求第一个章节的播放页
|
||||||
|
if chapter_list and len(chapter_list) > 0:
|
||||||
|
first_chapter = chapter_list[0]
|
||||||
|
first_chapter_id = first_chapter.get("chapterId", "")
|
||||||
|
drama_id_clean = vod_id.replace('/drama/', '')
|
||||||
|
|
||||||
|
if first_chapter_id and drama_id_clean:
|
||||||
|
first_episode_url = f"{self.siteUrl}/episode/{drama_id_clean}/{first_chapter_id}"
|
||||||
|
print(f"请求第一集播放页: {first_episode_url}")
|
||||||
|
|
||||||
|
first_rsp = self.fetch(first_episode_url, headers=headers)
|
||||||
|
if first_rsp and first_rsp.status_code == 200:
|
||||||
|
first_html = first_rsp.text
|
||||||
|
# 直接从HTML提取MP4链接
|
||||||
|
mp4_pattern = r'(https?://[^"\']+\.mp4)'
|
||||||
|
mp4_matches = re.findall(mp4_pattern, first_html)
|
||||||
|
if mp4_matches:
|
||||||
|
mp4_template = mp4_matches[0]
|
||||||
|
first_mp4_chapter_id = first_chapter_id
|
||||||
|
print(f"找到MP4链接模板: {mp4_template}")
|
||||||
|
print(f"模板对应的章节ID: {first_mp4_chapter_id}")
|
||||||
|
|
||||||
|
# 如果未找到模板,再检查章节对象中是否有MP4链接
|
||||||
|
if not mp4_template:
|
||||||
|
for chapter in chapter_list[:5]: # 只检查前5个章节以提高效率
|
||||||
|
if "chapterVideoVo" in chapter and chapter["chapterVideoVo"]:
|
||||||
|
chapter_video = chapter["chapterVideoVo"]
|
||||||
|
mp4_url = chapter_video.get("mp4", "") or chapter_video.get("mp4720p", "") or chapter_video.get("vodMp4Url", "")
|
||||||
|
if mp4_url and ".mp4" in mp4_url:
|
||||||
|
mp4_template = mp4_url
|
||||||
|
first_mp4_chapter_id = chapter.get("chapterId", "")
|
||||||
|
print(f"从chapterVideoVo找到MP4链接模板: {mp4_template}")
|
||||||
|
print(f"模板对应的章节ID: {first_mp4_chapter_id}")
|
||||||
|
break
|
||||||
|
|
||||||
|
# 遍历所有章节处理播放信息
|
||||||
|
for chapter in chapter_list:
|
||||||
|
chapter_id = chapter.get("chapterId", "")
|
||||||
|
chapter_name = chapter.get("chapterName", "")
|
||||||
|
|
||||||
|
# 1. 如果章节自身有MP4链接,直接使用
|
||||||
|
if "chapterVideoVo" in chapter and chapter["chapterVideoVo"]:
|
||||||
|
chapter_video = chapter["chapterVideoVo"]
|
||||||
|
mp4_url = chapter_video.get("mp4", "") or chapter_video.get("mp4720p", "") or chapter_video.get("vodMp4Url", "")
|
||||||
|
if mp4_url and ".mp4" in mp4_url:
|
||||||
|
episodes.append(f"{chapter_name}${mp4_url}")
|
||||||
|
continue
|
||||||
|
|
||||||
|
# 2. 如果有MP4模板,尝试替换章节ID构建MP4链接
|
||||||
|
if mp4_template and first_mp4_chapter_id and chapter_id:
|
||||||
|
# 替换模板中的章节ID部分
|
||||||
|
if first_mp4_chapter_id in mp4_template:
|
||||||
|
new_mp4_url = mp4_template.replace(first_mp4_chapter_id, chapter_id)
|
||||||
|
episodes.append(f"{chapter_name}${new_mp4_url}")
|
||||||
|
continue
|
||||||
|
|
||||||
|
# 3. 如果上述方法都不可行,回退到使用chapter_id构建中间URL
|
||||||
|
if chapter_id and chapter_name:
|
||||||
|
url = f"{vod_id}${chapter_id}${chapter_name}"
|
||||||
|
episodes.append(f"{chapter_name}${url}")
|
||||||
|
|
||||||
|
if not episodes and vod_id:
|
||||||
|
# 尝试构造默认的集数
|
||||||
|
total_chapters = int(book_info.get("totalChapterNum", "0"))
|
||||||
|
if total_chapters > 0:
|
||||||
|
print(f"尝试构造 {total_chapters} 个默认集数")
|
||||||
|
|
||||||
|
# 如果知道章节ID的模式,可以构造
|
||||||
|
if chapter_id and episode_id:
|
||||||
|
for i in range(1, total_chapters + 1):
|
||||||
|
chapter_name = f"第{i}集"
|
||||||
|
url = f"{vod_id}${chapter_id}${chapter_name}"
|
||||||
|
episodes.append(f"{chapter_name}${url}")
|
||||||
|
else:
|
||||||
|
# 使用普通的构造方式
|
||||||
|
for i in range(1, total_chapters + 1):
|
||||||
|
chapter_name = f"第{i}集"
|
||||||
|
url = f"{vod_id}${chapter_name}"
|
||||||
|
episodes.append(f"{chapter_name}${url}")
|
||||||
|
|
||||||
|
if episodes:
|
||||||
|
play_url_list.append("#".join(episodes))
|
||||||
|
vod['vod_play_from'] = '河马剧场'
|
||||||
|
vod['vod_play_url'] = '$$$'.join(play_url_list)
|
||||||
|
|
||||||
|
result = {
|
||||||
|
'list': [vod]
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
except Exception as e:
|
||||||
|
print(f"解析详情页失败: {str(e)}")
|
||||||
|
print(traceback.format_exc())
|
||||||
|
return {}
|
||||||
|
|
||||||
|
def playerContent(self, flag, id, vipFlags):
|
||||||
|
result = {}
|
||||||
|
print(f"调用playerContent: flag={flag}, id={id}")
|
||||||
|
|
||||||
|
headers = {
|
||||||
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0",
|
||||||
|
"Referer": self.siteUrl,
|
||||||
|
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8",
|
||||||
|
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 解析id参数
|
||||||
|
parts = id.split('$')
|
||||||
|
drama_id = None
|
||||||
|
chapter_id = None
|
||||||
|
|
||||||
|
if len(parts) >= 2:
|
||||||
|
drama_id = parts[0]
|
||||||
|
chapter_id = parts[1]
|
||||||
|
chapter_name = parts[2] if len(parts) > 2 else "第一集"
|
||||||
|
print(f"解析参数: drama_id={drama_id}, chapter_id={chapter_id}")
|
||||||
|
else:
|
||||||
|
# 处理旧数据格式
|
||||||
|
print(f"使用原始URL格式: {id}")
|
||||||
|
result["parse"] = 0
|
||||||
|
result["url"] = id
|
||||||
|
result["header"] = json.dumps(headers)
|
||||||
|
return result
|
||||||
|
|
||||||
|
# 直接检查chapter_id是否包含http(可能已经是视频链接)
|
||||||
|
if 'http' in chapter_id and '.mp4' in chapter_id:
|
||||||
|
print(f"已经是MP4链接: {chapter_id}")
|
||||||
|
result["parse"] = 0
|
||||||
|
result["url"] = chapter_id
|
||||||
|
result["header"] = json.dumps(headers)
|
||||||
|
return result
|
||||||
|
|
||||||
|
# 构建episode页面URL
|
||||||
|
drama_id_clean = drama_id.replace('/drama/', '')
|
||||||
|
episode_url = f"{self.siteUrl}/episode/{drama_id_clean}/{chapter_id}"
|
||||||
|
print(f"请求episode页面: {episode_url}")
|
||||||
|
|
||||||
|
try:
|
||||||
|
rsp = self.fetch(episode_url, headers=headers)
|
||||||
|
if not rsp or rsp.status_code != 200:
|
||||||
|
print(f"请求失败,状态码: {getattr(rsp, 'status_code', 'N/A')}")
|
||||||
|
result["parse"] = 0
|
||||||
|
result["url"] = id
|
||||||
|
result["header"] = json.dumps(headers)
|
||||||
|
return result
|
||||||
|
|
||||||
|
html = rsp.text
|
||||||
|
print(f"获取页面大小: {len(html)} 字节")
|
||||||
|
|
||||||
|
# 尝试从NEXT_DATA提取视频链接
|
||||||
|
mp4_url = None
|
||||||
|
|
||||||
|
# 方法1: 从NEXT_DATA提取
|
||||||
|
next_data_match = re.search(r'<script id="__NEXT_DATA__" type="application/json">(.*?)</script>', html, re.DOTALL)
|
||||||
|
if next_data_match:
|
||||||
|
try:
|
||||||
|
print("找到NEXT_DATA")
|
||||||
|
next_data = json.loads(next_data_match.group(1))
|
||||||
|
page_props = next_data.get("props", {}).get("pageProps", {})
|
||||||
|
|
||||||
|
# 从chapterList中查找当前章节
|
||||||
|
chapter_list = page_props.get("chapterList", [])
|
||||||
|
print(f"找到章节列表,长度: {len(chapter_list)}")
|
||||||
|
|
||||||
|
for chapter in chapter_list:
|
||||||
|
if chapter.get("chapterId") == chapter_id:
|
||||||
|
print(f"找到匹配的章节: {chapter.get('chapterName')}")
|
||||||
|
chapter_video = chapter.get("chapterVideoVo", {})
|
||||||
|
mp4_url = chapter_video.get("mp4", "") or chapter_video.get("mp4720p", "") or chapter_video.get("vodMp4Url", "")
|
||||||
|
if mp4_url:
|
||||||
|
print(f"从chapterList找到MP4链接: {mp4_url}")
|
||||||
|
break
|
||||||
|
|
||||||
|
# 如果未找到,尝试从当前章节获取
|
||||||
|
if not mp4_url:
|
||||||
|
current_chapter = page_props.get("chapterInfo", {})
|
||||||
|
if current_chapter:
|
||||||
|
print("找到当前章节信息")
|
||||||
|
chapter_video = current_chapter.get("chapterVideoVo", {})
|
||||||
|
mp4_url = chapter_video.get("mp4", "") or chapter_video.get("mp4720p", "") or chapter_video.get("vodMp4Url", "")
|
||||||
|
if mp4_url:
|
||||||
|
print(f"从chapterInfo找到MP4链接: {mp4_url}")
|
||||||
|
except Exception as e:
|
||||||
|
print(f"解析NEXT_DATA失败: {str(e)}")
|
||||||
|
print(traceback.format_exc())
|
||||||
|
|
||||||
|
# 方法2: 直接从HTML中提取MP4链接
|
||||||
|
if not mp4_url:
|
||||||
|
mp4_pattern = r'(https?://[^"\']+\.mp4)'
|
||||||
|
mp4_matches = re.findall(mp4_pattern, html)
|
||||||
|
if mp4_matches:
|
||||||
|
# 查找含有chapter_id的链接
|
||||||
|
matched_mp4 = False
|
||||||
|
for url in mp4_matches:
|
||||||
|
if chapter_id in url:
|
||||||
|
mp4_url = url
|
||||||
|
matched_mp4 = True
|
||||||
|
print(f"从HTML直接提取章节MP4链接: {mp4_url}")
|
||||||
|
break
|
||||||
|
|
||||||
|
# 如果没找到包含chapter_id的链接,使用第一个
|
||||||
|
if not matched_mp4 and mp4_matches:
|
||||||
|
mp4_url = mp4_matches[0]
|
||||||
|
print(f"从HTML直接提取MP4链接: {mp4_url}")
|
||||||
|
|
||||||
|
if mp4_url and ".mp4" in mp4_url:
|
||||||
|
print(f"最终找到的MP4链接: {mp4_url}")
|
||||||
|
result["parse"] = 0
|
||||||
|
result["url"] = mp4_url
|
||||||
|
result["header"] = json.dumps(headers)
|
||||||
|
return result
|
||||||
|
else:
|
||||||
|
print(f"未找到有效的MP4链接,尝试再次解析页面内容")
|
||||||
|
# 再尝试一次从HTML中广泛搜索所有可能的MP4链接
|
||||||
|
all_mp4_pattern = r'(https?://[^"\']+\.mp4)'
|
||||||
|
all_mp4_matches = re.findall(all_mp4_pattern, html)
|
||||||
|
if all_mp4_matches:
|
||||||
|
mp4_url = all_mp4_matches[0]
|
||||||
|
print(f"从HTML广泛搜索找到MP4链接: {mp4_url}")
|
||||||
|
result["parse"] = 0
|
||||||
|
result["url"] = mp4_url
|
||||||
|
result["header"] = json.dumps(headers)
|
||||||
|
return result
|
||||||
|
|
||||||
|
print(f"未找到视频链接,返回原episode URL: {episode_url}")
|
||||||
|
result["parse"] = 0
|
||||||
|
result["url"] = episode_url
|
||||||
|
result["header"] = json.dumps(headers)
|
||||||
|
return result
|
||||||
|
except Exception as e:
|
||||||
|
print(f"请求或解析失败: {str(e)}")
|
||||||
|
print(traceback.format_exc())
|
||||||
|
result["parse"] = 0
|
||||||
|
result["url"] = id
|
||||||
|
result["header"] = json.dumps(headers)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def localProxy(self, param):
|
||||||
|
# 本地代理处理,此处简单返回传入的参数
|
||||||
|
return [200, "video/MP2T", {}, param]
|
||||||
|
|
||||||
|
def destroy(self):
|
||||||
|
# 资源回收
|
||||||
|
pass
|
||||||
Binary file not shown.
+64
-32
@@ -628,6 +628,70 @@
|
|||||||
"json": "./txt/bilisong.txt"
|
"json": "./txt/bilisong.txt"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "少儿教育",
|
||||||
|
"name": "📚少儿┃教育📚",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_BiliGuard",
|
||||||
|
"style": {
|
||||||
|
"type": "rect",
|
||||||
|
"ratio": 1.597
|
||||||
|
},
|
||||||
|
"searchable": 0,
|
||||||
|
"quickSearch": 0,
|
||||||
|
"changeable": 0,
|
||||||
|
"ext": {
|
||||||
|
"json": "https://im.feelec.com.cn/res/file.html?id=2c9a91099584ed4901963ec8251e772b"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "小学课堂",
|
||||||
|
"name": "📚小学┃课堂📚",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_BiliGuard",
|
||||||
|
"style": {
|
||||||
|
"type": "rect",
|
||||||
|
"ratio": 1.597
|
||||||
|
},
|
||||||
|
"searchable": 0,
|
||||||
|
"quickSearch": 0,
|
||||||
|
"changeable": 0,
|
||||||
|
"ext": {
|
||||||
|
"json": "https://im.feelec.com.cn/res/file.html?id=2c9a91099584ed4901963ec82537772c"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "初中课堂",
|
||||||
|
"name": "📚初中┃课堂📚",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_BiliGuard",
|
||||||
|
"style": {
|
||||||
|
"type": "rect",
|
||||||
|
"ratio": 1.597
|
||||||
|
},
|
||||||
|
"searchable": 0,
|
||||||
|
"quickSearch": 0,
|
||||||
|
"changeable": 0,
|
||||||
|
"ext": {
|
||||||
|
"json": "https://im.feelec.com.cn/res/file.html?id=2c9a91099584ed4901963ec824cc7729"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "高中教育",
|
||||||
|
"name": "📚高中┃课堂📚",
|
||||||
|
"type": 3,
|
||||||
|
"api": "csp_BiliGuard",
|
||||||
|
"style": {
|
||||||
|
"type": "rect",
|
||||||
|
"ratio": 1.597
|
||||||
|
},
|
||||||
|
"searchable": 0,
|
||||||
|
"quickSearch": 0,
|
||||||
|
"changeable": 0,
|
||||||
|
"ext": {
|
||||||
|
"json": "https://im.feelec.com.cn/res/file.html?id=2c9a91099584ed4901963ec824fd772a"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "Wexqingfengdj",
|
"key": "Wexqingfengdj",
|
||||||
"name": "🎼舞曲┃摇头🎼",
|
"name": "🎼舞曲┃摇头🎼",
|
||||||
@@ -693,38 +757,6 @@
|
|||||||
"type": "list"
|
"type": "list"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "Wexmiso",
|
|
||||||
"name": "🎠米搜┃综合🎠",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_WexmisoGuard",
|
|
||||||
"searchable": 1,
|
|
||||||
"changeable": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "Wexed3000",
|
|
||||||
"name": "🎠易迪┃综合🎠",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_Wexed3000Guard",
|
|
||||||
"searchable": 1,
|
|
||||||
"changeable": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "易搜",
|
|
||||||
"name": "🎠易搜┃综合🎠",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_YiSoGuard",
|
|
||||||
"searchable": 1,
|
|
||||||
"changeable": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "Wexyingso",
|
|
||||||
"name": "🎠影子┃综合🎠",
|
|
||||||
"type": 3,
|
|
||||||
"api": "csp_WexyingsoGuard",
|
|
||||||
"searchable": 1,
|
|
||||||
"changeable": 0
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "WexTJso",
|
"key": "WexTJso",
|
||||||
"name": "🎠TJ┃综合🎠",
|
"name": "🎠TJ┃综合🎠",
|
||||||
|
|||||||
Binary file not shown.
+1792
-2278
File diff suppressed because it is too large.
Load diff
+23
-2
@@ -785,7 +785,7 @@
|
|||||||
".cdnlz"
|
".cdnlz"
|
||||||
],
|
],
|
||||||
"regex": [
|
"regex": [
|
||||||
"#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF.*?66667,[\\s\\S]*?#EXT-X-DISCONTINUITY",
|
"#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:7\\.166667,[\\s\\S]*?#EXT-X-DISCONTINUITY",
|
||||||
"#EXTINF.*?\\s+.*?08646.*?\\.ts",
|
"#EXTINF.*?\\s+.*?08646.*?\\.ts",
|
||||||
"17.19",
|
"17.19",
|
||||||
"19.63"
|
"19.63"
|
||||||
@@ -800,7 +800,8 @@
|
|||||||
"cachem3u8.2s0"
|
"cachem3u8.2s0"
|
||||||
],
|
],
|
||||||
"regex": [
|
"regex": [
|
||||||
"#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF.*?66667,[\\s\\S]*?#EXT-X-DISCONTINUITY",
|
"#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:6\\.400000,[\\s\\S]*?#EXT-X-DISCONTINUITY",
|
||||||
|
"#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:6\\.666667,[\\s\\S]*?#EXT-X-DISCONTINUITY",
|
||||||
"#EXTINF.*?\\s+.*?1171(057).*?\\.ts",
|
"#EXTINF.*?\\s+.*?1171(057).*?\\.ts",
|
||||||
"#EXTINF.*?\\s+.*?6d7b(077).*?\\.ts",
|
"#EXTINF.*?\\s+.*?6d7b(077).*?\\.ts",
|
||||||
"#EXTINF.*?\\s+.*?6718a(403).*?\\.ts",
|
"#EXTINF.*?\\s+.*?6718a(403).*?\\.ts",
|
||||||
@@ -861,6 +862,26 @@
|
|||||||
"#EXTINF.*?\\s+.*?XR8pDxQk.*?\\.ts"
|
"#EXTINF.*?\\s+.*?XR8pDxQk.*?\\.ts"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "黑木耳hmr",
|
||||||
|
"hosts": [
|
||||||
|
"hmrvideo"
|
||||||
|
],
|
||||||
|
"regex": [
|
||||||
|
"#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:3\\.366667,[\\s\\S]*?#EXT-X-DISCONTINUITY"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ryplay",
|
||||||
|
"hosts": [
|
||||||
|
"cdn.ryplay"
|
||||||
|
],
|
||||||
|
"regex": [
|
||||||
|
"#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:6\\.633333,[\\s\\S]*?#EXT-X-DISCONTINUITY",
|
||||||
|
"#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:8\\.333333,[\\s\\S].*?\\.ts",
|
||||||
|
"#EXTINF:2\\.933333,[\\s\\S].*?\\.ts"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "555DM",
|
"name": "555DM",
|
||||||
"hosts": [
|
"hosts": [
|
||||||
|
|||||||
+1740
-1330
File diff suppressed because it is too large.
Load diff
+296
-245
@@ -1,125 +1,158 @@
|
|||||||
# IPv4 Streams
|
# IPv4 Streams
|
||||||
AMC电影,http://61.221.215.25:8800/hls/43/index.m3u8
|
AMC电影,http://61.221.215.25:8800/hls/43/index.m3u8
|
||||||
AMC电影,http://122.117.71.103:8559/http/61.222.53.250:8092/upload/115/AMC_TS-1111_1.m3u8
|
AMC电影,http://122.117.71.103:8559/http/61.222.53.250:8092/upload/115/AMC_TS-1111_1.m3u8
|
||||||
|
AMC电影,http://104.244.79.187:5050/litv/4gtv-4gtv017
|
||||||
AXN,http://122.117.71.103:8557/http/61.222.53.250:8081/hls/71/813/ch43.m3u8
|
AXN,http://122.117.71.103:8557/http/61.222.53.250:8081/hls/71/813/ch43.m3u8
|
||||||
CCTV-4K 超高清,http://27.222.3.214/liveali-tp4k.cctv.cn/live/4K10M.stream/playlist.m3u8
|
CCTV-4K 超高清,http://27.222.3.214/liveali-tp4k.cctv.cn/live/4K10M.stream/playlist.m3u8
|
||||||
CCTV10,http://36.105.100.208:35455/gaoma/cctv10.m3u8
|
CCTV1,http://58.57.40.22:9901/tsfile/live/0001_1.m3u8
|
||||||
CCTV10,http://39.164.160.249:9901/tsfile/live/0010_1.m3u8
|
CCTV1,http://218.13.14.6:60050/tsfile/live/1001_1.m3u8
|
||||||
CCTV10,http://129.146.6.71:35455/gaoma/cctv10.m3u8
|
CCTV1,http://8.138.7.223/【公众号:榴芒电视】/cctv1.m3u8
|
||||||
CCTV10,http://220.164.192.48:50085/tsfile/live/0011_1.m3u8
|
CCTV1,http://60.29.124.66:6080/hls/12/index.m3u8
|
||||||
CCTV11,http://39.164.160.249:9901/tsfile/live/0011_1.m3u8
|
CCTV10,http://58.57.40.22:9901/tsfile/live/1010_1.m3u8
|
||||||
CCTV11,http://129.146.6.71:35455/gaoma/cctv11.m3u8
|
CCTV10,http://218.13.14.6:60050/tsfile/live/1010_1.m3u8
|
||||||
|
CCTV10,http://60.29.124.66:6080/hls/21/index.m3u8
|
||||||
|
CCTV10,http://110.53.52.63:8888/newlive/live/hls/12/live.m3u8
|
||||||
CCTV11,http://58.57.40.22:9901/tsfile/live/1011_1.m3u8
|
CCTV11,http://58.57.40.22:9901/tsfile/live/1011_1.m3u8
|
||||||
CCTV12,http://39.164.160.249:9901/tsfile/live/0012_1.m3u8
|
CCTV11,http://218.13.14.6:60050/tsfile/live/1011_1.m3u8
|
||||||
CCTV12,http://36.105.100.208:35455/gaoma/cctv12.m3u8
|
CCTV11,http://60.29.124.66:6080/hls/22/index.m3u8
|
||||||
CCTV13,http://36.105.100.208:35455/gaoma/cctv13.m3u8
|
CCTV11,http://110.53.52.63:8888/newlive/live/hls/13/live.m3u8
|
||||||
CCTV13,http://129.146.6.71:35455/gaoma/cctv13.m3u8
|
CCTV11,http://183.11.239.36:808/hls/29/index.m3u8
|
||||||
CCTV13,http://39.164.160.249:9901/tsfile/live/0013_1.m3u8
|
CCTV12,http://58.57.40.22:9901/tsfile/live/1012_1.m3u8
|
||||||
CCTV14,http://39.164.160.249:9901/tsfile/live/0014_1.m3u8
|
CCTV12,http://218.13.14.6:60050/tsfile/live/1012_1.m3u8
|
||||||
CCTV14,http://36.105.100.208:35455/gaoma/cctv14.m3u8
|
CCTV12,http://110.53.52.63:8888/newlive/live/hls/14/live.m3u8
|
||||||
CCTV15,http://39.164.160.249:9901/tsfile/live/0015_1.m3u8
|
CCTV12,http://183.11.239.36:808/hls/30/index.m3u8
|
||||||
CCTV15,http://117.14.55.26:35455/gaoma/cctv15.m3u8
|
CCTV13,http://58.57.40.22:9901/tsfile/live/1013_1.m3u8
|
||||||
CCTV15,http://36.105.100.208:35455/gaoma/cctv15.m3u8
|
CCTV13,http://218.13.14.6:60050/tsfile/live/1013_1.m3u8
|
||||||
CCTV15,http://129.146.6.71:35455/gaoma/cctv15.m3u8
|
CCTV14,http://58.57.40.22:9901/tsfile/live/1014_1.m3u8
|
||||||
CCTV16,http://36.105.100.208:35455/gaoma/cctv16.m3u8
|
CCTV14,http://218.13.14.6:60050/tsfile/live/1014_1.m3u8
|
||||||
CCTV16,http://129.146.6.71:35455/gaoma/cctv16.m3u8
|
CCTV14,http://110.53.52.63:8888/newlive/live/hls/16/live.m3u8
|
||||||
CCTV17,http://129.146.6.71:35455/gaoma/cctv17.m3u8
|
CCTV14,http://183.11.239.36:808/hls/32/index.m3u8
|
||||||
CCTV17,http://36.105.100.208:35455/gaoma/cctv17.m3u8
|
CCTV15,http://58.57.40.22:9901/tsfile/live/1015_1.m3u8
|
||||||
CCTV2,http://39.164.160.249:9901/tsfile/live/0002_1.m3u8
|
CCTV15,http://218.13.14.6:60050/tsfile/live/1015_1.m3u8
|
||||||
CCTV2,http://36.105.100.208:35455/gaoma/cctv2.m3u8
|
CCTV15,http://110.53.52.63:8888/newlive/live/hls/17/live.m3u8
|
||||||
CCTV5,http://129.146.6.71:35455/gaoma/cctv5.m3u8
|
CCTV15,http://183.11.239.36:808/hls/102/index.m3u8
|
||||||
CCTV5,http://36.105.100.208:35455/gaoma/cctv5.m3u8
|
CCTV15,http://120.76.248.139/live/bfgd/4200000133.m3u8
|
||||||
|
CCTV16,http://183.11.239.36:808/hls/169/index.m3u8
|
||||||
|
CCTV16,http://47.122.125.40:6666/hls/cctv16hd.m3u8
|
||||||
|
CCTV16,http://171.120.110.203:9003//hls/17/index.m3u8
|
||||||
|
CCTV17,http://58.57.40.22:9901/tsfile/live/0019_1.m3u8
|
||||||
|
CCTV17,http://183.11.239.36:808/hls/35/index.m3u8
|
||||||
|
CCTV17,http://120.76.248.139/live/bfgd/4200000204.m3u8
|
||||||
|
CCTV17,http://113.57.111.4:1111/tsfile/live/1014_1.m3u8
|
||||||
|
CCTV2,http://218.13.14.6:60050/tsfile/live/1002_1.m3u8
|
||||||
|
CCTV2,http://60.29.124.66:6080/hls/13/index.m3u8
|
||||||
|
CCTV2,http://110.53.52.63:8888/newlive/live/hls/3/live.m3u8
|
||||||
|
CCTV2,http://120.76.248.139/live/bfgd/4200000061.m3u8
|
||||||
|
CCTV3,http://58.57.40.22:9901/tsfile/live/1002_1.m3u8
|
||||||
|
CCTV3,http://218.13.14.6:60050/tsfile/live/1003_1.m3u8
|
||||||
|
CCTV3,http://60.29.124.66:6080/hls/14/index.m3u8
|
||||||
|
CCTV3,http://110.53.52.63:8888/newlive/live/hls/4/live.m3u8
|
||||||
|
CCTV4,http://218.13.14.6:60050/tsfile/live/1004_1.m3u8
|
||||||
|
CCTV4,http://60.29.124.66:6080/hls/15/index.m3u8
|
||||||
|
CCTV4,http://110.53.52.63:8888/newlive/live/hls/5/live.m3u8
|
||||||
|
CCTV4,http://183.11.239.36:808/hls/77/index.m3u8
|
||||||
|
CCTV5,http://58.57.40.22:9901/tsfile/live/1004_1.m3u8
|
||||||
|
CCTV5,http://218.13.14.6:60050/tsfile/live/1005_1.m3u8
|
||||||
|
CCTV5,http://60.29.124.66:6080/hls/16/index.m3u8
|
||||||
|
CCTV5,http://110.53.52.63:8888/newlive/live/hls/6/live.m3u8
|
||||||
CCTV5+,http://117.169.124.46:6410/ysten-businessmobile/live/hdcctv05plus/1.m3u8
|
CCTV5+,http://117.169.124.46:6410/ysten-businessmobile/live/hdcctv05plus/1.m3u8
|
||||||
CCTV5+,http://36.105.100.208:35455/gaoma/cctv5p.m3u8
|
CCTV5+,http://58.57.40.22:9901/tsfile/live/1005_1.m3u8
|
||||||
CCTV5+,http://129.146.6.71:35455/gaoma/cctv5p.m3u8
|
CCTV5+,http://110.53.52.63:8888/newlive/live/hls/7/live.m3u8
|
||||||
|
CCTV5+,http://120.76.248.139/live/bfgd/4200000246.m3u8
|
||||||
|
CCTV5+,http://182.37.169.94:352/tsfile/live/0016_1.m3u8
|
||||||
CCTV6,http://117.169.124.36:6610/ysten-businessmobile/live/cctv-6/1.m3u8
|
CCTV6,http://117.169.124.36:6610/ysten-businessmobile/live/cctv-6/1.m3u8
|
||||||
CCTV6,http://58.57.40.22:9901/tsfile/live/1006_1.m3u8
|
CCTV6,http://58.57.40.22:9901/tsfile/live/1006_1.m3u8
|
||||||
CCTV6,http://218.13.14.6:60050/tsfile/live/1006_1.m3u8
|
CCTV6,http://218.13.14.6:60050/tsfile/live/1006_1.m3u8
|
||||||
CCTV6,http://113.140.12.230:8888/newlive/live/hls/7/live.m3u8
|
CCTV6,http://113.140.12.230:8888/newlive/live/hls/7/live.m3u8
|
||||||
CCTV7,http://36.105.100.208:35455/gaoma/cctv7.m3u8
|
CCTV6,http://60.29.124.66:6080/hls/17/index.m3u8
|
||||||
CCTV7,http://129.146.6.71:35455/gaoma/cctv7.m3u8
|
CCTV7,http://58.57.40.22:9901/tsfile/live/1007_1.m3u8
|
||||||
|
CCTV7,http://218.13.14.6:60050/tsfile/live/1007_1.m3u8
|
||||||
|
CCTV7,http://8.138.7.223/tv/cctv7.m3u8
|
||||||
|
CCTV7,http://8.138.7.223/【公众号:榴芒电视】/cctv7.m3u8
|
||||||
|
CCTV7,http://60.29.124.66:6080/hls/18/index.m3u8
|
||||||
CCTV8,http://117.169.124.36:6610/ysten-businessmobile/live/cctv-8/1.m3u8
|
CCTV8,http://117.169.124.36:6610/ysten-businessmobile/live/cctv-8/1.m3u8
|
||||||
CCTV8,http://36.105.100.208:35455/gaoma/cctv8k_36m.m3u8
|
CCTV8,http://58.57.40.22:9901/tsfile/live/1008_1.m3u8
|
||||||
CCTV8,http://129.146.6.71:35455/gaoma/cctv8.m3u8
|
CCTV8,http://218.13.14.6:60050/tsfile/live/1008_1.m3u8
|
||||||
CCTV9,http://39.164.160.249:9901/tsfile/live/0009_1.m3u8
|
CCTV8,http://60.29.124.66:6080/hls/19/index.m3u8
|
||||||
CCTV9,http://36.105.100.208:35455/gaoma/cctv9.m3u8
|
CCTV8,http://110.53.52.63:8888/newlive/live/hls/10/live.m3u8
|
||||||
|
CCTV9,http://58.57.40.22:9901/tsfile/live/1009_1.m3u8
|
||||||
|
CCTV9,http://218.13.14.6:60050/tsfile/live/1009_1.m3u8
|
||||||
|
CCTV9,http://60.29.124.66:6080/hls/20/index.m3u8
|
||||||
|
CCTV9,http://110.53.52.63:8888/newlive/live/hls/11/live.m3u8
|
||||||
|
CCTV9,http://183.11.239.36:808/hls/27/index.m3u8
|
||||||
|
CCTV世界地理,http://183.11.239.36:808/hls/11/index.m3u8
|
||||||
CCTV世界地理,http://111.61.236.247:9081/hls/62/index.m3u8
|
CCTV世界地理,http://111.61.236.247:9081/hls/62/index.m3u8
|
||||||
CCTV世界地理,http://120.76.248.139/live/bfgd/4200000177.m3u8
|
|
||||||
CCTV世界地理,http://36.129.204.117:9003//hls/78/index.m3u8
|
|
||||||
CCTV世界地理,http://180.213.174.225:9901/tsfile/live/1052_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
CCTV世界地理,http://60.2.190.206:4000/udp/239.253.92.113:8066
|
|
||||||
CCTV兵器科技,http://60.2.190.206:4000/udp/239.253.93.47:6435
|
|
||||||
CCTV央视台球,http://183.11.239.36:808/hls/73/index.m3u8
|
|
||||||
CCTV央视台球,http://36.129.204.117:9003//hls/71/index.m3u8
|
CCTV央视台球,http://36.129.204.117:9003//hls/71/index.m3u8
|
||||||
CCTV女性时尚,http://120.76.248.139/live/bfgd/4200000176.m3u8
|
CCTV女性时尚,http://120.76.248.139/live/bfgd/4200000176.m3u8
|
||||||
CCTV女性时尚,http://111.61.236.247:9081/hls/59/index.m3u8
|
CCTV女性时尚,http://111.61.236.247:9081/hls/59/index.m3u8
|
||||||
CCTV少儿,http://119.163.60.181:9901/tsfile/live/0015_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
CCTV少儿,http://123.138.22.30:9901/tsfile/live/0014_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
CCTV怀旧剧场,http://120.76.248.139/live/bfgd/4200000224.m3u8
|
CCTV怀旧剧场,http://120.76.248.139/live/bfgd/4200000224.m3u8
|
||||||
CCTV怀旧剧场,http://111.61.236.247:9081/hls/67/index.m3u8
|
CCTV怀旧剧场,http://111.61.236.247:9081/hls/67/index.m3u8
|
||||||
CCTV怀旧剧场,http://60.2.190.206:4000/udp/239.253.93.252:6430
|
|
||||||
CCTV怀旧剧场,http://121.19.134.200:808/tsfile/live/1035_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
CCTV电视指南,http://120.76.248.139/live/bfgd/4200000164.m3u8
|
CCTV电视指南,http://120.76.248.139/live/bfgd/4200000164.m3u8
|
||||||
CCTV第一剧场,http://180.213.174.225:9901/tsfile/live/1050_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
CCTV第一剧场,http://121.19.134.200:808/tsfile/live/1033_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
CCTV音乐,http://123.138.22.30:9901/tsfile/live/0015_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
CCTV风云剧场,http://121.19.134.200:808/tsfile/live/1034_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
CCTV风云足球,http://111.61.236.247:9081/hls/58/index.m3u8
|
|
||||||
CCTV风云足球,http://183.11.239.36:808/hls/133/index.m3u8
|
CCTV风云足球,http://183.11.239.36:808/hls/133/index.m3u8
|
||||||
|
CCTV风云足球,http://111.61.236.247:9081/hls/58/index.m3u8
|
||||||
CCTV风云足球,http://120.76.248.139/live/bfgd/4200000225.m3u8
|
CCTV风云足球,http://120.76.248.139/live/bfgd/4200000225.m3u8
|
||||||
CCTV风云音乐,http://121.19.134.200:808/tsfile/live/1036_1.m3u8?key=txiptv&playlive=1&authid=0
|
CCTV风云足球,http://120.238.94.10:9901/tsfile/live/1087_1.m3u8
|
||||||
|
CETV1,http://120.198.95.220:9901/tsfile/live/1039_1.m3u8?key=txiptv
|
||||||
|
CETV4,http://183.11.239.36:808/hls/73/index.m3u8
|
||||||
CHC动作电影,http://110.53.52.63:8888/newlive/live/hls/53/live.m3u8
|
CHC动作电影,http://110.53.52.63:8888/newlive/live/hls/53/live.m3u8
|
||||||
CHC动作电影,http://218.15.183.23:9901/tsfile/live/23039_1.m3u8
|
CHC动作电影,http://218.15.183.23:9901/tsfile/live/23039_1.m3u8
|
||||||
CHC动作电影,http://120.238.94.82:9901/tsfile/live/1052_1.m3u8
|
CHC动作电影,http://120.238.94.82:9901/tsfile/live/1052_1.m3u8
|
||||||
CHC动作电影,http://119.32.12.17:2901/udp/224.1.100.131:11111
|
CHC动作电影,http://39.135.133.167:80/PLTV/88888888/224/3221225555/1.m3u8
|
||||||
CHC华诚影视,http://120.76.248.139/live/bfgd/4200000289.m3u8
|
CHC华诚影视,http://120.76.248.139/live/bfgd/4200000289.m3u8
|
||||||
CHC家庭影院,http://110.53.52.63:8888/newlive/live/hls/51/live.m3u8
|
|
||||||
CHC家庭影院,http://61.162.52.6:8088/newlive/live/hls/60/live.m3u8
|
CHC家庭影院,http://61.162.52.6:8088/newlive/live/hls/60/live.m3u8
|
||||||
CHC家庭影院,http://58.19.38.162:9901/tsfile/live/1006_1.m3u8?key=txiptv&playlive=1&authid=0
|
CHC家庭影院,http://58.19.38.162:9901/tsfile/live/1006_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
CHC影迷电影,http://110.53.52.63:8888/newlive/live/hls/52/live.m3u8
|
CHC影迷电影,http://110.53.52.63:8888/newlive/live/hls/52/live.m3u8
|
||||||
CHC影迷电影,http://58.19.38.162:9901/tsfile/live/1004_1.m3u8?key=txiptv&playlive=1&authid=0
|
CHC影迷电影,http://58.19.38.162:9901/tsfile/live/1004_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
CHC电影,http://218.15.183.23:9901/tsfile/live/23044_1.m3u8
|
CHC电影,http://218.15.183.23:9901/tsfile/live/23044_1.m3u8
|
||||||
|
CHC电影,http://183.237.95.108:9901/tsfile/live/1008_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
|
CHC电影,http://120.198.95.220:9901/tsfile/live/1038_1.m3u8?key=txiptv
|
||||||
|
CHC电影,http://120.198.101.106:9901/tsfile/live/1053_1.m3u8?key=txiptv
|
||||||
CINEMAX,http://122.117.71.103:8558/http/61.222.53.250:8081/hls/71/813/ch42.m3u8
|
CINEMAX,http://122.117.71.103:8558/http/61.222.53.250:8081/hls/71/813/ch42.m3u8
|
||||||
HBO,http://122.117.71.103:8556/http/61.222.53.250:8081/hls/71/813/ch41.m3u8
|
HBO,http://122.117.71.103:8556/http/61.222.53.250:8081/hls/71/813/ch41.m3u8
|
||||||
HBO家庭,http://50.7.234.10:8278/fyi_twn/playlist.m3u8?tid=18186902&ct=17988&&tsum=7a21abab0a5912afb0ebc01db111e59f
|
HITs电影,http://37.27.111.214:8080/live/28/hls.m3u8
|
||||||
NewTV东北热剧,http://39.134.64.87:6610/PLTV/88888888/224/3221225741/index.m3u8?IASHttpSessionId=
|
NewTV东北热剧,http://39.134.65.175/PLTV/88888888/224/3221225679/1.m3u8
|
||||||
NewTV军旅剧场,http://39.134.64.87:6610/PLTV/88888888/224/3221225676/index.m3u8?IASHttpSessionId=
|
NewTV中国功夫,http://39.134.64.87:6610/PLTV/88888888/224/3221225681/index.m3u8?IASHttpSessionId=
|
||||||
NewTV哒啵电竞,http://39.134.64.87:6610/PLTV/88888888/224/3221225675/index.m3u8?IASHttpSessionId=
|
NewTV哒啵电竞,http://39.134.64.87:6610/PLTV/88888888/224/3221225675/index.m3u8?IASHttpSessionId=
|
||||||
NewTV武搏世界,http://39.134.64.87:6610/PLTV/88888888/224/3221225680/index.m3u8?IASHttpSessionId=
|
NewTV欢乐剧场,http://39.134.65.175/PLTV/88888888/224/3221225682/1.m3u8
|
||||||
|
NewTV超级电影,http://39.134.65.175/PLTV/88888888/224/3221225644/1.m3u8
|
||||||
|
NewTV超级电影,http://39.134.64.87:6610/PLTV/88888888/224/3221225717/index.m3u8?IASHttpSessionId=
|
||||||
|
NewTV黑莓动画,http://39.134.65.175/PLTV/88888888/224/3221225529/1.m3u8
|
||||||
|
NewTV黑莓电影,http://39.134.65.175/PLTV/88888888/224/3221225681/1.m3u8
|
||||||
|
NewTV黑莓电竞,http://39.134.65.175/PLTV/88888888/224/3221225559/1.m3u8
|
||||||
iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.m3u8
|
iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.m3u8
|
||||||
万州三峡移民,http://123.146.162.24:8013/tslslive/PU2vzMI/hls/live_sd.m3u8
|
万州三峡移民,http://123.146.162.24:8013/tslslive/PU2vzMI/hls/live_sd.m3u8
|
||||||
万州三峡移民,http://123.146.162.24:8017/c2F0hmi/1000/live.m3u8
|
万州三峡移民,http://123.146.162.24:8017/c2F0hmi/1000/live.m3u8
|
||||||
万州三峡移民,http://123.146.162.24:8013/tslslive/PU2vzMI/hls/live_sd.m3u8?zzhongqd
|
万州三峡移民,http://123.146.162.24:8013/tslslive/PU2vzMI/hls/live_sd.m3u8?zzhongqd
|
||||||
万州三峡移民,http://123.146.162.24:8017/c2F0hmi/1000/live.m3u8?zzhongqd
|
万州三峡移民,http://123.146.162.24:8017/c2F0hmi/1000/live.m3u8?zzhongqd
|
||||||
|
万州影视,http://123.146.162.24:8013/tslslive/vWlnEzU/hls/live_sd.m3u8
|
||||||
|
万州影视文艺,http://123.146.162.24:8017/d4ceB1a/1000/live.m3u8
|
||||||
万州综合,http://123.146.162.24:8017/iTXwrGs/800/live.m3u8
|
万州综合,http://123.146.162.24:8017/iTXwrGs/800/live.m3u8
|
||||||
万州综合,http://123.146.162.24:8013/tslslive/noEX9SG/hls/live_sd.m3u8
|
万州综合,http://123.146.162.24:8013/tslslive/noEX9SG/hls/live_sd.m3u8
|
||||||
万州综合,http://123.146.162.24:8017/iTXwrGs/800/live.m3u8?zzhongqd
|
万州综合,http://123.146.162.24:8017/iTXwrGs/800/live.m3u8?zzhongqd
|
||||||
万荣综合,http://60.222.246.220:19433/hls1.m3u8
|
万荣综合,http://60.222.246.220:19433/hls1.m3u8
|
||||||
三沙卫视,http://111.160.17.2:59901/tsfile/live/0001_45.m3u8
|
|
||||||
三沙卫视,http://61.138.128.226:19901/tsfile/live/1020_1.m3u8
|
三沙卫视,http://61.138.128.226:19901/tsfile/live/1020_1.m3u8
|
||||||
三沙卫视,http://119.36.148.115:59901/tsfile/live/1009_1.m3u8
|
|
||||||
东南卫视,http://117.169.124.37:6610/ysten-businessmobile/live/dongnanstv/yst.m3u8
|
东南卫视,http://117.169.124.37:6610/ysten-businessmobile/live/dongnanstv/yst.m3u8
|
||||||
东南卫视,http://58.57.40.22:9901/tsfile/live/1037_1.m3u8
|
东南卫视,http://58.57.40.22:9901/tsfile/live/1037_1.m3u8
|
||||||
东南卫视,http://110.53.52.63:8888/newlive/live/hls/47/live.m3u8
|
东南卫视,http://110.53.52.63:8888/newlive/live/hls/47/live.m3u8
|
||||||
东南卫视,http://120.76.248.139/live/bfgd/4200000483.m3u8
|
东南卫视,http://120.76.248.139/live/bfgd/4200000483.m3u8
|
||||||
东南卫视,http://36.32.174.67:60080/newlive/live/hls/33/live.m3u8
|
|
||||||
东方卫视,http://39.164.160.249:9901/tsfile/live/0107_1.m3u8
|
|
||||||
东方卫视,http://58.57.40.22:9901/tsfile/live/1030_1.m3u8
|
东方卫视,http://58.57.40.22:9901/tsfile/live/1030_1.m3u8
|
||||||
|
东方卫视,http://60.223.224.176:8888/newlive/live/hls/19/live.m3u8
|
||||||
|
东方财经,http://61.133.118.228:5001/douyu/9548279
|
||||||
东方财经,http://124.248.69.76:26781/douyu/9548279
|
东方财经,http://124.248.69.76:26781/douyu/9548279
|
||||||
东森幼幼,http://122.117.71.103:8515/http/61.222.53.250:8081/hls/63/805/ch09.m3u8
|
东森幼幼,http://122.117.71.103:8515/http/61.222.53.250:8081/hls/63/805/ch09.m3u8
|
||||||
东森戏剧,http://122.117.71.103:8529/http/61.222.53.250:8081/hls/64/806/ch13.m3u8
|
|
||||||
东森戏剧,http://122.117.71.103:8529/http/61.222.53.250:8081/hls/64/803/ch13.m3u8
|
|
||||||
东森戏剧,http://122.117.71.103:8529/东森戏剧.m3u8
|
东森戏剧,http://122.117.71.103:8529/东森戏剧.m3u8
|
||||||
|
东森戏剧,http://122.117.71.103:8529/http/61.222.53.250:8081/hls/64/803/ch13.m3u8
|
||||||
|
东森戏剧,http://122.117.71.103:8529/http/61.222.53.250:8081/hls/64/806/ch13.m3u8
|
||||||
东营综合,http://61.133.118.228:5001/yy/1354930954
|
东营综合,http://61.133.118.228:5001/yy/1354930954
|
||||||
中华小当家,http://61.221.215.25:8800/hls/40/index.m3u8
|
中华小当家,http://61.221.215.25:8800/hls/40/index.m3u8
|
||||||
乐至综合,http://175.155.106.72:89/live1/live1.m3u8
|
乐至综合,http://175.155.106.72:89/live1/live1.m3u8
|
||||||
乐至综合,http://175.155.106.72:89/live1/live1.m3u8?zsicd
|
乐至综合,http://175.155.106.72:89/live1/live1.m3u8?zsicd
|
||||||
乐至综合,http://175.155.106.72:89/live1/live1.m3u8?zsicd;http://rmlive.lzxrmtzx.com/live1/live1.m3u8?zsicd
|
乐至综合,http://175.155.106.72:89/live1/live1.m3u8?zsicd;http://rmlive.lzxrmtzx.com/live1/live1.m3u8?zsicd
|
||||||
云南卫视,http://39.164.160.249:9901/tsfile/live/0119_1.m3u8
|
云南卫视,http://58.57.40.22:9901/tsfile/live/1047_1.m3u8
|
||||||
云南卫视,http://220.164.192.48:50085/tsfile/live/0019_1.m3u8
|
|
||||||
云南卫视,http://110.53.52.63:8888/newlive/live/hls/26/live.m3u8
|
云南卫视,http://110.53.52.63:8888/newlive/live/hls/26/live.m3u8
|
||||||
云南卫视,http://183.11.239.36:808/hls/52/index.m3u8
|
云南卫视,http://183.11.239.36:808/hls/52/index.m3u8
|
||||||
云南卫视,http://120.76.248.139/live/bfgd/4200000482.m3u8
|
云南卫视,http://120.76.248.139/live/bfgd/4200000482.m3u8
|
||||||
|
云南卫视,http://36.32.174.67:60080/newlive/live/hls/45/live.m3u8
|
||||||
云浮综合,http://125.89.163.44:8888/udp/239.77.0.253:5146
|
云浮综合,http://125.89.163.44:8888/udp/239.77.0.253:5146
|
||||||
五星体育,http://36.105.100.208:35455/itv/5000000010000017540.m3u8?cdn=bestzb
|
五星体育,http://36.105.100.208:35455/itv/5000000010000017540.m3u8?cdn=bestzb
|
||||||
人间卫视,http://61.216.67.119:1935/bltvhd/bltv1/chunklistw1266569526.m3u
|
人间卫视,http://61.216.67.119:1935/bltvhd/bltv1/chunklistw1266569526.m3u
|
||||||
@@ -131,208 +164,206 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
|
|||||||
伊犁经济法制,http://110.153.180.106:55555/out_4/index.m3u8?zxinjd
|
伊犁经济法制,http://110.153.180.106:55555/out_4/index.m3u8?zxinjd
|
||||||
伊犁维吾尔,http://110.153.180.106:55555/out_2/index.m3u8
|
伊犁维吾尔,http://110.153.180.106:55555/out_2/index.m3u8
|
||||||
伊犁维吾尔,http://110.153.180.106:55555/out_2/index.m3u8?zxinjd
|
伊犁维吾尔,http://110.153.180.106:55555/out_2/index.m3u8?zxinjd
|
||||||
优漫卡通,http://123.138.22.30:9901/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
|
优漫卡通,http://58.221.214.82:9901/tsfile/live/0008_2.m3u8
|
||||||
优漫卡通,http://221.226.4.10:9901/tsfile/live/1026_1.m3u8?key=txiptv&playlive=1&authid=0
|
优漫卡通,http://119.32.12.17:2901/udp/224.1.100.119:11111
|
||||||
优漫卡通,http://119.32.12.32:2901/udp/224.1.100.119:11111
|
优漫卡通,http://110.53.218.182:9902/tsfile/live/1006_1.m3u8
|
||||||
优漫卡通,http://36.105.100.208:35455/itv/1000000002000010063.m3u8?cdn=ystenlive
|
优漫卡通,http://106.118.70.46:9901/tsfile/live/1013_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
优漫卡通,http://58.221.214.82:9901/tsfile/live/0008_2.m3u8?key=txiptv
|
||||||
佛山公共,http://125.89.163.44:8888/udp/239.253.43.53:5146
|
佛山公共,http://125.89.163.44:8888/udp/239.253.43.53:5146
|
||||||
佛山影视,http://125.89.163.44:8888/udp/239.253.43.56:5146
|
佛山影视,http://125.89.163.44:8888/udp/239.253.43.56:5146
|
||||||
佛山综合,http://125.89.163.44:8888/udp/239.253.43.57:5146
|
|
||||||
佳木斯新闻综合,http://39.134.65.106/PLTV/88888888/224/3221225993/1.m3u8?
|
佳木斯新闻综合,http://39.134.65.106/PLTV/88888888/224/3221225993/1.m3u8?
|
||||||
兵团八师石河子教育,http://124.88.144.73:1935/live/jiaoyu/playlist.m3u8
|
兵团八师石河子教育,http://124.88.144.73:1935/live/jiaoyu/playlist.m3u8
|
||||||
兵团八师石河子教育,http://124.88.144.73:1935/live/jiaoyu/playlist.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD]
|
兵团八师石河子教育,http://124.88.144.73:1935/live/jiaoyu/playlist.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD]
|
||||||
兵团八师石河子教育,http://124.88.144.73:1935/live/jiaoyu/playlist.m3u8?zxinjd
|
兵团八师石河子教育,http://124.88.144.73:1935/live/jiaoyu/playlist.m3u8?zxinjd
|
||||||
兵团八师石河子新闻综合,http://124.88.144.73:1935/live/xwzh/playlist.m3u8?zxinjd
|
兵团八师石河子新闻综合,http://124.88.144.73:1935/live/xwzh/playlist.m3u8?zxinjd
|
||||||
兵团八师石河子经济生活,http://124.88.144.73:1935/live/dywt/playlist.m3u8?zxinjd
|
兵团八师石河子经济生活,http://124.88.144.73:1935/live/dywt/playlist.m3u8?zxinjd
|
||||||
兵团卫视,http://183.11.239.36:808/hls/7/index.m3u8
|
|
||||||
兵团卫视,http://120.76.248.139/live/bfgd/4200000124.m3u8
|
兵团卫视,http://120.76.248.139/live/bfgd/4200000124.m3u8
|
||||||
兵团卫视,http://123.132.233.194:352/tsfile/live/0113_1.m3u8
|
兵团卫视,http://218.89.240.144:59901/tsfile/live/0115_1.m3u8
|
||||||
兵团卫视,http://110.80.17.38:9901/tsfile/live/0015_1.m3u8
|
兵团卫视,http://61.138.128.226:19901/tsfile/live/0115_1.m3u8
|
||||||
|
兵团卫视,http://121.33.239.242:9901/tsfile/live/1000_1.m3u8
|
||||||
内蒙古卫视,http://110.53.52.63:8888/newlive/live/hls/45/live.m3u8
|
内蒙古卫视,http://110.53.52.63:8888/newlive/live/hls/45/live.m3u8
|
||||||
|
内蒙古卫视,http://183.11.239.36:808/hls/60/index.m3u8
|
||||||
内蒙古卫视,http://120.76.248.139/live/bfgd/4200000110.m3u8
|
内蒙古卫视,http://120.76.248.139/live/bfgd/4200000110.m3u8
|
||||||
内蒙古卫视,http://124.128.73.58:9901/tsfile/live/0109_1.m3u8
|
内蒙古卫视,http://183.66.15.146:60901/tsfile/live/0109_1.m3u8
|
||||||
内蒙古卫视,http://101.19.84.8:9901/tsfile/live/0109_1.m3u8
|
内蒙古卫视,http://101.19.84.8:9901/tsfile/live/0109_1.m3u8
|
||||||
内蒙古卫视,http://121.33.239.242:9901/tsfile/live/0109_1.m3u8
|
|
||||||
农林卫视,http://120.76.248.139/live/bfgd/4200000122.m3u8
|
农林卫视,http://120.76.248.139/live/bfgd/4200000122.m3u8
|
||||||
农林卫视,http://124.116.183.146:9901/tsfile/live/1004_1.m3u8
|
农林卫视,http://124.116.183.146:9901/tsfile/live/1004_1.m3u8
|
||||||
农林卫视,http://8.138.7.223/【公众号:榴芒电视】/农林卫视.m3u8
|
农林卫视,http://8.138.7.223/【公众号:榴芒电视】/农林卫视.m3u8
|
||||||
农林卫视,http://112.46.85.60:8009/hls/27/index.m3u8
|
农林卫视,http://112.46.85.60:8009/hls/27/index.m3u8
|
||||||
凤凰卫视,http://221.7.175.154:8445/tsfile/live/1020_1.m3u8
|
凤凰卫视,http://221.7.175.154:8445/tsfile/live/1020_1.m3u8
|
||||||
凤凰卫视,http://221.7.175.154:8445/tsfile/live/1020_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
凤凰卫视,http://120.198.101.106:9901/tsfile/live/1062_1.m3u8?key=txiptv
|
|
||||||
凤凰卫视,http://119.32.12.32:2901/udp/224.1.100.3:11111
|
|
||||||
凤凰卫视,http://119.32.12.17:2901/udp/224.1.100.3:11111
|
凤凰卫视,http://119.32.12.17:2901/udp/224.1.100.3:11111
|
||||||
|
凤凰卫视,http://218.202.220.2:5000/nn_live.ts?id=NEWSASIA
|
||||||
|
凤凰影视,http://221.7.175.154:8445/tsfile/live/1022_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
动漫秀场,http://36.129.204.117:9003//hls/67/index.m3u8
|
动漫秀场,http://36.129.204.117:9003//hls/67/index.m3u8
|
||||||
动漫秀场,http://60.29.124.66:6080/hls/62/index.m3u8
|
|
||||||
动漫秀场,http://60.2.190.206:4000/udp/239.253.93.225:6403
|
|
||||||
动漫秀场,http://36.105.100.208:35455/itv/5000000011000031113.m3u8?cdn=bestzb
|
动漫秀场,http://36.105.100.208:35455/itv/5000000011000031113.m3u8?cdn=bestzb
|
||||||
|
动漫秀场,http://60.2.190.206:4000/udp/239.253.93.225:6403
|
||||||
|
动漫秀场,http://60.29.124.66:6080/hls/62/index.m3u8
|
||||||
|
动漫秀场,http://183.237.95.108:9901/tsfile/live/1104_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
动物星球,http://122.117.71.103:8512/动物星球.m3u8
|
动物星球,http://122.117.71.103:8512/动物星球.m3u8
|
||||||
动物星球,http://61.221.215.25:8800/hls/57/index.m3u8
|
动物星球,http://61.221.215.25:8800/hls/57/index.m3u8
|
||||||
劲爆体育,http://120.238.94.82:9901/tsfile/live/1086_1.m3u8
|
劲爆体育,http://120.238.94.82:9901/tsfile/live/1086_1.m3u8
|
||||||
劲爆体育,http://150.230.250.89:50001/TVOD/5000000002000029972/bestzb/index.m3u8
|
劲爆体育,http://150.230.250.89:50001/TVOD/5000000002000029972/bestzb/index.m3u8
|
||||||
劲爆体育,http://146.56.165.66:7788/TVOD/5000000002000029972/bestzb/index.m3u8
|
劲爆体育,http://146.56.165.66:7788/TVOD/5000000002000029972/bestzb/index.m3u8
|
||||||
劲爆体育,http://36.105.100.208:35455/itv/5000000002000029972.m3u8?cdn=bestzb
|
劲爆体育,http://183.237.95.108:9901/tsfile/live/1074_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
|
劲爆体育,http://120.198.101.106:9901/tsfile/live/1086_1.m3u8?key=txiptv
|
||||||
|
北京中华特产,http://120.76.248.139/live/bfgd/4200000158.m3u8
|
||||||
北京优优宝贝,http://120.76.248.139/live/bfgd/4200000153.m3u8
|
北京优优宝贝,http://120.76.248.139/live/bfgd/4200000153.m3u8
|
||||||
|
北京北京卡酷少儿,http://120.76.248.139/live/bfgd/4200000106.m3u8
|
||||||
北京北京纪实科教,http://120.76.248.139/live/bfgd/4200000113.m3u8
|
北京北京纪实科教,http://120.76.248.139/live/bfgd/4200000113.m3u8
|
||||||
北京卫视,http://39.164.160.249:9901/tsfile/live/0122_1.m3u8
|
|
||||||
北京卫视,http://58.57.40.22:9901/tsfile/live/1032_1.m3u8
|
北京卫视,http://58.57.40.22:9901/tsfile/live/1032_1.m3u8
|
||||||
北京卫视,http://60.223.224.176:8888/newlive/live/hls/18/live.m3u8
|
北京卫视,http://60.223.224.176:8888/newlive/live/hls/18/live.m3u8
|
||||||
|
北京卫视,http://110.53.52.63:8888/newlive/live/hls/18/live.m3u8
|
||||||
北京四海钓鱼,http://120.76.248.139/live/bfgd/4200000229.m3u8
|
北京四海钓鱼,http://120.76.248.139/live/bfgd/4200000229.m3u8
|
||||||
北京环球旅游,http://120.76.248.139/live/bfgd/4200000147.m3u8
|
北京环球旅游,http://120.76.248.139/live/bfgd/4200000147.m3u8
|
||||||
北京生态环境频道,http://120.76.248.139/live/bfgd/4200000149.m3u8
|
北京生态环境频道,http://120.76.248.139/live/bfgd/4200000149.m3u8
|
||||||
北京车迷频道,http://120.76.248.139/live/bfgd/4200000146.m3u8
|
北京车迷频道,http://120.76.248.139/live/bfgd/4200000146.m3u8
|
||||||
|
南京少儿,http://221.226.51.220:50080/newlive/live/hls/46/live.m3u8
|
||||||
南方卫视,http://182.91.124.224:9901/tsfile/live/1059_1.m3u8?key=txiptv&playlive=0&authid=0
|
南方卫视,http://182.91.124.224:9901/tsfile/live/1059_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
|
卡酷卡通,http://60.172.130.146:352/tsfile/live/1008_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
卡酷少儿,http://58.57.40.22:9901/tsfile/live/1060_1.m3u8
|
卡酷少儿,http://58.57.40.22:9901/tsfile/live/1060_1.m3u8
|
||||||
卡酷少儿,http://61.138.128.226:19901/tsfile/live/1017_1.m3u8
|
|
||||||
卡酷少儿,http://60.29.124.66:6080/hls/58/index.m3u8
|
|
||||||
卡酷少儿,http://218.13.170.98:9901/tsfile/live/1021_1.m3u8
|
卡酷少儿,http://218.13.170.98:9901/tsfile/live/1021_1.m3u8
|
||||||
|
卡酷少儿,http://61.138.128.226:19901/tsfile/live/1017_1.m3u8
|
||||||
卡酷少儿,http://61.157.139.15:9901/tsfile/live/2418_1.m3u8
|
卡酷少儿,http://61.157.139.15:9901/tsfile/live/2418_1.m3u8
|
||||||
厦门卫视,http://183.11.239.36:808/hls/17/index.m3u8
|
卡酷少儿,http://60.29.124.66:6080/hls/58/index.m3u8
|
||||||
厦门卫视,http://110.80.17.38:9901/tsfile/live/0128_1.m3u8
|
|
||||||
厦门卫视,http://47.122.125.40:6666/hls/xmtv.m3u8
|
厦门卫视,http://47.122.125.40:6666/hls/xmtv.m3u8
|
||||||
厦门卫视,http://36.105.100.208:35455/itv/1000000005000266006.m3u8?cdn=ystenlive
|
厦门卫视,http://60.209.125.254:352/tsfile/live/0119_1.m3u8?ace
|
||||||
|
可克达拉综合,http://218.84.12.186:8001/hls/main/playlist.m3u8?zxinjd;http://218.84.12.186:8001/hls/main/playlist.m3u8zxinjd
|
||||||
吉林乡村,http://36.129.204.117:9003//hls/23/index.m3u8
|
吉林乡村,http://36.129.204.117:9003//hls/23/index.m3u8
|
||||||
吉林卫视,http://220.164.192.48:50085/tsfile/live/0118_1.m3u8
|
|
||||||
吉林卫视,http://58.57.40.22:9901/tsfile/live/1050_1.m3u8
|
吉林卫视,http://58.57.40.22:9901/tsfile/live/1050_1.m3u8
|
||||||
吉林卫视,http://111.160.17.2:59901/tsfile/live/0001_37.m3u8
|
|
||||||
吉林卫视,http://110.53.52.63:8888/newlive/live/hls/34/live.m3u8
|
吉林卫视,http://110.53.52.63:8888/newlive/live/hls/34/live.m3u8
|
||||||
|
吉林卫视,http://183.11.239.36:808/hls/10/index.m3u8
|
||||||
|
吉林卫视,http://120.76.248.139/live/bfgd/4200000097.m3u8
|
||||||
|
吉林卫视,http://47.122.125.40:6666/hls/jlhd.m3u8
|
||||||
吉林生活,http://36.129.204.117:9003//hls/22/index.m3u8
|
吉林生活,http://36.129.204.117:9003//hls/22/index.m3u8
|
||||||
吉林都市,http://36.129.204.117:9003//hls/20/index.m3u8
|
吉林都市,http://36.129.204.117:9003//hls/20/index.m3u8
|
||||||
|
咪咕体育,http://39.134.67.108/PLTV/88888888/224/3221225897/1.m3u8
|
||||||
|
咪咕体育,http://39.134.67.108/PLTV/88888888/224/3221226031/1.m3u8
|
||||||
哈哈炫动,http://58.57.40.22:9901/tsfile/live/1061_1.m3u8
|
哈哈炫动,http://58.57.40.22:9901/tsfile/live/1061_1.m3u8
|
||||||
哈哈炫动,http://120.238.94.10:9901/tsfile/live/1037_1.m3u8
|
|
||||||
哈哈炫动,http://61.138.128.226:19901/tsfile/live/1016_1.m3u8
|
哈哈炫动,http://61.138.128.226:19901/tsfile/live/1016_1.m3u8
|
||||||
哈哈炫动,http://39.134.65.106/PLTV/88888888/224/3221225534/1.m3u8?
|
哈哈炫动,http://39.134.65.106/PLTV/88888888/224/3221225534/1.m3u8?
|
||||||
哈哈炫动,http://36.105.100.208:35455/itv/5000000011000031123.m3u8?cdn=bestzb
|
哈哈炫动,http://36.105.100.208:35455/itv/5000000011000031123.m3u8?cdn=bestzb
|
||||||
|
哈哈炫动,http://120.238.94.10:9901/tsfile/live/1037_1.m3u8
|
||||||
哈尔滨新闻综合,http://39.134.65.106/PLTV/88888888/224/3221226093/1.m3u8?
|
哈尔滨新闻综合,http://39.134.65.106/PLTV/88888888/224/3221226093/1.m3u8?
|
||||||
哈尔滨生活,http://39.134.65.106/PLTV/88888888/224/3221226095/1.m3u8?
|
哈尔滨生活,http://39.134.65.106/PLTV/88888888/224/3221226095/1.m3u8?
|
||||||
|
喜剧影院,http://183.66.15.146:60901/tsfile/live/0109_2.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
嘉佳卡通,http://183.11.239.36:808/hls/8/index.m3u8
|
||||||
嘉佳卡通,http://61.138.128.226:19901/tsfile/live/1019_1.m3u8
|
嘉佳卡通,http://61.138.128.226:19901/tsfile/live/1019_1.m3u8
|
||||||
嘉佳卡通,http://61.157.139.15:9901/tsfile/live/2420_1.m3u8
|
嘉佳卡通,http://61.157.139.15:9901/tsfile/live/2420_1.m3u8
|
||||||
嘉佳卡通,http://183.11.239.36:808/hls/8/index.m3u8
|
嘉佳卡通,http://125.89.163.44:8888/udp/239.77.0.179:5146
|
||||||
嘉佳卡通,http://218.89.240.144:59901/tsfile/live/1003_1.m3u8
|
|
||||||
四川卫视,http://58.57.40.22:9901/tsfile/live/1046_1.m3u8
|
四川卫视,http://58.57.40.22:9901/tsfile/live/1046_1.m3u8
|
||||||
四川卫视,http://111.160.17.2:59901/tsfile/live/0001_34.m3u8
|
|
||||||
四川卫视,http://110.53.52.63:8888/newlive/live/hls/31/live.m3u8
|
四川卫视,http://110.53.52.63:8888/newlive/live/hls/31/live.m3u8
|
||||||
|
四川卫视,http://183.11.239.36:808/hls/50/index.m3u8
|
||||||
|
四川卫视,http://120.76.248.139/live/bfgd/4200000103.m3u8
|
||||||
四川科教,http://182.150.115.21:8030/pcgacg/pcgacg_0.m3u8
|
四川科教,http://182.150.115.21:8030/pcgacg/pcgacg_0.m3u8
|
||||||
四川科教,http://8.138.7.223/【公众号:榴芒电视】/四川科教.m3u8
|
四川科教,http://8.138.7.223/【公众号:榴芒电视】/四川科教.m3u8
|
||||||
垫江综合,http://123.146.162.24:8013/tslslive/noEX9SG/hls/live_sd.m3u8?zzhongqd
|
垫江综合,http://123.146.162.24:8013/tslslive/noEX9SG/hls/live_sd.m3u8?zzhongqd
|
||||||
大庆新闻综合,http://39.134.65.106/PLTV/88888888/224/3221226052/1.m3u8?
|
大庆新闻综合,http://39.134.65.106/PLTV/88888888/224/3221226052/1.m3u8?
|
||||||
大湾区卫视,http://183.11.239.36:808/hls/132/index.m3u8
|
|
||||||
大湾区卫视,http://222.128.55.152:9080/live/dwq.m3u8
|
大湾区卫视,http://222.128.55.152:9080/live/dwq.m3u8
|
||||||
大湾区卫视,http://36.105.100.208:35455/itv/1000000002000011619.m3u8?cdn=ystenlive
|
大湾区卫视,http://36.105.100.208:35455/itv/1000000002000011619.m3u8?cdn=ystenlive
|
||||||
天元围棋,http://120.76.248.139/live/bfgd/4200000633.m3u8
|
|
||||||
天津卫视,http://110.53.52.63:8888/newlive/live/hls/42/live.m3u8
|
天津卫视,http://110.53.52.63:8888/newlive/live/hls/42/live.m3u8
|
||||||
天津卫视,http://183.11.239.36:808/hls/42/index.m3u8
|
天津卫视,http://183.11.239.36:808/hls/42/index.m3u8
|
||||||
|
天津卫视,http://123.123.74.59:9003//hls/22/index.m3u8
|
||||||
天津卫视,http://113.57.111.4:1111/tsfile/live/1024_1.m3u8
|
天津卫视,http://113.57.111.4:1111/tsfile/live/1024_1.m3u8
|
||||||
天津卫视,http://110.80.17.38:9901/tsfile/live/0135_1.m3u8
|
|
||||||
天津新闻,http://111.160.17.2:59901/tsfile/live/0001_22.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
奎屯哈萨克语,http://218.84.12.186:8002/hls/main/playlist.m3u8
|
奎屯哈萨克语,http://218.84.12.186:8002/hls/main/playlist.m3u8
|
||||||
奎屯哈萨克语,http://218.84.12.186:8002/hls/main/playlist.m3u8?zxinjd
|
奎屯哈萨克语,http://218.84.12.186:8002/hls/main/playlist.m3u8?zxinjd
|
||||||
好莱坞电影,http://50.7.234.10:8278/hollywoodmovies_twn/playlist.m3u8?tid=MA8A4005638840056388&ct=18392&tsum=a1f1517d4ea64fd01267905f21d83859
|
|
||||||
宁夏卫视,http://58.57.40.22:9901/tsfile/live/1054_1.m3u8
|
宁夏卫视,http://58.57.40.22:9901/tsfile/live/1054_1.m3u8
|
||||||
宁夏卫视,http://110.53.52.63:8888/newlive/live/hls/39/live.m3u8
|
宁夏卫视,http://110.53.52.63:8888/newlive/live/hls/39/live.m3u8
|
||||||
宁夏卫视,http://183.11.239.36:808/hls/106/index.m3u8
|
宁夏卫视,http://183.11.239.36:808/hls/106/index.m3u8
|
||||||
宁夏卫视,http://120.76.248.139/live/bfgd/4200000118.m3u8
|
宁夏卫视,http://120.76.248.139/live/bfgd/4200000118.m3u8
|
||||||
宁夏卫视,http://123.132.233.194:352/tsfile/live/0112_1.m3u8
|
宁夏卫视,http://182.37.169.94:352/tsfile/live/0112_1.m3u8
|
||||||
安多卫视,http://39.134.65.166/PLTV/88888888/224/3221225531/1.m3u8
|
安多卫视,http://39.134.65.166/PLTV/88888888/224/3221225531/1.m3u8
|
||||||
安多卫视,http://36.105.100.208:35455/itv/1000000005000266001.m3u8?cdn=ystenlive
|
安多卫视,http://39.134.66.66/PLTV/88888888/224/3221225531/1.m3u8
|
||||||
安徽卫视,http://39.164.160.249:9901/tsfile/live/0130_1.m3u8
|
|
||||||
安徽卫视,http://58.57.40.22:9901/tsfile/live/1033_1.m3u8
|
安徽卫视,http://58.57.40.22:9901/tsfile/live/1033_1.m3u8
|
||||||
安徽卫视,http://110.53.52.63:8888/newlive/live/hls/24/live.m3u8
|
安徽卫视,http://110.53.52.63:8888/newlive/live/hls/24/live.m3u8
|
||||||
安徽卫视,http://183.11.239.36:808/hls/40/index.m3u8
|
安徽卫视,http://183.11.239.36:808/hls/40/index.m3u8
|
||||||
安徽影视,http://112.30.194.221:20080/live/d18ff95cb1fb4bbcb56215e189fc12be/hls.m3u8
|
安徽卫视,http://120.76.248.139/live/bfgd/4200000096.m3u8
|
||||||
安徽影视,http://112.30.194.221:20080/live/d18ff95cb1fb4bbcb56215e189fc12be/hls.m3u8?zanhd#http://112.30.194.221:20080/live/d18ff95cb1fb4bbcb56215e189fc12be/hls.m3u8#http://112.30.194.221:20080/live/d18ff95cb1fb4bbcb56215e189fc12be.flv
|
|
||||||
安徽影视,http://112.30.194.221:20080/live/d18ff95cb1fb4bbcb56215e189fc12be/hls.m3u8?zanhd
|
|
||||||
安徽影视,http://112.30.194.221:20080/live/d18ff95cb1fb4bbcb56215e189fc12be.flv
|
|
||||||
安徽影院,http://112.30.194.221:20080/live/d18ff95cb1fb4bbcb56215e189fc12be/hls.m3u8?zanhd,
|
|
||||||
安徽经济生活,http://112.30.194.221:20080/live/eac499adad7b49ff9cfa79ba84693959/hls.m3u8
|
|
||||||
安徽经济生活,http://112.30.194.221:20080/live/eac499adad7b49ff9cfa79ba84693959/hls.m3u8#http://112.30.194.221:20080/live/eac499adad7b49ff9cfa79ba84693959/hls.m3u8?zanhd#http://112.30.194.221:20080/live/eac499adad7b49ff9cfa79ba84693959.flv
|
|
||||||
安徽经济生活,http://112.30.194.221:20080/live/eac499adad7b49ff9cfa79ba84693959/hls.m3u8?zanhd
|
|
||||||
安徽经济生活,http://112.30.194.221:20080/live/eac499adad7b49ff9cfa79ba84693959.flv
|
|
||||||
安徽综艺体育,http://112.30.194.221:20080/live/c41f112b83f644ddb082669501c8ecd3/hls.m3u8
|
|
||||||
安徽综艺体育,http://112.30.194.221:20080/live/c41f112b83f644ddb082669501c8ecd3.flv
|
|
||||||
安徽综艺体育,http://112.30.194.221:20080/live/c41f112b83f644ddb082669501c8ecd3/hls.m3u8?zanhd%EF%BC%9F%E4%B8%96%E7%95%8C%E6%9D%AF%E4%B8%96%E7%95%8C%E6%9D%AF
|
|
||||||
安徽综艺体育,http://112.30.194.221:20080/live/c41f112b83f644ddb082669501c8ecd3/hls.m3u8?zanhd
|
|
||||||
家庭影院,http://60.172.130.146:352/tsfile/live/1010_1.m3u8?key=txiptv&playlive=1&authid=0
|
家庭影院,http://60.172.130.146:352/tsfile/live/1010_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
少儿动画,http://218.15.183.23:9901/tsfile/live/23045_1.m3u8
|
||||||
|
少儿动画,http://61.138.128.226:19901/tsfile/live/1017_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
山东体育,http://58.57.40.22:9901/tsfile/live/1020_1.m3u8
|
山东体育,http://58.57.40.22:9901/tsfile/live/1020_1.m3u8
|
||||||
山东体育,http://61.156.228.12:8154/tsfile/live/1006_1.m3u8
|
山东体育,http://124.128.73.58:9901/tsfile/live/1001_1.m3u8
|
||||||
山东体育,http://123.130.84.106:8154/tsfile/live/1006_1.m3u8
|
山东体育,http://123.130.84.106:8154/tsfile/live/1006_1.m3u8
|
||||||
山东农科,http://58.57.40.22:9901/tsfile/live/1022_1.m3u8
|
山东农科,http://58.57.40.22:9901/tsfile/live/1022_1.m3u8
|
||||||
山东卫视,http://39.164.160.249:9901/tsfile/live/0131_1.m3u8
|
|
||||||
山东卫视,http://110.53.52.63:8888/newlive/live/hls/29/live.m3u8
|
山东卫视,http://110.53.52.63:8888/newlive/live/hls/29/live.m3u8
|
||||||
山东卫视,http://183.11.239.36:808/hls/43/index.m3u8
|
山东卫视,http://183.11.239.36:808/hls/43/index.m3u8
|
||||||
山东少儿,http://111.14.181.15:9901/tsfile/live/1005_1.m3u8
|
|
||||||
山东少儿,http://58.57.40.22:9901/tsfile/live/1024_1.m3u8
|
山东少儿,http://58.57.40.22:9901/tsfile/live/1024_1.m3u8
|
||||||
山东少儿,http://123.132.233.194:352/tsfile/live/1002_1.m3u8
|
|
||||||
山东少儿,http://123.132.233.194:352/tsfile/live/1002_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
山东少儿,http://123.129.70.178:9901/tsfile/live/1004_1.m3u8?key=txiptv&playlive=1&authid=0
|
山东少儿,http://123.129.70.178:9901/tsfile/live/1004_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
山东教育,http://120.238.94.10:9901/tsfile/live/1062_1.m3u8
|
山东影视,http://124.128.73.58:9901/tsfile/live/1009_1.m3u8
|
||||||
山东教育,http://121.19.134.222:808/tsfile/live/1033_1.m3u8
|
山东影视,http://124.128.73.58:9901/tsfile/live/1009_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
山东教育,http://183.11.239.36:808/hls/72/index.m3u8
|
山东教育,http://183.11.239.36:808/hls/72/index.m3u8
|
||||||
|
山东教育,http://121.19.134.222:808/tsfile/live/1033_1.m3u8
|
||||||
山东教育卫视,http://58.57.40.22:9901/tsfile/live/1026_1.m3u8
|
山东教育卫视,http://58.57.40.22:9901/tsfile/live/1026_1.m3u8
|
||||||
山东教育卫视,http://120.76.248.139/live/bfgd/4200000112.m3u8
|
山东教育卫视,http://120.76.248.139/live/bfgd/4200000112.m3u8
|
||||||
山东教育卫视,http://123.132.233.194:352/tsfile/live/1003_1.m3u8
|
山东教育卫视,http://39.134.64.87:6610/PLTV/88888888/224/3221225655/index.m3u8?IASHttpSessionId=
|
||||||
山东文旅,http://58.57.40.22:9901/tsfile/live/1023_1.m3u8
|
山东文旅,http://58.57.40.22:9901/tsfile/live/1023_1.m3u8
|
||||||
山东文旅,http://60.209.125.254:352/tsfile/live/1004_1.m3u8?ace
|
山东文旅,http://60.209.125.254:352/tsfile/live/1004_1.m3u8?ace
|
||||||
山东文旅,http://221.2.148.205:8154/tsfile/live/1004_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
山东新闻,http://221.2.148.205:8154/tsfile/live/1002_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
山东新闻,http://123.129.70.178:9901/tsfile/live/1000_1.m3u8?key=txiptv&playlive=1&authid=0
|
山东新闻,http://123.129.70.178:9901/tsfile/live/1000_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
山东生活,http://58.57.40.22:9901/tsfile/live/1018_1.m3u8
|
山东生活,http://58.57.40.22:9901/tsfile/live/1018_1.m3u8
|
||||||
山东生活,http://123.129.70.178:9901/tsfile/live/1002_1.m3u8?key=txiptv&playlive=1&authid=0
|
山东生活,http://123.129.70.178:9901/tsfile/live/1002_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
山东生活,http://221.2.148.205:8154/tsfile/live/1005_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
山东综艺,http://123.129.70.178:9901/tsfile/live/1001_1.m3u8
|
|
||||||
山东综艺,http://58.57.40.22:9901/tsfile/live/1021_1.m3u8
|
山东综艺,http://58.57.40.22:9901/tsfile/live/1021_1.m3u8
|
||||||
|
山东综艺,http://123.129.70.178:9901/tsfile/live/1001_1.m3u8
|
||||||
山东综艺,http://124.128.73.58:9901/tsfile/live/1002_1.m3u8
|
山东综艺,http://124.128.73.58:9901/tsfile/live/1002_1.m3u8
|
||||||
山东综艺,http://123.132.233.194:352/tsfile/live/1000_1.m3u8
|
山东综艺,http://124.128.73.58:9901/tsfile/live/1002_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
山东综艺,http://221.2.148.205:8154/tsfile/live/1003_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
山东齐鲁,http://61.156.228.12:8154/tsfile/live/1001_1.m3u8
|
山东齐鲁,http://61.156.228.12:8154/tsfile/live/1001_1.m3u8
|
||||||
山东齐鲁,http://111.14.181.15:9901/tsfile/live/1000_1.m3u8
|
|
||||||
山东齐鲁,http://123.130.84.106:8154/tsfile/live/1001_1.m3u8
|
山东齐鲁,http://123.130.84.106:8154/tsfile/live/1001_1.m3u8
|
||||||
山东齐鲁,http://123.132.233.194:352/tsfile/live/1019_1.m3u8
|
|
||||||
山东齐鲁,http://124.128.73.58:9901/tsfile/live/1000_1.m3u8
|
山东齐鲁,http://124.128.73.58:9901/tsfile/live/1000_1.m3u8
|
||||||
|
山东齐鲁,http://61.156.228.12:8154/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
山东齐鲁,http://123.130.84.106:8154/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
山西卫视,http://110.53.52.63:8888/newlive/live/hls/43/live.m3u8
|
山西卫视,http://110.53.52.63:8888/newlive/live/hls/43/live.m3u8
|
||||||
山西卫视,http://183.11.239.36:808/hls/59/index.m3u8
|
山西卫视,http://183.11.239.36:808/hls/59/index.m3u8
|
||||||
山西卫视,http://120.76.248.139/live/bfgd/4200000109.m3u8
|
山西卫视,http://120.76.248.139/live/bfgd/4200000109.m3u8
|
||||||
山西影视,http://60.223.224.176:8888/newlive/live/hls/54/live.m3u8
|
山西影视,http://60.223.224.176:8888/newlive/live/hls/54/live.m3u8
|
||||||
|
巴音郭楞州,http://124.88.144.73:1935/live/jjsh/playlist.m3u8#@http://202.107.188.141:5002/shiheziyinshiwenti_hdgq.m3u8?token=guoziyun#@http://202.107.188.139:5002/shiheziyinshiwenti_hdcq.m3u8?token=guoziyun
|
||||||
广东体育,http://120.238.94.10:9901/tsfile/live/1012_1.m3u8
|
广东体育,http://120.238.94.10:9901/tsfile/live/1012_1.m3u8
|
||||||
广东体育,http://121.33.239.242:9901/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
|
广东体育,http://218.13.14.6:60050/tsfile/live/1021_1.m3u8
|
||||||
|
广东体育,http://218.13.170.98:9901/tsfile/live/0019_1.m3u8
|
||||||
|
广东体育,http://218.15.183.23:9901/tsfile/live/23012_1.m3u8
|
||||||
|
广东体育,http://183.237.95.108:9901/tsfile/live/1033_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
广东体育,http://183.11.239.36:808/hls/2/index.m3u8
|
广东体育,http://183.11.239.36:808/hls/2/index.m3u8
|
||||||
广东体育,http://120.238.94.82:9901/tsfile/live/1012_1.m3u8
|
广东体育,http://120.238.94.82:9901/tsfile/live/1012_1.m3u8
|
||||||
广东体育,http://218.15.183.23:9901/tsfile/live/23012_1.m3u8
|
广东体育,http://119.32.12.17:2901/udp/224.1.100.34:11111
|
||||||
广东体育,http://218.13.170.98:9901/tsfile/live/0019_1.m3u8
|
广东体育,http://120.198.101.106:9901/tsfile/live/1012_1.m3u8?key=txiptv
|
||||||
广东公共,http://218.13.14.6:60050/tsfile/live/1020_1.m3u8
|
广东公共,http://218.13.14.6:60050/tsfile/live/1020_1.m3u8
|
||||||
广东卫视,http://39.164.160.249:9901/tsfile/live/0125_1.m3u8
|
|
||||||
广东卫视,http://58.57.40.22:9901/tsfile/live/1039_1.m3u8
|
广东卫视,http://58.57.40.22:9901/tsfile/live/1039_1.m3u8
|
||||||
广东卫视,http://60.223.224.176:8888/newlive/live/hls/20/live.m3u8
|
广东卫视,http://60.223.224.176:8888/newlive/live/hls/20/live.m3u8
|
||||||
|
广东卫视,http://110.53.52.63:8888/newlive/live/hls/20/live.m3u8
|
||||||
|
广东卫视,http://183.11.239.36:808/hls/80/index.m3u8
|
||||||
广东卫视,http://218.13.14.6:60050/tsfile/live/1017_1.m3u8
|
广东卫视,http://218.13.14.6:60050/tsfile/live/1017_1.m3u8
|
||||||
|
广东少儿,http://183.11.239.36:808/hls/175/index.m3u8
|
||||||
|
广东影视,http://183.11.239.36:808/hls/6/index.m3u8
|
||||||
|
广东新闻,http://218.13.14.6:60050/tsfile/live/1019_1.m3u8
|
||||||
广东新闻,http://120.238.94.10:9901/tsfile/live/1010_1.m3u8
|
广东新闻,http://120.238.94.10:9901/tsfile/live/1010_1.m3u8
|
||||||
广东新闻,http://183.11.239.36:808/hls/5/index.m3u8
|
|
||||||
广东新闻,http://218.15.183.23:9901/tsfile/live/23010_1.m3u8
|
广东新闻,http://218.15.183.23:9901/tsfile/live/23010_1.m3u8
|
||||||
广东民生,http://119.32.12.32:2901/udp/224.1.100.4:11111
|
广东民生,http://183.11.239.36:808/hls/18/index.m3u8
|
||||||
广东民生,http://183.237.95.108:9901/tsfile/live/1032_1.m3u8?key=txiptv&playlive=0&authid=0
|
广东民生,http://119.32.12.17:2901/udp/224.1.100.4:11111
|
||||||
|
广东民生,http://121.11.160.7:9901/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
广东民生,http://14.212.185.146:9901/tsfile/live/1002_1.m3u8?key=txiptv&playlive=1&authid=0
|
广东民生,http://14.212.185.146:9901/tsfile/live/1002_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
广东民生,http://183.237.95.108:9901/tsfile/live/1032_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
广东珠江,http://218.13.14.6:60050/tsfile/live/1018_1.m3u8
|
广东珠江,http://218.13.14.6:60050/tsfile/live/1018_1.m3u8
|
||||||
广东珠江,http://218.15.183.23:9901/tsfile/live/23009_1.m3u8
|
广东珠江,http://218.15.183.23:9901/tsfile/live/23009_1.m3u8
|
||||||
广州影视,http://125.89.163.44:8888/udp/239.253.43.73:5146
|
广东珠江,http://183.11.239.36:808/hls/83/index.m3u8
|
||||||
广州新闻,http://119.32.12.32:2901/udp/224.1.100.38:11111
|
广东珠江,http://120.238.94.10:9901/tsfile/live/1009_1.m3u8
|
||||||
|
广州新闻,http://125.89.163.44:8888/udp/239.253.43.72:5146
|
||||||
广州新闻,http://119.32.12.17:2901/udp/224.1.100.38:11111
|
广州新闻,http://119.32.12.17:2901/udp/224.1.100.38:11111
|
||||||
广州竞赛,http://119.32.12.32:2901/udp/224.1.100.105:11111
|
广州竞赛,http://119.32.12.17:2901/udp/224.1.100.105:11111
|
||||||
广州综合,http://125.89.163.44:8888/udp/239.253.43.71:5146
|
广州竞赛,http://125.89.163.44:8888/udp/239.253.43.75:5146
|
||||||
广州综合,http://119.32.12.32:2901/udp/224.1.100.36:11111
|
广州综合,http://119.32.12.17:2901/udp/224.1.100.36:11111
|
||||||
广西卫视,http://58.57.40.22:9901/tsfile/live/1049_1.m3u8
|
广西卫视,http://58.57.40.22:9901/tsfile/live/1049_1.m3u8
|
||||||
广西卫视,http://111.160.17.2:59901/tsfile/live/0001_44.m3u8
|
|
||||||
广西卫视,http://110.53.52.63:8888/newlive/live/hls/25/live.m3u8
|
广西卫视,http://110.53.52.63:8888/newlive/live/hls/25/live.m3u8
|
||||||
|
广西卫视,http://183.11.239.36:808/hls/56/index.m3u8
|
||||||
|
广西影视,http://116.9.204.242:9901/tsfile/live/0124_1.m3u8
|
||||||
|
广西影视,http://116.9.204.242:9901/tsfile/live/0124_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
广西新闻,http://116.9.204.242:9901/tsfile/live/1001_1.m3u8
|
广西新闻,http://116.9.204.242:9901/tsfile/live/1001_1.m3u8
|
||||||
康巴卫视,http://218.89.240.144:59901/tsfile/live/1010_1.m3u8
|
广西新闻,http://182.91.124.224:9901/tsfile/live/1006_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
康巴卫视,http://39.134.66.66/PLTV/88888888/224/3221225527/1.m3u8
|
康巴卫视,http://39.134.66.66/PLTV/88888888/224/3221225527/1.m3u8
|
||||||
康巴卫视,http://39.134.65.166/PLTV/88888888/224/3221225527/1.m3u8
|
康巴卫视,http://39.134.65.166/PLTV/88888888/224/3221225527/1.m3u8
|
||||||
康巴卫视,http://61.157.139.15:9901/tsfile/live/2415_1.m3u8?key=txiptv&playlive=1&authid=0
|
康巴卫视,http://61.157.139.15:9901/tsfile/live/2415_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
康巴卫视,http://36.105.100.208:35455/itv/1000000005000266002.m3u8?cdn=ystenlive
|
康巴卫视,http://36.105.100.208:35455/itv/1000000005000266002.m3u8?cdn=ystenlive
|
||||||
延边卫视,http://120.76.248.139/live/bfgd/4200000117.m3u8
|
延边卫视,http://61.138.128.226:19901/tsfile/live/1008_1.m3u8
|
||||||
延边卫视,http://39.134.67.108/PLTV/88888888/224/3221226040/1.m3u8
|
延边卫视,http://39.134.67.108/PLTV/88888888/224/3221226040/1.m3u8
|
||||||
延边卫视,http://36.105.100.208:35455/itv/1000000005000266008.m3u8?cdn=ystenlive
|
延边卫视,http://39.134.64.87:6610/PLTV/88888888/224/3221226516/index.m3u8?IASHttpSessionId=
|
||||||
当涂新闻综合,http://112.30.194.221:20080/live/4f38ef59c79e4d4bac1a995681102573/hls.m3u8
|
延边卫视,http://120.76.248.139/live/bfgd/4200000117.m3u8
|
||||||
快乐垂钓,http://36.105.100.208:35455/itv/5000000011000031206.m3u8?cdn=bestzb
|
快乐垂钓,http://36.105.100.208:35455/itv/5000000011000031206.m3u8?cdn=bestzb
|
||||||
新疆卫视,http://39.164.160.249:9901/tsfile/live/0110_1.m3u8
|
|
||||||
新疆卫视,http://58.57.40.22:9901/tsfile/live/1055_1.m3u8
|
新疆卫视,http://58.57.40.22:9901/tsfile/live/1055_1.m3u8
|
||||||
新疆卫视,http://110.53.52.63:8888/newlive/live/hls/37/live.m3u8
|
新疆卫视,http://110.53.52.63:8888/newlive/live/hls/37/live.m3u8
|
||||||
新疆卫视,http://183.11.239.36:808/hls/65/index.m3u8
|
新疆卫视,http://183.11.239.36:808/hls/65/index.m3u8
|
||||||
@@ -342,19 +373,19 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
|
|||||||
新疆玛纳斯综合,http://218.84.127.245:1026/hls/main1/playlist.m3u8?zxinjd
|
新疆玛纳斯综合,http://218.84.127.245:1026/hls/main1/playlist.m3u8?zxinjd
|
||||||
新疆石河子影视文体,http://124.88.144.73:1935/live/jjsh/playlist.m3u8
|
新疆石河子影视文体,http://124.88.144.73:1935/live/jjsh/playlist.m3u8
|
||||||
新疆石河子新闻综合,http://124.88.144.73:1935/live/xwzh/playlist.m3u8
|
新疆石河子新闻综合,http://124.88.144.73:1935/live/xwzh/playlist.m3u8
|
||||||
新疆石河子经济生活,http://124.88.144.73:1935/live/dywt/playlist.m3u8
|
|
||||||
新视觉,http://120.76.248.139/live/bfgd/4200000249.m3u8
|
新视觉,http://120.76.248.139/live/bfgd/4200000249.m3u8
|
||||||
星空卫视,http://218.202.220.2:5000/nn_live.ts?id=STARTV#rtmp://58.200.131.2:1935/livetv/startv#rtmp://ivi.bupt.edu.cn:1935/livetv/startv
|
旅游卫视,http://124.128.73.58:9901/tsfile/live/0114_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
朝阳新闻综合,http://120.76.248.139/live/bfgd/4200000282.m3u8
|
星空卫视,http://122.224.58.42:85/tsfile/live/1024_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
杭州明珠,http://120.198.101.106:9901/tsfile/live/1008_1.m3u8?key=txiptv
|
杭州明珠,http://120.198.101.106:9901/tsfile/live/1008_1.m3u8?key=txiptv
|
||||||
梨园频道,http://61.163.181.78:9901/tsfile/live/1006_1.m3u8
|
梨园,http://61.163.181.78:9901/tsfile/live/1006_1.m3u8
|
||||||
梨园频道,http://60.2.190.206:4000/udp/239.253.92.152:8086
|
梨园频道,http://60.2.190.206:4000/udp/239.253.92.152:8086
|
||||||
|
梨园频道,http://60.2.190.206:4000/udp/239.253.93.133:6441
|
||||||
武乡新闻综合,http://60.220.198.84:81/0.m3u8
|
武乡新闻综合,http://60.220.198.84:81/0.m3u8
|
||||||
求索动物,http://39.134.65.106/PLTV/88888888/224/3221225730/1.m3u8?
|
求索动物,http://39.134.65.106/PLTV/88888888/224/3221225730/1.m3u8?
|
||||||
求索生活,http://39.134.65.106/PLTV/88888888/224/3221225715/1.m3u8?
|
求索生活,http://39.134.65.106/PLTV/88888888/224/3221225715/1.m3u8?
|
||||||
求索科学,http://39.134.65.106/PLTV/88888888/224/3221225728/1.m3u8?
|
求索科学,http://39.134.65.106/PLTV/88888888/224/3221225728/1.m3u8?
|
||||||
求索纪录,http://60.2.190.206:4000/udp/239.253.93.236:6414
|
|
||||||
求索纪录,http://39.134.65.106/PLTV/88888888/224/3221225713/1.m3u8?
|
求索纪录,http://39.134.65.106/PLTV/88888888/224/3221225713/1.m3u8?
|
||||||
|
求索纪录,http://60.2.190.206:4000/udp/239.253.93.236:6414
|
||||||
汕头文旅,http://125.89.163.44:8888/udp/239.77.1.132:5146
|
汕头文旅,http://125.89.163.44:8888/udp/239.77.1.132:5146
|
||||||
汕头经济,http://125.89.163.44:8888/udp/239.77.1.131:5146
|
汕头经济,http://125.89.163.44:8888/udp/239.77.1.131:5146
|
||||||
汕头综合,http://125.89.163.44:8888/udp/239.77.1.130:5146
|
汕头综合,http://125.89.163.44:8888/udp/239.77.1.130:5146
|
||||||
@@ -362,31 +393,37 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
|
|||||||
江夏新闻综合,http://59.175.226.142:280/gb28181/xwzh.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD]
|
江夏新闻综合,http://59.175.226.142:280/gb28181/xwzh.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD]
|
||||||
江津新闻综合,http://222.179.155.21:1935/ch1.m3u8
|
江津新闻综合,http://222.179.155.21:1935/ch1.m3u8
|
||||||
江津新闻综合,http://222.179.155.21:1935/ch1.m3u8?zzhongqd
|
江津新闻综合,http://222.179.155.21:1935/ch1.m3u8?zzhongqd
|
||||||
江苏卫视,http://39.164.160.249:9901/tsfile/live/0127_1.m3u8
|
|
||||||
江苏卫视,http://58.57.40.22:9901/tsfile/live/1031_1.m3u8
|
江苏卫视,http://58.57.40.22:9901/tsfile/live/1031_1.m3u8
|
||||||
江苏卫视,http://60.223.224.176:8888/newlive/live/hls/21/live.m3u8
|
江苏卫视,http://60.223.224.176:8888/newlive/live/hls/21/live.m3u8
|
||||||
江西卫视,http://39.164.160.249:9901/tsfile/live/0138_1.m3u8
|
江苏卫视,http://110.53.52.63:8888/newlive/live/hls/21/live.m3u8
|
||||||
|
江苏卫视,http://183.11.239.36:808/hls/38/index.m3u8
|
||||||
|
江苏城市,http://58.210.168.86:10800/newlive/live/hls/52/live.m3u8
|
||||||
|
江苏城市,http://58.213.65.146:352/tsfile/live/0120_3.m3u8?key=txiptv
|
||||||
|
江苏城市,http://221.226.215.162:352/tsfile/live/0120_3.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
江苏城市,http://58.220.219.14:9901/tsfile/live/0120_3.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
江苏影视,http://221.226.215.162:352/tsfile/live/0109_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
江苏教育,http://58.221.214.82:9901/tsfile/live/0012_2.m3u8?key=txiptv
|
||||||
江西卫视,http://58.57.40.22:9901/tsfile/live/1043_1.m3u8
|
江西卫视,http://58.57.40.22:9901/tsfile/live/1043_1.m3u8
|
||||||
江西卫视,http://111.160.17.2:59901/tsfile/live/0001_43.m3u8
|
江西卫视,http://110.53.52.63:8888/newlive/live/hls/41/live.m3u8
|
||||||
|
江西卫视,http://120.76.248.139/live/bfgd/4200000098.m3u8
|
||||||
|
江西卫视,http://47.122.125.40:6666/hls/jxhd.m3u8
|
||||||
江西教育,http://58.17.48.228:808/hls/24/index.m3u8
|
江西教育,http://58.17.48.228:808/hls/24/index.m3u8
|
||||||
江门侨乡生活,http://125.89.163.44:8888/udp/239.77.0.202:5146
|
|
||||||
江门综合,http://125.89.163.44:8888/udp/239.77.0.201:5146
|
江门综合,http://125.89.163.44:8888/udp/239.77.0.201:5146
|
||||||
河北农民,http://121.19.134.222:808/tsfile/live/1005_1.m3u8
|
|
||||||
河北农民,http://124.239.135.194:11080/live/hbnm/index.m3u8
|
河北农民,http://124.239.135.194:11080/live/hbnm/index.m3u8
|
||||||
河北卫视,http://39.164.160.249:9901/tsfile/live/0117_1.m3u8
|
河北农民,http://121.19.134.222:808/tsfile/live/1005_1.m3u8
|
||||||
河北卫视,http://58.57.40.22:9901/tsfile/live/1044_1.m3u8
|
河北卫视,http://58.57.40.22:9901/tsfile/live/1044_1.m3u8
|
||||||
河北卫视,http://111.160.17.2:59901/tsfile/live/0001_39.m3u8
|
河北卫视,http://183.11.239.36:808/hls/54/index.m3u8
|
||||||
|
河北卫视,http://120.76.248.139/live/bfgd/4200000108.m3u8
|
||||||
河北少儿科教,http://124.239.135.194:11080/live/sekj/index.m3u8
|
河北少儿科教,http://124.239.135.194:11080/live/sekj/index.m3u8
|
||||||
河北都市,http://124.239.135.194:11080/live/hbds/index.m3u8
|
河北都市,http://124.239.135.194:11080/live/hbds/index.m3u8
|
||||||
|
河北都市,http://121.19.134.222:808/tsfile/live/1001_1.m3u8
|
||||||
河北都市,http://121.19.134.222:808/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
|
河北都市,http://121.19.134.222:808/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
河南卫视,http://39.164.160.249:9901/tsfile/live/0139_1.m3u8
|
|
||||||
河南卫视,http://58.57.40.22:9901/tsfile/live/1048_1.m3u8
|
河南卫视,http://58.57.40.22:9901/tsfile/live/1048_1.m3u8
|
||||||
河南卫视,http://60.223.224.176:8888/newlive/live/hls/32/live.m3u8
|
河南卫视,http://60.223.224.176:8888/newlive/live/hls/32/live.m3u8
|
||||||
河南卫视,http://111.160.17.2:59901/tsfile/live/0001_47.m3u8
|
河南卫视,http://110.53.52.63:8888/newlive/live/hls/32/live.m3u8
|
||||||
|
河南卫视,http://183.11.239.36:808/hls/51/index.m3u8
|
||||||
河南民生,http://61.163.181.78:85/tsfile/live/1005_1.m3u8?key=txiptv&playlive=1&authid=0
|
河南民生,http://61.163.181.78:85/tsfile/live/1005_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
河南都市,http://61.163.181.78:9901/tsfile/live/1004_1.m3u8
|
河南都市,http://61.163.181.78:9901/tsfile/live/1004_1.m3u8
|
||||||
河源公共,http://125.89.163.44:8888/udp/239.253.43.214:5146
|
|
||||||
河源综合,http://125.89.163.44:8888/udp/239.253.43.213:5146
|
|
||||||
津南一套,http://61.147.106.103/play.jinnantv.top/live/JNTV1.m3u8?ztianjd&wsSession=4e59297ef5846f4a7cf02eb3-172672213891355&wsIPSercert=6d426cba8b106cdec9147b1e2a9ace7c&wsiphost=local&wsBindIP=1
|
津南一套,http://61.147.106.103/play.jinnantv.top/live/JNTV1.m3u8?ztianjd&wsSession=4e59297ef5846f4a7cf02eb3-172672213891355&wsIPSercert=6d426cba8b106cdec9147b1e2a9ace7c&wsiphost=local&wsBindIP=1
|
||||||
济南影视,http://124.128.73.58:9901/tsfile/live/1005_1.m3u8
|
济南影视,http://124.128.73.58:9901/tsfile/live/1005_1.m3u8
|
||||||
济南影视,http://124.128.73.58:9901/tsfile/live/1005_1.m3u8?key=txiptv&playlive=1&authid=0
|
济南影视,http://124.128.73.58:9901/tsfile/live/1005_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
@@ -394,123 +431,125 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
|
|||||||
济南综合,http://124.128.73.58:9901/tsfile/live/1003_1.m3u8?key=txiptv&playlive=1&authid=0
|
济南综合,http://124.128.73.58:9901/tsfile/live/1003_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
济南都市,http://124.128.73.58:9901/tsfile/live/1004_1.m3u8
|
济南都市,http://124.128.73.58:9901/tsfile/live/1004_1.m3u8
|
||||||
济南都市,http://124.128.73.58:9901/tsfile/live/1004_1.m3u8?key=txiptv&playlive=1&authid=0
|
济南都市,http://124.128.73.58:9901/tsfile/live/1004_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
济宁公共,http://111.14.181.15:9901/tsfile/live/1009_1.m3u8?key=tvbox6_com&playlive=1&authid=0
|
浙江卫视,http://58.57.40.22:9901/tsfile/live/1029_1.m3u8
|
||||||
济宁综合,http://111.14.181.15:9901/tsfile/live/1007_1.m3u8
|
|
||||||
济宁综合,http://111.14.181.15:9901/tsfile/live/1007_1.m3u8?key=tvbox6_com&playlive=1&authid=0
|
|
||||||
浙江卫视,http://60.223.224.176:8888/newlive/live/hls/23/live.m3u8
|
|
||||||
海南卫视,http://220.164.192.48:50085/tsfile/live/1003_1.m3u8
|
|
||||||
海南卫视,http://58.57.40.22:9901/tsfile/live/1000_1.m3u8
|
海南卫视,http://58.57.40.22:9901/tsfile/live/1000_1.m3u8
|
||||||
海南卫视,http://183.11.239.36:808/hls/124/index.m3u8
|
|
||||||
海南卫视,http://120.76.248.139/live/bfgd/4200000473.m3u8
|
海南卫视,http://120.76.248.139/live/bfgd/4200000473.m3u8
|
||||||
|
海南卫视,http://58.210.168.86:10800/newlive/live/hls/28/live.m3u8
|
||||||
海南卫视,http://36.32.174.67:60080/newlive/live/hls/46/live.m3u8
|
海南卫视,http://36.32.174.67:60080/newlive/live/hls/46/live.m3u8
|
||||||
海峡卫视,http://38.64.72.148:80/hls/modn/list/4009/chunklist0.m3u8
|
海南卫视,http://113.57.111.4:1111/tsfile/live/1031_1.m3u8
|
||||||
|
海峡卫视,http://38.64.72.148:80/hls/modn/list/4009/playlist.m3u8
|
||||||
涡阳新闻综合,http://220.180.124.18:888/live/ch0.m3u8
|
涡阳新闻综合,http://220.180.124.18:888/live/ch0.m3u8
|
||||||
淮南公共,http://112.30.194.221:20080/live/6e43da3335a640b3a73c948fccf935c5/hls.m3u8
|
|
||||||
深圳卫视,http://58.57.40.22:9901/tsfile/live/1036_1.m3u8
|
深圳卫视,http://58.57.40.22:9901/tsfile/live/1036_1.m3u8
|
||||||
深圳卫视,http://111.160.17.2:59901/tsfile/live/0001_49.m3u8
|
|
||||||
深圳卫视,http://110.53.52.63:8888/newlive/live/hls/27/live.m3u8
|
深圳卫视,http://110.53.52.63:8888/newlive/live/hls/27/live.m3u8
|
||||||
深圳卫视,http://183.11.239.36:808/hls/45/index.m3u8
|
深圳卫视,http://183.11.239.36:808/hls/45/index.m3u8
|
||||||
深圳少儿,http://183.11.239.36:808/hls/157/index.m3u8
|
深圳卫视,http://38.64.72.148:80/hls/modn/list/4007/playlist.m3u8
|
||||||
深圳少儿,http://125.89.163.44:8888/udp/239.77.1.244:5146
|
|
||||||
深圳移动电视,http://125.89.163.44:8888/udp/239.77.1.175:5146
|
深圳移动电视,http://125.89.163.44:8888/udp/239.77.1.175:5146
|
||||||
|
深圳财经生活,http://183.11.239.36:808/hls/151/index.m3u8
|
||||||
游戏风云,http://36.105.100.208:35455/itv/5000000011000031114.m3u8?cdn=bestzb
|
游戏风云,http://36.105.100.208:35455/itv/5000000011000031114.m3u8?cdn=bestzb
|
||||||
湖北卫视,http://58.57.40.22:9901/tsfile/live/1038_1.m3u8
|
湖北卫视,http://58.57.40.22:9901/tsfile/live/1038_1.m3u8
|
||||||
湖北卫视,http://60.223.224.176:8888/newlive/live/hls/33/live.m3u8
|
湖北卫视,http://60.223.224.176:8888/newlive/live/hls/33/live.m3u8
|
||||||
湖北卫视,http://110.53.52.63:8888/newlive/live/hls/33/live.m3u8
|
湖北卫视,http://120.76.248.139/live/bfgd/4200000102.m3u8
|
||||||
|
湖北卫视,http://47.122.125.40:6666/hls/hbhd.m3u8
|
||||||
|
湖北卫视,http://223.241.247.214:9901/tsfile/live/0132_1.m3u8
|
||||||
湖北垄上,http://58.19.43.46:9901/tsfile/live/1015_1.m3u8
|
湖北垄上,http://58.19.43.46:9901/tsfile/live/1015_1.m3u8
|
||||||
湖北垄上,http://113.57.20.158:9901/tsfile/live/1015_1.m3u8
|
|
||||||
湖北垄上,http://119.36.148.115:59901/tsfile/live/1006_1.m3u8
|
|
||||||
湖北垄上,http://113.57.20.158:9901/tsfile/live/1015_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
湖北影视,http://113.57.20.158:9901/tsfile/live/1016_1.m3u8
|
|
||||||
湖北影视,http://58.19.43.46:9901/tsfile/live/1016_1.m3u8
|
湖北影视,http://58.19.43.46:9901/tsfile/live/1016_1.m3u8
|
||||||
湖北影视,http://113.57.20.158:9901/tsfile/live/1016_1.m3u8?key=txiptv&playlive=1&authid=0
|
湖北影视,http://113.57.20.158:9901/tsfile/live/1016_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
湖北经视,http://58.19.43.46:9901/tsfile/live/1017_1.m3u8
|
湖北经视,http://58.19.43.46:9901/tsfile/live/1017_1.m3u8
|
||||||
湖北经视,http://113.57.93.165:9900/tsfile/live/1017_1.m3u8
|
湖北经视,http://113.57.93.165:9900/tsfile/live/1017_1.m3u8
|
||||||
湖北经视,http://119.36.148.115:59901/tsfile/live/1004_1.m3u8?key=txiptv
|
|
||||||
湖北经视,http://113.57.93.165:9900/tsfile/live/1017_1.m3u8?key=txiptv&playlive=1&authid=0
|
湖北经视,http://113.57.93.165:9900/tsfile/live/1017_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
湖北综合,http://58.19.133.144:9901
|
湖北综合,http://58.19.133.144:9901
|
||||||
湖南公共,http://116.128.242.83:9901/tsfile/live/0117_1.m3u8
|
湖南公共,http://116.128.242.83:9901/tsfile/live/0117_1.m3u8
|
||||||
湖南公共,http://116.128.242.83:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0
|
湖南公共,http://116.128.242.83:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
湖南卫视,http://39.164.160.249:9901/tsfile/live/0128_1.m3u8
|
|
||||||
湖南卫视,http://58.57.40.22:9901/tsfile/live/1028_1.m3u8
|
湖南卫视,http://58.57.40.22:9901/tsfile/live/1028_1.m3u8
|
||||||
|
湖南卫视,http://60.223.224.176:8888/newlive/live/hls/22/live.m3u8
|
||||||
|
湖南卫视,http://110.53.52.63:8888/newlive/live/hls/22/live.m3u8
|
||||||
湖南娱乐,http://116.128.243.121:85/tsfile/live/1002_1.m3u8?key=txiptv&playlive=1&authid=0
|
湖南娱乐,http://116.128.243.121:85/tsfile/live/1002_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
湖南娱乐,http://116.128.242.83:9901/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
湖南电影,http://110.53.52.63:8888/newlive/live/hls/50/live.m3u8
|
||||||
湖南电影,http://116.128.242.83:9901/tsfile/live/1009_1.m3u8
|
湖南电影,http://116.128.242.83:9901/tsfile/live/1009_1.m3u8
|
||||||
|
湖南电视剧,http://116.128.242.83:9901/tsfile/live/0120_1.m3u8
|
||||||
湖南电视剧,http://116.128.242.83:9901/tsfile/live/0120_1.m3u8?key=txiptv&playlive=1&authid=0
|
湖南电视剧,http://116.128.242.83:9901/tsfile/live/0120_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
湖南经视,http://110.53.218.182:9902/tsfile/live/1004_1.m3u8
|
湖南经视,http://110.53.218.182:9902/tsfile/live/1004_1.m3u8
|
||||||
湖南经视,http://116.128.242.83:9901/tsfile/live/0131_1.m3u8
|
湖南经视,http://116.128.242.83:9901/tsfile/live/0131_1.m3u8
|
||||||
湖南经视,http://116.128.242.83:9901/tsfile/live/0131_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
湖南经视,http://116.128.243.121:85/tsfile/live/1000_1.m3u8?key=txiptv&playlive=1&authid=0
|
湖南经视,http://116.128.243.121:85/tsfile/live/1000_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
湖南经视,http://116.128.242.83:9901/tsfile/live/0131_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
湖南都市,http://110.53.218.182:9902/tsfile/live/0127_1.m3u8
|
湖南都市,http://110.53.218.182:9902/tsfile/live/0127_1.m3u8
|
||||||
湖南都市,http://116.128.243.121:85/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
|
湖南都市,http://116.128.243.121:85/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
湖南都市,http://116.128.242.83:9901/tsfile/live/0139_1.m3u8?key=txiptv&playlive=1&authid=0
|
湖南都市,http://116.128.242.83:9901/tsfile/live/0139_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
漫画解说,http://124.248.69.76:26781/douyu/5907076
|
漫画解说,http://124.248.69.76:26781/douyu/5907076
|
||||||
|
漫画解说,http://61.133.118.228:5001/yy/1382735568
|
||||||
漳浦综合,http://220.161.87.62:8090/hls/0/index.m3u8
|
漳浦综合,http://220.161.87.62:8090/hls/0/index.m3u8
|
||||||
漳浦综合,http://220.161.87.62:8800/hls/0/index.m3u8
|
漳浦综合,http://220.161.87.62:8800/hls/0/index.m3u8
|
||||||
漳浦综合,http://220.161.87.62:8090/hls/0/index.m3u8?zfud
|
漳浦综合,http://220.161.87.62:8090/hls/0/index.m3u8?zfud
|
||||||
炫动卡通,http://218.15.183.23:9901/tsfile/live/23042_1.m3u8
|
炫动卡通,http://218.15.183.23:9901/tsfile/live/23042_1.m3u8
|
||||||
炫动卡通,http://120.198.95.220:9901/tsfile/live/1034_1.m3u8?key=txiptv
|
|
||||||
炫动卡通,http://183.237.95.108:9901/tsfile/live/1100_1.m3u8?key=txiptv&playlive=0&authid=0
|
炫动卡通,http://183.237.95.108:9901/tsfile/live/1100_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
|
炫动卡通,http://120.198.95.220:9901/tsfile/live/1034_1.m3u8?key=txiptv
|
||||||
玛纳斯综合,http://218.84.127.245:1026/hls/main1/playlist.m3u8
|
玛纳斯综合,http://218.84.127.245:1026/hls/main1/playlist.m3u8
|
||||||
|
玛纳斯综合,http://218.84.127.245:1026/hls/main1/playlist.m3u8?zxinjd,
|
||||||
璧山综合,http://222.179.42.129:8181/hls1.m3u8
|
璧山综合,http://222.179.42.129:8181/hls1.m3u8
|
||||||
甘肃卫视,http://58.57.40.22:9901/tsfile/live/1056_1.m3u8
|
甘肃卫视,http://58.57.40.22:9901/tsfile/live/1056_1.m3u8
|
||||||
甘肃卫视,http://110.53.52.63:8888/newlive/live/hls/35/live.m3u8
|
甘肃卫视,http://110.53.52.63:8888/newlive/live/hls/35/live.m3u8
|
||||||
甘肃卫视,http://120.76.248.139/live/bfgd/4200000119.m3u8
|
甘肃卫视,http://120.76.248.139/live/bfgd/4200000119.m3u8
|
||||||
|
甘肃卫视,http://223.241.247.214:9901/tsfile/live/0141_1.m3u8
|
||||||
生活时尚,http://146.56.165.66:7788/TVOD/5000000002000019634/bestzb/index.m3u8
|
生活时尚,http://146.56.165.66:7788/TVOD/5000000002000019634/bestzb/index.m3u8
|
||||||
睛彩广场舞,http://36.105.100.208:35455/itv/2000000003000000062.m3u8?cdn=hnbblive
|
|
||||||
睛彩河北,http://124.239.135.194:11080/live/qchb/index.m3u8
|
睛彩河北,http://124.239.135.194:11080/live/qchb/index.m3u8
|
||||||
睛彩竞技,http://138.2.61.159:5000/2000000003000000060/hnbblive/index.m3u8
|
|
||||||
睛彩竞技,http://138.2.61.159:5000/1000000006000270001/ystenlive/index.m3u8
|
|
||||||
睛彩竞技,http://39.134.65.106/PLTV/88888888/224/3221225897/1.m3u8?
|
睛彩竞技,http://39.134.65.106/PLTV/88888888/224/3221225897/1.m3u8?
|
||||||
睛彩篮球,http://138.2.61.159:5000/2000000003000000061/hnbblive/index.m3u8
|
|
||||||
睛彩篮球,http://138.2.61.159:5000/2000000003000000065/hnbblive/index.m3u8
|
|
||||||
睛彩篮球,http://138.2.61.159:5000/1000000006000270002/ystenlive/index.m3u8
|
|
||||||
睛彩篮球,http://138.2.61.159:5000/1000000006000270006/ystenlive/index.m3u8
|
|
||||||
睛彩篮球,http://36.105.100.208:35455/itv/2000000003000000061.m3u8?cdn=hnbblive
|
睛彩篮球,http://36.105.100.208:35455/itv/2000000003000000061.m3u8?cdn=hnbblive
|
||||||
石家庄新闻综合,http://124.239.135.194:11080/live/sjzxwzh/index.m3u8
|
石家庄新闻综合,http://124.239.135.194:11080/live/sjzxwzh/index.m3u8
|
||||||
|
石河子教育,http://124.88.144.73:1935/live/xwzh/playlist.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD]
|
||||||
|
石河子新闻综合,http://124.88.144.73:1935/live/dywt/playlist.m3u8
|
||||||
福建少儿,http://110.81.206.138:49231/tsfile/live/23030_1.m3u8?key=txiptv&playlive=1&authid=0
|
福建少儿,http://110.81.206.138:49231/tsfile/live/23030_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
福建新闻,http://110.80.17.38:9901/tsfile/live/0122_1.m3u8
|
|
||||||
福建新闻,http://110.81.206.138:49231/tsfile/live/23025_1.m3u8?key=txiptv&playlive=1&authid=0
|
福建新闻,http://110.81.206.138:49231/tsfile/live/23025_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
精品体育,http://146.56.165.66:7788/TVOD/2000000003000000021/hnbblive/index.m3u8
|
福建电视剧,http://110.81.206.138:49231/tsfile/live/23026_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
纪实科教8K,http://111.31.106.140/downflv.brtvcloud.com/8klive/8kliveok.m3u8
|
福建综合,http://110.81.206.138:49231/tsfile/live/23023_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
|
精品体育,http://39.135.133.155:80/PLTV/88888888/224/3221225526/1.m3u8
|
||||||
|
精品体育,http://39.135.133.154:80/PLTV/88888888/224/3221225526/1.m3u8
|
||||||
纬来体育,http://122.117.71.103:8562/纬来体育.m3u8
|
纬来体育,http://122.117.71.103:8562/纬来体育.m3u8
|
||||||
纬来体育,http://122.117.71.103:8562/http/61.222.53.250:8081/hls/75/817/ch59.m3u8
|
纬来体育,http://122.117.71.103:8562/http/61.222.53.250:8081/hls/75/817/ch59.m3u8
|
||||||
纬来电影台,http://122.117.71.103:8554/http/61.222.53.250:8081/hls/69/811/ch35.m3u8
|
纬来电影台,http://122.117.71.103:8554/http/61.222.53.250:8081/hls/69/811/ch35.m3u8
|
||||||
经典动漫,http://61.133.118.228:5001/yy/24180320
|
经典动漫,http://61.133.118.228:5001/yy/24180320
|
||||||
经典电影,http://120.238.94.10:9901/tsfile/live/1040_1.m3u8
|
|
||||||
经典电影,http://61.163.181.78:9901/tsfile/live/1059_1.m3u8
|
经典电影,http://61.163.181.78:9901/tsfile/live/1059_1.m3u8
|
||||||
经典电影,http://61.133.118.228:5001/yy/1356363815
|
经典电影,http://120.238.94.10:9901/tsfile/live/1040_1.m3u8
|
||||||
|
经典电影,http://60.172.130.146:352/tsfile/live/1006_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
绵阳综合,http://119.6.59.216:60033/tsfile/live/1007_1.m3u8?key=txiptv
|
绵阳综合,http://119.6.59.216:60033/tsfile/live/1007_1.m3u8?key=txiptv
|
||||||
美亚电影,http://50.7.234.10:8278/meiyamovie_twn/playlist.m3u8?tid=MD3D6323299363232993&ct=18392&tsum=3f73f541d33abe71140d28ada99a071b
|
|
||||||
苏州文化生活,http://61.155.203.93:5021/live_hls/3/.m3u8
|
苏州文化生活,http://61.155.203.93:5021/live_hls/3/.m3u8
|
||||||
苏州新闻综合,http://61.155.203.93:5021/live_hls/1/.m3u8
|
苏州新闻综合,http://61.155.203.93:5021/live_hls/1/.m3u8
|
||||||
苏州生活资讯,http://61.155.203.93:5021/live_hls/4/.m3u8
|
苏州生活资讯,http://61.155.203.93:5021/live_hls/4/.m3u8
|
||||||
苏州社会经济,http://61.155.203.93:5021/live_hls/2/.m3u8
|
苏州社会经济,http://61.155.203.93:5021/live_hls/2/.m3u8
|
||||||
茂名公共,http://125.89.163.44:8888/udp/239.77.0.207:5146
|
|
||||||
茂名综合,http://125.89.163.44:8888/udp/239.77.0.206:5146
|
|
||||||
荣昌综合,http://183.64.181.25:40023/rongchang01.m3u8
|
荣昌综合,http://183.64.181.25:40023/rongchang01.m3u8
|
||||||
西安1套,http://112.46.85.60:8009/hls/28/index.m3u8
|
西安1套,http://112.46.85.60:8009/hls/28/index.m3u8
|
||||||
西藏卫视,http://110.53.52.63:8888/newlive/live/hls/36/live.m3u8
|
西藏卫视,http://110.53.52.63:8888/newlive/live/hls/36/live.m3u8
|
||||||
西藏卫视,http://183.11.239.36:808/hls/64/index.m3u8
|
西藏卫视,http://183.11.239.36:808/hls/64/index.m3u8
|
||||||
西藏卫视,http://120.76.248.139/live/bfgd/4200000121.m3u8
|
西藏卫视,http://120.76.248.139/live/bfgd/4200000121.m3u8
|
||||||
西藏卫视,http://123.132.233.194:352/tsfile/live/0111_1.m3u8
|
西藏卫视,http://101.19.84.8:9901/tsfile/live/0111_1.m3u8
|
||||||
西藏卫视,http://221.2.148.205:8154/tsfile/live/0111_1.m3u8
|
西藏卫视,http://120.238.94.10:9901/tsfile/live/1077_1.m3u8
|
||||||
贵州卫视,http://220.164.192.48:50085/tsfile/live/0125_1.m3u8
|
贵州卫视,http://58.57.40.22:9901/tsfile/live/1042_1.m3u8
|
||||||
贵州卫视,http://110.53.52.63:8888/newlive/live/hls/28/live.m3u8
|
贵州卫视,http://110.53.52.63:8888/newlive/live/hls/28/live.m3u8
|
||||||
|
贵州卫视,http://183.11.239.36:808/hls/49/index.m3u8
|
||||||
贵州卫视,http://120.76.248.139/live/bfgd/4200000101.m3u8
|
贵州卫视,http://120.76.248.139/live/bfgd/4200000101.m3u8
|
||||||
贵州卫视,http://123.132.233.194:352/tsfile/live/0120_1.m3u8
|
贵州卫视,http://113.57.111.4:1111/tsfile/live/1029_1.m3u8
|
||||||
贵州卫视,http://111.14.181.15:9901/tsfile/live/0120_1.m3u8
|
|
||||||
超级体育,http://36.105.100.208:35455/itv/1000000001000009601.m3u8?cdn=ystenlive
|
|
||||||
超级体育,http://39.134.65.106/PLTV/88888888/224/3221225635/1.m3u8?
|
超级体育,http://39.134.65.106/PLTV/88888888/224/3221225635/1.m3u8?
|
||||||
|
超级体育,http://36.105.100.208:35455/itv/1000000001000009601.m3u8?cdn=ystenlive
|
||||||
|
超级影视,http://39.134.65.65:80/TVOD/88888888/224/3221225637/main.m3u8
|
||||||
|
超级电影,http://39.135.133.154:80/PLTV/88888888/224/3221225644/1.m3u8
|
||||||
|
超级电影,http://39.135.133.155:80/PLTV/88888888/224/3221225644/1.m3u8
|
||||||
|
超级电影,http://39.135.133.157:80/PLTV/88888888/224/3221225644/1.m3u8
|
||||||
|
超级电影,http://39.134.65.73:80/PLTV/88888888/224/3221225644/1.m3u8
|
||||||
超级电影,http://39.134.65.106/PLTV/88888888/224/3221225644/1.m3u8?
|
超级电影,http://39.134.65.106/PLTV/88888888/224/3221225644/1.m3u8?
|
||||||
|
超级综艺,http://39.134.65.73:80/PLTV/88888888/224/3221225550/1.m3u8
|
||||||
|
超级综艺,http://39.135.133.157:80/PLTV/88888888/224/3221225550/1.m3u8
|
||||||
|
超级综艺,http://39.135.133.157:80/PLTV/88888888/224/3221225642/1.m3u8
|
||||||
|
超级综艺,http://39.135.133.174:80/PLTV/88888888/224/3221225550/1.m3u8
|
||||||
超级综艺,http://39.134.65.106/PLTV/88888888/224/3221225642/1.m3u8?
|
超级综艺,http://39.134.65.106/PLTV/88888888/224/3221225642/1.m3u8?
|
||||||
辽宁体育,http://120.76.248.139/live/bfgd/4200000611.m3u8
|
辽宁体育,http://120.76.248.139/live/bfgd/4200000611.m3u8
|
||||||
辽宁公共,http://120.76.248.139/live/bfgd/4200000481.m3u8
|
辽宁公共,http://120.76.248.139/live/bfgd/4200000481.m3u8
|
||||||
辽宁公共,http://120.76.248.139/live/bfgd/4200000077.m3u8
|
辽宁公共,http://120.76.248.139/live/bfgd/4200000077.m3u8
|
||||||
辽宁北方,http://120.76.248.139/live/bfgd/4200000071.m3u8
|
辽宁北方,http://120.76.248.139/live/bfgd/4200000071.m3u8
|
||||||
辽宁卫视,http://39.164.160.249:9901/tsfile/live/0121_1.m3u8
|
|
||||||
辽宁卫视,http://58.57.40.22:9901/tsfile/live/1035_1.m3u8
|
辽宁卫视,http://58.57.40.22:9901/tsfile/live/1035_1.m3u8
|
||||||
辽宁卫视,http://111.160.17.2:59901/tsfile/live/0001_41.m3u8
|
|
||||||
辽宁卫视,http://110.53.52.63:8888/newlive/live/hls/46/live.m3u8
|
辽宁卫视,http://110.53.52.63:8888/newlive/live/hls/46/live.m3u8
|
||||||
|
辽宁卫视,http://183.11.239.36:808/hls/47/index.m3u8
|
||||||
|
辽宁卫视,http://120.76.248.139/live/bfgd/4200000141.m3u8
|
||||||
|
辽宁卫视,http://120.76.248.139/live/bfgd/4200000185.m3u8
|
||||||
辽宁影视剧,http://120.76.248.139/live/bfgd/4200000070.m3u8
|
辽宁影视剧,http://120.76.248.139/live/bfgd/4200000070.m3u8
|
||||||
辽宁教育青少,http://120.76.248.139/live/bfgd/4200000075.m3u8
|
辽宁教育青少,http://120.76.248.139/live/bfgd/4200000075.m3u8
|
||||||
辽宁生活,http://120.76.248.139/live/bfgd/4200000073.m3u8
|
辽宁生活,http://120.76.248.139/live/bfgd/4200000073.m3u8
|
||||||
@@ -518,74 +557,79 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
|
|||||||
辽宁经济,http://120.76.248.139/live/bfgd/4200000480.m3u8
|
辽宁经济,http://120.76.248.139/live/bfgd/4200000480.m3u8
|
||||||
辽宁都市,http://120.76.248.139/live/bfgd/4200000068.m3u8
|
辽宁都市,http://120.76.248.139/live/bfgd/4200000068.m3u8
|
||||||
辽宁都市,http://120.76.248.139/live/bfgd/4200000610.m3u8
|
辽宁都市,http://120.76.248.139/live/bfgd/4200000610.m3u8
|
||||||
|
都市剧场,http://222.179.42.129:8181/hls1.m3u8?zzhongqd
|
||||||
|
都市剧场,http://183.237.95.108:9901/tsfile/live/1069_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||||
|
都市剧场,http://60.172.130.146:352/tsfile/live/1005_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||||
都市剧场,http://222.179.155.21:1935/ch1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD]
|
都市剧场,http://222.179.155.21:1935/ch1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD]
|
||||||
鄂托克旗电视台,http://110.19.181.138:10080/hls/F509Rh7GR/F509Rh7GR_live.m3u8?zneimd
|
|
||||||
重庆卫视,http://58.57.40.22:9901/tsfile/live/0142_1.m3u8
|
重庆卫视,http://58.57.40.22:9901/tsfile/live/0142_1.m3u8
|
||||||
重庆卫视,http://111.160.17.2:59901/tsfile/live/0001_31.m3u8
|
|
||||||
重庆卫视,http://110.53.52.63:8888/newlive/live/hls/30/live.m3u8
|
重庆卫视,http://110.53.52.63:8888/newlive/live/hls/30/live.m3u8
|
||||||
|
重庆卫视,http://183.11.239.36:808/hls/53/index.m3u8
|
||||||
|
重庆卫视,http://120.76.248.139/live/bfgd/4200000107.m3u8
|
||||||
重庆汽摩,http://120.76.248.139/live/bfgd/4200000168.m3u8
|
重庆汽摩,http://120.76.248.139/live/bfgd/4200000168.m3u8
|
||||||
|
重庆汽摩,http://183.64.181.25:40023/rongchang01.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD]
|
||||||
重庆汽摩,http://183.230.184.51:65500/tntv1.m3u8?zzhongqd
|
重庆汽摩,http://183.230.184.51:65500/tntv1.m3u8?zzhongqd
|
||||||
重庆汽摩,http://218.89.240.144:59901/tsfile/live/1010_1.m3u8?key=txiptv
|
重温经典,http://120.76.248.139/live/bfgd/4200000635.m3u8
|
||||||
重庆璧山综合,http://222.179.42.129:8181/hls1.m3u8?zzhongqd
|
重温经典,http://120.76.248.139/live/bfgd/4200000636.m3u8
|
||||||
金川乡村,http://139.203.180.9:90/live/jcxc.m3u8
|
金川乡村,http://139.203.180.9:90/live/jcxc.m3u8
|
||||||
金川新闻综合,http://139.203.180.9:90/live/zhxw.m3u8
|
金川新闻综合,http://139.203.180.9:90/live/zhxw.m3u8
|
||||||
金牌综艺,http://39.134.65.106/PLTV/88888888/224/3221225525/1.m3u8?
|
金牌综艺,http://39.134.65.175/PLTV/88888888/224/3221225525/1.m3u8
|
||||||
|
金牌综艺,http://39.134.65.73:80/PLTV/88888888/224/3221225525/1.m3u8
|
||||||
|
金牌综艺,http://39.135.133.154:80/PLTV/88888888/224/3221225525/1.m3u8
|
||||||
|
金牌综艺,http://39.135.133.154:80/TVOD/88888888/224/3221225525/main.m3u8
|
||||||
|
金牌综艺,http://39.135.133.155:80/PLTV/88888888/224/3221225525/1.m3u8
|
||||||
金鹰卡通,http://58.57.40.22:9901/tsfile/live/1059_1.m3u8
|
金鹰卡通,http://58.57.40.22:9901/tsfile/live/1059_1.m3u8
|
||||||
金鹰卡通,http://110.80.17.38:9901/tsfile/live/0016_2.m3u8
|
金鹰卡通,http://183.66.15.146:60901/tsfile/live/0117_2.m3u8
|
||||||
|
金鹰卡通,http://218.15.183.23:9901/tsfile/live/23041_1.m3u8
|
||||||
金鹰卡通,http://110.53.52.63:8888/newlive/live/hls/49/live.m3u8
|
金鹰卡通,http://110.53.52.63:8888/newlive/live/hls/49/live.m3u8
|
||||||
金鹰卡通,http://111.160.17.2:59901/tsfile/live/0001_33.m3u8
|
金鹰卡通,http://58.19.43.46:9901/tsfile/live/1000_1.m3u8
|
||||||
金鹰卡通,http://116.128.242.83:9901/tsfile/live/1002_1.m3u8
|
|
||||||
金鹰纪实,http://58.57.40.22:9901/tsfile/live/1070_1.m3u8
|
金鹰纪实,http://58.57.40.22:9901/tsfile/live/1070_1.m3u8
|
||||||
金鹰纪实,http://120.238.94.10:9901/tsfile/live/1059_1.m3u8
|
金鹰纪实,http://120.238.94.10:9901/tsfile/live/1059_1.m3u8
|
||||||
金鹰纪实,http://183.11.239.36:808/hls/171/index.m3u8
|
金鹰纪实,http://183.11.239.36:808/hls/171/index.m3u8
|
||||||
金鹰纪实,http://121.19.134.222:808/tsfile/live/1037_1.m3u8
|
金鹰纪实,http://121.19.134.222:808/tsfile/live/1037_1.m3u8
|
||||||
铜梁综合,http://183.64.174.171:40123/ch1.m3u8
|
铜梁综合,http://183.64.174.171:40123/ch1.m3u8
|
||||||
陕西1套,http://123.138.22.30:9901/tsfile/live/1000_1.m3u8
|
铜梁综合,http://183.64.174.171:40123/ch1.m3u8?zzhongqd
|
||||||
陕西1套,http://112.46.85.60:8009/hls/18/index.m3u8
|
陕西1套,http://112.46.85.60:8009/hls/18/index.m3u8
|
||||||
陕西1套,http://124.116.183.146:9901/tsfile/live/1000_1.m3u8
|
陕西1套,http://124.116.183.146:9901/tsfile/live/1000_1.m3u8
|
||||||
陕西2套,http://123.138.22.30:9901/tsfile/live/1001_1.m3u8
|
|
||||||
陕西2套,http://124.116.183.146:9901/tsfile/live/1001_1.m3u8
|
|
||||||
陕西3套,http://124.116.183.146:9901/tsfile/live/1002_1.m3u8
|
陕西3套,http://124.116.183.146:9901/tsfile/live/1002_1.m3u8
|
||||||
陕西6套,http://112.46.85.60:8009/hls/23/index.m3u8
|
陕西6套,http://112.46.85.60:8009/hls/23/index.m3u8
|
||||||
陕西卫视,http://39.164.160.249:9901/tsfile/live/0136_1.m3u8
|
|
||||||
陕西卫视,http://110.53.52.63:8888/newlive/live/hls/40/live.m3u8
|
陕西卫视,http://110.53.52.63:8888/newlive/live/hls/40/live.m3u8
|
||||||
陕西卫视,http://183.11.239.36:808/hls/58/index.m3u8
|
陕西卫视,http://183.11.239.36:808/hls/58/index.m3u8
|
||||||
陕西卫视,http://124.116.183.146:9901/tsfile/live/0136_1.m3u8
|
陕西卫视,http://124.116.183.146:9901/tsfile/live/0136_1.m3u8
|
||||||
陕西新闻资讯,http://113.200.148.203:85/tsfile/live/1011_1.m3u8?key=txiptv&playlive=1&authid=0
|
陕西卫视,http://223.241.247.214:9901/tsfile/live/0136_1.m3u8
|
||||||
青海卫视,http://220.164.192.48:50085/tsfile/live/0140_1.m3u8
|
|
||||||
青海卫视,http://110.53.52.63:8888/newlive/live/hls/38/live.m3u8
|
青海卫视,http://110.53.52.63:8888/newlive/live/hls/38/live.m3u8
|
||||||
青海卫视,http://120.76.248.139/live/bfgd/4200000111.m3u8
|
青海卫视,http://120.76.248.139/live/bfgd/4200000111.m3u8
|
||||||
|
青海卫视,http://47.122.125.40:6666/hls/qhtv.m3u8
|
||||||
|
青海卫视,http://61.157.139.15:9901/tsfile/live/2402_1.m3u8
|
||||||
|
靖江新闻综合,http://120.76.248.139/live/bfgd/4200000282.m3u8
|
||||||
|
魅力足球,http://120.76.248.139/live/bfgd/4200000633.m3u8
|
||||||
魅力足球,http://146.56.165.66:7788/TVOD/5000000011000031207/bestzb/index.m3u8
|
魅力足球,http://146.56.165.66:7788/TVOD/5000000011000031207/bestzb/index.m3u8
|
||||||
鹤岗新闻综合,http://39.134.65.106/PLTV/88888888/224/3221226043/1.m3u8?
|
鹤岗新闻综合,http://39.134.65.106/PLTV/88888888/224/3221226043/1.m3u8?
|
||||||
鹤岗新闻综合,http://39.134.65.106/PLTV/88888888/224/3221226073/1.m3u8?
|
鹤岗新闻综合,http://39.134.65.106/PLTV/88888888/224/3221226073/1.m3u8?
|
||||||
黎城综合,http://111.53.96.67:8081/live/1/index.m3u8
|
黎城综合,http://111.53.96.67:8081/live/1/index.m3u8
|
||||||
黎城综合,http://111.53.96.67:8081/live/1/index.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD]
|
黎城综合,http://111.53.96.67:8081/live/1/index.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD]
|
||||||
黑莓动画,http://36.105.100.208:35455/itv/1000000004000021734.m3u8?cdn=ystenlive
|
黑莓动画,http://36.105.100.208:35455/itv/1000000004000021734.m3u8?cdn=ystenlive
|
||||||
黑莓动画,http://39.134.65.106/PLTV/88888888/224/3221225529/1.m3u8?
|
黑莓动画,http://39.134.64.87:6610/PLTV/88888888/224/3221225662/index.m3u8?IASHttpSessionId=
|
||||||
黑莓电影,http://146.56.165.66:7788/TVOD/2000000003000000001/hnbblive/index.m3u8
|
黑莓电影,http://146.56.165.66:7788/TVOD/2000000003000000001/hnbblive/index.m3u8
|
||||||
黑莓电影,http://36.105.100.208:35455/itv/1000000004000019624.m3u8?cdn=ystenlive
|
黑莓电影,http://36.105.100.208:35455/itv/1000000004000019624.m3u8?cdn=ystenlive
|
||||||
黑莓电影,http://39.134.65.106/PLTV/88888888/224/3221225681/1.m3u8?
|
黑莓电影,http://39.134.65.106/PLTV/88888888/224/3221225681/1.m3u8?
|
||||||
黑龙江卫视,http://39.164.160.249:9901/tsfile/live/0143_1.m3u8
|
|
||||||
黑龙江卫视,http://58.57.40.22:9901/tsfile/live/1040_1.m3u8
|
黑龙江卫视,http://58.57.40.22:9901/tsfile/live/1040_1.m3u8
|
||||||
黑龙江卫视,http://111.160.17.2:59901/tsfile/live/0001_36.m3u8
|
黑龙江卫视,http://110.53.52.63:8888/newlive/live/hls/44/live.m3u8
|
||||||
黑龙江少儿,http://112.99.193.34:9901/tsfile/live/1030_1.m3u8?key=txiptv&playlive=1&authid=0
|
黑龙江卫视,http://183.11.239.36:808/hls/48/index.m3u8
|
||||||
|
黑龙江少儿,http://39.134.67.108/PLTV/88888888/224/3221225979/1.m3u8
|
||||||
黑龙江少儿,http://39.134.65.106/PLTV/88888888/224/3221225979/1.m3u8?
|
黑龙江少儿,http://39.134.65.106/PLTV/88888888/224/3221225979/1.m3u8?
|
||||||
黑龙江少儿,http://39.134.65.106/PLTV/88888888/224/3221226002/1.m3u8?
|
黑龙江少儿,http://39.134.65.106/PLTV/88888888/224/3221226002/1.m3u8?
|
||||||
黑龙江影视,http://112.99.193.34:9901/tsfile/live/1025_1.m3u8?key=txiptv&playlive=1&authid=0
|
黑龙江影视,http://39.134.67.108/PLTV/88888888/224/3221225973/1.m3u8
|
||||||
黑龙江影视,http://39.134.65.106/PLTV/88888888/224/3221225971/1.m3u8?
|
黑龙江影视,http://39.134.65.106/PLTV/88888888/224/3221225971/1.m3u8?
|
||||||
黑龙江影视,http://39.134.65.106/PLTV/88888888/224/3221225973/1.m3u8?
|
黑龙江影视,http://39.134.65.106/PLTV/88888888/224/3221225973/1.m3u8?
|
||||||
黑龙江文体,http://112.99.193.34:9901/tsfile/live/1022_1.m3u8?
|
|
||||||
黑龙江文体,http://39.134.65.106/PLTV/88888888/224/3221225965/1.m3u8?
|
黑龙江文体,http://39.134.65.106/PLTV/88888888/224/3221225965/1.m3u8?
|
||||||
黑龙江文体,http://39.134.65.106/PLTV/88888888/224/3221226012/1.m3u8?
|
黑龙江文体,http://39.134.65.106/PLTV/88888888/224/3221226012/1.m3u8?
|
||||||
黑龙江新闻,http://112.99.193.34:9901/tsfile/live/1024_1.m3u8?
|
|
||||||
黑龙江新闻法治,http://112.99.193.34:9901/tsfile/live/1028_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
黑龙江都市,http://112.99.193.34:9901/tsfile/live/1027_1.m3u8?key=txiptv&playlive=1&authid=0
|
|
||||||
黑龙江都市,http://39.134.65.106/PLTV/88888888/224/3221225969/1.m3u8?
|
黑龙江都市,http://39.134.65.106/PLTV/88888888/224/3221225969/1.m3u8?
|
||||||
黑龙江都市,http://39.134.65.106/PLTV/88888888/224/3221225990/1.m3u8?
|
黑龙江都市,http://39.134.65.106/PLTV/88888888/224/3221225990/1.m3u8?
|
||||||
龙华卡通,http://122.117.71.103:8516/http/61.222.53.250:8068/hls/14/80/cstv14.m3u8
|
龙华卡通,http://122.117.71.103:8516/http/61.222.53.250:8068/hls/14/80/cstv14.m3u8
|
||||||
龙华戏剧,http://122.117.71.103:8533/http/61.222.53.250:8068/hls/13/80/cstv13.m3u8
|
龙华戏剧,http://122.117.71.103:8533/http/61.222.53.250:8068/hls/13/80/cstv13.m3u8
|
||||||
龙华戏剧,http://122.117.71.103:8533/龙华戏剧.m3u8
|
龙华戏剧,http://122.117.71.103:8533/龙华戏剧.m3u8
|
||||||
龙华戏剧,http://122.117.71.103:8533/http/61.222.53.250:8081/hls/75/817/ch59.m3u8
|
龙华戏剧,http://122.117.71.103:8533/http/61.222.53.250:8081/hls/75/817/ch59.m3u8
|
||||||
|
龙华洋片,http://50.7.234.10:8278/lunghuawestern_twn/playlist.m3u8?tid=MC1C3944472239444722&ct=19226&tsum=99c0c7c82e2fc48b16605865c3eaeb82
|
||||||
龙华电影,http://37.27.111.214:8080/live/19/hls.m3u8
|
龙华电影,http://37.27.111.214:8080/live/19/hls.m3u8
|
||||||
龙华电影,http://122.117.71.103:8555/http/61.222.53.250:8068/hls/10/80/cstv10.m3u8
|
龙华电影,http://122.117.71.103:8555/http/61.222.53.250:8068/hls/10/80/cstv10.m3u8
|
||||||
龙华电影,http://122.117.71.103:8555/龙华电影.m3u8
|
龙华电影,http://122.117.71.103:8555/龙华电影.m3u8
|
||||||
@@ -600,6 +644,7 @@ CCTV-14 少儿,http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLT
|
|||||||
CCTV-15 音乐,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226476/index.m3u8
|
CCTV-15 音乐,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226476/index.m3u8
|
||||||
CCTV-16 奥林匹克,http://[2409:8087:1a01:df::4077]:80/PLTV/88888888/224/3221225893/index.m3u8
|
CCTV-16 奥林匹克,http://[2409:8087:1a01:df::4077]:80/PLTV/88888888/224/3221225893/index.m3u8
|
||||||
CCTV-17 农业农村,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225765/index.m3u8
|
CCTV-17 农业农村,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225765/index.m3u8
|
||||||
|
CCTV-2 财经,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226540/index.m3u8
|
||||||
CCTV-3 综艺,http://[2409:8087:1a01:df::4077]:80/PLTV/88888888/224/3221225799/index.m3u8
|
CCTV-3 综艺,http://[2409:8087:1a01:df::4077]:80/PLTV/88888888/224/3221225799/index.m3u8
|
||||||
CCTV-4 中文国际,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226428/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
|
CCTV-5 体育,http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226019/index.m3u8
|
||||||
@@ -609,32 +654,37 @@ CCTV-8 电视剧,http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/P
|
|||||||
CCTV-9 纪录,http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225734/index.m3u8
|
CCTV-9 纪录,http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225734/index.m3u8
|
||||||
CCTV1,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225642/2/index.m3u8
|
CCTV1,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225642/2/index.m3u8
|
||||||
CCTV1,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225501/2/index.m3u8
|
CCTV1,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225501/2/index.m3u8
|
||||||
CCTV10,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225636/2/index.m3u8
|
CCTV1,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225618/2/index.m3u8
|
||||||
CCTV10,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225627/2/index.m3u8
|
CCTV10,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225627/2/index.m3u8
|
||||||
CCTV12,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225637/index.m3u8
|
|
||||||
CCTV12,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225629/2/index.m3u8
|
|
||||||
CCTV12,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225637/2/index.m3u8
|
|
||||||
CCTV12,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225495/2/index.m3u8
|
CCTV12,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225495/2/index.m3u8
|
||||||
|
CCTV12,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225637/2/index.m3u8
|
||||||
CCTV15,http://[2409:8087:1a01:df::4033]:80/TVOD/88888888/224/3221226127/main.m3u8
|
CCTV15,http://[2409:8087:1a01:df::4033]:80/TVOD/88888888/224/3221226127/main.m3u8
|
||||||
CCTV17,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225909/2/index.m3u8
|
|
||||||
CCTV17,http://[2409:8087:1a01:df::4025]:80/TVOD/88888888/224/3221225708/main.m3u8
|
CCTV17,http://[2409:8087:1a01:df::4025]:80/TVOD/88888888/224/3221225708/main.m3u8
|
||||||
|
CCTV17,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225909/2/index.m3u8
|
||||||
CCTV17,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225908/2/index.m3u8
|
CCTV17,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225908/2/index.m3u8
|
||||||
|
CCTV2,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225619/2/index.m3u8
|
||||||
|
CCTV2,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225643/index.m3u8
|
||||||
|
CCTV2,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225500/2/index.m3u8
|
||||||
|
CCTV3,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225634/2/index.m3u8
|
||||||
|
CCTV3,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225647/2/index.m3u8
|
||||||
|
CCTV3,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225634/index.m3u8
|
||||||
CCTV3,http://[2409:8087:1a01:df::4041]:80/TVOD/88888888/224/3221225799/main.m3u8
|
CCTV3,http://[2409:8087:1a01:df::4041]:80/TVOD/88888888/224/3221225799/main.m3u8
|
||||||
CCTV4,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225621/2/index.m3u8
|
|
||||||
CCTV4,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225621/index.m3u8
|
|
||||||
CCTV5,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225633/index.m3u8
|
CCTV5,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225633/index.m3u8
|
||||||
CCTV5+,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225649/2/index.m3u8
|
|
||||||
上海纪实,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225655/index.m3u8
|
上海纪实,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225655/index.m3u8
|
||||||
东北热剧,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225741/index.m3u8
|
东北热剧,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225741/index.m3u8
|
||||||
东南卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226341/index.m3u8
|
东南卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226341/index.m3u8
|
||||||
东南卫视,http://[2409:8087:1a01:df::4035]:80/TVOD/88888888/224/3221225950/main.m3u8
|
东南卫视,http://[2409:8087:1a01:df::4035]:80/TVOD/88888888/224/3221225950/main.m3u8
|
||||||
东南卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225585/index.m3u8?fmt=ts2hls
|
东南卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225585/index.m3u8?fmt=ts2hls
|
||||||
东方卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226345/index.m3u8
|
东方卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226345/index.m3u8
|
||||||
|
东方卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225489/2/index.m3u8
|
||||||
|
东方卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225658/2/index.m3u8
|
||||||
|
东方卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225659/2/index.m3u8
|
||||||
|
东方卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225659/index.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/3221226450/index.m3u8
|
||||||
北京卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225674/2/index.m3u8
|
北京卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225674/2/index.m3u8
|
||||||
北京卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225674/index.m3u8
|
|
||||||
北京卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225673/2/index.m3u8
|
|
||||||
北京卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225600/2/index.m3u8
|
北京卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225600/2/index.m3u8
|
||||||
|
北京卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225673/2/index.m3u8
|
||||||
|
北京卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225674/index.m3u8
|
||||||
吉林卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226397/index.m3u8
|
吉林卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226397/index.m3u8
|
||||||
咪咕,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221226240/2/index.m3u8
|
咪咕,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221226240/2/index.m3u8
|
||||||
哒啵赛事,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225675/index.m3u8
|
哒啵赛事,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225675/index.m3u8
|
||||||
@@ -642,9 +692,9 @@ CCTV5+,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225649/2
|
|||||||
天津卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226459/index.m3u8
|
天津卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226459/index.m3u8
|
||||||
天津卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225698/2/index.m3u8
|
天津卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225698/2/index.m3u8
|
||||||
天津卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225739/2/index.m3u8
|
天津卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225739/2/index.m3u8
|
||||||
|
天津卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225698/index.m3u8
|
||||||
天津卫视,http://[2409:8087:1a01:df::4030]:80/TVOD/88888888/224/3221225972/main.m3u8
|
天津卫视,http://[2409:8087:1a01:df::4030]:80/TVOD/88888888/224/3221225972/main.m3u8
|
||||||
天津卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225485/2/index.m3u8
|
天津卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225485/2/index.m3u8
|
||||||
天津卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225698/index.m3u8
|
|
||||||
宁夏卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225726/2/index.m3u8
|
宁夏卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225726/2/index.m3u8
|
||||||
安徽卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226391/index.m3u8
|
安徽卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226391/index.m3u8
|
||||||
山东卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226456/index.m3u8
|
山东卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226456/index.m3u8
|
||||||
@@ -656,23 +706,25 @@ CCTV5+,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225649/2
|
|||||||
旅游卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221226212/index.m3u8?fmt=ts2hls
|
旅游卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221226212/index.m3u8?fmt=ts2hls
|
||||||
梨园,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225581/2/index.m3u8
|
梨园,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225581/2/index.m3u8
|
||||||
欢乐剧场,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225742/index.m3u8
|
欢乐剧场,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225742/index.m3u8
|
||||||
武术世界,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225508/2/index.m3u8
|
|
||||||
江苏卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226310/index.m3u8
|
江苏卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226310/index.m3u8
|
||||||
江西卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226344/index.m3u8
|
江西卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226344/index.m3u8
|
||||||
江西卫视,http://[2409:8087:1a01:df::4027]:80/TVOD/88888888/224/3221225935/main.m3u8
|
江西卫视,http://[2409:8087:1a01:df::4027]:80/TVOD/88888888/224/3221225935/main.m3u8
|
||||||
江西卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225492/index.m3u8?fmt=ts2hls
|
江西卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225492/index.m3u8?fmt=ts2hls
|
||||||
河北卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226406/index.m3u8
|
河北卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226406/index.m3u8
|
||||||
河北卫视,http://[2409:8087:1a01:df::4035]:80/TVOD/88888888/224/3221225961/main.m3u8
|
|
||||||
河南卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226480/index.m3u8
|
河南卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226480/index.m3u8
|
||||||
浙江卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226339/index.m3u8
|
浙江卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226339/index.m3u8
|
||||||
|
浙江卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225703/2/index.m3u8
|
||||||
浙江卫视,http://[2409:8087:1a01:df::4043]:80/TVOD/88888888/224/3221225959/main.m3u8
|
浙江卫视,http://[2409:8087:1a01:df::4043]:80/TVOD/88888888/224/3221225959/main.m3u8
|
||||||
|
浙江卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225491/2/index.m3u8
|
||||||
|
浙江卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225703/index.m3u8
|
||||||
|
浙江卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225744/2/index.m3u8
|
||||||
海南卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226465/index.m3u8
|
海南卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226465/index.m3u8
|
||||||
|
海南卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225722/2/index.m3u8
|
||||||
深圳卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226313/index.m3u8
|
深圳卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226313/index.m3u8
|
||||||
深圳卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225598/index.m3u8?fmt=ts2hls
|
深圳卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225598/index.m3u8?fmt=ts2hls
|
||||||
湖北卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226477/index.m3u8
|
湖北卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226477/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/3221226307/index.m3u8
|
||||||
湖南卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225704/2/index.m3u8
|
湖南卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225704/2/index.m3u8
|
||||||
甘肃卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225724/2/index.m3u8
|
|
||||||
睛彩竞技,http://[2409:8087:1a01:df::4061]:80/TVOD/88888888/224/3221225899/main.m3u8
|
睛彩竞技,http://[2409:8087:1a01:df::4061]:80/TVOD/88888888/224/3221225899/main.m3u8
|
||||||
睛彩篮球,http://[2409:8087:1a01:df::4055]:80/TVOD/88888888/224/3221225901/main.m3u8
|
睛彩篮球,http://[2409:8087:1a01:df::4055]:80/TVOD/88888888/224/3221225901/main.m3u8
|
||||||
精品体育,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225709/2/index.m3u8
|
精品体育,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225709/2/index.m3u8
|
||||||
@@ -681,9 +733,8 @@ CCTV5+,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225649/2
|
|||||||
纪实科教,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225729/index.m3u8
|
纪实科教,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225729/index.m3u8
|
||||||
西藏卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225723/2/index.m3u8
|
西藏卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225723/2/index.m3u8
|
||||||
贵州卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226474/index.m3u8
|
贵州卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226474/index.m3u8
|
||||||
贵州卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225728/2/index.m3u8
|
|
||||||
贵州卫视,http://[2409:8087:1a01:df::4030]:80/TVOD/88888888/224/3221225974/main.m3u8
|
贵州卫视,http://[2409:8087:1a01:df::4030]:80/TVOD/88888888/224/3221225974/main.m3u8
|
||||||
贵州卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225483/2/index.m3u8
|
贵州卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225483/index.m3u8?fmt=ts2hls
|
||||||
超级体育,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/3221225715/index.m3u8
|
||||||
超级体育,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225622/2/index.m3u8
|
超级体育,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225622/2/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/3221225717/index.m3u8
|
||||||
@@ -695,9 +746,9 @@ CCTV5+,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225649/2
|
|||||||
金牌综艺,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225666/index.m3u8
|
金牌综艺,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225666/index.m3u8
|
||||||
金鹰纪实,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225595/index.m3u8?fmt=ts2hls
|
金鹰纪实,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225595/index.m3u8?fmt=ts2hls
|
||||||
陕西卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225729/2/index.m3u8
|
陕西卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225729/2/index.m3u8
|
||||||
|
青海卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225484/index.m3u8?fmt=ts2hls
|
||||||
鹤岗新闻综合,http://[2409:8087:1a01:df::4059]:80/TVOD/88888888/224/3221226073/main.m3u8
|
鹤岗新闻综合,http://[2409:8087:1a01:df::4059]:80/TVOD/88888888/224/3221226073/main.m3u8
|
||||||
黑莓电影,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225764/2/index.m3u8
|
黑莓电影,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225764/2/index.m3u8
|
||||||
黑莓电影,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225769/2/index.m3u8
|
|
||||||
黑龙江卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226327/index.m3u8
|
黑龙江卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226327/index.m3u8
|
||||||
黑龙江文体,http://[2409:8087:1a01:df::4025]:80/TVOD/88888888/224/3221225965/main.m3u8
|
黑龙江文体,http://[2409:8087:1a01:df::4025]:80/TVOD/88888888/224/3221225965/main.m3u8
|
||||||
黑龙江都市,http://[2409:8087:1a01:df::4055]:80/TVOD/88888888/224/3221225969/main.m3u8
|
黑龙江都市,http://[2409:8087:1a01:df::4055]:80/TVOD/88888888/224/3221225969/main.m3u8
|
||||||
Reference in new issue
Block a user