From 47ce15b442d8f067dfec6fa5acdd29d0beacd1a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=82=A5=E7=BE=8A?= Date: Wed, 31 Jul 2024 02:36:49 +0800 Subject: [PATCH] add ysptp and itv support --- Golang/list/tvm3u.go | 455 +++++++++++++++++++++++++++++++++++++ Golang/liveurls/itv.go | 341 +++++++++++++++++++++++++++ Golang/liveurls/youtube.go | 10 +- Golang/liveurls/ysptp.go | 167 ++++++++++++++ Golang/main.go | 50 +++- 5 files changed, 1009 insertions(+), 14 deletions(-) create mode 100644 Golang/list/tvm3u.go create mode 100644 Golang/liveurls/itv.go create mode 100644 Golang/liveurls/ysptp.go diff --git a/Golang/list/tvm3u.go b/Golang/list/tvm3u.go new file mode 100644 index 0000000..1037d5c --- /dev/null +++ b/Golang/list/tvm3u.go @@ -0,0 +1,455 @@ +package list + +import ( + "fmt" + "github.com/gin-gonic/gin" +) + +type Tvm3u struct { +} + +func (t *Tvm3u) GetTvM3u(c *gin.Context) { + fmt.Fprintln(c.Writer, "#EXTM3U x-tvg-url=\"https://epg.v1.mk/fy.xml\"") + fmt.Fprintln(c.Writer, "#EXTINF:-1 tvg-name=\"4K60PSDR-H264-AAC测试\" tvg-logo=\"https://cdn.jsdelivr.net/gh/feiyangdigital/testvideo/tg.jpg\" group-title=\"4K频道\",4K60PSDR-H264-AAC测试") + fmt.Fprintln(c.Writer, "https://cdn.jsdelivr.net/gh/feiyangdigital/testvideo/sdr4kvideo/index.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1 tvg-name=\"4K60PHLG-HEVC-EAC3测试\" tvg-logo=\"https://cdn.jsdelivr.net/gh/feiyangdigital/testvideo/tg.jpg\" group-title=\"4K频道\",4K60PHLG-HEVC-EAC3测试") + fmt.Fprintln(c.Writer, "https://cdn.jsdelivr.net/gh/feiyangdigital/testvideo/hlg4kvideo/index.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"CCTV1\" tvg-name=\"CCTV1\" tvg-logo=\"https://epg.v1.mk/logo/CCTV1.png\" group-title=\"央视\",cctv1-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv1.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"CCTV1\" tvg-name=\"CCTV1\" tvg-logo=\"https://epg.v1.mk/logo/CCTV1.png\" group-title=\"央视\",CCTV-1") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000001000029752.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv1\" tvg-name=\"cctv1\" tvg-logo=\"https://epg.v1.mk/logo/cctv1.png\" group-title=\"央视\",CCTV-1-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000004000002226.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"CCTV1\" tvg-name=\"CCTV1\" tvg-logo=\"https://epg.v1.mk/logo/CCTV1.png\" group-title=\"央视\",CCTV-1-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265001.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv2\" tvg-name=\"cctv2\" tvg-logo=\"https://epg.v1.mk/logo/cctv2.png\" group-title=\"央视\",cctv2-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv2.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv2\" tvg-name=\"cctv2\" tvg-logo=\"https://epg.v1.mk/logo/cctv2.png\" group-title=\"央视\",CCTV-2") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000023315.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"CCTV2\" tvg-name=\"CCTV2\" tvg-logo=\"https://epg.v1.mk/logo/CCTV2.png\" group-title=\"央视\",CCTV-2-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000001000014161.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv2\" tvg-name=\"cctv2\" tvg-logo=\"https://epg.v1.mk/logo/cctv2.png\" group-title=\"央视\",CCTV-2-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000023315.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv3\" tvg-name=\"cctv3\" tvg-logo=\"https://epg.v1.mk/logo/cctv3.png\" group-title=\"央视\",cctv3-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv3.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv3\" tvg-name=\"cctv3\" tvg-logo=\"https://epg.v1.mk/logo/cctv3.png\" group-title=\"央视\",CCTV-3") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000001000022313.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv3\" tvg-name=\"cctv3\" tvg-logo=\"https://epg.v1.mk/logo/cctv3.png\" group-title=\"央视\",CCTV-3-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265003.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv4\" tvg-name=\"cctv4\" tvg-logo=\"https://epg.v1.mk/logo/cctv4.png\" group-title=\"央视\",cctv4-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv4.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"CCTV4\" tvg-name=\"CCTV4\" tvg-logo=\"https://epg.v1.mk/logo/CCTV4.png\" group-title=\"央视\",CCTV-4-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031102.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv4\" tvg-name=\"cctv4\" tvg-logo=\"https://epg.v1.mk/logo/cctv4.png\" group-title=\"央视\",CCTV-4-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265004.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv5\" tvg-name=\"cctv5\" tvg-logo=\"https://epg.v1.mk/logo/cctv5.png\" group-title=\"央视\",cctv5-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv5.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv5\" tvg-name=\"cctv5\" tvg-logo=\"https://epg.v1.mk/logo/cctv5.png\" group-title=\"央视\",CCTV-5") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000025222.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv5\" tvg-name=\"cctv5\" tvg-logo=\"https://epg.v1.mk/logo/cctv5.png\" group-title=\"央视\",CCTV-5-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265005.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv5+\" tvg-name=\"cctv5+\" tvg-logo=\"https://epg.v1.mk/logo/cctv5+.png\" group-title=\"央视\",cctv5p-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv5p.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv5+\" tvg-name=\"cctv5+\" tvg-logo=\"https://epg.v1.mk/logo/cctv5+.png\" group-title=\"央视\",CCTV-5+") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000001000015875.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv5+\" tvg-name=\"cctv5+\" tvg-logo=\"https://epg.v1.mk/logo/cctv5+.png\" group-title=\"央视\",CCTV-5+-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265016.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv6\" tvg-name=\"cctv6\" tvg-logo=\"https://epg.v1.mk/logo/cctv6.png\" group-title=\"央视\",cctv6-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv6.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv6\" tvg-name=\"cctv6\" tvg-logo=\"https://epg.v1.mk/logo/cctv6.png\" group-title=\"央视\",CCTV-6") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000001737.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"CCTV6\" tvg-name=\"CCTV6\" tvg-logo=\"https://epg.v1.mk/logo/CCTV6.png\" group-title=\"央视\",CCTV-6-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000001000004574.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv6\" tvg-name=\"cctv6\" tvg-logo=\"https://epg.v1.mk/logo/cctv6.png\" group-title=\"央视\",CCTV-6-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265006.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"CCTV7\" tvg-name=\"CCTV7\" tvg-logo=\"https://epg.v1.mk/logo/CCTV7.png\" group-title=\"央视\",cctv7-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv7.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"CCTV7\" tvg-name=\"CCTV7\" tvg-logo=\"https://epg.v1.mk/logo/CCTV7.png\" group-title=\"央视\",CCTV-7") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000024341.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"CCTV7\" tvg-name=\"CCTV7\" tvg-logo=\"https://epg.v1.mk/logo/CCTV7.png\" group-title=\"央视\",CCTV-7-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000001000009055.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"CCTV7\" tvg-name=\"CCTV7\" tvg-logo=\"https://epg.v1.mk/logo/CCTV7.png\" group-title=\"央视\",CCTV-7-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265007.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv8\" tvg-name=\"cctv8\" tvg-logo=\"https://epg.v1.mk/logo/cctv8.png\" group-title=\"央视\",cctv8-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv8.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv8\" tvg-name=\"cctv8\" tvg-logo=\"https://epg.v1.mk/logo/cctv8.png\" group-title=\"央视\",CCTV-8") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000001000001070.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv8\" tvg-name=\"cctv8\" tvg-logo=\"https://epg.v1.mk/logo/cctv8.png\" group-title=\"央视\",CCTV-8-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265008.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv9\" tvg-name=\"cctv9\" tvg-logo=\"https://epg.v1.mk/logo/cctv9.png\" group-title=\"央视\",cctv9-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv9.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv9\" tvg-name=\"cctv9\" tvg-logo=\"https://epg.v1.mk/logo/cctv9.png\" group-title=\"央视\",CCTV-9") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000014583.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"CCTV9\" tvg-name=\"CCTV9\" tvg-logo=\"https://epg.v1.mk/logo/CCTV9.png\" group-title=\"央视\",CCTV-9-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000001000032162.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv9\" tvg-name=\"cctv9\" tvg-logo=\"https://epg.v1.mk/logo/cctv9.png\" group-title=\"央视\",CCTV-9-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265009.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv10\" tvg-name=\"cctv10\" tvg-logo=\"https://epg.v1.mk/logo/cctv10.png\" group-title=\"央视\",cctv10-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv10.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv10\" tvg-name=\"cctv10\" tvg-logo=\"https://epg.v1.mk/logo/cctv10.png\" group-title=\"央视\",CCTV-10") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000023734.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv10\" tvg-name=\"cctv10\" tvg-logo=\"https://epg.v1.mk/logo/cctv10.png\" group-title=\"央视\",CCTV-10-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000004000012827.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv10\" tvg-name=\"cctv10\" tvg-logo=\"https://epg.v1.mk/logo/cctv10.png\" group-title=\"央视\",CCTV-10-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265010.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv11\" tvg-name=\"cctv11\" tvg-logo=\"https://epg.v1.mk/logo/cctv11.png\" group-title=\"央视\",cctv11-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv11.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv11\" tvg-name=\"cctv11\" tvg-logo=\"https://epg.v1.mk/logo/cctv11.png\" group-title=\"央视\",CCTV-11-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031106.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv11\" tvg-name=\"cctv11\" tvg-logo=\"https://epg.v1.mk/logo/cctv11.png\" group-title=\"央视\",CCTV-11-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265011.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv12\" tvg-name=\"cctv12\" tvg-logo=\"https://epg.v1.mk/logo/cctv12.png\" group-title=\"央视\",cctv12-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv12.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv12\" tvg-name=\"cctv12\" tvg-logo=\"https://epg.v1.mk/logo/cctv12.png\" group-title=\"央视\",CCTV-12") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000032494.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv12\" tvg-name=\"cctv12\" tvg-logo=\"https://epg.v1.mk/logo/cctv12.png\" group-title=\"央视\",CCTV-12-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000001000022586.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv12\" tvg-name=\"cctv12\" tvg-logo=\"https://epg.v1.mk/logo/cctv12.png\" group-title=\"央视\",CCTV-12-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265012.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv13\" tvg-name=\"cctv13\" tvg-logo=\"https://epg.v1.mk/logo/cctv13.png\" group-title=\"央视\",cctv13-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv13.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv13\" tvg-name=\"cctv13\" tvg-logo=\"https://epg.v1.mk/logo/cctv13.png\" group-title=\"央视\",CCTV-13-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031108.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv14\" tvg-name=\"cctv14\" tvg-logo=\"https://epg.v1.mk/logo/cctv14.png\" group-title=\"央视\",cctv14-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv14.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv14\" tvg-name=\"cctv14\" tvg-logo=\"https://epg.v1.mk/logo/cctv14.png\" group-title=\"央视\",CCTV-14") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000008170.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv14\" tvg-name=\"cctv14\" tvg-logo=\"https://epg.v1.mk/logo/cctv14.png\" group-title=\"央视\",CCTV-14-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000004000006673.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv14\" tvg-name=\"cctv14\" tvg-logo=\"https://epg.v1.mk/logo/cctv14.png\" group-title=\"央视\",CCTV-14-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265013.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv15\" tvg-name=\"cctv15\" tvg-logo=\"https://epg.v1.mk/logo/cctv15.png\" group-title=\"央视\",cctv15-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv15.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv15\" tvg-name=\"cctv15\" tvg-logo=\"https://epg.v1.mk/logo/cctv15.png\" group-title=\"央视\",CCTV-15-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031109.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv15\" tvg-name=\"cctv15\" tvg-logo=\"https://epg.v1.mk/logo/cctv15.png\" group-title=\"央视\",CCTV-15-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265014.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv16\" tvg-name=\"cctv16\" tvg-logo=\"https://epg.v1.mk/logo/cctv16.png\" group-title=\"央视\",cctv16-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv16.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv16\" tvg-name=\"cctv16\" tvg-logo=\"https://epg.v1.mk/logo/cctv16.png\" group-title=\"央视\",CCTV-16") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000006000233002.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv16\" tvg-name=\"cctv16\" tvg-logo=\"https://epg.v1.mk/logo/cctv16.png\" group-title=\"4K频道\",CCTV-16-4K-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000008000023254.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv16\" tvg-name=\"cctv16\" tvg-logo=\"https://epg.v1.mk/logo/cctv16.png\" group-title=\"4K频道\",cctv164k_10m") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv4k16_10m.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv16\" tvg-name=\"cctv16\" tvg-logo=\"https://epg.v1.mk/logo/cctv16.png\" group-title=\"4K频道\",cctv164k") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv4k16.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv17\" tvg-name=\"cctv17\" tvg-logo=\"https://epg.v1.mk/logo/cctv17.png\" group-title=\"央视\",cctv17-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv17.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv17\" tvg-name=\"cctv17\" tvg-logo=\"https://epg.v1.mk/logo/cctv17.png\" group-title=\"央视\",CCTV-17") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000006000268004.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv17\" tvg-name=\"cctv17\" tvg-logo=\"https://epg.v1.mk/logo/cctv17.png\" group-title=\"央视\",CCTV-17-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265015.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cgtn\" tvg-name=\"cgtn\" tvg-logo=\"https://epg.v1.mk/logo/cgtn.png\" group-title=\"央视\",CGTN") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/7745129417417101820.m3u8?cdn=hnbblive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"CGTN记录\" tvg-name=\"CGTN记录\" tvg-logo=\"https://epg.v1.mk/logo/CGTN记录.png\" group-title=\"央视\",CGTN-记录") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/7114647837765104058.m3u8?cdn=hnbblive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"CGTNALBY\" tvg-name=\"CGTNALBY\" tvg-logo=\"https://epg.v1.mk/logo/CGTNALBY.png\" group-title=\"央视\",cgtnar-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cgtnar.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cgtndocumentary\" tvg-name=\"cgtndocumentary\" tvg-logo=\"https://epg.v1.mk/logo/cgtndocumentary.png\" group-title=\"央视\",cgtndoc-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cgtndoc.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"CGTNEY\" tvg-name=\"CGTNEY\" tvg-logo=\"https://epg.v1.mk/logo/CGTNEY.png\" group-title=\"央视\",cgtnen-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cgtnen.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cgtnfrench\" tvg-name=\"cgtnfrench\" tvg-logo=\"https://epg.v1.mk/logo/cgtnfrench.png\" group-title=\"央视\",cgtnfr-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cgtnfr.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"CGTN1\" tvg-name=\"CGTN1\" tvg-logo=\"https://epg.v1.mk/logo/CGTN1.png\" group-title=\"央视\",cgtnru-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cgtnru.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"CGTN1\" tvg-name=\"CGTN1\" tvg-logo=\"https://epg.v1.mk/logo/CGTN1.png\" group-title=\"央视\",cgtnsp-高码") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cgtnsp.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv4k\" tvg-name=\"cctv4k\" tvg-logo=\"https://epg.v1.mk/logo/cctv4k.png\" group-title=\"4K频道\",cctv4k_10m") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv4k_10m.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv4k\" tvg-name=\"cctv4k\" tvg-logo=\"https://epg.v1.mk/logo/cctv4k.png\" group-title=\"4K频道\",cctv4k") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv4k.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv8k\" tvg-name=\"cctv8k\" tvg-logo=\"https://epg.v1.mk/logo/cctv8k.png\" group-title=\"8K频道\",cctv8k_36m") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv8k_36m.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"cctv8k\" tvg-name=\"cctv8k\" tvg-logo=\"https://epg.v1.mk/logo/cctv8k.png\" group-title=\"8K频道\",cctv8k_120m") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/ysptp/cctv8k_120m.m3u8") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"中国教育1台\" tvg-name=\"中国教育1台\" tvg-logo=\"https://epg.v1.mk/logo/中国教育1台.png\" group-title=\"其他\",中国教育电视台-1") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000002000002652.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"中国教育1台\" tvg-name=\"中国教育1台\" tvg-logo=\"https://epg.v1.mk/logo/中国教育1台.png\" group-title=\"其他\",中国教育电视台-4") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031126.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"北京卫视\" tvg-name=\"北京卫视\" tvg-logo=\"https://epg.v1.mk/logo/北京卫视.png\" group-title=\"北京\",北京卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000001000020451.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"北京卫视\" tvg-name=\"北京卫视\" tvg-logo=\"https://epg.v1.mk/logo/北京卫视.png\" group-title=\"北京\",北京卫视-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265027.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"北京纪实科教\" tvg-name=\"北京纪实科教\" tvg-logo=\"https://epg.v1.mk/logo/北京纪实科教.png\" group-title=\"北京\",北京纪实科教") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000001910.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"北京纪实科教\" tvg-name=\"北京纪实科教\" tvg-logo=\"https://epg.v1.mk/logo/北京纪实科教.png\" group-title=\"北京\",北京纪实科教-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265020.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"北京卡酷少儿\" tvg-name=\"北京卡酷少儿\" tvg-logo=\"https://epg.v1.mk/logo/北京卡酷少儿.png\" group-title=\"北京\",北京卡酷少儿") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/7851974109718180595.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"安徽卫视\" tvg-name=\"安徽卫视\" tvg-logo=\"https://epg.v1.mk/logo/安徽卫视.png\" group-title=\"安徽\",安徽卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000030159.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"安徽卫视\" tvg-name=\"安徽卫视\" tvg-logo=\"https://epg.v1.mk/logo/安徽卫视.png\" group-title=\"安徽\",安徽卫视-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000001000009954.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"安徽卫视\" tvg-name=\"安徽卫视\" tvg-logo=\"https://epg.v1.mk/logo/安徽卫视.png\" group-title=\"安徽\",安徽卫视-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265025.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"东南卫视\" tvg-name=\"东南卫视\" tvg-logo=\"https://epg.v1.mk/logo/东南卫视.png\" group-title=\"卫视\",东南卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000004000010584.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"东南卫视\" tvg-name=\"东南卫视\" tvg-logo=\"https://epg.v1.mk/logo/东南卫视.png\" group-title=\"卫视\",东南卫视-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265033.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"甘肃卫视\" tvg-name=\"甘肃卫视\" tvg-logo=\"https://epg.v1.mk/logo/甘肃卫视.png\" group-title=\"甘肃\",甘肃卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031121.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"广东卫视\" tvg-name=\"广东卫视\" tvg-logo=\"https://epg.v1.mk/logo/广东卫视.png\" group-title=\"广东\",广东卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000014176.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"广东卫视\" tvg-name=\"广东卫视\" tvg-logo=\"https://epg.v1.mk/logo/广东卫视.png\" group-title=\"广东\",广东卫视-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000001000031076.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"广东卫视\" tvg-name=\"广东卫视\" tvg-logo=\"https://epg.v1.mk/logo/广东卫视.png\" group-title=\"广东\",广东卫视-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265034.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"广西卫视\" tvg-name=\"广西卫视\" tvg-logo=\"https://epg.v1.mk/logo/广西卫视.png\" group-title=\"卫视\",广西卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031118.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"贵州卫视\" tvg-name=\"贵州卫视\" tvg-logo=\"https://epg.v1.mk/logo/贵州卫视.png\" group-title=\"贵州\",贵州卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000004000025843.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"海南卫视\" tvg-name=\"海南卫视\" tvg-logo=\"https://epg.v1.mk/logo/海南卫视.png\" group-title=\"海南\",海南卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000004000006211.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"河北卫视\" tvg-name=\"河北卫视\" tvg-logo=\"https://epg.v1.mk/logo/河北卫视.png\" group-title=\"河北\",河北卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000006000040016.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"河南卫视\" tvg-name=\"河南卫视\" tvg-logo=\"https://epg.v1.mk/logo/河南卫视.png\" group-title=\"河南\",河南卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031119.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"黑龙江卫视\" tvg-name=\"黑龙江卫视\" tvg-logo=\"https://epg.v1.mk/logo/黑龙江卫视.png\" group-title=\"黑龙江\",黑龙江卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000001925.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"黑龙江卫视\" tvg-name=\"黑龙江卫视\" tvg-logo=\"https://epg.v1.mk/logo/黑龙江卫视.png\" group-title=\"黑龙江\",黑龙江卫视-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000001000016510.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"黑龙江卫视\" tvg-name=\"黑龙江卫视\" tvg-logo=\"https://epg.v1.mk/logo/黑龙江卫视.png\" group-title=\"黑龙江\",黑龙江卫视-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265029.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"湖北卫视\" tvg-name=\"湖北卫视\" tvg-logo=\"https://epg.v1.mk/logo/湖北卫视.png\" group-title=\"湖北\",湖北卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000024621.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"湖北卫视\" tvg-name=\"湖北卫视\" tvg-logo=\"https://epg.v1.mk/logo/湖北卫视.png\" group-title=\"湖北\",湖北卫视-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000001000015436.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"湖北卫视\" tvg-name=\"湖北卫视\" tvg-logo=\"https://epg.v1.mk/logo/湖北卫视.png\" group-title=\"湖北\",湖北卫视-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265023.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"湖南卫视\" tvg-name=\"湖南卫视\" tvg-logo=\"https://epg.v1.mk/logo/湖南卫视.png\" group-title=\"湖南\",湖南卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000004000006692.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"湖南卫视4\" tvg-name=\"湖南卫视4\" tvg-logo=\"https://epg.v1.mk/logo/湖南卫视4.png\" group-title=\"湖南\",湖南卫视-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000001000018044.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"湖南卫视\" tvg-name=\"湖南卫视\" tvg-logo=\"https://epg.v1.mk/logo/湖南卫视.png\" group-title=\"湖南\",湖南卫视-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265024.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"湖南金鹰纪实\" tvg-name=\"湖南金鹰纪实\" tvg-logo=\"https://epg.v1.mk/logo/湖南金鹰纪实.png\" group-title=\"湖南\",湖南金鹰纪实") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031203.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"湖南\" tvg-name=\"湖南\" tvg-logo=\"https://epg.v1.mk/logo/湖南.png\" group-title=\"湖南\",湖南快乐垂钓") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031206.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"湖南茶频道\" tvg-name=\"湖南茶频道\" tvg-logo=\"https://epg.v1.mk/logo/湖南茶频道.png\" group-title=\"湖南\",湖南茶频道") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031209.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"吉林卫视\" tvg-name=\"吉林卫视\" tvg-logo=\"https://epg.v1.mk/logo/吉林卫视.png\" group-title=\"吉林\",吉林卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031117.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"江苏卫视\" tvg-name=\"江苏卫视\" tvg-logo=\"https://epg.v1.mk/logo/江苏卫视.png\" group-title=\"江苏\",江苏卫视-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000001000014861.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"江苏卫视\" tvg-name=\"江苏卫视\" tvg-logo=\"https://epg.v1.mk/logo/江苏卫视.png\" group-title=\"江苏\",江苏卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000001828.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"江苏卫视\" tvg-name=\"江苏卫视\" tvg-logo=\"https://epg.v1.mk/logo/江苏卫视.png\" group-title=\"江苏\",江苏卫视-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265030.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"江西卫视\" tvg-name=\"江西卫视\" tvg-logo=\"https://epg.v1.mk/logo/江西卫视.png\" group-title=\"江西\",江西卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000006000268001.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"江西卫视\" tvg-name=\"江西卫视\" tvg-logo=\"https://epg.v1.mk/logo/江西卫视.png\" group-title=\"江西\",江西卫视-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265032.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"辽宁卫视\" tvg-name=\"辽宁卫视\" tvg-logo=\"https://epg.v1.mk/logo/辽宁卫视.png\" group-title=\"辽宁\",辽宁卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000004000011671.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"辽宁卫视\" tvg-name=\"辽宁卫视\" tvg-logo=\"https://epg.v1.mk/logo/辽宁卫视.png\" group-title=\"辽宁\",辽宁卫视-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265022.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"青海卫视\" tvg-name=\"青海卫视\" tvg-logo=\"https://epg.v1.mk/logo/青海卫视.png\" group-title=\"青海\",青海卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000002000013359.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"山东卫视\" tvg-name=\"山东卫视\" tvg-logo=\"https://epg.v1.mk/logo/山东卫视.png\" group-title=\"山东\",山东卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000016568.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"山东卫视\" tvg-name=\"山东卫视\" tvg-logo=\"https://epg.v1.mk/logo/山东卫视.png\" group-title=\"山东\",山东卫视-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000001000004134.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"山东卫视\" tvg-name=\"山东卫视\" tvg-logo=\"https://epg.v1.mk/logo/山东卫视.png\" group-title=\"山东\",山东卫视-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265019.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"上海东方影视\" tvg-name=\"上海东方影视\" tvg-logo=\"https://epg.v1.mk/logo/上海东方影视.png\" group-title=\"上海\",上海东方卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000001000003639.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"上海东方影视\" tvg-name=\"上海东方影视\" tvg-logo=\"https://epg.v1.mk/logo/上海东方影视.png\" group-title=\"上海\",上海东方卫视-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000004000014098.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"上海东方影视\" tvg-name=\"上海东方影视\" tvg-logo=\"https://epg.v1.mk/logo/上海东方影视.png\" group-title=\"上海\",上海东方卫视-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265018.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"上海ICS\" tvg-name=\"上海ICS\" tvg-logo=\"https://epg.v1.mk/logo/上海ICS.png\" group-title=\"上海\",上海-ICS-外语") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000010000030951.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"上海第一财经\" tvg-name=\"上海第一财经\" tvg-logo=\"https://epg.v1.mk/logo/上海第一财经.png\" group-title=\"上海\",上海第一财经") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000010000027146.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"上海东方影视\" tvg-name=\"上海东方影视\" tvg-logo=\"https://epg.v1.mk/logo/上海东方影视.png\" group-title=\"上海\",上海东方财经") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000007000010003.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"上海东方影视\" tvg-name=\"上海东方影视\" tvg-logo=\"https://epg.v1.mk/logo/上海东方影视.png\" group-title=\"上海\",上海东方影视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000010000032212.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"上海都市\" tvg-name=\"上海都市\" tvg-logo=\"https://epg.v1.mk/logo/上海都市.png\" group-title=\"上海\",上海都市") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000010000018926.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"上海ICS\" tvg-name=\"上海ICS\" tvg-logo=\"https://epg.v1.mk/logo/上海ICS.png\" group-title=\"上海\",上海法治天地") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/2000000002000000014.m3u8?cdn=hnbblive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"上海ICS\" tvg-name=\"上海ICS\" tvg-logo=\"https://epg.v1.mk/logo/上海ICS.png\" group-title=\"上海\",上海哈哈炫动") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031123.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"上海纪实人文\" tvg-name=\"上海纪实人文\" tvg-logo=\"https://epg.v1.mk/logo/上海纪实人文.png\" group-title=\"上海\",上海纪实人文-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000004000010282.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"上海纪实人文\" tvg-name=\"上海纪实人文\" tvg-logo=\"https://epg.v1.mk/logo/上海纪实人文.png\" group-title=\"上海\",上海纪实人文-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265021.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"上海五星体育\" tvg-name=\"上海五星体育\" tvg-logo=\"https://epg.v1.mk/logo/上海五星体育.png\" group-title=\"上海\",上海五星体育") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000010000017540.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"上海新闻综合\" tvg-name=\"上海新闻综合\" tvg-logo=\"https://epg.v1.mk/logo/上海新闻综合.png\" group-title=\"上海\",上海新闻综合") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031110.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"深圳卫视\" tvg-name=\"深圳卫视\" tvg-logo=\"https://epg.v1.mk/logo/深圳卫视.png\" group-title=\"卫视\",深圳卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000004000007410.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"深圳卫视\" tvg-name=\"深圳卫视\" tvg-logo=\"https://epg.v1.mk/logo/深圳卫视.png\" group-title=\"卫视\",深圳卫视-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000001000002116.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"深圳卫视\" tvg-name=\"深圳卫视\" tvg-logo=\"https://epg.v1.mk/logo/深圳卫视.png\" group-title=\"卫视\",深圳卫视-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265028.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"四川卫视\" tvg-name=\"四川卫视\" tvg-logo=\"https://epg.v1.mk/logo/四川卫视.png\" group-title=\"四川\",四川卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000004000006119.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"天津卫视\" tvg-name=\"天津卫视\" tvg-logo=\"https://epg.v1.mk/logo/天津卫视.png\" group-title=\"卫视\",天津卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000004000006827.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"天津卫视\" tvg-name=\"天津卫视\" tvg-logo=\"https://epg.v1.mk/logo/天津卫视.png\" group-title=\"卫视\",天津卫视-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000001000009186.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"天津卫视\" tvg-name=\"天津卫视\" tvg-logo=\"https://epg.v1.mk/logo/天津卫视.png\" group-title=\"卫视\",天津卫视-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265026.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"云南卫视\" tvg-name=\"云南卫视\" tvg-logo=\"https://epg.v1.mk/logo/云南卫视.png\" group-title=\"云南\",云南卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031120.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"浙江卫视\" tvg-name=\"浙江卫视\" tvg-logo=\"https://epg.v1.mk/logo/浙江卫视.png\" group-title=\"浙江\",浙江卫视-50-FPS") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000004000007275.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"浙江卫视\" tvg-name=\"浙江卫视\" tvg-logo=\"https://epg.v1.mk/logo/浙江卫视.png\" group-title=\"浙江\",浙江卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000014260.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"浙江卫视\" tvg-name=\"浙江卫视\" tvg-logo=\"https://epg.v1.mk/logo/浙江卫视.png\" group-title=\"浙江\",浙江卫视-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265031.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"重庆卫视\" tvg-name=\"重庆卫视\" tvg-logo=\"https://epg.v1.mk/logo/重庆卫视.png\" group-title=\"重庆\",重庆卫视") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000001096.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"重庆卫视\" tvg-name=\"重庆卫视\" tvg-logo=\"https://epg.v1.mk/logo/重庆卫视.png\" group-title=\"重庆\",重庆卫视-HEVC") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000265017.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"华数4K\" tvg-name=\"华数4K\" tvg-logo=\"https://epg.v1.mk/logo/华数4K.png\" group-title=\"4K频道\",华数-4K") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000003000004748.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"纯享4K\" tvg-name=\"纯享4K\" tvg-logo=\"https://epg.v1.mk/logo/纯享4K.png\" group-title=\"4K频道\",纯享-4K") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000004000011651.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"咪咕4K\" tvg-name=\"咪咕4K\" tvg-logo=\"https://epg.v1.mk/logo/咪咕4K.png\" group-title=\"4K频道\",咪咕4K-1") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/3000000010000005180.m3u8?cdn=FifastbLive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"咪咕4K\" tvg-name=\"咪咕4K\" tvg-logo=\"https://epg.v1.mk/logo/咪咕4K.png\" group-title=\"4K频道\",咪咕4K-2") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/3000000010000015686.m3u8?cdn=FifastbLive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"咪咕4k\" tvg-name=\"咪咕4k\" tvg-logo=\"https://epg.v1.mk/logo/咪咕4k.png\" group-title=\"其他\",咪咕全民热练") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/3000000020000031315.m3u8?cdn=FifastbLive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"求索动物\" tvg-name=\"求索动物\" tvg-logo=\"https://epg.v1.mk/logo/求索动物.png\" group-title=\"其他\",求索动物") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000002000010046.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"求索纪录\" tvg-name=\"求索纪录\" tvg-logo=\"https://epg.v1.mk/logo/求索纪录.png\" group-title=\"其他\",求索纪录") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000002000032052.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"求索科学\" tvg-name=\"求索科学\" tvg-logo=\"https://epg.v1.mk/logo/求索科学.png\" group-title=\"其他\",求索科学") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000002000032344.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"求索生活\" tvg-name=\"求索生活\" tvg-logo=\"https://epg.v1.mk/logo/求索生活.png\" group-title=\"其他\",求索生活") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000002000003382.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"NewTV精品综合\" tvg-name=\"NewTV精品综合\" tvg-logo=\"https://epg.v1.mk/logo/NewTV精品综合.png\" group-title=\"NEWTV\",NewTV-精品综合") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000004000019008.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"newtv精品大剧\" tvg-name=\"newtv精品大剧\" tvg-logo=\"https://epg.v1.mk/logo/newtv精品大剧.png\" group-title=\"NEWTV\",NewTV-精品大剧") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000004000013968.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"newtv精品纪录\" tvg-name=\"newtv精品纪录\" tvg-logo=\"https://epg.v1.mk/logo/newtv精品纪录.png\" group-title=\"NEWTV\",NewTV-精品纪录") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000004000013730.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"newtv精品体育\" tvg-name=\"newtv精品体育\" tvg-logo=\"https://epg.v1.mk/logo/newtv精品体育.png\" group-title=\"NEWTV\",NewTV-精品体育") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000004000014634.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"NEWTV精品萌宠\" tvg-name=\"NEWTV精品萌宠\" tvg-logo=\"https://epg.v1.mk/logo/NEWTV精品萌宠.png\" group-title=\"NEWTV\",NewTV-精品萌宠") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000006000032328.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"newtv爱情喜剧\" tvg-name=\"newtv爱情喜剧\" tvg-logo=\"https://epg.v1.mk/logo/newtv爱情喜剧.png\" group-title=\"NEWTV\",NewTV-爱情喜剧") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/2000000003000000010.m3u8?cdn=hnbblive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"newtv超级电视剧\" tvg-name=\"newtv超级电视剧\" tvg-logo=\"https://epg.v1.mk/logo/newtv超级电视剧.png\" group-title=\"NEWTV\",NewTV-超级电视剧") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000006000268003.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"newtv超级电影\" tvg-name=\"newtv超级电影\" tvg-logo=\"https://epg.v1.mk/logo/newtv超级电影.png\" group-title=\"NEWTV\",NewTV-超级电影") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000003000012426.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"newtv超级体育\" tvg-name=\"newtv超级体育\" tvg-logo=\"https://epg.v1.mk/logo/newtv超级体育.png\" group-title=\"NEWTV\",NewTV-超级体育") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000009601.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"newtv超级综艺\" tvg-name=\"newtv超级综艺\" tvg-logo=\"https://epg.v1.mk/logo/newtv超级综艺.png\" group-title=\"NEWTV\",NewTV-超级综艺") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000006000268002.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"newtv潮妈辣婆\" tvg-name=\"newtv潮妈辣婆\" tvg-logo=\"https://epg.v1.mk/logo/newtv潮妈辣婆.png\" group-title=\"NEWTV\",NewTV-潮妈辣婆") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/2000000003000000018.m3u8?cdn=hnbblive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"NewTV东北热剧\" tvg-name=\"NewTV东北热剧\" tvg-logo=\"https://epg.v1.mk/logo/NewTV东北热剧.png\" group-title=\"NEWTV\",NewTV-东北热剧") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000266013.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"newtv动作电影\" tvg-name=\"newtv动作电影\" tvg-logo=\"https://epg.v1.mk/logo/newtv动作电影.png\" group-title=\"NEWTV\",NewTV-动作电影") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000004000018653.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"NewTV古装剧场\" tvg-name=\"NewTV古装剧场\" tvg-logo=\"https://epg.v1.mk/logo/NewTV古装剧场.png\" group-title=\"NEWTV\",NewTV-古装剧场") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/2000000003000000024.m3u8?cdn=hnbblive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"NewTV欢乐剧场\" tvg-name=\"NewTV欢乐剧场\" tvg-logo=\"https://epg.v1.mk/logo/NewTV欢乐剧场.png\" group-title=\"NEWTV\",NewTV-欢乐剧场") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000266012.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"newtv家庭剧场\" tvg-name=\"newtv家庭剧场\" tvg-logo=\"https://epg.v1.mk/logo/newtv家庭剧场.png\" group-title=\"NEWTV\",NewTV-家庭剧场") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000004000008284.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"NewTV金牌综艺\" tvg-name=\"NewTV金牌综艺\" tvg-logo=\"https://epg.v1.mk/logo/NewTV金牌综艺.png\" group-title=\"NEWTV\",NewTV-金牌综艺") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000004000026167.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"newtv惊悚悬疑\" tvg-name=\"newtv惊悚悬疑\" tvg-logo=\"https://epg.v1.mk/logo/newtv惊悚悬疑.png\" group-title=\"NEWTV\",NewTV-惊悚悬疑") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000004000024282.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"newtv军旅剧场\" tvg-name=\"newtv军旅剧场\" tvg-logo=\"https://epg.v1.mk/logo/newtv军旅剧场.png\" group-title=\"NEWTV\",NewTV-军旅剧场") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/2000000003000000014.m3u8?cdn=hnbblive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"newtv军事评论\" tvg-name=\"newtv军事评论\" tvg-logo=\"https://epg.v1.mk/logo/newtv军事评论.png\" group-title=\"NEWTV\",NewTV-军事评论") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/2000000003000000022.m3u8?cdn=hnbblive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"NewTV魅力潇湘\" tvg-name=\"NewTV魅力潇湘\" tvg-logo=\"https://epg.v1.mk/logo/NewTV魅力潇湘.png\" group-title=\"NEWTV\",NewTV-魅力潇湘") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000006197.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"NewTV明星大片\" tvg-name=\"NewTV明星大片\" tvg-logo=\"https://epg.v1.mk/logo/NewTV明星大片.png\" group-title=\"NEWTV\",NewTV-明星大片") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/2000000003000000016.m3u8?cdn=hnbblive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"newtv农业致富\" tvg-name=\"newtv农业致富\" tvg-logo=\"https://epg.v1.mk/logo/newtv农业致富.png\" group-title=\"NEWTV\",NewTV-农业致富") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/2000000003000000003.m3u8?cdn=hnbblive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"NEWTV武博世界\" tvg-name=\"NEWTV武博世界\" tvg-logo=\"https://epg.v1.mk/logo/NEWTV武博世界.png\" group-title=\"NEWTV\",NewTV-武博世界") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/2000000003000000007.m3u8?cdn=hnbblive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"newtv炫舞未来\" tvg-name=\"newtv炫舞未来\" tvg-logo=\"https://epg.v1.mk/logo/newtv炫舞未来.png\" group-title=\"NEWTV\",NewTV-炫舞未来") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000000515.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"newtv怡伴健康\" tvg-name=\"newtv怡伴健康\" tvg-logo=\"https://epg.v1.mk/logo/newtv怡伴健康.png\" group-title=\"NEWTV\",NewTV-怡伴健康") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000005000266011.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"newtv中国功夫\" tvg-name=\"newtv中国功夫\" tvg-logo=\"https://epg.v1.mk/logo/newtv中国功夫.png\" group-title=\"NEWTV\",NewTV-中国功夫") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/2000000003000000009.m3u8?cdn=hnbblive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"NEWTV黑莓电影\" tvg-name=\"NEWTV黑莓电影\" tvg-logo=\"https://epg.v1.mk/logo/NEWTV黑莓电影.png\" group-title=\"NEWTV\",NewTV-黑莓电影") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000004000019624.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"NEWTV黑莓动画\" tvg-name=\"NEWTV黑莓动画\" tvg-logo=\"https://epg.v1.mk/logo/NEWTV黑莓动画.png\" group-title=\"NEWTV\",NewTV-黑莓动画") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000004000021734.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"NEWTVCJDY\" tvg-name=\"NEWTVCJDY\" tvg-logo=\"https://epg.v1.mk/logo/NEWTVCJDY.png\" group-title=\"NEWTV\",NewTV-哒啵电竞") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000006000032327.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"NEWTVCJDY\" tvg-name=\"NEWTVCJDY\" tvg-logo=\"https://epg.v1.mk/logo/NEWTVCJDY.png\" group-title=\"NEWTV\",NewTV-哒啵赛事") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/1000000001000003775.m3u8?cdn=ystenlive") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"SITV\" tvg-name=\"SITV\" tvg-logo=\"https://epg.v1.mk/logo/SITV.png\" group-title=\"其他\",SiTV-动漫秀场") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031113.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"SITV都市剧场\" tvg-name=\"SITV都市剧场\" tvg-logo=\"https://epg.v1.mk/logo/SITV都市剧场.png\" group-title=\"其他\",SiTV-都市剧场") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031111.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"SITV法治天地\" tvg-name=\"SITV法治天地\" tvg-logo=\"https://epg.v1.mk/logo/SITV法治天地.png\" group-title=\"其他\",SiTV-法治天地") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/9001547084732463424.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"SITV欢笑剧场\" tvg-name=\"SITV欢笑剧场\" tvg-logo=\"https://epg.v1.mk/logo/SITV欢笑剧场.png\" group-title=\"其他\",SiTV-欢笑剧场") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000002000009455.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"SITV欢笑剧场\" tvg-name=\"SITV欢笑剧场\" tvg-logo=\"https://epg.v1.mk/logo/SITV欢笑剧场.png\" group-title=\"其他\",SiTV-欢笑剧场-4K") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000007000010001.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"SITV金色学堂\" tvg-name=\"SITV金色学堂\" tvg-logo=\"https://epg.v1.mk/logo/SITV金色学堂.png\" group-title=\"其他\",SiTV-金色学堂") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000010000026105.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"SITV劲爆体育\" tvg-name=\"SITV劲爆体育\" tvg-logo=\"https://epg.v1.mk/logo/SITV劲爆体育.png\" group-title=\"其他\",SiTV-劲爆体育") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000002000029972.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"SITV乐游\" tvg-name=\"SITV乐游\" tvg-logo=\"https://epg.v1.mk/logo/SITV乐游.png\" group-title=\"其他\",SiTV-乐游") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031112.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"SITV\" tvg-name=\"SITV\" tvg-logo=\"https://epg.v1.mk/logo/SITV.png\" group-title=\"其他\",SiTV-魅力足球") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031207.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"SITV七彩戏剧\" tvg-name=\"SITV七彩戏剧\" tvg-logo=\"https://epg.v1.mk/logo/SITV七彩戏剧.png\" group-title=\"其他\",SiTV-七彩戏剧") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031116.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"SITV\" tvg-name=\"SITV\" tvg-logo=\"https://epg.v1.mk/logo/SITV.png\" group-title=\"其他\",SiTV-生活时尚") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000002000019634.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"SITV\" tvg-name=\"SITV\" tvg-logo=\"https://epg.v1.mk/logo/SITV.png\" group-title=\"其他\",SiTV-游戏风云") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/5000000011000031114.m3u8?cdn=bestzb") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"IHOT爱电竞\" tvg-name=\"IHOT爱电竞\" tvg-logo=\"https://epg.v1.mk/logo/IHOT爱电竞.png\" group-title=\"IHOT\",iHOT-爱电竞") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000006000230630.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"IHOT爱谍战\" tvg-name=\"IHOT爱谍战\" tvg-logo=\"https://epg.v1.mk/logo/IHOT爱谍战.png\" group-title=\"IHOT\",iHOT-爱谍战") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000006000070630.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"IHOT爱动漫\" tvg-name=\"IHOT爱动漫\" tvg-logo=\"https://epg.v1.mk/logo/IHOT爱动漫.png\" group-title=\"IHOT\",iHOT-爱动漫") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000006000280630.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"IHOT爱都市\" tvg-name=\"IHOT爱都市\" tvg-logo=\"https://epg.v1.mk/logo/IHOT爱都市.png\" group-title=\"IHOT\",iHOT-爱都市") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000006000080630.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"IHOT爱怀旧\" tvg-name=\"IHOT爱怀旧\" tvg-logo=\"https://epg.v1.mk/logo/IHOT爱怀旧.png\" group-title=\"IHOT\",iHOT-爱怀旧") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000006000260630.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"IHOT爱经典\" tvg-name=\"IHOT爱经典\" tvg-logo=\"https://epg.v1.mk/logo/IHOT爱经典.png\" group-title=\"IHOT\",iHOT-爱经典") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000006000060630.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"IHOT爱科幻\" tvg-name=\"IHOT爱科幻\" tvg-logo=\"https://epg.v1.mk/logo/IHOT爱科幻.png\" group-title=\"IHOT\",iHOT-爱科幻") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000006000020630.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"IHOT爱科学\" tvg-name=\"IHOT爱科学\" tvg-logo=\"https://epg.v1.mk/logo/IHOT爱科学.png\" group-title=\"IHOT\",iHOT-爱科学") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000006000160630.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"IHOT爱浪漫\" tvg-name=\"IHOT爱浪漫\" tvg-logo=\"https://epg.v1.mk/logo/IHOT爱浪漫.png\" group-title=\"IHOT\",iHOT-爱浪漫") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000006000040630.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"IHOT爱历史\" tvg-name=\"IHOT爱历史\" tvg-logo=\"https://epg.v1.mk/logo/IHOT爱历史.png\" group-title=\"IHOT\",iHOT-爱历史") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000006000150630.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"IHOT爱旅行\" tvg-name=\"IHOT爱旅行\" tvg-logo=\"https://epg.v1.mk/logo/IHOT爱旅行.png\" group-title=\"IHOT\",iHOT-爱旅行") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000006000250630.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"IHOT爱奇谈\" tvg-name=\"IHOT爱奇谈\" tvg-logo=\"https://epg.v1.mk/logo/IHOT爱奇谈.png\" group-title=\"IHOT\",iHOT-爱奇谈") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000006000270630.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"IHOT爱青春\" tvg-name=\"IHOT爱青春\" tvg-logo=\"https://epg.v1.mk/logo/IHOT爱青春.png\" group-title=\"IHOT\",iHOT-爱青春") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000006000100630.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"IHOT爱赛车\" tvg-name=\"IHOT爱赛车\" tvg-logo=\"https://epg.v1.mk/logo/IHOT爱赛车.png\" group-title=\"IHOT\",iHOT-爱赛车") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000006000240630.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"IHOT爱体育\" tvg-name=\"IHOT爱体育\" tvg-logo=\"https://epg.v1.mk/logo/IHOT爱体育.png\" group-title=\"IHOT\",iHOT-爱体育") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000006000290630.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"IHOT爱玩具\" tvg-name=\"IHOT爱玩具\" tvg-logo=\"https://epg.v1.mk/logo/IHOT爱玩具.png\" group-title=\"IHOT\",iHOT-爱玩具") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000006000220630.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"IHOT爱喜剧\" tvg-name=\"IHOT爱喜剧\" tvg-logo=\"https://epg.v1.mk/logo/IHOT爱喜剧.png\" group-title=\"IHOT\",iHOT-爱喜剧") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000006000010630.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"IHOT爱悬疑\" tvg-name=\"IHOT爱悬疑\" tvg-logo=\"https://epg.v1.mk/logo/IHOT爱悬疑.png\" group-title=\"IHOT\",iHOT-爱悬疑") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000006000050630.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"IHOT爱幼教\" tvg-name=\"IHOT爱幼教\" tvg-logo=\"https://epg.v1.mk/logo/IHOT爱幼教.png\" group-title=\"IHOT\",iHOT-爱幼教") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000006000180630.m3u8?cdn=wasusyt") + fmt.Fprintln(c.Writer, "#EXTINF:-1,tvg-id=\"IHOT爱院线\" tvg-name=\"IHOT爱院线\" tvg-logo=\"https://epg.v1.mk/logo/IHOT爱院线.png\" group-title=\"IHOT\",iHOT-爱院线") + fmt.Fprintln(c.Writer, "http://"+c.Request.Host+"/itv/6000000006000030630.m3u8?cdn=wasusyt") +} diff --git a/Golang/liveurls/itv.go b/Golang/liveurls/itv.go new file mode 100644 index 0000000..1bba60b --- /dev/null +++ b/Golang/liveurls/itv.go @@ -0,0 +1,341 @@ +package liveurls + +import ( + "context" + "github.com/gin-gonic/gin" + "io" + "net" + "net/http" + "regexp" + "strings" + "sync" + "time" +) + +type Itv struct { +} + +var ( + hostMappings = map[string]string{ + "cache.ott.ystenlive.itv.cmvideo.cn": "feiyangdigital.tg.ystenlive.ottdns.com", + "cache.ott.bestlive.itv.cmvideo.cn": "feiyangdigital.tg.bestlive.ottdns.com", + "cache.ott.wasulive.itv.cmvideo.cn": "feiyangdigital.tg.wasulive.ottdns.com", + "cache.ott.fifalive.itv.cmvideo.cn": "feiyangdigital.tg.fifalive.ottdns.com", + "cache.ott.hnbblive.itv.cmvideo.cn": "feiyangdigital.tg.hnbblive.ottdns.com", + } + programList = map[string]string{ + "wasusyt/6000000001000029752.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000001000029752/1.m3u8?channel-id=wasusyt&Contentid=6000000001000029752&livemode=1&stbId=3", + "bestzb/5000000004000002226.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000004000002226/1.m3u8?channel-id=bestzb&Contentid=5000000004000002226&livemode=1&stbId=3", + "ystenlive/1000000005000265001.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265001/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265001&livemode=1&stbId=3", + "ystenlive/1000000001000023315.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000001000023315/1.m3u8?channel-id=ystenlive&Contentid=1000000001000023315&livemode=1&stbId=3", + "wasusyt/6000000001000014161.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000001000014161/1.m3u8?channel-id=wasusyt&Contentid=6000000001000014161&livemode=1&stbId=3", + "wasusyt/6000000001000022313.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000001000022313/1.m3u8?channel-id=wasusyt&Contentid=6000000001000022313&livemode=1&stbId=3", + "ystenlive/1000000005000265003.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265003/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265003&livemode=1&stbId=3", + "bestzb/5000000011000031102.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031102/1.m3u8?channel-id=bestzb&Contentid=5000000011000031102&livemode=1&stbId=3", + "ystenlive/1000000005000265004.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265004/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265004&livemode=1&stbId=3", + "ystenlive/1000000005000025222.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000025222/1.m3u8?channel-id=ystenlive&Contentid=1000000005000025222&livemode=1&stbId=3", + "ystenlive/1000000005000265005.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265005/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265005&livemode=1&stbId=3", + "wasusyt/6000000001000015875.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000001000015875/1.m3u8?channel-id=wasusyt&Contentid=6000000001000015875&livemode=1&stbId=3", + "ystenlive/1000000005000265016.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265016/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265016&livemode=1&stbId=3", + "ystenlive/1000000001000001737.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000001000001737/1.m3u8?channel-id=ystenlive&Contentid=1000000001000001737&livemode=1&stbId=3", + "wasusyt/6000000001000004574.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000001000004574/1.m3u8?channel-id=wasusyt&Contentid=6000000001000004574&livemode=1&stbId=3", + "ystenlive/1000000005000265006.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265006/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265006&livemode=1&stbId=3", + "ystenlive/1000000001000024341.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000001000024341/1.m3u8?channel-id=ystenlive&Contentid=1000000001000024341&livemode=1&stbId=3", + "wasusyt/6000000001000009055.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000001000009055/1.m3u8?channel-id=wasusyt&Contentid=6000000001000009055&livemode=1&stbId=3", + "ystenlive/1000000005000265007.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265007/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265007&livemode=1&stbId=3", + "wasusyt/6000000001000001070.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000001000001070/1.m3u8?channel-id=wasusyt&Contentid=6000000001000001070&livemode=1&stbId=3", + "ystenlive/1000000005000265008.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265008/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265008&livemode=1&stbId=3", + "ystenlive/1000000001000014583.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000001000014583/1.m3u8?channel-id=ystenlive&Contentid=1000000001000014583&livemode=1&stbId=3", + "wasusyt/6000000001000032162.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000001000032162/1.m3u8?channel-id=wasusyt&Contentid=6000000001000032162&livemode=1&stbId=3", + "ystenlive/1000000005000265009.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265009/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265009&livemode=1&stbId=3", + "ystenlive/1000000001000023734.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000001000023734/1.m3u8?channel-id=ystenlive&Contentid=1000000001000023734&livemode=1&stbId=3", + "bestzb/5000000004000012827.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000004000012827/1.m3u8?channel-id=bestzb&Contentid=5000000004000012827&livemode=1&stbId=3", + "ystenlive/1000000005000265010.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265010/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265010&livemode=1&stbId=3", + "bestzb/5000000011000031106.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031106/1.m3u8?channel-id=bestzb&Contentid=5000000011000031106&livemode=1&stbId=3", + "ystenlive/1000000005000265011.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265011/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265011&livemode=1&stbId=3", + "ystenlive/1000000001000032494.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000001000032494/1.m3u8?channel-id=ystenlive&Contentid=1000000001000032494&livemode=1&stbId=3", + "wasusyt/6000000001000022586.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000001000022586/1.m3u8?channel-id=wasusyt&Contentid=6000000001000022586&livemode=1&stbId=3", + "ystenlive/1000000005000265012.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265012/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265012&livemode=1&stbId=3", + "bestzb/5000000011000031108.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031108/1.m3u8?channel-id=bestzb&Contentid=5000000011000031108&livemode=1&stbId=3", + "ystenlive/1000000001000008170.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000001000008170/1.m3u8?channel-id=ystenlive&Contentid=1000000001000008170&livemode=1&stbId=3", + "bestzb/5000000004000006673.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000004000006673/1.m3u8?channel-id=bestzb&Contentid=5000000004000006673&livemode=1&stbId=3", + "ystenlive/1000000005000265013.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265013/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265013&livemode=1&stbId=3", + "bestzb/5000000011000031109.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031109/1.m3u8?channel-id=bestzb&Contentid=5000000011000031109&livemode=1&stbId=3", + "ystenlive/1000000005000265014.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265014/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265014&livemode=1&stbId=3", + "ystenlive/1000000006000233002.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000006000233002/1.m3u8?channel-id=ystenlive&Contentid=1000000006000233002&livemode=1&stbId=3", + "bestzb/5000000008000023254.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000008000023254/1.m3u8?channel-id=bestzb&Contentid=5000000008000023254&livemode=1&stbId=3", + "ystenlive/1000000006000268004.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000006000268004/1.m3u8?channel-id=ystenlive&Contentid=1000000006000268004&livemode=1&stbId=3", + "ystenlive/1000000005000265015.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265015/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265015&livemode=1&stbId=3", + "hnbblive/7745129417417101820.m3u8": "http://gslbserv.itv.cmvideo.cn:80/7745129417417101820/1.m3u8?channel-id=hnbblive&Contentid=7745129417417101820&livemode=1&stbId=3", + "hnbblive/7114647837765104058.m3u8": "http://gslbserv.itv.cmvideo.cn:80/7114647837765104058/1.m3u8?channel-id=hnbblive&Contentid=7114647837765104058&livemode=1&stbId=3", + "bestzb/5000000002000002652.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000002000002652/1.m3u8?channel-id=bestzb&Contentid=5000000002000002652&livemode=1&stbId=3", + "bestzb/5000000011000031126.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031126/1.m3u8?channel-id=bestzb&Contentid=5000000011000031126&livemode=1&stbId=3", + "wasusyt/6000000001000020451.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000001000020451/1.m3u8?channel-id=wasusyt&Contentid=6000000001000020451&livemode=1&stbId=3", + "ystenlive/1000000005000265027.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265027/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265027&livemode=1&stbId=3", + "ystenlive/1000000001000001910.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000001000001910/1.m3u8?channel-id=ystenlive&Contentid=1000000001000001910&livemode=1&stbId=3", + "ystenlive/1000000005000265020.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265020/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265020&livemode=1&stbId=3", + "bestzb/7851974109718180595.m3u8": "http://gslbserv.itv.cmvideo.cn:80/7851974109718180595/1.m3u8?channel-id=bestzb&Contentid=7851974109718180595&livemode=1&stbId=3", + "ystenlive/1000000001000030159.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000001000030159/1.m3u8?channel-id=ystenlive&Contentid=1000000001000030159&livemode=1&stbId=3", + "wasusyt/6000000001000009954.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000001000009954/1.m3u8?channel-id=wasusyt&Contentid=6000000001000009954&livemode=1&stbId=3", + "ystenlive/1000000005000265025.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265025/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265025&livemode=1&stbId=3", + "bestzb/5000000004000010584.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000004000010584/1.m3u8?channel-id=bestzb&Contentid=5000000004000010584&livemode=1&stbId=3", + "ystenlive/1000000005000265033.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265033/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265033&livemode=1&stbId=3", + "bestzb/5000000011000031121.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031121/1.m3u8?channel-id=bestzb&Contentid=5000000011000031121&livemode=1&stbId=3", + "ystenlive/1000000001000014176.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000001000014176/1.m3u8?channel-id=ystenlive&Contentid=1000000001000014176&livemode=1&stbId=3", + "wasusyt/6000000001000031076.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000001000031076/1.m3u8?channel-id=wasusyt&Contentid=6000000001000031076&livemode=1&stbId=3", + "ystenlive/1000000005000265034.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265034/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265034&livemode=1&stbId=3", + "bestzb/5000000011000031118.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031118/1.m3u8?channel-id=bestzb&Contentid=5000000011000031118&livemode=1&stbId=3", + "bestzb/5000000004000025843.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000004000025843/1.m3u8?channel-id=bestzb&Contentid=5000000004000025843&livemode=1&stbId=3", + "bestzb/5000000004000006211.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000004000006211/1.m3u8?channel-id=bestzb&Contentid=5000000004000006211&livemode=1&stbId=3", + "bestzb/5000000006000040016.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000006000040016/1.m3u8?channel-id=bestzb&Contentid=5000000006000040016&livemode=1&stbId=3", + "bestzb/5000000011000031119.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031119/1.m3u8?channel-id=bestzb&Contentid=5000000011000031119&livemode=1&stbId=3", + "ystenlive/1000000001000001925.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000001000001925/1.m3u8?channel-id=ystenlive&Contentid=1000000001000001925&livemode=1&stbId=3", + "wasusyt/6000000001000016510.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000001000016510/1.m3u8?channel-id=wasusyt&Contentid=6000000001000016510&livemode=1&stbId=3", + "ystenlive/1000000005000265029.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265029/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265029&livemode=1&stbId=3", + "ystenlive/1000000001000024621.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000001000024621/1.m3u8?channel-id=ystenlive&Contentid=1000000001000024621&livemode=1&stbId=3", + "wasusyt/6000000001000015436.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000001000015436/1.m3u8?channel-id=wasusyt&Contentid=6000000001000015436&livemode=1&stbId=3", + "ystenlive/1000000005000265023.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265023/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265023&livemode=1&stbId=3", + "bestzb/5000000004000006692.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000004000006692/1.m3u8?channel-id=bestzb&Contentid=5000000004000006692&livemode=1&stbId=3", + "wasusyt/6000000001000018044.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000001000018044/1.m3u8?channel-id=wasusyt&Contentid=6000000001000018044&livemode=1&stbId=3", + "ystenlive/1000000005000265024.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265024/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265024&livemode=1&stbId=3", + "bestzb/5000000011000031203.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031203/1.m3u8?channel-id=bestzb&Contentid=5000000011000031203&livemode=1&stbId=3", + "bestzb/5000000011000031206.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031206/1.m3u8?channel-id=bestzb&Contentid=5000000011000031206&livemode=1&stbId=3", + "bestzb/5000000011000031209.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031209/1.m3u8?channel-id=bestzb&Contentid=5000000011000031209&livemode=1&stbId=3", + "bestzb/5000000011000031117.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031117/1.m3u8?channel-id=bestzb&Contentid=5000000011000031117&livemode=1&stbId=3", + "wasusyt/6000000001000014861.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000001000014861/1.m3u8?channel-id=wasusyt&Contentid=6000000001000014861&livemode=1&stbId=3", + "ystenlive/1000000001000001828.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000001000001828/1.m3u8?channel-id=ystenlive&Contentid=1000000001000001828&livemode=1&stbId=3", + "ystenlive/1000000005000265030.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265030/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265030&livemode=1&stbId=3", + "ystenlive/1000000006000268001.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000006000268001/1.m3u8?channel-id=ystenlive&Contentid=1000000006000268001&livemode=1&stbId=3", + "ystenlive/1000000005000265032.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265032/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265032&livemode=1&stbId=3", + "bestzb/5000000004000011671.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000004000011671/1.m3u8?channel-id=bestzb&Contentid=5000000004000011671&livemode=1&stbId=3", + "ystenlive/1000000005000265022.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265022/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265022&livemode=1&stbId=3", + "ystenlive/1000000002000013359.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000002000013359/1.m3u8?channel-id=ystenlive&Contentid=1000000002000013359&livemode=1&stbId=3", + "ystenlive/1000000001000016568.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000001000016568/1.m3u8?channel-id=ystenlive&Contentid=1000000001000016568&livemode=1&stbId=3", + "wasusyt/6000000001000004134.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000001000004134/1.m3u8?channel-id=wasusyt&Contentid=6000000001000004134&livemode=1&stbId=3", + "ystenlive/1000000005000265019.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265019/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265019&livemode=1&stbId=3", + "wasusyt/6000000001000003639.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000001000003639/1.m3u8?channel-id=wasusyt&Contentid=6000000001000003639&livemode=1&stbId=3", + "bestzb/5000000004000014098.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000004000014098/1.m3u8?channel-id=bestzb&Contentid=5000000004000014098&livemode=1&stbId=3", + "ystenlive/1000000005000265018.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265018/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265018&livemode=1&stbId=3", + "bestzb/5000000010000030951.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000010000030951/1.m3u8?channel-id=bestzb&Contentid=5000000010000030951&livemode=1&stbId=3", + "bestzb/5000000010000027146.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000010000027146/1.m3u8?channel-id=bestzb&Contentid=5000000010000027146&livemode=1&stbId=3", + "bestzb/5000000007000010003.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000007000010003/1.m3u8?channel-id=bestzb&Contentid=5000000007000010003&livemode=1&stbId=3", + "bestzb/5000000010000032212.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000010000032212/1.m3u8?channel-id=bestzb&Contentid=5000000010000032212&livemode=1&stbId=3", + "bestzb/5000000010000018926.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000010000018926/1.m3u8?channel-id=bestzb&Contentid=5000000010000018926&livemode=1&stbId=3", + "hnbblive/2000000002000000014.m3u8": "http://gslbserv.itv.cmvideo.cn:80/2000000002000000014/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000014&livemode=1&stbId=3", + "bestzb/5000000011000031123.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031123/1.m3u8?channel-id=bestzb&Contentid=5000000011000031123&livemode=1&stbId=3", + "bestzb/5000000004000010282.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000004000010282/1.m3u8?channel-id=bestzb&Contentid=5000000004000010282&livemode=1&stbId=3", + "ystenlive/1000000005000265021.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265021/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265021&livemode=1&stbId=3", + "bestzb/5000000010000017540.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000010000017540/1.m3u8?channel-id=bestzb&Contentid=5000000010000017540&livemode=1&stbId=3", + "bestzb/5000000011000031110.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031110/1.m3u8?channel-id=bestzb&Contentid=5000000011000031110&livemode=1&stbId=3", + "bestzb/5000000004000007410.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000004000007410/1.m3u8?channel-id=bestzb&Contentid=5000000004000007410&livemode=1&stbId=3", + "wasusyt/6000000001000002116.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000001000002116/1.m3u8?channel-id=wasusyt&Contentid=6000000001000002116&livemode=1&stbId=3", + "ystenlive/1000000005000265028.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265028/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265028&livemode=1&stbId=3", + "bestzb/5000000004000006119.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000004000006119/1.m3u8?channel-id=bestzb&Contentid=5000000004000006119&livemode=1&stbId=3", + "bestzb/5000000004000006827.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000004000006827/1.m3u8?channel-id=bestzb&Contentid=5000000004000006827&livemode=1&stbId=3", + "wasusyt/6000000001000009186.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000001000009186/1.m3u8?channel-id=wasusyt&Contentid=6000000001000009186&livemode=1&stbId=3", + "ystenlive/1000000005000265026.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265026/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265026&livemode=1&stbId=3", + "bestzb/5000000011000031120.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031120/1.m3u8?channel-id=bestzb&Contentid=5000000011000031120&livemode=1&stbId=3", + "bestzb/5000000004000007275.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000004000007275/1.m3u8?channel-id=bestzb&Contentid=5000000004000007275&livemode=1&stbId=3", + "ystenlive/1000000001000014260.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000001000014260/1.m3u8?channel-id=ystenlive&Contentid=1000000001000014260&livemode=1&stbId=3", + "ystenlive/1000000005000265031.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265031/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265031&livemode=1&stbId=3", + "ystenlive/1000000001000001096.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000001000001096/1.m3u8?channel-id=ystenlive&Contentid=1000000001000001096&livemode=1&stbId=3", + "ystenlive/1000000005000265017.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000265017/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265017&livemode=1&stbId=3", + "wasusyt/6000000003000004748.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000003000004748/1.m3u8?channel-id=wasusyt&Contentid=6000000003000004748&livemode=1&stbId=3", + "ystenlive/1000000004000011651.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000004000011651/1.m3u8?channel-id=ystenlive&Contentid=1000000004000011651&livemode=1&stbId=3", + "FifastbLive/3000000010000005180.m3u8": "http://gslbserv.itv.cmvideo.cn:80/3000000010000005180/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000005180&livemode=1&stbId=3", + "FifastbLive/3000000010000015686.m3u8": "http://gslbserv.itv.cmvideo.cn:80/3000000010000015686/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000015686&livemode=1&stbId=3", + "FifastbLive/3000000020000031315.m3u8": "http://gslbserv.itv.cmvideo.cn:80/3000000020000031315/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000031315&livemode=1&stbId=3", + "wasusyt/6000000002000010046.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000002000010046/1.m3u8?channel-id=wasusyt&Contentid=6000000002000010046&livemode=1&stbId=3", + "wasusyt/6000000002000032052.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000002000032052/1.m3u8?channel-id=wasusyt&Contentid=6000000002000032052&livemode=1&stbId=3", + "wasusyt/6000000002000032344.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000002000032344/1.m3u8?channel-id=wasusyt&Contentid=6000000002000032344&livemode=1&stbId=3", + "wasusyt/6000000002000003382.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000002000003382/1.m3u8?channel-id=wasusyt&Contentid=6000000002000003382&livemode=1&stbId=3", + "ystenlive/1000000004000019008.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000004000019008/1.m3u8?channel-id=ystenlive&Contentid=1000000004000019008&livemode=1&stbId=3", + "ystenlive/1000000004000013968.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000004000013968/1.m3u8?channel-id=ystenlive&Contentid=1000000004000013968&livemode=1&stbId=3", + "ystenlive/1000000004000013730.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000004000013730/1.m3u8?channel-id=ystenlive&Contentid=1000000004000013730&livemode=1&stbId=3", + "ystenlive/1000000004000014634.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000004000014634/1.m3u8?channel-id=ystenlive&Contentid=1000000004000014634&livemode=1&stbId=3", + "ystenlive/1000000006000032328.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000006000032328/1.m3u8?channel-id=ystenlive&Contentid=1000000006000032328&livemode=1&stbId=3", + "hnbblive/2000000003000000010.m3u8": "http://gslbserv.itv.cmvideo.cn:80/2000000003000000010/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000010&livemode=1&stbId=3", + "ystenlive/1000000006000268003.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000006000268003/1.m3u8?channel-id=ystenlive&Contentid=1000000006000268003&livemode=1&stbId=3", + "ystenlive/1000000003000012426.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000003000012426/1.m3u8?channel-id=ystenlive&Contentid=1000000003000012426&livemode=1&stbId=3", + "ystenlive/1000000001000009601.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000001000009601/1.m3u8?channel-id=ystenlive&Contentid=1000000001000009601&livemode=1&stbId=3", + "ystenlive/1000000006000268002.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000006000268002/1.m3u8?channel-id=ystenlive&Contentid=1000000006000268002&livemode=1&stbId=3", + "hnbblive/2000000003000000018.m3u8": "http://gslbserv.itv.cmvideo.cn:80/2000000003000000018/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000018&livemode=1&stbId=3", + "ystenlive/1000000005000266013.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000266013/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266013&livemode=1&stbId=3", + "ystenlive/1000000004000018653.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000004000018653/1.m3u8?channel-id=ystenlive&Contentid=1000000004000018653&livemode=1&stbId=3", + "hnbblive/2000000003000000024.m3u8": "http://gslbserv.itv.cmvideo.cn:80/2000000003000000024/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000024&livemode=1&stbId=3", + "ystenlive/1000000005000266012.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000266012/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266012&livemode=1&stbId=3", + "ystenlive/1000000004000008284.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000004000008284/1.m3u8?channel-id=ystenlive&Contentid=1000000004000008284&livemode=1&stbId=3", + "ystenlive/1000000004000026167.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000004000026167/1.m3u8?channel-id=ystenlive&Contentid=1000000004000026167&livemode=1&stbId=3", + "ystenlive/1000000004000024282.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000004000024282/1.m3u8?channel-id=ystenlive&Contentid=1000000004000024282&livemode=1&stbId=3", + "hnbblive/2000000003000000014.m3u8": "http://gslbserv.itv.cmvideo.cn:80/2000000003000000014/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000014&livemode=1&stbId=3", + "hnbblive/2000000003000000022.m3u8": "http://gslbserv.itv.cmvideo.cn:80/2000000003000000022/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000022&livemode=1&stbId=3", + "ystenlive/1000000001000006197.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000001000006197/1.m3u8?channel-id=ystenlive&Contentid=1000000001000006197&livemode=1&stbId=3", + "hnbblive/2000000003000000016.m3u8": "http://gslbserv.itv.cmvideo.cn:80/2000000003000000016/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000016&livemode=1&stbId=3", + "hnbblive/2000000003000000003.m3u8": "http://gslbserv.itv.cmvideo.cn:80/2000000003000000003/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000003&livemode=1&stbId=3", + "hnbblive/2000000003000000007.m3u8": "http://gslbserv.itv.cmvideo.cn:80/2000000003000000007/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000007&livemode=1&stbId=3", + "ystenlive/1000000001000000515.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000001000000515/1.m3u8?channel-id=ystenlive&Contentid=1000000001000000515&livemode=1&stbId=3", + "ystenlive/1000000005000266011.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000005000266011/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266011&livemode=1&stbId=3", + "hnbblive/2000000003000000009.m3u8": "http://gslbserv.itv.cmvideo.cn:80/2000000003000000009/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000009&livemode=1&stbId=3", + "ystenlive/1000000004000019624.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000004000019624/1.m3u8?channel-id=ystenlive&Contentid=1000000004000019624&livemode=1&stbId=3", + "ystenlive/1000000004000021734.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000004000021734/1.m3u8?channel-id=ystenlive&Contentid=1000000004000021734&livemode=1&stbId=3", + "ystenlive/1000000006000032327.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000006000032327/1.m3u8?channel-id=ystenlive&Contentid=1000000006000032327&livemode=1&stbId=3", + "ystenlive/1000000001000003775.m3u8": "http://gslbserv.itv.cmvideo.cn:80/1000000001000003775/1.m3u8?channel-id=ystenlive&Contentid=1000000001000003775&livemode=1&stbId=3", + "bestzb/5000000011000031113.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031113/1.m3u8?channel-id=bestzb&Contentid=5000000011000031113&livemode=1&stbId=3", + "bestzb/5000000011000031111.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031111/1.m3u8?channel-id=bestzb&Contentid=5000000011000031111&livemode=1&stbId=3", + "bestzb/9001547084732463424.m3u8": "http://gslbserv.itv.cmvideo.cn:80/9001547084732463424/1.m3u8?channel-id=bestzb&Contentid=9001547084732463424&livemode=1&stbId=3", + "bestzb/5000000002000009455.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000002000009455/1.m3u8?channel-id=bestzb&Contentid=5000000002000009455&livemode=1&stbId=3", + "bestzb/5000000007000010001.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000007000010001/1.m3u8?channel-id=bestzb&Contentid=5000000007000010001&livemode=1&stbId=3", + "bestzb/5000000010000026105.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000010000026105/1.m3u8?channel-id=bestzb&Contentid=5000000010000026105&livemode=1&stbId=3", + "bestzb/5000000002000029972.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000002000029972/1.m3u8?channel-id=bestzb&Contentid=5000000002000029972&livemode=1&stbId=3", + "bestzb/5000000011000031112.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031112/1.m3u8?channel-id=bestzb&Contentid=5000000011000031112&livemode=1&stbId=3", + "bestzb/5000000011000031207.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031207/1.m3u8?channel-id=bestzb&Contentid=5000000011000031207&livemode=1&stbId=3", + "bestzb/5000000011000031116.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031116/1.m3u8?channel-id=bestzb&Contentid=5000000011000031116&livemode=1&stbId=3", + "bestzb/5000000002000019634.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000002000019634/1.m3u8?channel-id=bestzb&Contentid=5000000002000019634&livemode=1&stbId=3", + "bestzb/5000000011000031114.m3u8": "http://gslbserv.itv.cmvideo.cn:80/5000000011000031114/1.m3u8?channel-id=bestzb&Contentid=5000000011000031114&livemode=1&stbId=3", + "wasusyt/6000000006000230630.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000006000230630/1.m3u8?channel-id=wasusyt&Contentid=6000000006000230630&livemode=1&stbId=3", + "wasusyt/6000000006000070630.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000006000070630/1.m3u8?channel-id=wasusyt&Contentid=6000000006000070630&livemode=1&stbId=3", + "wasusyt/6000000006000280630.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000006000280630/1.m3u8?channel-id=wasusyt&Contentid=6000000006000280630&livemode=1&stbId=3", + "wasusyt/6000000006000080630.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000006000080630/1.m3u8?channel-id=wasusyt&Contentid=6000000006000080630&livemode=1&stbId=3", + "wasusyt/6000000006000260630.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000006000260630/1.m3u8?channel-id=wasusyt&Contentid=6000000006000260630&livemode=1&stbId=3", + "wasusyt/6000000006000060630.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000006000060630/1.m3u8?channel-id=wasusyt&Contentid=6000000006000060630&livemode=1&stbId=3", + "wasusyt/6000000006000020630.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000006000020630/1.m3u8?channel-id=wasusyt&Contentid=6000000006000020630&livemode=1&stbId=3", + "wasusyt/6000000006000160630.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000006000160630/1.m3u8?channel-id=wasusyt&Contentid=6000000006000160630&livemode=1&stbId=3", + "wasusyt/6000000006000040630.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000006000040630/1.m3u8?channel-id=wasusyt&Contentid=6000000006000040630&livemode=1&stbId=3", + "wasusyt/6000000006000150630.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000006000150630/1.m3u8?channel-id=wasusyt&Contentid=6000000006000150630&livemode=1&stbId=3", + "wasusyt/6000000006000250630.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000006000250630/1.m3u8?channel-id=wasusyt&Contentid=6000000006000250630&livemode=1&stbId=3", + "wasusyt/6000000006000270630.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000006000270630/1.m3u8?channel-id=wasusyt&Contentid=6000000006000270630&livemode=1&stbId=3", + "wasusyt/6000000006000100630.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000006000100630/1.m3u8?channel-id=wasusyt&Contentid=6000000006000100630&livemode=1&stbId=3", + "wasusyt/6000000006000240630.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000006000240630/1.m3u8?channel-id=wasusyt&Contentid=6000000006000240630&livemode=1&stbId=3", + "wasusyt/6000000006000290630.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000006000290630/1.m3u8?channel-id=wasusyt&Contentid=6000000006000290630&livemode=1&stbId=3", + "wasusyt/6000000006000220630.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000006000220630/1.m3u8?channel-id=wasusyt&Contentid=6000000006000220630&livemode=1&stbId=3", + "wasusyt/6000000006000010630.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000006000010630/1.m3u8?channel-id=wasusyt&Contentid=6000000006000010630&livemode=1&stbId=3", + "wasusyt/6000000006000050630.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000006000050630/1.m3u8?channel-id=wasusyt&Contentid=6000000006000050630&livemode=1&stbId=3", + "wasusyt/6000000006000180630.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000006000180630/1.m3u8?channel-id=wasusyt&Contentid=6000000006000180630&livemode=1&stbId=3", + "wasusyt/6000000006000030630.m3u8": "http://gslbserv.itv.cmvideo.cn:80/6000000006000030630/1.m3u8?channel-id=wasusyt&Contentid=6000000006000030630&livemode=1&stbId=3", + } + + dnsCache = sync.Map{} + cacheTimeout = 1 * time.Minute +) + +type cacheEntry struct { + ip string + expiry time.Time +} + +func (i *Itv) HandleMainRequest(c *gin.Context, cdn, id string) { + key := cdn + "/" + id + url, ok := programList[key] + if !ok { + c.String(http.StatusNotFound, "id not found!") + return + } + + data, redirectURL, err := getHTTPResponse(url) + if err != nil { + c.String(http.StatusInternalServerError, err.Error()) + return + } + redirectPrefix := redirectURL[:strings.LastIndex(redirectURL, "/")+1] + + // 替换TS文件的链接 + golang := "http://" + c.Request.Host + c.Request.URL.Path + re := regexp.MustCompile(`((?i).*?\.ts)`) + data = re.ReplaceAllStringFunc(data, func(match string) string { + return golang + "?ts=" + redirectPrefix + match + }) + + // 将&替换为$ + data = strings.ReplaceAll(data, "&", "$") + + c.Header("Content-Disposition", "attachment;filename="+id) + c.String(http.StatusOK, data) +} + +func (i *Itv) HandleTsRequest(c *gin.Context, ts string) { + // 将$替换回& + ts = strings.ReplaceAll(ts, "$", "&") + + c.Header("Content-Type", "video/MP2T") + content, _, err := getHTTPResponse(ts) + if err != nil { + c.String(http.StatusInternalServerError, err.Error()) + return + } + c.String(http.StatusOK, content) +} + +func getHTTPResponse(requestURL string) (string, string, error) { + dialer := &net.Dialer{ + Timeout: 5 * time.Second, + } + + // 自定义resolver + resolver := net.Resolver{ + PreferGo: true, + Dial: func(ctx context.Context, network, address string) (net.Conn, error) { + for originalHost, mappedHost := range hostMappings { + if strings.Contains(address, originalHost) { + ip := resolveIP(mappedHost) + if ip != "" { + address = strings.Replace(address, originalHost, ip, 1) + } + } + } + return dialer.DialContext(ctx, network, address) + }, + } + + client := &http.Client{ + Transport: &http.Transport{ + DialContext: resolver.Dial, + }, + } + + resp, err := client.Get(requestURL) + if err != nil { + return "", "", err + } + defer resp.Body.Close() + + redirectURL := resp.Header.Get("Location") + if redirectURL == "" { + redirectURL = requestURL + } + + body, err := readResponseBody(resp) + if err != nil { + return "", "", err + } + + return body, redirectURL, nil +} + +func resolveIP(host string) string { + now := time.Now() + if entry, found := dnsCache.Load(host); found { + cachedEntry := entry.(cacheEntry) + if now.Before(cachedEntry.expiry) { + return cachedEntry.ip + } + dnsCache.Delete(host) + } + + ips, err := net.LookupIP(host) + if err != nil || len(ips) == 0 { + return "" + } + + ip := ips[0].String() + dnsCache.Store(host, cacheEntry{ip: ip, expiry: now.Add(cacheTimeout)}) + return ip +} + +func readResponseBody(resp *http.Response) (string, error) { + var builder strings.Builder + _, err := io.Copy(&builder, resp.Body) + if err != nil { + return "", err + } + return builder.String(), nil +} diff --git a/Golang/liveurls/youtube.go b/Golang/liveurls/youtube.go index 21832e0..0b56737 100644 --- a/Golang/liveurls/youtube.go +++ b/Golang/liveurls/youtube.go @@ -30,7 +30,7 @@ type Youtube struct { } func (y *Youtube) GetLiveUrl() any { - if cached, ok := get(y.Rid); ok { + if cached, ok := getKey(y.Rid); ok { return cached } //proxyUrl, err := url.Parse("http://127.0.0.1:8888") @@ -99,22 +99,22 @@ func (y *Youtube) getResolution(liveurl string) *string { } if stream, ok := mapping[y.Quality]; ok { - set(y.Rid, stream, 600) + setKey(y.Rid, stream, 600) return &stream } stream := playlists[len(playlists)-1].URI - set(y.Rid, stream, 600) + setKey(y.Rid, stream, 600) return &stream } -func set(key string, data interface{}, timeout int) { +func setKey(key string, data interface{}, timeout int) { streamCachedMap.Store(key, data) time.AfterFunc(time.Second*time.Duration(timeout), func() { streamCachedMap.Delete(key) }) } -func get(key string) (interface{}, bool) { +func getKey(key string) (interface{}, bool) { return streamCachedMap.Load(key) } diff --git a/Golang/liveurls/ysptp.go b/Golang/liveurls/ysptp.go new file mode 100644 index 0000000..b12d0f4 --- /dev/null +++ b/Golang/liveurls/ysptp.go @@ -0,0 +1,167 @@ +package liveurls + +import ( + "encoding/json" + "github.com/gin-gonic/gin" + "io" + "net/http" + "regexp" + "strings" + "sync" + "time" +) + +type Ysptp struct{} + +var cache sync.Map + +type CacheItem struct { + Value string + Expiration int64 +} + +var cctvList = map[string]string{ + "cctv1.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv1.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv2.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv2.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv3.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv3.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv4.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv4.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv5.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv5.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv5p.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv5p.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv6.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv6.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv7.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv7.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv8.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv8.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv9.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv9.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv10.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv10.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv11.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv11.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv12.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv12.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv13.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv13.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv14.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv14.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv15.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv15.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv16.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv16.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv17.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv17.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cgtnar.m3u8": "http://liveali-tpgq.cctv.cn/live/cgtnar.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cgtndoc.m3u8": "http://liveali-tpgq.cctv.cn/live/cgtndoc.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cgtnen.m3u8": "http://liveali-tpgq.cctv.cn/live/cgtnen.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cgtnfr.m3u8": "http://liveali-tpgq.cctv.cn/live/cgtnfr.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cgtnru.m3u8": "http://liveali-tpgq.cctv.cn/live/cgtnru.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cgtnsp.m3u8": "http://liveali-tpgq.cctv.cn/live/cgtnsp.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv4k.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv4k.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv4k_10m.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv4k10m.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv4k16.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv4k16.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv4k16_10m.m3u8": "http://liveali-tpgq.cctv.cn/live/cctv4k1610m.m3u8,http://liveali-tpgq.cctv.cn/live/", + "cctv8k_36m.m3u8": "http://liveali-tp4k.cctv.cn/live/4K36M/playlist.m3u8,http://liveali-tp4k.cctv.cn/live/4K36M/", + "cctv8k_120m.m3u8": "http://liveali-tp4k.cctv.cn/live/8K120M/playlist.m3u8,http://liveali-tp4k.cctv.cn/live/8K120M/", +} + +func (y *Ysptp) HandleMainRequest(c *gin.Context, id string) { + uid := c.DefaultQuery("uid", "1234123122") + + if _, ok := cctvList[id]; !ok { + c.String(http.StatusNotFound, "id not found!") + return + } + + urls := strings.Split(cctvList[id], ",") + data := getURL(id, urls[0], uid, urls[1]) + golang := "http://" + c.Request.Host + c.Request.URL.Path + re := regexp.MustCompile(`((?i).*?\.ts)`) + data = re.ReplaceAllString(data, golang+"?ts="+urls[1]+"$1") + + c.Header("Content-Disposition", "attachment;filename="+id) + c.String(http.StatusOK, data) +} + +func (y *Ysptp) HandleTsRequest(c *gin.Context, ts, wsTime string) { + data := ts + "&wsTime=" + wsTime + c.Header("Content-Type", "video/MP2T") + c.String(http.StatusOK, getTs(data)) +} + +func getURL(id, url, uid, path string) string { + cacheKey := id + uid + if playURL, found := getCache(cacheKey); found { + return fetchData(playURL, path, uid) + } + + bstrURL := "https://ytpvdn.cctv.cn/cctvmobileinf/rest/cctv/videoliveUrl/getstream" + postData := `appcommon={"ap":"cctv_app_tv","an":"央视投屏助手","adid":" ` + uid + `","av":"1.1.7"}&url=` + url + + req, _ := http.NewRequest("POST", bstrURL, strings.NewReader(postData)) + req.Header.Set("User-Agent", "cctv_app_tv") + req.Header.Set("Referer", "api.cctv.cn") + req.Header.Set("UID", uid) + + client := &http.Client{} + resp, _ := client.Do(req) + defer resp.Body.Close() + var body strings.Builder + _, _ = io.Copy(&body, resp.Body) + + var result map[string]interface{} + json.Unmarshal([]byte(body.String()), &result) + playURL := result["url"].(string) + + setCache(cacheKey, playURL) + + return fetchData(playURL, path, uid) +} + +func fetchData(playURL, path, uid string) string { + client := &http.Client{} + for { + req, _ := http.NewRequest("GET", playURL, nil) + req.Header.Set("User-Agent", "cctv_app_tv") + req.Header.Set("Referer", "api.cctv.cn") + req.Header.Set("UID", uid) + + resp, _ := client.Do(req) + defer resp.Body.Close() + var body strings.Builder + _, _ = io.Copy(&body, resp.Body) + + data := body.String() + re := regexp.MustCompile(`(.*\.m3u8\?.*)`) + matches := re.FindStringSubmatch(data) + if len(matches) > 0 { + playURL = path + matches[0] + } else { + return data + } + } +} + +func getTs(url string) string { + req, _ := http.NewRequest("GET", url, nil) + req.Header.Set("User-Agent", "cctv_app_tv") + req.Header.Set("Referer", "https://api.cctv.cn/") + req.Header.Set("UID", "1234123122") + req.Header.Set("accept", "*/*") + req.Header.Set("accept-encoding", "gzip, deflate") + req.Header.Set("accept-language", "zh-CN,zh;q=0.9") + req.Header.Set("Connection", "keep-alive") + + client := &http.Client{} + resp, _ := client.Do(req) + defer resp.Body.Close() + var body strings.Builder + _, _ = io.Copy(&body, resp.Body) + + return body.String() +} + +func getCache(key string) (string, bool) { + if item, found := cache.Load(key); found { + cacheItem := item.(CacheItem) + if time.Now().Unix() < cacheItem.Expiration { + return cacheItem.Value, true + } + } + return "", false +} + +func setCache(key, value string) { + cache.Store(key, CacheItem{ + Value: value, + Expiration: time.Now().Unix() + 3600, + }) +} diff --git a/Golang/main.go b/Golang/main.go index c617892..d3dfa86 100644 --- a/Golang/main.go +++ b/Golang/main.go @@ -1,10 +1,3 @@ -// Package Golang -// @Time:2024/02/19 11:30 -// @File:main.go -// @SoftWare:Goland -// @Author:feiyang -// @Contact:TG@feiyangdigital - package main import ( @@ -12,6 +5,7 @@ import ( "Golang/liveurls" "encoding/base64" "encoding/json" + "flag" "fmt" "github.com/forgoer/openssl" "github.com/gin-gonic/gin" @@ -52,7 +46,7 @@ func getLivePrefix(c *gin.Context) string { return realUrl } -func setupRouter(adurl string) *gin.Engine { +func setupRouter(adurl string, enableTV bool) *gin.Engine { gin.SetMode(gin.ReleaseMode) r := gin.Default() @@ -64,6 +58,17 @@ func setupRouter(adurl string) *gin.Engine { c.String(http.StatusOK, "请求成功!") }) + r.GET("/tv.m3u", func(c *gin.Context) { + if enableTV { + itvm3uobj := &list.Tvm3u{} + c.Writer.Header().Set("Content-Type", "application/octet-stream") + c.Writer.Header().Set("Content-Disposition", "attachment; filename=tv.m3u") + itvm3uobj.GetTvM3u(c) + } else { + c.String(http.StatusForbidden, "公共服务不提供TV直播") + } + }) + r.GET("/huyayqk.m3u", func(c *gin.Context) { yaobj := &list.HuyaYqk{} res, _ := yaobj.HuYaYqk("https://live.cdn.huya.com/liveHttpUI/getLiveList?iGid=2135") @@ -138,7 +143,31 @@ func setupRouter(adurl string) *gin.Engine { r.GET("/:path/:rid", func(c *gin.Context) { path := c.Param("path") rid := c.Param("rid") + ts := c.Query("ts") switch path { + case "itv": + if enableTV { + itvobj := &liveurls.Itv{} + cdn := c.Query("cdn") + if ts == "" { + itvobj.HandleMainRequest(c, cdn, rid) + } else { + itvobj.HandleTsRequest(c, ts) + } + } else { + c.String(http.StatusForbidden, "公共服务不提供TV直播") + } + case "ysptp": + if enableTV { + ysptpobj := &liveurls.Ysptp{} + if ts == "" { + ysptpobj.HandleMainRequest(c, rid) + } else { + ysptpobj.HandleTsRequest(c, ts, c.Query("wsTime")) + } + } else { + c.String(http.StatusForbidden, "公共服务不提供TV直播") + } case "douyin": douyinobj := &liveurls.Douyin{} douyinobj.Rid = rid @@ -183,9 +212,12 @@ func setupRouter(adurl string) *gin.Engine { } func main() { + tvEnabled := flag.Bool("tv", true, "Enable TV routes") + flag.Parse() + key := []byte("6354127897263145") defstr, _ := base64.StdEncoding.DecodeString("NGrrC9lxtd9O7ezMt3Ux2WfX+HyCyepe9vDuhbSWVa8c+s7oFKbxuExfT4M/e4qvEgsUsvtceDWCYZ5+a7iKCEI/sps5jzGuWJNmsFnaFmQ=") defurl, _ := openssl.AesECBDecrypt(defstr, key, openssl.PKCS7_PADDING) - r := setupRouter(string(defurl)) + r := setupRouter(string(defurl), *tvEnabled) r.Run(":35455") }