diff --git a/cluntop_tvbox/aa.json b/cluntop_tvbox/aa.json
index 782272a4..b7eb5a6f 100755
--- a/cluntop_tvbox/aa.json
+++ b/cluntop_tvbox/aa.json
@@ -36,9 +36,25 @@
},
"changeable": 1
},
+ {
+ "key": "油管py",
+ "name": "油管 | PY",
+ "type": 3,
+ "api": "./py/ytb.py",
+ "searchable": 1,
+ "quickSearch": 1,
+ "style": {
+ "type": "rect",
+ "ratio": 1.33
+ },
+ "ext": {
+ "count": "./lib/yt2.json"
+ },
+ "filterable": 1
+ },
{
"key": "油管so",
- "name": "油管视频",
+ "name": "油管 | SO",
"type": 3,
"api": "csp_ProxySpider",
"searchable": 1,
@@ -46,7 +62,7 @@
"ext": {
"class": "Ytdl",
"ext": {
- "youtube_txt": "./lib/youtube.json"
+ "youtube_txt": "./lib/yt2.json"
},
"style": {
"type": "rect",
@@ -64,7 +80,7 @@
"quickSearch": 1,
"ext": {
"class": "YoutubeSpidertv",
- "ext": "./lib/youtube.json"
+ "ext": "./lib/yt2.json"
},
"style": {
"type": "rect",
diff --git a/cluntop_tvbox/bb.json b/cluntop_tvbox/bb.json
index 3b9f59e5..b5b51076 100755
--- a/cluntop_tvbox/bb.json
+++ b/cluntop_tvbox/bb.json
@@ -10,7 +10,7 @@
"ext": {
"class": "Ytdl",
"ext": {
- "youtube_txt": "./lib/youtube.json"
+ "youtube_txt": "./lib/yt2.json"
},
"style": {
"type": "rect",
@@ -28,7 +28,7 @@
"quickSearch": 1,
"ext": {
"class": "YoutubeSpidertv",
- "ext": "./lib/youtube.json"
+ "ext": "./lib/yt2.json"
},
"style": {
"type": "rect",
diff --git a/cluntop_tvbox/box.json b/cluntop_tvbox/box.json
index b19ebaf4..aed2aab1 100755
--- a/cluntop_tvbox/box.json
+++ b/cluntop_tvbox/box.json
@@ -108,6 +108,13 @@
"api": "csp_XBPQ",
"ext": "./js/s/大白鲨.json"
},
+ {
+ "key": "奇优",
+ "name": "奇优影院(没好",
+ "type": 3,
+ "api": "csp_XBPQ",
+ "ext": "./js/s/奇优.json"
+ },
{
"key": "2",
"name": "--- 2 ---"
@@ -1215,7 +1222,8 @@
"PPTV",
"migu"
],
- "spider": "./jar/xbpq.jar;md5;./jar/xbpq.jar.md5",
+ "danmaku": "https://127.0.0.1:9978/proxy?do=danmaku&name={name}&episode={episode}",
+ "spider": "./jar/xb.jar",
"disabled_wallpaper": "./img/0.jpg",
"wallpaper": "./img/0.jpg",
"logo": "./img/pg.gif",
diff --git a/cluntop_tvbox/fun.json b/cluntop_tvbox/fun.json
index cc271387..96ef6664 100755
--- a/cluntop_tvbox/fun.json
+++ b/cluntop_tvbox/fun.json
@@ -21,6 +21,14 @@
"api": "./py/51吸瓜.py",
"ext": ""
},
+ {
+ "key": "xp天堂",
+ "name": "XP天堂",
+ "type": 3,
+ "filterable": 0,
+ "changeable": 0,
+ "api": "./js/xp天堂.js"
+ },
{
"key": "Jable",
"name": "Jable",
diff --git a/cluntop_tvbox/jar/pro.jar b/cluntop_tvbox/jar/pro.jar
index 4fa67d1d..1bbdd550 100644
Binary files a/cluntop_tvbox/jar/pro.jar and b/cluntop_tvbox/jar/pro.jar differ
diff --git a/cluntop_tvbox/jar/pro.jar.md5 b/cluntop_tvbox/jar/pro.jar.md5
index babc9f8a..ef532350 100644
--- a/cluntop_tvbox/jar/pro.jar.md5
+++ b/cluntop_tvbox/jar/pro.jar.md5
@@ -1 +1 @@
-b5607360445087320ea3dadba0b543f9
+ed8ac8071f355c035b2306a81ae46627
diff --git a/cluntop_tvbox/js/s/奇优.json b/cluntop_tvbox/js/s/奇优.json
new file mode 100644
index 00000000..157c10ba
--- /dev/null
+++ b/cluntop_tvbox/js/s/奇优.json
@@ -0,0 +1,26 @@
+{
+ "请求头": "手机",
+ "主页url": "http://www.qiyoudy2.com/",
+ "状态": "地区:&&
",
+ "导演": "导演:&&",
+ "主演": "主演:&&",
+ "简介": "简介:&&",
+ "数组": "&&",
+ "图片": "data-original=\"&&\"",
+ "标题": "title=\"&&\"",
+ "副标题": "text-right\">&&",
+ "链接": "href=\"&&\"",
+ "搜索url": "http://www.qiyoudy2.com/search.php;post;searchword={wd}",
+ "搜索数组": "v-thumb stui-vodlist__thumb&&[不包含:伦理#韩语中字#日语中字#高清中字#日本中字#高清#HD中字#日本#韩国#HD]",
+ "搜索图片": "data-original=\"&&\"",
+ "搜索标题": "title=\"&&\"",
+ "搜索副标题": "text-right\">&&",
+ "搜索链接": "href=\"&&\"",
+ "线路数组": "href=\"#down&&/a>[替换:播放源1>>七月大佬一线#播放源2>>七月大佬二线#播放源3>>七月大佬三线#播放源4>>七月大佬四线]",
+ "线路标题": ">&&",
+ "播放数组": "stui-content__playlist clearfix&&",
+ "播放列表": "
&&",
+ "播放标题": ">&&",
+ "分类url": "http://www.qiyoudy2.com/list/{cateId}_{catePg}.html;;ak",
+ "分类": "电影$1#电视剧$2#动漫$3#综艺$4#伦理$6"
+}
\ No newline at end of file
diff --git a/cluntop_tvbox/js/xp天堂.js b/cluntop_tvbox/js/xp天堂.js
new file mode 100644
index 00000000..1d7ff43f
--- /dev/null
+++ b/cluntop_tvbox/js/xp天堂.js
@@ -0,0 +1,433 @@
+import cheerio from 'assets://js/lib/cheerio.min.js';
+
+
+const sites = [
+ 'https://dzsx5k01kgm6y.cloudfront.net',//这个可以直连
+ 'https://attack.bjidvlyog.com',
+ 'https://agency.bjidvlyog.com/'
+]
+const baseUrl = sites[0];
+const UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36";
+
+function mylog() {
+ const TAG = "xp天堂18+";
+ console.log(TAG, ...arguments)
+}
+async function init(extend) { }
+
+
+let cachedClasses = [];
+let cachedFilters = {};
+let hasParsed = false;
+
+/**
+ * 1. 动态获取并解析全量的一级分类 (class)
+ */
+async function home(filter) {
+ try {
+ // 1. 请求首页或者含有这个导航 container 的网页源码
+ const html = await req(baseUrl).content; // 如果是在特定页面,把 baseUrl 改为对应路径
+ const $ = cheerio.load(html);
+ let classes = [];
+ let filters = {};
+
+ // 标准的排序规则
+ const sortFilter = [
+ {
+ key: "sort",
+ name: "排序",
+ value: [
+ { n: "最近更新", v: "update" },
+ { n: "最高收藏", v: "favorite" },
+ { n: "近期最佳", v: "hot" },
+ { n: "最多观看", v: "watch" }
+ ]
+ }
+ ];
+
+ // 2. 扫一遍所有的 container 区块,全量榨干“选片”和“标签”
+ $('.app-nav .container').each((index, element) => {
+ // 抓取区块的标题(比如“选片”)
+ const blockTitle = $(element).find('.title-box h2').text().trim();
+
+ // === 自动解析【选片主题】块 ===
+ if (blockTitle.includes("选片") || blockTitle.includes("主题")) {
+ $(element).find('a.tjtagmanager').each((i, el) => {
+ const name = $(el).text().trim();
+ let href = $(el).attr('href') || '';
+
+ // 砍掉末尾自带的 /favorite/ 或 /update/,还原成纯净的 ID 路径
+ // 例如: /theme/detail/64/favorite/ -> /theme/detail/64
+ href = href.replace(/\/(favorite|update|hot|watch)\/?$/, '');
+
+ if (href && name) {
+ classes.push({ type_id: href, type_name: name });
+ filters[href] = sortFilter; // 给它绑定排序筛选
+ }
+ });
+ }
+
+ // === 自动解析【平级标签】块 ===
+ // 根据特征:含有 .tag 类的 a 标签
+ if ($(element).find('a.tag').length > 0) {
+ $(element).find('a.tag').each((i, el) => {
+ const name = $(el).text().trim();
+ let href = $(el).attr('href') || '';
+
+ // 砍掉末尾可能自带的排序后缀(如 /hot/)和开头的斜杠,还原成纯净的 ID 路径
+ // 例如: /tags/9540/hot/ -> /tags/9540
+ href = href.replace(/\/(favorite|update|hot|watch)\/?$/, '');
+
+ if (href && name) {
+ // 加上前缀或者小图标区分标签和主题
+ classes.push({ type_id: href, type_name: `🏷️ ${name}` });
+ filters[href] = sortFilter; // 给标签也绑定平级的排序筛选
+ }
+ });
+ }
+ });
+
+ // 3. 缓存结果,防止后续调用 homeFilter 时二次请求浪费时间
+ // 暂时过滤资讯和回家
+ cachedClasses = classes.filter(item => !item.type_name.includes("资讯")&&!item.type_name.includes('回家'));
+ cachedFilters = filters;
+ hasParsed = true;
+ return JSON.stringify({
+ class: cachedClasses,
+ filters: await homeFilter()
+ });
+
+ } catch (e) {
+ console.error("❌ 全自动解析 class 失败: ", e.message);
+ // 崩溃兜底,防止壳子黑屏
+ return JSON.stringify({ class: [] });
+ }
+}
+
+/**
+ * 2. 完美的平级筛选逻辑
+ */
+async function homeFilter() {
+ mylog("开始解析筛选逻辑");
+ // 如果已经解析过了,直接扔出缓存结果
+ if (hasParsed) {
+ return cachedFilters;
+ }
+ // 理论上壳子会先执行 home 再执行 homeFilter,如果未解析则返回空对象防错
+ return {};
+}
+
+function fixVodName(name = "") {
+ return name.trim().split(" ").slice(1, -1).join("");
+}
+
+// async function parseArticleList(html) {
+// // 确保已经加载了 cheerio
+// const $ = cheerio.load(html);
+// const list = [];
+
+// // 针对每个视频卡片进行遍历
+// $('.video-img-box').each((index, element) => {
+// const titleEl = $(element).find('h3.title a.text');
+// const imgEl = $(element).find('img.zximg');
+// const descEl = $(element).find('p.sub-title');
+
+// // 提取核心数据
+// const vod_id = titleEl.attr('href') || '';
+// const vod_name = titleEl.text().trim();
+
+// // 关键点:提取自定义属性 z-image-loader-url
+// const vod_pic = imgEl.attr('z-image-loader-url') || '';
+
+// // 提取备注(简介/日期)
+// const vod_remarks = descEl.text().trim();
+
+// // 过滤掉无效数据(如果没有链接或标题则跳过)
+// if (vod_id && vod_name) {
+// list.push({
+// vod_id: vod_id, // 对应详情页接口的参数
+// vod_name: vod_name, // 列表显示的标题
+// vod_pic: vod_pic, // 封面图
+// vod_remarks: vod_remarks // 列表右上角的备注信息
+// });
+// }
+// });
+
+// return JSON.stringify({ list: list });
+// }
+
+// ⭐ 优化 1:分类页采用 Promise.all 并发多线程解析
+async function category(tid, pg, filter, extend) {
+ try {
+ if(!tid) return JSON.stringify({ list: [] });
+ pg = pg || 1;
+ // const url = baseUrl + tid + (extend.type || '') + `/${pg}/`;
+
+ const sort = extend.sort || '';
+
+
+ let url = `${baseUrl}${tid}/${sort}/${pg}/`;
+ mylog(`🚀 正在请求分类URL: ${url}`);
+
+ // if (tid.includes('article')) {
+ // url = baseUrl + tid
+ // mylog(`🚀 正在请求分类URL: ${url}`);
+
+ // const html = (await req(url)).content;
+ // const $ = cheerio.load(html);
+ // return parseArticleList(html)
+ // }
+
+
+ const html = (await req(url)).content;
+ const $ = cheerio.load(html);
+
+ const videoElements = $('.col-6.col-sm-4.col-lg-3').toArray();
+
+ // 将每一项的解析包装成独立的异步任务(不阻塞彼此)
+ const tasks = videoElements.map(async (el) => {
+ const item = $(el).find('.video-img-box a');
+ const href = item.attr('href') || '';
+
+ if (href.includes('/videos/')) {
+ const vod_id = href;
+ let vod_name = $(el).find('.title a').text().trim();
+ vod_name = fixVodName(vod_name);
+
+ const watchCount = $(el).find('span[class^="interaction_watch_count_"]').text().trim() || '';
+ const vod_remarks = watchCount && (watchCount + "播放");
+ const vod_year = $(el).find('.label').text().trim();
+
+ let vod_pic = $(el).find('img.zximg').attr('z-image-loader-url') || '';
+
+ // 并发执行:所有的图片解密网络请求同时发出
+ vod_pic = await getRealImgurl(vod_pic);
+
+ return {
+ vod_id,
+ vod_name,
+ vod_pic,
+ vod_year,
+ vod_remarks,
+ land: 1,
+ ratio: 1.78
+ };
+ }
+ return null;
+ });
+
+ // ⭐ 核心:静静等待所有并发任务一起完成
+ const results = await Promise.all(tasks);
+ // 过滤掉广告(null数据)
+ let list = results.filter(item => item !== null);
+
+ // 分页逻辑
+ let total = $('ul.dx-pager ').attr("data-rec-total");
+ let perPageCount = $('ul.dx-pager ').attr("data-rec-per-page");
+ const pagecount = Math.ceil(total / perPageCount);
+
+ mylog(`category 成功并发抓取有效视频数: ${list.length}`);
+
+ return JSON.stringify({ list, pagecount });
+
+ } catch (e) {
+ mylog(e);
+ return JSON.stringify({ list: [] });
+ }
+}
+
+
+/**
+ * 专用函数:解析“文章类型”页面
+ */
+// async function parseArticleDetail($, id) {
+// const vod_name = $('h1').text().trim();
+// // 优先读取 textarea 的 Markdown 内容
+// const vod_content = $('textarea').text().trim() || $('.text-content').text().trim();
+
+// let play_url = "";
+
+// // 逻辑:从 Markdown 内容中正则提取播放地址
+// const match = vod_content.match(/\(\/(videos|play)\/([^\/]+)\/\)/);
+// if (match) {
+// play_url = match[0].replace(/[()]/g, '');
+// } else {
+// // 兜底:搜索页面上的链接
+// const link = $('a[href*="/videos/"]').first().attr('href');
+// if (link) play_url = link;
+// }
+
+// return JSON.stringify({
+// list: [{
+// vod_name: vod_name,
+// vod_content: vod_content,
+// vod_play_from: play_url ? "XP天堂" : "文章内容",
+// vod_play_url: play_url ? `立即播放$${play_url}` : ""
+// }]
+// });
+// }
+async function detail(vid) {
+ try {
+ const url = baseUrl + vid;
+ const html = (await req(url)).content;
+ const $ = cheerio.load(html);
+
+ // if (vid.includes('/article/')) {
+ // return await parseArticleDetail($, vid);
+ // }
+
+ let vod_name = $('h1.my-foldable-content').text().trim();
+ let vod_pic = $('#player').attr('data-src') || '';
+ vod_pic = await getRealImgurl(vod_pic);
+
+ // 🔍 1. 精准提取标签,确保没有任何前后空格
+ let tagsArray = [];
+ $('h5.tags a').each((i, el) => {
+ let tagName = $(el).text().trim();
+ if (tagName) tagsArray.push(tagName);
+ });
+
+ let vod_actor = tagsArray.join('/');
+ let vod_class = tagsArray.join(' ');
+
+ // 🔍 3. 备用保险:利用 CLICKER 规则,在简介里生成绝对能跳转的超链接
+ let vod_content = "(todo)标签快捷搜索:\n";
+ tagsArray.forEach(tag => {
+ // 拼接蜂蜜专属的底层的 CLICKER 格式
+ vod_content += `[a=cr:{"action":"category","key":"${tag}"}/]【${tag}】[/a] `;
+ });
+
+ // 提取播放地址
+ const regex = /https?:\/\/[^\s"'`]+\.m3u8(?:\?[^\s"'`]+)?/g;
+ const match = html.match(regex);
+ let hlsUrl = match ? match[0] : '';
+
+ const lines = ["hls线路"];
+ const vod_play_from = lines.join("$$$");
+ const playlistArray = [`正片\$${hlsUrl}`];
+ const vod_play_url = playlistArray.join('$$$');
+
+ const watchCount = $('.video-info span[class^="interaction_watch_count_"]').text().trim().toUpperCase() || '';
+ const favorite_count = $('#bind_collect_count').text().trim().toUpperCase() || '';
+ let vod_remarks = watchCount && (watchCount + "播放");
+ vod_remarks += favorite_count && (" | " + favorite_count + "收藏");
+
+ const back = {
+ vod_id: vid,
+ vod_remarks,
+ vod_name: vod_name,
+ vod_pic: vod_pic,
+ vod_content: vod_content, // 👈 简介里会显示高亮可点击的标签
+ vod_actor: vod_actor, // 👈 演员药丸标签(已剔除空格坑)
+ vod_class: vod_class, // 👈 类型标签(多重兼容兜底)
+ vod_play_from,
+ vod_play_url
+ };
+
+ return JSON.stringify({ list: [back] });
+ } catch (e) {
+ mylog(e);
+ return JSON.stringify({ list: [] });
+ }
+}
+// ⭐ 优化 2:搜索页同样采用 Promise.all 并发加速
+async function search(key, quick, page) {
+ try {
+ page = page || 1;
+
+ const url = baseUrl + `/search/${key}/${page}/`;
+ mylog(`正在搜索: ${url}`);
+
+ const html = (await req(url)).content;
+ const $ = cheerio.load(html);
+
+ const searchElements = $('.video-img-box').toArray();
+
+ const tasks = searchElements.map(async (el) => {
+ const a = $(el).find('.img-box > a');
+ const vod_id = $(a).attr('href') || '';
+ const vod_name = $(a).find('img').attr('alt') || '';
+ let vod_pic = $(a).find('img.zximg').attr('z-image-loader-url') || '';
+
+ if (vod_pic) {
+ vod_pic = await getRealImgurl(vod_pic);
+ }
+
+ const vod_remarks = $(el).find('.absolute-bottom-right .label').text().trim();
+
+ return {
+ vod_id: vod_id,
+ vod_name: fixVodName(vod_name),
+ vod_pic: vod_pic,
+ vod_remarks: vod_remarks
+ };
+ });
+
+ const list = await Promise.all(tasks);
+
+ // 分页逻辑
+ let total = $('ul.dx-pager ').attr("data-rec-total");
+ let perPageCount = $('ul.dx-pager ').attr("data-rec-per-page");
+ const pagecount = Math.ceil(total / perPageCount);
+ return JSON.stringify({
+ list,
+ pagecount
+ });
+ } catch (e) {
+ mylog(e);
+ return JSON.stringify({ list: [] });
+ }
+}
+async function play(flag, id, vipFlags) {
+ return JSON.stringify({
+ parse: 0,
+ url: id,
+ header: { "User-Agent": UA, "Referer": baseUrl }
+ });
+}
+async function getRealImgurl(imgurl) {
+ try {
+ if (!imgurl) return "";
+ let res = await req(imgurl, {
+ method: "get",
+ headers: {
+ "User-Agent": UA,
+ "Referer": "https://wuabeza.gyqspl.cn/"
+ },
+ buffer: 2
+ });
+
+ const encryptedBase64 = res.content;
+ if (!encryptedBase64) return "";
+
+ let realImageBase64 = aesX(
+ "AES/CBC/No",
+ false,
+ encryptedBase64,
+ true,
+ "f5d965df75336270",
+ "97b60394abc2fbe1",
+ true
+ );
+
+ if (!realImageBase64) return "";
+
+ let ext = "jpeg";
+ if (imgurl.toLowerCase().indexOf(".gif") !== -1) {
+ ext = "gif";
+ } else if (imgurl.toLowerCase().indexOf(".png") !== -1) {
+ ext = "png";
+ }
+
+ const back = "data:image/" + ext + ";base64," + realImageBase64;
+
+ // ⭐ 优化 3:【核心改动】删除了原先直接打印超长 base64 的 mylog,改为只打印长度,解放系统 CPU
+ // mylog("[base64] ", back);
+
+ return back;
+ } catch (e) {
+ return "";
+ }
+}
+
+export default { init, home, category, detail, search, play };
\ No newline at end of file
diff --git a/cluntop_tvbox/jsm.json b/cluntop_tvbox/jsm.json
index 18d364b3..6cdaaff5 100644
--- a/cluntop_tvbox/jsm.json
+++ b/cluntop_tvbox/jsm.json
@@ -177,26 +177,18 @@
"filterable": 1,
"timeout": 60,
"ext": {
- "key": "PanSouGo",
- "name": "PanSou",
- "type": 3,
- "api": "csp_PanSouGo",
- "searchable": 1,
- "changeable": 0,
- "ext": {
- "token": "./lib/tokenm.json",
- "siteurl": "",
- "proxy": "noproxy",
- "danmu": "0",
- "plugins": "all",
- "panlist": "all",
- "filters": {
- "include": [],
- "exclude": [
- "广告",
- "预告"
- ]
- }
+ "token": "./lib/tokenm.json",
+ "siteurl": "",
+ "proxy": "noproxy",
+ "danmu": "0",
+ "plugins": "all",
+ "panlist": "all",
+ "filters": {
+ "include": [],
+ "exclude": [
+ "广告",
+ "预告"
+ ]
}
}
},
@@ -314,7 +306,7 @@
"changeable": 1,
"filterable": 1,
"timeout": 60,
- "ext": "./lib/tokenm.json$$$http://www.libvio.mov/$$$noproxy$$$1"
+ "ext": "./lib/tokenm.json$$$https://www.libvio.io/$$$noproxy$$$1"
},
{
"key": "Guazi",
@@ -336,7 +328,7 @@
"changeable": 1,
"filterable": 1,
"timeout": 60,
- "ext": "./lib/tokenm.json$$$https://www.hdmoli.pro/$$$proxy$$$1$$$./lib/moli.json"
+ "ext": "./lib/tokenm.json$$$https://www.hdmoli.com/$$$noproxy$$$1$$$./lib/moli.json"
},
{
"key": "美剧迷",
diff --git a/cluntop_tvbox/lib/YouTube.py b/cluntop_tvbox/lib/YouTube.py
new file mode 100644
index 00000000..624e551b
--- /dev/null
+++ b/cluntop_tvbox/lib/YouTube.py
@@ -0,0 +1,1573 @@
+#coding=utf-8
+#!/usr/bin/python
+import re
+import json
+import html
+import time
+from urllib.parse import quote, unquote, parse_qs, urlencode, urlparse, urlunparse, urljoin
+import requests
+from requests.adapters import HTTPAdapter
+from urllib3.util.retry import Retry
+from base.spider import Spider
+
+YOUTUBE_CLASSES = [
+ {"type_id": "电影", "type_name": "电影"},
+ {"type_id": "直播", "type_name": "直播"},
+ {"type_id": "音乐", "type_name": "音乐"},
+ {"type_id": "HDR", "type_name": "HDR"},
+ {"type_id": "免费", "type_name": "免费"},
+ {"type_id": "短劇", "type_name": "短剧"},
+ {"type_id": "动画片", "type_name": "动画片"}
+]
+
+CATEGORY_FILTERS = {
+ "电影": [
+ {"key": "topic", "name": "官方分类", "value": [{"n": "电影", "v": "电影"}, {"n": "电影与动画", "v": "电影与动画"}, {"n": "电视节目", "v": "电视节目"}]},
+ {"key": "tid", "name": "地区", "value": [{"n": "大陆", "v": "大陆"}, {"n": "香港", "v": "香港"}, {"n": "台湾", "v": "台湾"}, {"n": "美国", "v": "美国"}, {"n": "韩国", "v": "韩国"}, {"n": "日本", "v": "日本"}]},
+ {"key": "date", "name": "排序/时间", "value": [{"n": "默认", "v": ""}, {"n": "最新", "v": "latest"}, {"n": "最热", "v": "hottest"}, {"n": "评分最高", "v": "favorite"}, {"n": "当天", "v": "day"}, {"n": "本周", "v": "week"}, {"n": "本月", "v": "month"}]}
+ ],
+ "直播": [
+ {"key": "topic", "name": "官方分类", "value": [{"n": "新闻直播", "v": "新闻直播"}, {"n": "游戏直播", "v": "游戏直播"}, {"n": "体育直播", "v": "体育直播"}, {"n": "音乐直播", "v": "音乐直播"}]},
+ {"key": "tid", "name": "直播类型", "value": [{"n": "全部直播", "v": "全部直播"}, {"n": "游戏", "v": "游戏"}, {"n": "新闻", "v": "新闻"}, {"n": "体育", "v": "体育"}, {"n": "音乐现场", "v": "音乐现场"}, {"n": "生活", "v": "生活"}]},
+ {"key": "date", "name": "排序/时间", "value": [{"n": "默认", "v": ""}, {"n": "最新", "v": "latest"}, {"n": "最热", "v": "hottest"}, {"n": "评分最高", "v": "favorite"}, {"n": "当天", "v": "day"}, {"n": "本周", "v": "week"}, {"n": "本月", "v": "month"}]}
+ ],
+ "音乐": [
+ {"key": "topic", "name": "官方分类", "value": [{"n": "音乐", "v": "音乐"}, {"n": "流行音乐", "v": "流行音乐"}, {"n": "摇滚乐", "v": "摇滚乐"}, {"n": "嘻哈音乐", "v": "嘻哈音乐"}, {"n": "电子音乐", "v": "电子音乐"}, {"n": "重金属", "v": "重金属"}, {"n": "重金属根源雷鬼", "v": "重金属根源雷鬼"}, {"n": "Dub", "v": "Dub"}, {"n": "Bass", "v": "Bass"}]},
+ {"key": "tid", "name": "形式/场景", "value": [{"n": "MV", "v": "MV"}, {"n": "现场", "v": "现场"}, {"n": "翻唱", "v": "翻唱"}, {"n": "精选", "v": "精选"}, {"n": "车载", "v": "车载"}]},
+ {"key": "date", "name": "排序/时间", "value": [{"n": "默认", "v": ""}, {"n": "最新", "v": "latest"}, {"n": "最热", "v": "hottest"}, {"n": "评分最高", "v": "favorite"}, {"n": "当天", "v": "day"}, {"n": "本周", "v": "week"}, {"n": "本月", "v": "month"}]}
+ ],
+ "HDR": [
+ {"key": "tid", "name": "画质类型", "value": [{"n": "HDR", "v": "HDR"}, {"n": "杜比", "v": "杜比"}, {"n": "4K", "v": "4K"}, {"n": "8K", "v": "8K"}, {"n": "12K", "v": "12K"}, {"n": "16K", "v": "16K"}]},
+ {"key": "topic", "name": "关联主题(加画质)", "value": [{"n": "自然+8K", "v": "自然+8K"}, {"n": "电影+4K", "v": "电影+4K"}, {"n": "风景+HDR", "v": "风景+HDR"}]},
+ {"key": "date", "name": "排序/时间", "value": [{"n": "默认", "v": ""}, {"n": "最新", "v": "latest"}, {"n": "最热", "v": "hottest"}, {"n": "评分最高", "v": "favorite"}, {"n": "当天", "v": "day"}, {"n": "本周", "v": "week"}, {"n": "本月", "v": "month"}]}
+ ],
+ "免费": [
+ {"key": "tid", "name": "免费内容", "value": [{"n": "免费电影", "v": "免费电影"}, {"n": "免费电视剧", "v": "免费电视剧"}, {"n": "免费纪录片", "v": "免费纪录片"}, {"n": "免费音乐", "v": "免费音乐"}, {"n": "免费课程", "v": "免费课程"}, {"n": "免费直播", "v": "免费直播"}]},
+ {"key": "topic", "name": "关联主题(加免费)", "value": [{"n": "电影+免费", "v": "电影+免费"}, {"n": "教育+免费", "v": "教育+免费"}, {"n": "音乐+免费", "v": "音乐+免费"}]},
+ {"key": "date", "name": "排序/时间", "value": [{"n": "默认", "v": ""}, {"n": "最新", "v": "latest"}, {"n": "最热", "v": "hottest"}, {"n": "评分最高", "v": "favorite"}, {"n": "当天", "v": "day"}, {"n": "本周", "v": "week"}, {"n": "本月", "v": "month"}]}
+ ],
+ "短劇": [
+ {"key": "date", "name": "排序/时间", "value": [{"n": "默认", "v": ""}, {"n": "最新", "v": "latest"}, {"n": "最热", "v": "hottest"}, {"n": "评分最高", "v": "favorite"}, {"n": "当天", "v": "day"}, {"n": "本周", "v": "week"}, {"n": "本月", "v": "month"}]},
+ {"key": "tid", "name": "地区/平台", "value": [{"n": "全部", "v": ""}, {"n": "抖音", "v": "抖音 短剧"}, {"n": "快手", "v": "快手 短剧"}, {"n": "大陆", "v": "大陆 短剧"}, {"n": "香港", "v": "香港 短剧"}, {"n": "澳門", "v": "澳門 短剧"}, {"n": "台湾", "v": "台湾 短剧"}, {"n": "新加坡", "v": "新加坡 短剧"}, {"n": "馬來西亞", "v": "馬來西亞 短剧"}, {"n": "泰國", "v": "泰國 短剧"}, {"n": "越南", "v": "越南 短剧"}, {"n": "印度", "v": "印度 短剧"}, {"n": "韩国", "v": "韩国 短剧"}, {"n": "日本", "v": "日本 短剧"}, {"n": "欧美", "v": "欧美 短剧"}, {"n": "腾讯", "v": "腾讯 短剧"}, {"n": "爱奇艺", "v": "爱奇艺 短剧"}, {"n": "优酷", "v": "优酷 短剧"}, {"n": "芒果", "v": "芒果TV 短剧"}, {"n": "搜狐", "v": "搜狐 短剧"}]},
+ {"key": "topic", "name": "类型/频道", "value": [{"n": "全部", "v": ""}, {"n": "都市", "v": "@Urbanshort-TV 都市 短劇"}, {"n": "爱情", "v": "爱情 短劇"}, {"n": "复仇", "v": "复仇 短劇"}, {"n": "霸总", "v": "霸总 短劇"}, {"n": "萌宝", "v": "萌宝 短劇"}, {"n": "古装", "v": "古装 短劇"}, {"n": "穿越", "v": "穿越 短劇"}, {"n": "喜剧", "v": "喜剧 短劇"}, {"n": "奇幻", "v": "奇幻 短劇"}, {"n": "九酱爱追剧", "v": "@NineSauceDramaTV"}, {"n": "百万好剧场", "v": "@1-pw5ox"}, {"n": "咖啡追剧", "v": "@@coffeedrama605"}, {"n": "斗罗短剧", "v": "@DouluoDrama123 斗羅短劇"}, {"n": "嘟嘟剧场", "v": "@DUDUJUCHANG"}, {"n": "牛牛短剧", "v": "@niuniuduanju"}]}
+ ],
+ "动画片": [
+ {"key": "date", "name": "排序/时间", "value": [{"n": "默认", "v": ""}, {"n": "最新", "v": "latest"}, {"n": "最热", "v": "hottest"}, {"n": "评分最高", "v": "favorite"}, {"n": "当天", "v": "day"}, {"n": "本周", "v": "week"}, {"n": "本月", "v": "month"}]},
+ {"key": "tid", "name": "平台/频道", "value": [{"n": "全部", "v": ""}, {"n": "小猪佩奇", "v": "@PeppaPigChineseOfficial 小猪佩奇 中文官方 - Peppa Pig"}, {"n": "CoComelon", "v": "@CoComelon"}, {"n": "国漫社", "v": "@Animation 次元 苍穹动漫 PP看动漫 公馆"}, {"n": "国漫工厂", "v": "@3DGuoman SUB"}, {"n": "阅文动漫", "v": "@yuewenanimation SUB"}, {"n": "哔哩", "v": "@madebybilibili 哔哩动漫"}, {"n": "腾讯", "v": "@TencentVideoAnimation SUB"}, {"n": "优酷", "v": "@youkuanimation 优酷动漫"}, {"n": "爱奇艺", "v": "@iQIYIAnime 爱奇艺动漫"}]},
+ {"key": "topic", "name": "主题/类别", "value": [{"n": "全部", "v": ""}, {"n": "默认中文国漫", "v": "國漫 劇集 3D"}, {"n": "默认动画", "v": "animation"}, {"n": "儿童早教", "v": "儿童早教"}, {"n": "儿童歌曲", "v": "儿童歌曲"}, {"n": "儿童音乐", "v": "儿童音乐"}, {"n": "儿童绘画", "v": "儿童绘画"}, {"n": "宝宝巴士", "v": "宝宝巴士"}, {"n": "儿歌多多", "v": "儿歌多多"}, {"n": "儿童英语启蒙", "v": "儿童英语启蒙"}, {"n": "儿童启蒙故事", "v": "儿童启蒙故事"}, {"n": "儿童安全教育", "v": "儿童安全教育"}, {"n": "默认英文国漫", "v": "3D Chinese cartoon"}, {"n": "合集", "v": "Anime ENG SUB 合集"}]}
+ ]
+}
+
+class BaseExtractor:
+ @staticmethod
+ def extract_video_id(text):
+ text = str(text or '').strip()
+ for pattern in [
+ r'(?:v=|/v/|/embed/|/shorts/|youtu\.be/)([0-9A-Za-z_-]{11})',
+ r'^([0-9A-Za-z_-]{11})$',
+ ]:
+ m = re.search(pattern, text)
+ if m:
+ return m.group(1)
+ raise Exception('无法识别 YouTube 视频 ID')
+
+ @staticmethod
+ def _client_name_id(client_name):
+ return {
+ 'WEB': 1, 'MWEB': 2, 'ANDROID': 3, 'IOS': 5,
+ 'TVHTML5': 7, 'ANDROID_VR': 28, 'WEB_EMBEDDED_PLAYER': 56,
+ 'WEB_REMIX': 67,
+ }.get(client_name, 1)
+
+ @staticmethod
+ def _extract_ytcfg(text):
+ m = re.search(r'ytcfg\.set\s*\(\s*({.+?})\s*\)\s*;', text, re.S)
+ if m:
+ try:
+ return json.loads(m.group(1))
+ except Exception:
+ pass
+ return None
+
+ @staticmethod
+ def _extract_json_after(text, marker):
+ pos = text.find(marker)
+ if pos < 0:
+ return None
+ start = text.find('{', pos)
+ if start < 0:
+ return None
+ depth = 0
+ in_str = None
+ escape = False
+ for i in range(start, len(text)):
+ ch = text[i]
+ if escape:
+ escape = False
+ continue
+ if ch == '\\':
+ escape = True
+ continue
+ if in_str:
+ if ch == in_str:
+ in_str = None
+ continue
+ if ch == '"':
+ in_str = ch
+ continue
+ if ch == '{':
+ depth += 1
+ elif ch == '}':
+ depth -= 1
+ if depth == 0:
+ try:
+ return json.loads(text[start:i+1])
+ except Exception:
+ return None
+ return None
+
+ @staticmethod
+ def _search(pattern, text, default=None):
+ m = re.search(pattern, text or '', re.S)
+ return m.group(1) if m else default
+
+ @staticmethod
+ def _extract_player_url(text):
+ for pattern in [
+ r'"jsUrl":"([^"]+)"',
+ r'"PLAYER_JS_URL":"([^"]+)"',
+ r'(/s/player/[^"\\]+/base\.js)',
+ ]:
+ m = re.search(pattern, text)
+ if m:
+ return m.group(1).replace('\\/', '/')
+ return ''
+
+class YouTubeLite(BaseExtractor):
+ def __init__(self, session, headers=None, config=None):
+ self.session = session
+ self.headers = headers or {}
+ self.config = config or {}
+ self.player_cache = {}
+ self.extract_cache = {}
+ self.sig_plan_cache = {}
+ self.n_function_cache = {}
+ self.extract_cache_ttl = int(self.config.get('extract_cache_ttl') or 300)
+
+ def extract(self, url_or_id):
+ video_id = self.extract_video_id(url_or_id)
+ cached = self.extract_cache.get(video_id)
+ if cached and cached.get('expires', 0) > time.time():
+ return cached.get('data')
+
+ watch_url = f"https://www.youtube.com/watch?v={video_id}"
+ page = self._get(watch_url, timeout=60).text
+
+ ytcfg = self._extract_ytcfg(page) or {}
+ player_response = self._extract_initial_player_response(page) or {}
+ player_url = self._extract_player_url(page)
+ api_key = ytcfg.get('INNERTUBE_API_KEY') or self._search(r'"INNERTUBE_API_KEY":"([^"]+)"', page)
+ visitor_data = (
+ self.config.get('visitor_data') or ytcfg.get('VISITOR_DATA') or
+ (((ytcfg.get('INNERTUBE_CONTEXT') or {}).get('client') or {}).get('visitorData')) or
+ ((player_response.get('responseContext') or {}).get('visitorData'))
+ )
+ sts = self._extract_signature_timestamp(player_url)
+
+ context = ytcfg.get('INNERTUBE_CONTEXT') or {
+ 'client': {'clientName': 'WEB', 'clientVersion': '2.20240310.01.00', 'hl': 'en', 'gl': 'US'}
+ }
+ responses = [player_response] if player_response else []
+ if api_key:
+ api_responses = self._call_player_api(video_id, api_key, context, watch_url, visitor_data, sts)
+ if not isinstance(api_responses, list):
+ api_responses = [api_responses] if api_responses else []
+ responses.extend([x for x in api_responses if x])
+
+ player_response = next((x for x in responses if (x.get('playabilityStatus') or {}).get('status') == 'OK'), player_response)
+ status = (player_response.get('playabilityStatus') or {}).get('status')
+ streaming = player_response.get('streamingData') or {}
+ if status and status not in ('OK', 'LIVE_STREAM_OFFLINE') and not streaming:
+ reason = (player_response.get('playabilityStatus') or {}).get('reason') or status
+ raise Exception(f'YouTube 不可播放: {reason}')
+
+ details = player_response.get('videoDetails') or {}
+ raw_formats = []
+ seen_raw = set()
+ for response in responses:
+ response_streaming = (response or {}).get('streamingData') or {}
+ source_raw = (response_streaming.get('formats') or []) + (response_streaming.get('adaptiveFormats') or [])
+ for raw in source_raw:
+ key = (raw.get('itag'), raw.get('url') or raw.get('signatureCipher') or raw.get('cipher') or raw.get('mimeType'))
+ if key not in seen_raw:
+ seen_raw.add(key)
+ raw = raw.copy()
+ raw['_client_name'] = (response or {}).get('_client_name')
+ raw['_client_ua'] = (response or {}).get('_client_ua')
+ raw_formats.append(raw)
+
+ formats = []
+ for raw in raw_formats:
+ item = self._normalize_format(raw, player_url)
+ if item and item.get('url'):
+ formats.append(item)
+
+ if not formats:
+ raise Exception('未获取到可用播放地址')
+
+ data = {
+ 'id': video_id,
+ 'title': details.get('title') or video_id,
+ 'duration': int(details.get('lengthSeconds') or 0),
+ 'formats': formats,
+ 'is_live': bool(details.get('isLive')),
+ }
+ self.extract_cache[video_id] = {'data': data, 'expires': time.time() + self.extract_cache_ttl}
+ return data
+
+ def _extract_signature_timestamp(self, player_url):
+ try:
+ code = self._get_player_code(player_url)
+ sts = self._search(r'(?:signatureTimestamp|sts)\s*:\s*(\d{5})', code)
+ return int(sts) if sts else None
+ except Exception:
+ return None
+
+ def _get_po_token(self, client_name, context='gvs'):
+ tokens = self.config.get('po_token') or self.config.get('po_tokens') or {}
+ if isinstance(tokens, str):
+ return tokens
+ if isinstance(tokens, dict):
+ return tokens.get(f'{client_name}.{context}') or tokens.get(client_name) or tokens.get(context)
+ return None
+
+ def _get(self, url, **kwargs):
+ headers = self.headers.copy()
+ headers.update(kwargs.pop('headers', {}) or {})
+ timeout = kwargs.pop('timeout', 60)
+ r = self.session.get(url, headers=headers, timeout=timeout, **kwargs)
+ r.raise_for_status()
+ return r
+
+ def _post_json(self, url, payload, headers=None):
+ h = self.headers.copy()
+ h.update({'Content-Type': 'application/json', 'Origin': 'https://www.youtube.com'})
+ if headers:
+ h.update({k: v for k, v in headers.items() if v})
+ r = self.session.post(url, json=payload, headers=h, timeout=60)
+ r.raise_for_status()
+ return r.json()
+
+ def _call_player_api(self, video_id, api_key, context, referer, visitor_data=None, sts=None):
+ clients = [
+ {'client': {'clientName': 'ANDROID_VR', 'clientVersion': '1.65.10', 'deviceMake': 'Oculus', 'deviceModel': 'Quest 3', 'androidSdkVersion': 32, 'userAgent': 'com.google.android.apps.youtube.vr.oculus/1.65.10 (Linux; U; Android 12L; eureka-user Build/SQ3A.220605.009.A1) gzip', 'osName': 'Android', 'osVersion': '12L', 'hl': 'en', 'gl': 'US'}}
+ ]
+ results = []
+ fallback = None
+ for ctx in clients:
+ client_name = (ctx.get('client') or {}).get('clientName')
+ try:
+ url = f'https://www.youtube.com/youtubei/v1/player?key={api_key}&prettyPrint=false'
+ payload = {
+ 'context': ctx,
+ 'videoId': video_id,
+ 'playbackContext': {'contentPlaybackContext': {'html5Preference': 'HTML5_PREF_WANTS', **({'signatureTimestamp': sts} if sts else {})}},
+ 'contentCheckOk': True,
+ 'racyCheckOk': True,
+ }
+ client = ctx.get('client') or {}
+ headers = {
+ 'Referer': referer,
+ 'X-YouTube-Client-Name': str(self._client_name_id(client.get('clientName'))),
+ 'X-YouTube-Client-Version': client.get('clientVersion') or '',
+ }
+ if visitor_data:
+ headers['X-Goog-Visitor-Id'] = visitor_data
+ client_ua = client.get('userAgent')
+ if client_ua:
+ headers['User-Agent'] = client_ua
+
+ data = self._post_json(url, payload, headers=headers)
+ streaming = data.get('streamingData') or {}
+ if streaming:
+ data['_client_name'] = client_name
+ data['_client_ua'] = client_ua
+ results.append(data)
+ if streaming and fallback is None:
+ fallback = data
+ elif fallback is None:
+ fallback = data
+ except Exception:
+ continue
+ return results or ([fallback] if fallback else [])
+
+ def _normalize_format(self, fmt, player_url):
+ media_url = fmt.get('url')
+ if not media_url:
+ cipher = fmt.get('signatureCipher') or fmt.get('cipher')
+ if cipher:
+ media_url = self._decrypt_signature_cipher(cipher, player_url)
+ if not media_url:
+ return None
+
+ media_url = self._decrypt_nsig(media_url, player_url)
+
+ client_name = fmt.get('_client_name')
+ po_token = self._get_po_token(client_name, 'gvs') if client_name else None
+ if po_token:
+ sep = '&' if '?' in media_url else '?'
+ media_url = f'{media_url}{sep}pot={quote(po_token)}'
+
+ mime = fmt.get('mimeType') or ''
+ ext = 'mp4' if 'mp4' in mime else 'webm' if 'webm' in mime else 'unknown'
+ codecs = self._search(r'codecs="([^"]+)"', mime) or ''
+ has_audio = mime.startswith('audio/') or any(x in codecs for x in ('mp4a', 'opus', 'vorbis'))
+ has_video = mime.startswith('video/') or any(x in codecs for x in ('avc', 'vp9', 'av01', 'h264'))
+ headers = (fmt.get('http_headers') or {}).copy()
+ if fmt.get('_client_ua'):
+ headers['User-Agent'] = fmt.get('_client_ua')
+
+ return {
+ 'itag': fmt.get('itag'),
+ 'url': media_url,
+ 'mimeType': mime,
+ 'client': fmt.get('_client_name'),
+ 'ext': ext,
+ 'width': fmt.get('width') or 0,
+ 'height': fmt.get('height') or 0,
+ 'fps': fmt.get('fps') or 0,
+ 'bitrate': fmt.get('bitrate') or fmt.get('averageBitrate') or 0,
+ 'contentLength': fmt.get('contentLength'),
+ 'initRange': fmt.get('initRange') or {},
+ 'indexRange': fmt.get('indexRange') or {},
+ 'codecs': codecs,
+ 'quality': fmt.get('qualityLabel') or fmt.get('quality'),
+ 'vcodec': codecs if has_video else 'none',
+ 'acodec': codecs if has_audio else 'none',
+ 'headers': headers,
+ }
+
+ def _decrypt_signature_cipher(self, cipher, player_url):
+ data = parse_qs(cipher)
+ media_url = unquote(data.get('url', [''])[0])
+ sig = unquote(data.get('s', [''])[0])
+ sp = data.get('sp', ['sig'])[0]
+ if not media_url:
+ return ''
+ if sig:
+ decoded = self._decrypt_sig(sig, player_url)
+ sep = '&' if '?' in media_url else '?'
+ media_url = f'{media_url}{sep}{sp}={quote(decoded)}'
+ return media_url
+
+ def _decrypt_sig(self, sig, player_url):
+ cache_key = player_url or ''
+ if cache_key in self.sig_plan_cache:
+ plan = self.sig_plan_cache[cache_key]
+ else:
+ code = self._get_player_code(player_url)
+ plan = self._extract_sig_plan(code)
+ self.sig_plan_cache[cache_key] = plan
+ if not plan:
+ return sig
+ arr = list(sig)
+ for op, arg in plan:
+ if op == 'reverse':
+ arr.reverse()
+ elif op in ('slice', 'splice'):
+ arr = arr[int(arg):]
+ elif op == 'swap' and arr:
+ j = int(arg) % len(arr)
+ arr[0], arr[j] = arr[j], arr[0]
+ return ''.join(arr)
+
+ def _decrypt_nsig(self, media_url, player_url):
+ try:
+ parsed = urlparse(media_url)
+ query = parse_qs(parsed.query)
+ n_value = query.get('n', [None])[0]
+ if not n_value:
+ return media_url
+
+ path_match = re.search(r'/n/([^/]+)', parsed.path)
+ if path_match and path_match.group(1) != n_value:
+ new_path = parsed.path.replace(f"/n/{path_match.group(1)}", f"/n/{n_value}", 1)
+ return urlunparse(parsed._replace(path=new_path))
+
+ if player_url:
+ func = self._get_n_function(player_url)
+ if func:
+ new_n = func(n_value)
+ if new_n != n_value:
+ query['n'] = [new_n]
+ new_query = urlencode(query, doseq=True)
+ return urlunparse(parsed._replace(query=new_query))
+ return media_url
+ except Exception:
+ return media_url
+
+ def _get_n_function(self, player_url):
+ if player_url in self.n_function_cache:
+ return self.n_function_cache[player_url]
+ code = self._get_player_code(player_url)
+ func = self._extract_n_function(code)
+ self.n_function_cache[player_url] = func
+ return func
+
+ def _get_player_code(self, player_url):
+ if not player_url:
+ return ''
+ if player_url in self.player_cache:
+ return self.player_cache[player_url]
+ if player_url.startswith('//'):
+ player_url = 'https:' + player_url
+ elif player_url.startswith('/'):
+ player_url = 'https://www.youtube.com' + player_url
+ try:
+ code = self._get(player_url, timeout=60).text
+ except Exception:
+ code = ''
+ self.player_cache[player_url] = code
+ return code
+
+ def _extract_sig_plan(self, code):
+ if not code:
+ return None
+ name = None
+ for pattern in [
+ r'\.sig\|\|([a-zA-Z0-9_$]+)\(',
+ r'"signature",\s*([a-zA-Z0-9_$]+)\(',
+ r'([a-zA-Z0-9_$]+)=function\(a\)\{a=a\.split\(""\);',
+ ]:
+ m = re.search(pattern, code)
+ if m:
+ name = m.group(1)
+ break
+ if not name:
+ return None
+ body = self._extract_js_function_body(code, name)
+ if not body:
+ return None
+ helper = self._search(r'([a-zA-Z0-9_$]+)\.[a-zA-Z0-9_$]+\(a,\d+\)', body)
+ helper_map = self._extract_helper_object(code, helper) if helper else {}
+ plan = []
+ for part in body.split(';'):
+ if 'reverse()' in part:
+ plan.append(('reverse', 0))
+ continue
+ m = re.search(r'\.slice\((\d+)\)', part)
+ if m:
+ plan.append(('slice', int(m.group(1))))
+ continue
+ m = re.search(r'\.splice\(0,(\d+)\)', part)
+ if m:
+ plan.append(('splice', int(m.group(1))))
+ continue
+ m = re.search(r'([a-zA-Z0-9_$]+)\.([a-zA-Z0-9_$]+)\(a,(\d+)\)', part)
+ if m and m.group(1) == helper:
+ op = helper_map.get(m.group(2))
+ if op:
+ plan.append((op, int(m.group(3))))
+ return plan or None
+
+ def _extract_helper_object(self, code, name):
+ if not name:
+ return {}
+ m = re.search(r'var\s+' + re.escape(name) + r'=\{(.+?)\};', code, re.S) or re.search(re.escape(name) + r'=\{(.+?)\};', code, re.S)
+ if not m:
+ return {}
+ result = {}
+ for method, body in re.findall(r'([a-zA-Z0-9_$]+):function\([a-z,]+\)\{(.*?)\}', m.group(1)):
+ if '.reverse(' in body:
+ result[method] = 'reverse'
+ elif '.splice(' in body:
+ result[method] = 'splice'
+ elif '.slice(' in body:
+ result[method] = 'slice'
+ elif 'a[0]' in body and 'length' in body:
+ result[method] = 'swap'
+ return result
+
+ def _extract_n_function(self, code):
+ if not code:
+ return None
+ name = None
+ for pattern in [
+ r'\.get\("n"\)\)&&\(b=([a-zA-Z0-9_$]+)(?:\[(\d+)\])?\(b\)',
+ r'\.get\("n"\)\)&&\(b=([a-zA-Z0-9_$]+)\(b\)',
+ r'([a-zA-Z0-9_$]+)=function\(a\)\{var b=a\.split\(""\)',
+ r'function\s+([a-zA-Z0-9_$]+)\(a\)\{var b=a\.split\(""\)',
+ r'([a-zA-Z0-9_$]+)=function\(a\)\{a=a\.split\(""\)',
+ ]:
+ m = re.search(pattern, code)
+ if m:
+ name = m.group(1)
+ break
+ if not name:
+ return None
+ body = self._extract_js_function_body(code, name)
+ if not body:
+ return None
+
+ def transform(value):
+ arr = list(value)
+ for part in body.split(';'):
+ if 'reverse()' in part:
+ arr.reverse()
+ m = re.search(r'\.slice\((\d+)\)', part)
+ if m:
+ arr = arr[int(m.group(1)):]
+ m = re.search(r'\.splice\(0,(\d+)\)', part)
+ if m:
+ arr = arr[int(m.group(1)):]
+ return ''.join(arr) or value
+ return transform
+
+ def _extract_js_function_body(self, code, name):
+ starts = []
+ for pattern in [
+ r'function\s+' + re.escape(name) + r'\s*\([^)]*\)\s*\{',
+ re.escape(name) + r'\s*=\s*function\s*\([^)]*\)\s*\{',
+ r'var\s+' + re.escape(name) + r'\s*=\s*function\s*\([^)]*\)\s*\{',
+ ]:
+ m = re.search(pattern, code)
+ if m:
+ starts.append(m.end() - 1)
+ if not starts:
+ return ''
+ start = starts[0]
+ depth = 0
+ in_str = None
+ escape = False
+ for i in range(start, len(code)):
+ ch = code[i]
+ if escape:
+ escape = False
+ continue
+ if ch == '\\':
+ escape = True
+ continue
+ if in_str:
+ if ch == in_str:
+ in_str = None
+ continue
+ if ch in ('"', "'", '`'):
+ in_str = ch
+ continue
+ if ch == '{':
+ depth += 1
+ elif ch == '}':
+ depth -= 1
+ if depth == 0:
+ return code[start + 1:i]
+ return ''
+
+ def _extract_initial_player_response(self, text):
+ return self._extract_json_after(text, 'ytInitialPlayerResponse')
+
+class YouTubeLiveLite(BaseExtractor):
+ def __init__(self, session, headers=None, config=None):
+ self.session = session
+ self.headers = headers or {}
+ self.config = config or {}
+ self.cache = {}
+ self.cache_ttl = int(self.config.get('live_cache_ttl') or 45)
+
+ def extract_live(self, url_or_id):
+ video_id = self.extract_video_id(url_or_id)
+ now = time.time()
+ cached = self.cache.get(video_id)
+ if cached and cached.get('expires', 0) > now:
+ return cached.get('data')
+
+ watch_url = f'https://www.youtube.com/watch?v={video_id}'
+ page = self._get(watch_url, timeout=60).text
+
+ player_response = self._extract_initial_player_response(page) or {}
+ ytcfg = self._extract_ytcfg(page) or {}
+ api_key = ytcfg.get('INNERTUBE_API_KEY') or self._search(r'"INNERTUBE_API_KEY":"([^"]+)"', page)
+ visitor_data = (
+ self.config.get('visitor_data') or ytcfg.get('VISITOR_DATA') or
+ (((ytcfg.get('INNERTUBE_CONTEXT') or {}).get('client') or {}).get('visitorData')) or
+ ((player_response.get('responseContext') or {}).get('visitorData'))
+ )
+
+ status_obj = player_response.get('playabilityStatus') or {}
+ streaming = player_response.get('streamingData') or {}
+ details = player_response.get('videoDetails') or {}
+
+ page_hls_url = streaming.get('hlsManifestUrl') or ''
+ api_data = None
+ if api_key:
+ api_data = self._call_player_api(video_id, api_key, ytcfg, watch_url, visitor_data)
+ if api_data:
+ api_streaming = api_data.get('streamingData') or {}
+ api_details = api_data.get('videoDetails') or {}
+ api_hls_url = api_streaming.get('hlsManifestUrl') or ''
+ if api_hls_url:
+ streaming = api_streaming
+ elif not page_hls_url and api_streaming:
+ streaming = api_streaming
+ if api_details:
+ details = api_details
+ status_obj = api_data.get('playabilityStatus') or status_obj
+
+ if not (streaming.get('hlsManifestUrl') or '') and page_hls_url:
+ streaming = dict(streaming or {})
+ streaming['hlsManifestUrl'] = page_hls_url
+
+ hls_url = streaming.get('hlsManifestUrl') or ''
+ is_live = bool(details.get('isLive') or hls_url)
+ status = status_obj.get('status') or ''
+ reason = status_obj.get('reason') or ''
+ title = details.get('title') or video_id
+
+ data = {
+ 'id': video_id,
+ 'title': title,
+ 'is_live': is_live,
+ 'status': status,
+ 'reason': reason,
+ 'hls_url': hls_url,
+ 'duration': int(details.get('lengthSeconds') or 0),
+ }
+ self.cache[video_id] = {'data': data, 'expires': time.time() + self.cache_ttl}
+ return data
+
+ def _get(self, url, **kwargs):
+ headers = self.headers.copy()
+ headers.update(kwargs.pop('headers', {}) or {})
+ timeout = kwargs.pop('timeout', 60)
+ response = self.session.get(url, headers=headers, timeout=timeout, **kwargs)
+ response.raise_for_status()
+ return response
+
+ def _post_json(self, url, payload, headers=None):
+ final_headers = self.headers.copy()
+ final_headers.update({'Content-Type': 'application/json', 'Origin': 'https://www.youtube.com'})
+ if headers:
+ final_headers.update({k: v for k, v in headers.items() if v})
+ response = self.session.post(url, json=payload, headers=final_headers, timeout=60)
+ response.raise_for_status()
+ return response.json()
+
+ def _call_player_api(self, video_id, api_key, ytcfg, referer, visitor_data=None):
+ context = ytcfg.get('INNERTUBE_CONTEXT') or {
+ 'client': {'clientName': 'WEB', 'clientVersion': '2.20240310.01.00', 'hl': 'en', 'gl': 'US'}
+ }
+ clients = [
+ {'client': {'clientName': 'ANDROID_VR', 'clientVersion': '1.65.10', 'deviceMake': 'Oculus', 'deviceModel': 'Quest 3', 'androidSdkVersion': 32, 'userAgent': 'com.google.android.apps.youtube.vr.oculus/1.65.10 (Linux; U; Android 12L; eureka-user Build/SQ3A.220605.009.A1) gzip', 'osName': 'Android', 'osVersion': '12L', 'hl': 'en', 'gl': 'US'}}
+ ]
+ for ctx in clients:
+ client = ctx.get('client') or {}
+ client_name = client.get('clientName') or 'WEB'
+ try:
+ url = f'https://www.youtube.com/youtubei/v1/player?key={quote(api_key)}&prettyPrint=false'
+ headers = {
+ 'Referer': referer,
+ 'X-YouTube-Client-Name': str(self._client_name_id(client_name)),
+ 'X-YouTube-Client-Version': client.get('clientVersion') or '',
+ }
+ if visitor_data:
+ headers['X-Goog-Visitor-Id'] = visitor_data
+ if client.get('userAgent'):
+ headers['User-Agent'] = client.get('userAgent')
+
+ payload = {
+ 'context': ctx,
+ 'videoId': video_id,
+ 'contentCheckOk': True,
+ 'racyCheckOk': True,
+ }
+ data = self._post_json(url, payload, headers=headers)
+ streaming = data.get('streamingData') or {}
+ if streaming.get('hlsManifestUrl'):
+ data['_client_name'] = client_name
+ return data
+ except Exception:
+ continue
+ return None
+
+ def _extract_initial_player_response(self, text):
+ return self._extract_json_after(text, 'ytInitialPlayerResponse')
+
+class Spider(Spider):
+ def getName(self):
+ return 'YouTube 视频+直播'
+
+ def init(self, extend):
+ try:
+ self.extendDict = json.loads(extend) if extend else {}
+ except Exception:
+ self.extendDict = {}
+ self.session = requests.Session()
+ retry = Retry(
+ total=3,
+ backoff_factor=1,
+ status_forcelist=[500, 502, 503, 504, 408, 429],
+ allowed_methods=["GET", "POST"]
+ )
+ adapter = HTTPAdapter(max_retries=retry, pool_connections=20, pool_maxsize=20)
+ self.session.mount('http://', adapter)
+ self.session.mount('https://', adapter)
+ self.session.keep_alive = False
+ self._cache = {}
+
+ proxy_config = self.extendDict.get('proxy')
+ if proxy_config:
+ if isinstance(proxy_config, str):
+ proxy_str = proxy_config.strip()
+ if proxy_str:
+ if not proxy_str.startswith(('http://', 'https://')):
+ proxy_str = 'http://' + proxy_str
+ self.session.proxies = {'http': proxy_str, 'https': proxy_str}
+ elif isinstance(proxy_config, dict):
+ proxies = {}
+ for k, v in proxy_config.items():
+ if k in ('http', 'https') and v:
+ v_str = v.strip()
+ if v_str:
+ if not v_str.startswith(('http://', 'https://')):
+ v_str = 'http://' + v_str
+ proxies[k] = v_str
+ if proxies:
+ self.session.proxies = proxies
+ else:
+ self.session.proxies = {}
+ else:
+ self.session.proxies = {}
+
+ self.header = {
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
+ 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
+ 'Referer': 'https://www.youtube.com/'
+ }
+ self.session.headers.update(self.header)
+
+ self.yt_video = YouTubeLite(self.session, self.header, self.extendDict)
+ self.yt_live = YouTubeLiveLite(self.session, self.header, self.extendDict)
+ self.search_page_cache = {}
+ self.live_search_cache = {}
+ self.hls_url_cache = {}
+ self.hls_proxy_enabled = self.extendDict.get('hls_proxy', True) is not False
+ self._hls_key_seq = 0
+
+ def setCache(self, key, value):
+ self._cache[key] = value
+
+ def getCache(self, key):
+ return self._cache.get(key)
+
+ def homeContent(self, filter):
+ result = {'class': YOUTUBE_CLASSES}
+ if filter:
+ video_filters = {}
+ for c in YOUTUBE_CLASSES:
+ cid = c['type_id']
+ if cid in CATEGORY_FILTERS:
+ video_filters[cid] = CATEGORY_FILTERS[cid]
+ result['filters'] = video_filters
+ return result
+
+ def homeVideoContent(self):
+ return {'list': []}
+
+ def categoryContent(self, cid, page, filter, ext):
+ page = int(page or 1)
+ filters = ext if isinstance(ext, dict) else {}
+ if self._is_live_category(cid):
+ keyword = self._build_live_keyword(cid, filters)
+ videos, has_more = self._search_live_page(keyword, page)
+ else:
+ keyword = self._build_video_keyword(cid, filters)
+ videos, has_more = self._search_video_page(keyword, page)
+ return {
+ 'list': videos,
+ 'page': page,
+ 'pagecount': page + 1 if has_more else page,
+ 'limit': len(videos),
+ 'total': len(videos)
+ }
+
+ def searchContent(self, key, quick, pg=1):
+ page = int(pg or 1)
+ keyword = str(key or '').strip()
+ videos_v, _ = self._search_video_page(keyword, page)
+ live_keyword = f'{keyword} live' if 'live' not in keyword.lower() and '直播' not in keyword else keyword
+ videos_l, _ = self._search_live_page(live_keyword, page)
+ seen = set()
+ merged = []
+ for v in videos_v + videos_l:
+ if v['vod_id'] not in seen:
+ seen.add(v['vod_id'])
+ merged.append(v)
+ return {
+ 'list': merged[:30],
+ 'page': page,
+ 'pagecount': page + 1,
+ 'limit': len(merged),
+ 'total': len(merged)
+ }
+
+ def detailContent(self, did):
+ video_id = did[0]
+ is_live = False
+ title = video_id
+ status = '视频'
+ has_super = False
+
+ try:
+ data = self.yt_video.extract(video_id)
+ title = data.get('title') or video_id
+ is_live = data.get('is_live', False)
+ status = '直播中' if is_live else '视频'
+
+ if not is_live:
+ formats = data.get('formats') or []
+ all_videos = [x for x in formats if x.get('vcodec') != 'none' and x.get('acodec') == 'none']
+ high_res = [x for x in all_videos if int(x.get('height') or 0) >= 720]
+ has_super = len(high_res) > 0
+ except Exception:
+ is_live = False
+ title = self._get_video_title(video_id) or video_id
+ status = '视频'
+
+ related = []
+ try:
+ r = self.session.get(f'https://www.youtube.com/watch?v={video_id}', timeout=60)
+ related = self._extract_videos_fixed(r.text, 20)
+ except Exception:
+ pass
+
+ safe_title = self._safe_title(title)
+
+ play_sources = []
+ play_urls = []
+
+ if is_live:
+ play_sources.append('直播')
+ play_urls.append(f'{safe_title}${video_id}@live')
+ else:
+ if has_super:
+ play_sources.append('极客VP')
+ play_urls.append(f'{safe_title}${video_id}@super')
+
+ play_sources.append('万能MP')
+ play_urls.append(f'{safe_title}${video_id}@normal')
+
+ if related:
+ play_sources.append('相关推荐')
+ play_url2 = '#'.join([f"{self._safe_title(v['vod_name'])}${v['vod_id']}@normal" for v in related if v.get('vod_id') != video_id])
+ play_urls.append(play_url2)
+
+ vod = {
+ 'vod_id': video_id,
+ 'vod_name': title,
+ 'vod_pic': f'http://127.0.0.1:9978/proxy?do=py&type=image&vid={video_id}',
+ 'vod_remarks': status,
+ 'vod_play_from': '$$$'.join(play_sources),
+ 'vod_play_url': '$$$'.join(play_urls)
+ }
+ return {'list': [vod]}
+
+ def playerContent(self, flag, pid, vipFlags):
+ raw_pid = pid.split('$')[-1]
+ if '@' in raw_pid:
+ video_id, quality_or_type = raw_pid.rsplit('@', 1)
+ else:
+ video_id, quality_or_type = raw_pid, 'super'
+
+ if quality_or_type == 'live':
+ return self._play_live(video_id)
+ else:
+ return self._play_video(video_id, quality_or_type)
+
+ def _is_live_category(self, cid):
+ return 'live' in cid.lower() or '直播' in cid.lower()
+
+ def _build_live_keyword(self, cid, filters=None):
+ terms = [cid]
+ if isinstance(filters, dict):
+ for value in filters.values():
+ term = self._normalize_filter_term(value)
+ if term:
+ terms.append(term)
+ keyword = ' '.join(terms).strip()
+ if 'live' not in keyword.lower() and '直播' not in keyword:
+ keyword = f'{keyword} live'
+ return keyword
+
+ def _build_video_keyword(self, cid, filters=None):
+ if cid.startswith('LIST:'):
+ raw = cid[5:].strip()
+ channels = [ch.strip() for ch in raw.split(',') if ch.strip()]
+ terms = []
+ for ch in channels:
+ if ch.startswith('@'):
+ terms.append(f'channel:{ch}')
+ else:
+ terms.append(f'"{ch}"')
+ keyword = ' OR '.join(terms) if terms else ''
+ else:
+ keyword = cid
+ if isinstance(filters, dict):
+ for value in filters.values():
+ term = self._normalize_filter_term(value)
+ if term:
+ keyword += ' ' + term
+ return keyword.strip()
+
+ def _normalize_filter_term(self, value):
+ if isinstance(value, (list, tuple)):
+ return ' '.join([self._normalize_filter_term(item) for item in value if item])
+ if isinstance(value, dict):
+ return ' '.join([self._normalize_filter_term(item) for item in value.values() if item])
+ return re.sub(r'\s+', ' ', str(value or '')).strip()[:180]
+
+ def _search_cache_key(self, key):
+ return re.sub(r'\s+', ' ', str(key or '')).strip().lower()
+
+ def _search_video_page(self, key, page=1):
+ page = max(1, int(page or 1))
+ cache_key = self._search_cache_key(key)
+ session = self.search_page_cache.get(cache_key)
+ if page == 1 or not session:
+ session = self._fetch_search_first_page(key)
+ self.search_page_cache[cache_key] = session
+ while len(session.get('pages', [])) < page and session.get('next'):
+ data = self._fetch_search_continuation(session)
+ videos = self._extract_videos_from_api(data, 30)
+ session.setdefault('pages', []).append(videos)
+ session['next'] = self._extract_continuation_token(data)
+ pages = session.get('pages', [])
+ videos = pages[page - 1] if len(pages) >= page else []
+ has_more = bool(session.get('next')) or len(pages) > page
+ return videos, has_more
+
+ def _search_live_page(self, key, page=1):
+ page = max(1, int(page or 1))
+ cache_key = f'live_{self._search_cache_key(key)}'
+ session = self.live_search_cache.get(cache_key)
+ if page == 1 or not session:
+ session = self._fetch_live_search_first_page(key)
+ self.live_search_cache[cache_key] = session
+ while len(session.get('pages', [])) < page and session.get('next'):
+ data = self._fetch_search_continuation(session)
+ videos = self._extract_live_videos_from_api(data, 30)
+ session.setdefault('pages', []).append(videos)
+ session['next'] = self._extract_continuation_token(data)
+ pages = session.get('pages', [])
+ videos = pages[page - 1] if len(pages) >= page else []
+ has_more = bool(session.get('next')) or len(pages) > page
+ return videos, has_more
+
+ def _fetch_live_search_first_page(self, key):
+ search_url = f'https://www.youtube.com/results?search_query={quote(str(key or ""))}&sp=EgJAAQ%253D%253D'
+ r = self.session.get(search_url, timeout=60)
+ html_str = r.text
+ data = self.yt_video._extract_json_after(html_str, 'ytInitialData') or {}
+ ytcfg = self.yt_video._extract_ytcfg(html_str) or {}
+ api_key = ytcfg.get('INNERTUBE_API_KEY') or self.yt_video._search(r'"INNERTUBE_API_KEY":"([^"]+)"', html_str)
+ context = ytcfg.get('INNERTUBE_CONTEXT') or {'client': {'clientName': 'WEB', 'clientVersion': '2.20240310.01.00', 'hl': 'zh-CN', 'gl': 'US'}}
+ client = context.get('client') or {}
+ return {
+ 'key': key,
+ 'api_key': api_key,
+ 'context': context,
+ 'client_name': client.get('clientName') or 'WEB',
+ 'client_version': client.get('clientVersion') or '2.20240310.01.00',
+ 'referer': search_url,
+ 'pages': [self._extract_live_videos_from_api(data, 30)],
+ 'next': self._extract_continuation_token(data),
+ }
+
+ def _fetch_search_first_page(self, key):
+ search_url = f'https://www.youtube.com/results?search_query={quote(str(key or ""))}'
+ r = self.session.get(search_url, timeout=60)
+ html_str = r.text
+ data = self.yt_video._extract_json_after(html_str, 'ytInitialData') or {}
+ ytcfg = self.yt_video._extract_ytcfg(html_str) or {}
+ api_key = ytcfg.get('INNERTUBE_API_KEY') or self.yt_video._search(r'"INNERTUBE_API_KEY":"([^"]+)"', html_str)
+ context = ytcfg.get('INNERTUBE_CONTEXT') or {'client': {'clientName': 'WEB', 'clientVersion': '2.20240310.01.00', 'hl': 'zh-CN', 'gl': 'US'}}
+ client = context.get('client') or {}
+ return {
+ 'key': key,
+ 'api_key': api_key,
+ 'context': context,
+ 'client_name': client.get('clientName') or 'WEB',
+ 'client_version': client.get('clientVersion') or '2.20240310.01.00',
+ 'referer': search_url,
+ 'pages': [self._extract_videos_from_api(data, 30)],
+ 'next': self._extract_continuation_token(data),
+ }
+
+ def _fetch_search_continuation(self, session):
+ token = session.get('next')
+ api_key = session.get('api_key')
+ if not token or not api_key:
+ return {}
+ url = f'https://www.youtube.com/youtubei/v1/search?key={quote(api_key)}'
+ headers = self.header.copy()
+ headers.update({
+ 'Content-Type': 'application/json',
+ 'Origin': 'https://www.youtube.com',
+ 'Referer': session.get('referer') or 'https://www.youtube.com/',
+ 'X-YouTube-Client-Name': str(self.yt_video._client_name_id(session.get('client_name'))),
+ 'X-YouTube-Client-Version': session.get('client_version') or '2.20240310.01.00',
+ })
+ payload = {'context': session.get('context') or {}, 'continuation': token}
+ r = self.session.post(url, json=payload, headers=headers, timeout=60)
+ r.raise_for_status()
+ return r.json()
+
+ def _extract_continuation_token(self, data):
+ tokens = []
+ def scan(obj):
+ if isinstance(obj, dict):
+ endpoint = obj.get('continuationEndpoint') or {}
+ token = endpoint.get('continuationCommand', {}).get('token')
+ if token:
+ tokens.append(token)
+ renderer = obj.get('continuationItemRenderer') or {}
+ token = renderer.get('continuationEndpoint', {}).get('continuationCommand', {}).get('token')
+ if token:
+ tokens.append(token)
+ for value in obj.values():
+ scan(value)
+ elif isinstance(obj, list):
+ for value in obj:
+ scan(value)
+ scan(data)
+ return tokens[0] if tokens else ''
+
+ def _extract_videos_from_api(self, data, limit=30):
+ videos = []
+ seen = set()
+ def scan(obj):
+ if len(videos) >= limit:
+ return
+ if isinstance(obj, dict):
+ for key in ('videoRenderer', 'compactVideoRenderer', 'gridVideoRenderer'):
+ if key in obj:
+ item = self._parse_renderer(obj[key], is_live=False)
+ if item and item['vod_id'] not in seen:
+ seen.add(item['vod_id'])
+ videos.append(item)
+ for value in obj.values():
+ scan(value)
+ elif isinstance(obj, list):
+ for value in obj:
+ scan(value)
+ scan(data)
+ return videos[:limit]
+
+ def _extract_live_videos_from_api(self, data, limit=30):
+ videos = []
+ seen = set()
+ def scan(obj):
+ if len(videos) >= limit:
+ return
+ if isinstance(obj, dict):
+ for key in ('videoRenderer', 'compactVideoRenderer', 'gridVideoRenderer'):
+ if key in obj:
+ item = self._parse_renderer(obj[key], is_live=True)
+ if item and item['vod_id'] not in seen:
+ seen.add(item['vod_id'])
+ videos.append(item)
+ for value in obj.values():
+ scan(value)
+ elif isinstance(obj, list):
+ for value in obj:
+ scan(value)
+ scan(data)
+ return videos[:limit]
+
+ def _parse_renderer(self, renderer, is_live=False):
+ try:
+ vid = renderer.get('videoId')
+ if not vid:
+ nav = renderer.get('navigationEndpoint') or {}
+ vid = (nav.get('watchEndpoint') or {}).get('videoId')
+ if not vid:
+ return None
+
+ is_actually_live = False
+ badges = renderer.get('badges', [])
+ for badge in badges:
+ if isinstance(badge, dict):
+ text = badge.get('text', '') or badge.get('label', '') or ''
+ if '直播' in text or 'LIVE' in text.upper():
+ is_actually_live = True
+ break
+ if not is_live and is_actually_live:
+ return None
+
+ title_obj = renderer.get('title') or renderer.get('headline') or {}
+ title = title_obj.get('simpleText') or ''.join([x.get('text', '') for x in title_obj.get('runs', [])]) or 'YouTube Video'
+ dur = ''
+ if not is_actually_live:
+ dur_obj = renderer.get('lengthText') or {}
+ dur = dur_obj.get('simpleText') or ''
+ remarks = '直播' if is_actually_live else (dur if dur else '视频')
+
+ return {
+ 'vod_id': vid,
+ 'vod_name': html.unescape(title),
+ 'vod_pic': f'http://127.0.0.1:9978/proxy?do=py&type=image&vid={vid}',
+ 'vod_remarks': remarks
+ }
+ except Exception:
+ return None
+
+ def _extract_videos_fixed(self, html_str, limit=30):
+ data = None
+ match = re.search(r'var ytInitialData = (\{.*?\});', html_str)
+ if match:
+ try:
+ data = json.loads(match.group(1))
+ except Exception:
+ data = None
+ if not data:
+ return []
+ return self._extract_videos_from_api(data, limit)
+
+ def _get_video_title(self, vid):
+ try:
+ r = self.session.get(f'https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v={vid}&format=json', timeout=30)
+ return r.json().get('title') or vid
+ except Exception:
+ return vid
+
+ def _safe_title(self, title):
+ if not title:
+ return 'video'
+ return re.sub(r'[#$@%&!?*|\\/:<>]', ' ', title)[:60]
+
+ def _play_video(self, video_id, quality):
+ try:
+ data = self.yt_video.extract(video_id)
+ formats = data.get('formats') or []
+
+ all_videos = [x for x in formats if x.get('vcodec') != 'none' and x.get('acodec') == 'none']
+
+ def filter_and_sort_videos(videos):
+ filtered = [v for v in videos if int(v.get('height') or 0) >= 720]
+ filtered.sort(key=lambda x: (int(x.get('height') or 0), int(x.get('bitrate') or 0)), reverse=True)
+ seen_res = {}
+ result = []
+ for v in filtered:
+ h = int(v.get('height') or 0)
+ if h not in seen_res:
+ seen_res[h] = True
+ result.append(v)
+ return result
+
+ webm_videos = filter_and_sort_videos([x for x in all_videos if x.get('ext') == 'webm'])
+ mp4_videos = filter_and_sort_videos([x for x in all_videos if x.get('ext') == 'mp4'])
+
+ if quality == 'normal':
+ target_videos = mp4_videos if mp4_videos else webm_videos
+ else:
+ target_videos = webm_videos if webm_videos else mp4_videos
+
+ audio_candidates = [x for x in formats if x.get('acodec') != 'none' and x.get('vcodec') == 'none']
+ audio_candidates.sort(
+ key=lambda x: (1 if x.get('ext') == 'mp4' else 0, int(x.get('bitrate') or 0)),
+ reverse=True
+ )
+ audio = audio_candidates[0] if audio_candidates else None
+
+ if not target_videos:
+ raise Exception('未获取到可用视频流')
+
+ cache_key = f'yt_{video_id}_{quality}'
+ all_cached = {}
+ for v in target_videos:
+ all_cached[str(v.get('itag'))] = v
+ if audio:
+ all_cached[str(audio.get('itag'))] = audio
+
+ self.setCache(cache_key, {
+ 'target_videos': target_videos,
+ 'audio_item': audio,
+ 'all_by_itag': all_cached,
+ 'duration': data.get('duration') or 0,
+ 'expires': time.time() + 600,
+ })
+
+ return {
+ 'parse': 0, 'jx': 0,
+ 'url': f'http://127.0.0.1:9978/proxy?do=py&type=mpd&vid={video_id}&quality={quality}',
+ 'format': 'application/dash+xml'
+ }
+ except Exception:
+ return {
+ 'parse': 1,
+ 'url': f'https://www.youtube.com/embed/{video_id}?autoplay=1',
+ 'header': json.dumps(self.header)
+ }
+
+ def _proxy_mpd(self, params):
+ vid = params.get('vid')
+ quality = params.get('quality') or 'super'
+ data = self.getCache(f'yt_{vid}_{quality}') if vid else None
+ if not data:
+ return [404, 'text/plain', '视频缓存已过期或不存在']
+
+ target_videos = data.get('target_videos') or []
+ audio_item = data.get('audio_item') or {}
+ duration = data.get('duration') or 0
+ duration_pt = f"PT{int(duration)}S"
+ media_base = f'http://127.0.0.1:9978/proxy?do=py&type=media&vid={vid}&quality={quality}'
+
+ def build_video_repr(item, rank):
+ itag = item.get('itag', 0)
+ init = item.get('initRange') or {}
+ index = item.get('indexRange') or {}
+ return (
+ f'
\n'
+ f' {html.escape(media_base + f"&itag={itag}&track=video")}\n'
+ f' '
+ f'\n'
+ f' '
+ )
+
+ mpd = (
+ f'\n'
+ f'
\n'
+ f' '
+ )
+
+ if target_videos:
+ mime_type = "video/webm" if target_videos[0].get('ext') == 'webm' else "video/mp4"
+ label = "极客VP" if mime_type == "video/webm" else "万能MP"
+ mpd += f'\n \n'
+ mpd += f' \n'
+ for rank, v in enumerate(target_videos, start=1):
+ mpd += build_video_repr(v, rank) + '\n'
+ mpd += ' '
+
+ if audio_item:
+ audio_itag = audio_item.get('itag', 0)
+ audio_init = audio_item.get('initRange') or {}
+ audio_index = audio_item.get('indexRange') or {}
+ audio_mime = (audio_item.get('mimeType') or 'audio/mp4').split(';')[0]
+ mpd += (
+ f'\n \n'
+ f' \n'
+ f' {html.escape(media_base + f"&itag={audio_itag}&track=audio")}\n'
+ f' '
+ f'\n'
+ f' \n'
+ f' '
+ )
+
+ mpd += '\n \n'
+ return [200, 'application/dash+xml', mpd]
+
+ def _proxy_media(self, params):
+ vid = params.get('vid')
+ quality = params.get('quality') or 'super'
+ itag = params.get('itag')
+ track = params.get('track')
+ data = self.getCache(f'yt_{vid}_{quality}') if vid else None
+ if not data:
+ return [404, 'text/plain', '媒体缓存不存在或已过期']
+
+ all_by_itag = data.get('all_by_itag') or {}
+ media_item = None
+
+ if itag and str(itag) in all_by_itag:
+ media_item = all_by_itag[str(itag)]
+ elif track == 'audio':
+ media_item = data.get('audio_item')
+
+ if not media_item:
+ return [404, 'text/plain', f'流不存在 (itag={itag})']
+
+ target_url = media_item.get('url')
+ if not target_url:
+ return [404, 'text/plain', '播放地址不存在']
+
+ headers = self.header.copy()
+ headers.update(media_item.get('headers') or {})
+ range_header = params.get('range') or params.get('Range')
+ if range_header:
+ headers['Range'] = range_header
+
+ max_retries = 3
+ for attempt in range(max_retries + 1):
+ try:
+ r = self.session.get(target_url, headers=headers, stream=True, timeout=120)
+ if r.status_code in (403, 404) and attempt < max_retries:
+ try:
+ fresh_data = self.yt_video.extract(vid)
+ fresh_formats = fresh_data.get('formats', [])
+ fresh_item = None
+ for f in fresh_formats:
+ if str(f.get('itag')) == str(itag):
+ fresh_item = f
+ break
+ if fresh_item and fresh_item.get('url'):
+ media_item['url'] = fresh_item['url']
+ target_url = fresh_item['url']
+ all_by_itag[str(itag)] = fresh_item
+ data['all_by_itag'] = all_by_itag
+ self.setCache(f'yt_{vid}_{quality}', data)
+ continue
+ except Exception:
+ pass
+ time.sleep(1)
+ continue
+ content_type = r.headers.get('content-type', 'application/octet-stream')
+ resp_headers = {
+ 'Content-Type': content_type,
+ 'Accept-Ranges': 'bytes',
+ 'Cache-Control': 'no-cache',
+ }
+ if r.headers.get('content-range'):
+ resp_headers['Content-Range'] = r.headers.get('content-range')
+ if r.headers.get('content-length'):
+ resp_headers['Content-Length'] = r.headers.get('content-length')
+ return [r.status_code, content_type, r.content, resp_headers]
+ except Exception as e:
+ if attempt == max_retries:
+ return [500, 'text/plain', f'代理媒体失败: {str(e)}']
+ time.sleep(1)
+ return [500, 'text/plain', '代理媒体失败']
+
+ def _play_live(self, video_id):
+ try:
+ data = self.yt_live.extract_live(video_id)
+ hls_url = data.get('hls_url') or ''
+ if not hls_url:
+ raise Exception(data.get('reason') or '未获取到直播 HLS 地址')
+ if self.extendDict.get('hls_probe'):
+ self._probe_hls(video_id, hls_url)
+ play_url = hls_url
+ if self.hls_proxy_enabled:
+ play_url = self._cache_hls_url(hls_url, video_id, 'master')
+ return {
+ 'parse': 0,
+ 'jx': 0,
+ 'url': play_url,
+ 'header': self.header,
+ 'format': 'application/x-mpegURL'
+ }
+ except Exception:
+ return {'parse': 1, 'jx': 1, 'url': f'https://www.youtube.com/embed/{video_id}?autoplay=1'}
+
+ def _probe_hls(self, video_id, hls_url):
+ try:
+ response = self.session.get(hls_url, headers=self.header, timeout=60)
+ full_text = response.text or ''
+ variant_url = self._pick_variant_playlist(hls_url, full_text)
+ if variant_url:
+ self.session.get(variant_url, headers=self.header, timeout=60)
+ except Exception:
+ pass
+
+ def _pick_variant_playlist(self, base_url, text):
+ lines = [line.strip() for line in (text or '').splitlines()]
+ best_score = -1
+ best_url = ''
+ for index, line in enumerate(lines):
+ if not line.startswith('#EXT-X-STREAM-INF'):
+ continue
+ score = 0
+ bandwidth = re.search(r'BANDWIDTH=(\d+)', line)
+ resolution = re.search(r'RESOLUTION=(\d+)x(\d+)', line)
+ if bandwidth:
+ score += int(bandwidth.group(1))
+ if resolution:
+ score += int(resolution.group(1)) * int(resolution.group(2))
+ for next_line in lines[index + 1:]:
+ if not next_line or next_line.startswith('#'):
+ continue
+ if score > best_score:
+ best_score = score
+ best_url = urljoin(base_url, next_line)
+ break
+ return best_url
+
+ HLS_TTL = {'master': 6 * 3600, 'playlist': 6 * 3600, 'media': 120, 'media_retry': 120}
+
+ def _hls_ttl(self, kind):
+ return self.HLS_TTL.get(kind, 180)
+
+ def _prune_hls_cache(self):
+ now = time.time()
+ expired = [k for k, v in self.hls_url_cache.items() if v.get('expires', 0) < now]
+ for k in expired:
+ self.hls_url_cache.pop(k, None)
+
+ def _cache_hls_url(self, target_url, video_id='', kind='media'):
+ self._prune_hls_cache()
+ self._hls_key_seq += 1
+ key = f'{int(time.time() * 1000)}_{self._hls_key_seq}'
+ self.hls_url_cache[key] = {
+ 'url': target_url,
+ 'video_id': video_id,
+ 'kind': kind,
+ 'expires': time.time() + self._hls_ttl(kind),
+ }
+ return f'http://127.0.0.1:9978/proxy?do=py&type=hls&key={quote(key)}'
+
+ def _hls_headers(self, target_url, kind=None):
+ if kind == 'media_retry':
+ return {
+ 'User-Agent': 'com.google.android.youtube/21.02.35 (Linux; U; Android 11) gzip',
+ 'Accept': '*/*',
+ }
+ headers = self.header.copy()
+ headers['Accept'] = '*/*'
+ if kind in ('master', 'playlist'):
+ headers['Origin'] = 'https://www.youtube.com'
+ headers['Referer'] = 'https://www.youtube.com/'
+ elif kind == 'media':
+ headers['User-Agent'] = 'com.google.android.youtube/21.02.35 (Linux; U; Android 11) gzip'
+ headers.pop('Origin', None)
+ headers.pop('Referer', None)
+ return headers
+
+ def _rewrite_m3u8(self, text, base_url, video_id=''):
+ output = []
+ for line in (text or '').splitlines():
+ stripped = line.strip()
+ if not stripped:
+ output.append(line)
+ continue
+ if stripped.startswith('#'):
+ output.append(self._rewrite_m3u8_tag(line, base_url, video_id))
+ continue
+ absolute = urljoin(base_url, stripped)
+ kind = 'playlist' if stripped.endswith('.m3u8') or '/hls_playlist/' in stripped else 'media'
+ output.append(self._cache_hls_url(absolute, video_id, kind))
+ return '\n'.join(output) + '\n'
+
+ def _rewrite_m3u8_tag(self, line, base_url, video_id=''):
+ def replace_uri(match):
+ raw_url = match.group(1)
+ absolute = urljoin(base_url, raw_url)
+ proxied = self._cache_hls_url(absolute, video_id, 'media')
+ return f'URI="{proxied}"'
+ return re.sub(r'URI="([^"]+)"', replace_uri, line)
+
+ def _proxy_hls(self, params):
+ key = params.get('key') or ''
+ item = self.hls_url_cache.get(key)
+ if not item or item.get('expires', 0) < time.time():
+ return [404, 'text/plain', 'HLS 缓存已过期']
+ item['expires'] = time.time() + self._hls_ttl(item.get('kind'))
+ target_url = item.get('url') or ''
+ video_id = item.get('video_id', '')
+
+ try:
+ headers = self._hls_headers(target_url, item.get('kind'))
+ max_retries = 3
+ for attempt in range(max_retries + 1):
+ try:
+ response = self.session.get(target_url, headers=headers, stream=True, timeout=120)
+ if response.status_code in (403, 404) and attempt < max_retries:
+ if video_id and item.get('kind') in ('master', 'playlist'):
+ try:
+ live_data = self.yt_live.extract_live(video_id)
+ new_hls = live_data.get('hls_url')
+ if new_hls:
+ item['url'] = new_hls
+ target_url = new_hls
+ self.hls_url_cache[key] = item
+ continue
+ except Exception:
+ pass
+ time.sleep(1)
+ continue
+ content_type = response.headers.get('content-type') or ''
+ is_m3u8 = item.get('kind') in ('master', 'playlist') or 'mpegurl' in content_type.lower() or target_url.split('?')[0].endswith('.m3u8')
+ if is_m3u8:
+ text = response.text
+ rewritten = self._rewrite_m3u8(text, target_url, video_id)
+ return [response.status_code, 'application/vnd.apple.mpegurl', rewritten, {'Content-Type': 'application/vnd.apple.mpegurl', 'Cache-Control': 'no-cache'}]
+ resp_headers = {'Content-Type': content_type or 'application/octet-stream', 'Cache-Control': 'no-cache'}
+ if response.headers.get('content-length'):
+ resp_headers['Content-Length'] = response.headers.get('content-length')
+ return [response.status_code, content_type or 'application/octet-stream', response.content, resp_headers]
+ except Exception as e:
+ if attempt == max_retries:
+ raise
+ time.sleep(1)
+ except Exception as e:
+ return [500, 'text/plain', f'HLS 代理失败: {str(e)}']
+ return [500, 'text/plain', 'HLS 代理失败']
+
+ def localProxy(self, params):
+ if params.get('do') != 'py':
+ return None
+ typ = params.get('type')
+ if typ == 'mpd':
+ return self._proxy_mpd(params)
+ if typ == 'media':
+ return self._proxy_media(params)
+ if typ == 'single':
+ return self._proxy_single(params)
+ if typ == 'image':
+ return self._proxy_image(params)
+ if typ == 'hls':
+ return self._proxy_hls(params)
+ return None
+
+ def _proxy_image(self, params):
+ vid = params.get('vid')
+ if not vid:
+ return [400, 'text/plain', '缺少 video id']
+ quality = params.get('quality', 'hqdefault')
+ img_url = f'https://i.ytimg.com/vi/{vid}/{quality}.jpg'
+ try:
+ r = self.session.get(img_url, timeout=30)
+ if r.status_code == 200:
+ content_type = r.headers.get('content-type', 'image/jpeg')
+ return [200, content_type, r.content, {'Cache-Control': 'max-age=86400'}]
+ else:
+ return [404, 'text/plain', f'图片不存在 ({r.status_code})']
+ except Exception:
+ return [500, 'text/plain', '代理图片失败']
+
+ def _proxy_single(self, params):
+ vid = params.get('vid')
+ data = self.getCache(f'yt_single_{vid}') if vid else None
+ if not data:
+ return [404, 'text/plain', '播放缓存已过期或不存在']
+ target_url = data.get('url')
+ if not target_url:
+ return [404, 'text/plain', '播放地址不存在']
+ headers = (data.get('headers') or self.header).copy()
+ range_header = params.get('range') or params.get('Range')
+ if range_header:
+ headers['Range'] = range_header
+ try:
+ r = self.session.get(target_url, headers=headers, stream=True, timeout=120)
+ content_type = r.headers.get('content-type', 'video/mp4')
+ resp_headers = {
+ 'Content-Type': content_type,
+ 'Accept-Ranges': 'bytes',
+ 'Cache-Control': 'no-cache',
+ }
+ if r.headers.get('content-range'):
+ resp_headers['Content-Range'] = r.headers.get('content-range')
+ if r.headers.get('content-length'):
+ resp_headers['Content-Length'] = r.headers.get('content-length')
+ return [r.status_code, content_type, r.content, resp_headers]
+ except Exception:
+ return [500, 'text/plain', '代理播放失败']
+
+ def destroy(self):
+ try:
+ self.session.close()
+ except Exception:
+ pass
\ No newline at end of file
diff --git a/cluntop_tvbox/lib/aliproxy.tar.xz b/cluntop_tvbox/lib/aliproxy.tar.xz
index 587ad4be..bf3357b3 100755
Binary files a/cluntop_tvbox/lib/aliproxy.tar.xz and b/cluntop_tvbox/lib/aliproxy.tar.xz differ
diff --git a/cluntop_tvbox/lib/aliproxy.tar.xz.md5 b/cluntop_tvbox/lib/aliproxy.tar.xz.md5
index 7773ce8b..4aa66736 100644
--- a/cluntop_tvbox/lib/aliproxy.tar.xz.md5
+++ b/cluntop_tvbox/lib/aliproxy.tar.xz.md5
@@ -1 +1 @@
-73b0a7d905aa71581bfad6860e7affc4
+bf1480593cbb56542c8f183231818244
diff --git a/cluntop_tvbox/lib/allinone.tar.xz b/cluntop_tvbox/lib/allinone.tar.xz
index a56d40fe..82e71e3c 100755
Binary files a/cluntop_tvbox/lib/allinone.tar.xz and b/cluntop_tvbox/lib/allinone.tar.xz differ
diff --git a/cluntop_tvbox/lib/allinone.tar.xz.md5 b/cluntop_tvbox/lib/allinone.tar.xz.md5
index a2c84bb1..fbf9bb47 100644
--- a/cluntop_tvbox/lib/allinone.tar.xz.md5
+++ b/cluntop_tvbox/lib/allinone.tar.xz.md5
@@ -1 +1 @@
-20b84d6b6d2f6f4e3445efe0cbe3d592
+0b0eee7f30e33f4c9ef607f8bf3470f2
diff --git a/cluntop_tvbox/lib/clash2singbox.tar.xz b/cluntop_tvbox/lib/clash2singbox.tar.xz
index a70f6af6..68936af3 100755
Binary files a/cluntop_tvbox/lib/clash2singbox.tar.xz and b/cluntop_tvbox/lib/clash2singbox.tar.xz differ
diff --git a/cluntop_tvbox/lib/clash2singbox.tar.xz.md5 b/cluntop_tvbox/lib/clash2singbox.tar.xz.md5
index 39d12f00..b269c965 100644
--- a/cluntop_tvbox/lib/clash2singbox.tar.xz.md5
+++ b/cluntop_tvbox/lib/clash2singbox.tar.xz.md5
@@ -1 +1 @@
-05be016ae6119c38a60f62717af8c883
+0212473db4864d72a0a8aa9394ba2116
diff --git a/cluntop_tvbox/lib/iptv.m3u b/cluntop_tvbox/lib/iptv.m3u
index af528f5f..5e43ebb0 100755
--- a/cluntop_tvbox/lib/iptv.m3u
+++ b/cluntop_tvbox/lib/iptv.m3u
@@ -68,7 +68,7 @@ http://101.43.145.141:12002/gaoma/cctv4k.m3u8$LR•IPV4•7『线路2』
#EXTINF:-1 tvg-id="CCTV4K" tvg-name="CCTV4K" group-title="4K",CCTV4K
https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784358000-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-c0b2f705841d49d821e3075961bb6e84&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•7『线路3』
#EXTINF:-1 tvg-id="CCTV4K" tvg-name="CCTV4K" group-title="4K",CCTV4K
-https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784361600-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-dbc4b9704792e97da2c65aeed2033e45&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•7『线路4』
+https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784371500-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-48ffc61db508f8062cc67caddde58d68&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•7『线路4』
#EXTINF:-1 tvg-id="CCTV4K" tvg-name="CCTV4K" group-title="4K",CCTV4K
http://198.204.240.250:82/live/cctv4k.m3u8$LR•IPV4•7『线路5』
#EXTINF:-1 tvg-id="CCTV4K" tvg-name="CCTV4K" group-title="4K",CCTV4K
@@ -170,7 +170,7 @@ p3p://167.114.175.6:55331/61244d9c0006885d64b1b7591f6c12a0$LR•IPV4•16『线
#EXTINF:-1 tvg-id="CCTV4" tvg-name="CCTV4" group-title="央视",CCTV4
https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784358000-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-109c81da2b0d59c7b20e5792a12e386f&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•16『线路10』
#EXTINF:-1 tvg-id="CCTV4" tvg-name="CCTV4" group-title="央视",CCTV4
-https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784361600-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-e246d8a5986fffcd5d21d25acc7aca83&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•16『线路11』
+https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784371500-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-bb4241b14453c4f49bd0749a3aab3caf&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•16『线路11』
#EXTINF:-1 tvg-id="CCTV4" tvg-name="CCTV4" group-title="央视",CCTV4
https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784271600-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-6aec44040ec72def77e22587fc404005&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•16『线路12』
#EXTINF:-1 tvg-id="CCTV4" tvg-name="CCTV4" group-title="央视",CCTV4
@@ -310,7 +310,7 @@ http://153.0.171.163:9901/tsfile/live/1008_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 tvg-id="CCTV9" tvg-name="CCTV9" group-title="央视",CCTV9
https://v4-e6b1c5baf4e240fe63adbf68dda23435.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=8a60541ebe4d355d0da6b086b9f2026d$LR•IPV4•12『线路8』
#EXTINF:-1 tvg-id="CCTV9" tvg-name="CCTV9" group-title="央视",CCTV9
-https://v4-702cae17a28d6e4f0c0002bba021d934.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=db97ec06b982224fd6b00b7bb1f6143c$LR•IPV4•12『线路9』
+https://v4-702cae17a28d6e4f0c0002bba021d934.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=17294e1ca3c39692f88722ff53cecd2a$LR•IPV4•12『线路9』
#EXTINF:-1 tvg-id="CCTV9" tvg-name="CCTV9" group-title="央视",CCTV9
http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226944/1.m3u8?$LR•IPV6•12『线路10』
#EXTINF:-1 tvg-id="CCTV9" tvg-name="CCTV9" group-title="央视",CCTV9
@@ -876,41 +876,39 @@ http://153.0.171.163:9901/tsfile/live/0137_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 tvg-id="东南卫视" tvg-name="东南卫视" group-title="卫视",东南卫视
http://118.81.195.79:9003/hls/24/index.m3u8$LR•IPV4•18『线路18』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•18『线路1』
+http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•17『线路1』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•18『线路2』
+http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•17『线路2』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv$LR•IPV4•18『线路3』
+http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv$LR•IPV4•17『线路3』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://173.208.212.130:8181/720p/szws.m3u8$LR•IPV4•18『线路4』
+http://173.208.212.130:8181/720p/szws.m3u8$LR•IPV4•17『线路4』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://192.151.150.154/live/szwshd.m3u8$LR•IPV4•18『线路5』
+http://192.151.150.154/live/szwshd.m3u8$LR•IPV4•17『线路5』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://124.228.160.210:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路6』
+http://124.228.160.210:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路6』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://36.136.38.87:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路7』
+http://36.136.38.87:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路7』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://183.11.239.36:808/hls/45/index.m3u8$LR•IPV4•18『线路8』
+http://183.11.239.36:808/hls/45/index.m3u8$LR•IPV4•17『线路8』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-https://sztv-hls.sztv.com.cn/AxeFRth/500/q37Age0.m3u8?sign=671fcd3c133f66cef04a83ae0b8c542b&t=6a59189c$LR•IPV4•18『线路9』
+http://38.75.136.137:98/gslb/dsdqpub/szwshd.m3u8?auth=testpub$LR•IPV4•17『线路9』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://38.75.136.137:98/gslb/dsdqpub/szwshd.m3u8?auth=testpub$LR•IPV4•18『线路10』
+http://23.237.228.134/live6/shenzhen.m3u8$LR•IPV4•17『线路10』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://23.237.228.134/live6/shenzhen.m3u8$LR•IPV4•18『线路11』
+http://gfr.x3322.net:9901/tsfile/live/1095_1.m3u8$LR•IPV4•17『线路11』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://gfr.x3322.net:9901/tsfile/live/1095_1.m3u8$LR•IPV4•18『线路12』
+http://api.kkitv.itv888.cn:8080/hls/iftsd32ykm/index.m3u8$LR•IPV4•17『线路12』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://api.kkitv.itv888.cn:8080/hls/iftsd32ykm/index.m3u8$LR•IPV4•18『线路13』
+https://iptv.catvod.com/catvod.php?id=szws$LR•IPV4•17『线路13』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-https://iptv.catvod.com/catvod.php?id=szws$LR•IPV4•18『线路14』
+https://httop.top/ysp-深圳卫视$LR•IPV4•17『线路14』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-https://httop.top/ysp-深圳卫视$LR•IPV4•18『线路15』
+http://iptv.huuc.edu.cn/hls/szhd.m3u8$LR•IPV4•17『线路15』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://iptv.huuc.edu.cn/hls/szhd.m3u8$LR•IPV4•18『线路16』
+http://153.0.171.163:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路16』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://153.0.171.163:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路17』
-#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://38.64.72.148:80/hls/modn/list/4007/playlist.m3u8$LR•IPV4•18『线路18』
+http://38.64.72.148:80/hls/modn/list/4007/playlist.m3u8$LR•IPV4•17『线路17』
#EXTINF:-1 tvg-id="广东卫视" tvg-name="广东卫视" group-title="卫视",广东卫视
http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226961/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E2MGyx659D_aaDPP0qt3NgA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•12『线路1』
#EXTINF:-1 tvg-id="广东卫视" tvg-name="广东卫视" group-title="卫视",广东卫视
@@ -1018,31 +1016,33 @@ http://183.207.248.71/gitv/live1/G_GUIZHOU/G_GUIZHOU$LR•IPV4•16『线路15
#EXTINF:-1 tvg-id="贵州卫视" tvg-name="贵州卫视" group-title="卫视",贵州卫视
http://39.134.115.163:8080/PLTV/88888910/224/3221225728/index.m3u8$LR•IPV4•16『线路16』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227014/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ErSGjhI3DMaaAASPrbQJYTg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•13『线路1』
+http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227014/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ErSGjhI3DMaaAASPrbQJYTg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•14『线路1』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://101.66.194.63:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•13『线路2』
+http://101.66.194.63:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•14『线路2』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://101.66.199.247:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•13『线路3』
+http://101.66.199.247:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•14『线路3』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://204.12.221.218:8181/3m1080p/hews.m3u8$LR•IPV4•13『线路4』
+http://204.12.221.218:8181/3m1080p/hews.m3u8$LR•IPV4•14『线路4』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://event.pull.hebtv.com/jishi/weishi_tingyun.m3u8$LR•IPV4•13『线路5』
+http://event.pull.hebtv.com/jishi/weishi_tingyun.m3u8$LR•IPV4•14『线路5』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://183.11.239.36:808/hls/54/index.m3u8$LR•IPV4•13『线路6』
+http://183.11.239.36:808/hls/54/index.m3u8$LR•IPV4•14『线路6』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://23.237.228.134/live8/hebei.m3u8$LR•IPV4•13『线路7』
+https://tv.pull.hebtv.com/jishi/nongminpindao.m3u8?t=1783932137&k=f5f7fa7a3e39ef329f1b86c4f866958c$LR•IPV4•14『线路7』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://43.251.226.89:8080/play/42.m3u8$LR•IPV4•13『线路8』
+http://23.237.228.134/live8/hebei.m3u8$LR•IPV4•14『线路8』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://gfr.x3322.net:9901/tsfile/live/1091_1.m3u8$LR•IPV4•13『线路9』
+http://43.251.226.89:8080/play/42.m3u8$LR•IPV4•14『线路9』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-https://iptv.catvod.com/catvod.php?id=hbws$LR•IPV4•13『线路10』
+http://gfr.x3322.net:9901/tsfile/live/1091_1.m3u8$LR•IPV4•14『线路10』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-https://httop.top/ysp-河北卫视$LR•IPV4•13『线路11』
+https://iptv.catvod.com/catvod.php?id=hbws$LR•IPV4•14『线路11』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://iptv.huuc.edu.cn/hls/hebhd.m3u8$LR•IPV4•13『线路12』
+https://httop.top/ysp-河北卫视$LR•IPV4•14『线路12』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://153.0.171.163:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•13『线路13』
+http://iptv.huuc.edu.cn/hls/hebhd.m3u8$LR•IPV4•14『线路13』
+#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
+http://153.0.171.163:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•14『线路14』
#EXTINF:-1 tvg-id="河南卫视" tvg-name="河南卫视" group-title="卫视",河南卫视
http://101.66.195.138:9901/tsfile/live/0139_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•12『线路1』
#EXTINF:-1 tvg-id="河南卫视" tvg-name="河南卫视" group-title="卫视",河南卫视
@@ -1120,37 +1120,35 @@ http://www.745612.xyz:7788/rtp/235.254.198.72:1564$LR•IPV4•14『线路13』
#EXTINF:-1 tvg-id="湖北卫视" tvg-name="湖北卫视" group-title="卫视",湖北卫视
http://118.81.195.79:9003/hls/32/index.m3u8$LR•IPV4•14『线路14』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226956/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Ei6ZIpVizXlewg-YfGvH8dA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•16『线路1』
+http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226956/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Ei6ZIpVizXlewg-YfGvH8dA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•15『线路1』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://101.66.199.247:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路2』
+http://101.66.199.247:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•15『线路2』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://112.123.243.37:50085/tsfile/live/0132_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路3』
+http://112.123.243.37:50085/tsfile/live/0132_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•15『线路3』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://124.228.160.210:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路4』
+http://124.228.160.210:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•15『线路4』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://153.0.171.163:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路5』
+http://153.0.171.163:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•15『线路5』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://112.27.235.94:8000/hls/44/index.m3u8$LR•IPV4•16『线路6』
+http://112.27.235.94:8000/hls/44/index.m3u8$LR•IPV4•15『线路6』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-https://jsp-tv-live.jxtvcn.com.cn/live-jsp/tv_jxtv6.m3u8?t=1784004704&token=67a59c29-de6e-4407-90c8-39f7e099b3db&d=0a7a8c487c454bc7bb02a60298283c5e$LR•IPV4•16『线路7』
+http://38.75.136.137:98/gslb/dsdqpub/jxwshd.m3u8?auth=testpub$LR•IPV4•15『线路7』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://38.75.136.137:98/gslb/dsdqpub/jxwshd.m3u8?auth=testpub$LR•IPV4•16『线路8』
+http://23.237.228.134/live8/jiangxi.m3u8$LR•IPV4•15『线路8』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://23.237.228.134/live8/jiangxi.m3u8$LR•IPV4•16『线路9』
+http://43.251.226.89:8080/play/43.m3u8$LR•IPV4•15『线路9』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://43.251.226.89:8080/play/43.m3u8$LR•IPV4•16『线路10』
+http://api.kkitv.itv888.cn:8080/hls/pv0np60bpin/index.m3u8$LR•IPV4•15『线路10』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://api.kkitv.itv888.cn:8080/hls/pv0np60bpin/index.m3u8$LR•IPV4•16『线路11』
+https://iptv.catvod.com/catvod.php?id=jxws$LR•IPV4•15『线路11』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-https://iptv.catvod.com/catvod.php?id=jxws$LR•IPV4•16『线路12』
+https://httop.top/ysp-江西卫视$LR•IPV4•15『线路12』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-https://httop.top/ysp-江西卫视$LR•IPV4•16『线路13』
+http://iptv.huuc.edu.cn/hls/jxhd.m3u8$LR•IPV4•15『线路13』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://iptv.huuc.edu.cn/hls/jxhd.m3u8$LR•IPV4•16『线路14』
+http://mg.hmysapp.cn:177/ckmg/zb.php?id=jxws$LR•IPV4•15『线路14』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://mg.hmysapp.cn:177/ckmg/zb.php?id=jxws$LR•IPV4•16『线路15』
-#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://39.134.115.163:8080/PLTV/88888910/224/3221225705/index.m3u8$LR•IPV4•16『线路16』
+http://39.134.115.163:8080/PLTV/88888910/224/3221225705/index.m3u8$LR•IPV4•15『线路15』
#EXTINF:-1 tvg-id="吉林卫视" tvg-name="吉林卫视" group-title="卫视",吉林卫视
http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227015/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EW5-3AVdwD5KlUpuA4mz7Cg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•17『线路1』
#EXTINF:-1 tvg-id="吉林卫视" tvg-name="吉林卫视" group-title="卫视",吉林卫视
@@ -1400,39 +1398,37 @@ http://223.110.243.136/PLTV/3/224/3221225523/index.m3u8$LR•IPV4•14『线路1
#EXTINF:-1 tvg-id="新疆卫视" tvg-name="新疆卫视" group-title="卫视",新疆卫视
http://112.25.48.68/live/program/live/xjws/1300000/mnf.m3u8$LR•IPV4•14『线路14』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227028/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGfQPqRNVeBjTMsZ48qu0SA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•17『线路1』
+http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227028/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGfQPqRNVeBjTMsZ48qu0SA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•16『线路1』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://120.198.95.220:9901/tsfile/live/1056_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•17『线路2』
+http://120.198.95.220:9901/tsfile/live/1056_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•16『线路2』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://38.75.136.137:98/gslb/dsdqpub/ynwshd.m3u8?auth=testpub$LR•IPV4•17『线路3』
+http://38.75.136.137:98/gslb/dsdqpub/ynwshd.m3u8?auth=testpub$LR•IPV4•16『线路3』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://204.12.221.218:8181/3m1080p/ynws.m3u8$LR•IPV4•17『线路4』
+http://204.12.221.218:8181/3m1080p/ynws.m3u8$LR•IPV4•16『线路4』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://112.123.243.37:50085/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•17『线路5』
+http://112.123.243.37:50085/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路5』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://101.66.194.82:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•17『线路6』
+http://101.66.194.82:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路6』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://101.66.194.63:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•17『线路7』
+http://101.66.194.63:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路7』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://36.136.38.87:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路8』
+http://36.136.38.87:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路8』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://101.66.195.138:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•17『线路9』
+http://101.66.195.138:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路9』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://101.66.199.247:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•17『线路10』
+http://101.66.199.247:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路10』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://153.0.171.163:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路11』
+http://153.0.171.163:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路11』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://112.27.235.94:8000/hls/40/index.m3u8$LR•IPV4•17『线路12』
+http://112.27.235.94:8000/hls/40/index.m3u8$LR•IPV4•16『线路12』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://p2.ioioz.com/xgplayer.php?id=https://hwapi.yntv.net/ew265l/z1z6s5.m3u8$LR•IPV4•17『线路13』
+http://23.237.228.134/live8/yunnan.m3u8$LR•IPV4•16『线路13』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://23.237.228.134/live8/yunnan.m3u8$LR•IPV4•17『线路14』
+https://iptv.catvod.com/catvod.php?id=ynws$LR•IPV4•16『线路14』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-https://iptv.catvod.com/catvod.php?id=ynws$LR•IPV4•17『线路15』
+https://httop.top/ysp-云南卫视$LR•IPV4•16『线路15』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-https://httop.top/ysp-云南卫视$LR•IPV4•17『线路16』
-#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-https://hwapi.yunshicloud.com/8xughf/e0bx15.m3u8$LR•IPV4•17『线路17』
+https://hwapi.yunshicloud.com/8xughf/e0bx15.m3u8$LR•IPV4•16『线路16』
#EXTINF:-1 tvg-id="西藏卫视" tvg-name="西藏卫视" group-title="卫视",西藏卫视
http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227033/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EdeTB7OZ9G_VNJk5C3t96fQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•12『线路1』
#EXTINF:-1 tvg-id="西藏卫视" tvg-name="西藏卫视" group-title="卫视",西藏卫视
@@ -1556,7 +1552,7 @@ http://101.66.199.247:9901/tsfile/live/0118_1.m3u8?key=txiptv&playlive=0&authid=
#EXTINF:-1 tvg-id="山西卫视" tvg-name="山西卫视" group-title="卫视",山西卫视
http://153.0.171.163:9901/tsfile/live/0118_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•15『线路10』
#EXTINF:-1 tvg-id="山西卫视" tvg-name="山西卫视" group-title="卫视",山西卫视
-https://livehhhttps.sxrtv.com/lsdream/lce1mC4/800/h1thc41.m3u8$LR•IPV4•15『线路11』
+https://livehhhttps.sxrtv.com/lsdream/Md571Kv/800/p7iM150.m3u8$LR•IPV4•15『线路11』
#EXTINF:-1 tvg-id="山西卫视" tvg-name="山西卫视" group-title="卫视",山西卫视
http://23.237.228.134/live8/shanxi.m3u8$LR•IPV4•15『线路12』
#EXTINF:-1 tvg-id="山西卫视" tvg-name="山西卫视" group-title="卫视",山西卫视
@@ -1884,9 +1880,9 @@ http://feiyang.ak47s.top:35455/itv/1000000001000009601.m3u8?cdn=ystenlive$LR•I
#EXTINF:-1 tvg-id="NewTV超级体育" tvg-name="NewTV超级体育" group-title="数字",NewTV超级体育
http://kkk.jjjj.jiduo.me/api.php?n=tttt&id=3188&tk=23a9aca1f79f$LR•IPV4•5『线路5』
#EXTINF:-1 tvg-id="NewTV动作电影" tvg-name="NewTV动作电影" group-title="数字",NewTV动作电影
-http://39.134.19.68/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226465/index.m3u8$LR•IPV4•2『线路1』
+http://live.metshop.top/huya/11602077?cdn=alicdn$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="NewTV动作电影" tvg-name="NewTV动作电影" group-title="数字",NewTV动作电影
-http://live.metshop.top/huya/11602077?cdn=alicdn$LR•IPV4•2『线路2』
+http://39.134.19.68/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226465/index.m3u8$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="NewTV精品体育" tvg-name="NewTV精品体育" group-title="数字",NewTV精品体育
https://epg.pw/stream/f7556eccd4ae06b0c2991fdc7a4f8388496559f728cc82459a8e50346040e226.m3u8$LR•IPV4•6『线路1』
#EXTINF:-1 tvg-id="NewTV精品体育" tvg-name="NewTV精品体育" group-title="数字",NewTV精品体育
@@ -2200,9 +2196,9 @@ https://ls.qingting.fm/live/21303/64k.m3u8$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="铜陵新闻综合频道" tvg-name="铜陵新闻综合频道" group-title="安徽",铜陵新闻综合频道
http://dstpush1.retalltech.com/app/stream1.m3u8$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="亳州农村" tvg-name="亳州农村" group-title="安徽",亳州农村
-http://220.180.110.101:8083/videos/live/39/13/o4ncrHkSp7q09/o4ncrHkSp7q09.m3u8$LR•IPV4•2『线路1』
+http://zbbf2.ahbztv.com/live/418.m3u8$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="亳州农村" tvg-name="亳州农村" group-title="安徽",亳州农村
-http://zbbf2.ahbztv.com/live/418.m3u8$LR•IPV4•2『线路2』
+http://220.180.110.101:8083/videos/live/39/13/o4ncrHkSp7q09/o4ncrHkSp7q09.m3u8$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="北京财经" tvg-name="北京财经" group-title="北京",北京财经
http://ivi.bupt.edu.cn/hls/btv5.m3u8$LR•IPV4
#EXTINF:-1 tvg-id="北京青年" tvg-name="北京青年" group-title="北京",北京青年
@@ -2222,31 +2218,31 @@ https://31182.hlsplay.aodianyun.com/lms_31182/tv_channel_175.m3u8$LR•IPV4
#EXTINF:-1 tvg-id="南宁影视娱乐" tvg-name="南宁影视娱乐" group-title="广西",南宁影视娱乐
http://hls.nntv.cn/nnlive/YSYL_244.m3u8$LR•IPV4
#EXTINF:-1 tvg-id="邢台综合" tvg-name="邢台综合" group-title="河北",邢台综合
-http://222.223.119.21:8888/newlive/live/hls/54/live.m3u8$LR•IPV4•2『线路1』
+https://jwplay.hebyun.com.cn:443/live/xtsrmtzs/1500k/tzwj_video.m3u8$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="邢台综合" tvg-name="邢台综合" group-title="河北",邢台综合
-https://jwplay.hebyun.com.cn:443/live/xtsrmtzs/1500k/tzwj_video.m3u8$LR•IPV4•2『线路2』
+http://222.223.119.21:8888/newlive/live/hls/54/live.m3u8$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="河北都市" tvg-name="河北都市" group-title="河北",河北都市
-http://121.19.134.246:808/hls/21/index.m3u8$LR•IPV4•2『线路1』
+http://1.94.31.214/php/hebei.php?id=hbds$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="河北都市" tvg-name="河北都市" group-title="河北",河北都市
-http://1.94.31.214/php/hebei.php?id=hbds$LR•IPV4•2『线路2』
+http://121.19.134.246:808/hls/21/index.m3u8$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="河北农民" tvg-name="河北农民" group-title="河北",河北农民
-http://121.19.134.246:808/hls/25/index.m3u8$LR•IPV4•2『线路1』
+https://ls.qingting.fm/live/1650/64k.m3u8$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="河北农民" tvg-name="河北农民" group-title="河北",河北农民
-https://ls.qingting.fm/live/1650/64k.m3u8$LR•IPV4•2『线路2』
+http://121.19.134.246:808/hls/25/index.m3u8$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="鹿泉一套" tvg-name="鹿泉一套" group-title="河北",鹿泉一套
http://hblq.chinashadt.com:2036/live/stream:luquan1.stream/playlist.m3u8$LR•IPV4
#EXTINF:-1 tvg-id="河北经济" tvg-name="河北经济" group-title="河北",河北经济
-http://121.19.134.246:808/hls/20/index.m3u8$LR•IPV4•2『线路1』
+http://1.94.31.214/php/hebei.php?id=jjsh$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="河北经济" tvg-name="河北经济" group-title="河北",河北经济
-http://1.94.31.214/php/hebei.php?id=jjsh$LR•IPV4•2『线路2』
+http://121.19.134.246:808/hls/20/index.m3u8$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="河北影视" tvg-name="河北影视" group-title="河北",河北影视
-http://121.19.134.246:808/hls/22/index.m3u8$LR•IPV4•2『线路1』
+http://1.94.31.214/php/hebei.php?id=hbys$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="河北影视" tvg-name="河北影视" group-title="河北",河北影视
-http://1.94.31.214/php/hebei.php?id=hbys$LR•IPV4•2『线路2』
+http://121.19.134.246:808/hls/22/index.m3u8$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="河北公共" tvg-name="河北公共" group-title="河北",河北公共
-http://121.19.134.246:808/hls/24/index.m3u8$LR•IPV4•2『线路1』
+http://1.94.31.214/php/hebei.php?id=hbgg$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="河北公共" tvg-name="河北公共" group-title="河北",河北公共
-http://1.94.31.214/php/hebei.php?id=hbgg$LR•IPV4•2『线路2』
+http://121.19.134.246:808/hls/24/index.m3u8$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="鹿泉二套" tvg-name="鹿泉二套" group-title="河北",鹿泉二套
http://hblq.chinashadt.com:2036/live/stream:luquan2.stream/playlist.m3u8$LR•IPV4
#EXTINF:-1 tvg-id="内蒙新闻" tvg-name="内蒙新闻" group-title="内蒙古",内蒙新闻
@@ -2288,13 +2284,13 @@ http://183.207.248.71/gitv/live1/G_NJSB/G_NJSB$LR•IPV4
#EXTINF:-1 tvg-id="江苏体育" tvg-name="江苏体育" group-title="江苏",江苏体育
http://183.207.248.71/gitv/live1/G_JSTY/G_JSTY$LR•IPV4
#EXTINF:-1 tvg-id="南京教科" tvg-name="南京教科" group-title="江苏",南京教科
-https://live.nbs.cn/channels/njtv/jkpd/m3u8:500k/live.m3u8$LR•IPV4•4『线路1』
+http://nklive.nbs.cn/hls/75b3c462-b831-4de7-a34b-5d3221db2069/index.m3u8$LR•IPV4•4『线路1』
#EXTINF:-1 tvg-id="南京教科" tvg-name="南京教科" group-title="江苏",南京教科
-http://183.207.248.71/gitv/live1/G_NJJK/G_NJJK$LR•IPV4•4『线路2』
+https://live.nbs.cn/channels/njtv/jkpd/m3u8:500k/live.m3u8$LR•IPV4•4『线路2』
#EXTINF:-1 tvg-id="南京教科" tvg-name="南京教科" group-title="江苏",南京教科
-http://223.110.245.155/ott.js.chinamobile.com/PLTV/3/224/3221227194/index.m3u8$LR•IPV4•4『线路3』
+http://183.207.248.71/gitv/live1/G_NJJK/G_NJJK$LR•IPV4•4『线路3』
#EXTINF:-1 tvg-id="南京教科" tvg-name="南京教科" group-title="江苏",南京教科
-http://nklive.nbs.cn/hls/75b3c462-b831-4de7-a34b-5d3221db2069/index.m3u8$LR•IPV4•4『线路4』
+http://223.110.245.155/ott.js.chinamobile.com/PLTV/3/224/3221227194/index.m3u8$LR•IPV4•4『线路4』
#EXTINF:-1 tvg-id="南京少儿" tvg-name="南京少儿" group-title="江苏",南京少儿
https://live.nbs.cn/channels/njtv/sepd/m3u8:500k/live.m3u8$LR•IPV4
#EXTINF:-1 tvg-id="苏州4k" tvg-name="苏州4k" group-title="江苏",苏州4k
@@ -5912,99 +5908,99 @@ https://stream1.freetv.fun/shang-hai-xin-wen-zong-he-8.m3u8$LR•IPV4•115『
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
https://stream1.freetv.fun/ipv6-xin-wen-zong-he-10.m3u8$LR•IPV4•115『线路70』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://stream2.jlntv.cn/baicheng1/sd/live.m3u8$LR•IPV4•115『线路71』
+http://stream8.jlntv.cn/shulan/sd/live.m3u8?_upt=332db6421699196585$LR•IPV4•115『线路71』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://live.cztv.cc:85/live/xwpd.m3u8$LR•IPV4•115『线路72』
+http://stream5.jlntv.cn/hn/sd/live.m3u8$LR•IPV4•115『线路72』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://117.156.28.119/270000001111/1110000001/index.m3u8$LR•IPV4•115『线路73』
+http://pili-live-hls.ybcxjd.com/jdh-live/2108111201035597.m3u8?zsicd$LR•IPV4•115『线路73』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://pili-live-hls.hebitv.com/hebi/hebi.m3u8$LR•IPV4•115『线路74』
+http://live.spccmc.com:90/live/spxwzh.m3u8$LR•IPV4•115『线路74』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://stream2.jlntv.cn/naxw/sd/live.m3u8$LR•IPV4•115『线路75』
+http://live.iwcmt.cn:90/live/zhxw.m3u8$LR•IPV4•115『线路75』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://uni6rtmp.tulix.tv:1935/vbstv/vbsabr.smil/chunklist_w439903609_b1228800.m3u8$LR•IPV4•115『线路76』
+http://live.jinchuanrmt.com:90/live/zhxw.m3u8?zsicd$LR•IPV4•115『线路76』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://221.5.213.4:30000/1111.m3u8$LR•IPV4•115『线路77』
+https://play.yunxya.com/channellive/xinwen.m3u8$LR•IPV4•115『线路77』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://stream2.jlntv.cn/jilin1/sd/live.m3u8$LR•IPV4•115『线路78』
+http://ls.qingting.fm/live/267.m3u8$LR•IPV4•115『线路78』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://30515.hlsplay.aodianyun.com/lms_30515/tv_channel_239.m3u8$LR•IPV4•115『线路79』
+http://hslive.hsnewsnet.com/lsdream/hve9Wjs/1000/live.m3u8$LR•IPV4•115『线路79』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://stream2.jlntv.cn/sptv/sd/live.m3u8$LR•IPV4•115『线路80』
+https://p2.vzan.com/slowlive/596867413819827251/live.m3u8?zbid=1725814272&tpid=1516989100&type=0$LR•IPV4•115『线路80』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://live.ahsz.tv/video/s10001-szzh/index.m3u8$LR•IPV4•115『线路81』
+http://uzoiczhh.live.sxmty.com/live/hls/0d41f1480c4042d49927858f01fde707/53130407737b417b9a6259b57246bae3.m3u8?zshanxd$LR•IPV4•115『线路81』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://guangshui.live.tempsource.cjyun.org/videotmp/s10146-GSXW.m3u8$LR•IPV4•115『线路82』
+https://ls.qingting.fm/live/5043/64k.m3u8$LR•IPV4•115『线路82』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://stream2.jlntv.cn/jlyb/sd/live.m3u8$LR•IPV4•115『线路83』
+http://liveout.btzx.com.cn/62ds9e/4nxdih.m3u8?fbl=$LR•IPV4•115『线路83』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://stream2.jlntv.cn/sytv/sd/live.m3u8$LR•IPV4•115『线路84』
+http://nklive.nbs.cn/hls/d511bc9d-a694-4453-b3a2-4fc842cc97a1/index.m3u8$LR•IPV4•115『线路84』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://222.179.155.21:1935/ch1.m3u8$LR•IPV4•115『线路85』
+http://cm-wshls.homecdn.com/live/2aa50.m3u8$LR•IPV4•115『线路85』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://117.172.215.250:8083/videos/live/35/39/GQVbrgob5CGJM/GQVbrgob5CGJM.m3u8$LR•IPV4•115『线路86』
+http://ls.qingting.fm/live/23797.m3u8$LR•IPV4•115『线路86』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://220.180.110.101:8083/videos/live/36/57/hwEHU4UVQ1Iv5/hwEHU4UVQ1Iv5.m3u8$LR•IPV4•115『线路87』
+https://play.kankanlive.com/live/1720583434627241.m3u8$LR•IPV4•115『线路87』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://live.hnxttv.com:9601/live/xwzh/800K/tzwj_video.m3u8$LR•IPV4•115『线路88』
+https://ls.qingting.fm/live/5022100/64k.m3u8$LR•IPV4•115『线路88』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://stream.bzcm.net/2/sd/live.m3u8$LR•IPV4•115『线路89』
+https://liveout.xntv.tv/a65jur/96iln2.m3u8?zqinghd$LR•IPV4•115『线路89』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://117.156.28.119/270000001111/1110000145/index.m3u8$LR•IPV4•115『线路90』
+http://live.qthnews.org.cn:1935/live/live1/800k/tzwj_video.m3u8$LR•IPV4•115『线路90』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://stream2.jlntv.cn/baishan1/sd/live.m3u8$LR•IPV4•115『线路91』
+http://stream.hrbtv.net/xwzh/sd/live.m3u8?zheild$LR•IPV4•115『线路91』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://live1.wuhubtv.com/channel1/sd/live.m3u8$LR•IPV4•115『线路92』
+https://stream2.jlntv.cn/baicheng1/sd/live.m3u8$LR•IPV4•115『线路92』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://palive.patv123.com:8091/live/xwpd_800K.m3u8$LR•IPV4•115『线路93』
+http://live.cztv.cc:85/live/xwpd.m3u8$LR•IPV4•115『线路93』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://stream2.jlntv.cn/liaoyuan1/sd/live.m3u8$LR•IPV4•115『线路94』
+http://117.156.28.119/270000001111/1110000001/index.m3u8$LR•IPV4•115『线路94』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://stream8.jlntv.cn/shulan/sd/live.m3u8?_upt=332db6421699196585$LR•IPV4•115『线路95』
+http://pili-live-hls.hebitv.com/hebi/hebi.m3u8$LR•IPV4•115『线路95』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://stream5.jlntv.cn/hn/sd/live.m3u8$LR•IPV4•115『线路96』
+https://stream2.jlntv.cn/naxw/sd/live.m3u8$LR•IPV4•115『线路96』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://pili-live-hls.ybcxjd.com/jdh-live/2108111201035597.m3u8?zsicd$LR•IPV4•115『线路97』
+http://uni6rtmp.tulix.tv:1935/vbstv/vbsabr.smil/chunklist_w439903609_b1228800.m3u8$LR•IPV4•115『线路97』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://live.spccmc.com:90/live/spxwzh.m3u8$LR•IPV4•115『线路98』
+http://221.5.213.4:30000/1111.m3u8$LR•IPV4•115『线路98』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://live.iwcmt.cn:90/live/zhxw.m3u8$LR•IPV4•115『线路99』
+https://stream2.jlntv.cn/jilin1/sd/live.m3u8$LR•IPV4•115『线路99』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://live.jinchuanrmt.com:90/live/zhxw.m3u8?zsicd$LR•IPV4•115『线路100』
+http://30515.hlsplay.aodianyun.com/lms_30515/tv_channel_239.m3u8$LR•IPV4•115『线路100』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://play.yunxya.com/channellive/xinwen.m3u8$LR•IPV4•115『线路101』
+https://stream2.jlntv.cn/sptv/sd/live.m3u8$LR•IPV4•115『线路101』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://ls.qingting.fm/live/267.m3u8$LR•IPV4•115『线路102』
+http://live.ahsz.tv/video/s10001-szzh/index.m3u8$LR•IPV4•115『线路102』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://hslive.hsnewsnet.com/lsdream/hve9Wjs/1000/live.m3u8$LR•IPV4•115『线路103』
+http://guangshui.live.tempsource.cjyun.org/videotmp/s10146-GSXW.m3u8$LR•IPV4•115『线路103』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://p2.vzan.com/slowlive/596867413819827251/live.m3u8?zbid=1725814272&tpid=1516989100&type=0$LR•IPV4•115『线路104』
+https://stream2.jlntv.cn/jlyb/sd/live.m3u8$LR•IPV4•115『线路104』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://uzoiczhh.live.sxmty.com/live/hls/0d41f1480c4042d49927858f01fde707/53130407737b417b9a6259b57246bae3.m3u8?zshanxd$LR•IPV4•115『线路105』
+https://stream2.jlntv.cn/sytv/sd/live.m3u8$LR•IPV4•115『线路105』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://ls.qingting.fm/live/5043/64k.m3u8$LR•IPV4•115『线路106』
+http://222.179.155.21:1935/ch1.m3u8$LR•IPV4•115『线路106』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://liveout.btzx.com.cn/62ds9e/4nxdih.m3u8?fbl=$LR•IPV4•115『线路107』
+http://117.172.215.250:8083/videos/live/35/39/GQVbrgob5CGJM/GQVbrgob5CGJM.m3u8$LR•IPV4•115『线路107』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://nklive.nbs.cn/hls/d511bc9d-a694-4453-b3a2-4fc842cc97a1/index.m3u8$LR•IPV4•115『线路108』
+http://220.180.110.101:8083/videos/live/36/57/hwEHU4UVQ1Iv5/hwEHU4UVQ1Iv5.m3u8$LR•IPV4•115『线路108』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://cm-wshls.homecdn.com/live/2aa50.m3u8$LR•IPV4•115『线路109』
+http://live.hnxttv.com:9601/live/xwzh/800K/tzwj_video.m3u8$LR•IPV4•115『线路109』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://ls.qingting.fm/live/23797.m3u8$LR•IPV4•115『线路110』
+http://stream.bzcm.net/2/sd/live.m3u8$LR•IPV4•115『线路110』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://play.kankanlive.com/live/1720583434627241.m3u8$LR•IPV4•115『线路111』
+http://117.156.28.119/270000001111/1110000145/index.m3u8$LR•IPV4•115『线路111』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://ls.qingting.fm/live/5022100/64k.m3u8$LR•IPV4•115『线路112』
+https://stream2.jlntv.cn/baishan1/sd/live.m3u8$LR•IPV4•115『线路112』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://liveout.xntv.tv/a65jur/96iln2.m3u8?zqinghd$LR•IPV4•115『线路113』
+http://live1.wuhubtv.com/channel1/sd/live.m3u8$LR•IPV4•115『线路113』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://live.qthnews.org.cn:1935/live/live1/800k/tzwj_video.m3u8$LR•IPV4•115『线路114』
+http://palive.patv123.com:8091/live/xwpd_800K.m3u8$LR•IPV4•115『线路114』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://stream.hrbtv.net/xwzh/sd/live.m3u8?zheild$LR•IPV4•115『线路115』
+https://stream2.jlntv.cn/liaoyuan1/sd/live.m3u8$LR•IPV4•115『线路115』
#EXTINF:-1 tvg-id="西安新闻" tvg-name="西安新闻" group-title="陕西",西安新闻
-http://stream2.xiancity.cn/xatv1/playlist.m3u8$LR•IPV4•2『线路1』
+http://112.46.105.20:8009/hls/28/index.m3u8$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="西安新闻" tvg-name="西安新闻" group-title="陕西",西安新闻
-http://112.46.105.20:8009/hls/28/index.m3u8$LR•IPV4•2『线路2』
+http://stream2.xiancity.cn/xatv1/playlist.m3u8$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="山东少儿" tvg-name="山东少儿" group-title="山东",山东少儿
http://123.129.70.178:9901/tsfile/live/1004_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路1』
#EXTINF:-1 tvg-id="山东少儿" tvg-name="山东少儿" group-title="山东",山东少儿
@@ -6262,11 +6258,11 @@ http://218.206.193.218:8888/hls/66/index.m3u8$LR•IPV4•8『线路4』
#EXTINF:-1 tvg-id="凤凰中文" tvg-name="凤凰中文" group-title="港澳台",凤凰中文
http://120.198.95.220:9901/tsfile/live/1036_1.m3u8?key=txiptv$LR•IPV4•8『线路5』
#EXTINF:-1 tvg-id="凤凰中文" tvg-name="凤凰中文" group-title="港澳台",凤凰中文
-http://223.110.245.139/ott.js.chinamobile.com/PLTV/3/224/3221226922/index.m3u8$LR•IPV4•8『线路6』
+http://r.jdshipin.com/cCCzW$LR•IPV4•8『线路6』
#EXTINF:-1 tvg-id="凤凰中文" tvg-name="凤凰中文" group-title="港澳台",凤凰中文
-http://r.jdshipin.com/cCCzW$LR•IPV4•8『线路7』
+http://cdn6.163189.xyz/163189/fhzw$LR•IPV4•8『线路7』
#EXTINF:-1 tvg-id="凤凰中文" tvg-name="凤凰中文" group-title="港澳台",凤凰中文
-http://cdn6.163189.xyz/163189/fhzw$LR•IPV4•8『线路8』
+http://223.110.245.139/ott.js.chinamobile.com/PLTV/3/224/3221226922/index.m3u8$LR•IPV4•8『线路8』
#EXTINF:-1 tvg-id="凤凰资讯" tvg-name="凤凰资讯" group-title="港澳台",凤凰资讯
http://api.mg.itv888.cn:8080/hls/11ef1dc70d8/index.m3u8$LR•IPV4•10『线路1』
#EXTINF:-1 tvg-id="凤凰资讯" tvg-name="凤凰资讯" group-title="港澳台",凤凰资讯
@@ -6280,25 +6276,25 @@ http://120.198.95.220:9901/tsfile/live/1037_1.m3u8?key=txiptv$LR•IPV4•10『
#EXTINF:-1 tvg-id="凤凰资讯" tvg-name="凤凰资讯" group-title="港澳台",凤凰资讯
p3p://167.114.175.6:55331/5fffbf860003807cedf4e1016c3c3ed2$LR•IPV4•10『线路6』
#EXTINF:-1 tvg-id="凤凰资讯" tvg-name="凤凰资讯" group-title="港澳台",凤凰资讯
-http://223.110.245.167/ott.js.chinamobile.com/PLTV/3/224/3221226923/index.m3u8$LR•IPV4•10『线路7』
+http://r.jdshipin.com/0Rp07$LR•IPV4•10『线路7』
#EXTINF:-1 tvg-id="凤凰资讯" tvg-name="凤凰资讯" group-title="港澳台",凤凰资讯
-http://r.jdshipin.com/0Rp07$LR•IPV4•10『线路8』
+http://php.jdshipin.com/TVOD/iptv.php?id=fhzx$LR•IPV4•10『线路8』
#EXTINF:-1 tvg-id="凤凰资讯" tvg-name="凤凰资讯" group-title="港澳台",凤凰资讯
-http://php.jdshipin.com/TVOD/iptv.php?id=fhzx$LR•IPV4•10『线路9』
+http://cdn6.163189.xyz/163189/fhzx$LR•IPV4•10『线路9』
#EXTINF:-1 tvg-id="凤凰资讯" tvg-name="凤凰资讯" group-title="港澳台",凤凰资讯
-http://cdn6.163189.xyz/163189/fhzx$LR•IPV4•10『线路10』
+http://223.110.245.167/ott.js.chinamobile.com/PLTV/3/224/3221226923/index.m3u8$LR•IPV4•10『线路10』
#EXTINF:-1 tvg-id="凤凰香港" tvg-name="凤凰香港" group-title="港澳台",凤凰香港
http://122.152.202.33/s/81a8a44f/index.m3u8?id=fhhk$LR•IPV4•6『线路1』
#EXTINF:-1 tvg-id="凤凰香港" tvg-name="凤凰香港" group-title="港澳台",凤凰香港
p3p://167.114.175.6:55331/5fe0b82c000cac9774c17f262e43314d$LR•IPV4•6『线路2』
#EXTINF:-1 tvg-id="凤凰香港" tvg-name="凤凰香港" group-title="港澳台",凤凰香港
-http://223.110.245.136/PLTV/3/224/3221226975/index.m3u8$LR•IPV4•6『线路3』
+http://r.jdshipin.com/yDoTN$LR•IPV4•6『线路3』
#EXTINF:-1 tvg-id="凤凰香港" tvg-name="凤凰香港" group-title="港澳台",凤凰香港
-http://r.jdshipin.com/yDoTN$LR•IPV4•6『线路4』
+http://php.jdshipin.com/TVOD/iptv.php?id=fhhk$LR•IPV4•6『线路4』
#EXTINF:-1 tvg-id="凤凰香港" tvg-name="凤凰香港" group-title="港澳台",凤凰香港
-http://php.jdshipin.com/TVOD/iptv.php?id=fhhk$LR•IPV4•6『线路5』
+http://cdn6.163189.xyz/163189/fhhk$LR•IPV4•6『线路5』
#EXTINF:-1 tvg-id="凤凰香港" tvg-name="凤凰香港" group-title="港澳台",凤凰香港
-http://cdn6.163189.xyz/163189/fhhk$LR•IPV4•6『线路6』
+http://223.110.245.136/PLTV/3/224/3221226975/index.m3u8$LR•IPV4•6『线路6』
#EXTINF:-1 tvg-id="TVB翡翠台" tvg-name="TVB翡翠台" group-title="港澳台",TVB翡翠台
p3p://167.114.175.6:55331/653e4c02000ea0440c8c63fd3e5d709d$LR•IPV4•12『线路1』
#EXTINF:-1 tvg-id="TVB翡翠台" tvg-name="TVB翡翠台" group-title="港澳台",TVB翡翠台
@@ -6398,9 +6394,9 @@ p3p://167.114.175.6:55331/612ee2240008f3db8e0578dc59406f9e$LR•IPV4•10『线
#EXTINF:-1 tvg-id="台视" tvg-name="台视" group-title="港澳台",台视
p3p://167.114.175.6:55331/6223b571000a13023e78ece5030b5b05$LR•IPV4•10『线路8』
#EXTINF:-1 tvg-id="台视" tvg-name="台视" group-title="港澳台",台视
-http://162.19.247.76:22222/live/taishi/index.m3u8$LR•IPV4•10『线路9』
+http://38.64.72.148/hls/modn/list/4013/chunklist1.m3u8$LR•IPV4•10『线路9』
#EXTINF:-1 tvg-id="台视" tvg-name="台视" group-title="港澳台",台视
-http://38.64.72.148/hls/modn/list/4013/chunklist1.m3u8$LR•IPV4•10『线路10』
+http://162.19.247.76:22222/live/taishi/index.m3u8$LR•IPV4•10『线路10』
#EXTINF:-1 tvg-id="民视新闻" tvg-name="民视新闻" group-title="港澳台",民视新闻
http://38.64.72.148:80/hls/modn/list/4012/chunklist0.m3u8$LR•IPV4•4『线路1』
#EXTINF:-1 tvg-id="民视新闻" tvg-name="民视新闻" group-title="港澳台",民视新闻
@@ -6412,9 +6408,9 @@ http://38.64.72.148/hls/modn/list/4012/chunklist1.m3u8$LR•IPV4•4『线路4
#EXTINF:-1 tvg-id="耀才财经" tvg-name="耀才财经" group-title="港澳台",耀才财经
https://v3.mediacast.hk/webcast/bshdlive-pc/playlist.m3u8$LR•IPV4•3『线路1』
#EXTINF:-1 tvg-id="耀才财经" tvg-name="耀才财经" group-title="港澳台",耀才财经
-http://202.69.67.66:443/webcast/bshdlive-mobile/playlist.m3u8$LR•IPV4•3『线路2』
+https://v3.mediacast.hk/webcast/bshdlive-pc/chunklist_w99771165.m3u8$LR•IPV4•3『线路2』
#EXTINF:-1 tvg-id="耀才财经" tvg-name="耀才财经" group-title="港澳台",耀才财经
-https://v3.mediacast.hk/webcast/bshdlive-pc/chunklist_w99771165.m3u8$LR•IPV4•3『线路3』
+http://202.69.67.66:443/webcast/bshdlive-mobile/playlist.m3u8$LR•IPV4•3『线路3』
#EXTINF:-1 tvg-id="美亚C+" tvg-name="美亚C+" group-title="港澳台",美亚C+
http://ottproxy2.ist.ooo/livehls/MOB-U1-NO/03.m3u8$LR•IPV4•3『线路1』
#EXTINF:-1 tvg-id="美亚C+" tvg-name="美亚C+" group-title="港澳台",美亚C+
@@ -7024,9 +7020,9 @@ https://lotus.stingray.com/manifest/ose-317ads-montreal/samsungtvplus/master.m3u
#EXTINF:-1 tvg-id="HOY TV" tvg-name="HOY TV" group-title="港澳台",HOY TV
p3p://167.114.175.6:55331/62184bc3000cd48f11e47b06202b7e18$LR•IPV4•3『线路1』
#EXTINF:-1 tvg-id="HOY TV" tvg-name="HOY TV" group-title="港澳台",HOY TV
-https://hoytv-live-stream.hoy.tv/ch77/index.m3u8$LR•IPV4•3『线路2』
+http://php.jdshipin.com/TVOD/iptv.php?id=hoytv$LR•IPV4•3『线路2』
#EXTINF:-1 tvg-id="HOY TV" tvg-name="HOY TV" group-title="港澳台",HOY TV
-http://php.jdshipin.com/TVOD/iptv.php?id=hoytv$LR•IPV4•3『线路3』
+https://hoytv-live-stream.hoy.tv/ch77/index.m3u8$LR•IPV4•3『线路3』
#EXTINF:-1 tvg-id="MOMOTV" tvg-name="MOMOTV" group-title="港澳台",MOMOTV
rtmp://f13h.mine.nu/sat/tv761$LR•IPV4
#EXTINF:-1 tvg-id="大爱1" tvg-name="大爱1" group-title="港澳台",大爱1
diff --git a/cluntop_tvbox/lib/iptv.txt b/cluntop_tvbox/lib/iptv.txt
index 2f70ba11..4cb2d542 100755
--- a/cluntop_tvbox/lib/iptv.txt
+++ b/cluntop_tvbox/lib/iptv.txt
@@ -34,7 +34,7 @@
CCTV4K,http://vip1.xinketongxun.fun:8082/tsfile/live/1026_1.m3u8$LR•IPV4•7『线路1』
CCTV4K,http://101.43.145.141:12002/gaoma/cctv4k.m3u8$LR•IPV4•7『线路2』
CCTV4K,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784358000-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-c0b2f705841d49d821e3075961bb6e84&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•7『线路3』
-CCTV4K,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784361600-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-dbc4b9704792e97da2c65aeed2033e45&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•7『线路4』
+CCTV4K,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784371500-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-48ffc61db508f8062cc67caddde58d68&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•7『线路4』
CCTV4K,http://198.204.240.250:82/live/cctv4k.m3u8$LR•IPV4•7『线路5』
CCTV4K,http://fn.tmde.top:35455/nptv/cctv4k.m3u8$LR•IPV4•7『线路6』
CCTV4K,http://xc.mfykeke.top:35455/nptv/cctv4k.m3u8$LR•IPV4•7『线路7』
@@ -89,7 +89,7 @@ CCTV4,http://112.46.105.20:8009/hls/4/index.m3u8$LR•IPV4•16『线路7』
CCTV4,http://74.91.26.218:82/live/cctv4hd.m3u8$LR•IPV4•16『线路8』
CCTV4,p3p://167.114.175.6:55331/61244d9c0006885d64b1b7591f6c12a0$LR•IPV4•16『线路9』
CCTV4,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784358000-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-109c81da2b0d59c7b20e5792a12e386f&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•16『线路10』
-CCTV4,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784361600-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-e246d8a5986fffcd5d21d25acc7aca83&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•16『线路11』
+CCTV4,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784371500-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-bb4241b14453c4f49bd0749a3aab3caf&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•16『线路11』
CCTV4,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784271600-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-6aec44040ec72def77e22587fc404005&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•16『线路12』
CCTV4,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226335/1.m3u8?$LR•IPV6•16『线路13』
CCTV4,http://63.141.230.178:82/gslb/zbdq5.m3u8?id=cctv4hd$LR•IPV4•16『线路14』
@@ -159,7 +159,7 @@ CCTV9,http://74.91.26.218:82/live/cctv9hd.m3u8$LR•IPV4•12『线路5』
CCTV9,http://112.46.105.20:8009/hls/509/index.m3u8$LR•IPV4•12『线路6』
CCTV9,http://153.0.171.163:9901/tsfile/live/1008_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•12『线路7』
CCTV9,https://v4-e6b1c5baf4e240fe63adbf68dda23435.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=8a60541ebe4d355d0da6b086b9f2026d$LR•IPV4•12『线路8』
-CCTV9,https://v4-702cae17a28d6e4f0c0002bba021d934.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=db97ec06b982224fd6b00b7bb1f6143c$LR•IPV4•12『线路9』
+CCTV9,https://v4-702cae17a28d6e4f0c0002bba021d934.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=17294e1ca3c39692f88722ff53cecd2a$LR•IPV4•12『线路9』
CCTV9,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226944/1.m3u8?$LR•IPV6•12『线路10』
CCTV9,http://222.223.41.27:8888/hls/9/index.m3u8$LR•IPV4•12『线路11』
CCTV9,https://xykt-fix.github.io/Y77.m3u8$LR•IPV4•12『线路12』
@@ -444,24 +444,23 @@ CGTN阿语,https://0472.org/hls/cgtna.m3u8$LR•IPV4
东南卫视,http://iptv.huuc.edu.cn/hls/dnhd.m3u8$LR•IPV4•18『线路16』
东南卫视,http://153.0.171.163:9901/tsfile/live/0137_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路17』
东南卫视,http://118.81.195.79:9003/hls/24/index.m3u8$LR•IPV4•18『线路18』
-深圳卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•18『线路1』
-深圳卫视,http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•18『线路2』
-深圳卫视,http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv$LR•IPV4•18『线路3』
-深圳卫视,http://173.208.212.130:8181/720p/szws.m3u8$LR•IPV4•18『线路4』
-深圳卫视,http://192.151.150.154/live/szwshd.m3u8$LR•IPV4•18『线路5』
-深圳卫视,http://124.228.160.210:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路6』
-深圳卫视,http://36.136.38.87:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路7』
-深圳卫视,http://183.11.239.36:808/hls/45/index.m3u8$LR•IPV4•18『线路8』
-深圳卫视,https://sztv-hls.sztv.com.cn/AxeFRth/500/q37Age0.m3u8?sign=671fcd3c133f66cef04a83ae0b8c542b&t=6a59189c$LR•IPV4•18『线路9』
-深圳卫视,http://38.75.136.137:98/gslb/dsdqpub/szwshd.m3u8?auth=testpub$LR•IPV4•18『线路10』
-深圳卫视,http://23.237.228.134/live6/shenzhen.m3u8$LR•IPV4•18『线路11』
-深圳卫视,http://gfr.x3322.net:9901/tsfile/live/1095_1.m3u8$LR•IPV4•18『线路12』
-深圳卫视,http://api.kkitv.itv888.cn:8080/hls/iftsd32ykm/index.m3u8$LR•IPV4•18『线路13』
-深圳卫视,https://iptv.catvod.com/catvod.php?id=szws$LR•IPV4•18『线路14』
-深圳卫视,https://httop.top/ysp-深圳卫视$LR•IPV4•18『线路15』
-深圳卫视,http://iptv.huuc.edu.cn/hls/szhd.m3u8$LR•IPV4•18『线路16』
-深圳卫视,http://153.0.171.163:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路17』
-深圳卫视,http://38.64.72.148:80/hls/modn/list/4007/playlist.m3u8$LR•IPV4•18『线路18』
+深圳卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•17『线路1』
+深圳卫视,http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•17『线路2』
+深圳卫视,http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv$LR•IPV4•17『线路3』
+深圳卫视,http://173.208.212.130:8181/720p/szws.m3u8$LR•IPV4•17『线路4』
+深圳卫视,http://192.151.150.154/live/szwshd.m3u8$LR•IPV4•17『线路5』
+深圳卫视,http://124.228.160.210:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路6』
+深圳卫视,http://36.136.38.87:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路7』
+深圳卫视,http://183.11.239.36:808/hls/45/index.m3u8$LR•IPV4•17『线路8』
+深圳卫视,http://38.75.136.137:98/gslb/dsdqpub/szwshd.m3u8?auth=testpub$LR•IPV4•17『线路9』
+深圳卫视,http://23.237.228.134/live6/shenzhen.m3u8$LR•IPV4•17『线路10』
+深圳卫视,http://gfr.x3322.net:9901/tsfile/live/1095_1.m3u8$LR•IPV4•17『线路11』
+深圳卫视,http://api.kkitv.itv888.cn:8080/hls/iftsd32ykm/index.m3u8$LR•IPV4•17『线路12』
+深圳卫视,https://iptv.catvod.com/catvod.php?id=szws$LR•IPV4•17『线路13』
+深圳卫视,https://httop.top/ysp-深圳卫视$LR•IPV4•17『线路14』
+深圳卫视,http://iptv.huuc.edu.cn/hls/szhd.m3u8$LR•IPV4•17『线路15』
+深圳卫视,http://153.0.171.163:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路16』
+深圳卫视,http://38.64.72.148:80/hls/modn/list/4007/playlist.m3u8$LR•IPV4•17『线路17』
广东卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226961/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E2MGyx659D_aaDPP0qt3NgA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•12『线路1』
广东卫视,http://112.27.235.94:8000/hls/30/index.m3u8$LR•IPV4•12『线路2』
广东卫视,http://38.75.136.137:98/gslb/dsdqpub/gdwshd.m3u8?auth=testpub$LR•IPV4•12『线路3』
@@ -515,19 +514,20 @@ CGTN阿语,https://0472.org/hls/cgtna.m3u8$LR•IPV4
贵州卫视,http://153.0.171.163:9901/tsfile/live/0120_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路14』
贵州卫视,http://183.207.248.71/gitv/live1/G_GUIZHOU/G_GUIZHOU$LR•IPV4•16『线路15』
贵州卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225728/index.m3u8$LR•IPV4•16『线路16』
-河北卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227014/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ErSGjhI3DMaaAASPrbQJYTg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•13『线路1』
-河北卫视,http://101.66.194.63:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•13『线路2』
-河北卫视,http://101.66.199.247:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•13『线路3』
-河北卫视,http://204.12.221.218:8181/3m1080p/hews.m3u8$LR•IPV4•13『线路4』
-河北卫视,http://event.pull.hebtv.com/jishi/weishi_tingyun.m3u8$LR•IPV4•13『线路5』
-河北卫视,http://183.11.239.36:808/hls/54/index.m3u8$LR•IPV4•13『线路6』
-河北卫视,http://23.237.228.134/live8/hebei.m3u8$LR•IPV4•13『线路7』
-河北卫视,http://43.251.226.89:8080/play/42.m3u8$LR•IPV4•13『线路8』
-河北卫视,http://gfr.x3322.net:9901/tsfile/live/1091_1.m3u8$LR•IPV4•13『线路9』
-河北卫视,https://iptv.catvod.com/catvod.php?id=hbws$LR•IPV4•13『线路10』
-河北卫视,https://httop.top/ysp-河北卫视$LR•IPV4•13『线路11』
-河北卫视,http://iptv.huuc.edu.cn/hls/hebhd.m3u8$LR•IPV4•13『线路12』
-河北卫视,http://153.0.171.163:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•13『线路13』
+河北卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227014/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ErSGjhI3DMaaAASPrbQJYTg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•14『线路1』
+河北卫视,http://101.66.194.63:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•14『线路2』
+河北卫视,http://101.66.199.247:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•14『线路3』
+河北卫视,http://204.12.221.218:8181/3m1080p/hews.m3u8$LR•IPV4•14『线路4』
+河北卫视,http://event.pull.hebtv.com/jishi/weishi_tingyun.m3u8$LR•IPV4•14『线路5』
+河北卫视,http://183.11.239.36:808/hls/54/index.m3u8$LR•IPV4•14『线路6』
+河北卫视,https://tv.pull.hebtv.com/jishi/nongminpindao.m3u8?t=1783932137&k=f5f7fa7a3e39ef329f1b86c4f866958c$LR•IPV4•14『线路7』
+河北卫视,http://23.237.228.134/live8/hebei.m3u8$LR•IPV4•14『线路8』
+河北卫视,http://43.251.226.89:8080/play/42.m3u8$LR•IPV4•14『线路9』
+河北卫视,http://gfr.x3322.net:9901/tsfile/live/1091_1.m3u8$LR•IPV4•14『线路10』
+河北卫视,https://iptv.catvod.com/catvod.php?id=hbws$LR•IPV4•14『线路11』
+河北卫视,https://httop.top/ysp-河北卫视$LR•IPV4•14『线路12』
+河北卫视,http://iptv.huuc.edu.cn/hls/hebhd.m3u8$LR•IPV4•14『线路13』
+河北卫视,http://153.0.171.163:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•14『线路14』
河南卫视,http://101.66.195.138:9901/tsfile/live/0139_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•12『线路1』
河南卫视,http://38.75.136.137:98/gslb/dsdqpub/hawshd.m3u8?auth=testpub$LR•IPV4•12『线路2』
河南卫视,http://63.141.230.178:82/gslb/zbdq5.m3u8?id=hawshd$LR•IPV4•12『线路3』
@@ -566,22 +566,21 @@ CGTN阿语,https://0472.org/hls/cgtna.m3u8$LR•IPV4
湖北卫视,http://153.0.171.163:9901/tsfile/live/0132_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•14『线路12』
湖北卫视,http://www.745612.xyz:7788/rtp/235.254.198.72:1564$LR•IPV4•14『线路13』
湖北卫视,http://118.81.195.79:9003/hls/32/index.m3u8$LR•IPV4•14『线路14』
-江西卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226956/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Ei6ZIpVizXlewg-YfGvH8dA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•16『线路1』
-江西卫视,http://101.66.199.247:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路2』
-江西卫视,http://112.123.243.37:50085/tsfile/live/0132_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路3』
-江西卫视,http://124.228.160.210:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路4』
-江西卫视,http://153.0.171.163:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路5』
-江西卫视,http://112.27.235.94:8000/hls/44/index.m3u8$LR•IPV4•16『线路6』
-江西卫视,https://jsp-tv-live.jxtvcn.com.cn/live-jsp/tv_jxtv6.m3u8?t=1784004704&token=67a59c29-de6e-4407-90c8-39f7e099b3db&d=0a7a8c487c454bc7bb02a60298283c5e$LR•IPV4•16『线路7』
-江西卫视,http://38.75.136.137:98/gslb/dsdqpub/jxwshd.m3u8?auth=testpub$LR•IPV4•16『线路8』
-江西卫视,http://23.237.228.134/live8/jiangxi.m3u8$LR•IPV4•16『线路9』
-江西卫视,http://43.251.226.89:8080/play/43.m3u8$LR•IPV4•16『线路10』
-江西卫视,http://api.kkitv.itv888.cn:8080/hls/pv0np60bpin/index.m3u8$LR•IPV4•16『线路11』
-江西卫视,https://iptv.catvod.com/catvod.php?id=jxws$LR•IPV4•16『线路12』
-江西卫视,https://httop.top/ysp-江西卫视$LR•IPV4•16『线路13』
-江西卫视,http://iptv.huuc.edu.cn/hls/jxhd.m3u8$LR•IPV4•16『线路14』
-江西卫视,http://mg.hmysapp.cn:177/ckmg/zb.php?id=jxws$LR•IPV4•16『线路15』
-江西卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225705/index.m3u8$LR•IPV4•16『线路16』
+江西卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226956/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Ei6ZIpVizXlewg-YfGvH8dA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•15『线路1』
+江西卫视,http://101.66.199.247:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•15『线路2』
+江西卫视,http://112.123.243.37:50085/tsfile/live/0132_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•15『线路3』
+江西卫视,http://124.228.160.210:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•15『线路4』
+江西卫视,http://153.0.171.163:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•15『线路5』
+江西卫视,http://112.27.235.94:8000/hls/44/index.m3u8$LR•IPV4•15『线路6』
+江西卫视,http://38.75.136.137:98/gslb/dsdqpub/jxwshd.m3u8?auth=testpub$LR•IPV4•15『线路7』
+江西卫视,http://23.237.228.134/live8/jiangxi.m3u8$LR•IPV4•15『线路8』
+江西卫视,http://43.251.226.89:8080/play/43.m3u8$LR•IPV4•15『线路9』
+江西卫视,http://api.kkitv.itv888.cn:8080/hls/pv0np60bpin/index.m3u8$LR•IPV4•15『线路10』
+江西卫视,https://iptv.catvod.com/catvod.php?id=jxws$LR•IPV4•15『线路11』
+江西卫视,https://httop.top/ysp-江西卫视$LR•IPV4•15『线路12』
+江西卫视,http://iptv.huuc.edu.cn/hls/jxhd.m3u8$LR•IPV4•15『线路13』
+江西卫视,http://mg.hmysapp.cn:177/ckmg/zb.php?id=jxws$LR•IPV4•15『线路14』
+江西卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225705/index.m3u8$LR•IPV4•15『线路15』
吉林卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227015/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EW5-3AVdwD5KlUpuA4mz7Cg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•17『线路1』
吉林卫视,http://204.12.221.218:8181/3m1080p/jlws.m3u8$LR•IPV4•17『线路2』
吉林卫视,http://38.75.136.137:98/gslb/dsdqpub/jlwshd.m3u8?auth=testpub$LR•IPV4•17『线路3』
@@ -706,23 +705,22 @@ CGTN阿语,https://0472.org/hls/cgtna.m3u8$LR•IPV4
新疆卫视,http://183.207.249.15/PLTV/3/224/3221225523/index.m3u8$LR•IPV4•14『线路12』
新疆卫视,http://223.110.243.136/PLTV/3/224/3221225523/index.m3u8$LR•IPV4•14『线路13』
新疆卫视,http://112.25.48.68/live/program/live/xjws/1300000/mnf.m3u8$LR•IPV4•14『线路14』
-云南卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227028/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGfQPqRNVeBjTMsZ48qu0SA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•17『线路1』
-云南卫视,http://120.198.95.220:9901/tsfile/live/1056_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•17『线路2』
-云南卫视,http://38.75.136.137:98/gslb/dsdqpub/ynwshd.m3u8?auth=testpub$LR•IPV4•17『线路3』
-云南卫视,http://204.12.221.218:8181/3m1080p/ynws.m3u8$LR•IPV4•17『线路4』
-云南卫视,http://112.123.243.37:50085/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•17『线路5』
-云南卫视,http://101.66.194.82:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•17『线路6』
-云南卫视,http://101.66.194.63:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•17『线路7』
-云南卫视,http://36.136.38.87:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路8』
-云南卫视,http://101.66.195.138:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•17『线路9』
-云南卫视,http://101.66.199.247:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•17『线路10』
-云南卫视,http://153.0.171.163:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路11』
-云南卫视,http://112.27.235.94:8000/hls/40/index.m3u8$LR•IPV4•17『线路12』
-云南卫视,http://p2.ioioz.com/xgplayer.php?id=https://hwapi.yntv.net/ew265l/z1z6s5.m3u8$LR•IPV4•17『线路13』
-云南卫视,http://23.237.228.134/live8/yunnan.m3u8$LR•IPV4•17『线路14』
-云南卫视,https://iptv.catvod.com/catvod.php?id=ynws$LR•IPV4•17『线路15』
-云南卫视,https://httop.top/ysp-云南卫视$LR•IPV4•17『线路16』
-云南卫视,https://hwapi.yunshicloud.com/8xughf/e0bx15.m3u8$LR•IPV4•17『线路17』
+云南卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227028/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGfQPqRNVeBjTMsZ48qu0SA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•16『线路1』
+云南卫视,http://120.198.95.220:9901/tsfile/live/1056_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•16『线路2』
+云南卫视,http://38.75.136.137:98/gslb/dsdqpub/ynwshd.m3u8?auth=testpub$LR•IPV4•16『线路3』
+云南卫视,http://204.12.221.218:8181/3m1080p/ynws.m3u8$LR•IPV4•16『线路4』
+云南卫视,http://112.123.243.37:50085/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路5』
+云南卫视,http://101.66.194.82:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路6』
+云南卫视,http://101.66.194.63:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路7』
+云南卫视,http://36.136.38.87:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路8』
+云南卫视,http://101.66.195.138:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路9』
+云南卫视,http://101.66.199.247:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路10』
+云南卫视,http://153.0.171.163:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路11』
+云南卫视,http://112.27.235.94:8000/hls/40/index.m3u8$LR•IPV4•16『线路12』
+云南卫视,http://23.237.228.134/live8/yunnan.m3u8$LR•IPV4•16『线路13』
+云南卫视,https://iptv.catvod.com/catvod.php?id=ynws$LR•IPV4•16『线路14』
+云南卫视,https://httop.top/ysp-云南卫视$LR•IPV4•16『线路15』
+云南卫视,https://hwapi.yunshicloud.com/8xughf/e0bx15.m3u8$LR•IPV4•16『线路16』
西藏卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227033/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EdeTB7OZ9G_VNJk5C3t96fQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•12『线路1』
西藏卫视,http://59.39.89.130:60901/tsfile/live/0125_3.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•12『线路2』
西藏卫视,http://198.204.228.26/live/xzws.m3u8$LR•IPV4•12『线路3』
@@ -784,7 +782,7 @@ CGTN阿语,https://0472.org/hls/cgtna.m3u8$LR•IPV4
山西卫视,http://36.136.38.87:9901/tsfile/live/0118_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•15『线路8』
山西卫视,http://101.66.199.247:9901/tsfile/live/0118_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•15『线路9』
山西卫视,http://153.0.171.163:9901/tsfile/live/0118_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•15『线路10』
-山西卫视,https://livehhhttps.sxrtv.com/lsdream/lce1mC4/800/h1thc41.m3u8$LR•IPV4•15『线路11』
+山西卫视,https://livehhhttps.sxrtv.com/lsdream/Md571Kv/800/p7iM150.m3u8$LR•IPV4•15『线路11』
山西卫视,http://23.237.228.134/live8/shanxi.m3u8$LR•IPV4•15『线路12』
山西卫视,https://iptv.catvod.com/catvod.php?id=sxiws$LR•IPV4•15『线路13』
山西卫视,https://httop.top/ysp-山西卫视$LR•IPV4•15『线路14』
@@ -950,8 +948,8 @@ NewTV超级体育,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/
NewTV超级体育,http://kkk.jjjj.jiduo.me/api.php?n=tttt&id=0078&tk=a0c4f6cfaba3$LR•IPV4•5『线路3』
NewTV超级体育,http://feiyang.ak47s.top:35455/itv/1000000001000009601.m3u8?cdn=ystenlive$LR•IPV4•5『线路4』
NewTV超级体育,http://kkk.jjjj.jiduo.me/api.php?n=tttt&id=3188&tk=23a9aca1f79f$LR•IPV4•5『线路5』
-NewTV动作电影,http://39.134.19.68/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226465/index.m3u8$LR•IPV4•2『线路1』
-NewTV动作电影,http://live.metshop.top/huya/11602077?cdn=alicdn$LR•IPV4•2『线路2』
+NewTV动作电影,http://live.metshop.top/huya/11602077?cdn=alicdn$LR•IPV4•2『线路1』
+NewTV动作电影,http://39.134.19.68/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226465/index.m3u8$LR•IPV4•2『线路2』
NewTV精品体育,https://epg.pw/stream/f7556eccd4ae06b0c2991fdc7a4f8388496559f728cc82459a8e50346040e226.m3u8$LR•IPV4•6『线路1』
NewTV精品体育,https://epg.pw/stream/866a097a0907c9832440f8df38272dd555abf05200dfbafcc137e214c9b30ca7.m3u8$LR•IPV4•6『线路2』
NewTV精品体育,http://kkk.jjjj.jiduo.me/api.php?n=tttt&id=5739&tk=23a9aca1f79f$LR•IPV4•6『线路3』
@@ -1110,8 +1108,8 @@ NewTV精品体育,http://dl.wifi942.com:66/jsyd/jsyd.php?id=GITV-JS-65$LR•IPV4
滁州公共频道,http://183.167.193.45:1935/live/cztvgg/playlist.m3u8$LR•IPV4
铜陵新闻综合频道,https://ls.qingting.fm/live/21303/64k.m3u8$LR•IPV4•2『线路1』
铜陵新闻综合频道,http://dstpush1.retalltech.com/app/stream1.m3u8$LR•IPV4•2『线路2』
-亳州农村,http://220.180.110.101:8083/videos/live/39/13/o4ncrHkSp7q09/o4ncrHkSp7q09.m3u8$LR•IPV4•2『线路1』
-亳州农村,http://zbbf2.ahbztv.com/live/418.m3u8$LR•IPV4•2『线路2』
+亳州农村,http://zbbf2.ahbztv.com/live/418.m3u8$LR•IPV4•2『线路1』
+亳州农村,http://220.180.110.101:8083/videos/live/39/13/o4ncrHkSp7q09/o4ncrHkSp7q09.m3u8$LR•IPV4•2『线路2』
北京,#genre#
北京财经,http://ivi.bupt.edu.cn/hls/btv5.m3u8$LR•IPV4
@@ -1131,19 +1129,19 @@ NewTV精品体育,http://dl.wifi942.com:66/jsyd/jsyd.php?id=GITV-JS-65$LR•IPV4
南宁影视娱乐,http://hls.nntv.cn/nnlive/YSYL_244.m3u8$LR•IPV4
河北,#genre#
-邢台综合,http://222.223.119.21:8888/newlive/live/hls/54/live.m3u8$LR•IPV4•2『线路1』
-邢台综合,https://jwplay.hebyun.com.cn:443/live/xtsrmtzs/1500k/tzwj_video.m3u8$LR•IPV4•2『线路2』
-河北都市,http://121.19.134.246:808/hls/21/index.m3u8$LR•IPV4•2『线路1』
-河北都市,http://1.94.31.214/php/hebei.php?id=hbds$LR•IPV4•2『线路2』
-河北农民,http://121.19.134.246:808/hls/25/index.m3u8$LR•IPV4•2『线路1』
-河北农民,https://ls.qingting.fm/live/1650/64k.m3u8$LR•IPV4•2『线路2』
+邢台综合,https://jwplay.hebyun.com.cn:443/live/xtsrmtzs/1500k/tzwj_video.m3u8$LR•IPV4•2『线路1』
+邢台综合,http://222.223.119.21:8888/newlive/live/hls/54/live.m3u8$LR•IPV4•2『线路2』
+河北都市,http://1.94.31.214/php/hebei.php?id=hbds$LR•IPV4•2『线路1』
+河北都市,http://121.19.134.246:808/hls/21/index.m3u8$LR•IPV4•2『线路2』
+河北农民,https://ls.qingting.fm/live/1650/64k.m3u8$LR•IPV4•2『线路1』
+河北农民,http://121.19.134.246:808/hls/25/index.m3u8$LR•IPV4•2『线路2』
鹿泉一套,http://hblq.chinashadt.com:2036/live/stream:luquan1.stream/playlist.m3u8$LR•IPV4
-河北经济,http://121.19.134.246:808/hls/20/index.m3u8$LR•IPV4•2『线路1』
-河北经济,http://1.94.31.214/php/hebei.php?id=jjsh$LR•IPV4•2『线路2』
-河北影视,http://121.19.134.246:808/hls/22/index.m3u8$LR•IPV4•2『线路1』
-河北影视,http://1.94.31.214/php/hebei.php?id=hbys$LR•IPV4•2『线路2』
-河北公共,http://121.19.134.246:808/hls/24/index.m3u8$LR•IPV4•2『线路1』
-河北公共,http://1.94.31.214/php/hebei.php?id=hbgg$LR•IPV4•2『线路2』
+河北经济,http://1.94.31.214/php/hebei.php?id=jjsh$LR•IPV4•2『线路1』
+河北经济,http://121.19.134.246:808/hls/20/index.m3u8$LR•IPV4•2『线路2』
+河北影视,http://1.94.31.214/php/hebei.php?id=hbys$LR•IPV4•2『线路1』
+河北影视,http://121.19.134.246:808/hls/22/index.m3u8$LR•IPV4•2『线路2』
+河北公共,http://1.94.31.214/php/hebei.php?id=hbgg$LR•IPV4•2『线路1』
+河北公共,http://121.19.134.246:808/hls/24/index.m3u8$LR•IPV4•2『线路2』
鹿泉二套,http://hblq.chinashadt.com:2036/live/stream:luquan2.stream/playlist.m3u8$LR•IPV4
内蒙古,#genre#
@@ -1168,10 +1166,10 @@ NewTV精品体育,http://dl.wifi942.com:66/jsyd/jsyd.php?id=GITV-JS-65$LR•IPV4
江苏教育,http://223.110.245.151/ott.js.chinamobile.com/PLTV/3/224/3221225923/index.m3u8$LR•IPV4
南京十八,http://183.207.248.71/gitv/live1/G_NJSB/G_NJSB$LR•IPV4
江苏体育,http://183.207.248.71/gitv/live1/G_JSTY/G_JSTY$LR•IPV4
-南京教科,https://live.nbs.cn/channels/njtv/jkpd/m3u8:500k/live.m3u8$LR•IPV4•4『线路1』
-南京教科,http://183.207.248.71/gitv/live1/G_NJJK/G_NJJK$LR•IPV4•4『线路2』
-南京教科,http://223.110.245.155/ott.js.chinamobile.com/PLTV/3/224/3221227194/index.m3u8$LR•IPV4•4『线路3』
-南京教科,http://nklive.nbs.cn/hls/75b3c462-b831-4de7-a34b-5d3221db2069/index.m3u8$LR•IPV4•4『线路4』
+南京教科,http://nklive.nbs.cn/hls/75b3c462-b831-4de7-a34b-5d3221db2069/index.m3u8$LR•IPV4•4『线路1』
+南京教科,https://live.nbs.cn/channels/njtv/jkpd/m3u8:500k/live.m3u8$LR•IPV4•4『线路2』
+南京教科,http://183.207.248.71/gitv/live1/G_NJJK/G_NJJK$LR•IPV4•4『线路3』
+南京教科,http://223.110.245.155/ott.js.chinamobile.com/PLTV/3/224/3221227194/index.m3u8$LR•IPV4•4『线路4』
南京少儿,https://live.nbs.cn/channels/njtv/sepd/m3u8:500k/live.m3u8$LR•IPV4
苏州4k,https://live-auth.51kandianshi.com/szgd/csztv4k_hd.m3u8$LR•IPV4•5『线路1』
苏州4k,http://43.251.226.89:8080/play/927.m3u8$LR•IPV4•5『线路2』
@@ -2994,55 +2992,55 @@ NewTV精品体育,http://dl.wifi942.com:66/jsyd/jsyd.php?id=GITV-JS-65$LR•IPV4
新闻综合,http://111.228.4.117:6789/migu720p.php?id=651632657$LR•IPV4•115『线路68』
新闻综合,https://stream1.freetv.fun/shang-hai-xin-wen-zong-he-8.m3u8$LR•IPV4•115『线路69』
新闻综合,https://stream1.freetv.fun/ipv6-xin-wen-zong-he-10.m3u8$LR•IPV4•115『线路70』
-新闻综合,https://stream2.jlntv.cn/baicheng1/sd/live.m3u8$LR•IPV4•115『线路71』
-新闻综合,http://live.cztv.cc:85/live/xwpd.m3u8$LR•IPV4•115『线路72』
-新闻综合,http://117.156.28.119/270000001111/1110000001/index.m3u8$LR•IPV4•115『线路73』
-新闻综合,http://pili-live-hls.hebitv.com/hebi/hebi.m3u8$LR•IPV4•115『线路74』
-新闻综合,https://stream2.jlntv.cn/naxw/sd/live.m3u8$LR•IPV4•115『线路75』
-新闻综合,http://uni6rtmp.tulix.tv:1935/vbstv/vbsabr.smil/chunklist_w439903609_b1228800.m3u8$LR•IPV4•115『线路76』
-新闻综合,http://221.5.213.4:30000/1111.m3u8$LR•IPV4•115『线路77』
-新闻综合,https://stream2.jlntv.cn/jilin1/sd/live.m3u8$LR•IPV4•115『线路78』
-新闻综合,http://30515.hlsplay.aodianyun.com/lms_30515/tv_channel_239.m3u8$LR•IPV4•115『线路79』
-新闻综合,https://stream2.jlntv.cn/sptv/sd/live.m3u8$LR•IPV4•115『线路80』
-新闻综合,http://live.ahsz.tv/video/s10001-szzh/index.m3u8$LR•IPV4•115『线路81』
-新闻综合,http://guangshui.live.tempsource.cjyun.org/videotmp/s10146-GSXW.m3u8$LR•IPV4•115『线路82』
-新闻综合,https://stream2.jlntv.cn/jlyb/sd/live.m3u8$LR•IPV4•115『线路83』
-新闻综合,https://stream2.jlntv.cn/sytv/sd/live.m3u8$LR•IPV4•115『线路84』
-新闻综合,http://222.179.155.21:1935/ch1.m3u8$LR•IPV4•115『线路85』
-新闻综合,http://117.172.215.250:8083/videos/live/35/39/GQVbrgob5CGJM/GQVbrgob5CGJM.m3u8$LR•IPV4•115『线路86』
-新闻综合,http://220.180.110.101:8083/videos/live/36/57/hwEHU4UVQ1Iv5/hwEHU4UVQ1Iv5.m3u8$LR•IPV4•115『线路87』
-新闻综合,http://live.hnxttv.com:9601/live/xwzh/800K/tzwj_video.m3u8$LR•IPV4•115『线路88』
-新闻综合,http://stream.bzcm.net/2/sd/live.m3u8$LR•IPV4•115『线路89』
-新闻综合,http://117.156.28.119/270000001111/1110000145/index.m3u8$LR•IPV4•115『线路90』
-新闻综合,https://stream2.jlntv.cn/baishan1/sd/live.m3u8$LR•IPV4•115『线路91』
-新闻综合,http://live1.wuhubtv.com/channel1/sd/live.m3u8$LR•IPV4•115『线路92』
-新闻综合,http://palive.patv123.com:8091/live/xwpd_800K.m3u8$LR•IPV4•115『线路93』
-新闻综合,https://stream2.jlntv.cn/liaoyuan1/sd/live.m3u8$LR•IPV4•115『线路94』
-新闻综合,http://stream8.jlntv.cn/shulan/sd/live.m3u8?_upt=332db6421699196585$LR•IPV4•115『线路95』
-新闻综合,http://stream5.jlntv.cn/hn/sd/live.m3u8$LR•IPV4•115『线路96』
-新闻综合,http://pili-live-hls.ybcxjd.com/jdh-live/2108111201035597.m3u8?zsicd$LR•IPV4•115『线路97』
-新闻综合,http://live.spccmc.com:90/live/spxwzh.m3u8$LR•IPV4•115『线路98』
-新闻综合,http://live.iwcmt.cn:90/live/zhxw.m3u8$LR•IPV4•115『线路99』
-新闻综合,http://live.jinchuanrmt.com:90/live/zhxw.m3u8?zsicd$LR•IPV4•115『线路100』
-新闻综合,https://play.yunxya.com/channellive/xinwen.m3u8$LR•IPV4•115『线路101』
-新闻综合,http://ls.qingting.fm/live/267.m3u8$LR•IPV4•115『线路102』
-新闻综合,http://hslive.hsnewsnet.com/lsdream/hve9Wjs/1000/live.m3u8$LR•IPV4•115『线路103』
-新闻综合,https://p2.vzan.com/slowlive/596867413819827251/live.m3u8?zbid=1725814272&tpid=1516989100&type=0$LR•IPV4•115『线路104』
-新闻综合,http://uzoiczhh.live.sxmty.com/live/hls/0d41f1480c4042d49927858f01fde707/53130407737b417b9a6259b57246bae3.m3u8?zshanxd$LR•IPV4•115『线路105』
-新闻综合,https://ls.qingting.fm/live/5043/64k.m3u8$LR•IPV4•115『线路106』
-新闻综合,http://liveout.btzx.com.cn/62ds9e/4nxdih.m3u8?fbl=$LR•IPV4•115『线路107』
-新闻综合,http://nklive.nbs.cn/hls/d511bc9d-a694-4453-b3a2-4fc842cc97a1/index.m3u8$LR•IPV4•115『线路108』
-新闻综合,http://cm-wshls.homecdn.com/live/2aa50.m3u8$LR•IPV4•115『线路109』
-新闻综合,http://ls.qingting.fm/live/23797.m3u8$LR•IPV4•115『线路110』
-新闻综合,https://play.kankanlive.com/live/1720583434627241.m3u8$LR•IPV4•115『线路111』
-新闻综合,https://ls.qingting.fm/live/5022100/64k.m3u8$LR•IPV4•115『线路112』
-新闻综合,https://liveout.xntv.tv/a65jur/96iln2.m3u8?zqinghd$LR•IPV4•115『线路113』
-新闻综合,http://live.qthnews.org.cn:1935/live/live1/800k/tzwj_video.m3u8$LR•IPV4•115『线路114』
-新闻综合,http://stream.hrbtv.net/xwzh/sd/live.m3u8?zheild$LR•IPV4•115『线路115』
+新闻综合,http://stream8.jlntv.cn/shulan/sd/live.m3u8?_upt=332db6421699196585$LR•IPV4•115『线路71』
+新闻综合,http://stream5.jlntv.cn/hn/sd/live.m3u8$LR•IPV4•115『线路72』
+新闻综合,http://pili-live-hls.ybcxjd.com/jdh-live/2108111201035597.m3u8?zsicd$LR•IPV4•115『线路73』
+新闻综合,http://live.spccmc.com:90/live/spxwzh.m3u8$LR•IPV4•115『线路74』
+新闻综合,http://live.iwcmt.cn:90/live/zhxw.m3u8$LR•IPV4•115『线路75』
+新闻综合,http://live.jinchuanrmt.com:90/live/zhxw.m3u8?zsicd$LR•IPV4•115『线路76』
+新闻综合,https://play.yunxya.com/channellive/xinwen.m3u8$LR•IPV4•115『线路77』
+新闻综合,http://ls.qingting.fm/live/267.m3u8$LR•IPV4•115『线路78』
+新闻综合,http://hslive.hsnewsnet.com/lsdream/hve9Wjs/1000/live.m3u8$LR•IPV4•115『线路79』
+新闻综合,https://p2.vzan.com/slowlive/596867413819827251/live.m3u8?zbid=1725814272&tpid=1516989100&type=0$LR•IPV4•115『线路80』
+新闻综合,http://uzoiczhh.live.sxmty.com/live/hls/0d41f1480c4042d49927858f01fde707/53130407737b417b9a6259b57246bae3.m3u8?zshanxd$LR•IPV4•115『线路81』
+新闻综合,https://ls.qingting.fm/live/5043/64k.m3u8$LR•IPV4•115『线路82』
+新闻综合,http://liveout.btzx.com.cn/62ds9e/4nxdih.m3u8?fbl=$LR•IPV4•115『线路83』
+新闻综合,http://nklive.nbs.cn/hls/d511bc9d-a694-4453-b3a2-4fc842cc97a1/index.m3u8$LR•IPV4•115『线路84』
+新闻综合,http://cm-wshls.homecdn.com/live/2aa50.m3u8$LR•IPV4•115『线路85』
+新闻综合,http://ls.qingting.fm/live/23797.m3u8$LR•IPV4•115『线路86』
+新闻综合,https://play.kankanlive.com/live/1720583434627241.m3u8$LR•IPV4•115『线路87』
+新闻综合,https://ls.qingting.fm/live/5022100/64k.m3u8$LR•IPV4•115『线路88』
+新闻综合,https://liveout.xntv.tv/a65jur/96iln2.m3u8?zqinghd$LR•IPV4•115『线路89』
+新闻综合,http://live.qthnews.org.cn:1935/live/live1/800k/tzwj_video.m3u8$LR•IPV4•115『线路90』
+新闻综合,http://stream.hrbtv.net/xwzh/sd/live.m3u8?zheild$LR•IPV4•115『线路91』
+新闻综合,https://stream2.jlntv.cn/baicheng1/sd/live.m3u8$LR•IPV4•115『线路92』
+新闻综合,http://live.cztv.cc:85/live/xwpd.m3u8$LR•IPV4•115『线路93』
+新闻综合,http://117.156.28.119/270000001111/1110000001/index.m3u8$LR•IPV4•115『线路94』
+新闻综合,http://pili-live-hls.hebitv.com/hebi/hebi.m3u8$LR•IPV4•115『线路95』
+新闻综合,https://stream2.jlntv.cn/naxw/sd/live.m3u8$LR•IPV4•115『线路96』
+新闻综合,http://uni6rtmp.tulix.tv:1935/vbstv/vbsabr.smil/chunklist_w439903609_b1228800.m3u8$LR•IPV4•115『线路97』
+新闻综合,http://221.5.213.4:30000/1111.m3u8$LR•IPV4•115『线路98』
+新闻综合,https://stream2.jlntv.cn/jilin1/sd/live.m3u8$LR•IPV4•115『线路99』
+新闻综合,http://30515.hlsplay.aodianyun.com/lms_30515/tv_channel_239.m3u8$LR•IPV4•115『线路100』
+新闻综合,https://stream2.jlntv.cn/sptv/sd/live.m3u8$LR•IPV4•115『线路101』
+新闻综合,http://live.ahsz.tv/video/s10001-szzh/index.m3u8$LR•IPV4•115『线路102』
+新闻综合,http://guangshui.live.tempsource.cjyun.org/videotmp/s10146-GSXW.m3u8$LR•IPV4•115『线路103』
+新闻综合,https://stream2.jlntv.cn/jlyb/sd/live.m3u8$LR•IPV4•115『线路104』
+新闻综合,https://stream2.jlntv.cn/sytv/sd/live.m3u8$LR•IPV4•115『线路105』
+新闻综合,http://222.179.155.21:1935/ch1.m3u8$LR•IPV4•115『线路106』
+新闻综合,http://117.172.215.250:8083/videos/live/35/39/GQVbrgob5CGJM/GQVbrgob5CGJM.m3u8$LR•IPV4•115『线路107』
+新闻综合,http://220.180.110.101:8083/videos/live/36/57/hwEHU4UVQ1Iv5/hwEHU4UVQ1Iv5.m3u8$LR•IPV4•115『线路108』
+新闻综合,http://live.hnxttv.com:9601/live/xwzh/800K/tzwj_video.m3u8$LR•IPV4•115『线路109』
+新闻综合,http://stream.bzcm.net/2/sd/live.m3u8$LR•IPV4•115『线路110』
+新闻综合,http://117.156.28.119/270000001111/1110000145/index.m3u8$LR•IPV4•115『线路111』
+新闻综合,https://stream2.jlntv.cn/baishan1/sd/live.m3u8$LR•IPV4•115『线路112』
+新闻综合,http://live1.wuhubtv.com/channel1/sd/live.m3u8$LR•IPV4•115『线路113』
+新闻综合,http://palive.patv123.com:8091/live/xwpd_800K.m3u8$LR•IPV4•115『线路114』
+新闻综合,https://stream2.jlntv.cn/liaoyuan1/sd/live.m3u8$LR•IPV4•115『线路115』
陕西,#genre#
-西安新闻,http://stream2.xiancity.cn/xatv1/playlist.m3u8$LR•IPV4•2『线路1』
-西安新闻,http://112.46.105.20:8009/hls/28/index.m3u8$LR•IPV4•2『线路2』
+西安新闻,http://112.46.105.20:8009/hls/28/index.m3u8$LR•IPV4•2『线路1』
+西安新闻,http://stream2.xiancity.cn/xatv1/playlist.m3u8$LR•IPV4•2『线路2』
山东,#genre#
山东少儿,http://123.129.70.178:9901/tsfile/live/1004_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路1』
@@ -3179,25 +3177,25 @@ NewTV精品体育,http://dl.wifi942.com:66/jsyd/jsyd.php?id=GITV-JS-65$LR•IPV4
凤凰中文,http://120.198.95.220:9901/tsfile/live/1036_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•8『线路3』
凤凰中文,http://218.206.193.218:8888/hls/66/index.m3u8$LR•IPV4•8『线路4』
凤凰中文,http://120.198.95.220:9901/tsfile/live/1036_1.m3u8?key=txiptv$LR•IPV4•8『线路5』
-凤凰中文,http://223.110.245.139/ott.js.chinamobile.com/PLTV/3/224/3221226922/index.m3u8$LR•IPV4•8『线路6』
-凤凰中文,http://r.jdshipin.com/cCCzW$LR•IPV4•8『线路7』
-凤凰中文,http://cdn6.163189.xyz/163189/fhzw$LR•IPV4•8『线路8』
+凤凰中文,http://r.jdshipin.com/cCCzW$LR•IPV4•8『线路6』
+凤凰中文,http://cdn6.163189.xyz/163189/fhzw$LR•IPV4•8『线路7』
+凤凰中文,http://223.110.245.139/ott.js.chinamobile.com/PLTV/3/224/3221226922/index.m3u8$LR•IPV4•8『线路8』
凤凰资讯,http://api.mg.itv888.cn:8080/hls/11ef1dc70d8/index.m3u8$LR•IPV4•10『线路1』
凤凰资讯,http://zmgd.zyrnet.com:8888/hls/109/index.m3u8$LR•IPV4•10『线路2』
凤凰资讯,http://221.7.175.154:8445/tsfile/live/1021_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•10『线路3』
凤凰资讯,http://120.198.95.220:9901/tsfile/live/1037_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•10『线路4』
凤凰资讯,http://120.198.95.220:9901/tsfile/live/1037_1.m3u8?key=txiptv$LR•IPV4•10『线路5』
凤凰资讯,p3p://167.114.175.6:55331/5fffbf860003807cedf4e1016c3c3ed2$LR•IPV4•10『线路6』
-凤凰资讯,http://223.110.245.167/ott.js.chinamobile.com/PLTV/3/224/3221226923/index.m3u8$LR•IPV4•10『线路7』
-凤凰资讯,http://r.jdshipin.com/0Rp07$LR•IPV4•10『线路8』
-凤凰资讯,http://php.jdshipin.com/TVOD/iptv.php?id=fhzx$LR•IPV4•10『线路9』
-凤凰资讯,http://cdn6.163189.xyz/163189/fhzx$LR•IPV4•10『线路10』
+凤凰资讯,http://r.jdshipin.com/0Rp07$LR•IPV4•10『线路7』
+凤凰资讯,http://php.jdshipin.com/TVOD/iptv.php?id=fhzx$LR•IPV4•10『线路8』
+凤凰资讯,http://cdn6.163189.xyz/163189/fhzx$LR•IPV4•10『线路9』
+凤凰资讯,http://223.110.245.167/ott.js.chinamobile.com/PLTV/3/224/3221226923/index.m3u8$LR•IPV4•10『线路10』
凤凰香港,http://122.152.202.33/s/81a8a44f/index.m3u8?id=fhhk$LR•IPV4•6『线路1』
凤凰香港,p3p://167.114.175.6:55331/5fe0b82c000cac9774c17f262e43314d$LR•IPV4•6『线路2』
-凤凰香港,http://223.110.245.136/PLTV/3/224/3221226975/index.m3u8$LR•IPV4•6『线路3』
-凤凰香港,http://r.jdshipin.com/yDoTN$LR•IPV4•6『线路4』
-凤凰香港,http://php.jdshipin.com/TVOD/iptv.php?id=fhhk$LR•IPV4•6『线路5』
-凤凰香港,http://cdn6.163189.xyz/163189/fhhk$LR•IPV4•6『线路6』
+凤凰香港,http://r.jdshipin.com/yDoTN$LR•IPV4•6『线路3』
+凤凰香港,http://php.jdshipin.com/TVOD/iptv.php?id=fhhk$LR•IPV4•6『线路4』
+凤凰香港,http://cdn6.163189.xyz/163189/fhhk$LR•IPV4•6『线路5』
+凤凰香港,http://223.110.245.136/PLTV/3/224/3221226975/index.m3u8$LR•IPV4•6『线路6』
TVB翡翠台,p3p://167.114.175.6:55331/653e4c02000ea0440c8c63fd3e5d709d$LR•IPV4•12『线路1』
TVB翡翠台,p3p://167.114.175.6:55331/66c04cec000a20ac2dbf03c71cf661c9$LR•IPV4•12『线路2』
TVB翡翠台,p3p://108.181.32.169:19673/6533f6560002787f2d01338b57197695$LR•IPV4•12『线路3』
@@ -3247,15 +3245,15 @@ TVBS,http://seb.sason.top/sc/tvbsxw_fhd.m3u8$LR•IPV4•13『线路13』
台视,rtmp://f13h.mine.nu/sat/tv071$LR•IPV4•10『线路6』
台视,p3p://167.114.175.6:55331/612ee2240008f3db8e0578dc59406f9e$LR•IPV4•10『线路7』
台视,p3p://167.114.175.6:55331/6223b571000a13023e78ece5030b5b05$LR•IPV4•10『线路8』
-台视,http://162.19.247.76:22222/live/taishi/index.m3u8$LR•IPV4•10『线路9』
-台视,http://38.64.72.148/hls/modn/list/4013/chunklist1.m3u8$LR•IPV4•10『线路10』
+台视,http://38.64.72.148/hls/modn/list/4013/chunklist1.m3u8$LR•IPV4•10『线路9』
+台视,http://162.19.247.76:22222/live/taishi/index.m3u8$LR•IPV4•10『线路10』
民视新闻,http://38.64.72.148:80/hls/modn/list/4012/chunklist0.m3u8$LR•IPV4•4『线路1』
民视新闻,http://38.64.72.148:80/hls/modn/list/4012/chunklist1.m3u8$LR•IPV4•4『线路2』
民视新闻,http://38.64.72.148/hls/modn/list/4012/chunklist0.m3u8$LR•IPV4•4『线路3』
民视新闻,http://38.64.72.148/hls/modn/list/4012/chunklist1.m3u8$LR•IPV4•4『线路4』
耀才财经,https://v3.mediacast.hk/webcast/bshdlive-pc/playlist.m3u8$LR•IPV4•3『线路1』
-耀才财经,http://202.69.67.66:443/webcast/bshdlive-mobile/playlist.m3u8$LR•IPV4•3『线路2』
-耀才财经,https://v3.mediacast.hk/webcast/bshdlive-pc/chunklist_w99771165.m3u8$LR•IPV4•3『线路3』
+耀才财经,https://v3.mediacast.hk/webcast/bshdlive-pc/chunklist_w99771165.m3u8$LR•IPV4•3『线路2』
+耀才财经,http://202.69.67.66:443/webcast/bshdlive-mobile/playlist.m3u8$LR•IPV4•3『线路3』
美亚C+,http://ottproxy2.ist.ooo/livehls/MOB-U1-NO/03.m3u8$LR•IPV4•3『线路1』
美亚C+,http://ottproxy2.ist.ooo/livehls/MOB-U1-NO/01.m3u8$LR•IPV4•3『线路2』
美亚C+,http://ottproxy2.ist.ooo/livehls/MOB-U1-NO/02.m3u8$LR•IPV4•3『线路3』
@@ -3560,8 +3558,8 @@ KPop,https://ads.its-newid.net/api/manifest.m3u8?ads.service_id=USAJ3000013FJ&ch
KPop,https://ads.its-newid.net/api/manifest.m3u8?ads.service_id=GB17000088V&channel_id=newid_086&tp=samsung_tvplus$LR•IPV4•5『线路4』
KPop,https://lotus.stingray.com/manifest/ose-317ads-montreal/samsungtvplus/master.m3u8$LR•IPV4•5『线路5』
HOY TV,p3p://167.114.175.6:55331/62184bc3000cd48f11e47b06202b7e18$LR•IPV4•3『线路1』
-HOY TV,https://hoytv-live-stream.hoy.tv/ch77/index.m3u8$LR•IPV4•3『线路2』
-HOY TV,http://php.jdshipin.com/TVOD/iptv.php?id=hoytv$LR•IPV4•3『线路3』
+HOY TV,http://php.jdshipin.com/TVOD/iptv.php?id=hoytv$LR•IPV4•3『线路2』
+HOY TV,https://hoytv-live-stream.hoy.tv/ch77/index.m3u8$LR•IPV4•3『线路3』
MOMOTV,rtmp://f13h.mine.nu/sat/tv761$LR•IPV4
大爱1,p3p://167.114.175.6:55331/63ed9fff00076875e972c31c79f4152e$LR•IPV4
大爱2,p3p://167.114.175.6:55331/63eda04a0001f6fae973e6a334696980$LR•IPV4
diff --git a/cluntop_tvbox/lib/iptv_test.m3u b/cluntop_tvbox/lib/iptv_test.m3u
index e1427117..5f85a5dc 100755
--- a/cluntop_tvbox/lib/iptv_test.m3u
+++ b/cluntop_tvbox/lib/iptv_test.m3u
@@ -2,7 +2,7 @@
#EXTINF:-1 tvg-id="CCTV4K" tvg-name="CCTV4K" group-title="央视频道",CCTV-4K
https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784358000-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-c0b2f705841d49d821e3075961bb6e84&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•3『线路1』
#EXTINF:-1 tvg-id="CCTV4K" tvg-name="CCTV4K" group-title="央视频道",CCTV-4K
-https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784361600-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-dbc4b9704792e97da2c65aeed2033e45&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•3『线路2』
+https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784371500-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-48ffc61db508f8062cc67caddde58d68&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•3『线路2』
#EXTINF:-1 tvg-id="CCTV4K" tvg-name="CCTV4K" group-title="央视频道",CCTV-4K
http://198.204.240.250:82/live/cctv4k.m3u8$LR•IPV4•3『线路3』
#EXTINF:-1 tvg-id="象山综合" tvg-name="象山综合" group-title="浙江频道",象山综合
@@ -774,11 +774,11 @@ http://218.206.193.218:8888/hls/66/index.m3u8$LR•IPV4•8『线路4』
#EXTINF:-1 tvg-id="凤凰卫视中文台" tvg-name="凤凰卫视中文台" group-title="港澳台",凤凰卫视中文台
http://120.198.95.220:9901/tsfile/live/1036_1.m3u8?key=txiptv$LR•IPV4•8『线路5』
#EXTINF:-1 tvg-id="凤凰卫视中文台" tvg-name="凤凰卫视中文台" group-title="港澳台",凤凰卫视中文台
-http://223.110.245.139/ott.js.chinamobile.com/PLTV/3/224/3221226922/index.m3u8$LR•IPV4•8『线路6』
+http://r.jdshipin.com/cCCzW$LR•IPV4•8『线路6』
#EXTINF:-1 tvg-id="凤凰卫视中文台" tvg-name="凤凰卫视中文台" group-title="港澳台",凤凰卫视中文台
-http://r.jdshipin.com/cCCzW$LR•IPV4•8『线路7』
+http://cdn6.163189.xyz/163189/fhzw$LR•IPV4•8『线路7』
#EXTINF:-1 tvg-id="凤凰卫视中文台" tvg-name="凤凰卫视中文台" group-title="港澳台",凤凰卫视中文台
-http://cdn6.163189.xyz/163189/fhzw$LR•IPV4•8『线路8』
+http://223.110.245.139/ott.js.chinamobile.com/PLTV/3/224/3221226922/index.m3u8$LR•IPV4•8『线路8』
#EXTINF:-1 tvg-id="凤凰卫视资讯台" tvg-name="凤凰卫视资讯台" group-title="港澳台",凤凰卫视资讯台
http://api.mg.itv888.cn:8080/hls/11ef1dc70d8/index.m3u8$LR•IPV4•10『线路1』
#EXTINF:-1 tvg-id="凤凰卫视资讯台" tvg-name="凤凰卫视资讯台" group-title="港澳台",凤凰卫视资讯台
@@ -792,25 +792,25 @@ http://120.198.95.220:9901/tsfile/live/1037_1.m3u8?key=txiptv$LR•IPV4•10『
#EXTINF:-1 tvg-id="凤凰卫视资讯台" tvg-name="凤凰卫视资讯台" group-title="港澳台",凤凰卫视资讯台
p3p://167.114.175.6:55331/5fffbf860003807cedf4e1016c3c3ed2$LR•IPV4•10『线路6』
#EXTINF:-1 tvg-id="凤凰卫视资讯台" tvg-name="凤凰卫视资讯台" group-title="港澳台",凤凰卫视资讯台
-http://223.110.245.167/ott.js.chinamobile.com/PLTV/3/224/3221226923/index.m3u8$LR•IPV4•10『线路7』
+http://r.jdshipin.com/0Rp07$LR•IPV4•10『线路7』
#EXTINF:-1 tvg-id="凤凰卫视资讯台" tvg-name="凤凰卫视资讯台" group-title="港澳台",凤凰卫视资讯台
-http://r.jdshipin.com/0Rp07$LR•IPV4•10『线路8』
+http://php.jdshipin.com/TVOD/iptv.php?id=fhzx$LR•IPV4•10『线路8』
#EXTINF:-1 tvg-id="凤凰卫视资讯台" tvg-name="凤凰卫视资讯台" group-title="港澳台",凤凰卫视资讯台
-http://php.jdshipin.com/TVOD/iptv.php?id=fhzx$LR•IPV4•10『线路9』
+http://cdn6.163189.xyz/163189/fhzx$LR•IPV4•10『线路9』
#EXTINF:-1 tvg-id="凤凰卫视资讯台" tvg-name="凤凰卫视资讯台" group-title="港澳台",凤凰卫视资讯台
-http://cdn6.163189.xyz/163189/fhzx$LR•IPV4•10『线路10』
+http://223.110.245.167/ott.js.chinamobile.com/PLTV/3/224/3221226923/index.m3u8$LR•IPV4•10『线路10』
#EXTINF:-1 tvg-id="凤凰卫视香港台" tvg-name="凤凰卫视香港台" group-title="港澳台",凤凰卫视香港台
http://122.152.202.33/s/81a8a44f/index.m3u8?id=fhhk$LR•IPV4•6『线路1』
#EXTINF:-1 tvg-id="凤凰卫视香港台" tvg-name="凤凰卫视香港台" group-title="港澳台",凤凰卫视香港台
p3p://167.114.175.6:55331/5fe0b82c000cac9774c17f262e43314d$LR•IPV4•6『线路2』
#EXTINF:-1 tvg-id="凤凰卫视香港台" tvg-name="凤凰卫视香港台" group-title="港澳台",凤凰卫视香港台
-http://223.110.245.136/PLTV/3/224/3221226975/index.m3u8$LR•IPV4•6『线路3』
+http://r.jdshipin.com/yDoTN$LR•IPV4•6『线路3』
#EXTINF:-1 tvg-id="凤凰卫视香港台" tvg-name="凤凰卫视香港台" group-title="港澳台",凤凰卫视香港台
-http://r.jdshipin.com/yDoTN$LR•IPV4•6『线路4』
+http://php.jdshipin.com/TVOD/iptv.php?id=fhhk$LR•IPV4•6『线路4』
#EXTINF:-1 tvg-id="凤凰卫视香港台" tvg-name="凤凰卫视香港台" group-title="港澳台",凤凰卫视香港台
-http://php.jdshipin.com/TVOD/iptv.php?id=fhhk$LR•IPV4•6『线路5』
+http://cdn6.163189.xyz/163189/fhhk$LR•IPV4•6『线路5』
#EXTINF:-1 tvg-id="凤凰卫视香港台" tvg-name="凤凰卫视香港台" group-title="港澳台",凤凰卫视香港台
-http://cdn6.163189.xyz/163189/fhhk$LR•IPV4•6『线路6』
+http://223.110.245.136/PLTV/3/224/3221226975/index.m3u8$LR•IPV4•6『线路6』
#EXTINF:-1 tvg-id="台视新闻" tvg-name="台视新闻" group-title="港澳台",台视新闻
http://38.64.72.148:80/hls/modn/list/4013/chunklist0.m3u8$LR•IPV4•4『线路1』
#EXTINF:-1 tvg-id="台视新闻" tvg-name="台视新闻" group-title="港澳台",台视新闻
@@ -3010,7 +3010,7 @@ https://ali-m-l.cztv.com/channels/lantian/channel012/1080p.m3u8$LR•IPV4•41
#EXTINF:-1 tvg-id="纪录" tvg-name="纪录" group-title="💓优质个源",纪录
https://ali-m-l.cztv.com/channels/lantian/channel12/720p.m3u8$LR•IPV4•41『线路3』
#EXTINF:-1 tvg-id="纪录" tvg-name="纪录" group-title="💓优质个源",纪录
-https://v4-702cae17a28d6e4f0c0002bba021d934.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=db97ec06b982224fd6b00b7bb1f6143c$LR•IPV4•41『线路4』
+https://v4-702cae17a28d6e4f0c0002bba021d934.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=17294e1ca3c39692f88722ff53cecd2a$LR•IPV4•41『线路4』
#EXTINF:-1 tvg-id="纪录" tvg-name="纪录" group-title="💓优质个源",纪录
http://free.cnlive.club/channel/n3f497a4c/index.m3u8?q=1752629214236$LR•IPV4•41『线路5』
#EXTINF:-1 tvg-id="纪录" tvg-name="纪录" group-title="💓优质个源",纪录
@@ -3712,7 +3712,7 @@ https://shcm-stream-cf1.stream.264788.xyz/cms001/ch00000090990000001620/index.m3
#EXTINF:-1 tvg-id="CCTV" tvg-name="CCTV" group-title="🌐央视频道",CCTV
https://epg.pw/stream/ac8062ec9484078061d3bef507c15a423ac57ae4144e3fcc4b0a198dd420f911.m3u8$LR•IPV4•90『线路52』
#EXTINF:-1 tvg-id="CCTV" tvg-name="CCTV" group-title="🌐央视频道",CCTV
-https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784361600-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-e246d8a5986fffcd5d21d25acc7aca83&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•90『线路53』
+https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784371500-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-bb4241b14453c4f49bd0749a3aab3caf&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•90『线路53』
#EXTINF:-1 tvg-id="CCTV" tvg-name="CCTV" group-title="🌐央视频道",CCTV
http://183.196.25.171:808/hls/77/index.m3u8$LR•IPV4•90『线路54』
#EXTINF:-1 tvg-id="CCTV" tvg-name="CCTV" group-title="🌐央视频道",CCTV
@@ -3790,9 +3790,9 @@ https://xykt-fix.github.io/Y77.m3u8$LR•IPV4•90『线路90』
#EXTINF:-1 tvg-id="梁家辉" tvg-name="梁家辉" group-title="明星",梁家辉
http://live.metshop.top/huya/11342429?cdn=alicdn$LR•IPV4
#EXTINF:-1 tvg-id="刘德华" tvg-name="刘德华" group-title="明星",刘德华
-http://epg.112114.xyz/douyu/2516864$LR•IPV4•2『线路1』
+http://live.metshop.top/huya/11342424?cdn=alicdn$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="刘德华" tvg-name="刘德华" group-title="明星",刘德华
-http://live.metshop.top/huya/11342424?cdn=alicdn$LR•IPV4•2『线路2』
+http://epg.112114.xyz/douyu/2516864$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="林正英" tvg-name="林正英" group-title="明星",林正英
http://zzy789.xyz/douyu1.php?id=7356023$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="林正英" tvg-name="林正英" group-title="明星",林正英
@@ -4722,41 +4722,39 @@ http://ali-m-l.cztv.com/channels/lantian/channel009/1080p.m3u8$LR•IPV4•2『
#EXTINF:-1 tvg-id="中国蓝新闻" tvg-name="中国蓝新闻" group-title="浙江",中国蓝新闻
https://ali-m-l.cztv.com/channels/lantian/channel009/1080p.m3u8?$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•18『线路1』
+http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•17『线路1』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•18『线路2』
+http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•17『线路2』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv$LR•IPV4•18『线路3』
+http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv$LR•IPV4•17『线路3』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://173.208.212.130:8181/720p/szws.m3u8$LR•IPV4•18『线路4』
+http://173.208.212.130:8181/720p/szws.m3u8$LR•IPV4•17『线路4』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://192.151.150.154/live/szwshd.m3u8$LR•IPV4•18『线路5』
+http://192.151.150.154/live/szwshd.m3u8$LR•IPV4•17『线路5』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://124.228.160.210:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路6』
+http://124.228.160.210:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路6』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://36.136.38.87:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路7』
+http://36.136.38.87:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路7』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://183.11.239.36:808/hls/45/index.m3u8$LR•IPV4•18『线路8』
+http://183.11.239.36:808/hls/45/index.m3u8$LR•IPV4•17『线路8』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-https://sztv-hls.sztv.com.cn/AxeFRth/500/q37Age0.m3u8?sign=671fcd3c133f66cef04a83ae0b8c542b&t=6a59189c$LR•IPV4•18『线路9』
+http://38.75.136.137:98/gslb/dsdqpub/szwshd.m3u8?auth=testpub$LR•IPV4•17『线路9』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://38.75.136.137:98/gslb/dsdqpub/szwshd.m3u8?auth=testpub$LR•IPV4•18『线路10』
+http://23.237.228.134/live6/shenzhen.m3u8$LR•IPV4•17『线路10』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://23.237.228.134/live6/shenzhen.m3u8$LR•IPV4•18『线路11』
+http://gfr.x3322.net:9901/tsfile/live/1095_1.m3u8$LR•IPV4•17『线路11』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://gfr.x3322.net:9901/tsfile/live/1095_1.m3u8$LR•IPV4•18『线路12』
+http://api.kkitv.itv888.cn:8080/hls/iftsd32ykm/index.m3u8$LR•IPV4•17『线路12』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://api.kkitv.itv888.cn:8080/hls/iftsd32ykm/index.m3u8$LR•IPV4•18『线路13』
+https://iptv.catvod.com/catvod.php?id=szws$LR•IPV4•17『线路13』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-https://iptv.catvod.com/catvod.php?id=szws$LR•IPV4•18『线路14』
+https://httop.top/ysp-深圳卫视$LR•IPV4•17『线路14』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-https://httop.top/ysp-深圳卫视$LR•IPV4•18『线路15』
+http://iptv.huuc.edu.cn/hls/szhd.m3u8$LR•IPV4•17『线路15』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://iptv.huuc.edu.cn/hls/szhd.m3u8$LR•IPV4•18『线路16』
+http://153.0.171.163:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路16』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://153.0.171.163:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路17』
-#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://38.64.72.148:80/hls/modn/list/4007/playlist.m3u8$LR•IPV4•18『线路18』
+http://38.64.72.148:80/hls/modn/list/4007/playlist.m3u8$LR•IPV4•17『线路17』
#EXTINF:-1 tvg-id="汕头经济" tvg-name="汕头经济" group-title="广东",汕头经济
https://stream1.freetv.fun/shan-tou-jing-ji-2.ctv$LR•IPV4•11『线路1』
#EXTINF:-1 tvg-id="汕头经济" tvg-name="汕头经济" group-title="广东",汕头经济
diff --git a/cluntop_tvbox/lib/iptv_test.txt b/cluntop_tvbox/lib/iptv_test.txt
index 985f6c1c..f87bea00 100755
--- a/cluntop_tvbox/lib/iptv_test.txt
+++ b/cluntop_tvbox/lib/iptv_test.txt
@@ -1,7 +1,7 @@
央视频道,#genre#
CCTV-4K,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784358000-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-c0b2f705841d49d821e3075961bb6e84&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•3『线路1』
-CCTV-4K,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784361600-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-dbc4b9704792e97da2c65aeed2033e45&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•3『线路2』
+CCTV-4K,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784371500-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-48ffc61db508f8062cc67caddde58d68&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•3『线路2』
CCTV-4K,http://198.204.240.250:82/live/cctv4k.m3u8$LR•IPV4•3『线路3』
浙江频道,#genre#
@@ -433,25 +433,25 @@ Now星影,p3p://167.114.175.6:55331/65bf5e010005226704b84f4f048a4148$LR•IPV4
凤凰卫视中文台,http://120.198.95.220:9901/tsfile/live/1036_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•8『线路3』
凤凰卫视中文台,http://218.206.193.218:8888/hls/66/index.m3u8$LR•IPV4•8『线路4』
凤凰卫视中文台,http://120.198.95.220:9901/tsfile/live/1036_1.m3u8?key=txiptv$LR•IPV4•8『线路5』
-凤凰卫视中文台,http://223.110.245.139/ott.js.chinamobile.com/PLTV/3/224/3221226922/index.m3u8$LR•IPV4•8『线路6』
-凤凰卫视中文台,http://r.jdshipin.com/cCCzW$LR•IPV4•8『线路7』
-凤凰卫视中文台,http://cdn6.163189.xyz/163189/fhzw$LR•IPV4•8『线路8』
+凤凰卫视中文台,http://r.jdshipin.com/cCCzW$LR•IPV4•8『线路6』
+凤凰卫视中文台,http://cdn6.163189.xyz/163189/fhzw$LR•IPV4•8『线路7』
+凤凰卫视中文台,http://223.110.245.139/ott.js.chinamobile.com/PLTV/3/224/3221226922/index.m3u8$LR•IPV4•8『线路8』
凤凰卫视资讯台,http://api.mg.itv888.cn:8080/hls/11ef1dc70d8/index.m3u8$LR•IPV4•10『线路1』
凤凰卫视资讯台,http://zmgd.zyrnet.com:8888/hls/109/index.m3u8$LR•IPV4•10『线路2』
凤凰卫视资讯台,http://221.7.175.154:8445/tsfile/live/1021_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•10『线路3』
凤凰卫视资讯台,http://120.198.95.220:9901/tsfile/live/1037_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•10『线路4』
凤凰卫视资讯台,http://120.198.95.220:9901/tsfile/live/1037_1.m3u8?key=txiptv$LR•IPV4•10『线路5』
凤凰卫视资讯台,p3p://167.114.175.6:55331/5fffbf860003807cedf4e1016c3c3ed2$LR•IPV4•10『线路6』
-凤凰卫视资讯台,http://223.110.245.167/ott.js.chinamobile.com/PLTV/3/224/3221226923/index.m3u8$LR•IPV4•10『线路7』
-凤凰卫视资讯台,http://r.jdshipin.com/0Rp07$LR•IPV4•10『线路8』
-凤凰卫视资讯台,http://php.jdshipin.com/TVOD/iptv.php?id=fhzx$LR•IPV4•10『线路9』
-凤凰卫视资讯台,http://cdn6.163189.xyz/163189/fhzx$LR•IPV4•10『线路10』
+凤凰卫视资讯台,http://r.jdshipin.com/0Rp07$LR•IPV4•10『线路7』
+凤凰卫视资讯台,http://php.jdshipin.com/TVOD/iptv.php?id=fhzx$LR•IPV4•10『线路8』
+凤凰卫视资讯台,http://cdn6.163189.xyz/163189/fhzx$LR•IPV4•10『线路9』
+凤凰卫视资讯台,http://223.110.245.167/ott.js.chinamobile.com/PLTV/3/224/3221226923/index.m3u8$LR•IPV4•10『线路10』
凤凰卫视香港台,http://122.152.202.33/s/81a8a44f/index.m3u8?id=fhhk$LR•IPV4•6『线路1』
凤凰卫视香港台,p3p://167.114.175.6:55331/5fe0b82c000cac9774c17f262e43314d$LR•IPV4•6『线路2』
-凤凰卫视香港台,http://223.110.245.136/PLTV/3/224/3221226975/index.m3u8$LR•IPV4•6『线路3』
-凤凰卫视香港台,http://r.jdshipin.com/yDoTN$LR•IPV4•6『线路4』
-凤凰卫视香港台,http://php.jdshipin.com/TVOD/iptv.php?id=fhhk$LR•IPV4•6『线路5』
-凤凰卫视香港台,http://cdn6.163189.xyz/163189/fhhk$LR•IPV4•6『线路6』
+凤凰卫视香港台,http://r.jdshipin.com/yDoTN$LR•IPV4•6『线路3』
+凤凰卫视香港台,http://php.jdshipin.com/TVOD/iptv.php?id=fhhk$LR•IPV4•6『线路4』
+凤凰卫视香港台,http://cdn6.163189.xyz/163189/fhhk$LR•IPV4•6『线路5』
+凤凰卫视香港台,http://223.110.245.136/PLTV/3/224/3221226975/index.m3u8$LR•IPV4•6『线路6』
台视新闻,http://38.64.72.148:80/hls/modn/list/4013/chunklist0.m3u8$LR•IPV4•4『线路1』
台视新闻,http://38.64.72.148:80/hls/modn/list/4013/chunklist1.m3u8$LR•IPV4•4『线路2』
台视新闻,http://38.64.72.148/hls/modn/list/4013/chunklist0.m3u8$LR•IPV4•4『线路3』
@@ -1633,7 +1633,7 @@ XXXXXXXXX粤,http://lxajh.top/tv/douyu.php?id=8912325$LR•IPV4
纪录,https://v4-e6b1c5baf4e240fe63adbf68dda23435.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=8a60541ebe4d355d0da6b086b9f2026d$LR•IPV4•41『线路1』
纪录,https://ali-m-l.cztv.com/channels/lantian/channel012/1080p.m3u8$LR•IPV4•41『线路2』
纪录,https://ali-m-l.cztv.com/channels/lantian/channel12/720p.m3u8$LR•IPV4•41『线路3』
-纪录,https://v4-702cae17a28d6e4f0c0002bba021d934.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=db97ec06b982224fd6b00b7bb1f6143c$LR•IPV4•41『线路4』
+纪录,https://v4-702cae17a28d6e4f0c0002bba021d934.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=17294e1ca3c39692f88722ff53cecd2a$LR•IPV4•41『线路4』
纪录,http://free.cnlive.club/channel/n3f497a4c/index.m3u8?q=1752629214236$LR•IPV4•41『线路5』
纪录,http://free.cnlive.club/channel/2ae73b1a/index.m3u8?q=1752629214236$LR•IPV4•41『线路6』
纪录,http://free.cnlive.club/channel/nb957a7c/index.m3u8?q=1752629214236$LR•IPV4•41『线路7』
@@ -1998,7 +1998,7 @@ CCTV,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?
CCTV,https://jsv-live-play.sfccn.com/live/jsv_3920_fhd.m3u8$LR•IPV4•90『线路50』
CCTV,https://shcm-stream-cf1.stream.264788.xyz/cms001/ch00000090990000001620/index.m3u8?streamid=8a034b40397504e25b3775c772237996&streamkey=01vY5fRxC8VyKg4oq30vfikHXTCAKySLP29l6OG91kQlzDttHgzNLkUw5kivm3PfNsVHJv5FgdsPBYFYI2IWpt7tfRCuFHqLT2pvX67ubMds8jl2DHtvOh0&token=1775754349-4f33f4f84a4abeba-0-91687dc8c9325092efa1d00f330d2710$LR•IPV4•90『线路51』
CCTV,https://epg.pw/stream/ac8062ec9484078061d3bef507c15a423ac57ae4144e3fcc4b0a198dd420f911.m3u8$LR•IPV4•90『线路52』
-CCTV,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784361600-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-e246d8a5986fffcd5d21d25acc7aca83&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•90『线路53』
+CCTV,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784371500-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-bb4241b14453c4f49bd0749a3aab3caf&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•90『线路53』
CCTV,http://183.196.25.171:808/hls/77/index.m3u8$LR•IPV4•90『线路54』
CCTV,http://183.196.25.171:808/hls/11/index.m3u8$LR•IPV4•90『线路55』
CCTV,http://183.196.25.171:808/hls/93/index.m3u8$LR•IPV4•90『线路56』
@@ -2039,8 +2039,8 @@ CCTV,https://xykt-fix.github.io/Y77.m3u8$LR•IPV4•90『线路90』
明星,#genre#
梁家辉,http://live.metshop.top/huya/11342429?cdn=alicdn$LR•IPV4
-刘德华,http://epg.112114.xyz/douyu/2516864$LR•IPV4•2『线路1』
-刘德华,http://live.metshop.top/huya/11342424?cdn=alicdn$LR•IPV4•2『线路2』
+刘德华,http://live.metshop.top/huya/11342424?cdn=alicdn$LR•IPV4•2『线路1』
+刘德华,http://epg.112114.xyz/douyu/2516864$LR•IPV4•2『线路2』
林正英,http://zzy789.xyz/douyu1.php?id=7356023$LR•IPV4•2『线路1』
林正英,http://epg.112114.xyz/douyu/218859$LR•IPV4•2『线路2』
@@ -2523,24 +2523,23 @@ YOUNG,https://s.emisoras.tv:8081/penielkids/index.m3u8$LR•IPV4•3『线路3
中国蓝新闻,https://ali-m-l.cztv.com/channels/lantian/channel009/1080p.m3u8?$LR•IPV4•2『线路2』
广东,#genre#
-深圳卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•18『线路1』
-深圳卫视,http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•18『线路2』
-深圳卫视,http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv$LR•IPV4•18『线路3』
-深圳卫视,http://173.208.212.130:8181/720p/szws.m3u8$LR•IPV4•18『线路4』
-深圳卫视,http://192.151.150.154/live/szwshd.m3u8$LR•IPV4•18『线路5』
-深圳卫视,http://124.228.160.210:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路6』
-深圳卫视,http://36.136.38.87:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路7』
-深圳卫视,http://183.11.239.36:808/hls/45/index.m3u8$LR•IPV4•18『线路8』
-深圳卫视,https://sztv-hls.sztv.com.cn/AxeFRth/500/q37Age0.m3u8?sign=671fcd3c133f66cef04a83ae0b8c542b&t=6a59189c$LR•IPV4•18『线路9』
-深圳卫视,http://38.75.136.137:98/gslb/dsdqpub/szwshd.m3u8?auth=testpub$LR•IPV4•18『线路10』
-深圳卫视,http://23.237.228.134/live6/shenzhen.m3u8$LR•IPV4•18『线路11』
-深圳卫视,http://gfr.x3322.net:9901/tsfile/live/1095_1.m3u8$LR•IPV4•18『线路12』
-深圳卫视,http://api.kkitv.itv888.cn:8080/hls/iftsd32ykm/index.m3u8$LR•IPV4•18『线路13』
-深圳卫视,https://iptv.catvod.com/catvod.php?id=szws$LR•IPV4•18『线路14』
-深圳卫视,https://httop.top/ysp-深圳卫视$LR•IPV4•18『线路15』
-深圳卫视,http://iptv.huuc.edu.cn/hls/szhd.m3u8$LR•IPV4•18『线路16』
-深圳卫视,http://153.0.171.163:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路17』
-深圳卫视,http://38.64.72.148:80/hls/modn/list/4007/playlist.m3u8$LR•IPV4•18『线路18』
+深圳卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•17『线路1』
+深圳卫视,http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•17『线路2』
+深圳卫视,http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv$LR•IPV4•17『线路3』
+深圳卫视,http://173.208.212.130:8181/720p/szws.m3u8$LR•IPV4•17『线路4』
+深圳卫视,http://192.151.150.154/live/szwshd.m3u8$LR•IPV4•17『线路5』
+深圳卫视,http://124.228.160.210:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路6』
+深圳卫视,http://36.136.38.87:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路7』
+深圳卫视,http://183.11.239.36:808/hls/45/index.m3u8$LR•IPV4•17『线路8』
+深圳卫视,http://38.75.136.137:98/gslb/dsdqpub/szwshd.m3u8?auth=testpub$LR•IPV4•17『线路9』
+深圳卫视,http://23.237.228.134/live6/shenzhen.m3u8$LR•IPV4•17『线路10』
+深圳卫视,http://gfr.x3322.net:9901/tsfile/live/1095_1.m3u8$LR•IPV4•17『线路11』
+深圳卫视,http://api.kkitv.itv888.cn:8080/hls/iftsd32ykm/index.m3u8$LR•IPV4•17『线路12』
+深圳卫视,https://iptv.catvod.com/catvod.php?id=szws$LR•IPV4•17『线路13』
+深圳卫视,https://httop.top/ysp-深圳卫视$LR•IPV4•17『线路14』
+深圳卫视,http://iptv.huuc.edu.cn/hls/szhd.m3u8$LR•IPV4•17『线路15』
+深圳卫视,http://153.0.171.163:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路16』
+深圳卫视,http://38.64.72.148:80/hls/modn/list/4007/playlist.m3u8$LR•IPV4•17『线路17』
汕头经济,https://stream1.freetv.fun/shan-tou-jing-ji-2.ctv$LR•IPV4•11『线路1』
汕头经济,https://stream1.freetv.fun/shan-tou-jing-ji-3.ctv$LR•IPV4•11『线路2』
汕头经济,https://stream1.freetv.fun/shan-tou-jing-ji-5.ctv$LR•IPV4•11『线路3』
diff --git a/cluntop_tvbox/lib/sing-box.tar.xz b/cluntop_tvbox/lib/sing-box.tar.xz
index 0d77f149..854f8dab 100755
Binary files a/cluntop_tvbox/lib/sing-box.tar.xz and b/cluntop_tvbox/lib/sing-box.tar.xz differ
diff --git a/cluntop_tvbox/lib/sing-box.tar.xz.md5 b/cluntop_tvbox/lib/sing-box.tar.xz.md5
index 6c5c0a8e..8f068f44 100644
--- a/cluntop_tvbox/lib/sing-box.tar.xz.md5
+++ b/cluntop_tvbox/lib/sing-box.tar.xz.md5
@@ -1 +1 @@
-42df056144fa4e08ea39b624be4cd477
+012e78d91f15a374e5fe5361042336ac
\ No newline at end of file
diff --git a/cluntop_tvbox/lib/singbox.json b/cluntop_tvbox/lib/singbox.json
index f1598bdc..3227f349 100755
--- a/cluntop_tvbox/lib/singbox.json
+++ b/cluntop_tvbox/lib/singbox.json
@@ -6,31 +6,24 @@
"dns": {
"servers": [
{
+ "type": "https",
"tag": "remote",
- "address": "https://8.8.8.8/dns-query",
- "strategy": "prefer_ipv4",
+ "server": "8.8.8.8",
"detour": "select"
},
{
+ "type": "https",
"tag": "local",
- "address": "https://223.5.5.5/dns-query",
- "strategy": "prefer_ipv4",
- "detour": "direct"
- },
- {
- "tag": "block",
- "address": "rcode://success"
+ "server": "223.5.5.5"
},
{
+ "type": "fakeip",
"tag": "fakeip",
- "address": "fakeip"
+ "inet4_range": "198.18.0.0/15",
+ "inet6_range": "fc00::/18"
}
],
"rules": [
- {
- "outbound": ["any"],
- "server": "local"
- },
{
"clash_mode": "Global",
"server": "remote"
@@ -38,13 +31,16 @@
{
"clash_mode": "Direct",
"server": "local"
+ },
+ {
+ "query_type": [
+ "A",
+ "AAAA"
+ ],
+ "server": "fakeip",
+ "rewrite_ttl": 1
}
],
- "fakeip": {
- "enabled": true,
- "inet4_range": "198.18.0.0/15",
- "inet6_range": "fc00::/18"
- },
"strategy": "prefer_ipv4",
"independent_cache": true,
"reverse_mapping": true
@@ -55,10 +51,7 @@
"tag": "mixed-in",
"listen": "0.0.0.0",
"listen_port": 10172,
- "tcp_fast_open":true,
- "sniff": false,
- "sniff_override_destination": false,
- "domain_strategy": "prefer_ipv4",
+ "tcp_fast_open": true,
"set_system_proxy": false
},
{
@@ -66,20 +59,14 @@
"tag": "socks-in",
"listen": "0.0.0.0",
"listen_port": 10173,
- "tcp_fast_open":true,
- "sniff": false,
- "sniff_override_destination": false,
- "domain_strategy": "prefer_ipv4"
+ "tcp_fast_open": true
},
{
"type": "mixed",
"tag": "mixed-in2",
"listen": "0.0.0.0",
"listen_port": 10174,
- "tcp_fast_open":true,
- "sniff": false,
- "sniff_override_destination": false,
- "domain_strategy": "prefer_ipv4",
+ "tcp_fast_open": true,
"set_system_proxy": false
},
{
@@ -87,10 +74,7 @@
"tag": "mixed-in3",
"listen": "0.0.0.0",
"listen_port": 10175,
- "tcp_fast_open":true,
- "sniff": false,
- "sniff_override_destination": false,
- "domain_strategy": "prefer_ipv4",
+ "tcp_fast_open": true,
"set_system_proxy": false
}
],
@@ -114,18 +98,13 @@
{
"type": "direct",
"tag": "direct"
- },
- {
- "type": "block",
- "tag": "block"
- },
- {
- "type": "dns",
- "tag": "dns-out"
}
],
"route": {
"rules": [
+ {
+ "action": "sniff"
+ },
{
"type": "logical",
"mode": "or",
@@ -137,23 +116,33 @@
"port": 53
}
],
- "outbound": "dns-out"
+ "action": "hijack-dns"
+ },
+ {
+ "inbound": [
+ "mixed-in",
+ "socks-in",
+ "mixed-in2",
+ "mixed-in3"
+ ],
+ "action": "resolve",
+ "strategy": "prefer_ipv4"
},
{
"ip_is_private": true,
"outbound": "direct"
},
{
- "inbound":[
- "mixed-in2"
- ],
- "outbound":"select2"
+ "inbound": [
+ "mixed-in2"
+ ],
+ "outbound": "select2"
},
{
- "inbound":[
- "mixed-in3"
- ],
- "outbound":"select3"
+ "inbound": [
+ "mixed-in3"
+ ],
+ "outbound": "select3"
},
{
"clash_mode": "Direct",
@@ -178,10 +167,14 @@
"protocol": "stun"
}
],
- "outbound": "block"
+ "action": "reject"
}
],
- "auto_detect_interface": false
+ "auto_detect_interface": false,
+ "default_domain_resolver": {
+ "server": "local",
+ "strategy": "prefer_ipv4"
+ }
},
"experimental": {
"cache_file": {
@@ -197,4 +190,3 @@
}
}
}
-
diff --git a/cluntop_tvbox/lib/youtube.json b/cluntop_tvbox/lib/youtube.json
index 3a57687a..fb662790 100755
--- a/cluntop_tvbox/lib/youtube.json
+++ b/cluntop_tvbox/lib/youtube.json
@@ -1,4766 +1,1244 @@
{
- "recommend": "LIST:最新|推薦,官方頻道",
- "class": [
+ "recommend":"LIST:最新|推薦,官方頻道",
+ "class":[
{
- "type_id": "新聞",
- "type_name": "新闻"
+ "type_id":"LIST:王志安 @wangzhian,老高與小茉 @laogao,脑洞乌托邦 @NDWTB,自说自话的总裁 @STBoss,纪实说 @C-Documentary,老肉雜談 @老肉雜談,李永樂老師 @TchLiyongle,滇西小哥 @dianxixiaoge,李子柒 Liziqi @cnliziqi,老饭骨 @LaoFanGu,小高姐的 Magic Ingredients @MagicIngredients,小穎美食 @XiaoYingFood,primitivetechnology9550 @primitivetechnology9550,Mr Beast@MrBeast,Airforceproud95 @Airforceproud95,TheGreatWar @TheGreatWar,Mark Rober @MarkRober,不良林,涌哥侃侃 @ygkkk,悟空的日常",
+ "type_name":"自媒體"
},
{
- "type_id": "战情室",
- "type_name": "栏目"
+ "type_id":"LIST:HDR,Girls HDR,Landscape HDR,Walk HDR",
+ "type_name":"HDR"
},
{
- "type_id": "个人频道",
- "type_name": "频道"
+ "type_id":"LIST:华语音乐,华语MV,点击率最高",
+ "type_name":"音樂"
},
{
- "type_id": "音樂",
- "type_name": "音乐"
+ "type_id":"LIST:综艺,芒果综艺,腾讯综艺,爱奇艺综艺,优酷综艺,卫视综艺",
+ "type_name":"綜藝"
},
{
- "type_id": "短劇",
- "type_name": "短剧"
+ "type_id":"LIST:紀錄片,历史纪录片,自然纪录片,宇宙纪录片",
+ "type_name":"紀錄片"
},
{
- "type_id": "HDR",
- "type_name": "HDR"
+ "type_id":"LIST:新闻 Live,体育直播,赛事直播",
+ "type_name":"新聞直播"
},
{
- "type_id": "4K",
- "type_name": "4K"
+ "type_id":"短劇",
+ "type_name":"短劇"
},
{
- "type_id": "放松",
- "type_name": "放松"
+ "type_id":"LIST:剧集,腾讯剧集,爱奇艺剧集,优酷剧集,芒果剧集,TVB",
+ "type_name":"劇集"
},
{
- "type_id": "時尚",
- "type_name": "時尚"
+ "type_id":"電影",
+ "type_name":"電影"
},
{
- "type_id": "紀錄",
- "type_name": "纪录"
+ "type_id":"體育",
+ "type_name":"體育"
},
{
- "type_id": "劇集",
- "type_name": "剧集"
+ "type_id":"時尚潮流",
+ "type_name":"時尚潮流"
},
{
- "type_id": "電影",
- "type_name": "电影"
+ "type_id":"放松",
+ "type_name":"放松"
},
{
- "type_id": "動畫",
- "type_name": "动画"
+ "type_id":"4K",
+ "type_name":"4K"
},
{
- "type_id": "綜藝",
- "type_name": "综艺"
+ "type_id":"宇宙",
+ "type_name":"科普知識"
},
{
- "type_id": "體育",
- "type_name": "体育"
+ "type_id":"科技",
+ "type_name":"科技"
},
{
- "type_id": "宇宙",
- "type_name": "科普"
+ "type_id":"解說",
+ "type_name":"解說"
},
{
- "type_id": "科技",
- "type_name": "科技"
+ "type_id":"神秘",
+ "type_name":"神秘"
},
{
- "type_id": "解說",
- "type_name": "解说"
- },
- {
- "type_id": "神秘",
- "type_name": "神秘"
- },
- {
- "type_id": "自媒體",
- "type_name": "自媒體"
- },
- {
- "type_id": "熱門",
- "type_name": "热门"
- },
- {
- "type_id": "GETTRENDS",
- "type_name": "Trends"
+ "type_id":"动画片",
+ "type_name":"动画片"
}
],
- "filters": {
- "熱門": [
+ "filters":{
+ "短劇":[
{
- "key": "tid",
- "name": "LIST",
- "value": [
- {
- "n": "默认",
- "v": "PL hottest 默認"
- },
- {
- "n": "热门",
- "v": "PL Trending 熱門"
- },
- {
- "n": "动漫",
- "v": "PL Popular anime 動漫熱門"
- },
- {
- "n": "漫画",
- "v": "PL Popular comics 漫畫熱門"
- },
- {
- "n": "上传",
- "v": "PL Recently uploaded 最近上傳"
- },
- {
- "n": "其他",
- "v": "PL Popular Other popular ones 其他熱門"
- }
+ "key":"time",
+ "name":"時間",
+ "value":[
+ {"n":"時間全選","v":""},
+ {"n":"2024","v":"2024"},
+ {"n":"2023","v":"2023"},
+ {"n":"2022","v":"2022"},
+ {"n":"2021","v":"2021"},
+ {"n":"2020","v":"2020"},
+ {"n":"2019","v":"2019"},
+ {"n":"2018","v":"2018"},
+ {"n":"2017","v":"2017"},
+ {"n":"2016","v":"2016"},
+ {"n":"2015","v":"2015"},
+ {"n":"2014","v":"2014"},
+ {"n":"2013","v":"2013"},
+ {"n":"2012","v":"2012"},
+ {"n":"2011","v":"2011"},
+ {"n":"2010","v":"2010"},
+ {"n":"2009","v":"2009"},
+ {"n":"2008","v":"2008"},
+ {"n":"2007","v":"2007"},
+ {"n":"2006","v":"2006"},
+ {"n":"2005","v":"2005"},
+ {"n":"2004","v":"2004"},
+ {"n":"2003","v":"2003"},
+ {"n":"2002","v":"2002"},
+ {"n":"2001","v":"2001"},
+ {"n":"2000","v":"2000"},
+ {"n":"1999","v":"1999"},
+ {"n":"1998","v":"1998"},
+ {"n":"1997","v":"1997"},
+ {"n":"1996","v":"1996"},
+ {"n":"1995","v":"1995"},
+ {"n":"1994","v":"1994"},
+ {"n":"1993","v":"1993"},
+ {"n":"1992","v":"1992"},
+ {"n":"1991","v":"1991"},
+ {"n":"1990","v":"1990"},
+ {"n":"1989","v":"1989"},
+ {"n":"1988","v":"1988"},
+ {"n":"1987","v":"1987"},
+ {"n":"1986","v":"1986"},
+ {"n":"1985","v":"1985"},
+ {"n":"1984","v":"1984"},
+ {"n":"1983","v":"1983"},
+ {"n":"1982","v":"1982"},
+ {"n":"1981","v":"1981"},
+ {"n":"1980","v":"1980"},
+ {"n":"1979","v":"1979"},
+ {"n":"1978","v":"1978"},
+ {"n":"1977","v":"1977"},
+ {"n":"1976","v":"1976"},
+ {"n":"1975","v":"1975"},
+ {"n":"1974","v":"1974"},
+ {"n":"1973","v":"1973"},
+ {"n":"1972","v":"1972"},
+ {"n":"1971","v":"1971"},
+ {"n":"1970","v":"1970"},
+ {"n":"1969","v":"1969"},
+ {"n":"1968","v":"1968"},
+ {"n":"1967","v":"1967"},
+ {"n":"1966","v":"1966"},
+ {"n":"1965","v":"1965"},
+ {"n":"1964","v":"1964"},
+ {"n":"1963","v":"1963"},
+ {"n":"1962","v":"1962"},
+ {"n":"1961","v":"1961"},
+ {"n":"1960","v":"1960"},
+ {"n":"1959","v":"1959"},
+ {"n":"1958","v":"1958"}
]
},
{
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": "LIST"
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"短劇",
+ "value":[
+ {"n":"抖音","v":"抖音 短剧"},
+ {"n":"快手","v":"快手 短剧"},
+ {"n":"大陆","v":"大陆 短剧"},
+ {"n":"香港","v":"香港 短剧"},
+ {"n":"澳門","v":"澳門 短剧"},
+ {"n":"台湾","v":"台湾 短剧"},
+ {"n":"新加坡","v":"新加坡 短剧"},
+ {"n":"馬來西亞","v":"馬來西亞 短剧"},
+ {"n":"泰國","v":"泰國 短剧"},
+ {"n":"越南","v":"越南 短剧"},
+ {"n":"印度","v":"印度 短剧"},
+ {"n":"韩国","v":"韩国 短剧"},
+ {"n":"日本","v":"日本 短剧"},
+ {"n":"欧美","v":"欧美 短剧"},
+ {"n":"腾讯","v":"腾讯 短剧"},
+ {"n":"爱奇艺","v":"爱奇艺 短剧"},
+ {"n":"优酷","v":"优酷 短剧"},
+ {"n":"芒果","v":"芒果TV 短剧"},
+ {"n":"搜狐","v":"搜狐 短剧"}
+ ]
+ },
+ {
+ "key":"tid",
+ "name":"短劇",
+ "value":[
+ {"n":"都市","v":"@Urbanshort-TV 都市 短劇"},
+ {"n":"爱情","v":"爱情 短劇"},
+ {"n":"复仇","v":"复仇 短劇"},
+ {"n":"穿越","v":"穿越 短劇"},
+ {"n":"喜剧","v":"喜剧 短劇"},
+ {"n":"奇幻","v":"奇幻 短劇"},
+ {"n":"九酱爱追剧","v":"@NineSauceDramaTV"},
+ {"n":"百万好剧场","v":"@1-pw5ox"},
+ {"n":"咖啡追剧","v":"@@coffeedrama605"},
+ {"n":"斗罗短剧","v":"@DouluoDrama123 斗羅短劇"},
+ {"n":"嘟嘟剧场","v":"@DUDUJUCHANG"},
+ {"n":"牛牛短剧","v":"@niuniuduanju"}
]
}
],
- "短劇": [
+ "動畫片":[
{
- "key": "time",
- "name": "時間",
- "value": [
- {
- "n": "時間全選",
- "v": ""
- },
- {
- "n": "2025",
- "v": "2025"
- },
- {
- "n": "2024",
- "v": "2024"
- },
- {
- "n": "2023",
- "v": "2023"
- },
- {
- "n": "2022",
- "v": "2022"
- },
- {
- "n": "2021",
- "v": "2021"
- },
- {
- "n": "2020",
- "v": "2020"
- },
- {
- "n": "2019",
- "v": "2019"
- },
- {
- "n": "2018",
- "v": "2018"
- },
- {
- "n": "2017",
- "v": "2017"
- },
- {
- "n": "2016",
- "v": "2016"
- },
- {
- "n": "2015",
- "v": "2015"
- },
- {
- "n": "2014",
- "v": "2014"
- },
- {
- "n": "2013",
- "v": "2013"
- },
- {
- "n": "2012",
- "v": "2012"
- },
- {
- "n": "2011",
- "v": "2011"
- },
- {
- "n": "2010",
- "v": "2010"
- },
- {
- "n": "2009",
- "v": "2009"
- },
- {
- "n": "2008",
- "v": "2008"
- },
- {
- "n": "2007",
- "v": "2007"
- },
- {
- "n": "2006",
- "v": "2006"
- },
- {
- "n": "2005",
- "v": "2005"
- },
- {
- "n": "2004",
- "v": "2004"
- },
- {
- "n": "2003",
- "v": "2003"
- },
- {
- "n": "2002",
- "v": "2002"
- },
- {
- "n": "2001",
- "v": "2001"
- },
- {
- "n": "2000",
- "v": "2000"
- },
- {
- "n": "1999",
- "v": "1999"
- },
- {
- "n": "1998",
- "v": "1998"
- },
- {
- "n": "1997",
- "v": "1997"
- },
- {
- "n": "1996",
- "v": "1996"
- },
- {
- "n": "1995",
- "v": "1995"
- },
- {
- "n": "1994",
- "v": "1994"
- },
- {
- "n": "1993",
- "v": "1993"
- },
- {
- "n": "1992",
- "v": "1992"
- },
- {
- "n": "1991",
- "v": "1991"
- },
- {
- "n": "1990",
- "v": "1990"
- },
- {
- "n": "1989",
- "v": "1989"
- },
- {
- "n": "1988",
- "v": "1988"
- },
- {
- "n": "1987",
- "v": "1987"
- },
- {
- "n": "1986",
- "v": "1986"
- },
- {
- "n": "1985",
- "v": "1985"
- },
- {
- "n": "1984",
- "v": "1984"
- },
- {
- "n": "1983",
- "v": "1983"
- },
- {
- "n": "1982",
- "v": "1982"
- },
- {
- "n": "1981",
- "v": "1981"
- },
- {
- "n": "1980",
- "v": "1980"
- },
- {
- "n": "1979",
- "v": "1979"
- },
- {
- "n": "1978",
- "v": "1978"
- },
- {
- "n": "1977",
- "v": "1977"
- },
- {
- "n": "1976",
- "v": "1976"
- },
- {
- "n": "1975",
- "v": "1975"
- },
- {
- "n": "1974",
- "v": "1974"
- },
- {
- "n": "1973",
- "v": "1973"
- },
- {
- "n": "1972",
- "v": "1972"
- },
- {
- "n": "1971",
- "v": "1971"
- },
- {
- "n": "1970",
- "v": "1970"
- },
- {
- "n": "1969",
- "v": "1969"
- },
- {
- "n": "1968",
- "v": "1968"
- },
- {
- "n": "1967",
- "v": "1967"
- },
- {
- "n": "1966",
- "v": "1966"
- },
- {
- "n": "1965",
- "v": "1965"
- },
- {
- "n": "1964",
- "v": "1964"
- },
- {
- "n": "1963",
- "v": "1963"
- },
- {
- "n": "1962",
- "v": "1962"
- },
- {
- "n": "1961",
- "v": "1961"
- },
- {
- "n": "1960",
- "v": "1960"
- },
- {
- "n": "1959",
- "v": "1959"
- },
- {
- "n": "1958",
- "v": "1958"
- }
+ "key":"time",
+ "name":"時間",
+ "value":[
+ {"n":"時間全選","v":""},
+ {"n":"2024","v":"2024"},
+ {"n":"2023","v":"2023"},
+ {"n":"2022","v":"2022"},
+ {"n":"2021","v":"2021"},
+ {"n":"2020","v":"2020"},
+ {"n":"2019","v":"2019"},
+ {"n":"2018","v":"2018"},
+ {"n":"2017","v":"2017"},
+ {"n":"2016","v":"2016"},
+ {"n":"2015","v":"2015"},
+ {"n":"2014","v":"2014"},
+ {"n":"2013","v":"2013"},
+ {"n":"2012","v":"2012"},
+ {"n":"2011","v":"2011"},
+ {"n":"2010","v":"2010"},
+ {"n":"2009","v":"2009"},
+ {"n":"2008","v":"2008"},
+ {"n":"2007","v":"2007"},
+ {"n":"2006","v":"2006"},
+ {"n":"2005","v":"2005"},
+ {"n":"2004","v":"2004"},
+ {"n":"2003","v":"2003"},
+ {"n":"2002","v":"2002"},
+ {"n":"2001","v":"2001"},
+ {"n":"2000","v":"2000"},
+ {"n":"1999","v":"1999"},
+ {"n":"1998","v":"1998"},
+ {"n":"1997","v":"1997"},
+ {"n":"1996","v":"1996"},
+ {"n":"1995","v":"1995"},
+ {"n":"1994","v":"1994"},
+ {"n":"1993","v":"1993"},
+ {"n":"1992","v":"1992"},
+ {"n":"1991","v":"1991"},
+ {"n":"1990","v":"1990"},
+ {"n":"1989","v":"1989"},
+ {"n":"1988","v":"1988"},
+ {"n":"1987","v":"1987"},
+ {"n":"1986","v":"1986"},
+ {"n":"1985","v":"1985"},
+ {"n":"1984","v":"1984"},
+ {"n":"1983","v":"1983"},
+ {"n":"1982","v":"1982"},
+ {"n":"1981","v":"1981"},
+ {"n":"1980","v":"1980"},
+ {"n":"1979","v":"1979"},
+ {"n":"1978","v":"1978"},
+ {"n":"1977","v":"1977"},
+ {"n":"1976","v":"1976"},
+ {"n":"1975","v":"1975"},
+ {"n":"1974","v":"1974"},
+ {"n":"1973","v":"1973"},
+ {"n":"1972","v":"1972"},
+ {"n":"1971","v":"1971"},
+ {"n":"1970","v":"1970"},
+ {"n":"1969","v":"1969"},
+ {"n":"1968","v":"1968"},
+ {"n":"1967","v":"1967"},
+ {"n":"1966","v":"1966"},
+ {"n":"1965","v":"1965"},
+ {"n":"1964","v":"1964"},
+ {"n":"1963","v":"1963"},
+ {"n":"1962","v":"1962"},
+ {"n":"1961","v":"1961"},
+ {"n":"1960","v":"1960"},
+ {"n":"1959","v":"1959"},
+ {"n":"1958","v":"1958"}
]
},
{
- "key": "tid",
- "name": "短劇",
- "value": [
- {
- "n": "抖音",
- "v": "PL抖音 短剧"
- },
- {
- "n": "快手",
- "v": "PL快手 短剧"
- },
- {
- "n": "大陆",
- "v": "PL大陆短剧"
- },
- {
- "n": "香港",
- "v": "PL香港短剧"
- },
- {
- "n": "澳门",
- "v": "PL澳门短剧"
- },
- {
- "n": "台湾",
- "v": "PL台湾短剧"
- },
- {
- "n": "新加坡",
- "v": "PL新加坡短剧"
- },
- {
- "n": "马来西亚",
- "v": "PL马来西亚短剧"
- },
- {
- "n": "泰国",
- "v": "PL泰国短剧"
- },
- {
- "n": "越南",
- "v": "PL越南短剧"
- },
- {
- "n": "印度",
- "v": "PL印度短剧"
- },
- {
- "n": "韩国",
- "v": "PL韩国短剧"
- },
- {
- "n": "日本",
- "v": "PL日本短剧"
- },
- {
- "n": "欧美",
- "v": "PL欧美短剧"
- },
- {
- "n": "腾讯",
- "v": "PL腾讯短剧"
- },
- {
- "n": "爱奇艺",
- "v": "PL爱奇艺短剧"
- },
- {
- "n": "优酷",
- "v": "PL优酷短剧"
- },
- {
- "n": "芒果",
- "v": "PL芒果TV短剧"
- },
- {
- "n": "搜狐",
- "v": "PL搜狐短剧"
- }
+ "key":"tid",
+ "name":"中文",
+ "value":[
+ {"n":"默认中文国漫","v":"國漫 劇集 3D"},
+ {"n":"默认","v":"animation"},
+ {"n":"儿童早教","v":"儿童早教"},
+ {"n":"儿童歌曲","v":"儿童歌曲"},
+ {"n":"儿童音乐","v":"儿童音乐"},
+ {"n":"儿童绘画","v":"儿童绘画"},
+ {"n":"宝宝巴士","v":"宝宝巴士"},
+ {"n":"儿歌多多","v":"儿歌多多"},
+ {"n":"儿童英语启蒙","v":"儿童英语启蒙"},
+ {"n":"儿童启蒙故事","v":"儿童启蒙故事"},
+ {"n":"儿童安全教育","v":"儿童安全教育"}
]
},
{
- "key": "tid",
- "name": "短劇",
- "value": [
- {
- "n": "都市",
- "v": "PL都市短剧"
- },
- {
- "n": "爱情",
- "v": "PL爱情短剧"
- },
- {
- "n": "复仇",
- "v": "PL复仇短劇"
- },
- {
- "n": "霸总",
- "v": "PL霸总短劇"
- },
- {
- "n": "萌宝",
- "v": "PL萌宝短劇"
- },
- {
- "n": "古装",
- "v": "PL古装短劇"
- },
- {
- "n": "穿越",
- "v": "PL穿越短劇"
- },
- {
- "n": "喜剧",
- "v": "PL喜剧短劇"
- },
- {
- "n": "奇幻",
- "v": "PL奇幻短劇"
- },
- {
- "n": "九酱爱追剧",
- "v": "PD@NineSauceDramaTV"
- },
- {
- "n": "百万好剧场",
- "v": "PD@1-pw5ox"
- },
- {
- "n": "咖啡追剧",
- "v": "PD@coffeedrama605"
- },
- {
- "n": "斗罗短剧",
- "v": "PD@DouluoDrama123 斗羅短劇"
- },
- {
- "n": "嘟嘟剧场",
- "v": "PD@DUDUJUCHANG"
- },
- {
- "n": "牛牛短剧",
- "v": "PD@niuniuduanju"
- }
- ]
- },
- {
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"English",
+ "value":[
+ {"n":"默认英文国漫","v":"3D Chinese cartoon"},
+ {"n":"小猪佩奇","v":"@PeppaPigChineseOfficial 小猪佩奇 中文官方 - Peppa Pig"},
+ {"n":"CoComelon","v":"@CoComelon"},
+ {"n":"合集","v":"Anime ENG SUB 合集"},
+ {"n":"国漫社","v":"@Animation 次元 苍穹动漫 PP看动漫 公馆"},
+ {"n":"国漫工厂","v":"@3DGuoman SUB"},
+ {"n":"阅文动漫","v":"@yuewenanimation SUB"},
+ {"n":"哔哩","v":"@madebybilibili 哔哩动漫"},
+ {"n":"腾讯","v":"@TencentVideoAnimation SUB"},
+ {"n":"优酷","v":"@youkuanimation 优酷动漫"},
+ {"n":"爱奇艺","v":"@iQIYIAnime 爱奇艺动漫"}
]
}
],
- "動畫": [
+ "LIST:新闻 Live,体育直播,赛事直播":[
{
- "key": "time",
- "name": "時間",
- "value": [
- {
- "n": "時間全選",
- "v": ""
- },
- {
- "n": "2025",
- "v": "2025"
- },
- {
- "n": "2024",
- "v": "2024"
- },
- {
- "n": "2023",
- "v": "2023"
- },
- {
- "n": "2022",
- "v": "2022"
- },
- {
- "n": "2021",
- "v": "2021"
- },
- {
- "n": "2020",
- "v": "2020"
- },
- {
- "n": "2019",
- "v": "2019"
- },
- {
- "n": "2018",
- "v": "2018"
- },
- {
- "n": "2017",
- "v": "2017"
- },
- {
- "n": "2016",
- "v": "2016"
- },
- {
- "n": "2015",
- "v": "2015"
- },
- {
- "n": "2014",
- "v": "2014"
- },
- {
- "n": "2013",
- "v": "2013"
- },
- {
- "n": "2012",
- "v": "2012"
- },
- {
- "n": "2011",
- "v": "2011"
- },
- {
- "n": "2010",
- "v": "2010"
- },
- {
- "n": "2009",
- "v": "2009"
- },
- {
- "n": "2008",
- "v": "2008"
- },
- {
- "n": "2007",
- "v": "2007"
- },
- {
- "n": "2006",
- "v": "2006"
- },
- {
- "n": "2005",
- "v": "2005"
- },
- {
- "n": "2004",
- "v": "2004"
- },
- {
- "n": "2003",
- "v": "2003"
- },
- {
- "n": "2002",
- "v": "2002"
- },
- {
- "n": "2001",
- "v": "2001"
- },
- {
- "n": "2000",
- "v": "2000"
- },
- {
- "n": "1999",
- "v": "1999"
- },
- {
- "n": "1998",
- "v": "1998"
- },
- {
- "n": "1997",
- "v": "1997"
- },
- {
- "n": "1996",
- "v": "1996"
- },
- {
- "n": "1995",
- "v": "1995"
- },
- {
- "n": "1994",
- "v": "1994"
- },
- {
- "n": "1993",
- "v": "1993"
- },
- {
- "n": "1992",
- "v": "1992"
- },
- {
- "n": "1991",
- "v": "1991"
- },
- {
- "n": "1990",
- "v": "1990"
- },
- {
- "n": "1989",
- "v": "1989"
- },
- {
- "n": "1988",
- "v": "1988"
- },
- {
- "n": "1987",
- "v": "1987"
- },
- {
- "n": "1986",
- "v": "1986"
- },
- {
- "n": "1985",
- "v": "1985"
- },
- {
- "n": "1984",
- "v": "1984"
- },
- {
- "n": "1983",
- "v": "1983"
- },
- {
- "n": "1982",
- "v": "1982"
- },
- {
- "n": "1981",
- "v": "1981"
- },
- {
- "n": "1980",
- "v": "1980"
- },
- {
- "n": "1979",
- "v": "1979"
- },
- {
- "n": "1978",
- "v": "1978"
- },
- {
- "n": "1977",
- "v": "1977"
- },
- {
- "n": "1976",
- "v": "1976"
- },
- {
- "n": "1975",
- "v": "1975"
- },
- {
- "n": "1974",
- "v": "1974"
- },
- {
- "n": "1973",
- "v": "1973"
- },
- {
- "n": "1972",
- "v": "1972"
- },
- {
- "n": "1971",
- "v": "1971"
- },
- {
- "n": "1970",
- "v": "1970"
- },
- {
- "n": "1969",
- "v": "1969"
- },
- {
- "n": "1968",
- "v": "1968"
- },
- {
- "n": "1967",
- "v": "1967"
- },
- {
- "n": "1966",
- "v": "1966"
- },
- {
- "n": "1965",
- "v": "1965"
- },
- {
- "n": "1964",
- "v": "1964"
- },
- {
- "n": "1963",
- "v": "1963"
- },
- {
- "n": "1962",
- "v": "1962"
- },
- {
- "n": "1961",
- "v": "1961"
- },
- {
- "n": "1960",
- "v": "1960"
- },
- {
- "n": "1959",
- "v": "1959"
- },
- {
- "n": "1958",
- "v": "1958"
- }
+ "key":"tid",
+ "name":"中文",
+ "value":[
+ {"n":"默认","v":"fully YouTube 新聞 Live"},
+ {"n":"赛事","v":"直播 赛事"},
+ {"n":"CCTV","v":"直播 CCTV"},
+ {"n":"港台","v":"直播 港台"}
]
},
{
- "key": "tid",
- "name": "中文",
- "value": [
- {
- "n": "默认",
- "v": "animation"
- },
- {
- "n": "虾仁动画",
- "v": "PL虾仁"
- },
- {
- "n": "沙雕动画",
- "v": "PL沙雕动画"
- },
- {
- "n": "中文国漫",
- "v": "PL國漫3D"
- },
- {
- "n": "儿童早教",
- "v": "PL儿童早教"
- },
- {
- "n": "儿童歌曲",
- "v": "PL儿童歌曲"
- },
- {
- "n": "儿童音乐",
- "v": "PL儿童音乐"
- },
- {
- "n": "儿童绘画",
- "v": "PL儿童绘画"
- },
- {
- "n": "宝宝巴士",
- "v": "PL宝宝巴士"
- },
- {
- "n": "儿歌多多",
- "v": "PL儿歌多多"
- },
- {
- "n": "儿童英语启蒙",
- "v": "PL儿童英语启蒙"
- },
- {
- "n": "儿童启蒙故事",
- "v": "PL儿童启蒙故事"
- },
- {
- "n": "儿童安全教育",
- "v": "PL儿童安全教育"
- }
+ "key":"tid",
+ "name":"English",
+ "value":[
+ {"n":"Live","v":"live"},
+ {"n":"CNN","v":"live CNN"},
+ {"n":"BBC","v":"live BBC"},
+ {"n":"games","v":"live games"},
+ {"n":"印度電視台","v":"@SETIndia"}
]
},
{
- "key": "tid",
- "name": "English",
- "value": [
- {
- "n": "默认英文国漫",
- "v": "PD'3D Chinese cartoon'"
- },
- {
- "n": "小猪佩奇",
- "v": "PD@PeppaPigChineseOfficial 小猪佩奇 中文官方 - Peppa Pig"
- },
- {
- "n": "CoComelon",
- "v": "PD@CoComelon"
- },
- {
- "n": "合集",
- "v": "'Anime ENG SUB'合集"
- },
- {
- "n": "国漫社",
- "v": "PD@Animation"
- },
- {
- "n": "国漫工厂",
- "v": "PD@3DGuoman"
- },
- {
- "n": "阅文动漫",
- "v": "PD@yuewenanimation"
- },
- {
- "n": "哔哩",
- "v": "PD@madebybilibili"
- },
- {
- "n": "腾讯",
- "v": "PD@TencentVideoAnimation"
- },
- {
- "n": "优酷",
- "v": "PD@youkuanimation"
- },
- {
- "n": "爱奇艺",
- "v": "PD@iQIYIAnime"
- }
+ "key":"tid",
+ "name":"中文",
+ "value":[
+ {"n":"默认","v":"News"},
+ {"n":"时政","v":"时政 新闻"},
+ {"n":"体育","v":"体育 新闻"},
+ {"n":"娱乐","v":"娱乐 新闻"},
+ {"n":"大陆","v":"大陆 新闻"},
+ {"n":"港台","v":"港台 新闻"}
]
},
{
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"English",
+ "value":[
+ {"n":"科技與發展","v":"閱兵 奧運會 航母 航空母艦 潛水艇 核武器 坦克 武器 卫星 火箭 輪船 飛機 飛碟"},
+ {"n":"法治与社会","v":"法治 法制 社会 卖淫 淫秽 污蔑 赌博 毒品 裸聊 诈骗 拐卖 强奸 勒索"},
+ {"n":"News","v":"News"},
+ {"n":"CNN","v":"CNN news"},
+ {"n":"BBC","v":"BBC news"}
]
}
],
- "新聞": [
+ "LIST:剧集,腾讯剧集,爱奇艺剧集,优酷剧集,芒果剧集,TVB":[
{
- "key": "tid",
- "name": "中文",
- "value": [
- {
- "n": "默认",
- "v": "fully YouTube 新聞 Live"
- },
- {
- "n": "赛事",
- "v": "直播 赛事"
- },
- {
- "n": "CCTV",
- "v": "直播 CCTV"
- },
- {
- "n": "港台",
- "v": "直播 港台"
- },
- {
- "n": "CNA",
- "v": "@channelnewsasia"
- },
- {
- "n": "鳳凰衛視",
- "v": "@phoenixtvhk"
- },
- {
- "n": "CTINEWS",
- "v": "直播 中天新闻"
- },
- {
- "n": "TVBSEWS",
- "v": "直播 TVBSNEWS"
- },
- {
- "n": "新亚太唐人",
- "v": "@NTDAPTV"
- },
- {
- "n": "東森新聞 CH51",
- "v": "直播 東森新聞 CH51"
- },
- {
- "n": "三立LIVE新闻",
- "v": "直播 三立LIVE新闻 @setnews "
- },
- {
- "n": "台視新聞台HD",
- "v": "直播 台視新聞 TTV NEWS"
- },
- {
- "n": "中視新聞 HD",
- "v": "直播 Taiwan CTV news HD Live"
- }
+ "key":"time",
+ "name":"時間",
+ "value":[
+ {"n":"時間全選","v":""},
+ {"n":"2024","v":"2024"},
+ {"n":"2023","v":"2023"},
+ {"n":"2022","v":"2022"},
+ {"n":"2021","v":"2021"},
+ {"n":"2020","v":"2020"},
+ {"n":"2019","v":"2019"},
+ {"n":"2018","v":"2018"},
+ {"n":"2017","v":"2017"},
+ {"n":"2016","v":"2016"},
+ {"n":"2015","v":"2015"},
+ {"n":"2014","v":"2014"},
+ {"n":"2013","v":"2013"},
+ {"n":"2012","v":"2012"},
+ {"n":"2011","v":"2011"},
+ {"n":"2010","v":"2010"},
+ {"n":"2009","v":"2009"},
+ {"n":"2008","v":"2008"},
+ {"n":"2007","v":"2007"},
+ {"n":"2006","v":"2006"},
+ {"n":"2005","v":"2005"},
+ {"n":"2004","v":"2004"},
+ {"n":"2003","v":"2003"},
+ {"n":"2002","v":"2002"},
+ {"n":"2001","v":"2001"},
+ {"n":"2000","v":"2000"},
+ {"n":"1999","v":"1999"},
+ {"n":"1998","v":"1998"},
+ {"n":"1997","v":"1997"},
+ {"n":"1996","v":"1996"},
+ {"n":"1995","v":"1995"},
+ {"n":"1994","v":"1994"},
+ {"n":"1993","v":"1993"},
+ {"n":"1992","v":"1992"},
+ {"n":"1991","v":"1991"},
+ {"n":"1990","v":"1990"},
+ {"n":"1989","v":"1989"},
+ {"n":"1988","v":"1988"},
+ {"n":"1987","v":"1987"},
+ {"n":"1986","v":"1986"},
+ {"n":"1985","v":"1985"},
+ {"n":"1984","v":"1984"},
+ {"n":"1983","v":"1983"},
+ {"n":"1982","v":"1982"},
+ {"n":"1981","v":"1981"},
+ {"n":"1980","v":"1980"},
+ {"n":"1979","v":"1979"},
+ {"n":"1978","v":"1978"},
+ {"n":"1977","v":"1977"},
+ {"n":"1976","v":"1976"},
+ {"n":"1975","v":"1975"},
+ {"n":"1974","v":"1974"},
+ {"n":"1973","v":"1973"},
+ {"n":"1972","v":"1972"},
+ {"n":"1971","v":"1971"},
+ {"n":"1970","v":"1970"},
+ {"n":"1969","v":"1969"},
+ {"n":"1968","v":"1968"},
+ {"n":"1967","v":"1967"},
+ {"n":"1966","v":"1966"},
+ {"n":"1965","v":"1965"},
+ {"n":"1964","v":"1964"},
+ {"n":"1963","v":"1963"},
+ {"n":"1962","v":"1962"},
+ {"n":"1961","v":"1961"},
+ {"n":"1960","v":"1960"},
+ {"n":"1959","v":"1959"},
+ {"n":"1958","v":"1958"}
]
},
{
- "key": "tid",
- "name": "English",
- "value": [
- {
- "n": "Live",
- "v": "live"
- },
- {
- "n": "CNN",
- "v": "live CNN"
- },
- {
- "n": "BBC",
- "v": "live BBC"
- },
- {
- "n": "games",
- "v": "live games"
- },
- {
- "n": "CBS",
- "v": "@CBSNews"
- },
- {
- "n": "ABC",
- "v": "live ABC NEWS"
- },
- {
- "n": "NBC",
- "v": "@NBCNews"
- },
- {
- "n": "LiveNOW from FOX",
- "v": "@livenowfox"
- },
- {
- "n": "Sky News",
- "v": "@SkyNews"
- },
- {
- "n": "euronews",
- "v": "@euronews"
- },
- {
- "n": "GBNews",
- "v": "@GBNewsOnline"
- },
- {
- "n": "Al Jazeera English",
- "v": "@aljazeeraenglish"
- },
- {
- "n": "ABCNews (Australia)",
- "v": "@abcnewsaustralia"
- },
- {
- "n": "FRANCE 24 English",
- "v": "live FRANCE 24 English"
- },
- {
- "n": "Reuters",
- "v": "live Reuters"
- },
- {
- "n": "印度电视台",
- "v": "@SETIndia"
- }
+ "key":"tid",
+ "name":"中文",
+ "value":[
+ {"n":"默認","v":""},
+ {"n":"華語熱播電視劇官方頻道","v":"華語熱播電視劇官方頻道"},
+ {"n":"粵劇","v":"粵劇 劇集"},
+ {"n":"TVB","v":"@TVB"},
+ {"n":"国剧放映社","v":"国剧放映社"},
+ {"n":"大陆","v":"大陆 剧集"},
+ {"n":"腾讯","v":"腾讯 剧集"},
+ {"n":"爱奇艺","v":"爱奇艺 剧集"},
+ {"n":"优酷","v":"优酷 剧集"},
+ {"n":"芒果","v":"芒果TV 剧集"},
+ {"n":"搜狐","v":"搜狐 剧集"},
+ {"n":"华数","v":"华数 剧集"},
+ {"n":"港台","v":"港台 剧集"},
+ {"n":"美国","v":"美国 Full Episode 完整剧集"},
+ {"n":"Netflix","v":"Netflix Full Episode 完整剧集"},
+ {"n":"Disney","v":"disney Full Episode 完整剧集"},
+ {"n":"Apple","v":"apple Full Episode 完整剧集"},
+ {"n":"Amazon","v":"amazon Full Episode 完整剧集"},
+ {"n":"HBO","v":"hbo Full Episode 完整剧集"},
+ {"n":"韩国","v":"韩国 剧集"},
+ {"n":"日本","v":"日本 剧集"},
+ {"n":"英国","v":"英国 Full Episode 完整剧集"}
]
},
{
- "key": "tid",
- "name": "中文",
- "value": [
- {
- "n": "默认",
- "v": "News"
- },
- {
- "n": "News",
- "v": "news"
- },
- {
- "n": "时政",
- "v": "时政 新闻"
- },
- {
- "n": "体育",
- "v": "体育 新闻"
- },
- {
- "n": "娱乐",
- "v": "娱乐 新闻"
- },
- {
- "n": "大陆",
- "v": "大陆 新闻"
- },
- {
- "n": "HKTVB",
- "v": "@tvbnewsofficial"
- },
- {
- "n": "少康戰情室",
- "v": "@tvbssituationroom"
- },
- {
- "n": "政经龙凤配",
- "v": "@觀點"
- },
- {
- "n": "FOCUS全球新闻",
- "v": "@TVBSNEWS FOCUS全球新闻"
- },
- {
- "n": "新闻大白话",
- "v": "@TVBSNEWS 新闻大白话"
- },
- {
- "n": "东森新闻",
- "v": "关键时刻新闻"
- },
- {
- "n": "港台",
- "v": "港台 新闻"
- }
- ]
- },
- {
- "key": "tid",
- "name": "English",
- "value": [
- {
- "n": "科技與發展",
- "v": "閱兵 奧運會 航母 航空母艦 潛水艇 核武器 坦克 武器 卫星 火箭 輪船 飛機 飛碟"
- },
- {
- "n": "法治与社会",
- "v": "法治 法制 社会 卖淫 淫秽 污蔑 赌博 毒品 裸聊 诈骗 拐卖 强奸 勒索"
- },
- {
- "n": "News",
- "v": "News"
- },
- {
- "n": "CNN",
- "v": "CNN news"
- },
- {
- "n": "BBC",
- "v": "BBC news"
- }
- ]
- },
- {
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"English",
+ "value":[
+ {"n":"Drama","v":"Full Episode drama"},
+ {"n":"US","v":"drama Full Episode US"},
+ {"n":"Netflix","v":"netflix Full Episode drama"},
+ {"n":"Disney","v":"disney Full Episode drama"},
+ {"n":"Apple","v":"apple Full Episode drama"},
+ {"n":"Amazon","v":"amazon Full Episode drama"},
+ {"n":"HBO","v":"hbo Full Episode drama"},
+ {"n":"Korea","v":"korea Full Episode drama"},
+ {"n":"Japan","v":"japan Full Episode drama"},
+ {"n":"UK","v":"uk Full Episode drama"}
]
}
],
- "劇集": [
+ "電影":[
{
- "key": "time",
- "name": "時間",
- "value": [
- {
- "n": "時間全選",
- "v": ""
- },
- {
- "n": "2025",
- "v": "2025"
- },
- {
- "n": "2024",
- "v": "2024"
- },
- {
- "n": "2023",
- "v": "2023"
- },
- {
- "n": "2022",
- "v": "2022"
- },
- {
- "n": "2021",
- "v": "2021"
- },
- {
- "n": "2020",
- "v": "2020"
- },
- {
- "n": "2019",
- "v": "2019"
- },
- {
- "n": "2018",
- "v": "2018"
- },
- {
- "n": "2017",
- "v": "2017"
- },
- {
- "n": "2016",
- "v": "2016"
- },
- {
- "n": "2015",
- "v": "2015"
- },
- {
- "n": "2014",
- "v": "2014"
- },
- {
- "n": "2013",
- "v": "2013"
- },
- {
- "n": "2012",
- "v": "2012"
- },
- {
- "n": "2011",
- "v": "2011"
- },
- {
- "n": "2010",
- "v": "2010"
- },
- {
- "n": "2009",
- "v": "2009"
- },
- {
- "n": "2008",
- "v": "2008"
- },
- {
- "n": "2007",
- "v": "2007"
- },
- {
- "n": "2006",
- "v": "2006"
- },
- {
- "n": "2005",
- "v": "2005"
- },
- {
- "n": "2004",
- "v": "2004"
- },
- {
- "n": "2003",
- "v": "2003"
- },
- {
- "n": "2002",
- "v": "2002"
- },
- {
- "n": "2001",
- "v": "2001"
- },
- {
- "n": "2000",
- "v": "2000"
- },
- {
- "n": "1999",
- "v": "1999"
- },
- {
- "n": "1998",
- "v": "1998"
- },
- {
- "n": "1997",
- "v": "1997"
- },
- {
- "n": "1996",
- "v": "1996"
- },
- {
- "n": "1995",
- "v": "1995"
- },
- {
- "n": "1994",
- "v": "1994"
- },
- {
- "n": "1993",
- "v": "1993"
- },
- {
- "n": "1992",
- "v": "1992"
- },
- {
- "n": "1991",
- "v": "1991"
- },
- {
- "n": "1990",
- "v": "1990"
- },
- {
- "n": "1989",
- "v": "1989"
- },
- {
- "n": "1988",
- "v": "1988"
- },
- {
- "n": "1987",
- "v": "1987"
- },
- {
- "n": "1986",
- "v": "1986"
- },
- {
- "n": "1985",
- "v": "1985"
- },
- {
- "n": "1984",
- "v": "1984"
- },
- {
- "n": "1983",
- "v": "1983"
- },
- {
- "n": "1982",
- "v": "1982"
- },
- {
- "n": "1981",
- "v": "1981"
- },
- {
- "n": "1980",
- "v": "1980"
- },
- {
- "n": "1979",
- "v": "1979"
- },
- {
- "n": "1978",
- "v": "1978"
- },
- {
- "n": "1977",
- "v": "1977"
- },
- {
- "n": "1976",
- "v": "1976"
- },
- {
- "n": "1975",
- "v": "1975"
- },
- {
- "n": "1974",
- "v": "1974"
- },
- {
- "n": "1973",
- "v": "1973"
- },
- {
- "n": "1972",
- "v": "1972"
- },
- {
- "n": "1971",
- "v": "1971"
- },
- {
- "n": "1970",
- "v": "1970"
- },
- {
- "n": "1969",
- "v": "1969"
- },
- {
- "n": "1968",
- "v": "1968"
- },
- {
- "n": "1967",
- "v": "1967"
- },
- {
- "n": "1966",
- "v": "1966"
- },
- {
- "n": "1965",
- "v": "1965"
- },
- {
- "n": "1964",
- "v": "1964"
- },
- {
- "n": "1963",
- "v": "1963"
- },
- {
- "n": "1962",
- "v": "1962"
- },
- {
- "n": "1961",
- "v": "1961"
- },
- {
- "n": "1960",
- "v": "1960"
- },
- {
- "n": "1959",
- "v": "1959"
- },
- {
- "n": "1958",
- "v": "1958"
- }
+ "key":"time",
+ "name":"時間",
+ "value":[
+ {"n":"時間全選","v":""},
+ {"n":"2024","v":"2024"},
+ {"n":"2023","v":"2023"},
+ {"n":"2022","v":"2022"},
+ {"n":"2021","v":"2021"},
+ {"n":"2020","v":"2020"},
+ {"n":"2019","v":"2019"},
+ {"n":"2018","v":"2018"},
+ {"n":"2017","v":"2017"},
+ {"n":"2016","v":"2016"},
+ {"n":"2015","v":"2015"},
+ {"n":"2014","v":"2014"},
+ {"n":"2013","v":"2013"},
+ {"n":"2012","v":"2012"},
+ {"n":"2011","v":"2011"},
+ {"n":"2010","v":"2010"},
+ {"n":"2009","v":"2009"},
+ {"n":"2008","v":"2008"},
+ {"n":"2007","v":"2007"},
+ {"n":"2006","v":"2006"},
+ {"n":"2005","v":"2005"},
+ {"n":"2004","v":"2004"},
+ {"n":"2003","v":"2003"},
+ {"n":"2002","v":"2002"},
+ {"n":"2001","v":"2001"},
+ {"n":"2000","v":"2000"},
+ {"n":"1999","v":"1999"},
+ {"n":"1998","v":"1998"},
+ {"n":"1997","v":"1997"},
+ {"n":"1996","v":"1996"},
+ {"n":"1995","v":"1995"},
+ {"n":"1994","v":"1994"},
+ {"n":"1993","v":"1993"},
+ {"n":"1992","v":"1992"},
+ {"n":"1991","v":"1991"},
+ {"n":"1990","v":"1990"},
+ {"n":"1989","v":"1989"},
+ {"n":"1988","v":"1988"},
+ {"n":"1987","v":"1987"},
+ {"n":"1986","v":"1986"},
+ {"n":"1985","v":"1985"},
+ {"n":"1984","v":"1984"},
+ {"n":"1983","v":"1983"},
+ {"n":"1982","v":"1982"},
+ {"n":"1981","v":"1981"},
+ {"n":"1980","v":"1980"},
+ {"n":"1979","v":"1979"},
+ {"n":"1978","v":"1978"},
+ {"n":"1977","v":"1977"},
+ {"n":"1976","v":"1976"},
+ {"n":"1975","v":"1975"},
+ {"n":"1974","v":"1974"},
+ {"n":"1973","v":"1973"},
+ {"n":"1972","v":"1972"},
+ {"n":"1971","v":"1971"},
+ {"n":"1970","v":"1970"},
+ {"n":"1969","v":"1969"},
+ {"n":"1968","v":"1968"},
+ {"n":"1967","v":"1967"},
+ {"n":"1966","v":"1966"},
+ {"n":"1965","v":"1965"},
+ {"n":"1964","v":"1964"},
+ {"n":"1963","v":"1963"},
+ {"n":"1962","v":"1962"},
+ {"n":"1961","v":"1961"},
+ {"n":"1960","v":"1960"},
+ {"n":"1959","v":"1959"},
+ {"n":"1958","v":"1958"}
]
},
{
- "key": "tid",
- "name": "中文",
- "value": [
- {
- "n": "默認",
- "v": ""
- },
- {
- "n": "華語熱播電視劇官方頻道",
- "v": "PL華語熱播電視劇官方頻道"
- },
- {
- "n": "TVB 国语",
- "v": "PL TVB Drama 国语剧场"
- },
- {
- "n": "粵劇",
- "v": "PL 粵劇 劇集"
- },
- {
- "n": "TVB",
- "v": "PL TVB"
- },
- {
- "n": "国剧放映社",
- "v": "PL 国剧放映社"
- },
- {
- "n": "大陆",
- "v": "PL 大陆 剧集"
- },
- {
- "n": "腾讯",
- "v": "PL 腾讯 剧集"
- },
- {
- "n": "爱奇艺",
- "v": "PL 爱奇艺 剧集"
- },
- {
- "n": "优酷",
- "v": "PL 优酷 剧集"
- },
- {
- "n": "芒果",
- "v": "PL 芒果TV 剧集"
- },
- {
- "n": "搜狐",
- "v": "PL 搜狐 剧集"
- },
- {
- "n": "华数",
- "v": "PL 华数 剧集"
- },
- {
- "n": "港台",
- "v": "PL 港台 剧集"
- },
- {
- "n": "美国",
- "v": "PL 美国 Full Episode 完整剧集"
- },
- {
- "n": "Netflix",
- "v": "PL Netflix Full Episode 完整剧集"
- },
- {
- "n": "Disney",
- "v": "PL disney Full Episode 完整剧集"
- },
- {
- "n": "Apple",
- "v": "PL apple Full Episode 完整剧集"
- },
- {
- "n": "Amazon",
- "v": "PL amazon Full Episode 完整剧集"
- },
- {
- "n": "HBO",
- "v": "PL hbo Full Episode 完整剧集"
- },
- {
- "n": "韩国",
- "v": "PL 韩国 剧集"
- },
- {
- "n": "日本",
- "v": "PL 日本 剧集"
- },
- {
- "n": "英国",
- "v": "PL 英国 Full Episode 完整剧集"
- }
+ "key":"tid",
+ "name":"中文",
+ "value":[
+ {"n":"默認","v":""},
+ {"n":"大陆","v":"大陆 电影"},
+ {"n":"腾讯","v":"腾讯 电影"},
+ {"n":"爱奇艺","v":"爱奇艺 电影"},
+ {"n":"优酷","v":"优酷 电影"},
+ {"n":"芒果","v":"芒果TV 电影"},
+ {"n":"搜狐","v":"搜狐 电影"},
+ {"n":"港台","v":"港台 电影"},
+ {"n":"美国","v":"美国 电影"},
+ {"n":"Netflix","v":"netflix Full movie 电影"},
+ {"n":"Disney","v":"disney Full movie 电影"},
+ {"n":"Apple","v":"apple Full movie 电影"},
+ {"n":"Amazon","v":"amazon Full movie 电影"},
+ {"n":"HBO","v":"hbo Full movie 电影"},
+ {"n":"韩国","v":"韩国 Full movie 电影"},
+ {"n":"日本","v":"日本 Full movie 电影"},
+ {"n":"英国","v":"英国 Full movie 电影"}
]
},
{
- "key": "tid",
- "name": "English",
- "value": [
- {
- "n": "Drama",
- "v": "PL Full Episode drama"
- },
- {
- "n": "US",
- "v": "PL drama Full Episode US"
- },
- {
- "n": "Netflix",
- "v": "PL netflix Full Episode drama"
- },
- {
- "n": "Disney",
- "v": "PL disney Full Episode drama"
- },
- {
- "n": "Apple",
- "v": "PL apple Full Episode drama"
- },
- {
- "n": "Amazon",
- "v": "PL amazon Full Episode drama"
- },
- {
- "n": "HBO",
- "v": "PL hbo Full Episode drama"
- },
- {
- "n": "Korea",
- "v": "PL korea Full Episode drama"
- },
- {
- "n": "Japan",
- "v": "PL japan Full Episode drama"
- },
- {
- "n": "UK",
- "v": "PL uk Full Episode drama"
- }
- ]
- },
- {
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"English",
+ "value":[
+ {"n":"movie","v":"youtube movies Full movie"},
+ {"n":"US","v":"us Full movie movie"},
+ {"n":"Netflix movie","v":"netflix Full movie movie"},
+ {"n":"Disney","v":"disney Full movie movie"},
+ {"n":"Apple","v":"apple Full movie movie"},
+ {"n":"Amazon","v":"amazon Full movie movie"},
+ {"n":"HBO","v":"hbo Full movie movie"},
+ {"n":"Koera","v":"korea Full movie movie"},
+ {"n":"Japan","v":"japan Full movie movie"},
+ {"n":"UK","v":"uk Full movie movie"}
]
}
],
- "電影": [
+ "LIST:综艺,芒果综艺,腾讯综艺,爱奇艺综艺,优酷综艺,卫视综艺":[
{
- "key": "time",
- "name": "時間",
- "value": [
- {
- "n": "時間全選",
- "v": ""
- },
- {
- "n": "2025",
- "v": "2025"
- },
- {
- "n": "2024",
- "v": "2024"
- },
- {
- "n": "2023",
- "v": "2023"
- },
- {
- "n": "2022",
- "v": "2022"
- },
- {
- "n": "2021",
- "v": "2021"
- },
- {
- "n": "2020",
- "v": "2020"
- },
- {
- "n": "2019",
- "v": "2019"
- },
- {
- "n": "2018",
- "v": "2018"
- },
- {
- "n": "2017",
- "v": "2017"
- },
- {
- "n": "2016",
- "v": "2016"
- },
- {
- "n": "2015",
- "v": "2015"
- },
- {
- "n": "2014",
- "v": "2014"
- },
- {
- "n": "2013",
- "v": "2013"
- },
- {
- "n": "2012",
- "v": "2012"
- },
- {
- "n": "2011",
- "v": "2011"
- },
- {
- "n": "2010",
- "v": "2010"
- },
- {
- "n": "2009",
- "v": "2009"
- },
- {
- "n": "2008",
- "v": "2008"
- },
- {
- "n": "2007",
- "v": "2007"
- },
- {
- "n": "2006",
- "v": "2006"
- },
- {
- "n": "2005",
- "v": "2005"
- },
- {
- "n": "2004",
- "v": "2004"
- },
- {
- "n": "2003",
- "v": "2003"
- },
- {
- "n": "2002",
- "v": "2002"
- },
- {
- "n": "2001",
- "v": "2001"
- },
- {
- "n": "2000",
- "v": "2000"
- },
- {
- "n": "1999",
- "v": "1999"
- },
- {
- "n": "1998",
- "v": "1998"
- },
- {
- "n": "1997",
- "v": "1997"
- },
- {
- "n": "1996",
- "v": "1996"
- },
- {
- "n": "1995",
- "v": "1995"
- },
- {
- "n": "1994",
- "v": "1994"
- },
- {
- "n": "1993",
- "v": "1993"
- },
- {
- "n": "1992",
- "v": "1992"
- },
- {
- "n": "1991",
- "v": "1991"
- },
- {
- "n": "1990",
- "v": "1990"
- },
- {
- "n": "1989",
- "v": "1989"
- },
- {
- "n": "1988",
- "v": "1988"
- },
- {
- "n": "1987",
- "v": "1987"
- },
- {
- "n": "1986",
- "v": "1986"
- },
- {
- "n": "1985",
- "v": "1985"
- },
- {
- "n": "1984",
- "v": "1984"
- },
- {
- "n": "1983",
- "v": "1983"
- },
- {
- "n": "1982",
- "v": "1982"
- },
- {
- "n": "1981",
- "v": "1981"
- },
- {
- "n": "1980",
- "v": "1980"
- },
- {
- "n": "1979",
- "v": "1979"
- },
- {
- "n": "1978",
- "v": "1978"
- },
- {
- "n": "1977",
- "v": "1977"
- },
- {
- "n": "1976",
- "v": "1976"
- },
- {
- "n": "1975",
- "v": "1975"
- },
- {
- "n": "1974",
- "v": "1974"
- },
- {
- "n": "1973",
- "v": "1973"
- },
- {
- "n": "1972",
- "v": "1972"
- },
- {
- "n": "1971",
- "v": "1971"
- },
- {
- "n": "1970",
- "v": "1970"
- },
- {
- "n": "1969",
- "v": "1969"
- },
- {
- "n": "1968",
- "v": "1968"
- },
- {
- "n": "1967",
- "v": "1967"
- },
- {
- "n": "1966",
- "v": "1966"
- },
- {
- "n": "1965",
- "v": "1965"
- },
- {
- "n": "1964",
- "v": "1964"
- },
- {
- "n": "1963",
- "v": "1963"
- },
- {
- "n": "1962",
- "v": "1962"
- },
- {
- "n": "1961",
- "v": "1961"
- },
- {
- "n": "1960",
- "v": "1960"
- },
- {
- "n": "1959",
- "v": "1959"
- },
- {
- "n": "1958",
- "v": "1958"
- }
+ "key":"time",
+ "name":"時間",
+ "value":[
+ {"n":"時間全選","v":""},
+ {"n":"2024","v":"2024"},
+ {"n":"2023","v":"2023"},
+ {"n":"2022","v":"2022"},
+ {"n":"2021","v":"2021"},
+ {"n":"2020","v":"2020"},
+ {"n":"2019","v":"2019"},
+ {"n":"2018","v":"2018"},
+ {"n":"2017","v":"2017"},
+ {"n":"2016","v":"2016"},
+ {"n":"2015","v":"2015"},
+ {"n":"2014","v":"2014"},
+ {"n":"2013","v":"2013"},
+ {"n":"2012","v":"2012"},
+ {"n":"2011","v":"2011"},
+ {"n":"2010","v":"2010"},
+ {"n":"2009","v":"2009"},
+ {"n":"2008","v":"2008"},
+ {"n":"2007","v":"2007"},
+ {"n":"2006","v":"2006"},
+ {"n":"2005","v":"2005"},
+ {"n":"2004","v":"2004"},
+ {"n":"2003","v":"2003"},
+ {"n":"2002","v":"2002"},
+ {"n":"2001","v":"2001"},
+ {"n":"2000","v":"2000"},
+ {"n":"1999","v":"1999"},
+ {"n":"1998","v":"1998"},
+ {"n":"1997","v":"1997"},
+ {"n":"1996","v":"1996"},
+ {"n":"1995","v":"1995"},
+ {"n":"1994","v":"1994"},
+ {"n":"1993","v":"1993"},
+ {"n":"1992","v":"1992"},
+ {"n":"1991","v":"1991"},
+ {"n":"1990","v":"1990"},
+ {"n":"1989","v":"1989"},
+ {"n":"1988","v":"1988"},
+ {"n":"1987","v":"1987"},
+ {"n":"1986","v":"1986"},
+ {"n":"1985","v":"1985"},
+ {"n":"1984","v":"1984"},
+ {"n":"1983","v":"1983"},
+ {"n":"1982","v":"1982"},
+ {"n":"1981","v":"1981"},
+ {"n":"1980","v":"1980"},
+ {"n":"1979","v":"1979"},
+ {"n":"1978","v":"1978"},
+ {"n":"1977","v":"1977"},
+ {"n":"1976","v":"1976"},
+ {"n":"1975","v":"1975"},
+ {"n":"1974","v":"1974"},
+ {"n":"1973","v":"1973"},
+ {"n":"1972","v":"1972"},
+ {"n":"1971","v":"1971"},
+ {"n":"1970","v":"1970"},
+ {"n":"1969","v":"1969"},
+ {"n":"1968","v":"1968"},
+ {"n":"1967","v":"1967"},
+ {"n":"1966","v":"1966"},
+ {"n":"1965","v":"1965"},
+ {"n":"1964","v":"1964"},
+ {"n":"1963","v":"1963"},
+ {"n":"1962","v":"1962"},
+ {"n":"1961","v":"1961"},
+ {"n":"1960","v":"1960"},
+ {"n":"1959","v":"1959"},
+ {"n":"1958","v":"1958"}
]
},
{
- "key": "tid",
- "name": "中文",
- "value": [
- {
- "n": "默認",
- "v": ""
- },
- {
- "n": "大陆",
- "v": "PL 大陆 电影"
- },
- {
- "n": "腾讯",
- "v": "PL 腾讯 电影"
- },
- {
- "n": "爱奇艺",
- "v": "PL 爱奇艺 电影"
- },
- {
- "n": "优酷",
- "v": "PL 优酷 电影"
- },
- {
- "n": "芒果",
- "v": "PL 芒果TV 电影"
- },
- {
- "n": "搜狐",
- "v": "PL 搜狐 电影"
- },
- {
- "n": "港台",
- "v": "PL 港台 电影"
- },
- {
- "n": "美国",
- "v": "PL 美国 电影"
- },
- {
- "n": "Netflix",
- "v": "PL netflix Full movie 电影"
- },
- {
- "n": "Disney",
- "v": "PL disney Full movie 电影"
- },
- {
- "n": "Apple",
- "v": "PL apple Full movie 电影"
- },
- {
- "n": "Amazon",
- "v": "PL amazon Full movie 电影"
- },
- {
- "n": "HBO",
- "v": "PL hbo Full movie 电影"
- },
- {
- "n": "韩国",
- "v": "PL 韩国 Full movie 电影"
- },
- {
- "n": "日本",
- "v": "PL 日本 Full movie 电影"
- },
- {
- "n": "英国",
- "v": "PL 英国 Full movie 电影"
- }
+ "key":"tid",
+ "name":"中文",
+ "value":[
+ {"n":"默认","v":"Variety show"},
+ {"n":"大陆","v":"大陆 综艺"},
+ {"n":"芒果","v":"芒果 综艺"},
+ {"n":"腾讯","v":"腾讯 综艺"},
+ {"n":"爱奇艺","v":"爱奇艺 综艺"},
+ {"n":"优酷","v":"优酷 综艺"},
+ {"n":"港台","v":"港台 综艺"},
+ {"n":"美国","v":"美国 综艺"},
+ {"n":"Netflix","v":"Netflix 综艺"},
+ {"n":"韩国","v":"CRAVITY on Variety Shows 韩国 综艺"},
+ {"n":"日本","v":"日本 综艺"},
+ {"n":"英国","v":"英国 综艺"}
]
},
{
- "key": "tid",
- "name": "English",
- "value": [
- {
- "n": "movie",
- "v": "PL youtube movies Full movie"
- },
- {
- "n": "US",
- "v": "PL us Full movie movie"
- },
- {
- "n": "Netflix movie",
- "v": "PL netflix Full movie movie"
- },
- {
- "n": "Disney",
- "v": "PL disney Full movie movie"
- },
- {
- "n": "Apple",
- "v": "PL apple Full movie movie"
- },
- {
- "n": "Amazon",
- "v": "PL amazon Full movie movie"
- },
- {
- "n": "HBO",
- "v": "PL hbo Full movie movie"
- },
- {
- "n": "Koera",
- "v": "PL korea Full movie movie"
- },
- {
- "n": "Japan",
- "v": "PL japan Full movie movie"
- },
- {
- "n": "UK",
- "v": "PL uk Full movie movie"
- }
+ "key":"tid",
+ "name":"English",
+ "value":[
+ {"n":"Variety","v":"variety"},
+ {"n":"Netflix variety","v":"netflix variety"},
+ {"n":"Korea","v":"korea variety"},
+ {"n":"Japan","v":"japan variety"},
+ {"n":"UK","v":"uk variety"}
]
},
{
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"小品",
+ "value":[
+ {"n":"春晚小品","v":"春晚小品"},
+ {"n":"开心麻花","v":"开心麻花"},
+ {"n":"屌丝男士","v":"屌丝男士"},
+ {"n":"喜剧综艺","v":"喜剧综艺"},
+ {"n":"单口","v":"单口 相声"},
+ {"n":"群口","v":"群口 相声"},
+ {"n":"德云社","v":"德云社"},
+ {"n":"青曲社","v":"青曲社"},
+ {"n":"郭德纲","v":"郭德纲"},
+ {"n":"岳云鹏","v":"岳云鹏"},
+ {"n":"曹云金","v":"曹云金"},
+ {"n":"评书","v":"评书"},
+ {"n":"小曲","v":"小曲"},
+ {"n":"赵本山","v":"赵本山"},
+ {"n":"陈佩斯","v":"陈佩斯"},
+ {"n":"冯巩","v":"冯巩"},
+ {"n":"宋小宝","v":"宋小宝"},
+ {"n":"赵丽蓉","v":"赵丽蓉"},
+ {"n":"潘长江","v":"潘长江"},
+ {"n":"郭冬临","v":"郭冬临"},
+ {"n":"严顺开","v":"严顺开"},
+ {"n":"文松","v":"文松"}
]
}
],
- "綜藝": [
+ "LIST:紀錄片,历史纪录片,自然纪录片,宇宙纪录片":[
{
- "key": "time",
- "name": "時間",
- "value": [
- {
- "n": "時間全選",
- "v": ""
- },
- {
- "n": "2025",
- "v": "2025"
- },
- {
- "n": "2024",
- "v": "2024"
- },
- {
- "n": "2023",
- "v": "2023"
- },
- {
- "n": "2022",
- "v": "2022"
- },
- {
- "n": "2021",
- "v": "2021"
- },
- {
- "n": "2020",
- "v": "2020"
- },
- {
- "n": "2019",
- "v": "2019"
- },
- {
- "n": "2018",
- "v": "2018"
- },
- {
- "n": "2017",
- "v": "2017"
- },
- {
- "n": "2016",
- "v": "2016"
- },
- {
- "n": "2015",
- "v": "2015"
- },
- {
- "n": "2014",
- "v": "2014"
- },
- {
- "n": "2013",
- "v": "2013"
- },
- {
- "n": "2012",
- "v": "2012"
- },
- {
- "n": "2011",
- "v": "2011"
- },
- {
- "n": "2010",
- "v": "2010"
- },
- {
- "n": "2009",
- "v": "2009"
- },
- {
- "n": "2008",
- "v": "2008"
- },
- {
- "n": "2007",
- "v": "2007"
- },
- {
- "n": "2006",
- "v": "2006"
- },
- {
- "n": "2005",
- "v": "2005"
- },
- {
- "n": "2004",
- "v": "2004"
- },
- {
- "n": "2003",
- "v": "2003"
- },
- {
- "n": "2002",
- "v": "2002"
- },
- {
- "n": "2001",
- "v": "2001"
- },
- {
- "n": "2000",
- "v": "2000"
- },
- {
- "n": "1999",
- "v": "1999"
- },
- {
- "n": "1998",
- "v": "1998"
- },
- {
- "n": "1997",
- "v": "1997"
- },
- {
- "n": "1996",
- "v": "1996"
- },
- {
- "n": "1995",
- "v": "1995"
- },
- {
- "n": "1994",
- "v": "1994"
- },
- {
- "n": "1993",
- "v": "1993"
- },
- {
- "n": "1992",
- "v": "1992"
- },
- {
- "n": "1991",
- "v": "1991"
- },
- {
- "n": "1990",
- "v": "1990"
- },
- {
- "n": "1989",
- "v": "1989"
- },
- {
- "n": "1988",
- "v": "1988"
- },
- {
- "n": "1987",
- "v": "1987"
- },
- {
- "n": "1986",
- "v": "1986"
- },
- {
- "n": "1985",
- "v": "1985"
- },
- {
- "n": "1984",
- "v": "1984"
- },
- {
- "n": "1983",
- "v": "1983"
- },
- {
- "n": "1982",
- "v": "1982"
- },
- {
- "n": "1981",
- "v": "1981"
- },
- {
- "n": "1980",
- "v": "1980"
- },
- {
- "n": "1979",
- "v": "1979"
- },
- {
- "n": "1978",
- "v": "1978"
- },
- {
- "n": "1977",
- "v": "1977"
- },
- {
- "n": "1976",
- "v": "1976"
- },
- {
- "n": "1975",
- "v": "1975"
- },
- {
- "n": "1974",
- "v": "1974"
- },
- {
- "n": "1973",
- "v": "1973"
- },
- {
- "n": "1972",
- "v": "1972"
- },
- {
- "n": "1971",
- "v": "1971"
- },
- {
- "n": "1970",
- "v": "1970"
- },
- {
- "n": "1969",
- "v": "1969"
- },
- {
- "n": "1968",
- "v": "1968"
- },
- {
- "n": "1967",
- "v": "1967"
- },
- {
- "n": "1966",
- "v": "1966"
- },
- {
- "n": "1965",
- "v": "1965"
- },
- {
- "n": "1964",
- "v": "1964"
- },
- {
- "n": "1963",
- "v": "1963"
- },
- {
- "n": "1962",
- "v": "1962"
- },
- {
- "n": "1961",
- "v": "1961"
- },
- {
- "n": "1960",
- "v": "1960"
- },
- {
- "n": "1959",
- "v": "1959"
- },
- {
- "n": "1958",
- "v": "1958"
- }
+ "key":"time",
+ "name":"時間",
+ "value":[
+ {"n":"時間全選","v":""},
+ {"n":"2024","v":"2024"},
+ {"n":"2023","v":"2023"},
+ {"n":"2022","v":"2022"},
+ {"n":"2021","v":"2021"},
+ {"n":"2020","v":"2020"},
+ {"n":"2019","v":"2019"},
+ {"n":"2018","v":"2018"},
+ {"n":"2017","v":"2017"},
+ {"n":"2016","v":"2016"},
+ {"n":"2015","v":"2015"},
+ {"n":"2014","v":"2014"},
+ {"n":"2013","v":"2013"},
+ {"n":"2012","v":"2012"},
+ {"n":"2011","v":"2011"},
+ {"n":"2010","v":"2010"},
+ {"n":"2009","v":"2009"},
+ {"n":"2008","v":"2008"},
+ {"n":"2007","v":"2007"},
+ {"n":"2006","v":"2006"},
+ {"n":"2005","v":"2005"},
+ {"n":"2004","v":"2004"},
+ {"n":"2003","v":"2003"},
+ {"n":"2002","v":"2002"},
+ {"n":"2001","v":"2001"},
+ {"n":"2000","v":"2000"},
+ {"n":"1999","v":"1999"},
+ {"n":"1998","v":"1998"},
+ {"n":"1997","v":"1997"},
+ {"n":"1996","v":"1996"},
+ {"n":"1995","v":"1995"},
+ {"n":"1994","v":"1994"},
+ {"n":"1993","v":"1993"},
+ {"n":"1992","v":"1992"},
+ {"n":"1991","v":"1991"},
+ {"n":"1990","v":"1990"},
+ {"n":"1989","v":"1989"},
+ {"n":"1988","v":"1988"},
+ {"n":"1987","v":"1987"},
+ {"n":"1986","v":"1986"},
+ {"n":"1985","v":"1985"},
+ {"n":"1984","v":"1984"},
+ {"n":"1983","v":"1983"},
+ {"n":"1982","v":"1982"},
+ {"n":"1981","v":"1981"},
+ {"n":"1980","v":"1980"},
+ {"n":"1979","v":"1979"},
+ {"n":"1978","v":"1978"},
+ {"n":"1977","v":"1977"},
+ {"n":"1976","v":"1976"},
+ {"n":"1975","v":"1975"},
+ {"n":"1974","v":"1974"},
+ {"n":"1973","v":"1973"},
+ {"n":"1972","v":"1972"},
+ {"n":"1971","v":"1971"},
+ {"n":"1970","v":"1970"},
+ {"n":"1969","v":"1969"},
+ {"n":"1968","v":"1968"},
+ {"n":"1967","v":"1967"},
+ {"n":"1966","v":"1966"},
+ {"n":"1965","v":"1965"},
+ {"n":"1964","v":"1964"},
+ {"n":"1963","v":"1963"},
+ {"n":"1962","v":"1962"},
+ {"n":"1961","v":"1961"},
+ {"n":"1960","v":"1960"},
+ {"n":"1959","v":"1959"},
+ {"n":"1958","v":"1958"}
]
},
{
- "key": "tid",
- "name": "中文",
- "value": [
- {
- "n": "默认",
- "v": "Variety show"
- },
- {
- "n": "大陆",
- "v": "大陆 综艺"
- },
- {
- "n": "芒果",
- "v": "芒果 综艺"
- },
- {
- "n": "腾讯",
- "v": "腾讯 综艺"
- },
- {
- "n": "爱奇艺",
- "v": "爱奇艺 综艺"
- },
- {
- "n": "优酷",
- "v": "优酷 综艺"
- },
- {
- "n": "港台",
- "v": "港台 综艺"
- },
- {
- "n": "美国",
- "v": "美国 综艺"
- },
- {
- "n": "Netflix",
- "v": "Netflix 综艺"
- },
- {
- "n": "韩国",
- "v": "CRAVITY on Variety Shows 韩国 综艺"
- },
- {
- "n": "日本",
- "v": "日本 综艺"
- },
- {
- "n": "英国",
- "v": "英国 综艺"
- }
+ "key":"tid",
+ "name":"中文",
+ "value":[
+ {"n":"地區🎶排序","v":"歷史記錄片 地球記錄片 宇宙記錄片 海洋記錄片 戰爭記錄片 大自然生存記錄片"},
+ {"n":"默认","v":"documentary"},
+ {"n":"CCTV纪录片","v":"CCTV 纪录片"},
+ {"n":"BBC纪录片","v":"BBC 纪录片"},
+ {"n":"国家地理","v":"国家地理 纪录片"},
+ {"n":"Netflix纪录片","v":"netflix 纪录片"},
+ {"n":"BBC","v":"BBC documentary"},
+ {"n":"National Geographic","v":"National Geographic documentary"},
+ {"n":"Netflix","v":"netflix documentary"},
+ {"n":"历史","v":"历史 纪录片"},
+ {"n":"野性","v":"野性 纪录片"},
+ {"n":"地球","v":"地球 纪录片"},
+ {"n":"宇宙","v":"宇宙 纪录片"},
+ {"n":"海洋","v":"海洋 纪录片"},
+ {"n":"人文","v":"人文 纪录片"},
+ {"n":"战争","v":"战争 纪录片"}
]
},
{
- "key": "tid",
- "name": "English",
- "value": [
- {
- "n": "Variety",
- "v": "variety"
- },
- {
- "n": "Netflix variety",
- "v": "netflix variety"
- },
- {
- "n": "Korea",
- "v": "korea variety"
- },
- {
- "n": "Japan",
- "v": "japan variety"
- },
- {
- "n": "UK",
- "v": "uk variety"
- }
- ]
- },
- {
- "key": "tid",
- "name": "小品",
- "value": [
- {
- "n": "春晚小品",
- "v": "春晚小品"
- },
- {
- "n": "开心麻花",
- "v": "开心麻花"
- },
- {
- "n": "屌丝男士",
- "v": "屌丝男士"
- },
- {
- "n": "喜剧综艺",
- "v": "喜剧综艺"
- },
- {
- "n": "单口",
- "v": "单口 相声"
- },
- {
- "n": "群口",
- "v": "群口 相声"
- },
- {
- "n": "德云社",
- "v": "德云社"
- },
- {
- "n": "青曲社",
- "v": "青曲社"
- },
- {
- "n": "郭德纲",
- "v": "郭德纲"
- },
- {
- "n": "岳云鹏",
- "v": "岳云鹏"
- },
- {
- "n": "曹云金",
- "v": "曹云金"
- },
- {
- "n": "评书",
- "v": "评书"
- },
- {
- "n": "小曲",
- "v": "小曲"
- },
- {
- "n": "赵本山",
- "v": "赵本山"
- },
- {
- "n": "陈佩斯",
- "v": "陈佩斯"
- },
- {
- "n": "冯巩",
- "v": "冯巩"
- },
- {
- "n": "宋小宝",
- "v": "宋小宝"
- },
- {
- "n": "赵丽蓉",
- "v": "赵丽蓉"
- },
- {
- "n": "潘长江",
- "v": "潘长江"
- },
- {
- "n": "郭冬临",
- "v": "郭冬临"
- },
- {
- "n": "严顺开",
- "v": "严顺开"
- },
- {
- "n": "文松",
- "v": "文松"
- }
- ]
- },
- {
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"English",
+ "value":[
+ {"n":"History","v":"Full history documentary"},
+ {"n":"WILD","v":"Full wild documentary"},
+ {"n":"Earch","v":"Full earth documentary"},
+ {"n":"Universe","v":"Full universe documentary"},
+ {"n":"Oceans","v":"Full oceans documentary"},
+ {"n":"Humanism","v":"Full humanism documentary"},
+ {"n":"Wars","v":"Full war documentary"}
]
}
],
- "紀錄": [
+ "LIST:华语音乐,华语MV,点击率最高":[
{
- "key": "time",
- "name": "時間",
- "value": [
- {
- "n": "時間全選",
- "v": ""
- },
- {
- "n": "2025",
- "v": "2025"
- },
- {
- "n": "2024",
- "v": "2024"
- },
- {
- "n": "2023",
- "v": "2023"
- },
- {
- "n": "2022",
- "v": "2022"
- },
- {
- "n": "2021",
- "v": "2021"
- },
- {
- "n": "2020",
- "v": "2020"
- },
- {
- "n": "2019",
- "v": "2019"
- },
- {
- "n": "2018",
- "v": "2018"
- },
- {
- "n": "2017",
- "v": "2017"
- },
- {
- "n": "2016",
- "v": "2016"
- },
- {
- "n": "2015",
- "v": "2015"
- },
- {
- "n": "2014",
- "v": "2014"
- },
- {
- "n": "2013",
- "v": "2013"
- },
- {
- "n": "2012",
- "v": "2012"
- },
- {
- "n": "2011",
- "v": "2011"
- },
- {
- "n": "2010",
- "v": "2010"
- },
- {
- "n": "2009",
- "v": "2009"
- },
- {
- "n": "2008",
- "v": "2008"
- },
- {
- "n": "2007",
- "v": "2007"
- },
- {
- "n": "2006",
- "v": "2006"
- },
- {
- "n": "2005",
- "v": "2005"
- },
- {
- "n": "2004",
- "v": "2004"
- },
- {
- "n": "2003",
- "v": "2003"
- },
- {
- "n": "2002",
- "v": "2002"
- },
- {
- "n": "2001",
- "v": "2001"
- },
- {
- "n": "2000",
- "v": "2000"
- },
- {
- "n": "1999",
- "v": "1999"
- },
- {
- "n": "1998",
- "v": "1998"
- },
- {
- "n": "1997",
- "v": "1997"
- },
- {
- "n": "1996",
- "v": "1996"
- },
- {
- "n": "1995",
- "v": "1995"
- },
- {
- "n": "1994",
- "v": "1994"
- },
- {
- "n": "1993",
- "v": "1993"
- },
- {
- "n": "1992",
- "v": "1992"
- },
- {
- "n": "1991",
- "v": "1991"
- },
- {
- "n": "1990",
- "v": "1990"
- },
- {
- "n": "1989",
- "v": "1989"
- },
- {
- "n": "1988",
- "v": "1988"
- },
- {
- "n": "1987",
- "v": "1987"
- },
- {
- "n": "1986",
- "v": "1986"
- },
- {
- "n": "1985",
- "v": "1985"
- },
- {
- "n": "1984",
- "v": "1984"
- },
- {
- "n": "1983",
- "v": "1983"
- },
- {
- "n": "1982",
- "v": "1982"
- },
- {
- "n": "1981",
- "v": "1981"
- },
- {
- "n": "1980",
- "v": "1980"
- },
- {
- "n": "1979",
- "v": "1979"
- },
- {
- "n": "1978",
- "v": "1978"
- },
- {
- "n": "1977",
- "v": "1977"
- },
- {
- "n": "1976",
- "v": "1976"
- },
- {
- "n": "1975",
- "v": "1975"
- },
- {
- "n": "1974",
- "v": "1974"
- },
- {
- "n": "1973",
- "v": "1973"
- },
- {
- "n": "1972",
- "v": "1972"
- },
- {
- "n": "1971",
- "v": "1971"
- },
- {
- "n": "1970",
- "v": "1970"
- },
- {
- "n": "1969",
- "v": "1969"
- },
- {
- "n": "1968",
- "v": "1968"
- },
- {
- "n": "1967",
- "v": "1967"
- },
- {
- "n": "1966",
- "v": "1966"
- },
- {
- "n": "1965",
- "v": "1965"
- },
- {
- "n": "1964",
- "v": "1964"
- },
- {
- "n": "1963",
- "v": "1963"
- },
- {
- "n": "1962",
- "v": "1962"
- },
- {
- "n": "1961",
- "v": "1961"
- },
- {
- "n": "1960",
- "v": "1960"
- },
- {
- "n": "1959",
- "v": "1959"
- },
- {
- "n": "1958",
- "v": "1958"
- }
+ "key":"time",
+ "name":"時間",
+ "value":[
+ {"n":"時間全選","v":""},
+ {"n":"2024","v":"2024"},
+ {"n":"2023","v":"2023"},
+ {"n":"2022","v":"2022"},
+ {"n":"2021","v":"2021"},
+ {"n":"2020","v":"2020"},
+ {"n":"2019","v":"2019"},
+ {"n":"2018","v":"2018"},
+ {"n":"2017","v":"2017"},
+ {"n":"2016","v":"2016"},
+ {"n":"2015","v":"2015"},
+ {"n":"2014","v":"2014"},
+ {"n":"2013","v":"2013"},
+ {"n":"2012","v":"2012"},
+ {"n":"2011","v":"2011"},
+ {"n":"2010","v":"2010"},
+ {"n":"2009","v":"2009"},
+ {"n":"2008","v":"2008"},
+ {"n":"2007","v":"2007"},
+ {"n":"2006","v":"2006"},
+ {"n":"2005","v":"2005"},
+ {"n":"2004","v":"2004"},
+ {"n":"2003","v":"2003"},
+ {"n":"2002","v":"2002"},
+ {"n":"2001","v":"2001"},
+ {"n":"2000","v":"2000"},
+ {"n":"1999","v":"1999"},
+ {"n":"1998","v":"1998"},
+ {"n":"1997","v":"1997"},
+ {"n":"1996","v":"1996"},
+ {"n":"1995","v":"1995"},
+ {"n":"1994","v":"1994"},
+ {"n":"1993","v":"1993"},
+ {"n":"1992","v":"1992"},
+ {"n":"1991","v":"1991"},
+ {"n":"1990","v":"1990"},
+ {"n":"1989","v":"1989"},
+ {"n":"1988","v":"1988"},
+ {"n":"1987","v":"1987"},
+ {"n":"1986","v":"1986"},
+ {"n":"1985","v":"1985"},
+ {"n":"1984","v":"1984"},
+ {"n":"1983","v":"1983"},
+ {"n":"1982","v":"1982"},
+ {"n":"1981","v":"1981"},
+ {"n":"1980","v":"1980"},
+ {"n":"1979","v":"1979"},
+ {"n":"1978","v":"1978"},
+ {"n":"1977","v":"1977"},
+ {"n":"1976","v":"1976"},
+ {"n":"1975","v":"1975"},
+ {"n":"1974","v":"1974"},
+ {"n":"1973","v":"1973"},
+ {"n":"1972","v":"1972"},
+ {"n":"1971","v":"1971"},
+ {"n":"1970","v":"1970"},
+ {"n":"1969","v":"1969"},
+ {"n":"1968","v":"1968"},
+ {"n":"1967","v":"1967"},
+ {"n":"1966","v":"1966"},
+ {"n":"1965","v":"1965"},
+ {"n":"1964","v":"1964"},
+ {"n":"1963","v":"1963"},
+ {"n":"1962","v":"1962"},
+ {"n":"1961","v":"1961"},
+ {"n":"1960","v":"1960"},
+ {"n":"1959","v":"1959"},
+ {"n":"1958","v":"1958"}
]
},
{
- "key": "tid",
- "name": "中文",
- "value": [
- {
- "n": "地區🎶排序",
- "v": "歷史記錄片 地球記錄片 宇宙記錄片 海洋記錄片 戰爭記錄片 大自然生存記錄片"
- },
- {
- "n": "默认",
- "v": "PL documentary"
- },
- {
- "n": "CCTV 纪录片",
- "v": "PL CCTV 纪录片"
- },
- {
- "n": "BBC 纪录片",
- "v": "PL BBC 纪录片"
- },
- {
- "n": "国家地理",
- "v": "PL 国家地理 纪录片"
- },
- {
- "n": "Netflix纪录片",
- "v": "PL netflix 纪录片"
- },
- {
- "n": "BBC",
- "v": "PL BBC documentary"
- },
- {
- "n": "National Geographic",
- "v": "Pl National Geographic documentary"
- },
- {
- "n": "Netflix",
- "v": "PL netflix documentary"
- },
- {
- "n": "历史",
- "v": "PL 历史 纪录片"
- },
- {
- "n": "野性",
- "v": "PL 野性 纪录片"
- },
- {
- "n": "地球",
- "v": "PL 地球 纪录片"
- },
- {
- "n": "宇宙",
- "v": "PL 宇宙 纪录片"
- },
- {
- "n": "海洋",
- "v": "PL 海洋 纪录片"
- },
- {
- "n": "人文",
- "v": "PL 人文 纪录片"
- },
- {
- "n": "战争",
- "v": "PL 战争 纪录片"
- }
+ "key":"tid",
+ "name":"地區",
+ "value":[
+ {"n":"華語音樂","v":"華語音樂"},
+ {"n":"華語MV","v":"華語MV"},
+ {"n":"环球视听","v":"环球视听1980 @RippleOfficialEvent"},
+ {"n":"YouTube 點閱率最高","v":"YouTube 點閱率最高觀看次數最多華語歌曲"},
+ {"n":"海外抖音","v":"TikTok 翻唱 抖音 音樂"},
+ {"n":"粵語","v":"粵語 音樂"},
+ {"n":"國語","v":"國語 音樂"},
+ {"n":"大陆","v":"大陆 音乐"},
+ {"n":"香港","v":"香港 音乐"},
+ {"n":"台湾","v":"台湾 音乐"},
+ {"n":"新加坡","v":"新加坡 音乐"},
+ {"n":"馬來西亞","v":"馬來西亞 音乐"},
+ {"n":"泰國","v":"泰國 音乐"},
+ {"n":"越南","v":"越南 音乐"},
+ {"n":"印度","v":"印度 音乐"},
+ {"n":"韩国","v":"韩国 音乐"},
+ {"n":"日本","v":"日本 音乐"},
+ {"n":"欧美","v":"欧美 音乐"}
]
},
{
- "key": "tid",
- "name": "English",
- "value": [
- {
- "n": "History",
- "v": "PL Full history documentary"
- },
- {
- "n": "WILD",
- "v": "PL Full wild documentary"
- },
- {
- "n": "Earch",
- "v": "PL Full earth documentary"
- },
- {
- "n": "Universe",
- "v": "PL Full universe documentary"
- },
- {
- "n": "Oceans",
- "v": "PL Full oceans documentary"
- },
- {
- "n": "Humanism",
- "v": "PL Full humanism documentary"
- },
- {
- "n": "Wars",
- "v": "PL Full war documentary"
- }
+ "key":"tid",
+ "name":"愛好",
+ "value":[
+ {"n":"舞曲","v":"慢搖 夜店 低音 女聲 "},
+ {"n":"80-90","v":"80 90 音樂"},
+ {"n":"人聲","v":"人聲 音樂"},
+ {"n":"A8製造","v":"A8製造 工體音樂"},
+ {"n":"硬歌","v":"深水炸彈 音樂"},
+ {"n":"失傳已久","v":"嗨音雷虎 失傳 嗨音會所 音樂"},
+ {"n":"重低音DJ","v":"3D 8D 慢搖 重低音 音樂"},
+ {"n":"車載舞曲","v":"車載慢搖DJ歌曲串燒 深水炸彈DJ歌曲串燒 越南鼓DJ歌曲串燒 音樂"},
+ {"n":"超級女聲","v":"超級女聲"},
+ {"n":"tseries","v":"@tseries"}
]
},
{
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"歌手",
+ "value":[
+ {"n":"邁克爾傑克遜","v":"邁克爾傑克遜 演唱會,巡演 音樂"},
+ {"n":"張瑋伽","v":"張瑋伽 演唱會 巡演 音樂"},
+ {"n":"孫露","v":"孫露 演唱會 巡演 音樂"},
+ {"n":"鳳凰傳奇","v":"鳳凰傳奇 演 巡演 音樂"},
+ {"n":"龍梅子","v":"龍梅子 演唱會 巡演 音樂"},
+ {"n":"刀郎","v":"刀郎 演唱會 巡演 音樂"},
+ {"n":"S.H.E","v":"S.H.E 演唱會 巡演 音樂"},
+ {"n":"慕容曉曉","v":"慕容曉曉 演唱會 巡演 音樂"},
+ {"n":"東方紅豔","v":"東方紅豔 演唱會 巡演 音樂"},
+ {"n":"孟庭葦","v":"孟庭葦 演唱會 巡演 音樂"},
+ {"n":"斯琴高麗","v":"斯琴高麗 演唱會 巡演 音樂"},
+ {"n":"程響","v":"程響 演唱會 巡演 音樂"},
+ {"n":"蔣雪兒","v":"蔣雪兒 演唱會 巡演 音樂"}
]
}
],
- "音樂": [
+ "體育":[
{
- "key": "time",
- "name": "時間",
- "value": [
- {
- "n": "時間全選",
- "v": ""
- },
- {
- "n": "2025",
- "v": "2025"
- },
- {
- "n": "2024",
- "v": "2024"
- },
- {
- "n": "2023",
- "v": "2023"
- },
- {
- "n": "2022",
- "v": "2022"
- },
- {
- "n": "2021",
- "v": "2021"
- },
- {
- "n": "2020",
- "v": "2020"
- },
- {
- "n": "2019",
- "v": "2019"
- },
- {
- "n": "2018",
- "v": "2018"
- },
- {
- "n": "2017",
- "v": "2017"
- },
- {
- "n": "2016",
- "v": "2016"
- },
- {
- "n": "2015",
- "v": "2015"
- },
- {
- "n": "2014",
- "v": "2014"
- },
- {
- "n": "2013",
- "v": "2013"
- },
- {
- "n": "2012",
- "v": "2012"
- },
- {
- "n": "2011",
- "v": "2011"
- },
- {
- "n": "2010",
- "v": "2010"
- },
- {
- "n": "2009",
- "v": "2009"
- },
- {
- "n": "2008",
- "v": "2008"
- },
- {
- "n": "2007",
- "v": "2007"
- },
- {
- "n": "2006",
- "v": "2006"
- },
- {
- "n": "2005",
- "v": "2005"
- },
- {
- "n": "2004",
- "v": "2004"
- },
- {
- "n": "2003",
- "v": "2003"
- },
- {
- "n": "2002",
- "v": "2002"
- },
- {
- "n": "2001",
- "v": "2001"
- },
- {
- "n": "2000",
- "v": "2000"
- },
- {
- "n": "1999",
- "v": "1999"
- },
- {
- "n": "1998",
- "v": "1998"
- },
- {
- "n": "1997",
- "v": "1997"
- },
- {
- "n": "1996",
- "v": "1996"
- },
- {
- "n": "1995",
- "v": "1995"
- },
- {
- "n": "1994",
- "v": "1994"
- },
- {
- "n": "1993",
- "v": "1993"
- },
- {
- "n": "1992",
- "v": "1992"
- },
- {
- "n": "1991",
- "v": "1991"
- },
- {
- "n": "1990",
- "v": "1990"
- },
- {
- "n": "1989",
- "v": "1989"
- },
- {
- "n": "1988",
- "v": "1988"
- },
- {
- "n": "1987",
- "v": "1987"
- },
- {
- "n": "1986",
- "v": "1986"
- },
- {
- "n": "1985",
- "v": "1985"
- },
- {
- "n": "1984",
- "v": "1984"
- },
- {
- "n": "1983",
- "v": "1983"
- },
- {
- "n": "1982",
- "v": "1982"
- },
- {
- "n": "1981",
- "v": "1981"
- },
- {
- "n": "1980",
- "v": "1980"
- },
- {
- "n": "1979",
- "v": "1979"
- },
- {
- "n": "1978",
- "v": "1978"
- },
- {
- "n": "1977",
- "v": "1977"
- },
- {
- "n": "1976",
- "v": "1976"
- },
- {
- "n": "1975",
- "v": "1975"
- },
- {
- "n": "1974",
- "v": "1974"
- },
- {
- "n": "1973",
- "v": "1973"
- },
- {
- "n": "1972",
- "v": "1972"
- },
- {
- "n": "1971",
- "v": "1971"
- },
- {
- "n": "1970",
- "v": "1970"
- },
- {
- "n": "1969",
- "v": "1969"
- },
- {
- "n": "1968",
- "v": "1968"
- },
- {
- "n": "1967",
- "v": "1967"
- },
- {
- "n": "1966",
- "v": "1966"
- },
- {
- "n": "1965",
- "v": "1965"
- },
- {
- "n": "1964",
- "v": "1964"
- },
- {
- "n": "1963",
- "v": "1963"
- },
- {
- "n": "1962",
- "v": "1962"
- },
- {
- "n": "1961",
- "v": "1961"
- },
- {
- "n": "1960",
- "v": "1960"
- },
- {
- "n": "1959",
- "v": "1959"
- },
- {
- "n": "1958",
- "v": "1958"
- }
+ "key":"time",
+ "name":"時間",
+ "value":[
+ {"n":"時間全選","v":""},
+ {"n":"2024","v":"2024"},
+ {"n":"2023","v":"2023"},
+ {"n":"2022","v":"2022"},
+ {"n":"2021","v":"2021"},
+ {"n":"2020","v":"2020"},
+ {"n":"2019","v":"2019"},
+ {"n":"2018","v":"2018"},
+ {"n":"2017","v":"2017"},
+ {"n":"2016","v":"2016"},
+ {"n":"2015","v":"2015"},
+ {"n":"2014","v":"2014"},
+ {"n":"2013","v":"2013"},
+ {"n":"2012","v":"2012"},
+ {"n":"2011","v":"2011"},
+ {"n":"2010","v":"2010"},
+ {"n":"2009","v":"2009"},
+ {"n":"2008","v":"2008"},
+ {"n":"2007","v":"2007"},
+ {"n":"2006","v":"2006"},
+ {"n":"2005","v":"2005"},
+ {"n":"2004","v":"2004"},
+ {"n":"2003","v":"2003"},
+ {"n":"2002","v":"2002"},
+ {"n":"2001","v":"2001"},
+ {"n":"2000","v":"2000"},
+ {"n":"1999","v":"1999"},
+ {"n":"1998","v":"1998"},
+ {"n":"1997","v":"1997"},
+ {"n":"1996","v":"1996"},
+ {"n":"1995","v":"1995"},
+ {"n":"1994","v":"1994"},
+ {"n":"1993","v":"1993"},
+ {"n":"1992","v":"1992"},
+ {"n":"1991","v":"1991"},
+ {"n":"1990","v":"1990"},
+ {"n":"1989","v":"1989"},
+ {"n":"1988","v":"1988"},
+ {"n":"1987","v":"1987"},
+ {"n":"1986","v":"1986"},
+ {"n":"1985","v":"1985"},
+ {"n":"1984","v":"1984"},
+ {"n":"1983","v":"1983"},
+ {"n":"1982","v":"1982"},
+ {"n":"1981","v":"1981"},
+ {"n":"1980","v":"1980"},
+ {"n":"1979","v":"1979"},
+ {"n":"1978","v":"1978"},
+ {"n":"1977","v":"1977"},
+ {"n":"1976","v":"1976"},
+ {"n":"1975","v":"1975"},
+ {"n":"1974","v":"1974"},
+ {"n":"1973","v":"1973"},
+ {"n":"1972","v":"1972"},
+ {"n":"1971","v":"1971"},
+ {"n":"1970","v":"1970"},
+ {"n":"1969","v":"1969"},
+ {"n":"1968","v":"1968"},
+ {"n":"1967","v":"1967"},
+ {"n":"1966","v":"1966"},
+ {"n":"1965","v":"1965"},
+ {"n":"1964","v":"1964"},
+ {"n":"1963","v":"1963"},
+ {"n":"1962","v":"1962"},
+ {"n":"1961","v":"1961"},
+ {"n":"1960","v":"1960"},
+ {"n":"1959","v":"1959"},
+ {"n":"1958","v":"1958"}
]
},
{
- "key": "tid",
- "name": "地區",
- "value": [
- {
- "n": "華語音樂",
- "v": "PL 華語音樂"
- },
- {
- "n": "華語MV",
- "v": "PL 華語MV"
- },
- {
- "n": "环球视听",
- "v": "PL 环球视听"
- },
- {
- "n": "YouTube 點閱率最高",
- "v": "點閱率最高華語歌曲"
- },
- {
- "n": "海外抖音",
- "v": "PL TikTok 抖音 音樂"
- },
- {
- "n": "粵語",
- "v": "PL 粵語 音樂"
- },
- {
- "n": "國語",
- "v": "PL 國語 音樂"
- },
- {
- "n": "大陆",
- "v": "PL 大陆 音乐"
- },
- {
- "n": "香港",
- "v": "PL 香港 音乐"
- },
- {
- "n": "台湾",
- "v": "PL 台湾 音乐"
- },
- {
- "n": "新加坡",
- "v": "PL 新加坡 音乐"
- },
- {
- "n": "馬來西亞",
- "v": "PL 馬來西亞 音乐"
- },
- {
- "n": "泰國",
- "v": "PL 泰國 音乐"
- },
- {
- "n": "越南",
- "v": "PL 越南 音乐"
- },
- {
- "n": "印度",
- "v": "PL 印度 音乐"
- },
- {
- "n": "韩国",
- "v": "PL 韩国 音乐"
- },
- {
- "n": "日本",
- "v": "PL 日本 音乐"
- },
- {
- "n": "欧美",
- "v": "PL 欧美 音乐"
- },
- {
- "n": "时光音乐会 MV",
- "v": "时光音乐会MV"
- },
- {
- "n": "中国好声音 MV",
- "v": "中国好声音MV"
- },
- {
- "n": "滚石 MV",
- "v": "滚石MV"
- },
- {
- "n": "古风 MV",
- "v": "古风MV"
- },
- {
- "n": "韩国女团 MV",
- "v": "韩国女团MV"
- },
- {
- "n": "欧美",
- "v": "欧美 音乐"
- },
- {
- "n": "BillBoard",
- "v": "BillBoard"
- }
+ "key":"tid",
+ "name":"中文",
+ "value":[
+ {"n":"默认","v":""},
+ {"n":"體育直播","v":"体育直播"},
+ {"n":"體育赛事","v":"体育赛事"},
+ {"n":"足球比賽","v":"足球賽事"},
+ {"n":"篮球比賽","v":"篮球賽事"},
+ {"n":"极限運動","v":"极限運動"},
+ {"n":"室内運動","v":"室内运动"},
+ {"n":"户外運動","v":"户外运动"},
+ {"n":"健身運動","v":"健身運動"}
]
},
{
- "key": "tid",
- "name": "愛好",
- "value": [
- {
- "n": "合辑",
- "v": "合辑"
- },
- {
- "n": "超級女聲",
- "v": "超級女聲"
- },
- {
- "n": "whitneyhouston",
- "v": "@whitneyhoustonmusic"
- },
- {
- "n": "玛丽.凯丽",
- "v": "@MariahCarey"
- },
- {
- "n": "LadyGaga",
- "v": "@LadyGaga"
- },
- {
- "n": "G.E.M邓紫棋",
- "v": "@gem0816"
- },
- {
- "n": "麦当娜",
- "v": "@madonna"
- },
- {
- "n": "Taylor Swift",
- "v": "@TaylorSwift"
- },
- {
- "n": "舞曲",
- "v": "蹦迪現場 慢搖 夜店 低音 女聲 "
- },
- {
- "n": "80-90",
- "v": "80 90 音樂"
- },
- {
- "n": "人聲",
- "v": "人聲 音樂"
- },
- {
- "n": "硬歌",
- "v": "深水炸弹"
- },
- {
- "n": "A8製造",
- "v": "A8製造 工體音樂"
- },
- {
- "n": "中国MTV",
- "v": "@ChineseMusicTV"
- },
- {
- "n": "滚石",
- "v": "@RockRecordsTaipei"
- },
- {
- "n": "失傳已久",
- "v": "嗨音雷虎 失傳 嗨音會所 音樂"
- },
- {
- "n": "重低音 DJ",
- "v": "重低音 DJ"
- },
- {
- "n": "車載舞曲",
- "v": "車載慢搖"
- },
- {
- "n": "超級女聲",
- "v": "超級女聲"
- },
- {
- "n": "tseries",
- "v": "@tseries"
- },
- {
- "n": "戲曲",
- "v": "秦腔 京剧 越剧 黄梅戏 评剧 豫剧 昆曲 高腔 梆子腔 河北梆子 晋剧 蒲剧 雁剧 上党梆子 武安平调 二人台 吉剧 龙江剧 越调 河南曲剧 山东梆子 淮剧 滑稽戏 婺剧 绍剧 徽剧 闽剧 莆仙戏 梨园戏 高甲戏 赣剧 采茶戏 汉剧 湘剧 祁剧 湖南花鼓戏 粤剧 潮剧 桂剧 彩调 壮剧 川剧 黔剧 滇剧 傣剧 藏剧 皮影戏"
- }
+ "key":"tid",
+ "name":"English",
+ "value":[
+ {"n":"Live","v":"live sports"},
+ {"n":"Games","v":"live games"},
+ {"n":"Soccer","v":"live soccer"},
+ {"n":"NBA","v":"NBA"},
+ {"n":"Extreme","v":"extreme sports"},
+ {"n":"InDoor","v":"indoor sports"},
+ {"n":"OutDoor","v":"outdoor sports"},
+ {"n":"Workout","v":"workout"}
]
},
{
- "key": "tid",
- "name": "歌手",
- "value": [
- {
- "n": "邓丽君",
- "v": "邓丽君 音乐"
- },
- {
- "n": "林忆莲",
- "v": "林忆莲 音樂"
- },
- {
- "n": "陈慧娴",
- "v": "陈慧娴音樂"
- },
- {
- "n": "韩宝仪",
- "v": "韩宝仪 音樂"
- },
- {
- "n": "张学友",
- "v": "张学友 音樂"
- },
- {
- "n": "李宗盛",
- "v": "李宗盛 音樂"
- },
- {
- "n": "罗大佑",
- "v": "罗大佑 音樂"
- },
- {
- "n": "周杰伦",
- "v": "周杰伦 音樂"
- },
- {
- "n": "张玮伽",
- "v": "张玮伽 音樂"
- },
- {
- "n": "张惠妹",
- "v": "张惠妹 音樂"
- },
- {
- "n": "斯琴高麗",
- "v": "斯琴高麗 音樂"
- },
- {
- "n": "林俊杰",
- "v": "@jjlin • 音乐"
- },
- {
- "n": "周深",
- "v": "周深 音樂"
- },
- {
- "n": "張瑋伽",
- "v": "張瑋伽 演唱會 巡演 音樂"
- },
- {
- "n": "孫露",
- "v": "孫露 演唱會 巡演 音樂"
- },
- {
- "n": "鳳凰傳奇",
- "v": "鳳凰傳奇 演 巡演 音樂"
- },
- {
- "n": "刀郎",
- "v": "刀郎 演唱會 巡演 音樂"
- },
- {
- "n": "S.H.E",
- "v": "S.H.E 演唱會 巡演 音樂"
- },
- {
- "n": "慕容曉曉",
- "v": "慕容曉曉 演唱會 巡演 音樂"
- },
- {
- "n": "東方紅豔",
- "v": "東方紅豔 演唱會 巡演 音樂"
- },
- {
- "n": "孟庭葦",
- "v": "孟庭葦 演唱會 巡演 音樂"
- },
- {
- "n": "斯琴高麗",
- "v": "斯琴高麗 演唱會 巡演 音樂"
- },
- {
- "n": "程響",
- "v": "程響 演唱會 巡演 音樂"
- },
- {
- "n": "蔣雪兒",
- "v": "蔣雪兒 演唱會 巡演 音樂"
- },
- {
- "n": "迈克尔杰克逊",
- "v": "麥可傑克森"
- }
- ]
- },
- {
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"體育",
+ "value":[
+ {"n":"女足港場","v":"女足港場 @Hong KongWomensStadium"},
+ {"n":"全國校運動會","v":"全國大專 校院運動會 全中運 女子組賽事 全國中等 學校運動會"},
+ {"n":"女中儀隊","v":"北一女中樂儀旗隊永續發展協會 北一女中家長會樂儀旗家長後援會 北一女中儀隊校友隊 台灣 学校运动会 景美女中儀隊 北一女樂儀旗隊 full樂儀隊 "},
+ {"n":"校園熱舞","v":"full 校園熱舞 開南熱無 開南大學課外活動組 女生熱舞社 南寶熱舞社 寶踐熱舞社 NTDC 熱舞社 STUST"},
+ {"n":"红星体育官方频道","v":"红星体育官方频道【高清直播】"},
+ {"n":"中國體育比賽傳奇","v":"中國體育比賽傳奇"},
+ {"n":"愛爾達體育家族","v":"愛爾達體育家族 ELTA Sports"},
+ {"n":"公視體育","v":"公視體育"},
+ {"n":"體育之光","v":"體育之光"},
+ {"n":"偶然體育賽事","v":"偶然體育賽事"}
]
}
],
- "體育": [
+ "時尚潮流":[
{
- "key": "time",
- "name": "時間",
- "value": [
- {
- "n": "時間全選",
- "v": ""
- },
- {
- "n": "2025",
- "v": "2025"
- },
- {
- "n": "2024",
- "v": "2024"
- },
- {
- "n": "2023",
- "v": "2023"
- },
- {
- "n": "2022",
- "v": "2022"
- },
- {
- "n": "2021",
- "v": "2021"
- },
- {
- "n": "2020",
- "v": "2020"
- },
- {
- "n": "2019",
- "v": "2019"
- },
- {
- "n": "2018",
- "v": "2018"
- },
- {
- "n": "2017",
- "v": "2017"
- },
- {
- "n": "2016",
- "v": "2016"
- },
- {
- "n": "2015",
- "v": "2015"
- },
- {
- "n": "2014",
- "v": "2014"
- },
- {
- "n": "2013",
- "v": "2013"
- },
- {
- "n": "2012",
- "v": "2012"
- },
- {
- "n": "2011",
- "v": "2011"
- },
- {
- "n": "2010",
- "v": "2010"
- },
- {
- "n": "2009",
- "v": "2009"
- },
- {
- "n": "2008",
- "v": "2008"
- },
- {
- "n": "2007",
- "v": "2007"
- },
- {
- "n": "2006",
- "v": "2006"
- },
- {
- "n": "2005",
- "v": "2005"
- },
- {
- "n": "2004",
- "v": "2004"
- },
- {
- "n": "2003",
- "v": "2003"
- },
- {
- "n": "2002",
- "v": "2002"
- },
- {
- "n": "2001",
- "v": "2001"
- },
- {
- "n": "2000",
- "v": "2000"
- },
- {
- "n": "1999",
- "v": "1999"
- },
- {
- "n": "1998",
- "v": "1998"
- },
- {
- "n": "1997",
- "v": "1997"
- },
- {
- "n": "1996",
- "v": "1996"
- },
- {
- "n": "1995",
- "v": "1995"
- },
- {
- "n": "1994",
- "v": "1994"
- },
- {
- "n": "1993",
- "v": "1993"
- },
- {
- "n": "1992",
- "v": "1992"
- },
- {
- "n": "1991",
- "v": "1991"
- },
- {
- "n": "1990",
- "v": "1990"
- },
- {
- "n": "1989",
- "v": "1989"
- },
- {
- "n": "1988",
- "v": "1988"
- },
- {
- "n": "1987",
- "v": "1987"
- },
- {
- "n": "1986",
- "v": "1986"
- },
- {
- "n": "1985",
- "v": "1985"
- },
- {
- "n": "1984",
- "v": "1984"
- },
- {
- "n": "1983",
- "v": "1983"
- },
- {
- "n": "1982",
- "v": "1982"
- },
- {
- "n": "1981",
- "v": "1981"
- },
- {
- "n": "1980",
- "v": "1980"
- },
- {
- "n": "1979",
- "v": "1979"
- },
- {
- "n": "1978",
- "v": "1978"
- },
- {
- "n": "1977",
- "v": "1977"
- },
- {
- "n": "1976",
- "v": "1976"
- },
- {
- "n": "1975",
- "v": "1975"
- },
- {
- "n": "1974",
- "v": "1974"
- },
- {
- "n": "1973",
- "v": "1973"
- },
- {
- "n": "1972",
- "v": "1972"
- },
- {
- "n": "1971",
- "v": "1971"
- },
- {
- "n": "1970",
- "v": "1970"
- },
- {
- "n": "1969",
- "v": "1969"
- },
- {
- "n": "1968",
- "v": "1968"
- },
- {
- "n": "1967",
- "v": "1967"
- },
- {
- "n": "1966",
- "v": "1966"
- },
- {
- "n": "1965",
- "v": "1965"
- },
- {
- "n": "1964",
- "v": "1964"
- },
- {
- "n": "1963",
- "v": "1963"
- },
- {
- "n": "1962",
- "v": "1962"
- },
- {
- "n": "1961",
- "v": "1961"
- },
- {
- "n": "1960",
- "v": "1960"
- },
- {
- "n": "1959",
- "v": "1959"
- },
- {
- "n": "1958",
- "v": "1958"
- }
+ "key":"tid",
+ "name":"時裝秀",
+ "value":[
+ {"n":"街舞","v":"脫衣舞 丁字褲 街舞 太空步 機械舞 舞 裸體舞蹈 霹靂舞 魔性舞蹈 鬼步舞 木偶舞 女性藝術舞蹈"},
+ {"n":"時尚走秀","v":"T台走秀 lingerie show"},
+ {"n":"時裝秀","v":"hdr ASM lingerieTV 東京ファッションショー 下着ショー"},
+ {"n":"潮流秀","v":"FASHION IN UHD"},
+ {"n":"時裝模特","v":"FASHION Runway"},
+ {"n":"模特","v":"比基尼 泳裝 頂級車模 空姐 寫真 Car model Stewardess Portrait"},
+ {"n":"裸体秀","v":"hdr 人體藝術 裸体秀 Nude show"},
+ {"n":"無限亂鬥","v":"hdr 廟會秀 無限HD 公廟 鋼管舞 脫衣舞 舞女 清純 寫真"}
]
},
{
- "key": "tid",
- "name": "中文",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "休育直播",
- "v": "體育直播"
- },
- {
- "n": "休育赛事",
- "v": "體育赛事"
- },
- {
- "n": "足球比赛",
- "v": "足球賽事"
- },
- {
- "n": "篮球比赛",
- "v": "篮球賽事"
- },
- {
- "n": "极限运动",
- "v": "极限運動"
- },
- {
- "n": "室内运动",
- "v": "室内運動"
- },
- {
- "n": "户外运动",
- "v": "户外運動"
- },
- {
- "n": "瑜伽健身",
- "v": "瑜珈健身"
- },
- {
- "n": "健身运动",
- "v": "健身運動"
- }
+ "key":"tid",
+ "name":"小姐姐",
+ "value":[
+ {"n":"小姐姐超清","v":"小姐姐超清"},
+ {"n":"国内小姐姐","v":"快手模特 抖音模特 国内小姐姐"},
+ {"n":"韩国小姐姐","v":"韩国小姐姐"},
+ {"n":"日本小姐姐","v":"日本小姐姐"},
+ {"n":"俄罗斯小姐姐","v":"俄罗斯小姐姐"},
+ {"n":"混血小姐姐","v":"混血小姐姐"},
+ {"n":"越南小姐姐","v":"越南小姐姐"},
+ {"n":"Al小姐姐","v":"Al美女超清"},
+ {"n":"抖音热门小姐姐","v":"抖音热门小姐姐"},
+ {"n":"快手热门美女","v":"快手热门美女"},
+ {"n":"打碟小姐姐","v":"打碟小姐姐"},
+ {"n":"冲浪小姐姐","v":"冲浪小姐姐"},
+ {"n":"蹦迪小姐姐","v":"蹦迪小姐姐"},
+ {"n":"艺校小姐姐","v":"艺校小姐姐"},
+ {"n":"环球小姐","v":"环球小姐"},
+ {"n":"泰国人妖","v":"泰国人妖"},
+ {"n":"人间胸器","v":"人间胸器"}
]
},
{
- "key": "tid",
- "name": "English",
- "value": [
- {
- "n": "Live",
- "v": "live sports"
- },
- {
- "n": "Games",
- "v": "live games"
- },
- {
- "n": "Soccer",
- "v": "live soccer"
- },
- {
- "n": "NBA",
- "v": "NBA"
- },
- {
- "n": "Extreme",
- "v": "extreme sports"
- },
- {
- "n": "InDoor",
- "v": "indoor sports"
- },
- {
- "n": "OutDoor",
- "v": "outdoor sports"
- },
- {
- "n": "Workout",
- "v": "workout"
- }
- ]
- },
- {
- "key": "tid",
- "name": "體育",
- "value": [
- {
- "n": "女足港場",
- "v": "女足港場 @Hong KongWomensStadium"
- },
- {
- "n": "全國校運動會",
- "v": "全國大專 校院運動會 全中運 女子組賽事 全國中等 學校運動會"
- },
- {
- "n": "女中儀隊",
- "v": "北一女中樂儀旗隊永續發展協會 北一女中家長會樂儀旗家長後援會 北一女中儀隊校友隊 台灣 学校运动会 景美女中儀隊 北一女樂儀旗隊 full樂儀隊 "
- },
- {
- "n": "校園熱舞",
- "v": "full 校園熱舞 開南熱無 開南大學課外活動組 女生熱舞社 南寶熱舞社 寶踐熱舞社 NTDC 熱舞社 STUST"
- },
- {
- "n": "红星体育官方频道",
- "v": "红星体育官方频道【高清直播】"
- },
- {
- "n": "中國體育比賽傳奇",
- "v": "中國體育比賽傳奇"
- },
- {
- "n": "愛爾達體育家族",
- "v": "愛爾達體育家族 ELTA Sports"
- },
- {
- "n": "公視體育",
- "v": "公視體育"
- },
- {
- "n": "體育之光",
- "v": "體育之光"
- },
- {
- "n": "偶然體育賽事",
- "v": "偶然體育賽事"
- }
- ]
- },
- {
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"English",
+ "value":[
+ {"n":"sexy Miss","v":"sexy Miss"},
+ {"n":"Hot sexy Girl","v":"Hot sexy Girl"},
+ {"n":"Korean Girl","v":"Korean sexy Girl"},
+ {"n":"Japanese Girl","v":"Japanese sexy Girl"},
+ {"n":"Russian Girl","v":"Russian sexy Girl"},
+ {"n":"Vietnamese Girl","v":"Vietnamese sexy Girl"},
+ {"n":"AI Girl","v":"AI Girl"},
+ {"n":"TikTok Hot Siste","v":"TikTok Hot sexy Girl"},
+ {"n":"Cute Girl","v":"sexy Cute Girl"},
+ {"n":"Girl Dj","v":"sexy Girl Dj"},
+ {"n":"Girl Surfer","v":"sexy Girl Surfer"},
+ {"n":"Dance Girl","v":"Dance sexy Girl"},
+ {"n":"Miss Universe","v":"Miss Universe"},
+ {"n":"Thai Shemale","v":"Thai Shemale"}
]
}
],
- "時尚": [
+ "解說":[
{
- "key": "tid",
- "name": "时装秀",
- "value": [
- {
- "n": "街舞",
- "v": "街舞"
- },
- {
- "n": "時裝秀",
- "v": "hdr ASM lingerieTV 東京ファッションショー 下着ショー"
- },
- {
- "n": "潮流秀",
- "v": "FASHION IN UHD"
- },
- {
- "n": "時尚走秀",
- "v": "時尚走秀 Fashion show"
- },
- {
- "n": "时装模特",
- "v": "FASHION Runway"
- },
- {
- "n": "模特",
- "v": "比基尼 泳裝 頂級車模 空姐 寫真 Car model Stewardess Portrait"
- },
- {
- "n": "裸体秀",
- "v": "hdr 人體藝術 裸体秀 Nude show"
- },
- {
- "n": "無限亂鬥",
- "v": "hdr 廟會秀 無限HD 公廟 鋼管舞 脫衣舞 舞女 清純 寫真"
- }
- ]
- },
- {
- "key": "tid",
- "name": "小姐姐",
- "value": [
- {
- "n": "小姐姐超清",
- "v": "小姐姐超清"
- },
- {
- "n": "国内小姐姐",
- "v": "国内小姐姐"
- },
- {
- "n": "韩国小姐姐",
- "v": "韩国小姐姐"
- },
- {
- "n": "日本小姐姐",
- "v": "日本小姐姐"
- },
- {
- "n": "俄罗斯小姐姐",
- "v": "俄罗斯小姐姐"
- },
- {
- "n": "混血小姐姐",
- "v": "混血小姐姐"
- },
- {
- "n": "越南小姐姐",
- "v": "越南小姐姐"
- },
- {
- "n": "Al小姐姐",
- "v": "Al美女超清"
- },
- {
- "n": "抖音热门小姐姐",
- "v": "抖音热门小姐姐"
- },
- {
- "n": "快手热门美女",
- "v": "快手热门美女"
- },
- {
- "n": "打碟小姐姐",
- "v": "打碟小姐姐"
- },
- {
- "n": "冲浪小姐姐",
- "v": "冲浪小姐姐"
- },
- {
- "n": "蹦迪小姐姐",
- "v": "蹦迪小姐姐"
- },
- {
- "n": "艺校小姐姐",
- "v": "艺校小姐姐"
- },
- {
- "n": "环球小姐",
- "v": "环球小姐"
- },
- {
- "n": "泰国人妖",
- "v": "泰国人妖"
- },
- {
- "n": "人间胸器",
- "v": "人间胸器"
- }
- ]
- },
- {
- "key": "tid",
- "name": "English",
- "value": [
- {
- "n": "sexy Miss",
- "v": "sexy Miss"
- },
- {
- "n": "Hot sexy Girl",
- "v": "Hot sexy Girl"
- },
- {
- "n": "Korean Girl",
- "v": "Korean sexy Girl"
- },
- {
- "n": "Japanese Girl",
- "v": "Japanese sexy Girl"
- },
- {
- "n": "Russian Girl",
- "v": "Russian sexy Girl"
- },
- {
- "n": "Vietnamese Girl",
- "v": "Vietnamese sexy Girl"
- },
- {
- "n": "AI Girl",
- "v": "AI Girl"
- },
- {
- "n": "TikTok Hot Siste",
- "v": "TikTok Hot sexy Girl"
- },
- {
- "n": "Cute Girl",
- "v": "sexy Cute Girl"
- },
- {
- "n": "Girl Dj",
- "v": "sexy Girl Dj"
- },
- {
- "n": "Girl Surfer",
- "v": "sexy Girl Surfer"
- },
- {
- "n": "Dance Girl",
- "v": "Dance sexy Girl"
- },
- {
- "n": "Miss Universe",
- "v": "Miss Universe"
- },
- {
- "n": "Thai Shemale",
- "v": "Thai Shemale"
- }
- ]
- },
- {
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"頻道主",
+ "value":[
+ {"n":"宇哥侃故事","v":"@yuge"},
+ {"n":"零度解说","v":"@lingdujieshuo"}
]
}
],
- "解說": [
+ "LIST:HDR,Girls HDR,Landscape HDR,Walk HDR":[
{
- "key": "tid",
- "name": "頻道主",
- "value": [
- {
- "n": "宇哥侃故事",
- "v": "PL 宇哥侃故事"
- },
- {
- "n": "零度解说",
- "v": "PL 零度解说"
- }
- ]
- },
- {
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"風景",
+ "value":[
+ {"n":"運動","v":"GoPro 女翼裝飛行 極限自行車運動"},
+ {"n":"風景","v":"hdr 大自然"},
+ {"n":"Links TV頻道主","v":"@linksphotograph Links TV hdr"},
+ {"n":"放鬆","v":"hdr 放鬆"},
+ {"n":"動物世界","v":"hdr Carnivorous Animals 動物世界"},
+ {"n":"深海世界","v":"hdr Invertebrate Fish 深海世界"},
+ {"n":"飛禽走獸","v":"hdr Birds of Prey Columbiform Birds Passerine Birds"},
+ {"n":"生物世界","v":"hdr Amphibians Reptiles 生物世界"}
]
}
],
- "战情室": [
+ "Full YouTube":[
{
- "key": "tid",
- "name": "栏目",
- "value": [
- {
- "n": "军情观察室",
- "v": "|PL-K7NYq6mtAuw3rO7t2rDUhI3qbS1rLMj"
- },
- {
- "n": "环球大战线",
- "v": "|PLwHjhKNud0GiqFBpW5aorjeIVO4mZAn_b"
- },
- {
- "n": "少康战情室",
- "v": "|PL64Si-sSRnvZFmksKhDl34-Rgv2NGFbK-"
- },
- {
- "n": "国际直球对决",
- "v": "|PLvHT0yeWYIuASUZjoW8OXe4e_UkgP7qDU"
- },
- {
- "n": "全球大视野",
- "v": "|PLvHT0yeWYIuDyLVv1yDiIxhtk1ZQ92_RY"
- },
- {
- "n": "前进战略高地",
- "v": "|PLvHT0yeWYIuBGUWA2KySjgKdPEUFuM8Dc"
- },
- {
- "n": "全广角",
- "v": "|PL7I7pJTFhwdoALXJ4QyPjaCIRNm2qBCpU"
- }
+ "key":"tid",
+ "name":"頻道主",
+ "value":[
+ {"n":"李子柒","v":"李子柒 Liziqi @cnliziqi"},
+ {"n":"滇西小哥","v":"滇西小哥 @dianxixiaoge"},
+ {"n":"老高與小茉","v":"老高與小茉 @laogao"},
+ {"n":"李永樂老師","v":"李永樂老師 @TchLiyongle"}
+ ]
+ },
+ {
+ "key":"tid",
+ "name":"美食頻道主",
+ "value":[
+ {"n":"美食作家王刚","v":"美食作家王刚 @chefwang"},
+ {"n":"小高姐的 Magic Ingredients","v":"小高姐的 Magic Ingredients @MagicIngredients"},
+ {"n":"小穎美食","v":"小穎美食 @XiaoYingFood"}
+ ]
+ },
+ {
+ "key":"tid",
+ "name":"野外頻道主",
+ "value":[
+ {"n":"野外求生","v":"primitivetechnology9550 @primitivetechnology9550"}
+ ]
+ },
+ {
+ "key":"tid",
+ "name":"科普頻道主",
+ "value":[
+ {"n":"科普","v":"Mr Beast@MrBeast"},
+ {"n":"航天大學","v":"Airforceproud95 @Airforceproud95"},
+ {"n":"世界大戰","v":"TheGreatWar @TheGreatWar"},
+ {"n":"MarkRober","v":"Mark Rober @MarkRober"}
+ ]
+ },
+ {
+ "key":"tid",
+ "name":"教材",
+ "value":[
+ {"n":"不良林","v":"不良林"},
+ {"n":"涌哥侃侃","v":"涌哥侃侃 @ygkkk"},
+ {"n":"悟空的日常","v":"悟空的日常"}
]
}
],
- "自媒體": [
+ "宇宙":[
{
- "key": "tid",
- "name": "频道主",
- "value": [
- {
- "n": "cctv电视剧",
- "v": "UC7Vl0YiY0rDlovqcCFN4yTA"
- },
- {
- "n": "王剑每日观察",
- "v": "PD王剑每日观察"
- },
- {
- "n": "红岸视野",
- "v": "PD红岸视野"
- },
- {
- "n": "私人局",
- "v": "PD私人局"
- },
- {
- "n": "内部看美国",
- "v": "PD内部看美国"
- },
- {
- "n": "饭圈人间观察",
- "v": "PD饭圈人间观察"
- },
- {
- "n": "孤烟暮蝉",
- "v": "PD孤烟暮蝉"
- },
- {
- "n": "老高与小茉",
- "v": "PD老高与小茉"
- },
- {
- "n": "海洋探险",
- "v": "UCJUIqG9JUcQ5saqXSYTF0gg"
- }
- ]
- }
- ],
- "HDR": [
- {
- "key": "tid",
- "name": "風景",
- "value": [
- {
- "n": "運動",
- "v": "GoPro 女翼裝飛行 極限自行車運動"
- },
- {
- "n": "風景",
- "v": "hdr 大自然"
- },
- {
- "n": "Links TV 頻道主",
- "v": "@linksphotograph Links TV hdr"
- },
- {
- "n": "放鬆",
- "v": "hdr 放鬆"
- },
- {
- "n": "動物世界",
- "v": "hdr 動物世界 Carnivorous Animals"
- },
- {
- "n": "深海世界",
- "v": "hdr 深海世界 Invertebrate Fish"
- },
- {
- "n": "飛禽走獸",
- "v": "hdr Birds of Prey Columbiform Birds Passerine Birds"
- },
- {
- "n": "生物世界",
- "v": "hdr 生物世界 Amphibians Reptiles"
- }
- ]
- }
- ],
- "Full YouTube": [
- {
- "key": "tid",
- "name": "頻道主",
- "value": [
- {
- "n": "李子柒",
- "v": "李子柒 Liziqi @cnliziqi"
- },
- {
- "n": "滇西小哥",
- "v": "滇西小哥 @dianxixiaoge"
- },
- {
- "n": "老高與小茉",
- "v": "老高與小茉 @laogao"
- },
- {
- "n": "李永樂老師",
- "v": "李永樂老師 @TchLiyongle"
- }
+ "key":"tid",
+ "name":"科普知識",
+ "value":[
+ {"n":"宇宙","v":"光年 黑洞 銀河系 空間站 太空技術"},
+ {"n":"粒子","v":"空間粒子 宇宙磁場 四維空間 元素 量子 光波 光源 靈魂"},
+ {"n":"靠蒙","v":"microorganism"}
]
},
{
- "key": "tid",
- "name": "美食頻道主",
- "value": [
- {
- "n": "美食作家王刚",
- "v": "美食作家王刚 @chefwang"
- },
- {
- "n": "小高姐的 Magic Ingredients",
- "v": "小高姐的 Magic Ingredients @MagicIngredients"
- },
- {
- "n": "小穎美食",
- "v": "小穎美食 @XiaoYingFood"
- }
- ]
- },
- {
- "key": "tid",
- "name": "野外頻道主",
- "value": [
- {
- "n": "野外求生",
- "v": "@primitivetechnology9550"
- }
- ]
- },
- {
- "key": "tid",
- "name": "科普频道主",
- "value": [
- {
- "n": "科普",
- "v": "Mr Beast@MrBeast"
- },
- {
- "n": "航天大學",
- "v": "Airforceproud95 @Airforceproud95"
- },
- {
- "n": "世界大戰",
- "v": "TheGreatWar @TheGreatWar"
- },
- {
- "n": "MarkRober",
- "v": "Mark Rober @MarkRober"
- }
- ]
- },
- {
- "key": "tid",
- "name": "教材",
- "value": [
- {
- "n": "不良林",
- "v": "不良林"
- },
- {
- "n": "涌哥侃侃",
- "v": "涌哥侃侃 @ygkkk"
- },
- {
- "n": "悟空的日常",
- "v": "悟空的日常"
- }
- ]
- },
- {
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
- ]
- }
- ],
- "宇宙": [
- {
- "key": "tid",
- "name": "科普知識",
- "value": [
- {
- "n": "宇宙",
- "v": "光年 黑洞 銀河系 空間站 太空技術"
- },
- {
- "n": "粒子",
- "v": "空間粒子 宇宙磁場 四維空間 元素 量子 光波 光源 靈魂"
- },
- {
- "n": "靠蒙",
- "v": "microorganism"
- }
- ]
- },
- {
- "key": "tid",
- "name": "歷史科普",
- "value": [
- {
- "n": "世界大戰",
- "v": "世界大戰 二戰 日侵 八國聯軍"
- },
- {
- "n": "人物",
- "v": "古代名人 歷史名人 歷代祖先"
- },
- {
- "n": "生物進化史",
- "v": "人類進化 微生物進化 動物進化 地球進化"
- },
- {
- "v": "歷史 History"
- }
- ]
- },
- {
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"歷史科普",
+ "value":[
+ {"n":"世界大戰","v":"世界大戰 二戰 日侵 八國聯軍"},
+ {"n":"人物","v":"古代名人 歷史名人 歷代祖先"},
+ {"n":"生物進化史","v":"人類進化 微生物進化 動物進化 地球進化"},
+ {"n":"靠蒙","v":"歷史 History"}
]
}
]
},
- "jx": 0,
- "parse": 0
-}
\ No newline at end of file
+ "jx":0,
+ "parse":0
+}
diff --git a/cluntop_tvbox/lib/yt2.json b/cluntop_tvbox/lib/yt2.json
new file mode 100644
index 00000000..3a57687a
--- /dev/null
+++ b/cluntop_tvbox/lib/yt2.json
@@ -0,0 +1,4766 @@
+{
+ "recommend": "LIST:最新|推薦,官方頻道",
+ "class": [
+ {
+ "type_id": "新聞",
+ "type_name": "新闻"
+ },
+ {
+ "type_id": "战情室",
+ "type_name": "栏目"
+ },
+ {
+ "type_id": "个人频道",
+ "type_name": "频道"
+ },
+ {
+ "type_id": "音樂",
+ "type_name": "音乐"
+ },
+ {
+ "type_id": "短劇",
+ "type_name": "短剧"
+ },
+ {
+ "type_id": "HDR",
+ "type_name": "HDR"
+ },
+ {
+ "type_id": "4K",
+ "type_name": "4K"
+ },
+ {
+ "type_id": "放松",
+ "type_name": "放松"
+ },
+ {
+ "type_id": "時尚",
+ "type_name": "時尚"
+ },
+ {
+ "type_id": "紀錄",
+ "type_name": "纪录"
+ },
+ {
+ "type_id": "劇集",
+ "type_name": "剧集"
+ },
+ {
+ "type_id": "電影",
+ "type_name": "电影"
+ },
+ {
+ "type_id": "動畫",
+ "type_name": "动画"
+ },
+ {
+ "type_id": "綜藝",
+ "type_name": "综艺"
+ },
+ {
+ "type_id": "體育",
+ "type_name": "体育"
+ },
+ {
+ "type_id": "宇宙",
+ "type_name": "科普"
+ },
+ {
+ "type_id": "科技",
+ "type_name": "科技"
+ },
+ {
+ "type_id": "解說",
+ "type_name": "解说"
+ },
+ {
+ "type_id": "神秘",
+ "type_name": "神秘"
+ },
+ {
+ "type_id": "自媒體",
+ "type_name": "自媒體"
+ },
+ {
+ "type_id": "熱門",
+ "type_name": "热门"
+ },
+ {
+ "type_id": "GETTRENDS",
+ "type_name": "Trends"
+ }
+ ],
+ "filters": {
+ "熱門": [
+ {
+ "key": "tid",
+ "name": "LIST",
+ "value": [
+ {
+ "n": "默认",
+ "v": "PL hottest 默認"
+ },
+ {
+ "n": "热门",
+ "v": "PL Trending 熱門"
+ },
+ {
+ "n": "动漫",
+ "v": "PL Popular anime 動漫熱門"
+ },
+ {
+ "n": "漫画",
+ "v": "PL Popular comics 漫畫熱門"
+ },
+ {
+ "n": "上传",
+ "v": "PL Recently uploaded 最近上傳"
+ },
+ {
+ "n": "其他",
+ "v": "PL Popular Other popular ones 其他熱門"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": "LIST"
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "短劇": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {
+ "n": "時間全選",
+ "v": ""
+ },
+ {
+ "n": "2025",
+ "v": "2025"
+ },
+ {
+ "n": "2024",
+ "v": "2024"
+ },
+ {
+ "n": "2023",
+ "v": "2023"
+ },
+ {
+ "n": "2022",
+ "v": "2022"
+ },
+ {
+ "n": "2021",
+ "v": "2021"
+ },
+ {
+ "n": "2020",
+ "v": "2020"
+ },
+ {
+ "n": "2019",
+ "v": "2019"
+ },
+ {
+ "n": "2018",
+ "v": "2018"
+ },
+ {
+ "n": "2017",
+ "v": "2017"
+ },
+ {
+ "n": "2016",
+ "v": "2016"
+ },
+ {
+ "n": "2015",
+ "v": "2015"
+ },
+ {
+ "n": "2014",
+ "v": "2014"
+ },
+ {
+ "n": "2013",
+ "v": "2013"
+ },
+ {
+ "n": "2012",
+ "v": "2012"
+ },
+ {
+ "n": "2011",
+ "v": "2011"
+ },
+ {
+ "n": "2010",
+ "v": "2010"
+ },
+ {
+ "n": "2009",
+ "v": "2009"
+ },
+ {
+ "n": "2008",
+ "v": "2008"
+ },
+ {
+ "n": "2007",
+ "v": "2007"
+ },
+ {
+ "n": "2006",
+ "v": "2006"
+ },
+ {
+ "n": "2005",
+ "v": "2005"
+ },
+ {
+ "n": "2004",
+ "v": "2004"
+ },
+ {
+ "n": "2003",
+ "v": "2003"
+ },
+ {
+ "n": "2002",
+ "v": "2002"
+ },
+ {
+ "n": "2001",
+ "v": "2001"
+ },
+ {
+ "n": "2000",
+ "v": "2000"
+ },
+ {
+ "n": "1999",
+ "v": "1999"
+ },
+ {
+ "n": "1998",
+ "v": "1998"
+ },
+ {
+ "n": "1997",
+ "v": "1997"
+ },
+ {
+ "n": "1996",
+ "v": "1996"
+ },
+ {
+ "n": "1995",
+ "v": "1995"
+ },
+ {
+ "n": "1994",
+ "v": "1994"
+ },
+ {
+ "n": "1993",
+ "v": "1993"
+ },
+ {
+ "n": "1992",
+ "v": "1992"
+ },
+ {
+ "n": "1991",
+ "v": "1991"
+ },
+ {
+ "n": "1990",
+ "v": "1990"
+ },
+ {
+ "n": "1989",
+ "v": "1989"
+ },
+ {
+ "n": "1988",
+ "v": "1988"
+ },
+ {
+ "n": "1987",
+ "v": "1987"
+ },
+ {
+ "n": "1986",
+ "v": "1986"
+ },
+ {
+ "n": "1985",
+ "v": "1985"
+ },
+ {
+ "n": "1984",
+ "v": "1984"
+ },
+ {
+ "n": "1983",
+ "v": "1983"
+ },
+ {
+ "n": "1982",
+ "v": "1982"
+ },
+ {
+ "n": "1981",
+ "v": "1981"
+ },
+ {
+ "n": "1980",
+ "v": "1980"
+ },
+ {
+ "n": "1979",
+ "v": "1979"
+ },
+ {
+ "n": "1978",
+ "v": "1978"
+ },
+ {
+ "n": "1977",
+ "v": "1977"
+ },
+ {
+ "n": "1976",
+ "v": "1976"
+ },
+ {
+ "n": "1975",
+ "v": "1975"
+ },
+ {
+ "n": "1974",
+ "v": "1974"
+ },
+ {
+ "n": "1973",
+ "v": "1973"
+ },
+ {
+ "n": "1972",
+ "v": "1972"
+ },
+ {
+ "n": "1971",
+ "v": "1971"
+ },
+ {
+ "n": "1970",
+ "v": "1970"
+ },
+ {
+ "n": "1969",
+ "v": "1969"
+ },
+ {
+ "n": "1968",
+ "v": "1968"
+ },
+ {
+ "n": "1967",
+ "v": "1967"
+ },
+ {
+ "n": "1966",
+ "v": "1966"
+ },
+ {
+ "n": "1965",
+ "v": "1965"
+ },
+ {
+ "n": "1964",
+ "v": "1964"
+ },
+ {
+ "n": "1963",
+ "v": "1963"
+ },
+ {
+ "n": "1962",
+ "v": "1962"
+ },
+ {
+ "n": "1961",
+ "v": "1961"
+ },
+ {
+ "n": "1960",
+ "v": "1960"
+ },
+ {
+ "n": "1959",
+ "v": "1959"
+ },
+ {
+ "n": "1958",
+ "v": "1958"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "短劇",
+ "value": [
+ {
+ "n": "抖音",
+ "v": "PL抖音 短剧"
+ },
+ {
+ "n": "快手",
+ "v": "PL快手 短剧"
+ },
+ {
+ "n": "大陆",
+ "v": "PL大陆短剧"
+ },
+ {
+ "n": "香港",
+ "v": "PL香港短剧"
+ },
+ {
+ "n": "澳门",
+ "v": "PL澳门短剧"
+ },
+ {
+ "n": "台湾",
+ "v": "PL台湾短剧"
+ },
+ {
+ "n": "新加坡",
+ "v": "PL新加坡短剧"
+ },
+ {
+ "n": "马来西亚",
+ "v": "PL马来西亚短剧"
+ },
+ {
+ "n": "泰国",
+ "v": "PL泰国短剧"
+ },
+ {
+ "n": "越南",
+ "v": "PL越南短剧"
+ },
+ {
+ "n": "印度",
+ "v": "PL印度短剧"
+ },
+ {
+ "n": "韩国",
+ "v": "PL韩国短剧"
+ },
+ {
+ "n": "日本",
+ "v": "PL日本短剧"
+ },
+ {
+ "n": "欧美",
+ "v": "PL欧美短剧"
+ },
+ {
+ "n": "腾讯",
+ "v": "PL腾讯短剧"
+ },
+ {
+ "n": "爱奇艺",
+ "v": "PL爱奇艺短剧"
+ },
+ {
+ "n": "优酷",
+ "v": "PL优酷短剧"
+ },
+ {
+ "n": "芒果",
+ "v": "PL芒果TV短剧"
+ },
+ {
+ "n": "搜狐",
+ "v": "PL搜狐短剧"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "短劇",
+ "value": [
+ {
+ "n": "都市",
+ "v": "PL都市短剧"
+ },
+ {
+ "n": "爱情",
+ "v": "PL爱情短剧"
+ },
+ {
+ "n": "复仇",
+ "v": "PL复仇短劇"
+ },
+ {
+ "n": "霸总",
+ "v": "PL霸总短劇"
+ },
+ {
+ "n": "萌宝",
+ "v": "PL萌宝短劇"
+ },
+ {
+ "n": "古装",
+ "v": "PL古装短劇"
+ },
+ {
+ "n": "穿越",
+ "v": "PL穿越短劇"
+ },
+ {
+ "n": "喜剧",
+ "v": "PL喜剧短劇"
+ },
+ {
+ "n": "奇幻",
+ "v": "PL奇幻短劇"
+ },
+ {
+ "n": "九酱爱追剧",
+ "v": "PD@NineSauceDramaTV"
+ },
+ {
+ "n": "百万好剧场",
+ "v": "PD@1-pw5ox"
+ },
+ {
+ "n": "咖啡追剧",
+ "v": "PD@coffeedrama605"
+ },
+ {
+ "n": "斗罗短剧",
+ "v": "PD@DouluoDrama123 斗羅短劇"
+ },
+ {
+ "n": "嘟嘟剧场",
+ "v": "PD@DUDUJUCHANG"
+ },
+ {
+ "n": "牛牛短剧",
+ "v": "PD@niuniuduanju"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "動畫": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {
+ "n": "時間全選",
+ "v": ""
+ },
+ {
+ "n": "2025",
+ "v": "2025"
+ },
+ {
+ "n": "2024",
+ "v": "2024"
+ },
+ {
+ "n": "2023",
+ "v": "2023"
+ },
+ {
+ "n": "2022",
+ "v": "2022"
+ },
+ {
+ "n": "2021",
+ "v": "2021"
+ },
+ {
+ "n": "2020",
+ "v": "2020"
+ },
+ {
+ "n": "2019",
+ "v": "2019"
+ },
+ {
+ "n": "2018",
+ "v": "2018"
+ },
+ {
+ "n": "2017",
+ "v": "2017"
+ },
+ {
+ "n": "2016",
+ "v": "2016"
+ },
+ {
+ "n": "2015",
+ "v": "2015"
+ },
+ {
+ "n": "2014",
+ "v": "2014"
+ },
+ {
+ "n": "2013",
+ "v": "2013"
+ },
+ {
+ "n": "2012",
+ "v": "2012"
+ },
+ {
+ "n": "2011",
+ "v": "2011"
+ },
+ {
+ "n": "2010",
+ "v": "2010"
+ },
+ {
+ "n": "2009",
+ "v": "2009"
+ },
+ {
+ "n": "2008",
+ "v": "2008"
+ },
+ {
+ "n": "2007",
+ "v": "2007"
+ },
+ {
+ "n": "2006",
+ "v": "2006"
+ },
+ {
+ "n": "2005",
+ "v": "2005"
+ },
+ {
+ "n": "2004",
+ "v": "2004"
+ },
+ {
+ "n": "2003",
+ "v": "2003"
+ },
+ {
+ "n": "2002",
+ "v": "2002"
+ },
+ {
+ "n": "2001",
+ "v": "2001"
+ },
+ {
+ "n": "2000",
+ "v": "2000"
+ },
+ {
+ "n": "1999",
+ "v": "1999"
+ },
+ {
+ "n": "1998",
+ "v": "1998"
+ },
+ {
+ "n": "1997",
+ "v": "1997"
+ },
+ {
+ "n": "1996",
+ "v": "1996"
+ },
+ {
+ "n": "1995",
+ "v": "1995"
+ },
+ {
+ "n": "1994",
+ "v": "1994"
+ },
+ {
+ "n": "1993",
+ "v": "1993"
+ },
+ {
+ "n": "1992",
+ "v": "1992"
+ },
+ {
+ "n": "1991",
+ "v": "1991"
+ },
+ {
+ "n": "1990",
+ "v": "1990"
+ },
+ {
+ "n": "1989",
+ "v": "1989"
+ },
+ {
+ "n": "1988",
+ "v": "1988"
+ },
+ {
+ "n": "1987",
+ "v": "1987"
+ },
+ {
+ "n": "1986",
+ "v": "1986"
+ },
+ {
+ "n": "1985",
+ "v": "1985"
+ },
+ {
+ "n": "1984",
+ "v": "1984"
+ },
+ {
+ "n": "1983",
+ "v": "1983"
+ },
+ {
+ "n": "1982",
+ "v": "1982"
+ },
+ {
+ "n": "1981",
+ "v": "1981"
+ },
+ {
+ "n": "1980",
+ "v": "1980"
+ },
+ {
+ "n": "1979",
+ "v": "1979"
+ },
+ {
+ "n": "1978",
+ "v": "1978"
+ },
+ {
+ "n": "1977",
+ "v": "1977"
+ },
+ {
+ "n": "1976",
+ "v": "1976"
+ },
+ {
+ "n": "1975",
+ "v": "1975"
+ },
+ {
+ "n": "1974",
+ "v": "1974"
+ },
+ {
+ "n": "1973",
+ "v": "1973"
+ },
+ {
+ "n": "1972",
+ "v": "1972"
+ },
+ {
+ "n": "1971",
+ "v": "1971"
+ },
+ {
+ "n": "1970",
+ "v": "1970"
+ },
+ {
+ "n": "1969",
+ "v": "1969"
+ },
+ {
+ "n": "1968",
+ "v": "1968"
+ },
+ {
+ "n": "1967",
+ "v": "1967"
+ },
+ {
+ "n": "1966",
+ "v": "1966"
+ },
+ {
+ "n": "1965",
+ "v": "1965"
+ },
+ {
+ "n": "1964",
+ "v": "1964"
+ },
+ {
+ "n": "1963",
+ "v": "1963"
+ },
+ {
+ "n": "1962",
+ "v": "1962"
+ },
+ {
+ "n": "1961",
+ "v": "1961"
+ },
+ {
+ "n": "1960",
+ "v": "1960"
+ },
+ {
+ "n": "1959",
+ "v": "1959"
+ },
+ {
+ "n": "1958",
+ "v": "1958"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {
+ "n": "默认",
+ "v": "animation"
+ },
+ {
+ "n": "虾仁动画",
+ "v": "PL虾仁"
+ },
+ {
+ "n": "沙雕动画",
+ "v": "PL沙雕动画"
+ },
+ {
+ "n": "中文国漫",
+ "v": "PL國漫3D"
+ },
+ {
+ "n": "儿童早教",
+ "v": "PL儿童早教"
+ },
+ {
+ "n": "儿童歌曲",
+ "v": "PL儿童歌曲"
+ },
+ {
+ "n": "儿童音乐",
+ "v": "PL儿童音乐"
+ },
+ {
+ "n": "儿童绘画",
+ "v": "PL儿童绘画"
+ },
+ {
+ "n": "宝宝巴士",
+ "v": "PL宝宝巴士"
+ },
+ {
+ "n": "儿歌多多",
+ "v": "PL儿歌多多"
+ },
+ {
+ "n": "儿童英语启蒙",
+ "v": "PL儿童英语启蒙"
+ },
+ {
+ "n": "儿童启蒙故事",
+ "v": "PL儿童启蒙故事"
+ },
+ {
+ "n": "儿童安全教育",
+ "v": "PL儿童安全教育"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {
+ "n": "默认英文国漫",
+ "v": "PD'3D Chinese cartoon'"
+ },
+ {
+ "n": "小猪佩奇",
+ "v": "PD@PeppaPigChineseOfficial 小猪佩奇 中文官方 - Peppa Pig"
+ },
+ {
+ "n": "CoComelon",
+ "v": "PD@CoComelon"
+ },
+ {
+ "n": "合集",
+ "v": "'Anime ENG SUB'合集"
+ },
+ {
+ "n": "国漫社",
+ "v": "PD@Animation"
+ },
+ {
+ "n": "国漫工厂",
+ "v": "PD@3DGuoman"
+ },
+ {
+ "n": "阅文动漫",
+ "v": "PD@yuewenanimation"
+ },
+ {
+ "n": "哔哩",
+ "v": "PD@madebybilibili"
+ },
+ {
+ "n": "腾讯",
+ "v": "PD@TencentVideoAnimation"
+ },
+ {
+ "n": "优酷",
+ "v": "PD@youkuanimation"
+ },
+ {
+ "n": "爱奇艺",
+ "v": "PD@iQIYIAnime"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "新聞": [
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {
+ "n": "默认",
+ "v": "fully YouTube 新聞 Live"
+ },
+ {
+ "n": "赛事",
+ "v": "直播 赛事"
+ },
+ {
+ "n": "CCTV",
+ "v": "直播 CCTV"
+ },
+ {
+ "n": "港台",
+ "v": "直播 港台"
+ },
+ {
+ "n": "CNA",
+ "v": "@channelnewsasia"
+ },
+ {
+ "n": "鳳凰衛視",
+ "v": "@phoenixtvhk"
+ },
+ {
+ "n": "CTINEWS",
+ "v": "直播 中天新闻"
+ },
+ {
+ "n": "TVBSEWS",
+ "v": "直播 TVBSNEWS"
+ },
+ {
+ "n": "新亚太唐人",
+ "v": "@NTDAPTV"
+ },
+ {
+ "n": "東森新聞 CH51",
+ "v": "直播 東森新聞 CH51"
+ },
+ {
+ "n": "三立LIVE新闻",
+ "v": "直播 三立LIVE新闻 @setnews "
+ },
+ {
+ "n": "台視新聞台HD",
+ "v": "直播 台視新聞 TTV NEWS"
+ },
+ {
+ "n": "中視新聞 HD",
+ "v": "直播 Taiwan CTV news HD Live"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {
+ "n": "Live",
+ "v": "live"
+ },
+ {
+ "n": "CNN",
+ "v": "live CNN"
+ },
+ {
+ "n": "BBC",
+ "v": "live BBC"
+ },
+ {
+ "n": "games",
+ "v": "live games"
+ },
+ {
+ "n": "CBS",
+ "v": "@CBSNews"
+ },
+ {
+ "n": "ABC",
+ "v": "live ABC NEWS"
+ },
+ {
+ "n": "NBC",
+ "v": "@NBCNews"
+ },
+ {
+ "n": "LiveNOW from FOX",
+ "v": "@livenowfox"
+ },
+ {
+ "n": "Sky News",
+ "v": "@SkyNews"
+ },
+ {
+ "n": "euronews",
+ "v": "@euronews"
+ },
+ {
+ "n": "GBNews",
+ "v": "@GBNewsOnline"
+ },
+ {
+ "n": "Al Jazeera English",
+ "v": "@aljazeeraenglish"
+ },
+ {
+ "n": "ABCNews (Australia)",
+ "v": "@abcnewsaustralia"
+ },
+ {
+ "n": "FRANCE 24 English",
+ "v": "live FRANCE 24 English"
+ },
+ {
+ "n": "Reuters",
+ "v": "live Reuters"
+ },
+ {
+ "n": "印度电视台",
+ "v": "@SETIndia"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {
+ "n": "默认",
+ "v": "News"
+ },
+ {
+ "n": "News",
+ "v": "news"
+ },
+ {
+ "n": "时政",
+ "v": "时政 新闻"
+ },
+ {
+ "n": "体育",
+ "v": "体育 新闻"
+ },
+ {
+ "n": "娱乐",
+ "v": "娱乐 新闻"
+ },
+ {
+ "n": "大陆",
+ "v": "大陆 新闻"
+ },
+ {
+ "n": "HKTVB",
+ "v": "@tvbnewsofficial"
+ },
+ {
+ "n": "少康戰情室",
+ "v": "@tvbssituationroom"
+ },
+ {
+ "n": "政经龙凤配",
+ "v": "@觀點"
+ },
+ {
+ "n": "FOCUS全球新闻",
+ "v": "@TVBSNEWS FOCUS全球新闻"
+ },
+ {
+ "n": "新闻大白话",
+ "v": "@TVBSNEWS 新闻大白话"
+ },
+ {
+ "n": "东森新闻",
+ "v": "关键时刻新闻"
+ },
+ {
+ "n": "港台",
+ "v": "港台 新闻"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {
+ "n": "科技與發展",
+ "v": "閱兵 奧運會 航母 航空母艦 潛水艇 核武器 坦克 武器 卫星 火箭 輪船 飛機 飛碟"
+ },
+ {
+ "n": "法治与社会",
+ "v": "法治 法制 社会 卖淫 淫秽 污蔑 赌博 毒品 裸聊 诈骗 拐卖 强奸 勒索"
+ },
+ {
+ "n": "News",
+ "v": "News"
+ },
+ {
+ "n": "CNN",
+ "v": "CNN news"
+ },
+ {
+ "n": "BBC",
+ "v": "BBC news"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "劇集": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {
+ "n": "時間全選",
+ "v": ""
+ },
+ {
+ "n": "2025",
+ "v": "2025"
+ },
+ {
+ "n": "2024",
+ "v": "2024"
+ },
+ {
+ "n": "2023",
+ "v": "2023"
+ },
+ {
+ "n": "2022",
+ "v": "2022"
+ },
+ {
+ "n": "2021",
+ "v": "2021"
+ },
+ {
+ "n": "2020",
+ "v": "2020"
+ },
+ {
+ "n": "2019",
+ "v": "2019"
+ },
+ {
+ "n": "2018",
+ "v": "2018"
+ },
+ {
+ "n": "2017",
+ "v": "2017"
+ },
+ {
+ "n": "2016",
+ "v": "2016"
+ },
+ {
+ "n": "2015",
+ "v": "2015"
+ },
+ {
+ "n": "2014",
+ "v": "2014"
+ },
+ {
+ "n": "2013",
+ "v": "2013"
+ },
+ {
+ "n": "2012",
+ "v": "2012"
+ },
+ {
+ "n": "2011",
+ "v": "2011"
+ },
+ {
+ "n": "2010",
+ "v": "2010"
+ },
+ {
+ "n": "2009",
+ "v": "2009"
+ },
+ {
+ "n": "2008",
+ "v": "2008"
+ },
+ {
+ "n": "2007",
+ "v": "2007"
+ },
+ {
+ "n": "2006",
+ "v": "2006"
+ },
+ {
+ "n": "2005",
+ "v": "2005"
+ },
+ {
+ "n": "2004",
+ "v": "2004"
+ },
+ {
+ "n": "2003",
+ "v": "2003"
+ },
+ {
+ "n": "2002",
+ "v": "2002"
+ },
+ {
+ "n": "2001",
+ "v": "2001"
+ },
+ {
+ "n": "2000",
+ "v": "2000"
+ },
+ {
+ "n": "1999",
+ "v": "1999"
+ },
+ {
+ "n": "1998",
+ "v": "1998"
+ },
+ {
+ "n": "1997",
+ "v": "1997"
+ },
+ {
+ "n": "1996",
+ "v": "1996"
+ },
+ {
+ "n": "1995",
+ "v": "1995"
+ },
+ {
+ "n": "1994",
+ "v": "1994"
+ },
+ {
+ "n": "1993",
+ "v": "1993"
+ },
+ {
+ "n": "1992",
+ "v": "1992"
+ },
+ {
+ "n": "1991",
+ "v": "1991"
+ },
+ {
+ "n": "1990",
+ "v": "1990"
+ },
+ {
+ "n": "1989",
+ "v": "1989"
+ },
+ {
+ "n": "1988",
+ "v": "1988"
+ },
+ {
+ "n": "1987",
+ "v": "1987"
+ },
+ {
+ "n": "1986",
+ "v": "1986"
+ },
+ {
+ "n": "1985",
+ "v": "1985"
+ },
+ {
+ "n": "1984",
+ "v": "1984"
+ },
+ {
+ "n": "1983",
+ "v": "1983"
+ },
+ {
+ "n": "1982",
+ "v": "1982"
+ },
+ {
+ "n": "1981",
+ "v": "1981"
+ },
+ {
+ "n": "1980",
+ "v": "1980"
+ },
+ {
+ "n": "1979",
+ "v": "1979"
+ },
+ {
+ "n": "1978",
+ "v": "1978"
+ },
+ {
+ "n": "1977",
+ "v": "1977"
+ },
+ {
+ "n": "1976",
+ "v": "1976"
+ },
+ {
+ "n": "1975",
+ "v": "1975"
+ },
+ {
+ "n": "1974",
+ "v": "1974"
+ },
+ {
+ "n": "1973",
+ "v": "1973"
+ },
+ {
+ "n": "1972",
+ "v": "1972"
+ },
+ {
+ "n": "1971",
+ "v": "1971"
+ },
+ {
+ "n": "1970",
+ "v": "1970"
+ },
+ {
+ "n": "1969",
+ "v": "1969"
+ },
+ {
+ "n": "1968",
+ "v": "1968"
+ },
+ {
+ "n": "1967",
+ "v": "1967"
+ },
+ {
+ "n": "1966",
+ "v": "1966"
+ },
+ {
+ "n": "1965",
+ "v": "1965"
+ },
+ {
+ "n": "1964",
+ "v": "1964"
+ },
+ {
+ "n": "1963",
+ "v": "1963"
+ },
+ {
+ "n": "1962",
+ "v": "1962"
+ },
+ {
+ "n": "1961",
+ "v": "1961"
+ },
+ {
+ "n": "1960",
+ "v": "1960"
+ },
+ {
+ "n": "1959",
+ "v": "1959"
+ },
+ {
+ "n": "1958",
+ "v": "1958"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {
+ "n": "默認",
+ "v": ""
+ },
+ {
+ "n": "華語熱播電視劇官方頻道",
+ "v": "PL華語熱播電視劇官方頻道"
+ },
+ {
+ "n": "TVB 国语",
+ "v": "PL TVB Drama 国语剧场"
+ },
+ {
+ "n": "粵劇",
+ "v": "PL 粵劇 劇集"
+ },
+ {
+ "n": "TVB",
+ "v": "PL TVB"
+ },
+ {
+ "n": "国剧放映社",
+ "v": "PL 国剧放映社"
+ },
+ {
+ "n": "大陆",
+ "v": "PL 大陆 剧集"
+ },
+ {
+ "n": "腾讯",
+ "v": "PL 腾讯 剧集"
+ },
+ {
+ "n": "爱奇艺",
+ "v": "PL 爱奇艺 剧集"
+ },
+ {
+ "n": "优酷",
+ "v": "PL 优酷 剧集"
+ },
+ {
+ "n": "芒果",
+ "v": "PL 芒果TV 剧集"
+ },
+ {
+ "n": "搜狐",
+ "v": "PL 搜狐 剧集"
+ },
+ {
+ "n": "华数",
+ "v": "PL 华数 剧集"
+ },
+ {
+ "n": "港台",
+ "v": "PL 港台 剧集"
+ },
+ {
+ "n": "美国",
+ "v": "PL 美国 Full Episode 完整剧集"
+ },
+ {
+ "n": "Netflix",
+ "v": "PL Netflix Full Episode 完整剧集"
+ },
+ {
+ "n": "Disney",
+ "v": "PL disney Full Episode 完整剧集"
+ },
+ {
+ "n": "Apple",
+ "v": "PL apple Full Episode 完整剧集"
+ },
+ {
+ "n": "Amazon",
+ "v": "PL amazon Full Episode 完整剧集"
+ },
+ {
+ "n": "HBO",
+ "v": "PL hbo Full Episode 完整剧集"
+ },
+ {
+ "n": "韩国",
+ "v": "PL 韩国 剧集"
+ },
+ {
+ "n": "日本",
+ "v": "PL 日本 剧集"
+ },
+ {
+ "n": "英国",
+ "v": "PL 英国 Full Episode 完整剧集"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {
+ "n": "Drama",
+ "v": "PL Full Episode drama"
+ },
+ {
+ "n": "US",
+ "v": "PL drama Full Episode US"
+ },
+ {
+ "n": "Netflix",
+ "v": "PL netflix Full Episode drama"
+ },
+ {
+ "n": "Disney",
+ "v": "PL disney Full Episode drama"
+ },
+ {
+ "n": "Apple",
+ "v": "PL apple Full Episode drama"
+ },
+ {
+ "n": "Amazon",
+ "v": "PL amazon Full Episode drama"
+ },
+ {
+ "n": "HBO",
+ "v": "PL hbo Full Episode drama"
+ },
+ {
+ "n": "Korea",
+ "v": "PL korea Full Episode drama"
+ },
+ {
+ "n": "Japan",
+ "v": "PL japan Full Episode drama"
+ },
+ {
+ "n": "UK",
+ "v": "PL uk Full Episode drama"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "電影": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {
+ "n": "時間全選",
+ "v": ""
+ },
+ {
+ "n": "2025",
+ "v": "2025"
+ },
+ {
+ "n": "2024",
+ "v": "2024"
+ },
+ {
+ "n": "2023",
+ "v": "2023"
+ },
+ {
+ "n": "2022",
+ "v": "2022"
+ },
+ {
+ "n": "2021",
+ "v": "2021"
+ },
+ {
+ "n": "2020",
+ "v": "2020"
+ },
+ {
+ "n": "2019",
+ "v": "2019"
+ },
+ {
+ "n": "2018",
+ "v": "2018"
+ },
+ {
+ "n": "2017",
+ "v": "2017"
+ },
+ {
+ "n": "2016",
+ "v": "2016"
+ },
+ {
+ "n": "2015",
+ "v": "2015"
+ },
+ {
+ "n": "2014",
+ "v": "2014"
+ },
+ {
+ "n": "2013",
+ "v": "2013"
+ },
+ {
+ "n": "2012",
+ "v": "2012"
+ },
+ {
+ "n": "2011",
+ "v": "2011"
+ },
+ {
+ "n": "2010",
+ "v": "2010"
+ },
+ {
+ "n": "2009",
+ "v": "2009"
+ },
+ {
+ "n": "2008",
+ "v": "2008"
+ },
+ {
+ "n": "2007",
+ "v": "2007"
+ },
+ {
+ "n": "2006",
+ "v": "2006"
+ },
+ {
+ "n": "2005",
+ "v": "2005"
+ },
+ {
+ "n": "2004",
+ "v": "2004"
+ },
+ {
+ "n": "2003",
+ "v": "2003"
+ },
+ {
+ "n": "2002",
+ "v": "2002"
+ },
+ {
+ "n": "2001",
+ "v": "2001"
+ },
+ {
+ "n": "2000",
+ "v": "2000"
+ },
+ {
+ "n": "1999",
+ "v": "1999"
+ },
+ {
+ "n": "1998",
+ "v": "1998"
+ },
+ {
+ "n": "1997",
+ "v": "1997"
+ },
+ {
+ "n": "1996",
+ "v": "1996"
+ },
+ {
+ "n": "1995",
+ "v": "1995"
+ },
+ {
+ "n": "1994",
+ "v": "1994"
+ },
+ {
+ "n": "1993",
+ "v": "1993"
+ },
+ {
+ "n": "1992",
+ "v": "1992"
+ },
+ {
+ "n": "1991",
+ "v": "1991"
+ },
+ {
+ "n": "1990",
+ "v": "1990"
+ },
+ {
+ "n": "1989",
+ "v": "1989"
+ },
+ {
+ "n": "1988",
+ "v": "1988"
+ },
+ {
+ "n": "1987",
+ "v": "1987"
+ },
+ {
+ "n": "1986",
+ "v": "1986"
+ },
+ {
+ "n": "1985",
+ "v": "1985"
+ },
+ {
+ "n": "1984",
+ "v": "1984"
+ },
+ {
+ "n": "1983",
+ "v": "1983"
+ },
+ {
+ "n": "1982",
+ "v": "1982"
+ },
+ {
+ "n": "1981",
+ "v": "1981"
+ },
+ {
+ "n": "1980",
+ "v": "1980"
+ },
+ {
+ "n": "1979",
+ "v": "1979"
+ },
+ {
+ "n": "1978",
+ "v": "1978"
+ },
+ {
+ "n": "1977",
+ "v": "1977"
+ },
+ {
+ "n": "1976",
+ "v": "1976"
+ },
+ {
+ "n": "1975",
+ "v": "1975"
+ },
+ {
+ "n": "1974",
+ "v": "1974"
+ },
+ {
+ "n": "1973",
+ "v": "1973"
+ },
+ {
+ "n": "1972",
+ "v": "1972"
+ },
+ {
+ "n": "1971",
+ "v": "1971"
+ },
+ {
+ "n": "1970",
+ "v": "1970"
+ },
+ {
+ "n": "1969",
+ "v": "1969"
+ },
+ {
+ "n": "1968",
+ "v": "1968"
+ },
+ {
+ "n": "1967",
+ "v": "1967"
+ },
+ {
+ "n": "1966",
+ "v": "1966"
+ },
+ {
+ "n": "1965",
+ "v": "1965"
+ },
+ {
+ "n": "1964",
+ "v": "1964"
+ },
+ {
+ "n": "1963",
+ "v": "1963"
+ },
+ {
+ "n": "1962",
+ "v": "1962"
+ },
+ {
+ "n": "1961",
+ "v": "1961"
+ },
+ {
+ "n": "1960",
+ "v": "1960"
+ },
+ {
+ "n": "1959",
+ "v": "1959"
+ },
+ {
+ "n": "1958",
+ "v": "1958"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {
+ "n": "默認",
+ "v": ""
+ },
+ {
+ "n": "大陆",
+ "v": "PL 大陆 电影"
+ },
+ {
+ "n": "腾讯",
+ "v": "PL 腾讯 电影"
+ },
+ {
+ "n": "爱奇艺",
+ "v": "PL 爱奇艺 电影"
+ },
+ {
+ "n": "优酷",
+ "v": "PL 优酷 电影"
+ },
+ {
+ "n": "芒果",
+ "v": "PL 芒果TV 电影"
+ },
+ {
+ "n": "搜狐",
+ "v": "PL 搜狐 电影"
+ },
+ {
+ "n": "港台",
+ "v": "PL 港台 电影"
+ },
+ {
+ "n": "美国",
+ "v": "PL 美国 电影"
+ },
+ {
+ "n": "Netflix",
+ "v": "PL netflix Full movie 电影"
+ },
+ {
+ "n": "Disney",
+ "v": "PL disney Full movie 电影"
+ },
+ {
+ "n": "Apple",
+ "v": "PL apple Full movie 电影"
+ },
+ {
+ "n": "Amazon",
+ "v": "PL amazon Full movie 电影"
+ },
+ {
+ "n": "HBO",
+ "v": "PL hbo Full movie 电影"
+ },
+ {
+ "n": "韩国",
+ "v": "PL 韩国 Full movie 电影"
+ },
+ {
+ "n": "日本",
+ "v": "PL 日本 Full movie 电影"
+ },
+ {
+ "n": "英国",
+ "v": "PL 英国 Full movie 电影"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {
+ "n": "movie",
+ "v": "PL youtube movies Full movie"
+ },
+ {
+ "n": "US",
+ "v": "PL us Full movie movie"
+ },
+ {
+ "n": "Netflix movie",
+ "v": "PL netflix Full movie movie"
+ },
+ {
+ "n": "Disney",
+ "v": "PL disney Full movie movie"
+ },
+ {
+ "n": "Apple",
+ "v": "PL apple Full movie movie"
+ },
+ {
+ "n": "Amazon",
+ "v": "PL amazon Full movie movie"
+ },
+ {
+ "n": "HBO",
+ "v": "PL hbo Full movie movie"
+ },
+ {
+ "n": "Koera",
+ "v": "PL korea Full movie movie"
+ },
+ {
+ "n": "Japan",
+ "v": "PL japan Full movie movie"
+ },
+ {
+ "n": "UK",
+ "v": "PL uk Full movie movie"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "綜藝": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {
+ "n": "時間全選",
+ "v": ""
+ },
+ {
+ "n": "2025",
+ "v": "2025"
+ },
+ {
+ "n": "2024",
+ "v": "2024"
+ },
+ {
+ "n": "2023",
+ "v": "2023"
+ },
+ {
+ "n": "2022",
+ "v": "2022"
+ },
+ {
+ "n": "2021",
+ "v": "2021"
+ },
+ {
+ "n": "2020",
+ "v": "2020"
+ },
+ {
+ "n": "2019",
+ "v": "2019"
+ },
+ {
+ "n": "2018",
+ "v": "2018"
+ },
+ {
+ "n": "2017",
+ "v": "2017"
+ },
+ {
+ "n": "2016",
+ "v": "2016"
+ },
+ {
+ "n": "2015",
+ "v": "2015"
+ },
+ {
+ "n": "2014",
+ "v": "2014"
+ },
+ {
+ "n": "2013",
+ "v": "2013"
+ },
+ {
+ "n": "2012",
+ "v": "2012"
+ },
+ {
+ "n": "2011",
+ "v": "2011"
+ },
+ {
+ "n": "2010",
+ "v": "2010"
+ },
+ {
+ "n": "2009",
+ "v": "2009"
+ },
+ {
+ "n": "2008",
+ "v": "2008"
+ },
+ {
+ "n": "2007",
+ "v": "2007"
+ },
+ {
+ "n": "2006",
+ "v": "2006"
+ },
+ {
+ "n": "2005",
+ "v": "2005"
+ },
+ {
+ "n": "2004",
+ "v": "2004"
+ },
+ {
+ "n": "2003",
+ "v": "2003"
+ },
+ {
+ "n": "2002",
+ "v": "2002"
+ },
+ {
+ "n": "2001",
+ "v": "2001"
+ },
+ {
+ "n": "2000",
+ "v": "2000"
+ },
+ {
+ "n": "1999",
+ "v": "1999"
+ },
+ {
+ "n": "1998",
+ "v": "1998"
+ },
+ {
+ "n": "1997",
+ "v": "1997"
+ },
+ {
+ "n": "1996",
+ "v": "1996"
+ },
+ {
+ "n": "1995",
+ "v": "1995"
+ },
+ {
+ "n": "1994",
+ "v": "1994"
+ },
+ {
+ "n": "1993",
+ "v": "1993"
+ },
+ {
+ "n": "1992",
+ "v": "1992"
+ },
+ {
+ "n": "1991",
+ "v": "1991"
+ },
+ {
+ "n": "1990",
+ "v": "1990"
+ },
+ {
+ "n": "1989",
+ "v": "1989"
+ },
+ {
+ "n": "1988",
+ "v": "1988"
+ },
+ {
+ "n": "1987",
+ "v": "1987"
+ },
+ {
+ "n": "1986",
+ "v": "1986"
+ },
+ {
+ "n": "1985",
+ "v": "1985"
+ },
+ {
+ "n": "1984",
+ "v": "1984"
+ },
+ {
+ "n": "1983",
+ "v": "1983"
+ },
+ {
+ "n": "1982",
+ "v": "1982"
+ },
+ {
+ "n": "1981",
+ "v": "1981"
+ },
+ {
+ "n": "1980",
+ "v": "1980"
+ },
+ {
+ "n": "1979",
+ "v": "1979"
+ },
+ {
+ "n": "1978",
+ "v": "1978"
+ },
+ {
+ "n": "1977",
+ "v": "1977"
+ },
+ {
+ "n": "1976",
+ "v": "1976"
+ },
+ {
+ "n": "1975",
+ "v": "1975"
+ },
+ {
+ "n": "1974",
+ "v": "1974"
+ },
+ {
+ "n": "1973",
+ "v": "1973"
+ },
+ {
+ "n": "1972",
+ "v": "1972"
+ },
+ {
+ "n": "1971",
+ "v": "1971"
+ },
+ {
+ "n": "1970",
+ "v": "1970"
+ },
+ {
+ "n": "1969",
+ "v": "1969"
+ },
+ {
+ "n": "1968",
+ "v": "1968"
+ },
+ {
+ "n": "1967",
+ "v": "1967"
+ },
+ {
+ "n": "1966",
+ "v": "1966"
+ },
+ {
+ "n": "1965",
+ "v": "1965"
+ },
+ {
+ "n": "1964",
+ "v": "1964"
+ },
+ {
+ "n": "1963",
+ "v": "1963"
+ },
+ {
+ "n": "1962",
+ "v": "1962"
+ },
+ {
+ "n": "1961",
+ "v": "1961"
+ },
+ {
+ "n": "1960",
+ "v": "1960"
+ },
+ {
+ "n": "1959",
+ "v": "1959"
+ },
+ {
+ "n": "1958",
+ "v": "1958"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {
+ "n": "默认",
+ "v": "Variety show"
+ },
+ {
+ "n": "大陆",
+ "v": "大陆 综艺"
+ },
+ {
+ "n": "芒果",
+ "v": "芒果 综艺"
+ },
+ {
+ "n": "腾讯",
+ "v": "腾讯 综艺"
+ },
+ {
+ "n": "爱奇艺",
+ "v": "爱奇艺 综艺"
+ },
+ {
+ "n": "优酷",
+ "v": "优酷 综艺"
+ },
+ {
+ "n": "港台",
+ "v": "港台 综艺"
+ },
+ {
+ "n": "美国",
+ "v": "美国 综艺"
+ },
+ {
+ "n": "Netflix",
+ "v": "Netflix 综艺"
+ },
+ {
+ "n": "韩国",
+ "v": "CRAVITY on Variety Shows 韩国 综艺"
+ },
+ {
+ "n": "日本",
+ "v": "日本 综艺"
+ },
+ {
+ "n": "英国",
+ "v": "英国 综艺"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {
+ "n": "Variety",
+ "v": "variety"
+ },
+ {
+ "n": "Netflix variety",
+ "v": "netflix variety"
+ },
+ {
+ "n": "Korea",
+ "v": "korea variety"
+ },
+ {
+ "n": "Japan",
+ "v": "japan variety"
+ },
+ {
+ "n": "UK",
+ "v": "uk variety"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "小品",
+ "value": [
+ {
+ "n": "春晚小品",
+ "v": "春晚小品"
+ },
+ {
+ "n": "开心麻花",
+ "v": "开心麻花"
+ },
+ {
+ "n": "屌丝男士",
+ "v": "屌丝男士"
+ },
+ {
+ "n": "喜剧综艺",
+ "v": "喜剧综艺"
+ },
+ {
+ "n": "单口",
+ "v": "单口 相声"
+ },
+ {
+ "n": "群口",
+ "v": "群口 相声"
+ },
+ {
+ "n": "德云社",
+ "v": "德云社"
+ },
+ {
+ "n": "青曲社",
+ "v": "青曲社"
+ },
+ {
+ "n": "郭德纲",
+ "v": "郭德纲"
+ },
+ {
+ "n": "岳云鹏",
+ "v": "岳云鹏"
+ },
+ {
+ "n": "曹云金",
+ "v": "曹云金"
+ },
+ {
+ "n": "评书",
+ "v": "评书"
+ },
+ {
+ "n": "小曲",
+ "v": "小曲"
+ },
+ {
+ "n": "赵本山",
+ "v": "赵本山"
+ },
+ {
+ "n": "陈佩斯",
+ "v": "陈佩斯"
+ },
+ {
+ "n": "冯巩",
+ "v": "冯巩"
+ },
+ {
+ "n": "宋小宝",
+ "v": "宋小宝"
+ },
+ {
+ "n": "赵丽蓉",
+ "v": "赵丽蓉"
+ },
+ {
+ "n": "潘长江",
+ "v": "潘长江"
+ },
+ {
+ "n": "郭冬临",
+ "v": "郭冬临"
+ },
+ {
+ "n": "严顺开",
+ "v": "严顺开"
+ },
+ {
+ "n": "文松",
+ "v": "文松"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "紀錄": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {
+ "n": "時間全選",
+ "v": ""
+ },
+ {
+ "n": "2025",
+ "v": "2025"
+ },
+ {
+ "n": "2024",
+ "v": "2024"
+ },
+ {
+ "n": "2023",
+ "v": "2023"
+ },
+ {
+ "n": "2022",
+ "v": "2022"
+ },
+ {
+ "n": "2021",
+ "v": "2021"
+ },
+ {
+ "n": "2020",
+ "v": "2020"
+ },
+ {
+ "n": "2019",
+ "v": "2019"
+ },
+ {
+ "n": "2018",
+ "v": "2018"
+ },
+ {
+ "n": "2017",
+ "v": "2017"
+ },
+ {
+ "n": "2016",
+ "v": "2016"
+ },
+ {
+ "n": "2015",
+ "v": "2015"
+ },
+ {
+ "n": "2014",
+ "v": "2014"
+ },
+ {
+ "n": "2013",
+ "v": "2013"
+ },
+ {
+ "n": "2012",
+ "v": "2012"
+ },
+ {
+ "n": "2011",
+ "v": "2011"
+ },
+ {
+ "n": "2010",
+ "v": "2010"
+ },
+ {
+ "n": "2009",
+ "v": "2009"
+ },
+ {
+ "n": "2008",
+ "v": "2008"
+ },
+ {
+ "n": "2007",
+ "v": "2007"
+ },
+ {
+ "n": "2006",
+ "v": "2006"
+ },
+ {
+ "n": "2005",
+ "v": "2005"
+ },
+ {
+ "n": "2004",
+ "v": "2004"
+ },
+ {
+ "n": "2003",
+ "v": "2003"
+ },
+ {
+ "n": "2002",
+ "v": "2002"
+ },
+ {
+ "n": "2001",
+ "v": "2001"
+ },
+ {
+ "n": "2000",
+ "v": "2000"
+ },
+ {
+ "n": "1999",
+ "v": "1999"
+ },
+ {
+ "n": "1998",
+ "v": "1998"
+ },
+ {
+ "n": "1997",
+ "v": "1997"
+ },
+ {
+ "n": "1996",
+ "v": "1996"
+ },
+ {
+ "n": "1995",
+ "v": "1995"
+ },
+ {
+ "n": "1994",
+ "v": "1994"
+ },
+ {
+ "n": "1993",
+ "v": "1993"
+ },
+ {
+ "n": "1992",
+ "v": "1992"
+ },
+ {
+ "n": "1991",
+ "v": "1991"
+ },
+ {
+ "n": "1990",
+ "v": "1990"
+ },
+ {
+ "n": "1989",
+ "v": "1989"
+ },
+ {
+ "n": "1988",
+ "v": "1988"
+ },
+ {
+ "n": "1987",
+ "v": "1987"
+ },
+ {
+ "n": "1986",
+ "v": "1986"
+ },
+ {
+ "n": "1985",
+ "v": "1985"
+ },
+ {
+ "n": "1984",
+ "v": "1984"
+ },
+ {
+ "n": "1983",
+ "v": "1983"
+ },
+ {
+ "n": "1982",
+ "v": "1982"
+ },
+ {
+ "n": "1981",
+ "v": "1981"
+ },
+ {
+ "n": "1980",
+ "v": "1980"
+ },
+ {
+ "n": "1979",
+ "v": "1979"
+ },
+ {
+ "n": "1978",
+ "v": "1978"
+ },
+ {
+ "n": "1977",
+ "v": "1977"
+ },
+ {
+ "n": "1976",
+ "v": "1976"
+ },
+ {
+ "n": "1975",
+ "v": "1975"
+ },
+ {
+ "n": "1974",
+ "v": "1974"
+ },
+ {
+ "n": "1973",
+ "v": "1973"
+ },
+ {
+ "n": "1972",
+ "v": "1972"
+ },
+ {
+ "n": "1971",
+ "v": "1971"
+ },
+ {
+ "n": "1970",
+ "v": "1970"
+ },
+ {
+ "n": "1969",
+ "v": "1969"
+ },
+ {
+ "n": "1968",
+ "v": "1968"
+ },
+ {
+ "n": "1967",
+ "v": "1967"
+ },
+ {
+ "n": "1966",
+ "v": "1966"
+ },
+ {
+ "n": "1965",
+ "v": "1965"
+ },
+ {
+ "n": "1964",
+ "v": "1964"
+ },
+ {
+ "n": "1963",
+ "v": "1963"
+ },
+ {
+ "n": "1962",
+ "v": "1962"
+ },
+ {
+ "n": "1961",
+ "v": "1961"
+ },
+ {
+ "n": "1960",
+ "v": "1960"
+ },
+ {
+ "n": "1959",
+ "v": "1959"
+ },
+ {
+ "n": "1958",
+ "v": "1958"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {
+ "n": "地區🎶排序",
+ "v": "歷史記錄片 地球記錄片 宇宙記錄片 海洋記錄片 戰爭記錄片 大自然生存記錄片"
+ },
+ {
+ "n": "默认",
+ "v": "PL documentary"
+ },
+ {
+ "n": "CCTV 纪录片",
+ "v": "PL CCTV 纪录片"
+ },
+ {
+ "n": "BBC 纪录片",
+ "v": "PL BBC 纪录片"
+ },
+ {
+ "n": "国家地理",
+ "v": "PL 国家地理 纪录片"
+ },
+ {
+ "n": "Netflix纪录片",
+ "v": "PL netflix 纪录片"
+ },
+ {
+ "n": "BBC",
+ "v": "PL BBC documentary"
+ },
+ {
+ "n": "National Geographic",
+ "v": "Pl National Geographic documentary"
+ },
+ {
+ "n": "Netflix",
+ "v": "PL netflix documentary"
+ },
+ {
+ "n": "历史",
+ "v": "PL 历史 纪录片"
+ },
+ {
+ "n": "野性",
+ "v": "PL 野性 纪录片"
+ },
+ {
+ "n": "地球",
+ "v": "PL 地球 纪录片"
+ },
+ {
+ "n": "宇宙",
+ "v": "PL 宇宙 纪录片"
+ },
+ {
+ "n": "海洋",
+ "v": "PL 海洋 纪录片"
+ },
+ {
+ "n": "人文",
+ "v": "PL 人文 纪录片"
+ },
+ {
+ "n": "战争",
+ "v": "PL 战争 纪录片"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {
+ "n": "History",
+ "v": "PL Full history documentary"
+ },
+ {
+ "n": "WILD",
+ "v": "PL Full wild documentary"
+ },
+ {
+ "n": "Earch",
+ "v": "PL Full earth documentary"
+ },
+ {
+ "n": "Universe",
+ "v": "PL Full universe documentary"
+ },
+ {
+ "n": "Oceans",
+ "v": "PL Full oceans documentary"
+ },
+ {
+ "n": "Humanism",
+ "v": "PL Full humanism documentary"
+ },
+ {
+ "n": "Wars",
+ "v": "PL Full war documentary"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "音樂": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {
+ "n": "時間全選",
+ "v": ""
+ },
+ {
+ "n": "2025",
+ "v": "2025"
+ },
+ {
+ "n": "2024",
+ "v": "2024"
+ },
+ {
+ "n": "2023",
+ "v": "2023"
+ },
+ {
+ "n": "2022",
+ "v": "2022"
+ },
+ {
+ "n": "2021",
+ "v": "2021"
+ },
+ {
+ "n": "2020",
+ "v": "2020"
+ },
+ {
+ "n": "2019",
+ "v": "2019"
+ },
+ {
+ "n": "2018",
+ "v": "2018"
+ },
+ {
+ "n": "2017",
+ "v": "2017"
+ },
+ {
+ "n": "2016",
+ "v": "2016"
+ },
+ {
+ "n": "2015",
+ "v": "2015"
+ },
+ {
+ "n": "2014",
+ "v": "2014"
+ },
+ {
+ "n": "2013",
+ "v": "2013"
+ },
+ {
+ "n": "2012",
+ "v": "2012"
+ },
+ {
+ "n": "2011",
+ "v": "2011"
+ },
+ {
+ "n": "2010",
+ "v": "2010"
+ },
+ {
+ "n": "2009",
+ "v": "2009"
+ },
+ {
+ "n": "2008",
+ "v": "2008"
+ },
+ {
+ "n": "2007",
+ "v": "2007"
+ },
+ {
+ "n": "2006",
+ "v": "2006"
+ },
+ {
+ "n": "2005",
+ "v": "2005"
+ },
+ {
+ "n": "2004",
+ "v": "2004"
+ },
+ {
+ "n": "2003",
+ "v": "2003"
+ },
+ {
+ "n": "2002",
+ "v": "2002"
+ },
+ {
+ "n": "2001",
+ "v": "2001"
+ },
+ {
+ "n": "2000",
+ "v": "2000"
+ },
+ {
+ "n": "1999",
+ "v": "1999"
+ },
+ {
+ "n": "1998",
+ "v": "1998"
+ },
+ {
+ "n": "1997",
+ "v": "1997"
+ },
+ {
+ "n": "1996",
+ "v": "1996"
+ },
+ {
+ "n": "1995",
+ "v": "1995"
+ },
+ {
+ "n": "1994",
+ "v": "1994"
+ },
+ {
+ "n": "1993",
+ "v": "1993"
+ },
+ {
+ "n": "1992",
+ "v": "1992"
+ },
+ {
+ "n": "1991",
+ "v": "1991"
+ },
+ {
+ "n": "1990",
+ "v": "1990"
+ },
+ {
+ "n": "1989",
+ "v": "1989"
+ },
+ {
+ "n": "1988",
+ "v": "1988"
+ },
+ {
+ "n": "1987",
+ "v": "1987"
+ },
+ {
+ "n": "1986",
+ "v": "1986"
+ },
+ {
+ "n": "1985",
+ "v": "1985"
+ },
+ {
+ "n": "1984",
+ "v": "1984"
+ },
+ {
+ "n": "1983",
+ "v": "1983"
+ },
+ {
+ "n": "1982",
+ "v": "1982"
+ },
+ {
+ "n": "1981",
+ "v": "1981"
+ },
+ {
+ "n": "1980",
+ "v": "1980"
+ },
+ {
+ "n": "1979",
+ "v": "1979"
+ },
+ {
+ "n": "1978",
+ "v": "1978"
+ },
+ {
+ "n": "1977",
+ "v": "1977"
+ },
+ {
+ "n": "1976",
+ "v": "1976"
+ },
+ {
+ "n": "1975",
+ "v": "1975"
+ },
+ {
+ "n": "1974",
+ "v": "1974"
+ },
+ {
+ "n": "1973",
+ "v": "1973"
+ },
+ {
+ "n": "1972",
+ "v": "1972"
+ },
+ {
+ "n": "1971",
+ "v": "1971"
+ },
+ {
+ "n": "1970",
+ "v": "1970"
+ },
+ {
+ "n": "1969",
+ "v": "1969"
+ },
+ {
+ "n": "1968",
+ "v": "1968"
+ },
+ {
+ "n": "1967",
+ "v": "1967"
+ },
+ {
+ "n": "1966",
+ "v": "1966"
+ },
+ {
+ "n": "1965",
+ "v": "1965"
+ },
+ {
+ "n": "1964",
+ "v": "1964"
+ },
+ {
+ "n": "1963",
+ "v": "1963"
+ },
+ {
+ "n": "1962",
+ "v": "1962"
+ },
+ {
+ "n": "1961",
+ "v": "1961"
+ },
+ {
+ "n": "1960",
+ "v": "1960"
+ },
+ {
+ "n": "1959",
+ "v": "1959"
+ },
+ {
+ "n": "1958",
+ "v": "1958"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "地區",
+ "value": [
+ {
+ "n": "華語音樂",
+ "v": "PL 華語音樂"
+ },
+ {
+ "n": "華語MV",
+ "v": "PL 華語MV"
+ },
+ {
+ "n": "环球视听",
+ "v": "PL 环球视听"
+ },
+ {
+ "n": "YouTube 點閱率最高",
+ "v": "點閱率最高華語歌曲"
+ },
+ {
+ "n": "海外抖音",
+ "v": "PL TikTok 抖音 音樂"
+ },
+ {
+ "n": "粵語",
+ "v": "PL 粵語 音樂"
+ },
+ {
+ "n": "國語",
+ "v": "PL 國語 音樂"
+ },
+ {
+ "n": "大陆",
+ "v": "PL 大陆 音乐"
+ },
+ {
+ "n": "香港",
+ "v": "PL 香港 音乐"
+ },
+ {
+ "n": "台湾",
+ "v": "PL 台湾 音乐"
+ },
+ {
+ "n": "新加坡",
+ "v": "PL 新加坡 音乐"
+ },
+ {
+ "n": "馬來西亞",
+ "v": "PL 馬來西亞 音乐"
+ },
+ {
+ "n": "泰國",
+ "v": "PL 泰國 音乐"
+ },
+ {
+ "n": "越南",
+ "v": "PL 越南 音乐"
+ },
+ {
+ "n": "印度",
+ "v": "PL 印度 音乐"
+ },
+ {
+ "n": "韩国",
+ "v": "PL 韩国 音乐"
+ },
+ {
+ "n": "日本",
+ "v": "PL 日本 音乐"
+ },
+ {
+ "n": "欧美",
+ "v": "PL 欧美 音乐"
+ },
+ {
+ "n": "时光音乐会 MV",
+ "v": "时光音乐会MV"
+ },
+ {
+ "n": "中国好声音 MV",
+ "v": "中国好声音MV"
+ },
+ {
+ "n": "滚石 MV",
+ "v": "滚石MV"
+ },
+ {
+ "n": "古风 MV",
+ "v": "古风MV"
+ },
+ {
+ "n": "韩国女团 MV",
+ "v": "韩国女团MV"
+ },
+ {
+ "n": "欧美",
+ "v": "欧美 音乐"
+ },
+ {
+ "n": "BillBoard",
+ "v": "BillBoard"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "愛好",
+ "value": [
+ {
+ "n": "合辑",
+ "v": "合辑"
+ },
+ {
+ "n": "超級女聲",
+ "v": "超級女聲"
+ },
+ {
+ "n": "whitneyhouston",
+ "v": "@whitneyhoustonmusic"
+ },
+ {
+ "n": "玛丽.凯丽",
+ "v": "@MariahCarey"
+ },
+ {
+ "n": "LadyGaga",
+ "v": "@LadyGaga"
+ },
+ {
+ "n": "G.E.M邓紫棋",
+ "v": "@gem0816"
+ },
+ {
+ "n": "麦当娜",
+ "v": "@madonna"
+ },
+ {
+ "n": "Taylor Swift",
+ "v": "@TaylorSwift"
+ },
+ {
+ "n": "舞曲",
+ "v": "蹦迪現場 慢搖 夜店 低音 女聲 "
+ },
+ {
+ "n": "80-90",
+ "v": "80 90 音樂"
+ },
+ {
+ "n": "人聲",
+ "v": "人聲 音樂"
+ },
+ {
+ "n": "硬歌",
+ "v": "深水炸弹"
+ },
+ {
+ "n": "A8製造",
+ "v": "A8製造 工體音樂"
+ },
+ {
+ "n": "中国MTV",
+ "v": "@ChineseMusicTV"
+ },
+ {
+ "n": "滚石",
+ "v": "@RockRecordsTaipei"
+ },
+ {
+ "n": "失傳已久",
+ "v": "嗨音雷虎 失傳 嗨音會所 音樂"
+ },
+ {
+ "n": "重低音 DJ",
+ "v": "重低音 DJ"
+ },
+ {
+ "n": "車載舞曲",
+ "v": "車載慢搖"
+ },
+ {
+ "n": "超級女聲",
+ "v": "超級女聲"
+ },
+ {
+ "n": "tseries",
+ "v": "@tseries"
+ },
+ {
+ "n": "戲曲",
+ "v": "秦腔 京剧 越剧 黄梅戏 评剧 豫剧 昆曲 高腔 梆子腔 河北梆子 晋剧 蒲剧 雁剧 上党梆子 武安平调 二人台 吉剧 龙江剧 越调 河南曲剧 山东梆子 淮剧 滑稽戏 婺剧 绍剧 徽剧 闽剧 莆仙戏 梨园戏 高甲戏 赣剧 采茶戏 汉剧 湘剧 祁剧 湖南花鼓戏 粤剧 潮剧 桂剧 彩调 壮剧 川剧 黔剧 滇剧 傣剧 藏剧 皮影戏"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "歌手",
+ "value": [
+ {
+ "n": "邓丽君",
+ "v": "邓丽君 音乐"
+ },
+ {
+ "n": "林忆莲",
+ "v": "林忆莲 音樂"
+ },
+ {
+ "n": "陈慧娴",
+ "v": "陈慧娴音樂"
+ },
+ {
+ "n": "韩宝仪",
+ "v": "韩宝仪 音樂"
+ },
+ {
+ "n": "张学友",
+ "v": "张学友 音樂"
+ },
+ {
+ "n": "李宗盛",
+ "v": "李宗盛 音樂"
+ },
+ {
+ "n": "罗大佑",
+ "v": "罗大佑 音樂"
+ },
+ {
+ "n": "周杰伦",
+ "v": "周杰伦 音樂"
+ },
+ {
+ "n": "张玮伽",
+ "v": "张玮伽 音樂"
+ },
+ {
+ "n": "张惠妹",
+ "v": "张惠妹 音樂"
+ },
+ {
+ "n": "斯琴高麗",
+ "v": "斯琴高麗 音樂"
+ },
+ {
+ "n": "林俊杰",
+ "v": "@jjlin • 音乐"
+ },
+ {
+ "n": "周深",
+ "v": "周深 音樂"
+ },
+ {
+ "n": "張瑋伽",
+ "v": "張瑋伽 演唱會 巡演 音樂"
+ },
+ {
+ "n": "孫露",
+ "v": "孫露 演唱會 巡演 音樂"
+ },
+ {
+ "n": "鳳凰傳奇",
+ "v": "鳳凰傳奇 演 巡演 音樂"
+ },
+ {
+ "n": "刀郎",
+ "v": "刀郎 演唱會 巡演 音樂"
+ },
+ {
+ "n": "S.H.E",
+ "v": "S.H.E 演唱會 巡演 音樂"
+ },
+ {
+ "n": "慕容曉曉",
+ "v": "慕容曉曉 演唱會 巡演 音樂"
+ },
+ {
+ "n": "東方紅豔",
+ "v": "東方紅豔 演唱會 巡演 音樂"
+ },
+ {
+ "n": "孟庭葦",
+ "v": "孟庭葦 演唱會 巡演 音樂"
+ },
+ {
+ "n": "斯琴高麗",
+ "v": "斯琴高麗 演唱會 巡演 音樂"
+ },
+ {
+ "n": "程響",
+ "v": "程響 演唱會 巡演 音樂"
+ },
+ {
+ "n": "蔣雪兒",
+ "v": "蔣雪兒 演唱會 巡演 音樂"
+ },
+ {
+ "n": "迈克尔杰克逊",
+ "v": "麥可傑克森"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "體育": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {
+ "n": "時間全選",
+ "v": ""
+ },
+ {
+ "n": "2025",
+ "v": "2025"
+ },
+ {
+ "n": "2024",
+ "v": "2024"
+ },
+ {
+ "n": "2023",
+ "v": "2023"
+ },
+ {
+ "n": "2022",
+ "v": "2022"
+ },
+ {
+ "n": "2021",
+ "v": "2021"
+ },
+ {
+ "n": "2020",
+ "v": "2020"
+ },
+ {
+ "n": "2019",
+ "v": "2019"
+ },
+ {
+ "n": "2018",
+ "v": "2018"
+ },
+ {
+ "n": "2017",
+ "v": "2017"
+ },
+ {
+ "n": "2016",
+ "v": "2016"
+ },
+ {
+ "n": "2015",
+ "v": "2015"
+ },
+ {
+ "n": "2014",
+ "v": "2014"
+ },
+ {
+ "n": "2013",
+ "v": "2013"
+ },
+ {
+ "n": "2012",
+ "v": "2012"
+ },
+ {
+ "n": "2011",
+ "v": "2011"
+ },
+ {
+ "n": "2010",
+ "v": "2010"
+ },
+ {
+ "n": "2009",
+ "v": "2009"
+ },
+ {
+ "n": "2008",
+ "v": "2008"
+ },
+ {
+ "n": "2007",
+ "v": "2007"
+ },
+ {
+ "n": "2006",
+ "v": "2006"
+ },
+ {
+ "n": "2005",
+ "v": "2005"
+ },
+ {
+ "n": "2004",
+ "v": "2004"
+ },
+ {
+ "n": "2003",
+ "v": "2003"
+ },
+ {
+ "n": "2002",
+ "v": "2002"
+ },
+ {
+ "n": "2001",
+ "v": "2001"
+ },
+ {
+ "n": "2000",
+ "v": "2000"
+ },
+ {
+ "n": "1999",
+ "v": "1999"
+ },
+ {
+ "n": "1998",
+ "v": "1998"
+ },
+ {
+ "n": "1997",
+ "v": "1997"
+ },
+ {
+ "n": "1996",
+ "v": "1996"
+ },
+ {
+ "n": "1995",
+ "v": "1995"
+ },
+ {
+ "n": "1994",
+ "v": "1994"
+ },
+ {
+ "n": "1993",
+ "v": "1993"
+ },
+ {
+ "n": "1992",
+ "v": "1992"
+ },
+ {
+ "n": "1991",
+ "v": "1991"
+ },
+ {
+ "n": "1990",
+ "v": "1990"
+ },
+ {
+ "n": "1989",
+ "v": "1989"
+ },
+ {
+ "n": "1988",
+ "v": "1988"
+ },
+ {
+ "n": "1987",
+ "v": "1987"
+ },
+ {
+ "n": "1986",
+ "v": "1986"
+ },
+ {
+ "n": "1985",
+ "v": "1985"
+ },
+ {
+ "n": "1984",
+ "v": "1984"
+ },
+ {
+ "n": "1983",
+ "v": "1983"
+ },
+ {
+ "n": "1982",
+ "v": "1982"
+ },
+ {
+ "n": "1981",
+ "v": "1981"
+ },
+ {
+ "n": "1980",
+ "v": "1980"
+ },
+ {
+ "n": "1979",
+ "v": "1979"
+ },
+ {
+ "n": "1978",
+ "v": "1978"
+ },
+ {
+ "n": "1977",
+ "v": "1977"
+ },
+ {
+ "n": "1976",
+ "v": "1976"
+ },
+ {
+ "n": "1975",
+ "v": "1975"
+ },
+ {
+ "n": "1974",
+ "v": "1974"
+ },
+ {
+ "n": "1973",
+ "v": "1973"
+ },
+ {
+ "n": "1972",
+ "v": "1972"
+ },
+ {
+ "n": "1971",
+ "v": "1971"
+ },
+ {
+ "n": "1970",
+ "v": "1970"
+ },
+ {
+ "n": "1969",
+ "v": "1969"
+ },
+ {
+ "n": "1968",
+ "v": "1968"
+ },
+ {
+ "n": "1967",
+ "v": "1967"
+ },
+ {
+ "n": "1966",
+ "v": "1966"
+ },
+ {
+ "n": "1965",
+ "v": "1965"
+ },
+ {
+ "n": "1964",
+ "v": "1964"
+ },
+ {
+ "n": "1963",
+ "v": "1963"
+ },
+ {
+ "n": "1962",
+ "v": "1962"
+ },
+ {
+ "n": "1961",
+ "v": "1961"
+ },
+ {
+ "n": "1960",
+ "v": "1960"
+ },
+ {
+ "n": "1959",
+ "v": "1959"
+ },
+ {
+ "n": "1958",
+ "v": "1958"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "休育直播",
+ "v": "體育直播"
+ },
+ {
+ "n": "休育赛事",
+ "v": "體育赛事"
+ },
+ {
+ "n": "足球比赛",
+ "v": "足球賽事"
+ },
+ {
+ "n": "篮球比赛",
+ "v": "篮球賽事"
+ },
+ {
+ "n": "极限运动",
+ "v": "极限運動"
+ },
+ {
+ "n": "室内运动",
+ "v": "室内運動"
+ },
+ {
+ "n": "户外运动",
+ "v": "户外運動"
+ },
+ {
+ "n": "瑜伽健身",
+ "v": "瑜珈健身"
+ },
+ {
+ "n": "健身运动",
+ "v": "健身運動"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {
+ "n": "Live",
+ "v": "live sports"
+ },
+ {
+ "n": "Games",
+ "v": "live games"
+ },
+ {
+ "n": "Soccer",
+ "v": "live soccer"
+ },
+ {
+ "n": "NBA",
+ "v": "NBA"
+ },
+ {
+ "n": "Extreme",
+ "v": "extreme sports"
+ },
+ {
+ "n": "InDoor",
+ "v": "indoor sports"
+ },
+ {
+ "n": "OutDoor",
+ "v": "outdoor sports"
+ },
+ {
+ "n": "Workout",
+ "v": "workout"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "體育",
+ "value": [
+ {
+ "n": "女足港場",
+ "v": "女足港場 @Hong KongWomensStadium"
+ },
+ {
+ "n": "全國校運動會",
+ "v": "全國大專 校院運動會 全中運 女子組賽事 全國中等 學校運動會"
+ },
+ {
+ "n": "女中儀隊",
+ "v": "北一女中樂儀旗隊永續發展協會 北一女中家長會樂儀旗家長後援會 北一女中儀隊校友隊 台灣 学校运动会 景美女中儀隊 北一女樂儀旗隊 full樂儀隊 "
+ },
+ {
+ "n": "校園熱舞",
+ "v": "full 校園熱舞 開南熱無 開南大學課外活動組 女生熱舞社 南寶熱舞社 寶踐熱舞社 NTDC 熱舞社 STUST"
+ },
+ {
+ "n": "红星体育官方频道",
+ "v": "红星体育官方频道【高清直播】"
+ },
+ {
+ "n": "中國體育比賽傳奇",
+ "v": "中國體育比賽傳奇"
+ },
+ {
+ "n": "愛爾達體育家族",
+ "v": "愛爾達體育家族 ELTA Sports"
+ },
+ {
+ "n": "公視體育",
+ "v": "公視體育"
+ },
+ {
+ "n": "體育之光",
+ "v": "體育之光"
+ },
+ {
+ "n": "偶然體育賽事",
+ "v": "偶然體育賽事"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "時尚": [
+ {
+ "key": "tid",
+ "name": "时装秀",
+ "value": [
+ {
+ "n": "街舞",
+ "v": "街舞"
+ },
+ {
+ "n": "時裝秀",
+ "v": "hdr ASM lingerieTV 東京ファッションショー 下着ショー"
+ },
+ {
+ "n": "潮流秀",
+ "v": "FASHION IN UHD"
+ },
+ {
+ "n": "時尚走秀",
+ "v": "時尚走秀 Fashion show"
+ },
+ {
+ "n": "时装模特",
+ "v": "FASHION Runway"
+ },
+ {
+ "n": "模特",
+ "v": "比基尼 泳裝 頂級車模 空姐 寫真 Car model Stewardess Portrait"
+ },
+ {
+ "n": "裸体秀",
+ "v": "hdr 人體藝術 裸体秀 Nude show"
+ },
+ {
+ "n": "無限亂鬥",
+ "v": "hdr 廟會秀 無限HD 公廟 鋼管舞 脫衣舞 舞女 清純 寫真"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "小姐姐",
+ "value": [
+ {
+ "n": "小姐姐超清",
+ "v": "小姐姐超清"
+ },
+ {
+ "n": "国内小姐姐",
+ "v": "国内小姐姐"
+ },
+ {
+ "n": "韩国小姐姐",
+ "v": "韩国小姐姐"
+ },
+ {
+ "n": "日本小姐姐",
+ "v": "日本小姐姐"
+ },
+ {
+ "n": "俄罗斯小姐姐",
+ "v": "俄罗斯小姐姐"
+ },
+ {
+ "n": "混血小姐姐",
+ "v": "混血小姐姐"
+ },
+ {
+ "n": "越南小姐姐",
+ "v": "越南小姐姐"
+ },
+ {
+ "n": "Al小姐姐",
+ "v": "Al美女超清"
+ },
+ {
+ "n": "抖音热门小姐姐",
+ "v": "抖音热门小姐姐"
+ },
+ {
+ "n": "快手热门美女",
+ "v": "快手热门美女"
+ },
+ {
+ "n": "打碟小姐姐",
+ "v": "打碟小姐姐"
+ },
+ {
+ "n": "冲浪小姐姐",
+ "v": "冲浪小姐姐"
+ },
+ {
+ "n": "蹦迪小姐姐",
+ "v": "蹦迪小姐姐"
+ },
+ {
+ "n": "艺校小姐姐",
+ "v": "艺校小姐姐"
+ },
+ {
+ "n": "环球小姐",
+ "v": "环球小姐"
+ },
+ {
+ "n": "泰国人妖",
+ "v": "泰国人妖"
+ },
+ {
+ "n": "人间胸器",
+ "v": "人间胸器"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {
+ "n": "sexy Miss",
+ "v": "sexy Miss"
+ },
+ {
+ "n": "Hot sexy Girl",
+ "v": "Hot sexy Girl"
+ },
+ {
+ "n": "Korean Girl",
+ "v": "Korean sexy Girl"
+ },
+ {
+ "n": "Japanese Girl",
+ "v": "Japanese sexy Girl"
+ },
+ {
+ "n": "Russian Girl",
+ "v": "Russian sexy Girl"
+ },
+ {
+ "n": "Vietnamese Girl",
+ "v": "Vietnamese sexy Girl"
+ },
+ {
+ "n": "AI Girl",
+ "v": "AI Girl"
+ },
+ {
+ "n": "TikTok Hot Siste",
+ "v": "TikTok Hot sexy Girl"
+ },
+ {
+ "n": "Cute Girl",
+ "v": "sexy Cute Girl"
+ },
+ {
+ "n": "Girl Dj",
+ "v": "sexy Girl Dj"
+ },
+ {
+ "n": "Girl Surfer",
+ "v": "sexy Girl Surfer"
+ },
+ {
+ "n": "Dance Girl",
+ "v": "Dance sexy Girl"
+ },
+ {
+ "n": "Miss Universe",
+ "v": "Miss Universe"
+ },
+ {
+ "n": "Thai Shemale",
+ "v": "Thai Shemale"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "解說": [
+ {
+ "key": "tid",
+ "name": "頻道主",
+ "value": [
+ {
+ "n": "宇哥侃故事",
+ "v": "PL 宇哥侃故事"
+ },
+ {
+ "n": "零度解说",
+ "v": "PL 零度解说"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "战情室": [
+ {
+ "key": "tid",
+ "name": "栏目",
+ "value": [
+ {
+ "n": "军情观察室",
+ "v": "|PL-K7NYq6mtAuw3rO7t2rDUhI3qbS1rLMj"
+ },
+ {
+ "n": "环球大战线",
+ "v": "|PLwHjhKNud0GiqFBpW5aorjeIVO4mZAn_b"
+ },
+ {
+ "n": "少康战情室",
+ "v": "|PL64Si-sSRnvZFmksKhDl34-Rgv2NGFbK-"
+ },
+ {
+ "n": "国际直球对决",
+ "v": "|PLvHT0yeWYIuASUZjoW8OXe4e_UkgP7qDU"
+ },
+ {
+ "n": "全球大视野",
+ "v": "|PLvHT0yeWYIuDyLVv1yDiIxhtk1ZQ92_RY"
+ },
+ {
+ "n": "前进战略高地",
+ "v": "|PLvHT0yeWYIuBGUWA2KySjgKdPEUFuM8Dc"
+ },
+ {
+ "n": "全广角",
+ "v": "|PL7I7pJTFhwdoALXJ4QyPjaCIRNm2qBCpU"
+ }
+ ]
+ }
+ ],
+ "自媒體": [
+ {
+ "key": "tid",
+ "name": "频道主",
+ "value": [
+ {
+ "n": "cctv电视剧",
+ "v": "UC7Vl0YiY0rDlovqcCFN4yTA"
+ },
+ {
+ "n": "王剑每日观察",
+ "v": "PD王剑每日观察"
+ },
+ {
+ "n": "红岸视野",
+ "v": "PD红岸视野"
+ },
+ {
+ "n": "私人局",
+ "v": "PD私人局"
+ },
+ {
+ "n": "内部看美国",
+ "v": "PD内部看美国"
+ },
+ {
+ "n": "饭圈人间观察",
+ "v": "PD饭圈人间观察"
+ },
+ {
+ "n": "孤烟暮蝉",
+ "v": "PD孤烟暮蝉"
+ },
+ {
+ "n": "老高与小茉",
+ "v": "PD老高与小茉"
+ },
+ {
+ "n": "海洋探险",
+ "v": "UCJUIqG9JUcQ5saqXSYTF0gg"
+ }
+ ]
+ }
+ ],
+ "HDR": [
+ {
+ "key": "tid",
+ "name": "風景",
+ "value": [
+ {
+ "n": "運動",
+ "v": "GoPro 女翼裝飛行 極限自行車運動"
+ },
+ {
+ "n": "風景",
+ "v": "hdr 大自然"
+ },
+ {
+ "n": "Links TV 頻道主",
+ "v": "@linksphotograph Links TV hdr"
+ },
+ {
+ "n": "放鬆",
+ "v": "hdr 放鬆"
+ },
+ {
+ "n": "動物世界",
+ "v": "hdr 動物世界 Carnivorous Animals"
+ },
+ {
+ "n": "深海世界",
+ "v": "hdr 深海世界 Invertebrate Fish"
+ },
+ {
+ "n": "飛禽走獸",
+ "v": "hdr Birds of Prey Columbiform Birds Passerine Birds"
+ },
+ {
+ "n": "生物世界",
+ "v": "hdr 生物世界 Amphibians Reptiles"
+ }
+ ]
+ }
+ ],
+ "Full YouTube": [
+ {
+ "key": "tid",
+ "name": "頻道主",
+ "value": [
+ {
+ "n": "李子柒",
+ "v": "李子柒 Liziqi @cnliziqi"
+ },
+ {
+ "n": "滇西小哥",
+ "v": "滇西小哥 @dianxixiaoge"
+ },
+ {
+ "n": "老高與小茉",
+ "v": "老高與小茉 @laogao"
+ },
+ {
+ "n": "李永樂老師",
+ "v": "李永樂老師 @TchLiyongle"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "美食頻道主",
+ "value": [
+ {
+ "n": "美食作家王刚",
+ "v": "美食作家王刚 @chefwang"
+ },
+ {
+ "n": "小高姐的 Magic Ingredients",
+ "v": "小高姐的 Magic Ingredients @MagicIngredients"
+ },
+ {
+ "n": "小穎美食",
+ "v": "小穎美食 @XiaoYingFood"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "野外頻道主",
+ "value": [
+ {
+ "n": "野外求生",
+ "v": "@primitivetechnology9550"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "科普频道主",
+ "value": [
+ {
+ "n": "科普",
+ "v": "Mr Beast@MrBeast"
+ },
+ {
+ "n": "航天大學",
+ "v": "Airforceproud95 @Airforceproud95"
+ },
+ {
+ "n": "世界大戰",
+ "v": "TheGreatWar @TheGreatWar"
+ },
+ {
+ "n": "MarkRober",
+ "v": "Mark Rober @MarkRober"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "教材",
+ "value": [
+ {
+ "n": "不良林",
+ "v": "不良林"
+ },
+ {
+ "n": "涌哥侃侃",
+ "v": "涌哥侃侃 @ygkkk"
+ },
+ {
+ "n": "悟空的日常",
+ "v": "悟空的日常"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "宇宙": [
+ {
+ "key": "tid",
+ "name": "科普知識",
+ "value": [
+ {
+ "n": "宇宙",
+ "v": "光年 黑洞 銀河系 空間站 太空技術"
+ },
+ {
+ "n": "粒子",
+ "v": "空間粒子 宇宙磁場 四維空間 元素 量子 光波 光源 靈魂"
+ },
+ {
+ "n": "靠蒙",
+ "v": "microorganism"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "歷史科普",
+ "value": [
+ {
+ "n": "世界大戰",
+ "v": "世界大戰 二戰 日侵 八國聯軍"
+ },
+ {
+ "n": "人物",
+ "v": "古代名人 歷史名人 歷代祖先"
+ },
+ {
+ "n": "生物進化史",
+ "v": "人類進化 微生物進化 動物進化 地球進化"
+ },
+ {
+ "v": "歷史 History"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ]
+ },
+ "jx": 0,
+ "parse": 0
+}
\ No newline at end of file
diff --git a/cluntop_tvbox/pg.jar b/cluntop_tvbox/pg.jar
index f5111315..fd1936d3 100755
Binary files a/cluntop_tvbox/pg.jar and b/cluntop_tvbox/pg.jar differ
diff --git a/cluntop_tvbox/pg.jar.md5 b/cluntop_tvbox/pg.jar.md5
index 47d5f5c0..be3701c1 100755
--- a/cluntop_tvbox/pg.jar.md5
+++ b/cluntop_tvbox/pg.jar.md5
@@ -1 +1 @@
-2bcfe51e523f1b2c0cd7834db0dea613
+c3e1076058635dd37ca90220add97dc1
diff --git a/cluntop_tvbox/py/ytb.py b/cluntop_tvbox/py/ytb.py
new file mode 100644
index 00000000..ef091bca
--- /dev/null
+++ b/cluntop_tvbox/py/ytb.py
@@ -0,0 +1,3228 @@
+#coding=utf-8
+#!/usr/bin/python
+import re
+import os
+import sys
+import json
+import html
+import time
+from urllib.parse import quote, unquote, parse_qs, urlencode, urlparse, urlunparse, urljoin
+
+import requests
+from base.spider import Spider
+
+sys.path.append('..')
+
+# ---------- 日志路径 ----------
+# DEBUG_LOG = '/storage/emulated/0/源码/ytb_debug.log'
+def _ensure_log_dir():
+ try:
+ log_dir = os.path.dirname(DEBUG_LOG)
+ if log_dir and not os.path.exists(log_dir):
+ os.makedirs(log_dir, exist_ok=True)
+ except:
+ pass
+_ensure_log_dir()
+
+def debug_log(message, data=None):
+ try:
+ log_dir = os.path.dirname(DEBUG_LOG)
+ if log_dir and not os.path.exists(log_dir):
+ os.makedirs(log_dir, exist_ok=True)
+ line = f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] {message}"
+ if data is not None:
+ if isinstance(data, (dict, list)):
+ line += ' ' + json.dumps(data, ensure_ascii=False, default=str)
+ else:
+ line += ' ' + str(data)
+ with open(DEBUG_LOG, 'a', encoding='utf-8') as f:
+ f.write(line + '\n')
+ except Exception:
+ pass
+
+# ==================== 从 youtube.json 加载分类和过滤器 ====================
+YOUTUBE_CLASSES = [
+ {"type_name": "推荐", "type_id": "YouTube 直播 24小時"},
+ {"type_id": "YouTube 新聞 Live", "type_name": "新闻"},
+ {"type_id": "劇集", "type_name": "剧集"},
+ {"type_id": "電影", "type_name": "电影"},
+ {"type_id": "动画片", "type_name": "动画片"},
+ {"type_id": "綜藝", "type_name": "综艺"},
+ {"type_id": "短劇", "type_name": "短剧"},
+ {"type_id": "紀錄片", "type_name": "纪录片"},
+ {"type_id": "體育", "type_name": "体育"},
+ {"type_id": "音樂", "type_name": "音乐"},
+ {"type_id": "放松", "type_name": "放松"},
+ {"type_id": "時尚潮流", "type_name": "时尚潮流"},
+ {"type_id": "宇宙", "type_name": "科普"},
+ {"type_id": "科技", "type_name": "科技"},
+ {"type_id": "解說", "type_name": "解说"},
+ {"type_id": "神秘", "type_name": "神秘"},
+ {"type_id": "4K", "type_name": "4K"},
+ {"type_id": "16K HDR", "type_name": "16K HDR"},
+ {"type_id": "LIST:自媒體 We Media,零度解说 @lingdujieshuo,老高與小茉 @laogao,李子柒 Liziqi @cnliziqi,康1+1 @user-mr5bh4bk8z,不良林,涌哥侃侃 @ygkkk,悟空的日常,Learn English with EnglishClass101.com,Speak English With Vanessa,Tangerine Academy,听笙阁 @tingshengge,李永樂老師 @TchLiyongle,滇西小哥 @dianxixiaoge,脑洞乌托邦 @NDWTB,自说自话的总裁 @STBoss,老肉雜談 @老肉雜談,老饭骨 @LaoFanGu,小高姐的 Magic Ingredients @MagicIngredients,小穎美食 @XiaoYingFood,primitivetechnology9550 @primitivetechnology9550,Mr Beast@MrBeast,Airforceproud95 @Airforceproud95,TheGreatWar @TheGreatWar,Mark Rober @MarkRober", "type_name": "自媒体"}
+]
+CATEGORY_FILTERS = {
+ "YouTube 直播 24小時": [
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {"n": "默认", "v": "鳳凰衛視 @phoenixtv 中天新闻不斷電直播"},
+ {"n": "鳳凰衛視", "v": "大事發生看鳳凰 鳳凰 鳳凰衛視 @phoenixtv"},
+ {"n": "中天新闻", "v": "直播 中天新闻"}
+ ]
+ }
+ ],
+ "短劇": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {"n": "時間全選", "v": ""},
+ {"n": "2025", "v": "2025"},
+ {"n": "2024", "v": "2024"},
+ {"n": "2023", "v": "2023"},
+ {"n": "2022", "v": "2022"},
+ {"n": "2021", "v": "2021"},
+ {"n": "2020", "v": "2020"},
+ {"n": "2019", "v": "2019"},
+ {"n": "2018", "v": "2018"},
+ {"n": "2017", "v": "2017"},
+ {"n": "2016", "v": "2016"},
+ {"n": "2015", "v": "2015"},
+ {"n": "2014", "v": "2014"},
+ {"n": "2013", "v": "2013"},
+ {"n": "2012", "v": "2012"},
+ {"n": "2011", "v": "2011"},
+ {"n": "2010", "v": "2010"},
+ {"n": "2009", "v": "2009"},
+ {"n": "2008", "v": "2008"},
+ {"n": "2007", "v": "2007"},
+ {"n": "2006", "v": "2006"},
+ {"n": "2005", "v": "2005"},
+ {"n": "2004", "v": "2004"},
+ {"n": "2003", "v": "2003"},
+ {"n": "2002", "v": "2002"},
+ {"n": "2001", "v": "2001"},
+ {"n": "2000", "v": "2000"},
+ {"n": "1999", "v": "1999"},
+ {"n": "1998", "v": "1998"},
+ {"n": "1997", "v": "1997"},
+ {"n": "1996", "v": "1996"},
+ {"n": "1995", "v": "1995"},
+ {"n": "1994", "v": "1994"},
+ {"n": "1993", "v": "1993"},
+ {"n": "1992", "v": "1992"},
+ {"n": "1991", "v": "1991"},
+ {"n": "1990", "v": "1990"},
+ {"n": "1989", "v": "1989"},
+ {"n": "1988", "v": "1988"},
+ {"n": "1987", "v": "1987"},
+ {"n": "1986", "v": "1986"},
+ {"n": "1985", "v": "1985"},
+ {"n": "1984", "v": "1984"},
+ {"n": "1983", "v": "1983"},
+ {"n": "1982", "v": "1982"},
+ {"n": "1981", "v": "1981"},
+ {"n": "1980", "v": "1980"},
+ {"n": "1979", "v": "1979"},
+ {"n": "1978", "v": "1978"},
+ {"n": "1977", "v": "1977"},
+ {"n": "1976", "v": "1976"},
+ {"n": "1975", "v": "1975"},
+ {"n": "1974", "v": "1974"},
+ {"n": "1973", "v": "1973"},
+ {"n": "1972", "v": "1972"},
+ {"n": "1971", "v": "1971"},
+ {"n": "1970", "v": "1970"},
+ {"n": "1969", "v": "1969"},
+ {"n": "1968", "v": "1968"},
+ {"n": "1967", "v": "1967"},
+ {"n": "1966", "v": "1966"},
+ {"n": "1965", "v": "1965"},
+ {"n": "1964", "v": "1964"},
+ {"n": "1963", "v": "1963"},
+ {"n": "1962", "v": "1962"},
+ {"n": "1961", "v": "1961"},
+ {"n": "1960", "v": "1960"},
+ {"n": "1959", "v": "1959"},
+ {"n": "1958", "v": "1958"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "短劇",
+ "value": [
+ {"n": "抖音", "v": "抖音 短剧"},
+ {"n": "快手", "v": "快手 短剧"},
+ {"n": "大陆", "v": "大陆 短剧"},
+ {"n": "香港", "v": "香港 短剧"},
+ {"n": "澳門", "v": "澳門 短剧"},
+ {"n": "台湾", "v": "台湾 短剧"},
+ {"n": "新加坡", "v": "新加坡 短剧"},
+ {"n": "馬來西亞", "v": "馬來西亞 短剧"},
+ {"n": "泰國", "v": "泰國 短剧"},
+ {"n": "越南", "v": "越南 短剧"},
+ {"n": "印度", "v": "印度 短剧"},
+ {"n": "韩国", "v": "韩国 短剧"},
+ {"n": "日本", "v": "日本 短剧"},
+ {"n": "欧美", "v": "欧美 短剧"},
+ {"n": "腾讯", "v": "腾讯 短剧"},
+ {"n": "爱奇艺", "v": "爱奇艺 短剧"},
+ {"n": "优酷", "v": "优酷 短剧"},
+ {"n": "芒果", "v": "芒果TV 短剧"},
+ {"n": "搜狐", "v": "搜狐 短剧"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "短劇",
+ "value": [
+ {"n": "都市", "v": "@Urbanshort-TV 都市 短劇"},
+ {"n": "爱情", "v": "爱情 短劇"},
+ {"n": "复仇", "v": "复仇 短劇"},
+ {"n": "霸总", "v": "霸总 短劇"},
+ {"n": "萌宝", "v": "萌宝 短劇"},
+ {"n": "古装", "v": "古装 短劇"},
+ {"n": "穿越", "v": "穿越 短劇"},
+ {"n": "喜剧", "v": "喜剧 短劇"},
+ {"n": "奇幻", "v": "奇幻 短劇"},
+ {"n": "九酱爱追剧", "v": "@NineSauceDramaTV"},
+ {"n": "百万好剧场", "v": "@1-pw5ox"},
+ {"n": "咖啡追剧", "v": "@@coffeedrama605"},
+ {"n": "斗罗短剧", "v": "@DouluoDrama123 斗羅短劇"},
+ {"n": "嘟嘟剧场", "v": "@DUDUJUCHANG"},
+ {"n": "牛牛短剧", "v": "@niuniuduanju"}
+ ]
+ }
+ ],
+ "动画片": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {"n": "時間全選", "v": ""},
+ {"n": "2024", "v": "2024"},
+ {"n": "2023", "v": "2023"},
+ {"n": "2022", "v": "2022"},
+ {"n": "2021", "v": "2021"},
+ {"n": "2020", "v": "2020"},
+ {"n": "2019", "v": "2019"},
+ {"n": "2018", "v": "2018"},
+ {"n": "2017", "v": "2017"},
+ {"n": "2016", "v": "2016"},
+ {"n": "2015", "v": "2015"},
+ {"n": "2014", "v": "2014"},
+ {"n": "2013", "v": "2013"},
+ {"n": "2012", "v": "2012"},
+ {"n": "2011", "v": "2011"},
+ {"n": "2010", "v": "2010"},
+ {"n": "2009", "v": "2009"},
+ {"n": "2008", "v": "2008"},
+ {"n": "2007", "v": "2007"},
+ {"n": "2006", "v": "2006"},
+ {"n": "2005", "v": "2005"},
+ {"n": "2004", "v": "2004"},
+ {"n": "2003", "v": "2003"},
+ {"n": "2002", "v": "2002"},
+ {"n": "2001", "v": "2001"},
+ {"n": "2000", "v": "2000"},
+ {"n": "1999", "v": "1999"},
+ {"n": "1998", "v": "1998"},
+ {"n": "1997", "v": "1997"},
+ {"n": "1996", "v": "1996"},
+ {"n": "1995", "v": "1995"},
+ {"n": "1994", "v": "1994"},
+ {"n": "1993", "v": "1993"},
+ {"n": "1992", "v": "1992"},
+ {"n": "1991", "v": "1991"},
+ {"n": "1990", "v": "1990"},
+ {"n": "1989", "v": "1989"},
+ {"n": "1988", "v": "1988"},
+ {"n": "1987", "v": "1987"},
+ {"n": "1986", "v": "1986"},
+ {"n": "1985", "v": "1985"},
+ {"n": "1984", "v": "1984"},
+ {"n": "1983", "v": "1983"},
+ {"n": "1982", "v": "1982"},
+ {"n": "1981", "v": "1981"},
+ {"n": "1980", "v": "1980"},
+ {"n": "1979", "v": "1979"},
+ {"n": "1978", "v": "1978"},
+ {"n": "1977", "v": "1977"},
+ {"n": "1976", "v": "1976"},
+ {"n": "1975", "v": "1975"},
+ {"n": "1974", "v": "1974"},
+ {"n": "1973", "v": "1973"},
+ {"n": "1972", "v": "1972"},
+ {"n": "1971", "v": "1971"},
+ {"n": "1970", "v": "1970"},
+ {"n": "1969", "v": "1969"},
+ {"n": "1968", "v": "1968"},
+ {"n": "1967", "v": "1967"},
+ {"n": "1966", "v": "1966"},
+ {"n": "1965", "v": "1965"},
+ {"n": "1964", "v": "1964"},
+ {"n": "1963", "v": "1963"},
+ {"n": "1962", "v": "1962"},
+ {"n": "1961", "v": "1961"},
+ {"n": "1960", "v": "1960"},
+ {"n": "1959", "v": "1959"},
+ {"n": "1958", "v": "1958"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {"n": "默认中文国漫", "v": "國漫 劇集 3D"},
+ {"n": "默认", "v": "animation"},
+ {"n": "儿童早教", "v": "儿童早教"},
+ {"n": "儿童歌曲", "v": "儿童歌曲"},
+ {"n": "儿童音乐", "v": "儿童音乐"},
+ {"n": "儿童绘画", "v": "儿童绘画"},
+ {"n": "宝宝巴士", "v": "宝宝巴士"},
+ {"n": "儿歌多多", "v": "儿歌多多"},
+ {"n": "儿童英语启蒙", "v": "儿童英语启蒙"},
+ {"n": "儿童启蒙故事", "v": "儿童启蒙故事"},
+ {"n": "儿童安全教育", "v": "儿童安全教育"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {"n": "默认英文国漫", "v": "3D Chinese cartoon"},
+ {"n": "小猪佩奇", "v": "@PeppaPigChineseOfficial 小猪佩奇 中文官方 - Peppa Pig"},
+ {"n": "CoComelon", "v": "@CoComelon"},
+ {"n": "合集", "v": "Anime ENG SUB 合集"},
+ {"n": "国漫社", "v": "@Animation 次元 苍穹动漫 PP看动漫 公馆"},
+ {"n": "国漫工厂", "v": "@3DGuoman SUB"},
+ {"n": "阅文动漫", "v": "@yuewenanimation SUB"},
+ {"n": "哔哩", "v": "@madebybilibili 哔哩动漫"},
+ {"n": "腾讯", "v": "@TencentVideoAnimation SUB"},
+ {"n": "优酷", "v": "@youkuanimation 优酷动漫"},
+ {"n": "爱奇艺", "v": "@iQIYIAnime 爱奇艺动漫"}
+ ]
+ }
+ ],
+ "YouTube 新聞 Live": [
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {"n": "默认", "v": "中天新闻24小時 大事發生看鳳凰 鳳凰 鳳凰衛視 @phoenixtv 三立LIVE新闻 台視新聞 東森新聞 TVBSNEWS"},
+ {"n": "鳳凰衛視", "v": "大事發生看鳳凰 鳳凰 鳳凰衛視 @phoenixtv"},
+ {"n": "中天新闻", "v": "直播 中天新闻"},
+ {"n": "TVBSEWS", "v": "直播 TVBSNEWS"},
+ {"n": "東森新聞 CH51", "v": "直播 東森新聞 CH51"},
+ {"n": "三立LIVE新闻", "v": "直播 三立LIVE新闻 @setnews "},
+ {"n": "台視新聞台HD", "v": "直播 台視新聞 TTV NEWS"},
+ {"n": "中視新聞 HD", "v": "直播 Taiwan CTV news HD Live"},
+ {"n": "港台", "v": "直播 港台"},
+ {"n": "赛事", "v": "直播 赛事"},
+ {"n": "CCTV", "v": "直播 CCTV"},
+ {"n": "CNA", "v": "@channelnewsasia"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {"n": "Live", "v": "live"},
+ {"n": "CNN", "v": "live CNN"},
+ {"n": "BBC", "v": "live BBC"},
+ {"n": "CBS", "v": "@CBSNews"},
+ {"n": "ABC", "v": "live ABC NEWS"},
+ {"n": "NBC", "v": "@NBCNews"},
+ {"n": "LiveNOW from FOX", "v": "@livenowfox"},
+ {"n": "Sky News", "v": "@SkyNews"},
+ {"n": "euronews", "v": "@euronews"},
+ {"n": "GBNews", "v": "@GBNewsOnline"},
+ {"n": "Al Jazeera English", "v": "@aljazeeraenglish"},
+ {"n": "ABCNews (Australia)", "v": "@abcnewsaustralia"},
+ {"n": "FRANCE 24 English", "v": "live FRANCE 24 English"},
+ {"n": "Reuters", "v": "live Reuters"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {"n": "默认", "v": "News"},
+ {"n": "News", "v": "news"},
+ {"n": "时政", "v": "时政 新闻"},
+ {"n": "体育", "v": "体育 新闻"},
+ {"n": "大陆", "v": "大陆 新闻"},
+ {"n": "HKTVB", "v": "@tvbnewsofficial"},
+ {"n": "少康戰情室", "v": " @tvbssituationroom"},
+ {"n": "政经龙凤配", "v": " @觀點"},
+ {"n": "FOCUS全球新闻", "v": " @TVBSNEWS FOCUS全球新闻"},
+ {"n": "新闻大白话", "v": " @TVBSNEWS 新闻大白话"},
+ {"n": "东森新闻", "v": "关键时刻新闻"},
+ {"n": "港台", "v": "港台 新闻"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {"n": "科技與發展", "v": "閱兵 奧運會 航母 航空母艦 潛水艇 核武器 坦克 武器 卫星 火箭 輪船 飛機 飛碟"},
+ {"n": "法治与社会", "v": "法治 法制 社会 卖淫 淫秽 污蔑 赌博 毒品 裸聊 诈骗 拐卖 强奸 勒索"},
+ {"n": "News", "v": "News"},
+ {"n": "CNN", "v": "CNN news"},
+ {"n": "BBC", "v": "BBC news"}
+ ]
+ }
+ ],
+ "劇集": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {"n": "時間全選", "v": ""},
+ {"n": "2024", "v": "2024"},
+ {"n": "2023", "v": "2023"},
+ {"n": "2022", "v": "2022"},
+ {"n": "2021", "v": "2021"},
+ {"n": "2020", "v": "2020"},
+ {"n": "2019", "v": "2019"},
+ {"n": "2018", "v": "2018"},
+ {"n": "2017", "v": "2017"},
+ {"n": "2016", "v": "2016"},
+ {"n": "2015", "v": "2015"},
+ {"n": "2014", "v": "2014"},
+ {"n": "2013", "v": "2013"},
+ {"n": "2012", "v": "2012"},
+ {"n": "2011", "v": "2011"},
+ {"n": "2010", "v": "2010"},
+ {"n": "2009", "v": "2009"},
+ {"n": "2008", "v": "2008"},
+ {"n": "2007", "v": "2007"},
+ {"n": "2006", "v": "2006"},
+ {"n": "2005", "v": "2005"},
+ {"n": "2004", "v": "2004"},
+ {"n": "2003", "v": "2003"},
+ {"n": "2002", "v": "2002"},
+ {"n": "2001", "v": "2001"},
+ {"n": "2000", "v": "2000"},
+ {"n": "1999", "v": "1999"},
+ {"n": "1998", "v": "1998"},
+ {"n": "1997", "v": "1997"},
+ {"n": "1996", "v": "1996"},
+ {"n": "1995", "v": "1995"},
+ {"n": "1994", "v": "1994"},
+ {"n": "1993", "v": "1993"},
+ {"n": "1992", "v": "1992"},
+ {"n": "1991", "v": "1991"},
+ {"n": "1990", "v": "1990"},
+ {"n": "1989", "v": "1989"},
+ {"n": "1988", "v": "1988"},
+ {"n": "1987", "v": "1987"},
+ {"n": "1986", "v": "1986"},
+ {"n": "1985", "v": "1985"},
+ {"n": "1984", "v": "1984"},
+ {"n": "1983", "v": "1983"},
+ {"n": "1982", "v": "1982"},
+ {"n": "1981", "v": "1981"},
+ {"n": "1980", "v": "1980"},
+ {"n": "1979", "v": "1979"},
+ {"n": "1978", "v": "1978"},
+ {"n": "1977", "v": "1977"},
+ {"n": "1976", "v": "1976"},
+ {"n": "1975", "v": "1975"},
+ {"n": "1974", "v": "1974"},
+ {"n": "1973", "v": "1973"},
+ {"n": "1972", "v": "1972"},
+ {"n": "1971", "v": "1971"},
+ {"n": "1970", "v": "1970"},
+ {"n": "1969", "v": "1969"},
+ {"n": "1968", "v": "1968"},
+ {"n": "1967", "v": "1967"},
+ {"n": "1966", "v": "1966"},
+ {"n": "1965", "v": "1965"},
+ {"n": "1964", "v": "1964"},
+ {"n": "1963", "v": "1963"},
+ {"n": "1962", "v": "1962"},
+ {"n": "1961", "v": "1961"},
+ {"n": "1960", "v": "1960"},
+ {"n": "1959", "v": "1959"},
+ {"n": "1958", "v": "1958"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {"n": "默認", "v": ""},
+ {"n": "華語熱播電視劇官方頻道", "v": "華語熱播電視劇官方頻道"},
+ {"n": "TVB国语", "v": "TVB Drama 国语剧场"},
+ {"n": "粵劇", "v": "粵劇 劇集"},
+ {"n": "TVB", "v": "@TVB"},
+ {"n": "国剧放映社", "v": "国剧放映社"},
+ {"n": "大陆", "v": "大陆 剧集"},
+ {"n": "腾讯", "v": "腾讯 剧集"},
+ {"n": "爱奇艺", "v": "爱奇艺 剧集"},
+ {"n": "优酷", "v": "优酷 剧集"},
+ {"n": "芒果", "v": "芒果TV 剧集"},
+ {"n": "搜狐", "v": "搜狐 剧集"},
+ {"n": "华数", "v": "华数 剧集"},
+ {"n": "港台", "v": "港台 剧集"},
+ {"n": "美国", "v": "美国 Full Episode 完整剧集"},
+ {"n": "Netflix", "v": "Netflix Full Episode 完整剧集"},
+ {"n": "Disney", "v": "disney Full Episode 完整剧集"},
+ {"n": "Apple", "v": "apple Full Episode 完整剧集"},
+ {"n": "Amazon", "v": "amazon Full Episode 完整剧集"},
+ {"n": "HBO", "v": "hbo Full Episode 完整剧集"},
+ {"n": "韩国", "v": "韩国 剧集"},
+ {"n": "日本", "v": "日本 剧集"},
+ {"n": "英国", "v": "英国 Full Episode 完整剧集"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {"n": "Drama", "v": "Full Episode drama"},
+ {"n": "US", "v": "drama Full Episode US"},
+ {"n": "Netflix", "v": "netflix Full Episode drama"},
+ {"n": "Disney", "v": "disney Full Episode drama"},
+ {"n": "Apple", "v": "apple Full Episode drama"},
+ {"n": "Amazon", "v": "amazon Full Episode drama"},
+ {"n": "HBO", "v": "hbo Full Episode drama"},
+ {"n": "Korea", "v": "korea Full Episode drama"},
+ {"n": "Japan", "v": "japan Full Episode drama"},
+ {"n": "UK", "v": "uk Full Episode drama"}
+ ]
+ }
+ ],
+ "電影": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {"n": "時間全選", "v": ""},
+ {"n": "2026", "v": "2026"},
+ {"n": "2025", "v": "2025"},
+ {"n": "2024", "v": "2024"},
+ {"n": "2023", "v": "2023"},
+ {"n": "2022", "v": "2022"},
+ {"n": "2021", "v": "2021"},
+ {"n": "2020", "v": "2020"},
+ {"n": "2019", "v": "2019"},
+ {"n": "2018", "v": "2018"},
+ {"n": "2017", "v": "2017"},
+ {"n": "2016", "v": "2016"},
+ {"n": "2015", "v": "2015"},
+ {"n": "2014", "v": "2014"},
+ {"n": "2013", "v": "2013"},
+ {"n": "2012", "v": "2012"},
+ {"n": "2011", "v": "2011"},
+ {"n": "2010", "v": "2010"},
+ {"n": "2009", "v": "2009"},
+ {"n": "2008", "v": "2008"},
+ {"n": "2007", "v": "2007"},
+ {"n": "2006", "v": "2006"},
+ {"n": "2005", "v": "2005"},
+ {"n": "2004", "v": "2004"},
+ {"n": "2003", "v": "2003"},
+ {"n": "2002", "v": "2002"},
+ {"n": "2001", "v": "2001"},
+ {"n": "2000", "v": "2000"},
+ {"n": "1999", "v": "1999"},
+ {"n": "1998", "v": "1998"},
+ {"n": "1997", "v": "1997"},
+ {"n": "1996", "v": "1996"},
+ {"n": "1995", "v": "1995"},
+ {"n": "1994", "v": "1994"},
+ {"n": "1993", "v": "1993"},
+ {"n": "1992", "v": "1992"},
+ {"n": "1991", "v": "1991"},
+ {"n": "1990", "v": "1990"},
+ {"n": "1989", "v": "1989"},
+ {"n": "1988", "v": "1988"},
+ {"n": "1987", "v": "1987"},
+ {"n": "1986", "v": "1986"},
+ {"n": "1985", "v": "1985"},
+ {"n": "1984", "v": "1984"},
+ {"n": "1983", "v": "1983"},
+ {"n": "1982", "v": "1982"},
+ {"n": "1981", "v": "1981"},
+ {"n": "1980", "v": "1980"},
+ {"n": "1979", "v": "1979"},
+ {"n": "1978", "v": "1978"},
+ {"n": "1977", "v": "1977"},
+ {"n": "1976", "v": "1976"},
+ {"n": "1975", "v": "1975"},
+ {"n": "1974", "v": "1974"},
+ {"n": "1973", "v": "1973"},
+ {"n": "1972", "v": "1972"},
+ {"n": "1971", "v": "1971"},
+ {"n": "1970", "v": "1970"},
+ {"n": "1969", "v": "1969"},
+ {"n": "1968", "v": "1968"},
+ {"n": "1967", "v": "1967"},
+ {"n": "1966", "v": "1966"},
+ {"n": "1965", "v": "1965"},
+ {"n": "1964", "v": "1964"},
+ {"n": "1963", "v": "1963"},
+ {"n": "1962", "v": "1962"},
+ {"n": "1961", "v": "1961"},
+ {"n": "1960", "v": "1960"},
+ {"n": "1959", "v": "1959"},
+ {"n": "1958", "v": "1958"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {"n": "默認", "v": ""},
+ {"n": "大陆", "v": "大陆 电影"},
+ {"n": "腾讯", "v": "腾讯 电影"},
+ {"n": "爱奇艺", "v": "爱奇艺 电影"},
+ {"n": "优酷", "v": "优酷 电影"},
+ {"n": "芒果", "v": "芒果TV 电影"},
+ {"n": "搜狐", "v": "搜狐 电影"},
+ {"n": "港台", "v": "港台 电影"},
+ {"n": "美国", "v": "美国 电影"},
+ {"n": "Netflix", "v": "netflix Full movie 电影"},
+ {"n": "Disney", "v": "disney Full movie 电影"},
+ {"n": "Apple", "v": "apple Full movie 电影"},
+ {"n": "Amazon", "v": "amazon Full movie 电影"},
+ {"n": "HBO", "v": "hbo Full movie 电影"},
+ {"n": "韩国", "v": "韩国 Full movie 电影"},
+ {"n": "日本", "v": "日本 Full movie 电影"},
+ {"n": "英国", "v": "英国 Full movie 电影"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {"n": "movie", "v": "youtube movies Full movie"},
+ {"n": "US", "v": "us Full movie movie"},
+ {"n": "Netflix movie", "v": "netflix Full movie movie"},
+ {"n": "Disney", "v": "disney Full movie movie"},
+ {"n": "Apple", "v": "apple Full movie movie"},
+ {"n": "Amazon", "v": "amazon Full movie movie"},
+ {"n": "HBO", "v": "hbo Full movie movie"},
+ {"n": "Koera", "v": "korea Full movie movie"},
+ {"n": "Japan", "v": "japan Full movie movie"},
+ {"n": "UK", "v": "uk Full movie movie"}
+ ]
+ }
+ ],
+ "綜藝": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {"n": "時間全選", "v": ""},
+ {"n": "2024", "v": "2024"},
+ {"n": "2023", "v": "2023"},
+ {"n": "2022", "v": "2022"},
+ {"n": "2021", "v": "2021"},
+ {"n": "2020", "v": "2020"},
+ {"n": "2019", "v": "2019"},
+ {"n": "2018", "v": "2018"},
+ {"n": "2017", "v": "2017"},
+ {"n": "2016", "v": "2016"},
+ {"n": "2015", "v": "2015"},
+ {"n": "2014", "v": "2014"},
+ {"n": "2013", "v": "2013"},
+ {"n": "2012", "v": "2012"},
+ {"n": "2011", "v": "2011"},
+ {"n": "2010", "v": "2010"},
+ {"n": "2009", "v": "2009"},
+ {"n": "2008", "v": "2008"},
+ {"n": "2007", "v": "2007"},
+ {"n": "2006", "v": "2006"},
+ {"n": "2005", "v": "2005"},
+ {"n": "2004", "v": "2004"},
+ {"n": "2003", "v": "2003"},
+ {"n": "2002", "v": "2002"},
+ {"n": "2001", "v": "2001"},
+ {"n": "2000", "v": "2000"},
+ {"n": "1999", "v": "1999"},
+ {"n": "1998", "v": "1998"},
+ {"n": "1997", "v": "1997"},
+ {"n": "1996", "v": "1996"},
+ {"n": "1995", "v": "1995"},
+ {"n": "1994", "v": "1994"},
+ {"n": "1993", "v": "1993"},
+ {"n": "1992", "v": "1992"},
+ {"n": "1991", "v": "1991"},
+ {"n": "1990", "v": "1990"},
+ {"n": "1989", "v": "1989"},
+ {"n": "1988", "v": "1988"},
+ {"n": "1987", "v": "1987"},
+ {"n": "1986", "v": "1986"},
+ {"n": "1985", "v": "1985"},
+ {"n": "1984", "v": "1984"},
+ {"n": "1983", "v": "1983"},
+ {"n": "1982", "v": "1982"},
+ {"n": "1981", "v": "1981"},
+ {"n": "1980", "v": "1980"},
+ {"n": "1979", "v": "1979"},
+ {"n": "1978", "v": "1978"},
+ {"n": "1977", "v": "1977"},
+ {"n": "1976", "v": "1976"},
+ {"n": "1975", "v": "1975"},
+ {"n": "1974", "v": "1974"},
+ {"n": "1973", "v": "1973"},
+ {"n": "1972", "v": "1972"},
+ {"n": "1971", "v": "1971"},
+ {"n": "1970", "v": "1970"},
+ {"n": "1969", "v": "1969"},
+ {"n": "1968", "v": "1968"},
+ {"n": "1967", "v": "1967"},
+ {"n": "1966", "v": "1966"},
+ {"n": "1965", "v": "1965"},
+ {"n": "1964", "v": "1964"},
+ {"n": "1963", "v": "1963"},
+ {"n": "1962", "v": "1962"},
+ {"n": "1961", "v": "1961"},
+ {"n": "1960", "v": "1960"},
+ {"n": "1959", "v": "1959"},
+ {"n": "1958", "v": "1958"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {"n": "默认", "v": "Variety show"},
+ {"n": "大陆", "v": "大陆 综艺"},
+ {"n": "芒果", "v": "芒果 综艺"},
+ {"n": "腾讯", "v": "腾讯 综艺"},
+ {"n": "爱奇艺", "v": "爱奇艺 综艺"},
+ {"n": "优酷", "v": "优酷 综艺"},
+ {"n": "港台", "v": "港台 综艺"},
+ {"n": "美国", "v": "美国 综艺"},
+ {"n": "Netflix", "v": "Netflix 综艺"},
+ {"n": "韩国", "v": "CRAVITY on Variety Shows 韩国 综艺"},
+ {"n": "日本", "v": "日本 综艺"},
+ {"n": "英国", "v": "英国 综艺"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {"n": "Variety", "v": "variety"},
+ {"n": "Netflix variety", "v": "netflix variety"},
+ {"n": "Korea", "v": "korea variety"},
+ {"n": "Japan", "v": "japan variety"},
+ {"n": "UK", "v": "uk variety"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "小品",
+ "value": [
+ {"n": "春晚小品", "v": "春晚小品"},
+ {"n": "开心麻花", "v": "开心麻花"},
+ {"n": "屌丝男士", "v": "屌丝男士"},
+ {"n": "喜剧综艺", "v": "喜剧综艺"},
+ {"n": "单口", "v": "单口 相声"},
+ {"n": "群口", "v": "群口 相声"},
+ {"n": "德云社", "v": "德云社"},
+ {"n": "青曲社", "v": "青曲社"},
+ {"n": "郭德纲", "v": "郭德纲"},
+ {"n": "岳云鹏", "v": "岳云鹏"},
+ {"n": "曹云金", "v": "曹云金"},
+ {"n": "评书", "v": "评书"},
+ {"n": "小曲", "v": "小曲"},
+ {"n": "赵本山", "v": "赵本山"},
+ {"n": "陈佩斯", "v": "陈佩斯"},
+ {"n": "冯巩", "v": "冯巩"},
+ {"n": "宋小宝", "v": "宋小宝"},
+ {"n": "赵丽蓉", "v": "赵丽蓉"},
+ {"n": "潘长江", "v": "潘长江"},
+ {"n": "郭冬临", "v": "郭冬临"},
+ {"n": "严顺开", "v": "严顺开"},
+ {"n": "文松", "v": "文松"}
+ ]
+ }
+ ],
+ "紀錄片": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {"n": "時間全選", "v": ""},
+ {"n": "2024", "v": "2024"},
+ {"n": "2023", "v": "2023"},
+ {"n": "2022", "v": "2022"},
+ {"n": "2021", "v": "2021"},
+ {"n": "2020", "v": "2020"},
+ {"n": "2019", "v": "2019"},
+ {"n": "2018", "v": "2018"},
+ {"n": "2017", "v": "2017"},
+ {"n": "2016", "v": "2016"},
+ {"n": "2015", "v": "2015"},
+ {"n": "2014", "v": "2014"},
+ {"n": "2013", "v": "2013"},
+ {"n": "2012", "v": "2012"},
+ {"n": "2011", "v": "2011"},
+ {"n": "2010", "v": "2010"},
+ {"n": "2009", "v": "2009"},
+ {"n": "2008", "v": "2008"},
+ {"n": "2007", "v": "2007"},
+ {"n": "2006", "v": "2006"},
+ {"n": "2005", "v": "2005"},
+ {"n": "2004", "v": "2004"},
+ {"n": "2003", "v": "2003"},
+ {"n": "2002", "v": "2002"},
+ {"n": "2001", "v": "2001"},
+ {"n": "2000", "v": "2000"},
+ {"n": "1999", "v": "1999"},
+ {"n": "1998", "v": "1998"},
+ {"n": "1997", "v": "1997"},
+ {"n": "1996", "v": "1996"},
+ {"n": "1995", "v": "1995"},
+ {"n": "1994", "v": "1994"},
+ {"n": "1993", "v": "1993"},
+ {"n": "1992", "v": "1992"},
+ {"n": "1991", "v": "1991"},
+ {"n": "1990", "v": "1990"},
+ {"n": "1989", "v": "1989"},
+ {"n": "1988", "v": "1988"},
+ {"n": "1987", "v": "1987"},
+ {"n": "1986", "v": "1986"},
+ {"n": "1985", "v": "1985"},
+ {"n": "1984", "v": "1984"},
+ {"n": "1983", "v": "1983"},
+ {"n": "1982", "v": "1982"},
+ {"n": "1981", "v": "1981"},
+ {"n": "1980", "v": "1980"},
+ {"n": "1979", "v": "1979"},
+ {"n": "1978", "v": "1978"},
+ {"n": "1977", "v": "1977"},
+ {"n": "1976", "v": "1976"},
+ {"n": "1975", "v": "1975"},
+ {"n": "1974", "v": "1974"},
+ {"n": "1973", "v": "1973"},
+ {"n": "1972", "v": "1972"},
+ {"n": "1971", "v": "1971"},
+ {"n": "1970", "v": "1970"},
+ {"n": "1969", "v": "1969"},
+ {"n": "1968", "v": "1968"},
+ {"n": "1967", "v": "1967"},
+ {"n": "1966", "v": "1966"},
+ {"n": "1965", "v": "1965"},
+ {"n": "1964", "v": "1964"},
+ {"n": "1963", "v": "1963"},
+ {"n": "1962", "v": "1962"},
+ {"n": "1961", "v": "1961"},
+ {"n": "1960", "v": "1960"},
+ {"n": "1959", "v": "1959"},
+ {"n": "1958", "v": "1958"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {"n": "地區🎶排序", "v": "歷史記錄片 地球記錄片 宇宙記錄片 海洋記錄片 戰爭記錄片 大自然生存記錄片"},
+ {"n": "默认", "v": "documentary"},
+ {"n": "BBC纪录片", "v": "BBC 纪录片"},
+ {"n": "国家地理", "v": "国家地理 纪录片"},
+ {"n": "Netflix纪录片", "v": "netflix 纪录片"},
+ {"n": "BBC", "v": "BBC documentary"},
+ {"n": "National Geographic", "v": "National Geographic documentary"},
+ {"n": "Netflix", "v": "netflix documentary"},
+ {"n": "历史", "v": "历史 纪录片"},
+ {"n": "野性", "v": "野性 纪录片"},
+ {"n": "地球", "v": "地球 纪录片"},
+ {"n": "宇宙", "v": "宇宙 纪录片"},
+ {"n": "海洋", "v": "海洋 纪录片"},
+ {"n": "人文", "v": "人文 纪录片"},
+ {"n": "战争", "v": "战争 纪录片"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {"n": "History", "v": "Full history documentary"},
+ {"n": "WILD", "v": "Full wild documentary"},
+ {"n": "Earch", "v": "Full earth documentary"},
+ {"n": "Universe", "v": "Full universe documentary"},
+ {"n": "Oceans", "v": "Full oceans documentary"},
+ {"n": "Humanism", "v": "Full humanism documentary"},
+ {"n": "Wars", "v": "Full war documentary"}
+ ]
+ }
+ ],
+ "音樂": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {"n": "時間全選", "v": ""},
+ {"n": "2024", "v": "2024"},
+ {"n": "2023", "v": "2023"},
+ {"n": "2022", "v": "2022"},
+ {"n": "2021", "v": "2021"},
+ {"n": "2020", "v": "2020"},
+ {"n": "2019", "v": "2019"},
+ {"n": "2018", "v": "2018"},
+ {"n": "2017", "v": "2017"},
+ {"n": "2016", "v": "2016"},
+ {"n": "2015", "v": "2015"},
+ {"n": "2014", "v": "2014"},
+ {"n": "2013", "v": "2013"},
+ {"n": "2012", "v": "2012"},
+ {"n": "2011", "v": "2011"},
+ {"n": "2010", "v": "2010"},
+ {"n": "2009", "v": "2009"},
+ {"n": "2008", "v": "2008"},
+ {"n": "2007", "v": "2007"},
+ {"n": "2006", "v": "2006"},
+ {"n": "2005", "v": "2005"},
+ {"n": "2004", "v": "2004"},
+ {"n": "2003", "v": "2003"},
+ {"n": "2002", "v": "2002"},
+ {"n": "2001", "v": "2001"},
+ {"n": "2000", "v": "2000"},
+ {"n": "1999", "v": "1999"},
+ {"n": "1998", "v": "1998"},
+ {"n": "1997", "v": "1997"},
+ {"n": "1996", "v": "1996"},
+ {"n": "1995", "v": "1995"},
+ {"n": "1994", "v": "1994"},
+ {"n": "1993", "v": "1993"},
+ {"n": "1992", "v": "1992"},
+ {"n": "1991", "v": "1991"},
+ {"n": "1990", "v": "1990"},
+ {"n": "1989", "v": "1989"},
+ {"n": "1988", "v": "1988"},
+ {"n": "1987", "v": "1987"},
+ {"n": "1986", "v": "1986"},
+ {"n": "1985", "v": "1985"},
+ {"n": "1984", "v": "1984"},
+ {"n": "1983", "v": "1983"},
+ {"n": "1982", "v": "1982"},
+ {"n": "1981", "v": "1981"},
+ {"n": "1980", "v": "1980"},
+ {"n": "1979", "v": "1979"},
+ {"n": "1978", "v": "1978"},
+ {"n": "1977", "v": "1977"},
+ {"n": "1976", "v": "1976"},
+ {"n": "1975", "v": "1975"},
+ {"n": "1974", "v": "1974"},
+ {"n": "1973", "v": "1973"},
+ {"n": "1972", "v": "1972"},
+ {"n": "1971", "v": "1971"},
+ {"n": "1970", "v": "1970"},
+ {"n": "1969", "v": "1969"},
+ {"n": "1968", "v": "1968"},
+ {"n": "1967", "v": "1967"},
+ {"n": "1966", "v": "1966"},
+ {"n": "1965", "v": "1965"},
+ {"n": "1964", "v": "1964"},
+ {"n": "1963", "v": "1963"},
+ {"n": "1962", "v": "1962"},
+ {"n": "1961", "v": "1961"},
+ {"n": "1960", "v": "1960"},
+ {"n": "1959", "v": "1959"},
+ {"n": "1958", "v": "1958"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "地區",
+ "value": [
+ {"n": "華語音樂", "v": "華語音樂"},
+ {"n": "華語MV", "v": "華語MV"},
+ {"n": "环球视听", "v": "环球视听1980 @RippleOfficialEvent"},
+ {"n": "YouTube 點閱率最高", "v": "YouTube 點閱率最高觀看次數最多華語歌曲"},
+ {"n": "海外抖音", "v": "TikTok 翻唱 抖音 音樂"},
+ {"n": "粵語", "v": "粵語 音樂"},
+ {"n": "國語", "v": "國語 音樂"},
+ {"n": "大陆", "v": "大陆 音乐"},
+ {"n": "香港", "v": "香港 音乐"},
+ {"n": "台湾", "v": "台湾 音乐"},
+ {"n": "新加坡", "v": "新加坡 音乐"},
+ {"n": "馬來西亞", "v": "馬來西亞 音乐"},
+ {"n": "泰國", "v": "泰國 音乐"},
+ {"n": "印度", "v": "印度 音乐"},
+ {"n": "韩国", "v": "韩国 音乐"},
+ {"n": "日本", "v": "日本 音乐"},
+ {"n": "欧美", "v": "欧美 音乐"},
+ {"n": "时光音乐会MV", "v": "时光音乐会MV"},
+ {"n": "中国好声音MV", "v": "中国好声音MV"},
+ {"n": "滚石MV", "v": "滚石MV"},
+ {"n": "古风MV", "v": "古风MV"},
+ {"n": "韩国女团MV", "v": "韩国女团MV"},
+ {"n": "欧美", "v": "欧美 音乐"},
+ {"n": "BillBoard", "v": "BillBoard"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "愛好",
+ "value": [
+ {"n": "合辑", "v": "合辑"},
+ {"n": "超級女聲", "v": "超級女聲"},
+ {"n": "whitneyhouston", "v": "@whitneyhoustonmusic"},
+ {"n": "玛丽.凯丽", "v": "@MariahCarey"},
+ {"n": "LadyGaga", "v": "@LadyGaga"},
+ {"n": "G.E.M邓紫棋", "v": "@gem0816"},
+ {"n": "麦当娜", "v": "@madonna"},
+ {"n": "Taylor Swift", "v": "@TaylorSwift"},
+ {"n": "舞曲", "v": "蹦迪現場 慢搖 夜店 低音 女聲 "},
+ {"n": "80-90", "v": "80 90 音樂"},
+ {"n": "人聲", "v": "人聲 音樂"},
+ {"n": "A8製造", "v": "A8製造 工體音樂"},
+ {"n": "中国MTV", "v": "@ChineseMusicTV"},
+ {"n": "滚石", "v": "@RockRecordsTaipei"},
+ {"n": "失傳已久", "v": "嗨音雷虎 失傳 嗨音會所 音樂"},
+ {"n": "重低音DJ", "v": "3D 8D 慢搖 重低音 音樂"},
+ {"n": "車載舞曲", "v": "車載慢搖DJ歌曲串燒 深水炸彈DJ歌曲串燒 越南鼓DJ歌曲串燒 音樂"},
+ {"n": "超級女聲", "v": "超級女聲"},
+ {"n": "tseries", "v": "@tseries"},
+ {"n": "戲曲", "v": "秦腔 京剧 越剧 黄梅戏 评剧 豫剧 昆曲 高腔 梆子腔 河北梆子 晋剧 蒲剧 雁剧 上党梆子 武安平调 二人台 吉剧 龙江剧 越调 河南曲剧 山东梆子 淮剧 滑稽戏 婺剧 绍剧 徽剧 闽剧 莆仙戏 梨园戏 高甲戏 赣剧 采茶戏 汉剧 湘剧 祁剧 湖南花鼓戏 粤剧 潮剧 桂剧 彩调 壮剧 川剧 黔剧 滇剧 傣剧 藏剧 皮影戏"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "歌手",
+ "value": [
+ {"n": "邓丽君", "v": "邓丽君 音乐🎶"},
+ {"n": "林忆莲", "v": "林忆莲 音樂🎶"},
+ {"n": "陈慧娴", "v": "陈慧娴音樂🎶"},
+ {"n": "韩宝仪", "v": "韩宝仪 音樂🎶"},
+ {"n": "张学友", "v": "张学友 音樂🎶"},
+ {"n": "李宗盛", "v": "李宗盛 音樂🎶"},
+ {"n": "罗大佑", "v": "罗大佑 音樂🎶"},
+ {"n": "周杰伦", "v": "周杰伦 音樂🎶"},
+ {"n": "张惠妹", "v": "张惠妹 音樂🎶"},
+ {"n": "斯琴高麗", "v": "斯琴高麗 音樂🎶"},
+ {"n": "林俊杰", "v": "@jjlin • 音乐🎶"},
+ {"n": "周深", "v": "周深 音樂🎶"},
+ {"n": "張瑋伽", "v": "張瑋伽 演唱會 巡演 音樂"},
+ {"n": "孫露", "v": "孫露 演唱會 巡演 音樂"},
+ {"n": "鳳凰傳奇", "v": "鳳凰傳奇 演 巡演 音樂"},
+ {"n": "刀郎", "v": "刀郎 演唱會 巡演 音樂"},
+ {"n": "S.H.E", "v": "S.H.E 演唱會 巡演 音樂"},
+ {"n": "慕容曉曉", "v": "慕容曉曉 演唱會 巡演 音樂"},
+ {"n": "東方紅豔", "v": "東方紅豔 演唱會 巡演 音樂"},
+ {"n": "孟庭葦", "v": "孟庭葦 演唱會 巡演 音樂"},
+ {"n": "斯琴高麗", "v": "斯琴高麗 演唱會 巡演 音樂"},
+ {"n": "程響", "v": "程響 演唱會 巡演 音樂"},
+ {"n": "蔣雪兒", "v": "蔣雪兒 演唱會 巡演 音樂"}
+ ]
+ }
+ ],
+ "體育": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {"n": "時間全選", "v": ""},
+ {"n": "2024", "v": "2024"},
+ {"n": "2023", "v": "2023"},
+ {"n": "2022", "v": "2022"},
+ {"n": "2021", "v": "2021"},
+ {"n": "2020", "v": "2020"},
+ {"n": "2019", "v": "2019"},
+ {"n": "2018", "v": "2018"},
+ {"n": "2017", "v": "2017"},
+ {"n": "2016", "v": "2016"},
+ {"n": "2015", "v": "2015"},
+ {"n": "2014", "v": "2014"},
+ {"n": "2013", "v": "2013"},
+ {"n": "2012", "v": "2012"},
+ {"n": "2011", "v": "2011"},
+ {"n": "2010", "v": "2010"},
+ {"n": "2009", "v": "2009"},
+ {"n": "2008", "v": "2008"},
+ {"n": "2007", "v": "2007"},
+ {"n": "2006", "v": "2006"},
+ {"n": "2005", "v": "2005"},
+ {"n": "2004", "v": "2004"},
+ {"n": "2003", "v": "2003"},
+ {"n": "2002", "v": "2002"},
+ {"n": "2001", "v": "2001"},
+ {"n": "2000", "v": "2000"},
+ {"n": "1999", "v": "1999"},
+ {"n": "1998", "v": "1998"},
+ {"n": "1997", "v": "1997"},
+ {"n": "1996", "v": "1996"},
+ {"n": "1995", "v": "1995"},
+ {"n": "1994", "v": "1994"},
+ {"n": "1993", "v": "1993"},
+ {"n": "1992", "v": "1992"},
+ {"n": "1991", "v": "1991"},
+ {"n": "1990", "v": "1990"},
+ {"n": "1989", "v": "1989"},
+ {"n": "1988", "v": "1988"},
+ {"n": "1987", "v": "1987"},
+ {"n": "1986", "v": "1986"},
+ {"n": "1985", "v": "1985"},
+ {"n": "1984", "v": "1984"},
+ {"n": "1983", "v": "1983"},
+ {"n": "1982", "v": "1982"},
+ {"n": "1981", "v": "1981"},
+ {"n": "1980", "v": "1980"},
+ {"n": "1979", "v": "1979"},
+ {"n": "1978", "v": "1978"},
+ {"n": "1977", "v": "1977"},
+ {"n": "1976", "v": "1976"},
+ {"n": "1975", "v": "1975"},
+ {"n": "1974", "v": "1974"},
+ {"n": "1973", "v": "1973"},
+ {"n": "1972", "v": "1972"},
+ {"n": "1971", "v": "1971"},
+ {"n": "1970", "v": "1970"},
+ {"n": "1969", "v": "1969"},
+ {"n": "1968", "v": "1968"},
+ {"n": "1967", "v": "1967"},
+ {"n": "1966", "v": "1966"},
+ {"n": "1965", "v": "1965"},
+ {"n": "1964", "v": "1964"},
+ {"n": "1963", "v": "1963"},
+ {"n": "1962", "v": "1962"},
+ {"n": "1961", "v": "1961"},
+ {"n": "1960", "v": "1960"},
+ {"n": "1959", "v": "1959"},
+ {"n": "1958", "v": "1958"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {"n": "默认", "v": ""},
+ {"n": "體育直播", "v": "体育直播"},
+ {"n": "體育赛事", "v": "体育赛事"},
+ {"n": "足球比賽", "v": "足球賽事"},
+ {"n": "篮球比賽", "v": "篮球賽事"},
+ {"n": "极限運動", "v": "极限運動"},
+ {"n": "室内運動", "v": "室内运动"},
+ {"n": "户外運動", "v": "户外运动"},
+ {"n": "瑜伽健身", "v": "@kundalyoghealthylifestyle4566"},
+ {"n": "健身運動", "v": "健身運動"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {"n": "Live", "v": "live sports"},
+ {"n": "Games", "v": "live games"},
+ {"n": "Soccer", "v": "live soccer"},
+ {"n": "NBA", "v": "NBA"},
+ {"n": "Extreme", "v": "extreme sports"},
+ {"n": "InDoor", "v": "indoor sports"},
+ {"n": "OutDoor", "v": "outdoor sports"},
+ {"n": "Workout", "v": "workout"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "體育",
+ "value": [
+ {"n": "女足港場", "v": "女足港場 @Hong KongWomensStadium"},
+ {"n": "全國校運動會", "v": "全國大專 校院運動會 全中運 女子組賽事 全國中等 學校運動會"},
+ {"n": "女中儀隊", "v": "北一女中樂儀旗隊永續發展協會 北一女中家長會樂儀旗家長後援會 北一女中儀隊校友隊 台灣 学校运动会 景美女中儀隊 北一女樂儀旗隊 full樂儀隊 "},
+ {"n": "校園熱舞", "v": "full 校園熱舞 開南熱無 開南大學課外活動組 女生熱舞社 南寶熱舞社 寶踐熱舞社 NTDC 熱舞社 STUST"},
+ {"n": "红星体育官方频道", "v": "红星体育官方频道【高清直播】"},
+ {"n": "中國體育比賽傳奇", "v": "中國體育比赛傳奇"},
+ {"n": "愛爾達體育家族", "v": "愛爾達體育家族 ELTA Sports"},
+ {"n": "公視體育", "v": "公視體育"},
+ {"n": "體育之光", "v": "體育之光"},
+ {"n": "偶然體育賽事", "v": "偶然體育賽事"}
+ ]
+ }
+ ],
+ "時尚潮流": [
+ {
+ "key": "tid",
+ "name": "時裝秀",
+ "value": [
+ {"n": "街舞", "v": "脫衣舞 丁字褲 街舞 太空步 機械舞 舞 裸體舞蹈 霹靂舞 魔性舞蹈 鬼步舞 木偶舞 女性藝術舞蹈"},
+ {"n": "時尚走秀", "v": "T台走秀 lingerie show"},
+ {"n": "時裝秀", "v": "hdr ASM lingerieTV 東京ファッションショー 下着ショー"},
+ {"n": "潮流秀", "v": "FASHION IN UHD"},
+ {"n": "時裝模特", "v": "FASHION Runway"},
+ {"n": "模特", "v": "比基尼 泳裝 頂級車模 空姐 寫真 Car model Stewardess Portrait"},
+ {"n": "裸体秀", "v": "hdr 人體藝術 裸体秀 Nude show"},
+ {"n": "無限亂鬥", "v": "hdr 廟會秀 無限HD 公廟 鋼管舞 脫衣舞 舞女 清純 寫真"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "小姐姐",
+ "value": [
+ {"n": "小姐姐超清", "v": "小姐姐超清"},
+ {"n": "国内小姐姐", "v": "快手模特 抖音模特 国内小姐姐"},
+ {"n": "韩国小姐姐", "v": "韩国小姐姐"},
+ {"n": "日本小姐姐", "v": "日本小姐姐"},
+ {"n": "俄罗斯小姐姐", "v": "俄罗斯小姐姐"},
+ {"n": "混血小姐姐", "v": "混血小姐姐"},
+ {"n": "越南小姐姐", "v": "越南小姐姐"},
+ {"n": "Al小姐姐", "v": "Al美女超清"},
+ {"n": "抖音热门小姐姐", "v": "抖音热门小姐姐"},
+ {"n": "快手热门美女", "v": "快手热门美女"},
+ {"n": "打碟小姐姐", "v": "打碟小姐姐"},
+ {"n": "冲浪小姐姐", "v": "冲浪小姐姐"},
+ {"n": "蹦迪小姐姐", "v": "蹦迪小姐姐"},
+ {"n": "艺校小姐姐", "v": "艺校小姐姐"},
+ {"n": "环球小姐", "v": "环球小姐"},
+ {"n": "泰国人妖", "v": "泰国人妖"},
+ {"n": "人间胸器", "v": "人间胸器"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {"n": "sexy Miss", "v": "sexy Miss"},
+ {"n": "Hot sexy Girl", "v": "Hot sexy Girl"},
+ {"n": "Korean Girl", "v": "Korean sexy Girl"},
+ {"n": "Japanese Girl", "v": "Japanese sexy Girl"},
+ {"n": "Russian Girl", "v": "Russian sexy Girl"},
+ {"n": "Vietnamese Girl", "v": "Vietnamese sexy Girl"},
+ {"n": "AI Girl", "v": "AI Girl"},
+ {"n": "TikTok Hot Siste", "v": "TikTok Hot sexy Girl"},
+ {"n": "Cute Girl", "v": "sexy Cute Girl"},
+ {"n": "Girl Dj", "v": "sexy Girl Dj"},
+ {"n": "Girl Surfer", "v": "sexy Girl Surfer"},
+ {"n": "Dance Girl", "v": "Dance sexy Girl"},
+ {"n": "Miss Universe", "v": "Miss Universe"},
+ {"n": "Thai Shemale", "v": "Thai Shemale"}
+ ]
+ }
+ ],
+ "解說": [
+ {
+ "key": "tid",
+ "name": "頻道主",
+ "value": [
+ {"n": "宇哥侃故事", "v": "@yuge"},
+ {"n": "零度解说", "v": "@lingdujieshuo"}
+ ]
+ }
+ ],
+ "16K HDR": [
+ {
+ "key": "tid",
+ "name": "風景",
+ "value": [
+ {"n": "運動", "v": "GoPro 女翼裝飛行 極限自行車運動"},
+ {"n": "風景", "v": "hdr 大自然"},
+ {"n": "Links TV頻道主", "v": "@linksphotograph Links TV hdr"},
+ {"n": "放鬆", "v": "hdr 放鬆"},
+ {"n": "動物世界", "v": "hdr Carnivorous Animals 動物世界"},
+ {"n": "深海世界", "v": "hdr Invertebrate Fish 深海世界"},
+ {"n": "飛禽走獸", "v": "hdr Birds of Prey Columbiform Birds Passerine Birds"},
+ {"n": "生物世界", "v": "hdr Amphibians Reptiles 生物世界"}
+ ]
+ }
+ ],
+ "Full YouTube": [
+ {
+ "key": "tid",
+ "name": "頻道主",
+ "value": [
+ {"n": "李子柒", "v": "李子柒 Liziqi @cnliziqi"},
+ {"n": "滇西小哥", "v": "滇西小哥 @dianxixiaoge"},
+ {"n": "老高與小茉", "v": "老高與小茉 @laogao"},
+ {"n": "李永樂老師", "v": "李永樂老師 @TchLiyongle"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "美食頻道主",
+ "value": [
+ {"n": "美食作家王刚", "v": "美食作家王刚 @chefwang"},
+ {"n": "小高姐的 Magic Ingredients", "v": "小高姐的 Magic Ingredients @MagicIngredients"},
+ {"n": "小穎美食", "v": "小穎美食 @XiaoYingFood"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "野外頻道主",
+ "value": [
+ {"n": "野外求生", "v": "primitivetechnology9550 @primitivetechnology9550"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "科普頻道主",
+ "value": [
+ {"n": "科普", "v": "Mr Beast@MrBeast"},
+ {"n": "航天大學", "v": "Airforceproud95 @Airforceproud95"},
+ {"n": "世界大戰", "v": "TheGreatWar @TheGreatWar"},
+ {"n": "MarkRober", "v": "Mark Rober @MarkRober"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "教材",
+ "value": [
+ {"n": "不良林", "v": "不良林"},
+ {"n": "涌哥侃侃", "v": "涌哥侃侃 @ygkkk"},
+ {"n": "悟空的日常", "v": "悟空的日常"}
+ ]
+ }
+ ],
+ "宇宙": [
+ {
+ "key": "tid",
+ "name": "科普知識",
+ "value": [
+ {"n": "宇宙", "v": "光年 黑洞 銀河系 空間站 太空技術"},
+ {"n": "粒子", "v": "空間粒子 宇宙磁場 四維空間 元素 量子 光波 光源 靈魂"},
+ {"n": "靠蒙", "v": "microorganism"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "歷史科普",
+ "value": [
+ {"n": "世界大戰", "v": "世界大戰 二戰 日侵 八國聯軍"},
+ {"n": "人物", "v": "古代名人 歷史名人 歷代祖先"},
+ {"n": "生物進化史", "v": "人類進化 微生物進化 動物進化 地球進化"},
+ {"n": "靠蒙", "v": "歷史 History"}
+ ]
+ }
+ ]
+}
+CATEGORY_QUERY = {}
+CATEGORY_ALIASES = {}
+try:
+ YOUTUBE_CLASSES
+except NameError:
+ YOUTUBE_CLASSES = []
+try:
+ CATEGORY_FILTERS
+except NameError:
+ CATEGORY_FILTERS = {}
+
+# ==================== 核心提取类(合并优化) ====================
+class YouTubeLite:
+ """普通视频提取,合并 0712 优化:快速 API、编码优先级、SDR/HDR 识别"""
+ def __init__(self, session, headers=None, config=None):
+ self.session = session
+ self.headers = headers or {}
+ self.config = config or {}
+ self.player_cache = {}
+ self.extract_cache = {}
+ self.sig_plan_cache = {}
+ self.extract_cache_ttl = int(self.config.get('extract_cache_ttl') or 300)
+
+ def extract(self, url_or_id):
+ video_id = self.extract_video_id(url_or_id)
+ cached = self.extract_cache.get(video_id)
+ now = time.time()
+ if cached and cached.get('expires', 0) > now:
+ debug_log('extract cache hit', {'video_id': video_id, 'ttl': int(cached.get('expires', 0) - now)})
+ return cached.get('data')
+ watch_url = f"https://www.youtube.com/watch?v={video_id}"
+ debug_log('extract start', {'input': url_or_id, 'video_id': video_id})
+ page_resp = self._get(watch_url)
+ page = page_resp.text
+ debug_log('watch page', {'status': page_resp.status_code, 'length': len(page)})
+ ytcfg = self._extract_ytcfg(page) or {}
+ player_response = self._extract_initial_player_response(page) or {}
+ player_url = self._extract_player_url(page)
+ api_key = ytcfg.get('INNERTUBE_API_KEY') or self._search(r'"INNERTUBE_API_KEY":"([^"]+)"', page)
+ visitor_data = self._extract_visitor_data(ytcfg, player_response)
+ sts = None
+ debug_log('page parsed', {'has_ytcfg': bool(ytcfg), 'has_initial_pr': bool(player_response), 'initial_status': (player_response.get('playabilityStatus') or {}).get('status'), 'initial_has_streaming': bool(player_response.get('streamingData')), 'has_api_key': bool(api_key), 'has_visitor': bool(visitor_data), 'sts': sts, 'player_url': player_url})
+ context = ytcfg.get('INNERTUBE_CONTEXT') or {
+ 'client': {'clientName': 'WEB', 'clientVersion': '2.20240310.01.00', 'hl': 'en', 'gl': 'US'}
+ }
+ responses = [player_response] if player_response else []
+ if api_key:
+ api_responses = self._call_player_api(video_id, api_key, context, watch_url, visitor_data, sts)
+ if not isinstance(api_responses, list):
+ api_responses = [api_responses] if api_responses else []
+ responses.extend([x for x in api_responses if x])
+ debug_log('player api result', {'responses': len(api_responses), 'has_streaming': [bool((x or {}).get('streamingData')) for x in api_responses]})
+ player_response = next((x for x in responses if (x.get('playabilityStatus') or {}).get('status') == 'OK'), player_response)
+ status = (player_response.get('playabilityStatus') or {}).get('status')
+ streaming = player_response.get('streamingData') or {}
+ if status and status not in ('OK', 'LIVE_STREAM_OFFLINE') and not streaming:
+ reason = (player_response.get('playabilityStatus') or {}).get('reason') or status
+ raise Exception(f'YouTube 不可播放: {reason}')
+ details = player_response.get('videoDetails') or {}
+ raw_formats = []
+ seen_raw = set()
+ source_counts = []
+ for response in responses:
+ response_streaming = (response or {}).get('streamingData') or {}
+ source_raw = (response_streaming.get('formats') or []) + (response_streaming.get('adaptiveFormats') or [])
+ source_counts.append({'formats': len(response_streaming.get('formats') or []), 'adaptive': len(response_streaming.get('adaptiveFormats') or [])})
+ for raw in source_raw:
+ key = (raw.get('itag'), raw.get('url') or raw.get('signatureCipher') or raw.get('cipher') or raw.get('mimeType'))
+ if key not in seen_raw:
+ seen_raw.add(key)
+ raw = raw.copy()
+ raw['_client_name'] = (response or {}).get('_client_name')
+ raw['_client_ua'] = (response or {}).get('_client_ua')
+ raw_formats.append(raw)
+ debug_log('raw formats', {'sources': source_counts, 'total': len(raw_formats), 'sample_keys': sorted(list(raw_formats[0].keys())) if raw_formats else []})
+ formats = []
+ cipher_count = 0
+ for raw in raw_formats:
+ if raw.get('signatureCipher') or raw.get('cipher'):
+ cipher_count += 1
+ item = self._normalize_format(raw, player_url)
+ if item and item.get('url'):
+ formats.append(item)
+ debug_log('normalized formats', {'count': len(formats), 'cipher_count': cipher_count, 'progressive': len([x for x in formats if x.get('vcodec') != 'none' and x.get('acodec') != 'none'])})
+ if not formats:
+ raise Exception('未获取到可用播放地址')
+ data = {
+ 'id': video_id,
+ 'title': details.get('title') or video_id,
+ 'duration': int(details.get('lengthSeconds') or 0),
+ 'formats': formats,
+ }
+ self.extract_cache[video_id] = {'data': data, 'expires': time.time() + self.extract_cache_ttl}
+ return data
+
+ @staticmethod
+ def extract_video_id(text):
+ text = str(text or '').strip()
+ for pattern in [
+ r'(?:v=|/v/|/embed/|/shorts/|youtu\.be/)([0-9A-Za-z_-]{11})',
+ r'^([0-9A-Za-z_-]{11})$',
+ ]:
+ m = re.search(pattern, text)
+ if m:
+ return m.group(1)
+ raise Exception('无法识别 YouTube 视频 ID')
+
+ def _client_name_id(self, client_name):
+ return {
+ 'WEB': 1,
+ 'MWEB': 2,
+ 'ANDROID': 3,
+ 'IOS': 5,
+ 'TVHTML5': 7,
+ 'ANDROID_VR': 28,
+ 'WEB_EMBEDDED_PLAYER': 56,
+ 'WEB_REMIX': 67,
+ }.get(client_name, 1)
+
+ def _extract_visitor_data(self, ytcfg, player_response):
+ return (
+ self.config.get('visitor_data')
+ or ytcfg.get('VISITOR_DATA')
+ or (((ytcfg.get('INNERTUBE_CONTEXT') or {}).get('client') or {}).get('visitorData'))
+ or ((player_response.get('responseContext') or {}).get('visitorData'))
+ )
+
+ def _extract_signature_timestamp(self, video_id, player_url, ytcfg=None):
+ try:
+ code = self._get_player_code(player_url)
+ sts = self._search(r'(?:signatureTimestamp|sts)\s*:\s*(\d{5})', code)
+ return int(sts) if sts else None
+ except Exception as e:
+ debug_log('sts extract error', repr(e))
+ return None
+
+ def _get_po_token(self, client_name, context='gvs'):
+ tokens = self.config.get('po_token') or self.config.get('po_tokens') or {}
+ if isinstance(tokens, str):
+ return tokens
+ if isinstance(tokens, dict):
+ return tokens.get(f'{client_name}.{context}') or tokens.get(client_name) or tokens.get(context)
+ return None
+
+ def _video_codec_priority(self, item):
+ mime = (item.get('mimeType') or '').lower()
+ codecs = (item.get('codecs') or '').lower()
+ if 'vp9.2' in mime or 'vp09.02' in codecs:
+ return 4
+ if 'vp9' in mime or 'vp09' in codecs:
+ return 3
+ if 'avc' in codecs or 'h264' in codecs:
+ return 2
+ if 'av01' in codecs:
+ return 1
+ return 0
+
+ def _is_hdr_video(self, item):
+ mime = (item.get('mimeType') or '').lower()
+ codecs = (item.get('codecs') or '').lower()
+ color = item.get('colorInfo') or {}
+ return 'vp9.2' in mime or 'vp09.02' in codecs or bool(color.get('hdrMetadataInfo'))
+
+ def _is_risky_best_video(self, item):
+ codecs = (item.get('codecs') or '').lower()
+ return 'av01' in codecs
+
+ def choose_playable(self, formats, quality=None):
+ all_videos = [x for x in formats if x.get('vcodec') != 'none' and x.get('acodec') == 'none']
+ candidates = all_videos[:]
+ if quality == '4k':
+ candidates = [x for x in candidates if int(x.get('height') or 0) >= 2160]
+ elif quality == '2k':
+ candidates = [x for x in candidates if 1440 <= int(x.get('height') or 0) < 2160]
+ elif quality == '1080p':
+ candidates = [x for x in candidates if 1000 <= int(x.get('height') or 0) < 1440]
+ elif quality == 'best':
+ safe_candidates = [x for x in candidates if not self._is_risky_best_video(x)]
+ if safe_candidates:
+ candidates = safe_candidates
+ else:
+ candidates = [x for x in candidates if int(x.get('height') or 0) >= 1080]
+ if not candidates and quality == 'best':
+ candidates = all_videos
+ if not candidates:
+ return None
+ candidates.sort(key=lambda x: (
+ self._video_codec_priority(x),
+ int(x.get('height') or 0),
+ int(x.get('bitrate') or 0)
+ ), reverse=True)
+ selected = candidates[0]
+ debug_log('video selected fast', {
+ 'quality': quality,
+ 'itag': selected.get('itag'),
+ 'height': selected.get('height'),
+ 'mime': selected.get('mimeType'),
+ 'codec_priority': self._video_codec_priority(selected),
+ 'candidates': len(candidates),
+ 'probe_skipped': True,
+ })
+ return selected
+
+ def choose_video_tracks(self, formats, quality=None):
+ videos = [x for x in formats if x.get('vcodec') != 'none' and x.get('acodec') == 'none']
+ cap = 2160 if quality in ('best', '4k') else 1440 if quality == '2k' else 1080
+ videos = [x for x in videos if int(x.get('height') or 0) <= cap] or videos
+ vp9 = [x for x in videos if self._video_codec_priority(x) >= 3]
+ if vp9:
+ videos = vp9
+ sdr = [x for x in videos if not self._is_hdr_video(x)]
+ hdr = [x for x in videos if self._is_hdr_video(x)]
+ sort_key = lambda x: (int(x.get('height') or 0), int(x.get('bitrate') or 0))
+ sdr.sort(key=sort_key, reverse=True)
+ hdr.sort(key=sort_key, reverse=True)
+ tracks = []
+ if sdr:
+ item = sdr[0].copy()
+ item['track_name'] = 'SDR'
+ item['is_hdr'] = False
+ tracks.append(item)
+ if hdr:
+ item = hdr[0].copy()
+ item['track_name'] = 'HDR'
+ item['is_hdr'] = True
+ tracks.append(item)
+ if not tracks:
+ item = self.choose_playable(formats, quality)
+ if item:
+ item = item.copy()
+ item['track_name'] = 'HDR' if self._is_hdr_video(item) else 'SDR'
+ item['is_hdr'] = self._is_hdr_video(item)
+ tracks.append(item)
+ debug_log('video tracks selected', [{'name': x.get('track_name'), 'itag': x.get('itag'), 'height': x.get('height'), 'codecs': x.get('codecs')} for x in tracks])
+ return tracks
+
+ def choose_audio(self, formats):
+ candidates = [x for x in formats if x.get('acodec') != 'none' and x.get('vcodec') == 'none']
+ if not candidates:
+ return None
+ candidates.sort(key=lambda x: (1 if x.get('ext') == 'mp4' else 0, int(x.get('bitrate') or 0)), reverse=True)
+ selected = candidates[0]
+ debug_log('audio selected fast', {
+ 'itag': selected.get('itag'),
+ 'mime': selected.get('mimeType'),
+ 'bitrate': selected.get('bitrate'),
+ 'probe_skipped': True,
+ })
+ return selected
+
+ def _probe_format(self, item):
+ try:
+ headers = self.headers.copy()
+ headers.update(item.get('headers') or {})
+ headers['Range'] = 'bytes=0-1'
+ r = self.session.get(item.get('url'), headers=headers, stream=True, timeout=10)
+ if r.url and r.url != item.get('url'):
+ item['url'] = r.url
+ item['redirected'] = True
+ debug_log('probe redirected url', self._url_summary(r.url))
+ status_code = r.status_code
+ r.close()
+ return status_code in (200, 206), status_code
+ except Exception as e:
+ return False, repr(e)
+
+ def choose_best_video_audio(self, formats):
+ videos = [x for x in formats if x.get('vcodec') != 'none' and x.get('acodec') == 'none']
+ audios = [x for x in formats if x.get('acodec') != 'none' and x.get('vcodec') == 'none']
+ videos.sort(key=lambda x: (int(x.get('height') or 0), int(x.get('bitrate') or 0)), reverse=True)
+ audios.sort(key=lambda x: int(x.get('bitrate') or 0), reverse=True)
+ return (videos[0] if videos else None), (audios[0] if audios else None)
+
+ def _url_summary(self, media_url):
+ parsed = urlparse(media_url or '')
+ query = parse_qs(parsed.query)
+ keys = ['itag', 'mime', 'c', 'expire', 'ip', 'mip', 'source', 'requiressl', 'gir', 'clen', 'dur', 'n', 'pot', 'sig', 'lsig', 'cms_redirect']
+ return {
+ 'host': parsed.netloc,
+ 'path': parsed.path,
+ 'len': len(media_url or ''),
+ 'params': {k: bool(query.get(k)) if k in ('pot', 'sig', 'lsig', 'cms_redirect') else (query.get(k, [''])[0][:80]) for k in keys if k in query}
+ }
+
+ def _get(self, url, **kwargs):
+ headers = self.headers.copy()
+ headers.update(kwargs.pop('headers', {}) or {})
+ r = self.session.get(url, headers=headers, timeout=kwargs.pop('timeout', 15), **kwargs)
+ r.raise_for_status()
+ return r
+
+ def _post_json(self, url, payload, headers=None):
+ h = self.headers.copy()
+ h.update({'Content-Type': 'application/json', 'Origin': 'https://www.youtube.com'})
+ if headers:
+ h.update({k: v for k, v in headers.items() if v})
+ r = self.session.post(url, json=payload, headers=h, timeout=15)
+ r.raise_for_status()
+ return r.json()
+
+ def _call_player_api(self, video_id, api_key, context, referer, visitor_data=None, sts=None):
+ clients = [
+ {'client': {'clientName': 'ANDROID_VR', 'clientVersion': '1.65.10', 'deviceMake': 'Oculus', 'deviceModel': 'Quest 3', 'androidSdkVersion': 32, 'userAgent': 'com.google.android.apps.youtube.vr.oculus/1.65.10 (Linux; U; Android 12L; eureka-user Build/SQ3A.220605.009.A1) gzip', 'osName': 'Android', 'osVersion': '12L', 'hl': 'en', 'gl': 'US'}},
+ {'client': {'clientName': 'ANDROID', 'clientVersion': '21.02.35', 'androidSdkVersion': 30, 'userAgent': 'com.google.android.youtube/21.02.35 (Linux; U; Android 11) gzip', 'osName': 'Android', 'osVersion': '11', 'hl': 'en', 'gl': 'US'}},
+ {'client': {'clientName': 'IOS', 'clientVersion': '21.02.3', 'deviceMake': 'Apple', 'deviceModel': 'iPhone16,2', 'userAgent': 'com.google.ios.youtube/21.02.3 (iPhone16,2; U; CPU iOS 18_3_2 like Mac OS X;)', 'osName': 'iPhone', 'osVersion': '18.3.2.22D82', 'hl': 'en', 'gl': 'US'}},
+ context,
+ {'client': {'clientName': 'MWEB', 'clientVersion': '2.20260115.01.00', 'userAgent': 'Mozilla/5.0 (iPad; CPU OS 16_7_10 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1,gzip(gfe)', 'hl': 'en', 'gl': 'US'}},
+ ]
+ results = []
+ fallback = None
+ for ctx in clients:
+ client_name = (ctx.get('client') or {}).get('clientName')
+ try:
+ url = f'https://www.youtube.com/youtubei/v1/player?key={api_key}&prettyPrint=false'
+ payload = {
+ 'context': ctx,
+ 'videoId': video_id,
+ 'playbackContext': {'contentPlaybackContext': {'html5Preference': 'HTML5_PREF_WANTS', **({'signatureTimestamp': sts} if sts else {})}},
+ 'contentCheckOk': True,
+ 'racyCheckOk': True,
+ }
+ client = ctx.get('client') or {}
+ headers = {
+ 'Referer': referer,
+ 'X-YouTube-Client-Name': str(self._client_name_id(client.get('clientName'))),
+ 'X-YouTube-Client-Version': client.get('clientVersion') or '',
+ }
+ if visitor_data:
+ headers['X-Goog-Visitor-Id'] = visitor_data
+ client_ua = client.get('userAgent')
+ if client_ua:
+ headers['User-Agent'] = client_ua
+ data = self._post_json(url, payload, headers=headers)
+ status = (data.get('playabilityStatus') or {}).get('status')
+ streaming = data.get('streamingData') or {}
+ formats = streaming.get('formats') or []
+ adaptive = streaming.get('adaptiveFormats') or []
+ direct_video = [x for x in adaptive if (x.get('url') or x.get('signatureCipher') or x.get('cipher')) and str(x.get('mimeType') or '').startswith('video/')]
+ direct_any = [x for x in formats + adaptive if x.get('url') or x.get('signatureCipher') or x.get('cipher')]
+ has_streaming = bool(streaming)
+ debug_log('player api client', {'client': client_name, 'status': status, 'has_streaming': has_streaming, 'formats': len(formats), 'adaptive': len(adaptive), 'direct_any': len(direct_any), 'direct_video': len(direct_video)})
+ if has_streaming:
+ data['_client_name'] = client_name
+ data['_client_ua'] = client_ua
+ results.append(data)
+ if client_name == 'ANDROID_VR' and direct_video:
+ debug_log('player api fast return', {'client': client_name, 'direct_video': len(direct_video)})
+ return results
+ if has_streaming and fallback is None:
+ fallback = data
+ elif fallback is None:
+ fallback = data
+ except Exception as e:
+ debug_log('player api client error', {'client': client_name, 'error': repr(e)})
+ continue
+ return results or ([fallback] if fallback else [])
+
+ def _normalize_format(self, fmt, player_url):
+ media_url = fmt.get('url')
+ if not media_url:
+ cipher = fmt.get('signatureCipher') or fmt.get('cipher')
+ if cipher:
+ media_url = self._decrypt_signature_cipher(cipher, player_url)
+ if not media_url:
+ return None
+ media_url = self._decrypt_nsig(media_url, player_url)
+ client_name = fmt.get('_client_name')
+ po_token = self._get_po_token(client_name, 'gvs') if client_name else None
+ if po_token:
+ sep = '&' if '?' in media_url else '?'
+ media_url = f'{media_url}{sep}pot={quote(po_token)}'
+ mime = fmt.get('mimeType') or ''
+ ext = 'mp4' if 'mp4' in mime else 'webm' if 'webm' in mime else 'unknown'
+ codecs = self._search(r'codecs="([^"]+)"', mime) or ''
+ has_audio = mime.startswith('audio/') or any(x in codecs for x in ('mp4a', 'opus', 'vorbis'))
+ has_video = mime.startswith('video/') or any(x in codecs for x in ('avc', 'vp9', 'av01', 'h264'))
+ headers = (fmt.get('http_headers') or {}).copy()
+ if fmt.get('_client_ua'):
+ headers['User-Agent'] = fmt.get('_client_ua')
+ return {
+ 'itag': fmt.get('itag'),
+ 'url': media_url,
+ 'mimeType': mime,
+ 'client': fmt.get('_client_name'),
+ 'ext': ext,
+ 'width': fmt.get('width') or 0,
+ 'height': fmt.get('height') or 0,
+ 'fps': fmt.get('fps') or 0,
+ 'bitrate': fmt.get('bitrate') or fmt.get('averageBitrate') or 0,
+ 'contentLength': fmt.get('contentLength'),
+ 'initRange': fmt.get('initRange') or {},
+ 'indexRange': fmt.get('indexRange') or {},
+ 'codecs': codecs,
+ 'quality': fmt.get('qualityLabel') or fmt.get('quality'),
+ 'colorInfo': fmt.get('colorInfo') or {},
+ 'vcodec': codecs if has_video else 'none',
+ 'acodec': codecs if has_audio else 'none',
+ 'headers': headers,
+ }
+
+ def _decrypt_signature_cipher(self, cipher, player_url):
+ data = parse_qs(cipher)
+ media_url = unquote(data.get('url', [''])[0])
+ sig = unquote(data.get('s', [''])[0])
+ sp = data.get('sp', ['sig'])[0]
+ if not media_url:
+ return ''
+ if sig:
+ decoded = self._decrypt_sig(sig, player_url)
+ debug_log('signature cipher', {'sp': sp, 'sig_len': len(sig), 'decoded_changed': decoded != sig, 'has_player': bool(player_url)})
+ sep = '&' if '?' in media_url else '?'
+ media_url = f'{media_url}{sep}{sp}={quote(decoded)}'
+ return media_url
+
+ def _decrypt_sig(self, sig, player_url):
+ cache_key = player_url or ''
+ if cache_key in self.sig_plan_cache:
+ plan = self.sig_plan_cache.get(cache_key)
+ debug_log('sig plan cache', {'has_plan': bool(plan), 'plan': plan[:8] if plan else None})
+ else:
+ code = self._get_player_code(player_url)
+ plan = self._extract_sig_plan(code)
+ self.sig_plan_cache[cache_key] = plan
+ debug_log('sig plan', {'code_len': len(code), 'has_plan': bool(plan), 'plan': plan[:8] if plan else None})
+ if not plan:
+ return sig
+ arr = list(sig)
+ for op, arg in plan:
+ if op == 'reverse':
+ arr.reverse()
+ elif op in ('slice', 'splice'):
+ arr = arr[int(arg):]
+ elif op == 'swap' and arr:
+ j = int(arg) % len(arr)
+ arr[0], arr[j] = arr[j], arr[0]
+ return ''.join(arr)
+
+ def _decrypt_nsig(self, media_url, player_url):
+ try:
+ parsed = urlparse(media_url)
+ query = parse_qs(parsed.query)
+ n_value = query.get('n', [None])[0]
+ if not n_value:
+ return media_url
+ path_match = re.search(r'/n/([^/]+)', parsed.path)
+ if path_match and path_match.group(1) != n_value:
+ new_path = parsed.path.replace(f"/n/{path_match.group(1)}", f"/n/{n_value}", 1)
+ fixed = urlunparse(parsed._replace(path=new_path))
+ debug_log('n path synced', {'old': path_match.group(1), 'new_len': len(n_value), 'changed': fixed != media_url})
+ return fixed
+ debug_log('n present', {'n_len': len(n_value), 'has_path_n': bool(path_match)})
+ return media_url
+ except Exception as e:
+ debug_log('n sync error', repr(e))
+ return media_url
+
+ def _get_player_code(self, player_url):
+ if not player_url:
+ return ''
+ if player_url in self.player_cache:
+ return self.player_cache[player_url]
+ if player_url.startswith('//'):
+ player_url = 'https:' + player_url
+ elif player_url.startswith('/'):
+ player_url = 'https://www.youtube.com' + player_url
+ try:
+ code = self._get(player_url).text
+ except Exception:
+ code = ''
+ self.player_cache[player_url] = code
+ return code
+
+ def _extract_sig_plan(self, code):
+ if not code:
+ return None
+ name = None
+ for pattern in [
+ r'\.sig\|\|([a-zA-Z0-9_$]+)\(',
+ r'"signature",\s*([a-zA-Z0-9_$]+)\(',
+ r'([a-zA-Z0-9_$]+)=function\(a\)\{a=a\.split\(""\);',
+ ]:
+ m = re.search(pattern, code)
+ if m:
+ name = m.group(1)
+ break
+ if not name:
+ return None
+ body = self._extract_js_function_body(code, name)
+ if not body:
+ return None
+ helper = self._search(r'([a-zA-Z0-9_$]+)\.[a-zA-Z0-9_$]+\(a,\d+\)', body)
+ helper_map = self._extract_helper_object(code, helper) if helper else {}
+ plan = []
+ for part in body.split(';'):
+ if 'reverse()' in part:
+ plan.append(('reverse', 0))
+ continue
+ m = re.search(r'\.slice\((\d+)\)', part)
+ if m:
+ plan.append(('slice', int(m.group(1))))
+ continue
+ m = re.search(r'\.splice\(0,(\d+)\)', part)
+ if m:
+ plan.append(('splice', int(m.group(1))))
+ continue
+ m = re.search(r'([a-zA-Z0-9_$]+)\.([a-zA-Z0-9_$]+)\(a,(\d+)\)', part)
+ if m and m.group(1) == helper:
+ op = helper_map.get(m.group(2))
+ if op:
+ plan.append((op, int(m.group(3))))
+ return plan or None
+
+ def _extract_helper_object(self, code, name):
+ if not name:
+ return {}
+ m = re.search(r'var\s+' + re.escape(name) + r'=\{(.+?)\};', code, re.S) or re.search(re.escape(name) + r'=\{(.+?)\};', code, re.S)
+ if not m:
+ return {}
+ result = {}
+ for method, body in re.findall(r'([a-zA-Z0-9_$]+):function\([a-z,]+\)\{(.*?)\}', m.group(1)):
+ if '.reverse(' in body:
+ result[method] = 'reverse'
+ elif '.splice(' in body:
+ result[method] = 'splice'
+ elif '.slice(' in body:
+ result[method] = 'slice'
+ elif 'a[0]' in body and 'length' in body:
+ result[method] = 'swap'
+ return result
+
+ def _extract_n_function(self, code):
+ if not code:
+ return None
+ name = None
+ for pattern in [
+ r'\.get\("n"\)\)&&\(b=([a-zA-Z0-9_$]+)(?:\[(\d+)\])?\(b\)',
+ r'\.get\("n"\)\)&&\(b=([a-zA-Z0-9_$]+)\(b\)',
+ r'([a-zA-Z0-9_$]+)=function\(a\)\{var b=a\.split\(""\)',
+ r'function\s+([a-zA-Z0-9_$]+)\(a\)\{var b=a\.split\(""\)',
+ r'([a-zA-Z0-9_$]+)=function\(a\)\{a=a\.split\(""\)',
+ ]:
+ m = re.search(pattern, code)
+ if m:
+ name = m.group(1)
+ break
+ if not name:
+ return None
+ body = self._extract_js_function_body(code, name)
+ debug_log('n function', {'name': name, 'body_len': len(body)})
+ if not body:
+ return None
+ def transform(value):
+ arr = list(value)
+ for part in body.split(';'):
+ if 'reverse()' in part:
+ arr.reverse()
+ m = re.search(r'\.slice\((\d+)\)', part)
+ if m:
+ arr = arr[int(m.group(1)):]
+ m = re.search(r'\.splice\(0,(\d+)\)', part)
+ if m:
+ arr = arr[int(m.group(1)):]
+ return ''.join(arr) or value
+ return transform
+
+ def _extract_js_function_body(self, code, name):
+ starts = []
+ for pattern in [
+ r'function\s+' + re.escape(name) + r'\s*\([^)]*\)\s*\{',
+ re.escape(name) + r'\s*=\s*function\s*\([^)]*\)\s*\{',
+ r'var\s+' + re.escape(name) + r'\s*=\s*function\s*\([^)]*\)\s*\{',
+ ]:
+ m = re.search(pattern, code)
+ if m:
+ starts.append(m.end() - 1)
+ if not starts:
+ return ''
+ start = starts[0]
+ depth = 0
+ in_str = None
+ escape = False
+ for i in range(start, len(code)):
+ ch = code[i]
+ if escape:
+ escape = False
+ continue
+ if ch == '\\':
+ escape = True
+ continue
+ if in_str:
+ if ch == in_str:
+ in_str = None
+ continue
+ if ch in ('"', "'", '`'):
+ in_str = ch
+ continue
+ if ch == '{':
+ depth += 1
+ elif ch == '}':
+ depth -= 1
+ if depth == 0:
+ return code[start + 1:i]
+ return ''
+
+ def _extract_ytcfg(self, text):
+ m = re.search(r'ytcfg\.set\s*\(\s*({.+?})\s*\)\s*;', text, re.S)
+ if not m:
+ return None
+ try:
+ return json.loads(m.group(1))
+ except Exception:
+ return None
+
+ def _extract_initial_player_response(self, text):
+ return self._extract_json_after(text, 'ytInitialPlayerResponse')
+
+ def _extract_json_after(self, text, marker):
+ pos = text.find(marker)
+ if pos < 0:
+ return None
+ start = text.find('{', pos)
+ if start < 0:
+ return None
+ depth = 0
+ in_str = None
+ escape = False
+ for i in range(start, len(text)):
+ ch = text[i]
+ if escape:
+ escape = False
+ continue
+ if ch == '\\':
+ escape = True
+ continue
+ if in_str:
+ if ch == in_str:
+ in_str = None
+ continue
+ if ch == '"':
+ in_str = ch
+ continue
+ if ch == '{':
+ depth += 1
+ elif ch == '}':
+ depth -= 1
+ if depth == 0:
+ try:
+ return json.loads(text[start:i + 1])
+ except Exception:
+ return None
+ return None
+
+ def _extract_player_url(self, text):
+ for pattern in [
+ r'"jsUrl":"([^"]+)"',
+ r'"PLAYER_JS_URL":"([^"]+)"',
+ r'(/s/player/[^"\\]+/base\.js)',
+ ]:
+ m = re.search(pattern, text)
+ if m:
+ return m.group(1).replace('\\/', '/')
+ return ''
+
+ @staticmethod
+ def _search(pattern, text, default=None):
+ m = re.search(pattern, text or '', re.S)
+ return m.group(1) if m else default
+
+
+# ==================== 直播提取类 ====================
+class YouTubeLiveLite:
+ """直播提取(原 youtubelive.py)"""
+ def __init__(self, session, headers=None, config=None):
+ self.session = session
+ self.headers = headers or {}
+ self.config = config or {}
+ self.cache = {}
+ self.cache_ttl = int(self.config.get('live_cache_ttl') or 45)
+
+ def extract_video_id(self, text):
+ text = str(text or '').strip()
+ for pattern in [
+ r'(?:v=|/v/|/embed/|/shorts/|youtu\.be/)([0-9A-Za-z_-]{11})',
+ r'^([0-9A-Za-z_-]{11})$',
+ ]:
+ match = re.search(pattern, text)
+ if match:
+ return match.group(1)
+ raise Exception('无法识别 YouTube 视频 ID')
+
+ def extract_live(self, url_or_id):
+ video_id = self.extract_video_id(url_or_id)
+ now = time.time()
+ cached = self.cache.get(video_id)
+ if cached and cached.get('expires', 0) > now:
+ debug_log('live cache hit', {'video_id': video_id, 'ttl': int(cached.get('expires', 0) - now)})
+ return cached.get('data')
+ watch_url = f'https://www.youtube.com/watch?v={video_id}'
+ debug_log('live extract start', {'input': url_or_id, 'video_id': video_id})
+ response = self._get(watch_url)
+ page = response.text
+ player_response = self._extract_initial_player_response(page) or {}
+ ytcfg = self._extract_ytcfg(page) or {}
+ api_key = ytcfg.get('INNERTUBE_API_KEY') or self._search(r'"INNERTUBE_API_KEY":"([^"]+)"', page)
+ visitor_data = self._extract_visitor_data(ytcfg, player_response)
+ status_obj = player_response.get('playabilityStatus') or {}
+ streaming = player_response.get('streamingData') or {}
+ details = player_response.get('videoDetails') or {}
+ debug_log('live page parsed', {
+ 'status': status_obj.get('status'),
+ 'reason': status_obj.get('reason'),
+ 'is_live': details.get('isLiveContent'),
+ 'has_hls': bool(streaming.get('hlsManifestUrl')),
+ 'has_api_key': bool(api_key),
+ 'has_visitor': bool(visitor_data),
+ })
+ page_hls_url = streaming.get('hlsManifestUrl') or ''
+ hls_source = 'page' if page_hls_url else ''
+ api_data = None
+ if api_key:
+ api_data = self._call_player_api(video_id, api_key, ytcfg, watch_url, visitor_data)
+ if api_data:
+ api_streaming = api_data.get('streamingData') or {}
+ api_details = api_data.get('videoDetails') or {}
+ api_hls_url = api_streaming.get('hlsManifestUrl') or ''
+ if api_hls_url:
+ streaming = api_streaming
+ hls_source = api_data.get('_client_name') or 'api'
+ elif not page_hls_url and api_streaming:
+ streaming = api_streaming
+ hls_source = api_data.get('_client_name') or 'api_no_hls'
+ if api_details:
+ details = api_details
+ status_obj = api_data.get('playabilityStatus') or status_obj
+ if not (streaming.get('hlsManifestUrl') or '') and page_hls_url:
+ streaming = dict(streaming or {})
+ streaming['hlsManifestUrl'] = page_hls_url
+ hls_source = 'page_fallback'
+ hls_url = streaming.get('hlsManifestUrl') or ''
+ is_live = bool(details.get('isLiveContent') or hls_url)
+ status = status_obj.get('status') or ''
+ reason = status_obj.get('reason') or ''
+ title = details.get('title') or video_id
+ data = {
+ 'id': video_id,
+ 'title': title,
+ 'is_live': is_live,
+ 'status': status,
+ 'reason': reason,
+ 'hls_url': hls_url,
+ 'duration': int(details.get('lengthSeconds') or 0),
+ }
+ debug_log('live extract result', {
+ 'video_id': video_id,
+ 'status': status,
+ 'is_live': is_live,
+ 'has_hls': bool(hls_url),
+ 'hls_source': hls_source,
+ 'duration': data.get('duration'),
+ })
+ self.cache[video_id] = {'data': data, 'expires': time.time() + self.cache_ttl}
+ return data
+
+ def _get(self, url, **kwargs):
+ headers = self.headers.copy()
+ headers.update(kwargs.pop('headers', {}) or {})
+ response = self.session.get(url, headers=headers, timeout=kwargs.pop('timeout', 15), **kwargs)
+ response.raise_for_status()
+ return response
+
+ def _post_json(self, url, payload, headers=None):
+ final_headers = self.headers.copy()
+ final_headers.update({'Content-Type': 'application/json', 'Origin': 'https://www.youtube.com'})
+ if headers:
+ final_headers.update({k: v for k, v in headers.items() if v})
+ response = self.session.post(url, json=payload, headers=final_headers, timeout=15)
+ response.raise_for_status()
+ return response.json()
+
+ def _call_player_api(self, video_id, api_key, ytcfg, referer, visitor_data=None):
+ context = ytcfg.get('INNERTUBE_CONTEXT') or {
+ 'client': {'clientName': 'WEB', 'clientVersion': '2.20240310.01.00', 'hl': 'en', 'gl': 'US'}
+ }
+ clients = [
+ {'client': {'clientName': 'ANDROID', 'clientVersion': '21.02.35', 'androidSdkVersion': 30, 'userAgent': 'com.google.android.youtube/21.02.35 (Linux; U; Android 11) gzip', 'osName': 'Android', 'osVersion': '11', 'hl': 'en', 'gl': 'US'}},
+ {'client': {'clientName': 'IOS', 'clientVersion': '21.02.3', 'deviceMake': 'Apple', 'deviceModel': 'iPhone16,2', 'userAgent': 'com.google.ios.youtube/21.02.3 (iPhone16,2; U; CPU iOS 18_3_2 like Mac OS X;)', 'osName': 'iPhone', 'osVersion': '18.3.2.22D82', 'hl': 'en', 'gl': 'US'}},
+ {'client': {'clientName': 'MWEB', 'clientVersion': '2.20260115.01.00', 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1', 'hl': 'en', 'gl': 'US'}},
+ context,
+ ]
+ for ctx in clients:
+ client = ctx.get('client') or {}
+ client_name = client.get('clientName') or 'WEB'
+ try:
+ url = f'https://www.youtube.com/youtubei/v1/player?key={quote(api_key)}&prettyPrint=false'
+ headers = {
+ 'Referer': referer,
+ 'X-YouTube-Client-Name': str(self._client_name_id(client_name)),
+ 'X-YouTube-Client-Version': client.get('clientVersion') or '',
+ }
+ if visitor_data:
+ headers['X-Goog-Visitor-Id'] = visitor_data
+ if client.get('userAgent'):
+ headers['User-Agent'] = client.get('userAgent')
+ payload = {
+ 'context': ctx,
+ 'videoId': video_id,
+ 'contentCheckOk': True,
+ 'racyCheckOk': True,
+ }
+ data = self._post_json(url, payload, headers=headers)
+ streaming = data.get('streamingData') or {}
+ status = (data.get('playabilityStatus') or {}).get('status')
+ debug_log('live api client', {
+ 'client': client_name,
+ 'status': status,
+ 'has_hls': bool(streaming.get('hlsManifestUrl')),
+ 'has_streaming': bool(streaming),
+ })
+ if streaming.get('hlsManifestUrl'):
+ data['_client_name'] = client_name
+ return data
+ except Exception as e:
+ debug_log('live api client error', {'client': client_name, 'error': repr(e)})
+ return None
+
+ def _extract_visitor_data(self, ytcfg, player_response):
+ return (
+ self.config.get('visitor_data')
+ or ytcfg.get('VISITOR_DATA')
+ or (((ytcfg.get('INNERTUBE_CONTEXT') or {}).get('client') or {}).get('visitorData'))
+ or ((player_response.get('responseContext') or {}).get('visitorData'))
+ )
+
+ def _extract_ytcfg(self, text):
+ m = re.search(r'ytcfg\.set\s*\(\s*({.+?})\s*\)\s*;', text, re.S)
+ if not m:
+ return None
+ try:
+ return json.loads(m.group(1))
+ except Exception:
+ return None
+
+ def _extract_initial_player_response(self, text):
+ return self._extract_json_after(text, 'ytInitialPlayerResponse')
+
+ def _extract_json_after(self, text, marker):
+ pos = text.find(marker)
+ if pos < 0:
+ return None
+ start = text.find('{', pos)
+ if start < 0:
+ return None
+ depth = 0
+ in_str = None
+ escape = False
+ for i in range(start, len(text)):
+ ch = text[i]
+ if escape:
+ escape = False
+ continue
+ if ch == '\\':
+ escape = True
+ continue
+ if in_str:
+ if ch == in_str:
+ in_str = None
+ continue
+ if ch == '"':
+ in_str = ch
+ continue
+ if ch == '{':
+ depth += 1
+ elif ch == '}':
+ depth -= 1
+ if depth == 0:
+ try:
+ return json.loads(text[start:i + 1])
+ except Exception:
+ return None
+ return None
+
+ @staticmethod
+ def _search(pattern, text, default=None):
+ m = re.search(pattern, text or '', re.S)
+ return m.group(1) if m else default
+
+ def _client_name_id(self, client_name):
+ return {
+ 'WEB': 1,
+ 'MWEB': 2,
+ 'ANDROID': 3,
+ 'IOS': 5,
+ 'TVHTML5': 7,
+ 'ANDROID_VR': 28,
+ 'WEB_EMBEDDED_PLAYER': 56,
+ 'WEB_REMIX': 67,
+ }.get(client_name, 1)
+
+
+# ==================== 主 Spider 类 ====================
+class Spider(Spider):
+ def getName(self):
+ return 'YouTube 视频+直播(优化版)'
+
+ def init(self, extend):
+ try:
+ self.extendDict = json.loads(extend) if extend else {}
+ except Exception:
+ self.extendDict = {}
+
+ self.session = requests.Session()
+ # 确保 requests 在没有指定代理时,信任环境变量中的系统代理配置
+ self.session.trust_env = True
+
+ # ----- 1. 代理配置:三级回退逻辑 -----
+ self.proxy_str = None
+ proxy = self.extendDict.get('proxy')
+
+ if proxy:
+ # 第一级:优先使用 ext 传入的代理
+ if isinstance(proxy, str):
+ if not proxy.startswith('http://') and not proxy.startswith('https://'):
+ proxy = 'http://' + proxy
+ self.session.proxies = {'http': proxy, 'https': proxy}
+ self.proxy_str = proxy.replace('http://', '').replace('https://', '')
+ debug_log('使用 ext 传入代理', {'proxy': proxy})
+ elif isinstance(proxy, dict):
+ proxies = {}
+ for k, v in proxy.items():
+ if k in ('http', 'https') and v:
+ if not v.startswith('http://') and not v.startswith('https://'):
+ v = 'http://' + v
+ proxies[k] = v
+ if proxies:
+ self.session.proxies = proxies
+ self.proxy_str = (proxies.get('https') or proxies.get('http') or '').replace('http://', '').replace('https://', '')
+ debug_log('使用 ext 传入的字典代理', proxies)
+ else:
+ self._auto_detect_proxy()
+ else:
+ self._auto_detect_proxy()
+ else:
+ # 第二级/第三级:如果不写/没传入,进入自动探测回退流程
+ self._auto_detect_proxy()
+ # ---------------------------------------------------------
+
+ # ----- 2. 加载自定义分类与过滤器配置 -----
+ self.yt_classes = YOUTUBE_CLASSES
+ self.yt_filters = CATEGORY_FILTERS
+
+ if 'json' in self.extendDict and self.extendDict['json']:
+ try:
+ config_url = self.extendDict['json']
+ if config_url.startswith('./'):
+ import os
+ config_path = os.path.join(os.path.dirname(__file__), config_url[2:])
+ with open(config_path, 'r', encoding='utf-8') as f:
+ custom_config = json.load(f)
+ else:
+ # 使用当前确定好的代理去请求 JSON
+ r = self.session.get(config_url, timeout=10)
+ custom_config = r.json()
+
+ if 'class' in custom_config:
+ self.yt_classes = custom_config['class']
+ if 'filters' in custom_config:
+ self.yt_filters = custom_config['filters']
+ except Exception as e:
+ debug_log("加载外部 JSON 配置文件失败", repr(e))
+
+ self.header = {
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
+ 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
+ 'Referer': 'https://www.youtube.com/'
+ }
+ self.session.headers.update(self.header)
+
+ # 初始化两个提取器
+ self.yt_video = YouTubeLite(self.session, self.header, self.extendDict)
+ self.yt_live = YouTubeLiveLite(self.session, self.header, self.extendDict)
+ self.search_page_cache = {} # 视频搜索缓存
+ self.live_search_cache = {} # 直播搜索缓存
+ self.hls_url_cache = {} # 直播 HLS 代理缓存
+ self.hls_proxy_enabled = self.extendDict.get('hls_proxy', True) is not False
+ self._hls_key_seq = 0
+ self.direct_segments = str(self.extendDict.get('seg') or 'proxy').lower() == 'direct'
+
+ def _auto_detect_proxy(self):
+ """代理逻辑 2 & 3:探测内置列表,若都不行则清空,回退使用系统/全局代理"""
+ proxy_list = [
+ "http://127.0.0.1:2080",
+ "http://127.0.0.1:7890",
+ "http://127.0.0.1:10809",
+ "http://127.0.0.1:10172",
+ "http://127.0.0.1:20172",
+ "http://127.0.0.1:7891",
+ "http://127.0.0.1:10808",
+ "http://127.0.0.1:1087",
+ "http://127.0.0.1:3128",
+ "http://127.0.0.1:1080",
+ "http://127.0.0.1:8080",
+ "http://127.0.0.1:9090"
+ ]
+
+ # 第二级:探测内置列表
+ for p in proxy_list:
+ try:
+ test_proxies = {'http': p, 'https': p}
+ # 设置较短超时时间,快速失败
+ r = requests.get('https://www.youtube.com', proxies=test_proxies, timeout=2)
+ if r.status_code < 400:
+ self.session.proxies = test_proxies
+ self.proxy_str = p.replace('http://', '').replace('https://', '')
+ debug_log('内置代理探测成功,使用内置', {'proxy': p})
+ return
+ except Exception:
+ continue
+
+ # 第三级:如果所有预设都失败,清空 proxies 字典,回退到全局/系统代理
+ self.session.proxies = {}
+ self.proxy_str = ''
+ debug_log('所有内置代理均不可用,清空设置,回退使用系统/全局代理')
+
+ def homeContent(self, filter):
+ result = {'class': self.yt_classes}
+ if filter:
+ video_filters = {}
+ for c in self.yt_classes:
+ cid = c['type_id']
+ if cid in self.yt_filters:
+ video_filters[cid] = self.yt_filters[cid]
+ result['filters'] = video_filters
+ return result
+
+ def homeVideoContent(self):
+ return {'list': []}
+
+ def categoryContent(self, cid, page, filter, ext):
+ page = int(page or 1)
+ filters = ext if isinstance(ext, dict) else {}
+ if self._is_live_category(cid):
+ keyword = self._build_live_keyword(cid, filters)
+ videos, has_more = self._search_live_page(keyword, page)
+ else:
+ keyword = self._build_video_keyword(cid, filters)
+ videos, has_more = self._search_video_page(keyword, page)
+ return {
+ 'list': videos,
+ 'page': page,
+ 'pagecount': page + 1 if has_more else page,
+ 'limit': len(videos),
+ 'total': len(videos)
+ }
+
+ def searchContent(self, key, quick, pg=1):
+ page = int(pg or 1)
+ keyword = str(key or '').strip()
+ videos_v, _ = self._search_video_page(keyword, page)
+ live_keyword = f'{keyword} live' if 'live' not in keyword.lower() and '直播' not in keyword else keyword
+ videos_l, _ = self._search_live_page(live_keyword, page)
+ seen = set()
+ merged = []
+ for v in videos_v + videos_l:
+ if v['vod_id'] not in seen:
+ seen.add(v['vod_id'])
+ merged.append(v)
+ return {
+ 'list': merged[:30],
+ 'page': page,
+ 'pagecount': page + 1,
+ 'limit': len(merged),
+ 'total': len(merged)
+ }
+
+ # ---------- 画质名称辅助 ----------
+ def _get_quality_label(self, height):
+ if height >= 2160:
+ return '4K'
+ elif height >= 1440:
+ return '2K'
+ elif height >= 1080:
+ return '1080P'
+ elif height >= 720:
+ return '720P'
+ elif height >= 480:
+ return '480P'
+ elif height >= 360:
+ return '360P'
+ else:
+ return f'{height}P'
+
+ # ---------- 解析 HLS 主播放列表(直播多画质) ----------
+ def _parse_hls_master(self, master_url):
+ """返回 list of dict: {height, width, bandwidth, url}"""
+ try:
+ r = self.session.get(master_url, headers=self.header, timeout=10)
+ r.raise_for_status()
+ lines = r.text.splitlines()
+ variants = []
+ i = 0
+ while i < len(lines):
+ line = lines[i].strip()
+ if line.startswith('#EXT-X-STREAM-INF'):
+ bandwidth = re.search(r'BANDWIDTH=(\d+)', line)
+ resolution = re.search(r'RESOLUTION=(\d+)x(\d+)', line)
+ height = int(resolution.group(2)) if resolution else 0
+ width = int(resolution.group(1)) if resolution else 0
+ bw = int(bandwidth.group(1)) if bandwidth else 0
+ if i + 1 < len(lines):
+ url_line = lines[i+1].strip()
+ if not url_line.startswith('#'):
+ full_url = urljoin(master_url, url_line)
+ variants.append({
+ 'height': height,
+ 'width': width,
+ 'bandwidth': bw,
+ 'url': full_url
+ })
+ i += 2
+ else:
+ i += 1
+ variants.sort(key=lambda x: x['height'], reverse=True)
+ return variants
+ except Exception as e:
+ debug_log('parse hls master error', {'master_url': master_url, 'error': repr(e)})
+ return []
+
+ # ---------- detailContent(方案A:按高度分 SDR/HDR) ----------
+ def detailContent(self, did):
+ video_id = did[0]
+ # 检测是否为直播
+ try:
+ live_data = self.yt_live.extract_live(video_id)
+ is_live = live_data.get('is_live') or bool(live_data.get('hls_url'))
+ title = live_data.get('title') or video_id
+ status = '直播中' if is_live else '未开播'
+ except Exception as e:
+ debug_log('detail live check failed', {'video_id': video_id, 'error': repr(e)})
+ is_live = False
+ title = self._get_video_title(video_id) or video_id
+ status = '视频'
+
+ play_sources = []
+ play_urls = []
+
+ if is_live:
+ hls_url = live_data.get('hls_url')
+ if hls_url:
+ variants = self._parse_hls_master(hls_url)
+ if variants:
+ for v in variants:
+ height = v['height']
+ label = self._get_quality_label(height)
+ cache_key = f'live_{video_id}_{height}'
+ self.setCache(cache_key, {'url': v['url'], 'expires': time.time() + 300})
+ play_sources.append(label)
+ play_urls.append(f'{label}${video_id}@live_{height}')
+ else:
+ play_sources.append('直播')
+ play_urls.append(f'直播${video_id}@live')
+ else:
+ play_sources.append('直播')
+ play_urls.append(f'直播${video_id}@live')
+ else:
+ # ---- 点播:方案A ----
+ try:
+ data = self.yt_video.extract(video_id)
+ formats = data.get('formats', [])
+ # 只取视频流
+ video_streams = [f for f in formats if f.get('vcodec') != 'none' and f.get('acodec') == 'none']
+ # 按高度分组
+ height_groups = {}
+ for f in video_streams:
+ h = int(f.get('height', 0))
+ if h <= 0:
+ continue
+ height_groups.setdefault(h, []).append(f)
+
+ # 对每个高度,按码率排序取最佳,并区分 SDR/HDR
+ for h in sorted(height_groups.keys(), reverse=True):
+ items = height_groups[h]
+ # 选 SDR 和 HDR 中码率最高的各一个
+ sdr_items = [x for x in items if not self.yt_video._is_hdr_video(x)]
+ hdr_items = [x for x in items if self.yt_video._is_hdr_video(x)]
+ sdr_item = max(sdr_items, key=lambda x: int(x.get('bitrate') or 0)) if sdr_items else None
+ hdr_item = max(hdr_items, key=lambda x: int(x.get('bitrate') or 0)) if hdr_items else None
+
+ label_base = self._get_quality_label(h)
+ if sdr_item:
+ name = f'{label_base} SDR'
+ play_sources.append(name)
+ play_urls.append(f'{name}${video_id}@{h}_sdr')
+ if hdr_item:
+ name = f'{label_base} HDR'
+ play_sources.append(name)
+ play_urls.append(f'{name}${video_id}@{h}_hdr')
+ # 若两者都无(理论上不会),忽略
+
+ # 如果没有生成任何线路,回退
+ if not play_sources:
+ raise Exception('No video streams found')
+ except Exception as e:
+ debug_log('detail get formats error', {'video_id': video_id, 'error': repr(e)})
+ play_sources.append('最高画质')
+ play_urls.append(f'最高画质${video_id}@best')
+
+ # 获取相关推荐
+ related = []
+ try:
+ r = self.session.get(f'https://www.youtube.com/watch?v={video_id}', timeout=10)
+ related = self._extract_videos_fixed(r.text, 20)
+ except Exception:
+ pass
+
+ if related:
+ related_urls = []
+ for v in related:
+ if v.get('vod_id') != video_id:
+ related_urls.append(f"{self._safe_title(v['vod_name'])}${v['vod_id']}@best")
+ if related_urls:
+ play_sources.append('相关推荐')
+ play_urls.append('#'.join(related_urls))
+
+ vod = {
+ 'vod_id': video_id,
+ 'vod_name': title,
+ 'vod_pic': f'http://127.0.0.1:9978/proxy?do=py&type=image&vid={video_id}',
+ 'vod_remarks': status,
+ 'vod_play_from': '$$$'.join(play_sources),
+ 'vod_play_url': '$$$'.join(play_urls)
+ }
+ return {'list': [vod]}
+
+ # ---------- playerContent ----------
+ def playerContent(self, flag, pid, vipFlags):
+ raw_pid = pid.split('$')[-1]
+ if '@' in raw_pid:
+ video_id, quality_or_type = raw_pid.rsplit('@', 1)
+ else:
+ video_id, quality_or_type = raw_pid, 'best'
+
+ # 直播处理
+ if quality_or_type == 'live':
+ return self._play_live(video_id)
+ elif quality_or_type.startswith('live_'):
+ height_str = quality_or_type.split('_')[1]
+ if height_str.isdigit():
+ return self._play_live_by_height(video_id, int(height_str))
+ else:
+ return self._play_live(video_id)
+ else:
+ # 点播:解析高度和类型
+ if quality_or_type.endswith('_sdr') or quality_or_type.endswith('_hdr'):
+ parts = quality_or_type.rsplit('_', 1)
+ if len(parts) == 2 and parts[1] in ('sdr', 'hdr'):
+ height_str, hdr_flag = parts
+ if height_str.isdigit():
+ return self._play_video_by_height_and_type(video_id, int(height_str), hdr_flag)
+ # 兼容旧格式(纯高度或 best 等)
+ if quality_or_type.isdigit():
+ return self._play_video_by_height_and_type(video_id, int(quality_or_type), 'sdr') # 默认 SDR
+ else:
+ quality = quality_or_type if quality_or_type in ('best', '4k', '2k', '1080p') else 'best'
+ return self._play_video(video_id, quality)
+
+ # ---------- 按高度和 SDR/HDR 类型播放点播 ----------
+ def _play_video_by_height_and_type(self, video_id, target_height, hdr_type):
+ try:
+ data = self.yt_video.extract(video_id)
+ formats = data.get('formats', [])
+ video_streams = [f for f in formats if f.get('vcodec') != 'none' and f.get('acodec') == 'none']
+ # 按高度筛选(>= target_height 中取最小,若无则取最大)
+ candidates = [f for f in video_streams if int(f.get('height', 0)) >= target_height]
+ if not candidates:
+ candidates = video_streams
+ # 再按 HDR 类型筛选
+ is_hdr_wanted = (hdr_type == 'hdr')
+ candidates = [f for f in candidates if self.yt_video._is_hdr_video(f) == is_hdr_wanted]
+ if not candidates:
+ # 若无匹配,则取该类型中任意一个(或回退到无类型)
+ candidates = [f for f in video_streams if self.yt_video._is_hdr_video(f) == is_hdr_wanted]
+ if not candidates:
+ candidates = video_streams # 最终回退
+ # 选码率最高的
+ selected_video = max(candidates, key=lambda x: int(x.get('bitrate') or 0))
+ audio = self.yt_video.choose_audio(formats)
+ if audio:
+ cache_key = f'yt_{video_id}_{target_height}_{hdr_type}'
+ self.setCache(cache_key, {
+ 'video_tracks': [selected_video],
+ 'video_url': selected_video['url'],
+ 'audio_url': audio['url'],
+ 'video_item': selected_video,
+ 'audio_item': audio,
+ 'duration': data.get('duration') or 0,
+ 'expires': time.time() + 300,
+ })
+ return {
+ 'parse': 0,
+ 'jx': 0,
+ 'url': f'http://127.0.0.1:9978/proxy?do=py&type=mpd&vid={video_id}&quality={target_height}_{hdr_type}',
+ 'format': 'application/dash+xml'
+ }
+ else:
+ headers = self.header.copy()
+ headers.update(selected_video.get('headers') or {})
+ return {'parse': 0, 'jx': 0, 'url': selected_video['url'], 'header': headers}
+ except Exception as e:
+ debug_log('_play_video_by_height_and_type error', {'video_id': video_id, 'height': target_height, 'type': hdr_type, 'error': repr(e)})
+ return {'parse': 1, 'url': f'https://www.youtube.com/embed/{video_id}?autoplay=1', 'header': json.dumps(self.header)}
+
+
+ def _play_live_by_height(self, video_id, target_height):
+ cache_key = f'live_{video_id}_{target_height}'
+ cached = self.getCache(cache_key)
+ if cached and cached.get('url'):
+ variant_url = cached['url']
+ if self.hls_proxy_enabled:
+ play_url = self._cache_hls_url(variant_url, video_id, 'master')
+ else:
+ play_url = variant_url
+ return {
+ 'parse': 0,
+ 'jx': 0,
+ 'url': play_url,
+ 'header': self.header,
+ 'format': 'application/x-mpegURL'
+ }
+ else:
+ return self._play_live(video_id)
+
+
+ def _is_live_category(self, cid):
+ cid_lower = cid.lower()
+ return 'live' in cid_lower or '直播' in cid_lower
+
+ def _build_live_keyword(self, cid, filters=None):
+ terms = [cid]
+ if isinstance(filters, dict):
+ for value in filters.values():
+ term = self._normalize_filter_term(value)
+ if term:
+ terms.append(term)
+ keyword = ' '.join([x for x in terms if x]).strip()
+ if 'live' not in keyword.lower() and '直播' not in keyword:
+ keyword = f'{keyword} live'
+ return keyword
+
+ def _build_video_keyword(self, cid, filters=None):
+ if cid.startswith('LIST:'):
+ raw = cid[5:].strip()
+ channels = [ch.strip() for ch in raw.split(',') if ch.strip()]
+ terms = []
+ for ch in channels:
+ if ch.startswith('@'):
+ terms.append(f'channel:{ch}')
+ else:
+ terms.append(f'"{ch}"')
+ keyword = ' OR '.join(terms) if terms else ''
+ else:
+ keyword = cid
+ if isinstance(filters, dict):
+ for value in filters.values():
+ term = self._normalize_filter_term(value)
+ if term:
+ keyword += ' ' + term
+ return keyword.strip()
+
+ def _normalize_filter_term(self, value):
+ if isinstance(value, (list, tuple)):
+ return ' '.join([self._normalize_filter_term(item) for item in value if item])
+ if isinstance(value, dict):
+ return ' '.join([self._normalize_filter_term(item) for item in value.values() if item])
+ return re.sub(r'\s+', ' ', str(value or '')).strip()[:180]
+
+ def _search_cache_key(self, key):
+ return re.sub(r'\s+', ' ', str(key or '')).strip().lower()
+
+ def _search_video_page(self, key, page=1):
+ page = max(1, int(page or 1))
+ cache_key = self._search_cache_key(key)
+ session = self.search_page_cache.get(cache_key)
+ if page == 1 or not session:
+ session = self._fetch_search_first_page(key)
+ self.search_page_cache[cache_key] = session
+ while len(session.get('pages', [])) < page and session.get('next'):
+ data = self._fetch_search_continuation(session)
+ videos = self._extract_videos_from_api(data, 30)
+ session.setdefault('pages', []).append(videos)
+ session['next'] = self._extract_continuation_token(data)
+ pages = session.get('pages', [])
+ videos = pages[page - 1] if len(pages) >= page else []
+ has_more = bool(session.get('next')) or len(pages) > page
+ return videos, has_more
+
+ def _search_live_page(self, key, page=1):
+ page = max(1, int(page or 1))
+ cache_key = f'live_{self._search_cache_key(key)}'
+ session = self.live_search_cache.get(cache_key)
+ if page == 1 or not session:
+ session = self._fetch_live_search_first_page(key)
+ self.live_search_cache[cache_key] = session
+ while len(session.get('pages', [])) < page and session.get('next'):
+ data = self._fetch_search_continuation(session)
+ videos = self._extract_live_videos_from_api(data, 30)
+ session.setdefault('pages', []).append(videos)
+ session['next'] = self._extract_continuation_token(data)
+ pages = session.get('pages', [])
+ videos = pages[page - 1] if len(pages) >= page else []
+ has_more = bool(session.get('next')) or len(pages) > page
+ return videos, has_more
+
+ def _fetch_live_search_first_page(self, key):
+ search_url = f'https://www.youtube.com/results?search_query={quote(str(key or ""))}&sp=EgJAAQ%253D%253D'
+ r = self.session.get(search_url, timeout=10)
+ html_str = r.text
+ data = self.yt_video._extract_json_after(html_str, 'ytInitialData') or {}
+ ytcfg = self.yt_video._extract_ytcfg(html_str) or {}
+ api_key = ytcfg.get('INNERTUBE_API_KEY') or self.yt_video._search(r'"INNERTUBE_API_KEY":"([^"]+)"', html_str)
+ context = ytcfg.get('INNERTUBE_CONTEXT') or {'client': {'clientName': 'WEB', 'clientVersion': '2.20240310.01.00', 'hl': 'zh-CN', 'gl': 'US'}}
+ client = context.get('client') or {}
+ return {
+ 'key': key,
+ 'api_key': api_key,
+ 'context': context,
+ 'client_name': client.get('clientName') or 'WEB',
+ 'client_version': client.get('clientVersion') or '2.20240310.01.00',
+ 'referer': search_url,
+ 'pages': [self._extract_live_videos_from_api(data, 30)],
+ 'next': self._extract_continuation_token(data),
+ }
+
+ def _fetch_search_first_page(self, key):
+ search_url = f'https://www.youtube.com/results?search_query={quote(str(key or ""))}'
+ r = self.session.get(search_url, timeout=10)
+ html_str = r.text
+ data = self.yt_video._extract_json_after(html_str, 'ytInitialData') or {}
+ ytcfg = self.yt_video._extract_ytcfg(html_str) or {}
+ api_key = ytcfg.get('INNERTUBE_API_KEY') or self.yt_video._search(r'"INNERTUBE_API_KEY":"([^"]+)"', html_str)
+ context = ytcfg.get('INNERTUBE_CONTEXT') or {'client': {'clientName': 'WEB', 'clientVersion': '2.20240310.01.00', 'hl': 'zh-CN', 'gl': 'US'}}
+ client = context.get('client') or {}
+ return {
+ 'key': key,
+ 'api_key': api_key,
+ 'context': context,
+ 'client_name': client.get('clientName') or 'WEB',
+ 'client_version': client.get('clientVersion') or '2.20240310.01.00',
+ 'referer': search_url,
+ 'pages': [self._extract_videos_from_api(data, 30)],
+ 'next': self._extract_continuation_token(data),
+ }
+
+ def _fetch_search_continuation(self, session):
+ token = session.get('next')
+ api_key = session.get('api_key')
+ if not token or not api_key:
+ return {}
+ url = f'https://www.youtube.com/youtubei/v1/search?key={quote(api_key)}'
+ headers = self.header.copy()
+ headers.update({
+ 'Content-Type': 'application/json',
+ 'Origin': 'https://www.youtube.com',
+ 'Referer': session.get('referer') or 'https://www.youtube.com/',
+ 'X-YouTube-Client-Name': str(self.yt_video._client_name_id(session.get('client_name'))),
+ 'X-YouTube-Client-Version': session.get('client_version') or '2.20240310.01.00',
+ })
+ payload = {'context': session.get('context') or {}, 'continuation': token}
+ r = self.session.post(url, json=payload, headers=headers, timeout=10)
+ r.raise_for_status()
+ return r.json()
+
+ def _extract_continuation_token(self, data):
+ tokens = []
+ def scan(obj):
+ if isinstance(obj, dict):
+ endpoint = obj.get('continuationEndpoint') or {}
+ token = endpoint.get('continuationCommand', {}).get('token')
+ if token:
+ tokens.append(token)
+ renderer = obj.get('continuationItemRenderer') or {}
+ token = renderer.get('continuationEndpoint', {}).get('continuationCommand', {}).get('token')
+ if token:
+ tokens.append(token)
+ for value in obj.values():
+ scan(value)
+ elif isinstance(obj, list):
+ for value in obj:
+ scan(value)
+ scan(data)
+ return tokens[0] if tokens else ''
+
+ def _extract_videos_from_api(self, data, limit=30):
+ videos = []
+ seen = set()
+ def scan(obj):
+ if len(videos) >= limit:
+ return
+ if isinstance(obj, dict):
+ for key in ('videoRenderer', 'compactVideoRenderer', 'gridVideoRenderer'):
+ if key in obj:
+ item = self._parse_renderer(obj[key], is_live=False)
+ if item and item['vod_id'] not in seen:
+ seen.add(item['vod_id'])
+ videos.append(item)
+ for value in obj.values():
+ scan(value)
+ elif isinstance(obj, list):
+ for value in obj:
+ scan(value)
+ scan(data)
+ return videos[:limit]
+
+ def _extract_live_videos_from_api(self, data, limit=30):
+ videos = []
+ seen = set()
+ def scan(obj):
+ if len(videos) >= limit:
+ return
+ if isinstance(obj, dict):
+ for key in ('videoRenderer', 'compactVideoRenderer', 'gridVideoRenderer'):
+ if key in obj:
+ item = self._parse_renderer(obj[key], is_live=True)
+ if item and item['vod_id'] not in seen:
+ seen.add(item['vod_id'])
+ videos.append(item)
+ for value in obj.values():
+ scan(value)
+ elif isinstance(obj, list):
+ for value in obj:
+ scan(value)
+ scan(data)
+ return videos[:limit]
+
+ def _parse_renderer(self, renderer, is_live=False):
+ try:
+ vid = renderer.get('videoId')
+ if not vid:
+ nav = renderer.get('navigationEndpoint') or {}
+ vid = (nav.get('watchEndpoint') or {}).get('videoId')
+ if not vid:
+ return None
+ title_obj = renderer.get('title') or renderer.get('headline') or {}
+ title = title_obj.get('simpleText') or ''.join([x.get('text', '') for x in title_obj.get('runs', [])]) or 'YouTube Video'
+ dur = (renderer.get('lengthText') or {}).get('simpleText') or ''
+ if is_live:
+ remarks = '直播'
+ else:
+ remarks = dur if dur else '视频'
+ return {
+ 'vod_id': vid,
+ 'vod_name': html.unescape(title),
+ 'vod_pic': f'http://127.0.0.1:9978/proxy?do=py&type=image&vid={vid}',
+ 'vod_remarks': remarks
+ }
+ except Exception:
+ return None
+
+ def _extract_videos_fixed(self, html_str, limit=30):
+ data = None
+ match = re.search(r'var ytInitialData = (\{.*?\});', html_str)
+ if match:
+ try:
+ data = json.loads(match.group(1))
+ except Exception:
+ data = None
+ if not data:
+ return []
+ return self._extract_videos_from_api(data, limit)
+
+ def _get_video_title(self, vid):
+ try:
+ r = self.session.get(f'https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v={vid}&format=json', timeout=5)
+ return r.json().get('title') or vid
+ except Exception:
+ return vid
+
+ def _safe_title(self, title):
+ if not title:
+ return 'video'
+ return re.sub(r'[#$@%&!?*|\\/:<>]', ' ', title)[:60]
+
+ def _play_live(self, video_id):
+ try:
+ data = self.yt_live.extract_live(video_id)
+ hls_url = data.get('hls_url') or ''
+ if not hls_url:
+ status = data.get('status') or 'NO_HLS'
+ reason = data.get('reason') or '未获取到直播 HLS 地址'
+ debug_log('_play_live no hls', {'video_id': video_id, 'status': status, 'reason': reason})
+ raise Exception(reason)
+ if self.extendDict.get('hls_probe'):
+ self._probe_hls(video_id, hls_url)
+ play_url = hls_url
+ if self.hls_proxy_enabled:
+ play_url = self._cache_hls_url(hls_url, video_id, 'master')
+ debug_log('return live hls', {'video_id': video_id, 'url_len': len(hls_url), 'status': data.get('status'), 'proxy': self.hls_proxy_enabled})
+ return {
+ 'parse': 0,
+ 'jx': 0,
+ 'url': play_url,
+ 'header': self.header,
+ 'format': 'application/x-mpegURL'
+ }
+ except Exception as e:
+ debug_log('_play_live error', {'video_id': video_id, 'error': repr(e)})
+ return {'parse': 1, 'jx': 1, 'url': f'https://www.youtube.com/embed/{video_id}?autoplay=1'}
+
+ def _play_video(self, video_id, quality):
+ try:
+ data = self.yt_video.extract(video_id)
+ playable = self.yt_video.choose_playable(data['formats'], quality)
+ if playable:
+ audio = self.yt_video.choose_audio(data['formats'])
+ debug_log('selected playable', {'itag': playable.get('itag'), 'client': playable.get('client'), 'mime': playable.get('mimeType'), 'height': playable.get('height'), 'has_n': 'n=' in playable.get('url', ''), 'redirected': bool(playable.get('redirected')), 'ua': (playable.get('headers') or {}).get('User-Agent', '')[:60], 'url_len': len(playable.get('url', ''))})
+ debug_log('selected audio', {'itag': audio.get('itag') if audio else None, 'client': audio.get('client') if audio else None, 'mime': audio.get('mimeType') if audio else None, 'bitrate': audio.get('bitrate') if audio else None})
+ if audio:
+ cache_key = f'yt_{video_id}_{quality}'
+ self.setCache(cache_key, {
+ 'video_url': playable['url'],
+ 'audio_url': audio['url'],
+ 'video_item': playable,
+ 'audio_item': audio,
+ 'duration': data.get('duration') or 0,
+ 'expires': time.time() + 300,
+ })
+ return {'parse': 0, 'jx': 0, 'url': f'http://127.0.0.1:9978/proxy?do=py&type=mpd&vid={video_id}&quality={quality}', 'format': 'application/dash+xml'}
+ debug_log('return direct url', self.yt_video._url_summary(playable.get('url')))
+ headers = self.header.copy()
+ headers.update(playable.get('headers') or {})
+ return {'parse': 0, 'jx': 0, 'url': playable['url'], 'header': headers}
+ raise Exception(f'没有可直接播放的 {quality} 视频流格式')
+ except Exception as e:
+ debug_log('_play_video error', repr(e))
+ return {'parse': 1, 'url': f'https://www.youtube.com/embed/{video_id}?autoplay=1', 'header': json.dumps(self.header)}
+
+ # ------------------ HLS 代理(原 youtubelive) ------------------
+ def _probe_hls(self, video_id, hls_url):
+ try:
+ response = self.session.get(hls_url, headers=self.header, timeout=10)
+ full_text = response.text or ''
+ text = full_text[:5000]
+ lines = [line.strip() for line in full_text.splitlines() if line.strip()][:12]
+ variant_url = self._pick_variant_playlist(hls_url, full_text)
+ debug_log('hls master probe', {
+ 'video_id': video_id,
+ 'status': response.status_code,
+ 'content_type': response.headers.get('content-type'),
+ 'length': len(response.text or ''),
+ 'has_extm3u': text.startswith('#EXTM3U'),
+ 'has_stream_inf': '#EXT-X-STREAM-INF' in text,
+ 'has_media_sequence': '#EXT-X-MEDIA-SEQUENCE' in text,
+ 'variant': bool(variant_url),
+ 'sample': lines,
+ })
+ if variant_url:
+ child = self.session.get(variant_url, headers=self.header, timeout=10)
+ child_text = child.text[:5000] if child.text else ''
+ child_lines = [line.strip() for line in child_text.splitlines() if line.strip()][:12]
+ debug_log('hls variant probe', {
+ 'video_id': video_id,
+ 'status': child.status_code,
+ 'content_type': child.headers.get('content-type'),
+ 'length': len(child.text or ''),
+ 'has_extm3u': child_text.startswith('#EXTM3U'),
+ 'has_media_sequence': '#EXT-X-MEDIA-SEQUENCE' in child_text,
+ 'has_segments': bool(re.search(r'^[^#].+', child_text, re.M)),
+ 'sample': child_lines,
+ })
+ except Exception as e:
+ debug_log('hls probe error', {'video_id': video_id, 'error': repr(e)})
+
+ def _pick_variant_playlist(self, base_url, text):
+ lines = [line.strip() for line in (text or '').splitlines()]
+ best_score = -1
+ best_url = ''
+ for index, line in enumerate(lines):
+ if not line.startswith('#EXT-X-STREAM-INF'):
+ continue
+ score = 0
+ bandwidth = re.search(r'BANDWIDTH=(\d+)', line)
+ resolution = re.search(r'RESOLUTION=(\d+)x(\d+)', line)
+ if bandwidth:
+ score += int(bandwidth.group(1))
+ if resolution:
+ score += int(resolution.group(1)) * int(resolution.group(2))
+ for next_line in lines[index + 1:]:
+ if not next_line or next_line.startswith('#'):
+ continue
+ if score > best_score:
+ best_score = score
+ best_url = urljoin(base_url, next_line)
+ break
+ return best_url
+
+ HLS_TTL = {'master': 6 * 3600, 'playlist': 6 * 3600, 'media': 120, 'media_retry': 120}
+
+ def _hls_ttl(self, kind):
+ return self.HLS_TTL.get(kind, 180)
+
+ def _prune_hls_cache(self):
+ now = time.time()
+ expired = [k for k, v in self.hls_url_cache.items() if v.get('expires', 0) < now]
+ for k in expired:
+ self.hls_url_cache.pop(k, None)
+
+ def _cache_hls_url(self, target_url, video_id='', kind='media'):
+ self._prune_hls_cache()
+ self._hls_key_seq += 1
+ key = f'{int(time.time() * 1000)}_{self._hls_key_seq}'
+ self.hls_url_cache[key] = {
+ 'url': target_url,
+ 'video_id': video_id,
+ 'kind': kind,
+ 'expires': time.time() + self._hls_ttl(kind),
+ }
+ return f'http://127.0.0.1:9978/proxy?do=py&type=hls&key={quote(key)}'
+
+ def _hls_headers(self, target_url, kind=None):
+ if kind == 'media_retry':
+ return {
+ 'User-Agent': 'com.google.android.youtube/21.02.35 (Linux; U; Android 11) gzip',
+ 'Accept': '*/*',
+ }
+ headers = self.header.copy()
+ headers['Accept'] = '*/*'
+ if kind in ('master', 'playlist'):
+ headers['Origin'] = 'https://www.youtube.com'
+ headers['Referer'] = 'https://www.youtube.com/'
+ elif kind == 'media':
+ headers['User-Agent'] = 'com.google.android.youtube/21.02.35 (Linux; U; Android 11) gzip'
+ headers.pop('Origin', None)
+ headers.pop('Referer', None)
+ return headers
+
+ def _rewrite_m3u8(self, text, base_url, video_id=''):
+ output = []
+ for line in (text or '').splitlines():
+ stripped = line.strip()
+ if not stripped:
+ output.append(line)
+ continue
+ if stripped.startswith('#'):
+ output.append(self._rewrite_m3u8_tag(line, base_url, video_id))
+ continue
+ absolute = urljoin(base_url, stripped)
+ kind = 'playlist' if stripped.endswith('.m3u8') or '/hls_playlist/' in stripped else 'media'
+ output.append(self._cache_hls_url(absolute, video_id, kind))
+ return '\n'.join(output) + '\n'
+
+ def _rewrite_m3u8_tag(self, line, base_url, video_id=''):
+ def replace_uri(match):
+ raw_url = match.group(1)
+ absolute = urljoin(base_url, raw_url)
+ proxied = self._cache_hls_url(absolute, video_id, 'media')
+ return f'URI="{proxied}"'
+ return re.sub(r'URI="([^"]+)"', replace_uri, line)
+
+ # 本地代理
+ def localProxy(self, params):
+ if params.get('do') != 'py':
+ return None
+ typ = params.get('type')
+ if typ == 'mpd':
+ return self._proxy_mpd(params)
+ if typ == 'media':
+ return self._proxy_media(params)
+ if typ == 'single':
+ return self._proxy_single(params)
+ if typ == 'image':
+ return self._proxy_image(params)
+ if typ == 'hls':
+ return self._proxy_hls(params)
+ return None
+
+ def _proxy_image(self, params):
+ vid = params.get('vid')
+ if not vid:
+ return [400, 'text/plain', '缺少 video id']
+ quality = params.get('quality', 'hqdefault')
+ img_url = f'https://i.ytimg.com/vi/{vid}/{quality}.jpg'
+ try:
+ r = self.session.get(img_url, timeout=10)
+ if r.status_code == 200:
+ content_type = r.headers.get('content-type', 'image/jpeg')
+ return [200, content_type, r.content, {'Cache-Control': 'max-age=86400'}]
+ else:
+ return [404, 'text/plain', f'图片不存在 ({r.status_code})']
+ except Exception as e:
+ return [500, 'text/plain', f'代理图片失败: {str(e)}']
+
+ def _proxy_single(self, params):
+ vid = params.get('vid')
+ data = self.getCache(f'yt_single_{vid}') if vid else None
+ if not data:
+ return [404, 'text/plain', '播放缓存已过期或不存在']
+ target_url = data.get('url')
+ if not target_url:
+ return [404, 'text/plain', '播放地址不存在']
+ headers = (data.get('headers') or self.header).copy()
+ range_header = params.get('range') or params.get('Range')
+ if range_header:
+ headers['Range'] = range_header
+ try:
+ r = self.session.get(target_url, headers=headers, stream=True, timeout=30)
+ content_type = r.headers.get('content-type', 'video/mp4')
+ resp_headers = {
+ 'Content-Type': content_type,
+ 'Accept-Ranges': 'bytes',
+ 'Cache-Control': 'no-cache',
+ }
+ if r.headers.get('content-range'):
+ resp_headers['Content-Range'] = r.headers.get('content-range')
+ if r.headers.get('content-length'):
+ resp_headers['Content-Length'] = r.headers.get('content-length')
+ return [r.status_code, content_type, r.content, resp_headers]
+ except Exception as e:
+ return [500, 'text/plain', f'代理播放失败: {str(e)}']
+
+ def _proxy_mpd(self, params):
+ vid = params.get('vid')
+ quality = params.get('quality') or '1080p'
+ data = self.getCache(f'yt_{vid}_{quality}') if vid else None
+ if not data:
+ return [404, 'text/plain', '视频缓存已过期或不存在']
+ video_url = data.get('video_url')
+ audio_url = data.get('audio_url')
+ duration = data.get('duration') or 'PT0S'
+ video_item = data.get('video_item') or {}
+ audio_item = data.get('audio_item') or {}
+ media_base = f'http://127.0.0.1:9978/proxy?do=py&type=media&vid={vid}&quality={quality}'
+ duration_pt = f"PT{int(duration or 0)}S"
+ video_mime = (video_item.get('mimeType') or 'video/webm').split(';')[0]
+ audio_mime = (audio_item.get('mimeType') or 'audio/mp4').split(';')[0]
+ video_init = video_item.get('initRange') or {}
+ video_index = video_item.get('indexRange') or {}
+ audio_init = audio_item.get('initRange') or {}
+ audio_index = audio_item.get('indexRange') or {}
+ mpd = f'''
+
+
+
+
+ {html.escape(media_base + '&track=video')}
+
+
+
+'''
+ if audio_url:
+ mpd += f'''
+
+ {html.escape(media_base + '&track=audio')}
+
+
+
+'''
+ mpd += ' \n'
+ return [200, 'application/dash+xml', mpd]
+
+ def _proxy_media(self, params):
+ vid = params.get('vid')
+ quality = params.get('quality') or '1080p'
+ track = params.get('track')
+ data = self.getCache(f'yt_{vid}_{quality}') if vid else None
+ if not data or track not in ('video', 'audio'):
+ return [404, 'text/plain', '媒体不存在']
+ target_url = data.get('video_url') if track == 'video' else data.get('audio_url')
+ if not target_url:
+ return [404, 'text/plain', f'{track} 流不存在']
+ media_item = data.get('video_item') if track == 'video' else data.get('audio_item')
+ headers = self.header.copy()
+ headers.update((media_item or {}).get('headers') or {})
+ range_header = params.get('range') or params.get('Range')
+ if range_header:
+ headers['Range'] = range_header
+ try:
+ r = self.session.get(target_url, headers=headers, stream=True, timeout=30)
+ content_type = r.headers.get('content-type', 'application/octet-stream')
+ resp_headers = {'Content-Type': content_type, 'Accept-Ranges': 'bytes', 'Cache-Control': 'no-cache'}
+ if r.headers.get('content-range'):
+ resp_headers['Content-Range'] = r.headers.get('content-range')
+ if r.headers.get('content-length'):
+ resp_headers['Content-Length'] = r.headers.get('content-length')
+ return [r.status_code, content_type, r.content, resp_headers]
+ except Exception as e:
+ return [500, 'text/plain', f'代理媒体失败: {str(e)}']
+
+ def _proxy_hls(self, params):
+ key = params.get('key') or ''
+ item = self.hls_url_cache.get(key)
+ if not item or item.get('expires', 0) < time.time():
+ debug_log('hls proxy missing', {'key': key})
+ return [404, 'text/plain', 'HLS 缓存已过期']
+ item['expires'] = time.time() + self._hls_ttl(item.get('kind'))
+ target_url = item.get('url') or ''
+ try:
+ headers = self._hls_headers(target_url, item.get('kind'))
+ response = self.session.get(target_url, headers=headers, stream=True, timeout=15)
+ retried = False
+ if item.get('kind') == 'media' and response.status_code == 403:
+ retry_headers = self._hls_headers(target_url, 'media_retry')
+ response.close()
+ retried = True
+ response = self.session.get(target_url, headers=retry_headers, stream=True, timeout=15)
+ content_type = response.headers.get('content-type') or ''
+ is_m3u8 = item.get('kind') in ('master', 'playlist') or 'mpegurl' in content_type.lower() or target_url.split('?')[0].endswith('.m3u8')
+ debug_log('hls proxy response', {
+ 'key': key,
+ 'kind': item.get('kind'),
+ 'status': response.status_code,
+ 'content_type': content_type,
+ 'is_m3u8': is_m3u8,
+ 'url_len': len(target_url),
+ 'path_tail': target_url.split('?')[0][-80:],
+ 'retried': retried,
+ })
+ if is_m3u8:
+ text = response.text
+ rewritten = self._rewrite_m3u8(text, target_url, item.get('video_id') or '')
+ return [response.status_code, 'application/vnd.apple.mpegurl', rewritten, {'Content-Type': 'application/vnd.apple.mpegurl', 'Cache-Control': 'no-cache'}]
+ resp_headers = {'Content-Type': content_type or 'application/octet-stream', 'Cache-Control': 'no-cache'}
+ if response.headers.get('content-length'):
+ resp_headers['Content-Length'] = response.headers.get('content-length')
+ return [response.status_code, content_type or 'application/octet-stream', response.content, resp_headers]
+ except Exception as e:
+ debug_log('hls proxy error', {'key': key, 'error': repr(e)})
+ return [500, 'text/plain', f'HLS 代理失败: {str(e)}']
+
+ def destroy(self):
+ try:
+ self.session.close()
+ except Exception:
+ pass
\ No newline at end of file
diff --git a/cluntop_tvbox/py/ytbzb.py b/cluntop_tvbox/py/ytbzb.py
new file mode 100644
index 00000000..9ee861c8
--- /dev/null
+++ b/cluntop_tvbox/py/ytbzb.py
@@ -0,0 +1,795 @@
+# -*- coding: utf-8 -*-
+"""
+YouTube 台湾新闻直播爬虫(最终修复版) - 扩展频道与动态配置
+- 支持从 JSON 或 TXT(M3U风格)加载频道列表
+- 支持 proxy 数组自动探测
+- 保留分组信息 (group-title)
+- 强制使用已配置代理请求 M3U8/TS
+- 修复 TXT 分组识别
+"""
+
+import re
+import sys
+import json
+import html
+import time
+import base64
+import os
+import requests
+from urllib.parse import quote, unquote, urljoin
+from base.spider import Spider
+from requests.adapters import HTTPAdapter
+from urllib3.util.retry import Retry
+
+sys.path.append('..')
+
+# DEBUG_LOG = '/sdcard/Download/yt_tw_news_debug.log'
+
+def debug_log(message, data=None):
+ try:
+ line = f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] {message}"
+ if data is not None:
+ if isinstance(data, (dict, list)):
+ line += ' ' + json.dumps(data, ensure_ascii=False, default=str)
+ else:
+ line += ' ' + str(data)
+ with open(DEBUG_LOG, 'a', encoding='utf-8') as f:
+ f.write(line + '\n')
+ except Exception:
+ pass
+
+# ==================== YouTubeLiveLite(原版不变) ====================
+class YouTubeLiveLite:
+ def __init__(self, session, headers=None, config=None):
+ self.session = session
+ self.headers = headers or {}
+ self.config = config or {}
+ self.cache = {}
+ self.cache_ttl = int(self.config.get('live_cache_ttl') or 45)
+
+ @staticmethod
+ def extract_video_id(text):
+ text = str(text or '').strip()
+ for pattern in [
+ r'(?:v=|/v/|/embed/|/shorts/|youtu\.be/)([0-9A-Za-z_-]{11})',
+ r'^([0-9A-Za-z_-]{11})$',
+ ]:
+ match = re.search(pattern, text)
+ if match:
+ return match.group(1)
+ raise Exception('无法识别 YouTube 视频 ID')
+
+ def extract_live(self, url_or_id):
+ video_id = self.extract_video_id(url_or_id)
+ now = time.time()
+ cached = self.cache.get(video_id)
+ if cached and cached.get('expires', 0) > now:
+ debug_log('live cache hit', {'video_id': video_id, 'ttl': int(cached.get('expires', 0) - now)})
+ return cached.get('data')
+
+ watch_url = f'https://www.youtube.com/watch?v={video_id}'
+ debug_log('live extract start', {'input': url_or_id, 'video_id': video_id})
+ response = self._get(watch_url)
+ page = response.text
+ player_response = self._extract_initial_player_response(page) or {}
+ ytcfg = self._extract_ytcfg(page) or {}
+ api_key = ytcfg.get('INNERTUBE_API_KEY') or self._search(r'"INNERTUBE_API_KEY":"([^"]+)"', page)
+ visitor_data = self._extract_visitor_data(ytcfg, player_response)
+ status_obj = player_response.get('playabilityStatus') or {}
+ streaming = player_response.get('streamingData') or {}
+ details = player_response.get('videoDetails') or {}
+
+ debug_log('live page parsed', {
+ 'status': status_obj.get('status'),
+ 'reason': status_obj.get('reason'),
+ 'is_live': details.get('isLiveContent'),
+ 'has_hls': bool(streaming.get('hlsManifestUrl')),
+ 'has_api_key': bool(api_key),
+ 'has_visitor': bool(visitor_data),
+ })
+
+ page_hls_url = streaming.get('hlsManifestUrl') or ''
+ hls_source = 'page' if page_hls_url else ''
+ api_data = None
+ if api_key:
+ api_data = self._call_player_api(video_id, api_key, ytcfg, watch_url, visitor_data)
+ if api_data:
+ api_streaming = api_data.get('streamingData') or {}
+ api_details = api_data.get('videoDetails') or {}
+ api_hls_url = api_streaming.get('hlsManifestUrl') or ''
+ if api_hls_url:
+ streaming = api_streaming
+ hls_source = api_data.get('_client_name') or 'api'
+ elif not page_hls_url and api_streaming:
+ streaming = api_streaming
+ hls_source = api_data.get('_client_name') or 'api_no_hls'
+ if api_details:
+ details = api_details
+ status_obj = api_data.get('playabilityStatus') or status_obj
+ if not (streaming.get('hlsManifestUrl') or '') and page_hls_url:
+ streaming = dict(streaming or {})
+ streaming['hlsManifestUrl'] = page_hls_url
+ hls_source = 'page_fallback'
+
+ hls_url = streaming.get('hlsManifestUrl') or ''
+ is_live = bool(details.get('isLiveContent') or hls_url)
+ status = status_obj.get('status') or ''
+ reason = status_obj.get('reason') or ''
+ title = details.get('title') or video_id
+
+ data = {
+ 'id': video_id,
+ 'title': title,
+ 'is_live': is_live,
+ 'status': status,
+ 'reason': reason,
+ 'hls_url': hls_url,
+ 'duration': int(details.get('lengthSeconds') or 0),
+ }
+ debug_log('live extract result', {
+ 'video_id': video_id,
+ 'status': status,
+ 'is_live': is_live,
+ 'has_hls': bool(hls_url),
+ 'hls_source': hls_source,
+ 'duration': data.get('duration'),
+ })
+ self.cache[video_id] = {'data': data, 'expires': time.time() + self.cache_ttl}
+ return data
+
+ def _get(self, url, **kwargs):
+ headers = self.headers.copy()
+ headers.update(kwargs.pop('headers', {}) or {})
+ response = self.session.get(url, headers=headers, timeout=kwargs.pop('timeout', 30), **kwargs)
+ response.raise_for_status()
+ return response
+
+ def _post_json(self, url, payload, headers=None):
+ final_headers = self.headers.copy()
+ final_headers.update({'Content-Type': 'application/json', 'Origin': 'https://www.youtube.com'})
+ if headers:
+ final_headers.update({k: v for k, v in headers.items() if v})
+ response = self.session.post(url, json=payload, headers=final_headers, timeout=30)
+ response.raise_for_status()
+ return response.json()
+
+ def _call_player_api(self, video_id, api_key, ytcfg, referer, visitor_data=None):
+ context = ytcfg.get('INNERTUBE_CONTEXT') or {
+ 'client': {'clientName': 'WEB', 'clientVersion': '2.20240310.01.00', 'hl': 'en', 'gl': 'US'}
+ }
+ clients = [
+ {'client': {'clientName': 'ANDROID', 'clientVersion': '21.02.35', 'androidSdkVersion': 30, 'userAgent': 'com.google.android.youtube/21.02.35 (Linux; U; Android 11) gzip', 'osName': 'Android', 'osVersion': '11', 'hl': 'en', 'gl': 'US'}},
+ {'client': {'clientName': 'IOS', 'clientVersion': '21.02.3', 'deviceMake': 'Apple', 'deviceModel': 'iPhone16,2', 'userAgent': 'com.google.ios.youtube/21.02.3 (iPhone16,2; U; CPU iOS 18_3_2 like Mac OS X;)', 'osName': 'iPhone', 'osVersion': '18.3.2.22D82', 'hl': 'en', 'gl': 'US'}},
+ {'client': {'clientName': 'MWEB', 'clientVersion': '2.20260115.01.00', 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1', 'hl': 'en', 'gl': 'US'}},
+ context,
+ ]
+ for ctx in clients:
+ client = ctx.get('client') or {}
+ client_name = client.get('clientName') or 'WEB'
+ try:
+ url = f'https://www.youtube.com/youtubei/v1/player?key={quote(api_key)}&prettyPrint=false'
+ headers = {
+ 'Referer': referer,
+ 'X-YouTube-Client-Name': str(self._client_name_id(client_name)),
+ 'X-YouTube-Client-Version': client.get('clientVersion') or '',
+ }
+ if visitor_data:
+ headers['X-Goog-Visitor-Id'] = visitor_data
+ if client.get('userAgent'):
+ headers['User-Agent'] = client.get('userAgent')
+ payload = {
+ 'context': ctx,
+ 'videoId': video_id,
+ 'contentCheckOk': True,
+ 'racyCheckOk': True,
+ }
+ data = self._post_json(url, payload, headers=headers)
+ streaming = data.get('streamingData') or {}
+ status = (data.get('playabilityStatus') or {}).get('status')
+ debug_log('live api client', {
+ 'client': client_name,
+ 'status': status,
+ 'has_hls': bool(streaming.get('hlsManifestUrl')),
+ 'has_streaming': bool(streaming),
+ })
+ if streaming.get('hlsManifestUrl'):
+ data['_client_name'] = client_name
+ return data
+ except Exception as e:
+ debug_log('live api client error', {'client': client_name, 'error': repr(e)})
+ return None
+
+ def _extract_visitor_data(self, ytcfg, player_response):
+ return (
+ self.config.get('visitor_data')
+ or ytcfg.get('VISITOR_DATA')
+ or (((ytcfg.get('INNERTUBE_CONTEXT') or {}).get('client') or {}).get('visitorData'))
+ or ((player_response.get('responseContext') or {}).get('visitorData'))
+ )
+
+ def _extract_ytcfg(self, text):
+ match = re.search(r'ytcfg\.set\s*\(\s*({.+?})\s*\)\s*;', text or '', re.S)
+ if not match:
+ return None
+ try:
+ return json.loads(match.group(1))
+ except Exception:
+ return None
+
+ def _extract_initial_player_response(self, text):
+ return self._extract_json_after(text, 'ytInitialPlayerResponse')
+
+ def _extract_json_after(self, text, marker):
+ pos = (text or '').find(marker)
+ if pos < 0:
+ return None
+ start = text.find('{', pos)
+ if start < 0:
+ return None
+ depth = 0
+ in_str = None
+ escape = False
+ for index in range(start, len(text)):
+ char = text[index]
+ if escape:
+ escape = False
+ continue
+ if char == '\\':
+ escape = True
+ continue
+ if in_str:
+ if char == in_str:
+ in_str = None
+ continue
+ if char in ('"', "'"):
+ in_str = char
+ continue
+ if char == '{':
+ depth += 1
+ elif char == '}':
+ depth -= 1
+ if depth == 0:
+ try:
+ return json.loads(text[start:index + 1])
+ except Exception:
+ return None
+ return None
+
+ @staticmethod
+ def _search(pattern, text, default=None):
+ match = re.search(pattern, text or '', re.S)
+ return match.group(1) if match else default
+
+ def _client_name_id(self, client_name):
+ return {
+ 'WEB': 1,
+ 'MWEB': 2,
+ 'ANDROID': 3,
+ 'IOS': 5,
+ 'TVHTML5': 7,
+ 'ANDROID_VR': 28,
+ 'WEB_EMBEDDED_PLAYER': 56,
+ 'WEB_REMIX': 67,
+ }.get(client_name, 1)
+
+# ==================== 频道定义(默认) ====================
+DEFAULT_CHANNELS = [
+ {"id": "CTI", "name": "中天新聞", "url": "https://m.youtube.com/@中天電視CtiTv/streams/1"},
+ {"id": "TVBS", "name": "TVBS新聞", "url": "https://m.youtube.com/@TVBSNEWS01/streams/1"},
+ {"id": "EBC", "name": "東森新聞", "url": "https://m.youtube.com/@newsebc/streams/1"},
+ {"id": "FTV", "name": "民視新聞", "url": "https://m.youtube.com/@FTV_News/streams/1"},
+]
+
+# ==================== Spider 类 ====================
+class Spider(Spider):
+ def getName(self):
+ return "YouTube台湾新闻直播"
+
+ def init(self, extend):
+ try:
+ self.extendDict = json.loads(extend) if extend else {}
+ except:
+ self.extendDict = {}
+
+ # 创建 Session 并配置重试策略
+ self.session = requests.Session()
+ retry = Retry(total=2, backoff_factor=0.5, status_forcelist=[429, 500, 502, 503, 504])
+ adapter = HTTPAdapter(max_retries=retry, pool_connections=5, pool_maxsize=10)
+ self.session.mount('http://', adapter)
+ self.session.mount('https://', adapter)
+
+ # 请求头
+ self.session.headers.update({
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
+ 'Accept-Language': 'zh-TW,zh;q=0.9,en;q=0.8',
+ 'Referer': 'https://www.youtube.com/'
+ })
+
+ # ----- 代理配置:支持数组自动探测 -----
+ self.proxy_str = None
+ self._proxy_configured = False # 标记是否使用了有效代理
+ proxy_val = self.extendDict.get('proxy')
+
+ if proxy_val is not None:
+ if isinstance(proxy_val, list):
+ found = False
+ for p in proxy_val:
+ p_norm = self._normalize_proxy_url(p)
+ if p_norm:
+ test_proxies = {'http': p_norm, 'https': p_norm}
+ try:
+ r = requests.get('https://www.youtube.com', proxies=test_proxies, timeout=2)
+ if r.status_code < 400:
+ self.session.proxies = test_proxies
+ self.proxy_str = p_norm.replace('http://', '').replace('https://', '')
+ self._proxy_configured = True
+ debug_log('使用用户列表代理', {'proxy': p_norm})
+ found = True
+ break
+ except Exception:
+ continue
+ if not found:
+ self.session.proxies = {}
+ self.proxy_str = ''
+ self._proxy_configured = False
+ debug_log('用户列表代理均不可用,回退系统代理')
+ elif isinstance(proxy_val, str):
+ p_norm = self._normalize_proxy_url(proxy_val)
+ if p_norm:
+ self.session.proxies = {'http': p_norm, 'https': p_norm}
+ self.proxy_str = p_norm.replace('http://', '').replace('https://', '')
+ self._proxy_configured = True
+ debug_log('使用 ext 传入代理(字符串)', {'proxy': p_norm})
+ else:
+ self._auto_detect_proxy()
+ elif isinstance(proxy_val, dict):
+ proxies = {}
+ for k, v in proxy_val.items():
+ if k in ('http', 'https') and v:
+ v = self._normalize_proxy_url(v)
+ if v:
+ proxies[k] = v
+ if proxies:
+ self.session.proxies = proxies
+ self.proxy_str = (proxies.get('https') or proxies.get('http') or '').replace('http://', '').replace('https://', '')
+ self._proxy_configured = True
+ debug_log('使用 ext 传入的字典代理', proxies)
+ else:
+ self._auto_detect_proxy()
+ else:
+ self._auto_detect_proxy()
+ else:
+ self._auto_detect_proxy()
+
+ # 初始化 YouTube 提取器
+ self.yt = YouTubeLiveLite(self.session, self.session.headers, {})
+ # 缓存
+ self.video_cache = {}
+ self.fail_cache = {}
+ self.m3u8_cache = {}
+ self.video_ttl = 300
+ self.m3u8_ttl = 15
+ self.fail_ttl = 120
+
+ # ----- 频道列表加载:支持 JSON 或 TXT(本地/远程) -----
+ self.channels = DEFAULT_CHANNELS.copy()
+ custom = self.extendDict.get('channels')
+ if custom:
+ loaded = False
+ if isinstance(custom, list):
+ if all(isinstance(c, dict) and 'id' in c and 'name' in c and 'url' in c for c in custom):
+ self.channels = custom
+ loaded = True
+ debug_log("使用自定义频道列表(直接传入JSON列表)", {"count": len(self.channels)})
+ else:
+ debug_log("自定义频道列表格式无效,使用默认列表")
+ elif isinstance(custom, str):
+ # ---------- 远程 URL ----------
+ if custom.startswith('http://') or custom.startswith('https://'):
+ try:
+ resp = self.session.get(custom, timeout=10)
+ if resp.status_code == 200:
+ # 强制使用 UTF-8 解码
+ try:
+ txt_data = resp.content.decode('utf-8')
+ except UnicodeDecodeError:
+ txt_data = resp.content.decode('utf-8', errors='ignore')
+ # 先尝试 JSON
+ try:
+ data = json.loads(txt_data)
+ if isinstance(data, list) and all(isinstance(c, dict) and 'id' in c and 'name' in c and 'url' in c for c in data):
+ self.channels = data
+ loaded = True
+ debug_log("从远程 URL 加载频道列表(JSON)", {"url": custom, "count": len(self.channels)})
+ else:
+ debug_log("远程 JSON 数据格式无效,尝试 TXT 解析", {"url": custom})
+ except Exception as e:
+ debug_log("远程 JSON 解析失败,尝试 TXT 解析", {"url": custom, "error": repr(e)})
+ # 如果 JSON 未成功加载,尝试 TXT
+ if not loaded:
+ try:
+ channels, group = self._parse_txt_channels(txt_data)
+ if channels:
+ self.channels = channels
+ loaded = True
+ self._current_group = group
+ debug_log("从远程 URL 加载频道列表(TXT)", {"url": custom, "count": len(self.channels), "group": group})
+ else:
+ debug_log("远程 TXT 解析失败,无有效频道", {"url": custom})
+ except Exception as e2:
+ debug_log("远程 TXT 解析异常", {"url": custom, "error": repr(e2)})
+ else:
+ debug_log("远程请求失败", {"url": custom, "status": resp.status_code})
+ except Exception as e:
+ debug_log("远程加载失败", {"url": custom, "error": repr(e)})
+ # ---------- 本地文件 ----------
+ else:
+ script_dir = os.path.dirname(os.path.abspath(__file__))
+ if custom.startswith('./'):
+ file_path = os.path.join(script_dir, custom[2:])
+ else:
+ file_path = custom
+ if file_path.lower().endswith('.txt'):
+ try:
+ with open(file_path, 'r', encoding='utf-8') as f:
+ txt_content = f.read()
+ channels, group = self._parse_txt_channels(txt_content)
+ if channels:
+ self.channels = channels
+ loaded = True
+ self._current_group = group
+ debug_log("从本地 TXT 文件加载频道列表", {"path": file_path, "count": len(self.channels), "group": group})
+ else:
+ debug_log("TXT 文件内容无效", {"path": file_path})
+ except Exception as e:
+ debug_log("读取本地 TXT 失败", {"path": file_path, "error": repr(e)})
+ else:
+ # JSON 文件
+ try:
+ with open(file_path, 'r', encoding='utf-8') as f:
+ data = json.load(f)
+ if isinstance(data, list) and all(isinstance(c, dict) and 'id' in c and 'name' in c and 'url' in c for c in data):
+ self.channels = data
+ loaded = True
+ debug_log("从本地 JSON 文件加载频道列表", {"path": file_path, "count": len(self.channels)})
+ else:
+ debug_log("JSON 文件内容格式无效", {"path": file_path})
+ except Exception as e:
+ debug_log("读取本地 JSON 失败", {"path": file_path, "error": repr(e)})
+ else:
+ debug_log("channels 字段类型不支持,使用默认列表")
+ if not loaded:
+ debug_log("使用默认频道列表", {"count": len(self.channels)})
+ else:
+ debug_log("未配置 channels,使用默认列表", {"count": len(self.channels)})
+
+ debug_log("Spider init", {"channels": len(self.channels)})
+
+ def _parse_txt_channels(self, content):
+ """解析 TXT 格式(M3U风格),正确识别 #genre# 分组"""
+ lines = content.splitlines()
+ channels = []
+ current_group = "油管直播" # 默认组名
+ seen = set()
+
+ for line in lines:
+ line = line.strip()
+ if not line:
+ continue
+
+ # 检测分组行:格式为 "分组名,#genre#"
+ if '#genre#' in line:
+ parts = line.split(',')
+ if len(parts) >= 1:
+ group_name = parts[0].strip()
+ # 如果开头有 #,去掉
+ if group_name.startswith('#'):
+ group_name = group_name[1:].strip()
+ if group_name:
+ current_group = group_name
+ continue
+
+ # 跳过其他 # 开头的注释行(但不是 #genre#)
+ if line.startswith('#'):
+ continue
+
+ # 解析节目行:名称,URL
+ if ',' in line:
+ parts = line.split(',', 1)
+ name = parts[0].strip()
+ url = parts[1].strip()
+ if not url or not name:
+ continue
+ try:
+ video_id = YouTubeLiveLite.extract_video_id(url)
+ except:
+ # 无法提取ID,生成唯一ID
+ video_id = f"unknown_{abs(hash(url))}"
+ # 保证id唯一
+ base_id = video_id
+ if base_id in seen:
+ idx = 1
+ while f"{base_id}_{idx}" in seen:
+ idx += 1
+ video_id = f"{base_id}_{idx}"
+ seen.add(video_id)
+ channels.append({
+ 'id': video_id,
+ 'name': name,
+ 'url': url,
+ 'group': current_group
+ })
+ return channels, current_group
+
+ def _normalize_proxy_url(self, url):
+ if not url:
+ return ''
+ url = url.strip()
+ if not re.match(r'^[a-zA-Z]+://', url):
+ url = 'http://' + url
+ return url
+
+ def _auto_detect_proxy(self):
+ """内置代理列表探测"""
+ proxy_list = [
+ "http://127.0.0.1:2080",
+ "http://127.0.0.1:7890",
+ "http://127.0.0.1:10809",
+ "http://127.0.0.1:20172",
+ "http://127.0.0.1:10172",
+ "http://127.0.0.1:7891",
+ "http://127.0.0.1:10808",
+ "http://127.0.0.1:1087",
+ "http://127.0.0.1:3128",
+ "http://127.0.0.1:1080",
+ "http://127.0.0.1:8080",
+ "http://127.0.0.1:9090"
+ ]
+ for p in proxy_list:
+ try:
+ test_proxies = {'http': p, 'https': p}
+ r = requests.get('https://www.youtube.com', proxies=test_proxies, timeout=2)
+ if r.status_code < 400:
+ self.session.proxies = test_proxies
+ self.proxy_str = p.replace('http://', '').replace('https://', '')
+ self._proxy_configured = True
+ debug_log('内置代理探测成功', {'proxy': p})
+ return
+ except Exception:
+ continue
+ self.session.proxies = {}
+ self.proxy_str = ''
+ self._proxy_configured = False
+ debug_log('所有内置代理不可用,回退到系统/全局代理')
+
+ def destroy(self):
+ if self.session:
+ self.session.close()
+ debug_log("Spider destroyed")
+
+ def liveContent(self, url):
+ lines = ['#EXTM3U']
+ for ch in self.channels:
+ proxy_url = f"http://127.0.0.1:9978/proxy?do=py&type=youtube_live&channel={ch['id']}"
+ # 安全处理显示名称中的特殊字符
+ name = ch["name"].replace('"', '\\"').replace(',', '\\,')
+ group_attr = f' group-title="{ch.get("group", "油管直播")}"' if ch.get("group") else ''
+ lines.append(f'#EXTINF:-1 tvg-id="{ch["id"]}" tvg-name="{name}"{group_attr},{name}')
+ lines.append(proxy_url)
+ return '\n'.join(lines)
+
+ def localProxy(self, params):
+ t = params.get('type')
+ if t == 'youtube_live':
+ return self._handle_live(params)
+ elif t == 'ts':
+ return self._handle_ts(params)
+ return [404, "text/plain", "未知请求"]
+
+ def _handle_live(self, params):
+ channel_id = params.get('channel')
+ if not channel_id:
+ return self._error_response("缺少频道ID")
+
+ now = time.time()
+
+ if channel_id in self.fail_cache and self.fail_cache[channel_id] > now:
+ debug_log("Skip failed channel (cache)", {"channel": channel_id})
+ return self._error_response("该频道暂时无法获取直播流")
+
+ cached_m3u8 = self.m3u8_cache.get(channel_id)
+ if cached_m3u8 and cached_m3u8.get('expires', 0) > now:
+ debug_log("M3U8 cache hit", {"channel": channel_id})
+ return [200, "application/vnd.apple.mpegurl", cached_m3u8['content']]
+
+ video_info = self.video_cache.get(channel_id)
+ if not video_info or video_info.get('expires', 0) <= now:
+ debug_log("Refreshing video info", {"channel": channel_id})
+ info = self._get_live_video_info(channel_id)
+ if not info:
+ self.fail_cache[channel_id] = now + self.fail_ttl
+ return self._error_response("无法获取直播视频")
+ self.video_cache[channel_id] = {
+ 'video_id': info['video_id'],
+ 'hls_url': info['hls_url'],
+ 'expires': now + self.video_ttl
+ }
+ self.fail_cache.pop(channel_id, None)
+ video_info = self.video_cache[channel_id]
+
+ m3u8_content = self._fetch_and_rewrite_m3u8(video_info['hls_url'], channel_id)
+ if not m3u8_content:
+ self.fail_cache[channel_id] = now + self.fail_ttl
+ return self._error_response("获取 M3U8 失败")
+
+ self.m3u8_cache[channel_id] = {
+ 'content': m3u8_content,
+ 'expires': now + self.m3u8_ttl
+ }
+ return [200, "application/vnd.apple.mpegurl", m3u8_content]
+
+ def _handle_ts(self, params):
+ b64_url = params.get('url', '')
+ if not b64_url:
+ return self._error_response("缺少 TS URL")
+ try:
+ ts_url = self._b64_decode(b64_url)
+ except:
+ return self._error_response("TS URL 解码失败")
+
+ try:
+ # 强制使用已配置的代理(如果有)
+ resp = self.session.get(ts_url, headers={
+ 'User-Agent': 'com.google.android.youtube/21.02.35 (Linux; U; Android 11) gzip',
+ 'Accept': '*/*',
+ 'Referer': 'https://www.youtube.com/',
+ }, timeout=30)
+ if resp.status_code != 200:
+ return self._error_response(f"TS 请求失败 {resp.status_code}")
+ return [200, "video/MP2T", resp.content, {
+ 'Content-Type': 'video/MP2T',
+ 'Content-Length': str(len(resp.content)),
+ 'Cache-Control': 'no-cache'
+ }]
+ except Exception as e:
+ debug_log("TS proxy error", {"url": ts_url, "error": repr(e)})
+ return self._error_response(f"TS 代理异常: {str(e)}")
+
+ def _get_live_video_info(self, channel_id):
+ ch = next((c for c in self.channels if c['id'] == channel_id), None)
+ if not ch:
+ return None
+
+ url = ch['url']
+
+ if 'watch?v=' in url or 'youtu.be/' in url:
+ try:
+ video_id = YouTubeLiveLite.extract_video_id(url)
+ except Exception as e:
+ debug_log("提取视频ID失败", {"url": url, "error": repr(e)})
+ return None
+ try:
+ data = self.yt.extract_live(video_id)
+ if data.get('is_live') and data.get('hls_url'):
+ debug_log("直接视频链接 - 获取直播成功", {"video_id": video_id})
+ return {'video_id': video_id, 'hls_url': data['hls_url']}
+ else:
+ debug_log("直接视频链接 - 非直播或无HLS", {"video_id": video_id, "is_live": data.get('is_live')})
+ return None
+ except Exception as e:
+ debug_log("直接视频链接 - extract_live失败", {"video_id": video_id, "error": repr(e)})
+ return None
+
+ try:
+ resp = self.session.get(url, timeout=30)
+ resp.raise_for_status()
+ html_text = resp.text
+ except Exception as e:
+ debug_log("获取频道页失败", {"url": url, "error": repr(e)})
+ return None
+
+ video_ids = re.findall(r'watch\?v=([a-zA-Z0-9_-]{11})', html_text)
+ if not video_ids:
+ debug_log("频道页未找到视频ID", {"url": url})
+ return None
+
+ seen = set()
+ for vid in video_ids:
+ if vid in seen:
+ continue
+ seen.add(vid)
+ try:
+ data = self.yt.extract_live(vid)
+ if data.get('is_live') and data.get('hls_url'):
+ debug_log("频道页找到直播视频", {"video_id": vid, "hls_url": data['hls_url'][:80]})
+ return {'video_id': vid, 'hls_url': data['hls_url']}
+ except Exception as e:
+ debug_log("频道页 - extract_live失败", {"video_id": vid, "error": repr(e)})
+ continue
+
+ debug_log("频道页未找到直播视频", {"url": url})
+ return None
+
+ def _fetch_and_rewrite_m3u8(self, hls_url, channel_id):
+ try:
+ # 强制使用已配置的代理(session 已包含代理设置)
+ resp = self.session.get(hls_url, headers={
+ 'User-Agent': 'com.google.android.youtube/21.02.35 (Linux; U; Android 11) gzip',
+ 'Referer': 'https://www.youtube.com/',
+ }, timeout=30)
+ resp.raise_for_status()
+ text = resp.text
+ except Exception as e:
+ debug_log("Failed to fetch master m3u8", {"url": hls_url, "error": repr(e)})
+ return None
+
+ if '#EXT-X-STREAM-INF' in text:
+ variant_url = self._pick_best_variant(hls_url, text)
+ if not variant_url:
+ debug_log("No variant found", {"master": hls_url})
+ return None
+ try:
+ resp = self.session.get(variant_url, headers={
+ 'User-Agent': 'com.google.android.youtube/21.02.35 (Linux; U; Android 11) gzip',
+ 'Referer': 'https://www.youtube.com/',
+ }, timeout=30)
+ resp.raise_for_status()
+ text = resp.text
+ except Exception as e:
+ debug_log("Failed to fetch variant m3u8", {"url": variant_url, "error": repr(e)})
+ return None
+
+ rewritten = []
+ for line in text.splitlines():
+ if line.startswith('#'):
+ rewritten.append(line)
+ else:
+ ts_url = urljoin(hls_url, line.strip())
+ encoded = self._b64_encode(ts_url)
+ proxy_ts = f"http://127.0.0.1:9978/proxy?do=py&type=ts&url={encoded}&channel={channel_id}"
+ rewritten.append(proxy_ts)
+ return '\n'.join(rewritten) + '\n'
+
+ def _pick_best_variant(self, base_url, text):
+ lines = text.splitlines()
+ best_score = -1
+ best_url = ''
+ for i, line in enumerate(lines):
+ if not line.startswith('#EXT-X-STREAM-INF'):
+ continue
+ bandwidth = re.search(r'BANDWIDTH=(\d+)', line)
+ resolution = re.search(r'RESOLUTION=(\d+)x(\d+)', line)
+ score = 0
+ if bandwidth:
+ score += int(bandwidth.group(1))
+ if resolution:
+ score += int(resolution.group(1)) * int(resolution.group(2))
+ for j in range(i + 1, len(lines)):
+ if not lines[j].strip() or lines[j].startswith('#'):
+ continue
+ if score > best_score:
+ best_score = score
+ best_url = urljoin(base_url, lines[j].strip())
+ break
+ return best_url
+
+ def _b64_encode(self, s):
+ return base64.urlsafe_b64encode(s.encode()).decode().rstrip('=')
+
+ def _b64_decode(self, s):
+ padding = 4 - (len(s) % 4)
+ if padding != 4:
+ s += '=' * padding
+ return base64.urlsafe_b64decode(s).decode()
+
+ def _error_response(self, msg):
+ error_m3u8 = f"""#EXTM3U
+#EXT-X-VERSION:3
+#EXT-X-MEDIA-SEQUENCE:0
+#EXT-X-TARGETDURATION:10
+#EXTINF:10.0,
+error.ts
+#EXT-X-ENDLIST
+# {msg}
+"""
+ return [500, "application/vnd.apple.mpegurl", error_m3u8]
\ No newline at end of file
diff --git a/ljlfct01.github.io.git/zb b/ljlfct01.github.io.git/zb
index e89da8b9..a17fe793 100644
--- a/ljlfct01.github.io.git/zb
+++ b/ljlfct01.github.io.git/zb
@@ -268,48 +268,48 @@ CCTV-4中文国际欧洲,http://222.173.9.81/00/SNM/CHANNEL00000350/index.m3u8
-----解密网站:http://111.229.253.40:559 交流QQ群1:1163524676 群2:722175118-----
央视频道,#genre#
-CCTV1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3d8e093d50b1a060c11758de78cca54d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+CCTV1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3d8e093d50b1a060c11758de78cca54d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
CCTV1,http://47.106.39.47:8596/aikan.php?id=cctv1
CCTV1,http://47.106.39.47:8596/aikan.php?id=cctv1b
-CCTV2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7f0f7630ebd9f29f34452e64c037ca7c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+CCTV2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7f0f7630ebd9f29f34452e64c037ca7c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
CCTV2,http://47.106.39.47:8596/aikan.php?id=cctv2
-CCTV3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=eef05976d14b742fc22fe17affad1f60&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+CCTV3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=eef05976d14b742fc22fe17affad1f60&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
CCTV3,http://47.106.39.47:8596/aikan.php?id=cctv3
-CCTV4,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c05a594b68692bbb5d09e966469540c8&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+CCTV4,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c05a594b68692bbb5d09e966469540c8&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
CCTV4,http://47.106.39.47:8596/aikan.php?id=cctv4
-CCTV5,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dcef7eaddaa95231a534664b5294ef17&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+CCTV5,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dcef7eaddaa95231a534664b5294ef17&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
CCTV5,http://47.106.39.47:8596/aikan.php?id=cctv5
CCTV5,http://47.106.39.47:8596/aikan.php?id=cctv5b
-CCTV5+,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=52f0fc31a05ce8ec338126dfa9ccf3b2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+CCTV5+,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=52f0fc31a05ce8ec338126dfa9ccf3b2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
CCTV5+,http://47.106.39.47:8596/aikan.php?id=cctv5p
CCTV5+,http://47.106.39.47:8596/aikan.php?id=cctv5p2
-CCTV6,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b642fd0c10e536bb69482f4a6787e0ea&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+CCTV6,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b642fd0c10e536bb69482f4a6787e0ea&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
CCTV6,http://47.106.39.47:8596/aikan.php?id=cctv6
-CCTV7,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=42206af12ae323cef243156bfe9bce04&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+CCTV7,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=42206af12ae323cef243156bfe9bce04&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
CCTV7,http://47.106.39.47:8596/aikan.php?id=cctv7
-CCTV8,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9ff989f42195a9f0fc85cae6b74d28df&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+CCTV8,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9ff989f42195a9f0fc85cae6b74d28df&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
CCTV8,http://47.106.39.47:8596/aikan.php?id=cctv8
-CCTV9,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=bf747874f5d0b0612a7537dc35f4a02d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+CCTV9,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=bf747874f5d0b0612a7537dc35f4a02d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
CCTV9,http://47.106.39.47:8596/aikan.php?id=cctv9
-CCTV10,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2538c1b412bd1e0c68ff474bf68ecc67&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+CCTV10,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2538c1b412bd1e0c68ff474bf68ecc67&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
CCTV10,http://47.106.39.47:8596/aikan.php?id=cctv10
-CCTV11,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=19133fadde9bf7161e568342d2482644&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+CCTV11,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=19133fadde9bf7161e568342d2482644&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
CCTV11,http://47.106.39.47:8596/aikan.php?id=cctv11
-CCTV12,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=859d4106cefb58b5f5a9feaf392b207b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+CCTV12,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=859d4106cefb58b5f5a9feaf392b207b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
CCTV12,http://47.106.39.47:8596/aikan.php?id=cctv12
-CCTV13,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0846adebefbf618f3d7196645a6f83b0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+CCTV13,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0846adebefbf618f3d7196645a6f83b0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
CCTV13,http://47.106.39.47:8596/aikan.php?id=cctv13
-CCTV14,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=afd5aeeff09615322773d2539c326b1b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+CCTV14,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=afd5aeeff09615322773d2539c326b1b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
CCTV14,http://47.106.39.47:8596/aikan.php?id=cctv14
-CCTV15,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2f1e65b31fdecc85032f08d23eb0cecc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+CCTV15,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2f1e65b31fdecc85032f08d23eb0cecc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
CCTV15,http://47.106.39.47:8596/aikan.php?id=cctv15
-CCTV16,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=15807c8fa9312f624e86a064cc085388&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-CCTV17,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7e30e8167039127910385b65b8b56f85&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+CCTV16,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=15807c8fa9312f624e86a064cc085388&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+CCTV17,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7e30e8167039127910385b65b8b56f85&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
CCTV17,http://47.106.39.47:8596/aikan.php?id=cctv17
-CETV1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5dac0041b94f5749d66ffa63196c31d7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-CETV2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=59775e060bb6f3fd91a847b449677677&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-CETV3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e5264e1b4007620c00cb94760dddf03f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-CETV4,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c280107756f5a6b2877a03b03eb489e6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+CETV1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5dac0041b94f5749d66ffa63196c31d7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+CETV2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=59775e060bb6f3fd91a847b449677677&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+CETV3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e5264e1b4007620c00cb94760dddf03f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+CETV4,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c280107756f5a6b2877a03b03eb489e6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
CCTV4欧洲,http://47.106.39.47:8596/aikan.php?id=cctv4o
CCTV4美洲,http://47.106.39.47:8596/aikan.php?id=cctv4a
CCTV9D,http://47.106.39.47:8596/aikan.php?id=cctv91
@@ -1655,521 +1655,523 @@ SHE演唱会3,https://vd3.bdstatic.com/mda-nmkefmyd0arci215/576p/h264/1671618057
春晚2025,https://play.modujx11.com/20250129/w9lu17BW/index.m3u8
春晚2026,https://v.lzcdn28.com/20260217/8616_1de9f6e5/index.m3u8
地方频道,#genre#
-凤凰中文,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=20d2d96308e5b86aa632cdb8113b2313&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-凤凰资讯,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c23cb91e28540bf120c96780829055cc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-凤凰香港,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=aff37a7016d2f0ae2cab0c213a506bc0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-凤凰澳洲,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3cc83ada5a8d350182f34b3515400dbf&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-凤凰电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3ea54960d444c5950872b58000eeef4b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-澳視葡文,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b8f338eda15495cf7b1c00819948ab93&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-澳门莲花,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2d267162eb55f961871560106c143a50&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-澳视澳门,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8d8e3996b4322b37826243590799bd24&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-澳门Macau,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2adc62b062ac9f7552c223695b1661cd&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-澳门综艺,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d04f05c8bc0813b5d89eeafb2f0eaea8&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-澳门资讯,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=90ad762b5dc5feaa61c2d1636a47d4b4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-澳门体育,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=29424e8f636e6ae41a8b2be3204614ae&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-创世电视,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=396e8b2cf9c77c3361b5a3484d9ff3b1&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HOY76,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=67d28b9315325d8881c01ef633a0ad6c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HOY77,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=647512d90b22fd7919c8c407b4a91c1c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HOY78,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dd78890aa3ba16e1143b2eede2303a00&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-翡翠剧集,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=feb979fb08606f46fc3ef3dd36967632&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-华丽翡翠,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b654513ab752f7a72e6445fcb756a74f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-娱乐新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=731b14933ec05b7bed938ab0e2489f30&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-黄金华剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=96e0bcab4e9aa165d4c5ef690762e0b0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-千禧经典,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=293ac51056235368be698c698197b3e9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-翡翠,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=56ef2938fa095b9f57c44c7918d7ba62&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-翡翠4K,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d28e3b6c035c14754e9d4dcb7ba128f0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-翡翠(马来),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9150accbde417e7620852691b50f2f40&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-翡翠(新加坡),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=66521bb3ce37a0c095bfeb825326b3e7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-翡翠(越南),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=81650d4099ca66f4a2881e6bfe2a8f21&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB_Plus,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=86ef0c139b7b3b2a8063f931d48586ba&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-无线新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=202dd6cb2fa10b757f27371ed2308931&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-无线新闻(北美),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=38f4e6844d506788074317f9c86ab525&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-明珠,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1b6b150766afa778761938542d893f52&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-生活,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=98794fafab0c7b0e92896a344adcc2ed&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-综艺,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2dae4813e183ec35e6e18dab2c93bcdd&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-亚洲剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=db79880374fcfcc4bd727642413a6443&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-华语剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6315b61b0ae7756c01210d79d527f53a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-粤语片,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=363b54c3886040017d7fa5bb29ad0335&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-粤语片(澳洲),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=524b79358dbeca9f89184cbbe2e64720&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-戏曲,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=36a506ea249cb8cf3fed56dbf6b21cd7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-翡翠一台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e9e1fe6c5259651029eda4e899282675&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-翡翠娱乐,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8230da2d607ec3e66b388b2366063a9f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-明珠剧集,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4b942eaae152191a2ac82ae4dd915851&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-黄金翡翠,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=abc050755794b4ef300af19d88be2c0a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-翡翠综合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=61022b25a00c6d2ee5e78ad604544308&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-HandsUp,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8c9cb00619dd969e675f4a1026aa9bbb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-J1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d545441e4a8c50bfa154ae6d83890d4f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-体育,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d077ab6bac9d0faf01012511d0949390&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-奖门人,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7d01960720b25de87c9ecb02a949ead4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-识叹,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=77b512f52931bcf2e0ec8ff9336059b1&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-煲剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ca9e2dabb91b4aeefed087b70bc7765a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-剧场,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=da25ea7ffb5953f952464bd6d4b943f2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-话当年,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=334ff1e9625df561813dc0a3e67ddedb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-金曲,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=08df2eb133165241c34fafe3ddbe1a3e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-识食,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b1e3d260c95eb4999712bc088a7f0f07&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-EYT,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=461ac1c2e255cdd0c66901d5cd3017b2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-少儿,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4a5b5f50afbb5501aeb01f30a148af93&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-SUPER_FREE,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=61d23e294d8038887d8b3ce71aafb810&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-星河(国),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=baa86b01502cb973558cfabd6a59467b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-星河(粤),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e4e7401dba979b89d746e5317393c046&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-武侠(国),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=15f9404076895c9e3b6bfd3cbe86dea8&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVB-武侠(粤),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5fdc3b112eb50e24679490ade22072ba&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now-新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=13aec09c93a3bc1cf7503a2c2634b271&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now-财经,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=24439004f10b68b0961ba1adceb2df59&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now-直播,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2776108270e95b70f36a2bb1110f30bd&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now-华剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ab89a61ded743371184f508a167692fe&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now-剧集,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7cca5b6cdce53f57946476948f1fdb28&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now-Jelli资金国际,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7569632a8a0bde54f2f01310d2d74063&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now体育,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=64432f39d1ad3c39ef231b4f07ee9b03&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now-星影(国),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7a7990063114003ced239629688e9d15&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now-星影(粤),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b8efa23b529264b8040949465f04898e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now-爆谷(国),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=42166abbf33965f3f33ea8cd1d443d92&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now-爆谷(粤),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=22e84fe145342b4dbfe6e06e044ed857&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-天映经典,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=95fbe855a1df5dc78b38a61bc64e7e9e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-天映经典2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5ae06ad6c6214b963861cf04dd63e460&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-天映频道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=cbae703675d7c3c04777f76229db0fb9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-美亚电影(国),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=667c693e234bc614bcb57ed6c940caca&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-美亚电影(粤),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1acd7da61bf72c10efd6d4fe9d44e494&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HBO,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=509e5f41146e278f9eab1ddaceb34515&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HBO原创巨献,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3c728c7f54cc6b9fa342949c3a6478db&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HBO强档巨献,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7c7fb269298f5396d3f5662a39e72ef6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HBO温馨家庭,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=628635c5c86e8588f6661252abf11688&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-PopC电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1575ff09dde688a4e6a2b0f2051174de&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-ROCKAction摇滚电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=810259aa9962c10c2191fb1dc3693044&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-ROCKEntertainment摇滚娱乐,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=41f67100ebef6dca9ecf88db2106f57b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-ROCKExtreme摇滚极限,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=99d9e85774c49cc3dc1116ab351da4d9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-CINEMAXHK,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ad6b2538605f45e087c82abc14fdb1e2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-ViuTV,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4f0dd8b20a195bdf2dcf5540f665ee0b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-ViuTV6,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9c90ad0f35197d9dee6694009f60414a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-viu剧集,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8e4592eeaa5212ed3558bd1b24b6d951&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-RTHK31,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e48c6e66705ee6d3d9a66e7f303d805a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-RTHK32,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d3fd85166b5abb79502d872ec49b1f61&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-RTHK33,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5d52b565d7c12baa5f86be5ebd227f02&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-RTHK34,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=bee7ea565f5c9458987f1893e30e056f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-RTHK35,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dc6784c67a7e93f9f341dcf67ff8d631&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now英超,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=85bad99b0e347951fffa247f64f12d2d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now_sport1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=46633d235259c414fc67f2e6506fbde9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now_sport2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e72ab894acf0ac5baedf6d023ff4924e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now_sport3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=da0c2fc2904cc89f66a029ddefc3add5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now_sport4,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=983489f3ab8e158f4aec573121c01c39&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now_sport5,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=cfb7bf59bc93ba505fb6e7634031104e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now_sport6,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=856a89dcbccbdb05f0bd95c5a682df7b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now_sport7,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a3947a2d54bf49930a5ed2cdaaebc92a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-NowPlus,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6638dfa2712f37703a77b83866e1d9fc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-mySUPER直播足球2台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a6db06446cc6e78d8d0a5f9b83fad479&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-mySUPER直播足球3台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=430266ab1937cc2fe1d57f6c3aa6a6ba&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-mySUPER直播足球4台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=fa92b569e0679a8583ac171a94ea30a0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-mySUPER直播足球5台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=000058a628e9f24810408e1573383ab0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-mySUPER直播足球6台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3c7d4c54e8234de577b933e388130821&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-NowSport英超1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=691b542f18738ab9a6cfa869c9a1132d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-NowSprot精选,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a105ff130e79ceed8f01630accedceef&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now_體育精選,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e5c9c36a086ead16e5a98e4f7640e1f6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now668,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d330ae8a7fa51410754bcc3347652feb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-有线18台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0dd70c0076bc4b539b888a221ff5fc88&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-无线18台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=75438d9a1a0cf5c132eff84aa5beaf85&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-赛马88台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3eb95436e6f717e47fbc779e002480d5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-曼聯電視頻道MUTV,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=13f4357a78ee73c82fecc0d26d1147ef&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-英超1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=347453ef7a6ccdfec26916227b7d3be4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HKzooMoo,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7c316d7fdc038c9d3d20038eecdb9573&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-AXN,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=042dba4d2faaa29cd2fa4c0125416d25&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-DMAX,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3357426c5ec8bd0e0419c1f8d5a9937e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-KIX,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ab2f36db6da07f13853aed92bc063987&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-DiscoveryAsia,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=78bf2e342a29404a090fbb90d718c9a1&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Thrill,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a5f799ea7465e196f726736ff8551980&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-LoveNature4K(HK),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=71a121520a24fd15401c0f90625981e1&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-星空卫视,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=bc420cf8383e85e20fbd61ff9d072254&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-MOVIEMOVIE,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=60b6ec2b638e2c9b5c275ab93d1eb6fd&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVN,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=acf93349a496b825bdde306eb527d1e7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-中国电影频道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dfc5e2217c10d2abe2ed38e3c2ccde04&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Animax动漫,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=25513b82cabdd47319331fff8bbdb2f2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-动物星球,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9e0aae8a7243b7a6f771de4484cf0119&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-GlobalTrekker,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e9882445f629ec5a47d66b2b54ecbecf&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-DreamWorks梦工场动漫,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=578e047270ccf5f332a867a0d6d08462&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Nickelodeon,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b11cc9ad84502b27a63fa7a8d813ef6a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-NickJr,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=68f0e063af7ff04b4b7eeb362f50744c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Concerto,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=858e5b3a7109fd05777f397609092113&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Docsville,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=84683e65bcc15dcddd36e5ad0511c8dc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-FashionBox,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e2d10a83ffe6300681795257bc06f205&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-MezzoLive,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=40526b18dbf8869279fe065fe1fec682&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-香港卫视,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1df191b6de196f5d7b043cb03ac4bdec&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-LoveNature,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c09fda9f0080fe694a1537f42f5c2807&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-tvN,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0402e516ea6e394f35ea84540e28c95e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+凤凰中文,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=20d2d96308e5b86aa632cdb8113b2313&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+凤凰资讯,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c23cb91e28540bf120c96780829055cc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+凤凰香港,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=aff37a7016d2f0ae2cab0c213a506bc0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+凤凰澳洲,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3cc83ada5a8d350182f34b3515400dbf&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+凤凰电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3ea54960d444c5950872b58000eeef4b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+澳視葡文,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b8f338eda15495cf7b1c00819948ab93&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+澳门莲花,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2d267162eb55f961871560106c143a50&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+澳视澳门,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8d8e3996b4322b37826243590799bd24&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+澳门Macau,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2adc62b062ac9f7552c223695b1661cd&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+澳门综艺,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d04f05c8bc0813b5d89eeafb2f0eaea8&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+澳门资讯,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=90ad762b5dc5feaa61c2d1636a47d4b4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+澳门体育,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=29424e8f636e6ae41a8b2be3204614ae&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+创世电视,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=396e8b2cf9c77c3361b5a3484d9ff3b1&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HOY76,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=67d28b9315325d8881c01ef633a0ad6c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HOY77,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=647512d90b22fd7919c8c407b4a91c1c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HOY78,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dd78890aa3ba16e1143b2eede2303a00&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-翡翠剧集,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=feb979fb08606f46fc3ef3dd36967632&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-华丽翡翠,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b654513ab752f7a72e6445fcb756a74f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-娱乐新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=731b14933ec05b7bed938ab0e2489f30&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-黄金华剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=96e0bcab4e9aa165d4c5ef690762e0b0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-千禧经典,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=293ac51056235368be698c698197b3e9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-翡翠,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=56ef2938fa095b9f57c44c7918d7ba62&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-翡翠4K,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d28e3b6c035c14754e9d4dcb7ba128f0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-翡翠(马来),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9150accbde417e7620852691b50f2f40&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-翡翠(新加坡),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=66521bb3ce37a0c095bfeb825326b3e7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-翡翠(越南),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=81650d4099ca66f4a2881e6bfe2a8f21&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB_Plus,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=86ef0c139b7b3b2a8063f931d48586ba&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-无线新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=202dd6cb2fa10b757f27371ed2308931&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-无线新闻(北美),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=38f4e6844d506788074317f9c86ab525&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-明珠,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1b6b150766afa778761938542d893f52&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-生活,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=98794fafab0c7b0e92896a344adcc2ed&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-综艺,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2dae4813e183ec35e6e18dab2c93bcdd&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-亚洲剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=db79880374fcfcc4bd727642413a6443&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-华语剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6315b61b0ae7756c01210d79d527f53a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-粤语片,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=363b54c3886040017d7fa5bb29ad0335&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-粤语片(澳洲),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=524b79358dbeca9f89184cbbe2e64720&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-戏曲,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=36a506ea249cb8cf3fed56dbf6b21cd7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-翡翠一台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e9e1fe6c5259651029eda4e899282675&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-翡翠娱乐,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8230da2d607ec3e66b388b2366063a9f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-明珠剧集,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4b942eaae152191a2ac82ae4dd915851&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-黄金翡翠,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=abc050755794b4ef300af19d88be2c0a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-翡翠综合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=61022b25a00c6d2ee5e78ad604544308&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-HandsUp,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8c9cb00619dd969e675f4a1026aa9bbb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-J1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d545441e4a8c50bfa154ae6d83890d4f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-体育,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d077ab6bac9d0faf01012511d0949390&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-奖门人,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7d01960720b25de87c9ecb02a949ead4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-识叹,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=77b512f52931bcf2e0ec8ff9336059b1&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-煲剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ca9e2dabb91b4aeefed087b70bc7765a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-剧场,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=da25ea7ffb5953f952464bd6d4b943f2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-话当年,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=334ff1e9625df561813dc0a3e67ddedb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-金曲,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=08df2eb133165241c34fafe3ddbe1a3e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-识食,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b1e3d260c95eb4999712bc088a7f0f07&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-EYT,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=461ac1c2e255cdd0c66901d5cd3017b2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-少儿,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4a5b5f50afbb5501aeb01f30a148af93&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-SUPER_FREE,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=61d23e294d8038887d8b3ce71aafb810&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-星河(国),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=baa86b01502cb973558cfabd6a59467b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-星河(粤),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e4e7401dba979b89d746e5317393c046&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-武侠(国),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=15f9404076895c9e3b6bfd3cbe86dea8&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVB-武侠(粤),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5fdc3b112eb50e24679490ade22072ba&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now-新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=13aec09c93a3bc1cf7503a2c2634b271&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now-财经,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=24439004f10b68b0961ba1adceb2df59&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now-直播,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2776108270e95b70f36a2bb1110f30bd&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now-华剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ab89a61ded743371184f508a167692fe&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now-剧集,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7cca5b6cdce53f57946476948f1fdb28&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now-Jelli资金国际,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7569632a8a0bde54f2f01310d2d74063&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now体育,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=64432f39d1ad3c39ef231b4f07ee9b03&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now-星影(国),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7a7990063114003ced239629688e9d15&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now-星影(粤),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b8efa23b529264b8040949465f04898e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now-爆谷(国),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=42166abbf33965f3f33ea8cd1d443d92&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now-爆谷(粤),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=22e84fe145342b4dbfe6e06e044ed857&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+天映经典,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=95fbe855a1df5dc78b38a61bc64e7e9e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+天映经典2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5ae06ad6c6214b963861cf04dd63e460&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+天映频道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=cbae703675d7c3c04777f76229db0fb9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+美亚电影(国),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=667c693e234bc614bcb57ed6c940caca&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+美亚电影(粤),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1acd7da61bf72c10efd6d4fe9d44e494&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HBO,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=509e5f41146e278f9eab1ddaceb34515&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HBO原创巨献,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3c728c7f54cc6b9fa342949c3a6478db&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HBO强档巨献,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7c7fb269298f5396d3f5662a39e72ef6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HBO温馨家庭,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=628635c5c86e8588f6661252abf11688&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+PopC电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1575ff09dde688a4e6a2b0f2051174de&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+ROCKAction摇滚电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=810259aa9962c10c2191fb1dc3693044&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+ROCKEntertainment摇滚娱乐,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=41f67100ebef6dca9ecf88db2106f57b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+ROCKExtreme摇滚极限,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=99d9e85774c49cc3dc1116ab351da4d9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+CINEMAXHK,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ad6b2538605f45e087c82abc14fdb1e2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+ViuTV,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4f0dd8b20a195bdf2dcf5540f665ee0b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+ViuTV6,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9c90ad0f35197d9dee6694009f60414a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+viu剧集,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8e4592eeaa5212ed3558bd1b24b6d951&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+RTHK31,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e48c6e66705ee6d3d9a66e7f303d805a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+RTHK32,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d3fd85166b5abb79502d872ec49b1f61&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+RTHK33,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5d52b565d7c12baa5f86be5ebd227f02&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+RTHK34,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=bee7ea565f5c9458987f1893e30e056f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+RTHK35,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dc6784c67a7e93f9f341dcf67ff8d631&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now英超,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=85bad99b0e347951fffa247f64f12d2d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now_sport1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=46633d235259c414fc67f2e6506fbde9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now_sport2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e72ab894acf0ac5baedf6d023ff4924e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now_sport3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=da0c2fc2904cc89f66a029ddefc3add5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now_sport4,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=983489f3ab8e158f4aec573121c01c39&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now_sport5,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=cfb7bf59bc93ba505fb6e7634031104e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now_sport6,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=856a89dcbccbdb05f0bd95c5a682df7b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now_sport7,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a3947a2d54bf49930a5ed2cdaaebc92a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+NowPlus,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6638dfa2712f37703a77b83866e1d9fc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+mySUPER直播足球2台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a6db06446cc6e78d8d0a5f9b83fad479&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+mySUPER直播足球3台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=430266ab1937cc2fe1d57f6c3aa6a6ba&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+mySUPER直播足球4台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=fa92b569e0679a8583ac171a94ea30a0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+mySUPER直播足球5台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=000058a628e9f24810408e1573383ab0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+mySUPER直播足球6台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3c7d4c54e8234de577b933e388130821&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+NowSport英超1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=691b542f18738ab9a6cfa869c9a1132d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+NowSprot精选,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a105ff130e79ceed8f01630accedceef&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now_體育精選,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e5c9c36a086ead16e5a98e4f7640e1f6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now668,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d330ae8a7fa51410754bcc3347652feb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+有线18台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0dd70c0076bc4b539b888a221ff5fc88&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+无线18台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=75438d9a1a0cf5c132eff84aa5beaf85&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+赛马88台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3eb95436e6f717e47fbc779e002480d5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+曼聯電視頻道MUTV,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=13f4357a78ee73c82fecc0d26d1147ef&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+英超1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=347453ef7a6ccdfec26916227b7d3be4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HKzooMoo,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7c316d7fdc038c9d3d20038eecdb9573&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+AXN,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=042dba4d2faaa29cd2fa4c0125416d25&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+DMAX,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3357426c5ec8bd0e0419c1f8d5a9937e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+KIX,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ab2f36db6da07f13853aed92bc063987&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+DiscoveryAsia,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=78bf2e342a29404a090fbb90d718c9a1&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Thrill,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a5f799ea7465e196f726736ff8551980&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+LoveNature4K(HK),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=71a121520a24fd15401c0f90625981e1&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+星空卫视,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=bc420cf8383e85e20fbd61ff9d072254&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+MOVIEMOVIE,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=60b6ec2b638e2c9b5c275ab93d1eb6fd&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVN,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=acf93349a496b825bdde306eb527d1e7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+中国电影频道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dfc5e2217c10d2abe2ed38e3c2ccde04&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Animax动漫,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=25513b82cabdd47319331fff8bbdb2f2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+动物星球,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9e0aae8a7243b7a6f771de4484cf0119&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+GlobalTrekker,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e9882445f629ec5a47d66b2b54ecbecf&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+DreamWorks梦工场动漫,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=578e047270ccf5f332a867a0d6d08462&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Nickelodeon,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b11cc9ad84502b27a63fa7a8d813ef6a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+NickJr,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=68f0e063af7ff04b4b7eeb362f50744c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Concerto,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=858e5b3a7109fd05777f397609092113&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Docsville,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=84683e65bcc15dcddd36e5ad0511c8dc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+FashionBox,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e2d10a83ffe6300681795257bc06f205&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+MezzoLive,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=40526b18dbf8869279fe065fe1fec682&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+香港卫视,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1df191b6de196f5d7b043cb03ac4bdec&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+LoveNature,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c09fda9f0080fe694a1537f42f5c2807&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+tvN,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0402e516ea6e394f35ea84540e28c95e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
地方频道2,#genre#
-ROCKEntertainment摇滚娱乐,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=41f67100ebef6dca9ecf88db2106f57b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-公视,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=960f72324544843971737b7010bebdd5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-民视,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1f5cb7f8687ab60efbdb4cb4190d355b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-台视,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d1a92e4301097a73f284a279fcf4afbc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-华视,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f1eae43af85dbf3e1983a93fbacaa83c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-中视,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8ce4f7f396a14b5f0d5489053ab6c535&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-民视第一,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b76755690d6750fa94321fcbfed67464&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-民视综艺,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=04079f48cbe86ce355ebdd255a715460&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-民视台湾,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=33ff2e131e511e896174ecbd0f45bed9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-民视影剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=744de097f81d15478300732b8a640ae3&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-民视旅遊,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=cacf8c484de351df51f36b6797e949ac&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-民视新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8a3146fd1b1204004ca552fb283c318d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-八大第一,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=79c7f8374ac31ebe8db8767247903099&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-八大综合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=57304f1b743cb4299271bd12e5aa967d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-八大戏剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dbaf0c3e821465da8b67a1fc2c1c7aa5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-八大精采,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=da8f2e2e074495d4775a9d22c1517f29&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-八大娱乐,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7593e8da22272cb11a2dfde6e1e4ff82&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-八大综艺,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3831ae147835333a274b639c1fc781f8&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-台视综合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f224561883f84224a6890fc95e0c1621&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-台视新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dfa730d8cc9556fa4a435083426192c8&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-台视财经,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=bec324db1c1b2a626d2dfa311200f09e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-中视经典,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d77f4a118f1fa06bd2ce0624060d3f22&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-中视新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=37aac0d83374389325d4b3e1e9b8f9b7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-中视菁采,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=bbc2abfbe02db52066af84d783b354d0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVBS_HD,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0bd56183204431b5e504b83caf1b663e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVBS欢乐,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a2309b6cbfc99db79ceefc6cdc56b325&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVBS精采,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d16f1ff42beb538881999aa58e103c9f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVBS综艺,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f6a2d52bc9426dd978faf71a4faf0f2c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVBS台剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9df1b21b8bec866f421e073366edbdcb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVBS亚洲,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=fc08860f10f58de933336efe9b950d9b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TVBS新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f3818c484ecc5469690bbd713c31465d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-中天新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4a789f0e146848bda0dee842cba28533&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-中天娱乐,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9906b83f3d72734ea8db527527ea841a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-中天亚洲,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7b9606e7c3a30a73e44bc5f76d3608d6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-中天综合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3525e2a679703119d442a9fe629faeee&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-寰宇新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=74dff16b9a15e132f3f6f1e492798fdc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-寰宇新闻台湾,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=80f22eaf4939855166f51cb1d03ac8cb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-寰宇財經,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5a139c1dfe60a910072270b632bd5e5a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-爱尔达综合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6d24885c6262f7356f9c21b6ce5d76cc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-爱尔达影剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=43a172400f0d651781f593843febc815&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-爱尔达日韩,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5f273ec339cd49535e7e428762b89b54&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-爱尔达娱乐,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=08ce132c534f96ea1f060c635965c1e6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-爱尔达生活旅游,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=63962c2cc3dc34ea41b4b017b74cb796&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-爱尔达体育1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e6e8f1e0e5a494b9db3cf794bd39d09c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-爱尔达体育2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d7e0bb604a5fdcdb15d7818a6fed2b97&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-爱尔达体育3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3815fd95f39a66e549da95aefc0c0c7c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-爱尔达体育4,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=78261674126a6b01d99b37f6e4a1ac61&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-爱尔达体育Max1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=17a2e953a464fa5ae502a821636fefba&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-爱尔达体育Max2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=430b728fff4e6a4a5b8f2fe3f529ee8b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-爱尔达体育Max3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=50dedb2249b6a9c668c8eb92e37542eb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-爱尔达体育Max4,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3d78e7fd3f3dc888cc6cd75aa9c5b154&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-靖天电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f61adc3051393878503f5c0e6baa5983&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-靖天国际,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a1f7c65ff8cb790483e330fd715bfaa2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-靖天综合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f55a05caf567694d19a472957e9edbb2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-靖天资讯,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=14cc21b7b4bf570db94cd3b91fa9dea6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-靖天戏剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7523f262f2a702630ac401b50879c11c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-靖天卡通,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7121f93baf03c143dc88fcbe35b332e3&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-靖天欢乐,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=edfbc25c34a0d10848731f323d77876f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-靖天日本,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ccc494fbbbf9a526ffe5dfa40aa86e1d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-靖天育乐,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2a0b47b4932bf302da76adc053663c45&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-靖天映画,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ffba776b236f4d5b0b73d6a233828ada&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-龙华日韩,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6df0f1613e0095a7100beedb7eca7fdf&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-龙华偶像,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d83278857f07c25df0445f97cdae657a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-龙华戏剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c47a015df8a7d023b2aeb8e8ede6be2b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-龙华洋片,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=498d7e72e2241e4dc8442c8a7843d4cc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-龙华卡通,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2d1d0e82d6fe8c559db4f73e40344a9f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-龙华电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e0a07815c0135b40d44dc9c846f61b48&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-龙华经典,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=feb7ba9ae4e3835f88efd731c0da1481&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-三立新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7f87b183d2fc14254c78c63883271264&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-三立iNEWS,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e33696616f15fbec121f05d66fcb4eae&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-三立戏剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=518b909ed6614cd138677611897c162c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-三立综合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8aecc82e93bfaa9d9af5be0ed451cc7a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-三立台湾,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5bc6e57495b4d08a3ec4fdf5d875d30f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-三立都会,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8126a2f0dfb0da5ec87431b39fb8b636&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-东森新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4a80586d55204ad1d9a0e7a0b8066fac&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-东森幼幼,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=70905dac749b7d3fa4c7e4858f0a470f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-东森综合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=524d539ec5fb663b50a7ebdb075c2e8c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-东森戏剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0d8ed9cd9a4853288e1a68aa64cded0c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-东森电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1e378f2d1a49befa27fb0499013ff517&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-东森洋片,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=404c047310e78077b398d2b5999e8459&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-东森财经,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=be1189740305fdb1520a692d37e940a4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-东森超视,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=163e6c3e3bd21f2beb6af46d4b6b9353&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-靖洋戏剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a40730066848783255e1e34266bd4c3c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-靖洋卡通,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9e748e7e875da07f562ded22bfa5e1b2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-纬来戏剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ca50dadfa16b56e6b7125310835b1c1d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-纬来电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=fc7ad76c4c1e493876beef7019fd3497&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-纬来育乐,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=74cc4c3b644c367a8b56dea754e67692&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-纬来精采,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4dab5a92e41236d0d252cad9c2a713b7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-纬来日本,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4a808304b7f0e526b1812d1b880c37c6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-纬来综合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ec3baf9a66ce98433f6710f9527c3045&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-纬来体育,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c0331d87d7f452e2b16f03a3b0a2b267&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-壹新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=727fa47e10abaa40752552235048a554&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-小公视,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8651b17a1363647feeca041f0265354a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-公视戏剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d48208e1bde7acb7cb7cf7d09dc9f30c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-公视3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ad833e46e9de2bf0932afda782617a77&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HBO_HD,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=68a273c7a3ba7578a2ca58fe24f3c2be&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HBOHits,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5bc9aa4c7e0ec2bff7da0b06d5ca85de&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HBOSignature,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e36d9ca9f7eb47bf9920fdb97539fb21&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HBO_Family,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=24fbab5df54290fecb9969ef613a085c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-美亚电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8467323d62ebf5ab353627d4e186969f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-龙祥时代,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9d00d6e33b1b43a50cf3e801cab3ce74&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-好莱乌电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c5f820f0a624e3a1d98fab34e3d2360f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-风云恐怖电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f3d3ad47acd513e88866d510131223e0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-EYE戏剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5c5307e5086dcb316ad4f037057bea61&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-邵氏武侠,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6202a49c6896f32efb42821cfa2ba3ce&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-邵氏电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c80cdce50cefc9391211e3c8ac6f8f7f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-CATCHPLAY电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1f6dda464cce90a0fb3176bca8bfa3dc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-AXN电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5fd3d62b32096638e180fc091451a66d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-CRIME+,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=203ee4af80a98546111f64830374889a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-昆仑剧场,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6125e290cf3dea384181bcc48628fc0f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Animaxa动漫,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7a9d4e0a7771d3235fadd4751f2d7717&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-FGM_gold电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=becfc1b619191c8f324907067c1acd13&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-影迷數位電影台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a14cec6d4dc3783c2e2635a513bb40fb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-CINEMAX,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ea561c74560f38d405a67622947bae32&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-影迷數位紀實,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e4c8683379521ec0b21b2bf11b414a1a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-StarMovies,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=51e0dd9e95c49c84bc07b0676083439e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-華視好劇-FastTV飛速看,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8a29144cea72c2aef2603da6c83a98a5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-市井豪門-FastTV飛速看,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=de9f8d7f81bdfe396b0938ff4083b566&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-台灣No.1棒球精選-FastTV飛速看,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e7d8f82952f43ee4b7ee91dbfd9e119f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-超人力霸王《TV版》FastTV飛速看,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=191bd331094d3608dabf9fc2564bae64&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-霹靂布袋戲-FastTV飛速看,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=30f2ea84e1347ae92f60fd6845f7f19b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-免費精選動畫-FastTV飛速看,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=02a7b8d400c16b34534c9e89d1bed654&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-EYE旅游,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4251f9750d7f1881729897f84ddb90e4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-金光布袋戲,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0a062815a54ac278dafb23d4c039ec1f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-霹靂布袋戲,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5d32ccac1c8991f5d56447c27bb8baac&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-爱奇艺,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c9ccbdcefa215dcf80094862d202f7f4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-CN卡通,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3a7f519d7a2db33033c06baddf76b3ae&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-非凡新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8a4f70c55fe2c1226d0ff966ce5169f4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-WWE摔胶,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f5c6c9b301677403bda1406731e4b21f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-AI新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=23730e403a46b090d03c86d83d8d1ec0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-年代新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2c3aefae870d058ac9f18e9ad8496321&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-BBC_Earth,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c51f243ece2ed479c79ce1b895257ef4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-凤梨直击台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=643c233b74d8de3be67d79d5182cef01&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-镜新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=621196a4058865fa2e59403c8caece23&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-长江剧场,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7b381b92aa6142a2031242a1665ce590&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-华视新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f33de20f378bbcb4bbd1cc681a50458b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-华艺中文,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d7ae3708af096362aaa0bf1ea69ad8c7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-GlobalTrekker,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e9882445f629ec5a47d66b2b54ecbecf&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-DreamWorks梦工场动漫,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=578e047270ccf5f332a867a0d6d08462&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Nickelodeon,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b11cc9ad84502b27a63fa7a8d813ef6a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-哆啦A夢,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=473b532dd9e817095c98238b3d3e7a5f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-幸福空间居家,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=73997634d3842f0bc4f577a8be3ad0af&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-韓流美食料理秀,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d939594795c3a5978d8edee3e4ca019c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-精选动漫,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d88d2d00f06871292c53733cf7505ee6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-采昌影剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1fbde82a30f3b29cb6ee55ba48942dc0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-BloombergTV彭博财经,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7e0952f5cfd39520537aece05f6dcd20&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-FRANCE24,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=40b0165992c508339b5053c63ae02629&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-LUXETV,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f860ec696cd59a8fb0448002cae0e5c0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-CNEX視納華仁紀實,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2ffa149412ab2dc5ec4d7aaa24c728cb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-猪哥亮歌厅秀,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=073b20dd05257e05ccc4f2ce4ab633ab&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-經典迪士尼,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4c05b7878803c8d9f6bdf0d99619787c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-ABC互動英語,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c3c820906bba7443e3098b2db199167b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-MOMO親子,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5f4146cdbd7cdfdd7ec37e9532434dbb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-車迷TV,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d6873ce576957c64f936ba58c63d0485&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-半島國際新聞,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8511807e58fc3d8a1c732e36a5bb79a6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-amc电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e430a4348c0e1fadf1a2dff61821c29c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-PetClubTV,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=02fe7cf0f125a2b343582a63a8f9855b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-MagellanTV頻道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=719f97d8d7f370913f80a4e5b92316cb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-經典卡通,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c1c5c09f51e4035ba0093e5e6be56ebb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-DuckTV兒童卡通,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=320707a61b4164c856e4ce4c65daacb8&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Lifetime娱乐频道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dc3d95a34d84be3aff53192f1e1d58e0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-滾動力Rollor,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=73c20b6f33eefacf760556a87753bb24&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-綜藝大贏家,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1a9ed0a56f7bdca075b07dfbe55437d2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-GINXEsportsTV,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f9a48471de2879b0f104d60f88c0eebd&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HITS,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=076544dccc9c836d2b127812112e0eb2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-ELTV生活英語,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8efc490d426de82f5cb77261935ddc03&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-時尚運動X,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6f8b91a9b8ac15a49d25b6672178ced1&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-ASIA亚洲旅游,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7ae2c446726e1d76afd38ea7c282a637&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-CinemaWorld,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b46e9ef2eeea64e9ffb93d890ae46c63&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-NHKWORLD-JAPAN,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=33eec59f8338d5bca7074be67cb24747&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-ROCK_Action,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2a4f8cbfce55e3a7a2f26bf0b0e78e19&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-娛樂百分百,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f4bfbdfa573a4bba137d7bcfa6eb7962&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HISTORY历史,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=70f3e7fbd79ea554887197868867ac2c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-NickJr,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=68f0e063af7ff04b4b7eeb362f50744c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TRACESportStars,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=635b45fbf2cc2c7b8d9bef552fb54dc2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TV5MONDESTYLEHD,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7041908891efe83cd2414674bbb05126&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-达文西頻道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ab9aadd81b1b33ff3a24ba3bd59f6d4a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-LOVE_NATURE,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c65620711f445b7bd1765f6a7b401a7f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-MCE电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=48373015a120ada6f934253eea6a32d0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-JET综合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4611de94a73e7a20ea710c20ff03e1ad&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-年代MUCH,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=bc8eae8273ead0ef2afd1eaff4caf341&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-INULTRA,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=47d60cecdfe00230c7426317c3588ce4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-臺灣Plus,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=029955c0bd6af8c1d38812e86e72b11c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-WILDStyff,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4130921a56cf3e459f0780f4556fb01a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-中旺電視,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=53f65b2539335a99ad5c50849cf102c9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-KTSF26,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=858cc319111078e644ff3d116c7c95ac&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-EVE,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=57a85bc4cc02c74c14b671a196abebab&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-大愛壹,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9973dc4175eb22fe28b974b4d74f02a5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-霹雳台湾,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1654489358216140883970ba0ffee9db&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-BBCCbeebies,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=036b51c785e522a40af9fcb5a0639f32&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-東森新聞(美),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d1540f4f2733ee41b670dc854c2bb9ce&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Cartoonito,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6f38e0a053bd7aad52927c890baf994a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Smart知識,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=227af52718c2bd3e99767debca50c916&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Trvl旅遊,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d402dd71577a70629f448528ea32cc75&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-探索頻道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=215156cbdc2d56fcc16772d79ee04a44&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-東森超視34.5,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=70d50a626c0a99c738750717ce18a0d1&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-臺灣戲劇,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dfdbce83799ec65c19241e3a4cbc58dd&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-BBCNews,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3bcfea2f189f0839ca5746e02b910cf8&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Concerto,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=858e5b3a7109fd05777f397609092113&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-鏡新聞,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9676cba4589ea8d44f4ebe9fa1cefaf1&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-大立,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1353da2dc36aa7e0a7da8d4c8badfbd9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HGTV,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2838d50de5d50d2e46ba88589f494bc7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SCI,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f4975d0ed246b5afff5d742da9bd9c11&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Docsville,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=84683e65bcc15dcddd36e5ad0511c8dc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-幸福空間居家,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=07b0f07f828f686d203e21ca95fef0e5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-空中英語教室,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=60b1d87e243c9b338d3b289406f3b500&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-FashionBox,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e2d10a83ffe6300681795257bc06f205&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-客家電視,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7d9d538db1341c82b1d97563fa81541c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-東森美洲,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1aa6efcab49415b0cc671e607c905c9a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-國興衛視,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b7fcb79ee6591226d177d9b576acbed1&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-美食星球,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d8addab13f0194673777b66628b99461&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-臺視財經,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0b02cee6a886ac4e5221c2d0c46230fc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-東森中國,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=56fd600dd463047fcedbc39cac0c7216&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Boomerang,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8c9d96b1ef82662dd41a42e8528876b6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-MezzoLive,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=40526b18dbf8869279fe065fe1fec682&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-MOMO綜合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e8eb9214c16eaa4dbd974727e4c8b160&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-非凡商業,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8bb0e729b98e41cd23acbaea392eae1e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TITV原住民,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=cd8142973931f0856814b85d99b9d521&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-壹電影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=fc18ef62ae2ee66f1923f2a5bdfa187e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-華納電影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d3f0e9d994d6e64b47f8b31a0b4eb764&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-StinorayCmusic,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=694b6f5f2aa1e2175092049cd9fab459&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Now90s00s,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f8b2940bcd66719ba0b13f61b89cf860&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-視納華仁紀實頻道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=04c49be7985930424702562f4064309c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-戲說台灣-FastTV飛速看,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1d0ea6ca221b887ba49433290b03fbad&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-韓國娛樂台KMTV,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f0c7a74e8bc4b8c9487df4a97b183657&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-半島國際新聞台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1b6e6e87679080cb41393ae9b69a73d6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-博斯無限台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a65faa238bcd8ba08e9a7aec2f4c150a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-博斯網球台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d83f001b2fb3b2f3280fea885aa998c7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-ARIRANG阿里郎頻道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b28f8ece56a1541a0fa3e87cb8f0b204&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-DiscoveryScience,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=11605db080879b79363a4e0e68bd07f9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-DW德國之聲,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ae13a276e597be0b497802a03fb629f5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SBN全球財經台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d82cf32d3e416d2e5d4626173835fc85&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-香蕉直擊台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3a77bd7ee14fb59f086733d983cd1bb6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-華藝MBC綜合台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=156a1cd807b17860cea57003204d3ff4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-fun探索娛樂台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5902c92e3a3c28e94496444652e3d111&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-CI罪案偵查頻道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3e46f60dc9ba4d282881b363ce772a46&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-電影原聲台CMusic,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=166a68ae0f31402a6a12f6a9457d1d54&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-博斯高球一台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3e5f97209b1939259e4eefa92d619349&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-曼迪日本台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=88e79fccf71b11db41ce3dc6f6b67412&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-新唐人亞太台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6a292133f266ac29de0f9b85c560d446&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-博斯無限二台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ff355de55c9aa626e48da39cff8510b5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Hami日漫台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=cada07831e6394dfcdad51a18b6417de&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-CNBCAsia財經台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9f4c4c82689cd1a020d8f74bb956a5b9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HamiMLB台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3d0d2322435a606c99e5d1211132e872&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-博斯魅力網,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=61fa0ee02bc94cdd984a6673c27bcee0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-DiscoveryDMAX,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=42b3627d35e274b7a25bfaa957434fee&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-CLASSICA古典樂,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dfcb1fb1f975fbd1431e7936e820110f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-MyCinemaEuropeHD我的歐洲電影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0624a3b57708e393ccac1f0f43cbfb30&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-超人力霸王《劇場版》FastTV飛速看,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8bdf9930c85390c5ec6581944b2a9e57&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TV5MONDESTYLEHD生活時尚,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4678abfed193d1f4016562d975b6f1f8&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TRACEUrban,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=70809b31476623fe7545b77a71b99469&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-經典電影台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6679c5476f8e812f90ccc4f2e89e411b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TLC,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e12a8b6e18ee3d67dc8153f4f4713a40&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TSN3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=aef11144ac3826c4f233d0883d3183d7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-NBCGolf,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3f38b8457b53ac88a2d9282cf0f95d40&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-AI-Jazeera,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e21c4275e3a649cd7a6542533c368fa5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-卫视西片,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=16d79ddbcd37e98dfa8c2fb8c13432e0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-探索科学,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c18915c5c541457427e55d4ba581145b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-龙翔时代,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=64cd095ee5ba83e158dff08128b404f7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-博斯高球2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0dce29da9b2b661a7478c59c8f98a965&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-博斯运动2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a17846b9e90602ba01c34fe8e8ec8698&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Sky新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=20936bb87e163aaa649b13e524663a8d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-ABC新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=447d30ed2335f7b1f48972388255e975&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-One,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=06c2cea18679d64399783748fa367bdd&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-OneGolf,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ac06a1ed7480001deef3db0ea4bb5fa8&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-探索亚洲,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ed32c2ef7e298cba849f60088937eddb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-博斯高球1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=991cdb578c9d65405a125a43787d1013&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-EURONews,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3702c12ce70f311f007e5c79cce389e7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Z,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=21c2e59531c8710156d34a3c30ac81d5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-博斯运动1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=753b7916fbb83bd2eb7027ad6f0a8c60&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-FoxNews,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8a0724f70d85166ddd43b31d7dd6068e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-国家地理,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6f9dfb9eedca353592e62363ae699c6f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HitsMovies,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b43cc98a0992bb3e80ee01e49c8f9cec&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-智林体育,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4e9e366a66724537301358540ea1c699&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-BBC_Lifestyle,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=700dfd7caf80a973e4d0659b37c6055c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+ROCKEntertainment摇滚娱乐,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=41f67100ebef6dca9ecf88db2106f57b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+公视,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=960f72324544843971737b7010bebdd5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+民视,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1f5cb7f8687ab60efbdb4cb4190d355b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+台视,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d1a92e4301097a73f284a279fcf4afbc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+华视,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f1eae43af85dbf3e1983a93fbacaa83c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+中视,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8ce4f7f396a14b5f0d5489053ab6c535&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+民视第一,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b76755690d6750fa94321fcbfed67464&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+民视综艺,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=04079f48cbe86ce355ebdd255a715460&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+民视台湾,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=33ff2e131e511e896174ecbd0f45bed9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+民视影剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=744de097f81d15478300732b8a640ae3&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+民视旅遊,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=cacf8c484de351df51f36b6797e949ac&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+民视新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8a3146fd1b1204004ca552fb283c318d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+八大第一,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=79c7f8374ac31ebe8db8767247903099&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+八大综合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=57304f1b743cb4299271bd12e5aa967d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+八大戏剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dbaf0c3e821465da8b67a1fc2c1c7aa5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+八大精采,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=da8f2e2e074495d4775a9d22c1517f29&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+八大娱乐,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7593e8da22272cb11a2dfde6e1e4ff82&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+八大综艺,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3831ae147835333a274b639c1fc781f8&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+台视综合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f224561883f84224a6890fc95e0c1621&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+台视新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dfa730d8cc9556fa4a435083426192c8&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+台视财经,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=bec324db1c1b2a626d2dfa311200f09e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+中视经典,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d77f4a118f1fa06bd2ce0624060d3f22&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+中视新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=37aac0d83374389325d4b3e1e9b8f9b7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+中视菁采,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=bbc2abfbe02db52066af84d783b354d0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVBS_HD,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0bd56183204431b5e504b83caf1b663e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVBS欢乐,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a2309b6cbfc99db79ceefc6cdc56b325&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVBS精采,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d16f1ff42beb538881999aa58e103c9f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVBS综艺,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f6a2d52bc9426dd978faf71a4faf0f2c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVBS台剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9df1b21b8bec866f421e073366edbdcb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVBS亚洲,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=fc08860f10f58de933336efe9b950d9b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TVBS新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f3818c484ecc5469690bbd713c31465d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+中天新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4a789f0e146848bda0dee842cba28533&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+中天娱乐,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9906b83f3d72734ea8db527527ea841a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+中天亚洲,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7b9606e7c3a30a73e44bc5f76d3608d6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+中天综合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3525e2a679703119d442a9fe629faeee&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+寰宇新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=74dff16b9a15e132f3f6f1e492798fdc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+寰宇新闻台湾,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=80f22eaf4939855166f51cb1d03ac8cb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+寰宇財經,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5a139c1dfe60a910072270b632bd5e5a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+爱尔达综合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6d24885c6262f7356f9c21b6ce5d76cc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+爱尔达影剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=43a172400f0d651781f593843febc815&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+爱尔达日韩,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5f273ec339cd49535e7e428762b89b54&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+爱尔达娱乐,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=08ce132c534f96ea1f060c635965c1e6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+爱尔达生活旅游,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=63962c2cc3dc34ea41b4b017b74cb796&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+爱尔达体育1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e6e8f1e0e5a494b9db3cf794bd39d09c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+爱尔达体育2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d7e0bb604a5fdcdb15d7818a6fed2b97&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+爱尔达体育3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3815fd95f39a66e549da95aefc0c0c7c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+爱尔达体育4,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=78261674126a6b01d99b37f6e4a1ac61&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+爱尔达体育Max1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=17a2e953a464fa5ae502a821636fefba&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+爱尔达体育Max2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=430b728fff4e6a4a5b8f2fe3f529ee8b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+爱尔达体育Max3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=50dedb2249b6a9c668c8eb92e37542eb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+爱尔达体育Max4,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3d78e7fd3f3dc888cc6cd75aa9c5b154&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+靖天电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f61adc3051393878503f5c0e6baa5983&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+靖天国际,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a1f7c65ff8cb790483e330fd715bfaa2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+靖天综合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f55a05caf567694d19a472957e9edbb2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+靖天资讯,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=14cc21b7b4bf570db94cd3b91fa9dea6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+靖天戏剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7523f262f2a702630ac401b50879c11c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+靖天卡通,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7121f93baf03c143dc88fcbe35b332e3&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+靖天欢乐,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=edfbc25c34a0d10848731f323d77876f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+靖天日本,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ccc494fbbbf9a526ffe5dfa40aa86e1d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+靖天育乐,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2a0b47b4932bf302da76adc053663c45&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+靖天映画,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ffba776b236f4d5b0b73d6a233828ada&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+龙华日韩,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6df0f1613e0095a7100beedb7eca7fdf&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+龙华偶像,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d83278857f07c25df0445f97cdae657a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+龙华戏剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c47a015df8a7d023b2aeb8e8ede6be2b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+龙华洋片,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=498d7e72e2241e4dc8442c8a7843d4cc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+龙华卡通,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2d1d0e82d6fe8c559db4f73e40344a9f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+龙华电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e0a07815c0135b40d44dc9c846f61b48&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+龙华经典,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=feb7ba9ae4e3835f88efd731c0da1481&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+三立新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7f87b183d2fc14254c78c63883271264&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+三立iNEWS,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e33696616f15fbec121f05d66fcb4eae&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+三立戏剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=518b909ed6614cd138677611897c162c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+三立综合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8aecc82e93bfaa9d9af5be0ed451cc7a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+三立台湾,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5bc6e57495b4d08a3ec4fdf5d875d30f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+三立都会,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8126a2f0dfb0da5ec87431b39fb8b636&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+东森新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4a80586d55204ad1d9a0e7a0b8066fac&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+东森幼幼,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=70905dac749b7d3fa4c7e4858f0a470f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+东森综合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=524d539ec5fb663b50a7ebdb075c2e8c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+东森戏剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0d8ed9cd9a4853288e1a68aa64cded0c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+东森电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1e378f2d1a49befa27fb0499013ff517&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+东森洋片,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=404c047310e78077b398d2b5999e8459&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+东森财经,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=be1189740305fdb1520a692d37e940a4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+东森超视,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=163e6c3e3bd21f2beb6af46d4b6b9353&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+靖洋戏剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a40730066848783255e1e34266bd4c3c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+靖洋卡通,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9e748e7e875da07f562ded22bfa5e1b2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+纬来戏剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ca50dadfa16b56e6b7125310835b1c1d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+纬来电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=fc7ad76c4c1e493876beef7019fd3497&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+纬来育乐,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=74cc4c3b644c367a8b56dea754e67692&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+纬来精采,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4dab5a92e41236d0d252cad9c2a713b7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+纬来日本,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4a808304b7f0e526b1812d1b880c37c6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+纬来综合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ec3baf9a66ce98433f6710f9527c3045&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+纬来体育,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c0331d87d7f452e2b16f03a3b0a2b267&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+壹新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=727fa47e10abaa40752552235048a554&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+小公视,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8651b17a1363647feeca041f0265354a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+公视戏剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d48208e1bde7acb7cb7cf7d09dc9f30c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+公视3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ad833e46e9de2bf0932afda782617a77&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HBO_HD,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=68a273c7a3ba7578a2ca58fe24f3c2be&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HBOHits,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5bc9aa4c7e0ec2bff7da0b06d5ca85de&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HBOSignature,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e36d9ca9f7eb47bf9920fdb97539fb21&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HBO_Family,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=24fbab5df54290fecb9969ef613a085c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+美亚电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8467323d62ebf5ab353627d4e186969f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+龙祥时代,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9d00d6e33b1b43a50cf3e801cab3ce74&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+好莱乌电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c5f820f0a624e3a1d98fab34e3d2360f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+风云恐怖电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f3d3ad47acd513e88866d510131223e0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+EYE戏剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5c5307e5086dcb316ad4f037057bea61&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+邵氏武侠,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6202a49c6896f32efb42821cfa2ba3ce&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+邵氏电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c80cdce50cefc9391211e3c8ac6f8f7f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+CATCHPLAY电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1f6dda464cce90a0fb3176bca8bfa3dc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+AXN电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5fd3d62b32096638e180fc091451a66d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+CRIME+,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=203ee4af80a98546111f64830374889a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+昆仑剧场,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6125e290cf3dea384181bcc48628fc0f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Animaxa动漫,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7a9d4e0a7771d3235fadd4751f2d7717&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+FGM_gold电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=becfc1b619191c8f324907067c1acd13&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+影迷數位電影台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a14cec6d4dc3783c2e2635a513bb40fb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+CINEMAX,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ea561c74560f38d405a67622947bae32&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+影迷數位紀實,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e4c8683379521ec0b21b2bf11b414a1a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+StarMovies,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=51e0dd9e95c49c84bc07b0676083439e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+華視好劇-FastTV飛速看,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8a29144cea72c2aef2603da6c83a98a5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+市井豪門-FastTV飛速看,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=de9f8d7f81bdfe396b0938ff4083b566&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+台灣No.1棒球精選-FastTV飛速看,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e7d8f82952f43ee4b7ee91dbfd9e119f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+超人力霸王《TV版》FastTV飛速看,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=191bd331094d3608dabf9fc2564bae64&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+霹靂布袋戲-FastTV飛速看,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=30f2ea84e1347ae92f60fd6845f7f19b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+免費精選動畫-FastTV飛速看,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=02a7b8d400c16b34534c9e89d1bed654&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+EYE旅游,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4251f9750d7f1881729897f84ddb90e4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+金光布袋戲,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0a062815a54ac278dafb23d4c039ec1f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+霹靂布袋戲,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5d32ccac1c8991f5d56447c27bb8baac&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+爱奇艺,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c9ccbdcefa215dcf80094862d202f7f4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+CN卡通,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3a7f519d7a2db33033c06baddf76b3ae&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+非凡新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8a4f70c55fe2c1226d0ff966ce5169f4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+WWE摔胶,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f5c6c9b301677403bda1406731e4b21f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+AI新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=23730e403a46b090d03c86d83d8d1ec0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+年代新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2c3aefae870d058ac9f18e9ad8496321&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+BBC_Earth,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c51f243ece2ed479c79ce1b895257ef4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+凤梨直击台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=643c233b74d8de3be67d79d5182cef01&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+镜新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=621196a4058865fa2e59403c8caece23&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+长江剧场,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7b381b92aa6142a2031242a1665ce590&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+华视新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f33de20f378bbcb4bbd1cc681a50458b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+华艺中文,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d7ae3708af096362aaa0bf1ea69ad8c7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+GlobalTrekker,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e9882445f629ec5a47d66b2b54ecbecf&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+DreamWorks梦工场动漫,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=578e047270ccf5f332a867a0d6d08462&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Nickelodeon,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b11cc9ad84502b27a63fa7a8d813ef6a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+哆啦A夢,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=473b532dd9e817095c98238b3d3e7a5f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+幸福空间居家,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=73997634d3842f0bc4f577a8be3ad0af&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+韓流美食料理秀,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d939594795c3a5978d8edee3e4ca019c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+精选动漫,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d88d2d00f06871292c53733cf7505ee6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+采昌影剧,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1fbde82a30f3b29cb6ee55ba48942dc0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+BloombergTV彭博财经,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7e0952f5cfd39520537aece05f6dcd20&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+FRANCE24,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=40b0165992c508339b5053c63ae02629&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+LUXETV,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f860ec696cd59a8fb0448002cae0e5c0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+CNEX視納華仁紀實,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2ffa149412ab2dc5ec4d7aaa24c728cb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+猪哥亮歌厅秀,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=073b20dd05257e05ccc4f2ce4ab633ab&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+經典迪士尼,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4c05b7878803c8d9f6bdf0d99619787c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+ABC互動英語,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c3c820906bba7443e3098b2db199167b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+MOMO親子,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5f4146cdbd7cdfdd7ec37e9532434dbb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+車迷TV,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d6873ce576957c64f936ba58c63d0485&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+半島國際新聞,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8511807e58fc3d8a1c732e36a5bb79a6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+amc电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e430a4348c0e1fadf1a2dff61821c29c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+PetClubTV,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=02fe7cf0f125a2b343582a63a8f9855b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+MagellanTV頻道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=719f97d8d7f370913f80a4e5b92316cb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+經典卡通,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c1c5c09f51e4035ba0093e5e6be56ebb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+DuckTV兒童卡通,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=320707a61b4164c856e4ce4c65daacb8&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Lifetime娱乐频道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dc3d95a34d84be3aff53192f1e1d58e0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+滾動力Rollor,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=73c20b6f33eefacf760556a87753bb24&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+綜藝大贏家,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1a9ed0a56f7bdca075b07dfbe55437d2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+GINXEsportsTV,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f9a48471de2879b0f104d60f88c0eebd&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HITS,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=076544dccc9c836d2b127812112e0eb2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+ELTV生活英語,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8efc490d426de82f5cb77261935ddc03&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+時尚運動X,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6f8b91a9b8ac15a49d25b6672178ced1&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+ASIA亚洲旅游,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7ae2c446726e1d76afd38ea7c282a637&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+CinemaWorld,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b46e9ef2eeea64e9ffb93d890ae46c63&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+NHKWORLD-JAPAN,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=33eec59f8338d5bca7074be67cb24747&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+ROCK_Action,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2a4f8cbfce55e3a7a2f26bf0b0e78e19&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+娛樂百分百,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f4bfbdfa573a4bba137d7bcfa6eb7962&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HISTORY历史,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=70f3e7fbd79ea554887197868867ac2c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+NickJr,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=68f0e063af7ff04b4b7eeb362f50744c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TRACESportStars,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=635b45fbf2cc2c7b8d9bef552fb54dc2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TV5MONDESTYLEHD,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7041908891efe83cd2414674bbb05126&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+达文西頻道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ab9aadd81b1b33ff3a24ba3bd59f6d4a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+LOVE_NATURE,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c65620711f445b7bd1765f6a7b401a7f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+MCE电影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=48373015a120ada6f934253eea6a32d0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+JET综合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4611de94a73e7a20ea710c20ff03e1ad&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+年代MUCH,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=bc8eae8273ead0ef2afd1eaff4caf341&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+INULTRA,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=47d60cecdfe00230c7426317c3588ce4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+臺灣Plus,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=029955c0bd6af8c1d38812e86e72b11c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+WILDStyff,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4130921a56cf3e459f0780f4556fb01a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+中旺電視,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=53f65b2539335a99ad5c50849cf102c9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+KTSF26,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=858cc319111078e644ff3d116c7c95ac&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+EVE,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=57a85bc4cc02c74c14b671a196abebab&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+大愛壹,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9973dc4175eb22fe28b974b4d74f02a5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+霹雳台湾,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1654489358216140883970ba0ffee9db&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+BBCCbeebies,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=036b51c785e522a40af9fcb5a0639f32&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+東森新聞(美),http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d1540f4f2733ee41b670dc854c2bb9ce&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Cartoonito,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6f38e0a053bd7aad52927c890baf994a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Smart知識,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=227af52718c2bd3e99767debca50c916&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Trvl旅遊,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d402dd71577a70629f448528ea32cc75&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+探索頻道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=215156cbdc2d56fcc16772d79ee04a44&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+東森超視34.5,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=70d50a626c0a99c738750717ce18a0d1&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+臺灣戲劇,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dfdbce83799ec65c19241e3a4cbc58dd&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+BBCNews,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3bcfea2f189f0839ca5746e02b910cf8&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Concerto,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=858e5b3a7109fd05777f397609092113&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+鏡新聞,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9676cba4589ea8d44f4ebe9fa1cefaf1&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+大立,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1353da2dc36aa7e0a7da8d4c8badfbd9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HGTV,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2838d50de5d50d2e46ba88589f494bc7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SCI,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f4975d0ed246b5afff5d742da9bd9c11&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Docsville,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=84683e65bcc15dcddd36e5ad0511c8dc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+幸福空間居家,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=07b0f07f828f686d203e21ca95fef0e5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+空中英語教室,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=60b1d87e243c9b338d3b289406f3b500&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+FashionBox,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e2d10a83ffe6300681795257bc06f205&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+客家電視,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7d9d538db1341c82b1d97563fa81541c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+東森美洲,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1aa6efcab49415b0cc671e607c905c9a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+國興衛視,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b7fcb79ee6591226d177d9b576acbed1&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+美食星球,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d8addab13f0194673777b66628b99461&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+臺視財經,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0b02cee6a886ac4e5221c2d0c46230fc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+東森中國,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=56fd600dd463047fcedbc39cac0c7216&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Boomerang,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8c9d96b1ef82662dd41a42e8528876b6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+MezzoLive,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=40526b18dbf8869279fe065fe1fec682&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+MOMO綜合,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e8eb9214c16eaa4dbd974727e4c8b160&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+非凡商業,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8bb0e729b98e41cd23acbaea392eae1e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TITV原住民,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=cd8142973931f0856814b85d99b9d521&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+壹電影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=fc18ef62ae2ee66f1923f2a5bdfa187e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+華納電影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d3f0e9d994d6e64b47f8b31a0b4eb764&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+StinorayCmusic,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=694b6f5f2aa1e2175092049cd9fab459&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Now90s00s,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f8b2940bcd66719ba0b13f61b89cf860&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+視納華仁紀實頻道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=04c49be7985930424702562f4064309c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+戲說台灣-FastTV飛速看,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1d0ea6ca221b887ba49433290b03fbad&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+韓國娛樂台KMTV,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f0c7a74e8bc4b8c9487df4a97b183657&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+半島國際新聞台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1b6e6e87679080cb41393ae9b69a73d6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+博斯無限台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a65faa238bcd8ba08e9a7aec2f4c150a&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+博斯網球台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d83f001b2fb3b2f3280fea885aa998c7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+ARIRANG阿里郎頻道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b28f8ece56a1541a0fa3e87cb8f0b204&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+DiscoveryScience,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=11605db080879b79363a4e0e68bd07f9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+DW德國之聲,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ae13a276e597be0b497802a03fb629f5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SBN全球財經台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d82cf32d3e416d2e5d4626173835fc85&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+香蕉直擊台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3a77bd7ee14fb59f086733d983cd1bb6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+華藝MBC綜合台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=156a1cd807b17860cea57003204d3ff4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+fun探索娛樂台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5902c92e3a3c28e94496444652e3d111&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+CI罪案偵查頻道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3e46f60dc9ba4d282881b363ce772a46&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+電影原聲台CMusic,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=166a68ae0f31402a6a12f6a9457d1d54&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+博斯高球一台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3e5f97209b1939259e4eefa92d619349&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+曼迪日本台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=88e79fccf71b11db41ce3dc6f6b67412&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+新唐人亞太台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6a292133f266ac29de0f9b85c560d446&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+博斯無限二台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ff355de55c9aa626e48da39cff8510b5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Hami日漫台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=cada07831e6394dfcdad51a18b6417de&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+CNBCAsia財經台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9f4c4c82689cd1a020d8f74bb956a5b9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HamiMLB台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3d0d2322435a606c99e5d1211132e872&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+博斯魅力網,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=61fa0ee02bc94cdd984a6673c27bcee0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+DiscoveryDMAX,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=42b3627d35e274b7a25bfaa957434fee&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+CLASSICA古典樂,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dfcb1fb1f975fbd1431e7936e820110f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+MyCinemaEuropeHD我的歐洲電影,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0624a3b57708e393ccac1f0f43cbfb30&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+超人力霸王《劇場版》FastTV飛速看,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8bdf9930c85390c5ec6581944b2a9e57&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TV5MONDESTYLEHD生活時尚,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4678abfed193d1f4016562d975b6f1f8&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TRACEUrban,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=70809b31476623fe7545b77a71b99469&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+經典電影台,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6679c5476f8e812f90ccc4f2e89e411b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TLC,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e12a8b6e18ee3d67dc8153f4f4713a40&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TSN3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=aef11144ac3826c4f233d0883d3183d7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+NBCGolf,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3f38b8457b53ac88a2d9282cf0f95d40&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+AI-Jazeera,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e21c4275e3a649cd7a6542533c368fa5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+卫视西片,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=16d79ddbcd37e98dfa8c2fb8c13432e0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+探索科学,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c18915c5c541457427e55d4ba581145b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+龙翔时代,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=64cd095ee5ba83e158dff08128b404f7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+博斯高球2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0dce29da9b2b661a7478c59c8f98a965&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+博斯运动2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a17846b9e90602ba01c34fe8e8ec8698&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Sky新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=20936bb87e163aaa649b13e524663a8d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+ABC新闻,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=447d30ed2335f7b1f48972388255e975&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+One,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=06c2cea18679d64399783748fa367bdd&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+OneGolf,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ac06a1ed7480001deef3db0ea4bb5fa8&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+探索亚洲,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ed32c2ef7e298cba849f60088937eddb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+博斯高球1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=991cdb578c9d65405a125a43787d1013&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+EURONews,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3702c12ce70f311f007e5c79cce389e7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Z,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=21c2e59531c8710156d34a3c30ac81d5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+博斯运动1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=753b7916fbb83bd2eb7027ad6f0a8c60&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+FoxNews,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8a0724f70d85166ddd43b31d7dd6068e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+国家地理,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6f9dfb9eedca353592e62363ae699c6f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HitsMovies,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b43cc98a0992bb3e80ee01e49c8f9cec&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+智林体育,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=4e9e366a66724537301358540ea1c699&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+BBC_Lifestyle,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=700dfd7caf80a973e4d0659b37c6055c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
地方频道3,#genre#
-TRACESportStars,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=635b45fbf2cc2c7b8d9bef552fb54dc2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TSN3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=aef11144ac3826c4f233d0883d3183d7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-博斯高球2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0dce29da9b2b661a7478c59c8f98a965&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-博斯运动2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a17846b9e90602ba01c34fe8e8ec8698&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-博斯高球1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=991cdb578c9d65405a125a43787d1013&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-博斯运动1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=753b7916fbb83bd2eb7027ad6f0a8c60&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SkysportsMainEvent,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ed43dbcb7d29761c5b0c1fe243bba261&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-DAZN1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3a10bc67373a5096caf80578e6fcc5a5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-FightSports,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=67149fb54dd49015be0525199811ee15&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-NBA2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3ea36376134d8419c498d42b66790107&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-NBA3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1cb5c2dd809ef8c3eec558f6579d9043&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SkysportsEPL,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1ab2a408616ae081a4306ec149c808c5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-astro-Golf,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f76882c1a389185b52ae3dfe8de303e4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TNTSports3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e8336592db41413be242178ce41e3191&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-astro-Arena2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8dc98a496b3ae52d9f7c72d38e5af5c5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SkysportsCricket,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e25bc0b3307d14c72bcb188c3c2381b7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SkysportsMix,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6963c01e040b00f566848aabc35b598b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SkysportsF1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ff7b51b3f1de2465a32dca52de817dbe&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-astro-Grandstand,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8120e14ef939c0296d79b8c4d71d1dd0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-astro-PremierLeague2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c3fcc7dc02ddc289b43127bdd0906296&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-astro-arenaBalu,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3fbe463e309fd14dd9806d3affe4d0ef&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-博斯无限,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c29f170a29c5309e0e333e0de4a8b710&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-JSPORTS3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7990224232821f2ec68ef94f6d0671a4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-搏斯魅力,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d258c800545ff3719951b66620bf775c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TNTSports1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9b3d26218a5e54169a23b5328cb66e85&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-JSPORTS2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=837f6b64b2434b55c65ac3b3ca31b175&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-astro-Arena,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=842100c3c00e9f26a5029499c9e4bdd3&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-astro-Badminton1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2ea17cfe05cabb1846fbfc3c1df3eaca&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-astro-PremierLeague1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2527c3860f9371c85d90569cf529de44&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-astro-Badminton2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f98f3f3faefb6ed22599286c64b7ed89&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-FUBO-Sports,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f732874a7998e4c4b3469bf8721ffd08&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-ESPN,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7b0ef842a6a1233a8a86a8533063a1a1&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-JSPORTS1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b5fae0a7cfa3ca10e30d00d48f9527e9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TNTSports4,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=fac075ed117ef34d5675b891d346b1b5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-astro-Football,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=86df78c9f7ad5ae86f5155bbd997d034&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-NBATV,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2d3c85f4e06f13535a15a2449cd23a33&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-博斯网球,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=bb53a965d8812441c05b9be0f95ebf0c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-astro-Cricket,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ee33cf13050777c834262d21ca1a8885&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-NBA1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dff685a1d3c12950f4c3300d63170e35&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-astro-SportsPlus,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5b21c2caa039110608685b206f359485&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-博斯无限2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=653dcf34abf7afd5209cefebd2934d81&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-ESPN2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2b08df484abe36bfddad540d3894a8c6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SPOTV1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=67331ec5a62169075f2cc87ae961bdea&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-astro-Sports,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d82eb71601d9a70c2a20a3c5bb6e3edf&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-astro-ArenaBola,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ef409939853488145f301893879489bb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-DAZN2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dca699d0b62b0b76119d49da04e77a8d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SkyTennis+,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=94a945ab7e8548ff251b242809354014&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-JSPORTS4,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f0f10dba9ec2f1dfe349d0f73176a42b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SkyTennis,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=912a6d482ea3afc3b7742fbf6cc17901&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TNTSports2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f2e8809380fb77857d1e9c477884aea4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SPOTV2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6dc85444fa886da9b3cd668175d608fd&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-MUTV,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=50e67d468d54cd43a2bd100b5ef8a53e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-beINSports2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6e5961dfdea4cfc915e53eae999aa0ea&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-astro-PL2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e36045a75c9d2d608df258ff0ee29cbb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HubPremier1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6c778eed3c33dcf4b468445331fda147&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SkyArena,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=617249d71f02defe144ec1dfbebf7c92&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HubSports2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=cd50109b0e57b53836873a92b75cbac0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SkyNews,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=bf4571b94429c5b18e0a219c197a56a4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HubPremier6,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2b039b2da7556559da8a324ef4397836&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SkyPL,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=16c345fdc57f0e9e08b08d26db4e6c9d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-WWENetwork,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c7a47d2cb5cbdcfa8f7c66fd931d49da&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SkyMainEvent,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a5c4a3b28d5e0aed8e581db7f0f8dbf0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TSN5,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ab21fbb19cc2b748fd1954640f5425cc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-愛爾達體育1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=707eb6ef051ec10020b4be99d26007d9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HubPremier3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5e11e43b3daf20610747a0d45ef993e6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TSN4,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=bffcd12bcf6dbb007857e38fc84f6954&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-GolfChannel,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e8734b60b2a8e710bbfe7eabd0d9f878&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SkyMix,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c270fa9113c1f257603fd7553ff45455&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SkyCricket,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8b0feb12f6d5af777f4c64cf24216759&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SkyRacing,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b60da5faaf13d3a5e517f2c5ccb033a8&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-beINSports3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c6bc952ed3c182630eb5bea3ff397d2b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HubPremier7,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6903f21111ce5690e688904225e8d995&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HubSports1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=15b10b4bd8e11d6389a86c0ece436617&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HubPremier4,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=58909c145718964e783a38b6812e340b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-PremierSports,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a5e54b0a2e09901929a516aa472c0f76&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HubSports4,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c366c35ae46d3747e69d123e94c45c78&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-W-Sport,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=18abaedd99580124b83e16e92c5fc2b6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TNTSports5,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1fa50b35f6c2c4a9a7b25b895d0ad1c4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-astro-PL1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=acf5dbca94134994ce32a1d1bb8d7b43&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-愛爾達體育3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ebcca025996ec36d1fe8e0c67d143286&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SkyGolf,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2609dd8d4d4209212024c1665d3cca36&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HubSports3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=38e814c394458a19a0bc2517495f1382&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HubSports5,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1272e7fe68629d3c851d13c8e2a1bf0f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SkyFootball,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=cf4e9a2d3dcde1509ade6a7eec649193&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TSN2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a1172362ca55bd588401a246b8d29a90&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-astro-ArenaBola2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=825b541322e0e03be7946cd2e43d81a7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-智林體育,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d6fe5d18bd08ba677be24058b1239a26&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-Z頻道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8b0cf65cfc1701e82783692301fb1661&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-GinxTV電競頻道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=691236c244243b921559b3e03ab37af6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HubPremier2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=92a30649e97445794c1133ba4bf4c44e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-astro-PL3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f6653942cd279e7004dd4967010fca78&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-beINSports1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=bf4c956c53dc4e1a079e3f3d5efe5bb6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-HubPremier5,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7630ab83ce5e5515af69f23c10e69939&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-愛爾達體育2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=df8d4898ccf64ad6b4ebdcf08fb3b6ae&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-ESPNU,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5440a61f0efbd41a7278e9711d047187&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-TSN1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0d16b0b2434bc9a17ef099b51f19c2f5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-SkyAction,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0c4a0d3eb8e0fa441956624c13b7852b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-PremierSports1Uk,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8c6c238e8be09a07b30012ccb2fe9aeb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
-PremierSports2Uk,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a6923227741a3f1fab2330fb4d31bbef&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=28d145e5058bfa37
+TRACESportStars,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=635b45fbf2cc2c7b8d9bef552fb54dc2&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TSN3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=aef11144ac3826c4f233d0883d3183d7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+博斯高球2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0dce29da9b2b661a7478c59c8f98a965&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+博斯运动2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a17846b9e90602ba01c34fe8e8ec8698&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+博斯高球1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=991cdb578c9d65405a125a43787d1013&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+博斯运动1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=753b7916fbb83bd2eb7027ad6f0a8c60&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SkysportsMainEvent,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ed43dbcb7d29761c5b0c1fe243bba261&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+DAZN1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3a10bc67373a5096caf80578e6fcc5a5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+FightSports,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=67149fb54dd49015be0525199811ee15&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+NBA2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3ea36376134d8419c498d42b66790107&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+NBA3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1cb5c2dd809ef8c3eec558f6579d9043&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SkysportsEPL,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1ab2a408616ae081a4306ec149c808c5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+astro-Golf,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f76882c1a389185b52ae3dfe8de303e4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TNTSports3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e8336592db41413be242178ce41e3191&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+astro-Arena2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8dc98a496b3ae52d9f7c72d38e5af5c5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SkysportsCricket,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e25bc0b3307d14c72bcb188c3c2381b7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SkysportsMix,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6963c01e040b00f566848aabc35b598b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SkysportsF1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ff7b51b3f1de2465a32dca52de817dbe&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+astro-Grandstand,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8120e14ef939c0296d79b8c4d71d1dd0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+astro-PremierLeague2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c3fcc7dc02ddc289b43127bdd0906296&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+astro-arenaBalu,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=3fbe463e309fd14dd9806d3affe4d0ef&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+博斯无限,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c29f170a29c5309e0e333e0de4a8b710&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+JSPORTS3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7990224232821f2ec68ef94f6d0671a4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+搏斯魅力,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d258c800545ff3719951b66620bf775c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TNTSports1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=9b3d26218a5e54169a23b5328cb66e85&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+JSPORTS2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=837f6b64b2434b55c65ac3b3ca31b175&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+astro-Arena,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=842100c3c00e9f26a5029499c9e4bdd3&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+astro-Badminton1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2ea17cfe05cabb1846fbfc3c1df3eaca&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+astro-PremierLeague1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2527c3860f9371c85d90569cf529de44&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+astro-Badminton2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f98f3f3faefb6ed22599286c64b7ed89&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+FUBO-Sports,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f732874a7998e4c4b3469bf8721ffd08&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+ESPN,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7b0ef842a6a1233a8a86a8533063a1a1&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+JSPORTS1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b5fae0a7cfa3ca10e30d00d48f9527e9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TNTSports4,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=fac075ed117ef34d5675b891d346b1b5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+astro-Football,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=86df78c9f7ad5ae86f5155bbd997d034&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+NBATV,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2d3c85f4e06f13535a15a2449cd23a33&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+博斯网球,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=bb53a965d8812441c05b9be0f95ebf0c&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+astro-Cricket,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ee33cf13050777c834262d21ca1a8885&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+NBA1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dff685a1d3c12950f4c3300d63170e35&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+astro-SportsPlus,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5b21c2caa039110608685b206f359485&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+博斯无限2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=653dcf34abf7afd5209cefebd2934d81&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+ESPN2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2b08df484abe36bfddad540d3894a8c6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SPOTV1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=67331ec5a62169075f2cc87ae961bdea&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+astro-Sports,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d82eb71601d9a70c2a20a3c5bb6e3edf&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+astro-ArenaBola,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ef409939853488145f301893879489bb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+DAZN2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=dca699d0b62b0b76119d49da04e77a8d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SkyTennis+,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=94a945ab7e8548ff251b242809354014&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+JSPORTS4,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f0f10dba9ec2f1dfe349d0f73176a42b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SkyTennis,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=912a6d482ea3afc3b7742fbf6cc17901&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TNTSports2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f2e8809380fb77857d1e9c477884aea4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SPOTV2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6dc85444fa886da9b3cd668175d608fd&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+MUTV,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=50e67d468d54cd43a2bd100b5ef8a53e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+beINSports2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6e5961dfdea4cfc915e53eae999aa0ea&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+astro-PL2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e36045a75c9d2d608df258ff0ee29cbb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HubPremier1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6c778eed3c33dcf4b468445331fda147&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SkyArena,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=617249d71f02defe144ec1dfbebf7c92&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HubSports2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=cd50109b0e57b53836873a92b75cbac0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SkyNews,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=bf4571b94429c5b18e0a219c197a56a4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HubPremier6,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2b039b2da7556559da8a324ef4397836&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SkyPL,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=16c345fdc57f0e9e08b08d26db4e6c9d&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+WWENetwork,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c7a47d2cb5cbdcfa8f7c66fd931d49da&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SkyMainEvent,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a5c4a3b28d5e0aed8e581db7f0f8dbf0&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TSN5,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ab21fbb19cc2b748fd1954640f5425cc&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+愛爾達體育1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=707eb6ef051ec10020b4be99d26007d9&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HubPremier3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5e11e43b3daf20610747a0d45ef993e6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TSN4,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=bffcd12bcf6dbb007857e38fc84f6954&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+GolfChannel,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=e8734b60b2a8e710bbfe7eabd0d9f878&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SkyMix,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c270fa9113c1f257603fd7553ff45455&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SkyCricket,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8b0feb12f6d5af777f4c64cf24216759&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SkyRacing,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=b60da5faaf13d3a5e517f2c5ccb033a8&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+beINSports3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c6bc952ed3c182630eb5bea3ff397d2b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HubPremier7,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=6903f21111ce5690e688904225e8d995&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HubSports1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=15b10b4bd8e11d6389a86c0ece436617&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HubPremier4,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=58909c145718964e783a38b6812e340b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+PremierSports,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a5e54b0a2e09901929a516aa472c0f76&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HubSports4,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=c366c35ae46d3747e69d123e94c45c78&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+W-Sport,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=18abaedd99580124b83e16e92c5fc2b6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TNTSports5,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1fa50b35f6c2c4a9a7b25b895d0ad1c4&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+astro-PL1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=acf5dbca94134994ce32a1d1bb8d7b43&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+愛爾達體育3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=ebcca025996ec36d1fe8e0c67d143286&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SkyGolf,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=2609dd8d4d4209212024c1665d3cca36&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HubSports3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=38e814c394458a19a0bc2517495f1382&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HubSports5,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=1272e7fe68629d3c851d13c8e2a1bf0f&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SkyFootball,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=cf4e9a2d3dcde1509ade6a7eec649193&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TSN2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a1172362ca55bd588401a246b8d29a90&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+astro-ArenaBola2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=825b541322e0e03be7946cd2e43d81a7&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+智林體育,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=d6fe5d18bd08ba677be24058b1239a26&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+Z頻道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8b0cf65cfc1701e82783692301fb1661&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+GinxTV電競頻道,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=691236c244243b921559b3e03ab37af6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HubPremier2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=92a30649e97445794c1133ba4bf4c44e&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+astro-PL3,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=f6653942cd279e7004dd4967010fca78&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+beINSports1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=bf4c956c53dc4e1a079e3f3d5efe5bb6&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+HubPremier5,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=7630ab83ce5e5515af69f23c10e69939&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+愛爾達體育2,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=df8d4898ccf64ad6b4ebdcf08fb3b6ae&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+ESPNU,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=5440a61f0efbd41a7278e9711d047187&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+TSN1,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0d16b0b2434bc9a17ef099b51f19c2f5&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+SkyAction,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=0c4a0d3eb8e0fa441956624c13b7852b&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+PremierSports1Uk,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=8c6c238e8be09a07b30012ccb2fe9aeb&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+PremierSports2Uk,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a6923227741a3f1fab2330fb4d31bbef&token=MO9fE3b9swtXd8K26mW1CeKqfWEf4gkD&actoken=35c8245c90e55ee7
+
+
@@ -2185,7 +2187,7 @@ PremierSports2Uk,http://gat.xyys.site/cdnlive-fusion.php?mode=play&id=a692322774
免费会员密码1,http://120.220.76.91:2003/zhao.php?id=CCTV6
-免费会员密码,http:///zhao.php?id=姹熻嫃鍗
+免费会员密码,http://120.220.76.91:2003/zhao.php?id=20060
鳳凰中文,http://39.175.52.28:2101/1234.php?id=20060
鳳凰资讯,http://39.175.52.28:2101/1234.php?id=20061
鳳凰香港,http://39.175.52.28:2101/1234.php?id=20062
diff --git a/tvbox/aa.json b/tvbox/aa.json
index 782272a4..b7eb5a6f 100755
--- a/tvbox/aa.json
+++ b/tvbox/aa.json
@@ -36,9 +36,25 @@
},
"changeable": 1
},
+ {
+ "key": "油管py",
+ "name": "油管 | PY",
+ "type": 3,
+ "api": "./py/ytb.py",
+ "searchable": 1,
+ "quickSearch": 1,
+ "style": {
+ "type": "rect",
+ "ratio": 1.33
+ },
+ "ext": {
+ "count": "./lib/yt2.json"
+ },
+ "filterable": 1
+ },
{
"key": "油管so",
- "name": "油管视频",
+ "name": "油管 | SO",
"type": 3,
"api": "csp_ProxySpider",
"searchable": 1,
@@ -46,7 +62,7 @@
"ext": {
"class": "Ytdl",
"ext": {
- "youtube_txt": "./lib/youtube.json"
+ "youtube_txt": "./lib/yt2.json"
},
"style": {
"type": "rect",
@@ -64,7 +80,7 @@
"quickSearch": 1,
"ext": {
"class": "YoutubeSpidertv",
- "ext": "./lib/youtube.json"
+ "ext": "./lib/yt2.json"
},
"style": {
"type": "rect",
diff --git a/tvbox/bb.json b/tvbox/bb.json
index 3b9f59e5..b5b51076 100755
--- a/tvbox/bb.json
+++ b/tvbox/bb.json
@@ -10,7 +10,7 @@
"ext": {
"class": "Ytdl",
"ext": {
- "youtube_txt": "./lib/youtube.json"
+ "youtube_txt": "./lib/yt2.json"
},
"style": {
"type": "rect",
@@ -28,7 +28,7 @@
"quickSearch": 1,
"ext": {
"class": "YoutubeSpidertv",
- "ext": "./lib/youtube.json"
+ "ext": "./lib/yt2.json"
},
"style": {
"type": "rect",
diff --git a/tvbox/box.json b/tvbox/box.json
index b19ebaf4..aed2aab1 100755
--- a/tvbox/box.json
+++ b/tvbox/box.json
@@ -108,6 +108,13 @@
"api": "csp_XBPQ",
"ext": "./js/s/大白鲨.json"
},
+ {
+ "key": "奇优",
+ "name": "奇优影院(没好",
+ "type": 3,
+ "api": "csp_XBPQ",
+ "ext": "./js/s/奇优.json"
+ },
{
"key": "2",
"name": "--- 2 ---"
@@ -1215,7 +1222,8 @@
"PPTV",
"migu"
],
- "spider": "./jar/xbpq.jar;md5;./jar/xbpq.jar.md5",
+ "danmaku": "https://127.0.0.1:9978/proxy?do=danmaku&name={name}&episode={episode}",
+ "spider": "./jar/xb.jar",
"disabled_wallpaper": "./img/0.jpg",
"wallpaper": "./img/0.jpg",
"logo": "./img/pg.gif",
diff --git a/tvbox/fun.json b/tvbox/fun.json
index cc271387..96ef6664 100755
--- a/tvbox/fun.json
+++ b/tvbox/fun.json
@@ -21,6 +21,14 @@
"api": "./py/51吸瓜.py",
"ext": ""
},
+ {
+ "key": "xp天堂",
+ "name": "XP天堂",
+ "type": 3,
+ "filterable": 0,
+ "changeable": 0,
+ "api": "./js/xp天堂.js"
+ },
{
"key": "Jable",
"name": "Jable",
diff --git a/tvbox/jar/pro.jar b/tvbox/jar/pro.jar
index 4fa67d1d..1bbdd550 100644
Binary files a/tvbox/jar/pro.jar and b/tvbox/jar/pro.jar differ
diff --git a/tvbox/jar/pro.jar.md5 b/tvbox/jar/pro.jar.md5
index babc9f8a..ef532350 100644
--- a/tvbox/jar/pro.jar.md5
+++ b/tvbox/jar/pro.jar.md5
@@ -1 +1 @@
-b5607360445087320ea3dadba0b543f9
+ed8ac8071f355c035b2306a81ae46627
diff --git a/tvbox/js/s/奇优.json b/tvbox/js/s/奇优.json
new file mode 100644
index 00000000..157c10ba
--- /dev/null
+++ b/tvbox/js/s/奇优.json
@@ -0,0 +1,26 @@
+{
+ "请求头": "手机",
+ "主页url": "http://www.qiyoudy2.com/",
+ "状态": "地区:&&",
+ "导演": "导演:&&",
+ "主演": "主演:&&",
+ "简介": "简介:&&",
+ "数组": "
&&",
+ "图片": "data-original=\"&&\"",
+ "标题": "title=\"&&\"",
+ "副标题": "text-right\">&&",
+ "链接": "href=\"&&\"",
+ "搜索url": "http://www.qiyoudy2.com/search.php;post;searchword={wd}",
+ "搜索数组": "v-thumb stui-vodlist__thumb&&[不包含:伦理#韩语中字#日语中字#高清中字#日本中字#高清#HD中字#日本#韩国#HD]",
+ "搜索图片": "data-original=\"&&\"",
+ "搜索标题": "title=\"&&\"",
+ "搜索副标题": "text-right\">&&",
+ "搜索链接": "href=\"&&\"",
+ "线路数组": "href=\"#down&&/a>[替换:播放源1>>七月大佬一线#播放源2>>七月大佬二线#播放源3>>七月大佬三线#播放源4>>七月大佬四线]",
+ "线路标题": ">&&",
+ "播放数组": "stui-content__playlist clearfix&&",
+ "播放列表": "
&&",
+ "播放标题": ">&&",
+ "分类url": "http://www.qiyoudy2.com/list/{cateId}_{catePg}.html;;ak",
+ "分类": "电影$1#电视剧$2#动漫$3#综艺$4#伦理$6"
+}
\ No newline at end of file
diff --git a/tvbox/js/xp天堂.js b/tvbox/js/xp天堂.js
new file mode 100644
index 00000000..1d7ff43f
--- /dev/null
+++ b/tvbox/js/xp天堂.js
@@ -0,0 +1,433 @@
+import cheerio from 'assets://js/lib/cheerio.min.js';
+
+
+const sites = [
+ 'https://dzsx5k01kgm6y.cloudfront.net',//这个可以直连
+ 'https://attack.bjidvlyog.com',
+ 'https://agency.bjidvlyog.com/'
+]
+const baseUrl = sites[0];
+const UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36";
+
+function mylog() {
+ const TAG = "xp天堂18+";
+ console.log(TAG, ...arguments)
+}
+async function init(extend) { }
+
+
+let cachedClasses = [];
+let cachedFilters = {};
+let hasParsed = false;
+
+/**
+ * 1. 动态获取并解析全量的一级分类 (class)
+ */
+async function home(filter) {
+ try {
+ // 1. 请求首页或者含有这个导航 container 的网页源码
+ const html = await req(baseUrl).content; // 如果是在特定页面,把 baseUrl 改为对应路径
+ const $ = cheerio.load(html);
+ let classes = [];
+ let filters = {};
+
+ // 标准的排序规则
+ const sortFilter = [
+ {
+ key: "sort",
+ name: "排序",
+ value: [
+ { n: "最近更新", v: "update" },
+ { n: "最高收藏", v: "favorite" },
+ { n: "近期最佳", v: "hot" },
+ { n: "最多观看", v: "watch" }
+ ]
+ }
+ ];
+
+ // 2. 扫一遍所有的 container 区块,全量榨干“选片”和“标签”
+ $('.app-nav .container').each((index, element) => {
+ // 抓取区块的标题(比如“选片”)
+ const blockTitle = $(element).find('.title-box h2').text().trim();
+
+ // === 自动解析【选片主题】块 ===
+ if (blockTitle.includes("选片") || blockTitle.includes("主题")) {
+ $(element).find('a.tjtagmanager').each((i, el) => {
+ const name = $(el).text().trim();
+ let href = $(el).attr('href') || '';
+
+ // 砍掉末尾自带的 /favorite/ 或 /update/,还原成纯净的 ID 路径
+ // 例如: /theme/detail/64/favorite/ -> /theme/detail/64
+ href = href.replace(/\/(favorite|update|hot|watch)\/?$/, '');
+
+ if (href && name) {
+ classes.push({ type_id: href, type_name: name });
+ filters[href] = sortFilter; // 给它绑定排序筛选
+ }
+ });
+ }
+
+ // === 自动解析【平级标签】块 ===
+ // 根据特征:含有 .tag 类的 a 标签
+ if ($(element).find('a.tag').length > 0) {
+ $(element).find('a.tag').each((i, el) => {
+ const name = $(el).text().trim();
+ let href = $(el).attr('href') || '';
+
+ // 砍掉末尾可能自带的排序后缀(如 /hot/)和开头的斜杠,还原成纯净的 ID 路径
+ // 例如: /tags/9540/hot/ -> /tags/9540
+ href = href.replace(/\/(favorite|update|hot|watch)\/?$/, '');
+
+ if (href && name) {
+ // 加上前缀或者小图标区分标签和主题
+ classes.push({ type_id: href, type_name: `🏷️ ${name}` });
+ filters[href] = sortFilter; // 给标签也绑定平级的排序筛选
+ }
+ });
+ }
+ });
+
+ // 3. 缓存结果,防止后续调用 homeFilter 时二次请求浪费时间
+ // 暂时过滤资讯和回家
+ cachedClasses = classes.filter(item => !item.type_name.includes("资讯")&&!item.type_name.includes('回家'));
+ cachedFilters = filters;
+ hasParsed = true;
+ return JSON.stringify({
+ class: cachedClasses,
+ filters: await homeFilter()
+ });
+
+ } catch (e) {
+ console.error("❌ 全自动解析 class 失败: ", e.message);
+ // 崩溃兜底,防止壳子黑屏
+ return JSON.stringify({ class: [] });
+ }
+}
+
+/**
+ * 2. 完美的平级筛选逻辑
+ */
+async function homeFilter() {
+ mylog("开始解析筛选逻辑");
+ // 如果已经解析过了,直接扔出缓存结果
+ if (hasParsed) {
+ return cachedFilters;
+ }
+ // 理论上壳子会先执行 home 再执行 homeFilter,如果未解析则返回空对象防错
+ return {};
+}
+
+function fixVodName(name = "") {
+ return name.trim().split(" ").slice(1, -1).join("");
+}
+
+// async function parseArticleList(html) {
+// // 确保已经加载了 cheerio
+// const $ = cheerio.load(html);
+// const list = [];
+
+// // 针对每个视频卡片进行遍历
+// $('.video-img-box').each((index, element) => {
+// const titleEl = $(element).find('h3.title a.text');
+// const imgEl = $(element).find('img.zximg');
+// const descEl = $(element).find('p.sub-title');
+
+// // 提取核心数据
+// const vod_id = titleEl.attr('href') || '';
+// const vod_name = titleEl.text().trim();
+
+// // 关键点:提取自定义属性 z-image-loader-url
+// const vod_pic = imgEl.attr('z-image-loader-url') || '';
+
+// // 提取备注(简介/日期)
+// const vod_remarks = descEl.text().trim();
+
+// // 过滤掉无效数据(如果没有链接或标题则跳过)
+// if (vod_id && vod_name) {
+// list.push({
+// vod_id: vod_id, // 对应详情页接口的参数
+// vod_name: vod_name, // 列表显示的标题
+// vod_pic: vod_pic, // 封面图
+// vod_remarks: vod_remarks // 列表右上角的备注信息
+// });
+// }
+// });
+
+// return JSON.stringify({ list: list });
+// }
+
+// ⭐ 优化 1:分类页采用 Promise.all 并发多线程解析
+async function category(tid, pg, filter, extend) {
+ try {
+ if(!tid) return JSON.stringify({ list: [] });
+ pg = pg || 1;
+ // const url = baseUrl + tid + (extend.type || '') + `/${pg}/`;
+
+ const sort = extend.sort || '';
+
+
+ let url = `${baseUrl}${tid}/${sort}/${pg}/`;
+ mylog(`🚀 正在请求分类URL: ${url}`);
+
+ // if (tid.includes('article')) {
+ // url = baseUrl + tid
+ // mylog(`🚀 正在请求分类URL: ${url}`);
+
+ // const html = (await req(url)).content;
+ // const $ = cheerio.load(html);
+ // return parseArticleList(html)
+ // }
+
+
+ const html = (await req(url)).content;
+ const $ = cheerio.load(html);
+
+ const videoElements = $('.col-6.col-sm-4.col-lg-3').toArray();
+
+ // 将每一项的解析包装成独立的异步任务(不阻塞彼此)
+ const tasks = videoElements.map(async (el) => {
+ const item = $(el).find('.video-img-box a');
+ const href = item.attr('href') || '';
+
+ if (href.includes('/videos/')) {
+ const vod_id = href;
+ let vod_name = $(el).find('.title a').text().trim();
+ vod_name = fixVodName(vod_name);
+
+ const watchCount = $(el).find('span[class^="interaction_watch_count_"]').text().trim() || '';
+ const vod_remarks = watchCount && (watchCount + "播放");
+ const vod_year = $(el).find('.label').text().trim();
+
+ let vod_pic = $(el).find('img.zximg').attr('z-image-loader-url') || '';
+
+ // 并发执行:所有的图片解密网络请求同时发出
+ vod_pic = await getRealImgurl(vod_pic);
+
+ return {
+ vod_id,
+ vod_name,
+ vod_pic,
+ vod_year,
+ vod_remarks,
+ land: 1,
+ ratio: 1.78
+ };
+ }
+ return null;
+ });
+
+ // ⭐ 核心:静静等待所有并发任务一起完成
+ const results = await Promise.all(tasks);
+ // 过滤掉广告(null数据)
+ let list = results.filter(item => item !== null);
+
+ // 分页逻辑
+ let total = $('ul.dx-pager ').attr("data-rec-total");
+ let perPageCount = $('ul.dx-pager ').attr("data-rec-per-page");
+ const pagecount = Math.ceil(total / perPageCount);
+
+ mylog(`category 成功并发抓取有效视频数: ${list.length}`);
+
+ return JSON.stringify({ list, pagecount });
+
+ } catch (e) {
+ mylog(e);
+ return JSON.stringify({ list: [] });
+ }
+}
+
+
+/**
+ * 专用函数:解析“文章类型”页面
+ */
+// async function parseArticleDetail($, id) {
+// const vod_name = $('h1').text().trim();
+// // 优先读取 textarea 的 Markdown 内容
+// const vod_content = $('textarea').text().trim() || $('.text-content').text().trim();
+
+// let play_url = "";
+
+// // 逻辑:从 Markdown 内容中正则提取播放地址
+// const match = vod_content.match(/\(\/(videos|play)\/([^\/]+)\/\)/);
+// if (match) {
+// play_url = match[0].replace(/[()]/g, '');
+// } else {
+// // 兜底:搜索页面上的链接
+// const link = $('a[href*="/videos/"]').first().attr('href');
+// if (link) play_url = link;
+// }
+
+// return JSON.stringify({
+// list: [{
+// vod_name: vod_name,
+// vod_content: vod_content,
+// vod_play_from: play_url ? "XP天堂" : "文章内容",
+// vod_play_url: play_url ? `立即播放$${play_url}` : ""
+// }]
+// });
+// }
+async function detail(vid) {
+ try {
+ const url = baseUrl + vid;
+ const html = (await req(url)).content;
+ const $ = cheerio.load(html);
+
+ // if (vid.includes('/article/')) {
+ // return await parseArticleDetail($, vid);
+ // }
+
+ let vod_name = $('h1.my-foldable-content').text().trim();
+ let vod_pic = $('#player').attr('data-src') || '';
+ vod_pic = await getRealImgurl(vod_pic);
+
+ // 🔍 1. 精准提取标签,确保没有任何前后空格
+ let tagsArray = [];
+ $('h5.tags a').each((i, el) => {
+ let tagName = $(el).text().trim();
+ if (tagName) tagsArray.push(tagName);
+ });
+
+ let vod_actor = tagsArray.join('/');
+ let vod_class = tagsArray.join(' ');
+
+ // 🔍 3. 备用保险:利用 CLICKER 规则,在简介里生成绝对能跳转的超链接
+ let vod_content = "(todo)标签快捷搜索:\n";
+ tagsArray.forEach(tag => {
+ // 拼接蜂蜜专属的底层的 CLICKER 格式
+ vod_content += `[a=cr:{"action":"category","key":"${tag}"}/]【${tag}】[/a] `;
+ });
+
+ // 提取播放地址
+ const regex = /https?:\/\/[^\s"'`]+\.m3u8(?:\?[^\s"'`]+)?/g;
+ const match = html.match(regex);
+ let hlsUrl = match ? match[0] : '';
+
+ const lines = ["hls线路"];
+ const vod_play_from = lines.join("$$$");
+ const playlistArray = [`正片\$${hlsUrl}`];
+ const vod_play_url = playlistArray.join('$$$');
+
+ const watchCount = $('.video-info span[class^="interaction_watch_count_"]').text().trim().toUpperCase() || '';
+ const favorite_count = $('#bind_collect_count').text().trim().toUpperCase() || '';
+ let vod_remarks = watchCount && (watchCount + "播放");
+ vod_remarks += favorite_count && (" | " + favorite_count + "收藏");
+
+ const back = {
+ vod_id: vid,
+ vod_remarks,
+ vod_name: vod_name,
+ vod_pic: vod_pic,
+ vod_content: vod_content, // 👈 简介里会显示高亮可点击的标签
+ vod_actor: vod_actor, // 👈 演员药丸标签(已剔除空格坑)
+ vod_class: vod_class, // 👈 类型标签(多重兼容兜底)
+ vod_play_from,
+ vod_play_url
+ };
+
+ return JSON.stringify({ list: [back] });
+ } catch (e) {
+ mylog(e);
+ return JSON.stringify({ list: [] });
+ }
+}
+// ⭐ 优化 2:搜索页同样采用 Promise.all 并发加速
+async function search(key, quick, page) {
+ try {
+ page = page || 1;
+
+ const url = baseUrl + `/search/${key}/${page}/`;
+ mylog(`正在搜索: ${url}`);
+
+ const html = (await req(url)).content;
+ const $ = cheerio.load(html);
+
+ const searchElements = $('.video-img-box').toArray();
+
+ const tasks = searchElements.map(async (el) => {
+ const a = $(el).find('.img-box > a');
+ const vod_id = $(a).attr('href') || '';
+ const vod_name = $(a).find('img').attr('alt') || '';
+ let vod_pic = $(a).find('img.zximg').attr('z-image-loader-url') || '';
+
+ if (vod_pic) {
+ vod_pic = await getRealImgurl(vod_pic);
+ }
+
+ const vod_remarks = $(el).find('.absolute-bottom-right .label').text().trim();
+
+ return {
+ vod_id: vod_id,
+ vod_name: fixVodName(vod_name),
+ vod_pic: vod_pic,
+ vod_remarks: vod_remarks
+ };
+ });
+
+ const list = await Promise.all(tasks);
+
+ // 分页逻辑
+ let total = $('ul.dx-pager ').attr("data-rec-total");
+ let perPageCount = $('ul.dx-pager ').attr("data-rec-per-page");
+ const pagecount = Math.ceil(total / perPageCount);
+ return JSON.stringify({
+ list,
+ pagecount
+ });
+ } catch (e) {
+ mylog(e);
+ return JSON.stringify({ list: [] });
+ }
+}
+async function play(flag, id, vipFlags) {
+ return JSON.stringify({
+ parse: 0,
+ url: id,
+ header: { "User-Agent": UA, "Referer": baseUrl }
+ });
+}
+async function getRealImgurl(imgurl) {
+ try {
+ if (!imgurl) return "";
+ let res = await req(imgurl, {
+ method: "get",
+ headers: {
+ "User-Agent": UA,
+ "Referer": "https://wuabeza.gyqspl.cn/"
+ },
+ buffer: 2
+ });
+
+ const encryptedBase64 = res.content;
+ if (!encryptedBase64) return "";
+
+ let realImageBase64 = aesX(
+ "AES/CBC/No",
+ false,
+ encryptedBase64,
+ true,
+ "f5d965df75336270",
+ "97b60394abc2fbe1",
+ true
+ );
+
+ if (!realImageBase64) return "";
+
+ let ext = "jpeg";
+ if (imgurl.toLowerCase().indexOf(".gif") !== -1) {
+ ext = "gif";
+ } else if (imgurl.toLowerCase().indexOf(".png") !== -1) {
+ ext = "png";
+ }
+
+ const back = "data:image/" + ext + ";base64," + realImageBase64;
+
+ // ⭐ 优化 3:【核心改动】删除了原先直接打印超长 base64 的 mylog,改为只打印长度,解放系统 CPU
+ // mylog("[base64] ", back);
+
+ return back;
+ } catch (e) {
+ return "";
+ }
+}
+
+export default { init, home, category, detail, search, play };
\ No newline at end of file
diff --git a/tvbox/jsm.json b/tvbox/jsm.json
index 18d364b3..6cdaaff5 100644
--- a/tvbox/jsm.json
+++ b/tvbox/jsm.json
@@ -177,26 +177,18 @@
"filterable": 1,
"timeout": 60,
"ext": {
- "key": "PanSouGo",
- "name": "PanSou",
- "type": 3,
- "api": "csp_PanSouGo",
- "searchable": 1,
- "changeable": 0,
- "ext": {
- "token": "./lib/tokenm.json",
- "siteurl": "",
- "proxy": "noproxy",
- "danmu": "0",
- "plugins": "all",
- "panlist": "all",
- "filters": {
- "include": [],
- "exclude": [
- "广告",
- "预告"
- ]
- }
+ "token": "./lib/tokenm.json",
+ "siteurl": "",
+ "proxy": "noproxy",
+ "danmu": "0",
+ "plugins": "all",
+ "panlist": "all",
+ "filters": {
+ "include": [],
+ "exclude": [
+ "广告",
+ "预告"
+ ]
}
}
},
@@ -314,7 +306,7 @@
"changeable": 1,
"filterable": 1,
"timeout": 60,
- "ext": "./lib/tokenm.json$$$http://www.libvio.mov/$$$noproxy$$$1"
+ "ext": "./lib/tokenm.json$$$https://www.libvio.io/$$$noproxy$$$1"
},
{
"key": "Guazi",
@@ -336,7 +328,7 @@
"changeable": 1,
"filterable": 1,
"timeout": 60,
- "ext": "./lib/tokenm.json$$$https://www.hdmoli.pro/$$$proxy$$$1$$$./lib/moli.json"
+ "ext": "./lib/tokenm.json$$$https://www.hdmoli.com/$$$noproxy$$$1$$$./lib/moli.json"
},
{
"key": "美剧迷",
diff --git a/tvbox/lib/YouTube.py b/tvbox/lib/YouTube.py
new file mode 100644
index 00000000..624e551b
--- /dev/null
+++ b/tvbox/lib/YouTube.py
@@ -0,0 +1,1573 @@
+#coding=utf-8
+#!/usr/bin/python
+import re
+import json
+import html
+import time
+from urllib.parse import quote, unquote, parse_qs, urlencode, urlparse, urlunparse, urljoin
+import requests
+from requests.adapters import HTTPAdapter
+from urllib3.util.retry import Retry
+from base.spider import Spider
+
+YOUTUBE_CLASSES = [
+ {"type_id": "电影", "type_name": "电影"},
+ {"type_id": "直播", "type_name": "直播"},
+ {"type_id": "音乐", "type_name": "音乐"},
+ {"type_id": "HDR", "type_name": "HDR"},
+ {"type_id": "免费", "type_name": "免费"},
+ {"type_id": "短劇", "type_name": "短剧"},
+ {"type_id": "动画片", "type_name": "动画片"}
+]
+
+CATEGORY_FILTERS = {
+ "电影": [
+ {"key": "topic", "name": "官方分类", "value": [{"n": "电影", "v": "电影"}, {"n": "电影与动画", "v": "电影与动画"}, {"n": "电视节目", "v": "电视节目"}]},
+ {"key": "tid", "name": "地区", "value": [{"n": "大陆", "v": "大陆"}, {"n": "香港", "v": "香港"}, {"n": "台湾", "v": "台湾"}, {"n": "美国", "v": "美国"}, {"n": "韩国", "v": "韩国"}, {"n": "日本", "v": "日本"}]},
+ {"key": "date", "name": "排序/时间", "value": [{"n": "默认", "v": ""}, {"n": "最新", "v": "latest"}, {"n": "最热", "v": "hottest"}, {"n": "评分最高", "v": "favorite"}, {"n": "当天", "v": "day"}, {"n": "本周", "v": "week"}, {"n": "本月", "v": "month"}]}
+ ],
+ "直播": [
+ {"key": "topic", "name": "官方分类", "value": [{"n": "新闻直播", "v": "新闻直播"}, {"n": "游戏直播", "v": "游戏直播"}, {"n": "体育直播", "v": "体育直播"}, {"n": "音乐直播", "v": "音乐直播"}]},
+ {"key": "tid", "name": "直播类型", "value": [{"n": "全部直播", "v": "全部直播"}, {"n": "游戏", "v": "游戏"}, {"n": "新闻", "v": "新闻"}, {"n": "体育", "v": "体育"}, {"n": "音乐现场", "v": "音乐现场"}, {"n": "生活", "v": "生活"}]},
+ {"key": "date", "name": "排序/时间", "value": [{"n": "默认", "v": ""}, {"n": "最新", "v": "latest"}, {"n": "最热", "v": "hottest"}, {"n": "评分最高", "v": "favorite"}, {"n": "当天", "v": "day"}, {"n": "本周", "v": "week"}, {"n": "本月", "v": "month"}]}
+ ],
+ "音乐": [
+ {"key": "topic", "name": "官方分类", "value": [{"n": "音乐", "v": "音乐"}, {"n": "流行音乐", "v": "流行音乐"}, {"n": "摇滚乐", "v": "摇滚乐"}, {"n": "嘻哈音乐", "v": "嘻哈音乐"}, {"n": "电子音乐", "v": "电子音乐"}, {"n": "重金属", "v": "重金属"}, {"n": "重金属根源雷鬼", "v": "重金属根源雷鬼"}, {"n": "Dub", "v": "Dub"}, {"n": "Bass", "v": "Bass"}]},
+ {"key": "tid", "name": "形式/场景", "value": [{"n": "MV", "v": "MV"}, {"n": "现场", "v": "现场"}, {"n": "翻唱", "v": "翻唱"}, {"n": "精选", "v": "精选"}, {"n": "车载", "v": "车载"}]},
+ {"key": "date", "name": "排序/时间", "value": [{"n": "默认", "v": ""}, {"n": "最新", "v": "latest"}, {"n": "最热", "v": "hottest"}, {"n": "评分最高", "v": "favorite"}, {"n": "当天", "v": "day"}, {"n": "本周", "v": "week"}, {"n": "本月", "v": "month"}]}
+ ],
+ "HDR": [
+ {"key": "tid", "name": "画质类型", "value": [{"n": "HDR", "v": "HDR"}, {"n": "杜比", "v": "杜比"}, {"n": "4K", "v": "4K"}, {"n": "8K", "v": "8K"}, {"n": "12K", "v": "12K"}, {"n": "16K", "v": "16K"}]},
+ {"key": "topic", "name": "关联主题(加画质)", "value": [{"n": "自然+8K", "v": "自然+8K"}, {"n": "电影+4K", "v": "电影+4K"}, {"n": "风景+HDR", "v": "风景+HDR"}]},
+ {"key": "date", "name": "排序/时间", "value": [{"n": "默认", "v": ""}, {"n": "最新", "v": "latest"}, {"n": "最热", "v": "hottest"}, {"n": "评分最高", "v": "favorite"}, {"n": "当天", "v": "day"}, {"n": "本周", "v": "week"}, {"n": "本月", "v": "month"}]}
+ ],
+ "免费": [
+ {"key": "tid", "name": "免费内容", "value": [{"n": "免费电影", "v": "免费电影"}, {"n": "免费电视剧", "v": "免费电视剧"}, {"n": "免费纪录片", "v": "免费纪录片"}, {"n": "免费音乐", "v": "免费音乐"}, {"n": "免费课程", "v": "免费课程"}, {"n": "免费直播", "v": "免费直播"}]},
+ {"key": "topic", "name": "关联主题(加免费)", "value": [{"n": "电影+免费", "v": "电影+免费"}, {"n": "教育+免费", "v": "教育+免费"}, {"n": "音乐+免费", "v": "音乐+免费"}]},
+ {"key": "date", "name": "排序/时间", "value": [{"n": "默认", "v": ""}, {"n": "最新", "v": "latest"}, {"n": "最热", "v": "hottest"}, {"n": "评分最高", "v": "favorite"}, {"n": "当天", "v": "day"}, {"n": "本周", "v": "week"}, {"n": "本月", "v": "month"}]}
+ ],
+ "短劇": [
+ {"key": "date", "name": "排序/时间", "value": [{"n": "默认", "v": ""}, {"n": "最新", "v": "latest"}, {"n": "最热", "v": "hottest"}, {"n": "评分最高", "v": "favorite"}, {"n": "当天", "v": "day"}, {"n": "本周", "v": "week"}, {"n": "本月", "v": "month"}]},
+ {"key": "tid", "name": "地区/平台", "value": [{"n": "全部", "v": ""}, {"n": "抖音", "v": "抖音 短剧"}, {"n": "快手", "v": "快手 短剧"}, {"n": "大陆", "v": "大陆 短剧"}, {"n": "香港", "v": "香港 短剧"}, {"n": "澳門", "v": "澳門 短剧"}, {"n": "台湾", "v": "台湾 短剧"}, {"n": "新加坡", "v": "新加坡 短剧"}, {"n": "馬來西亞", "v": "馬來西亞 短剧"}, {"n": "泰國", "v": "泰國 短剧"}, {"n": "越南", "v": "越南 短剧"}, {"n": "印度", "v": "印度 短剧"}, {"n": "韩国", "v": "韩国 短剧"}, {"n": "日本", "v": "日本 短剧"}, {"n": "欧美", "v": "欧美 短剧"}, {"n": "腾讯", "v": "腾讯 短剧"}, {"n": "爱奇艺", "v": "爱奇艺 短剧"}, {"n": "优酷", "v": "优酷 短剧"}, {"n": "芒果", "v": "芒果TV 短剧"}, {"n": "搜狐", "v": "搜狐 短剧"}]},
+ {"key": "topic", "name": "类型/频道", "value": [{"n": "全部", "v": ""}, {"n": "都市", "v": "@Urbanshort-TV 都市 短劇"}, {"n": "爱情", "v": "爱情 短劇"}, {"n": "复仇", "v": "复仇 短劇"}, {"n": "霸总", "v": "霸总 短劇"}, {"n": "萌宝", "v": "萌宝 短劇"}, {"n": "古装", "v": "古装 短劇"}, {"n": "穿越", "v": "穿越 短劇"}, {"n": "喜剧", "v": "喜剧 短劇"}, {"n": "奇幻", "v": "奇幻 短劇"}, {"n": "九酱爱追剧", "v": "@NineSauceDramaTV"}, {"n": "百万好剧场", "v": "@1-pw5ox"}, {"n": "咖啡追剧", "v": "@@coffeedrama605"}, {"n": "斗罗短剧", "v": "@DouluoDrama123 斗羅短劇"}, {"n": "嘟嘟剧场", "v": "@DUDUJUCHANG"}, {"n": "牛牛短剧", "v": "@niuniuduanju"}]}
+ ],
+ "动画片": [
+ {"key": "date", "name": "排序/时间", "value": [{"n": "默认", "v": ""}, {"n": "最新", "v": "latest"}, {"n": "最热", "v": "hottest"}, {"n": "评分最高", "v": "favorite"}, {"n": "当天", "v": "day"}, {"n": "本周", "v": "week"}, {"n": "本月", "v": "month"}]},
+ {"key": "tid", "name": "平台/频道", "value": [{"n": "全部", "v": ""}, {"n": "小猪佩奇", "v": "@PeppaPigChineseOfficial 小猪佩奇 中文官方 - Peppa Pig"}, {"n": "CoComelon", "v": "@CoComelon"}, {"n": "国漫社", "v": "@Animation 次元 苍穹动漫 PP看动漫 公馆"}, {"n": "国漫工厂", "v": "@3DGuoman SUB"}, {"n": "阅文动漫", "v": "@yuewenanimation SUB"}, {"n": "哔哩", "v": "@madebybilibili 哔哩动漫"}, {"n": "腾讯", "v": "@TencentVideoAnimation SUB"}, {"n": "优酷", "v": "@youkuanimation 优酷动漫"}, {"n": "爱奇艺", "v": "@iQIYIAnime 爱奇艺动漫"}]},
+ {"key": "topic", "name": "主题/类别", "value": [{"n": "全部", "v": ""}, {"n": "默认中文国漫", "v": "國漫 劇集 3D"}, {"n": "默认动画", "v": "animation"}, {"n": "儿童早教", "v": "儿童早教"}, {"n": "儿童歌曲", "v": "儿童歌曲"}, {"n": "儿童音乐", "v": "儿童音乐"}, {"n": "儿童绘画", "v": "儿童绘画"}, {"n": "宝宝巴士", "v": "宝宝巴士"}, {"n": "儿歌多多", "v": "儿歌多多"}, {"n": "儿童英语启蒙", "v": "儿童英语启蒙"}, {"n": "儿童启蒙故事", "v": "儿童启蒙故事"}, {"n": "儿童安全教育", "v": "儿童安全教育"}, {"n": "默认英文国漫", "v": "3D Chinese cartoon"}, {"n": "合集", "v": "Anime ENG SUB 合集"}]}
+ ]
+}
+
+class BaseExtractor:
+ @staticmethod
+ def extract_video_id(text):
+ text = str(text or '').strip()
+ for pattern in [
+ r'(?:v=|/v/|/embed/|/shorts/|youtu\.be/)([0-9A-Za-z_-]{11})',
+ r'^([0-9A-Za-z_-]{11})$',
+ ]:
+ m = re.search(pattern, text)
+ if m:
+ return m.group(1)
+ raise Exception('无法识别 YouTube 视频 ID')
+
+ @staticmethod
+ def _client_name_id(client_name):
+ return {
+ 'WEB': 1, 'MWEB': 2, 'ANDROID': 3, 'IOS': 5,
+ 'TVHTML5': 7, 'ANDROID_VR': 28, 'WEB_EMBEDDED_PLAYER': 56,
+ 'WEB_REMIX': 67,
+ }.get(client_name, 1)
+
+ @staticmethod
+ def _extract_ytcfg(text):
+ m = re.search(r'ytcfg\.set\s*\(\s*({.+?})\s*\)\s*;', text, re.S)
+ if m:
+ try:
+ return json.loads(m.group(1))
+ except Exception:
+ pass
+ return None
+
+ @staticmethod
+ def _extract_json_after(text, marker):
+ pos = text.find(marker)
+ if pos < 0:
+ return None
+ start = text.find('{', pos)
+ if start < 0:
+ return None
+ depth = 0
+ in_str = None
+ escape = False
+ for i in range(start, len(text)):
+ ch = text[i]
+ if escape:
+ escape = False
+ continue
+ if ch == '\\':
+ escape = True
+ continue
+ if in_str:
+ if ch == in_str:
+ in_str = None
+ continue
+ if ch == '"':
+ in_str = ch
+ continue
+ if ch == '{':
+ depth += 1
+ elif ch == '}':
+ depth -= 1
+ if depth == 0:
+ try:
+ return json.loads(text[start:i+1])
+ except Exception:
+ return None
+ return None
+
+ @staticmethod
+ def _search(pattern, text, default=None):
+ m = re.search(pattern, text or '', re.S)
+ return m.group(1) if m else default
+
+ @staticmethod
+ def _extract_player_url(text):
+ for pattern in [
+ r'"jsUrl":"([^"]+)"',
+ r'"PLAYER_JS_URL":"([^"]+)"',
+ r'(/s/player/[^"\\]+/base\.js)',
+ ]:
+ m = re.search(pattern, text)
+ if m:
+ return m.group(1).replace('\\/', '/')
+ return ''
+
+class YouTubeLite(BaseExtractor):
+ def __init__(self, session, headers=None, config=None):
+ self.session = session
+ self.headers = headers or {}
+ self.config = config or {}
+ self.player_cache = {}
+ self.extract_cache = {}
+ self.sig_plan_cache = {}
+ self.n_function_cache = {}
+ self.extract_cache_ttl = int(self.config.get('extract_cache_ttl') or 300)
+
+ def extract(self, url_or_id):
+ video_id = self.extract_video_id(url_or_id)
+ cached = self.extract_cache.get(video_id)
+ if cached and cached.get('expires', 0) > time.time():
+ return cached.get('data')
+
+ watch_url = f"https://www.youtube.com/watch?v={video_id}"
+ page = self._get(watch_url, timeout=60).text
+
+ ytcfg = self._extract_ytcfg(page) or {}
+ player_response = self._extract_initial_player_response(page) or {}
+ player_url = self._extract_player_url(page)
+ api_key = ytcfg.get('INNERTUBE_API_KEY') or self._search(r'"INNERTUBE_API_KEY":"([^"]+)"', page)
+ visitor_data = (
+ self.config.get('visitor_data') or ytcfg.get('VISITOR_DATA') or
+ (((ytcfg.get('INNERTUBE_CONTEXT') or {}).get('client') or {}).get('visitorData')) or
+ ((player_response.get('responseContext') or {}).get('visitorData'))
+ )
+ sts = self._extract_signature_timestamp(player_url)
+
+ context = ytcfg.get('INNERTUBE_CONTEXT') or {
+ 'client': {'clientName': 'WEB', 'clientVersion': '2.20240310.01.00', 'hl': 'en', 'gl': 'US'}
+ }
+ responses = [player_response] if player_response else []
+ if api_key:
+ api_responses = self._call_player_api(video_id, api_key, context, watch_url, visitor_data, sts)
+ if not isinstance(api_responses, list):
+ api_responses = [api_responses] if api_responses else []
+ responses.extend([x for x in api_responses if x])
+
+ player_response = next((x for x in responses if (x.get('playabilityStatus') or {}).get('status') == 'OK'), player_response)
+ status = (player_response.get('playabilityStatus') or {}).get('status')
+ streaming = player_response.get('streamingData') or {}
+ if status and status not in ('OK', 'LIVE_STREAM_OFFLINE') and not streaming:
+ reason = (player_response.get('playabilityStatus') or {}).get('reason') or status
+ raise Exception(f'YouTube 不可播放: {reason}')
+
+ details = player_response.get('videoDetails') or {}
+ raw_formats = []
+ seen_raw = set()
+ for response in responses:
+ response_streaming = (response or {}).get('streamingData') or {}
+ source_raw = (response_streaming.get('formats') or []) + (response_streaming.get('adaptiveFormats') or [])
+ for raw in source_raw:
+ key = (raw.get('itag'), raw.get('url') or raw.get('signatureCipher') or raw.get('cipher') or raw.get('mimeType'))
+ if key not in seen_raw:
+ seen_raw.add(key)
+ raw = raw.copy()
+ raw['_client_name'] = (response or {}).get('_client_name')
+ raw['_client_ua'] = (response or {}).get('_client_ua')
+ raw_formats.append(raw)
+
+ formats = []
+ for raw in raw_formats:
+ item = self._normalize_format(raw, player_url)
+ if item and item.get('url'):
+ formats.append(item)
+
+ if not formats:
+ raise Exception('未获取到可用播放地址')
+
+ data = {
+ 'id': video_id,
+ 'title': details.get('title') or video_id,
+ 'duration': int(details.get('lengthSeconds') or 0),
+ 'formats': formats,
+ 'is_live': bool(details.get('isLive')),
+ }
+ self.extract_cache[video_id] = {'data': data, 'expires': time.time() + self.extract_cache_ttl}
+ return data
+
+ def _extract_signature_timestamp(self, player_url):
+ try:
+ code = self._get_player_code(player_url)
+ sts = self._search(r'(?:signatureTimestamp|sts)\s*:\s*(\d{5})', code)
+ return int(sts) if sts else None
+ except Exception:
+ return None
+
+ def _get_po_token(self, client_name, context='gvs'):
+ tokens = self.config.get('po_token') or self.config.get('po_tokens') or {}
+ if isinstance(tokens, str):
+ return tokens
+ if isinstance(tokens, dict):
+ return tokens.get(f'{client_name}.{context}') or tokens.get(client_name) or tokens.get(context)
+ return None
+
+ def _get(self, url, **kwargs):
+ headers = self.headers.copy()
+ headers.update(kwargs.pop('headers', {}) or {})
+ timeout = kwargs.pop('timeout', 60)
+ r = self.session.get(url, headers=headers, timeout=timeout, **kwargs)
+ r.raise_for_status()
+ return r
+
+ def _post_json(self, url, payload, headers=None):
+ h = self.headers.copy()
+ h.update({'Content-Type': 'application/json', 'Origin': 'https://www.youtube.com'})
+ if headers:
+ h.update({k: v for k, v in headers.items() if v})
+ r = self.session.post(url, json=payload, headers=h, timeout=60)
+ r.raise_for_status()
+ return r.json()
+
+ def _call_player_api(self, video_id, api_key, context, referer, visitor_data=None, sts=None):
+ clients = [
+ {'client': {'clientName': 'ANDROID_VR', 'clientVersion': '1.65.10', 'deviceMake': 'Oculus', 'deviceModel': 'Quest 3', 'androidSdkVersion': 32, 'userAgent': 'com.google.android.apps.youtube.vr.oculus/1.65.10 (Linux; U; Android 12L; eureka-user Build/SQ3A.220605.009.A1) gzip', 'osName': 'Android', 'osVersion': '12L', 'hl': 'en', 'gl': 'US'}}
+ ]
+ results = []
+ fallback = None
+ for ctx in clients:
+ client_name = (ctx.get('client') or {}).get('clientName')
+ try:
+ url = f'https://www.youtube.com/youtubei/v1/player?key={api_key}&prettyPrint=false'
+ payload = {
+ 'context': ctx,
+ 'videoId': video_id,
+ 'playbackContext': {'contentPlaybackContext': {'html5Preference': 'HTML5_PREF_WANTS', **({'signatureTimestamp': sts} if sts else {})}},
+ 'contentCheckOk': True,
+ 'racyCheckOk': True,
+ }
+ client = ctx.get('client') or {}
+ headers = {
+ 'Referer': referer,
+ 'X-YouTube-Client-Name': str(self._client_name_id(client.get('clientName'))),
+ 'X-YouTube-Client-Version': client.get('clientVersion') or '',
+ }
+ if visitor_data:
+ headers['X-Goog-Visitor-Id'] = visitor_data
+ client_ua = client.get('userAgent')
+ if client_ua:
+ headers['User-Agent'] = client_ua
+
+ data = self._post_json(url, payload, headers=headers)
+ streaming = data.get('streamingData') or {}
+ if streaming:
+ data['_client_name'] = client_name
+ data['_client_ua'] = client_ua
+ results.append(data)
+ if streaming and fallback is None:
+ fallback = data
+ elif fallback is None:
+ fallback = data
+ except Exception:
+ continue
+ return results or ([fallback] if fallback else [])
+
+ def _normalize_format(self, fmt, player_url):
+ media_url = fmt.get('url')
+ if not media_url:
+ cipher = fmt.get('signatureCipher') or fmt.get('cipher')
+ if cipher:
+ media_url = self._decrypt_signature_cipher(cipher, player_url)
+ if not media_url:
+ return None
+
+ media_url = self._decrypt_nsig(media_url, player_url)
+
+ client_name = fmt.get('_client_name')
+ po_token = self._get_po_token(client_name, 'gvs') if client_name else None
+ if po_token:
+ sep = '&' if '?' in media_url else '?'
+ media_url = f'{media_url}{sep}pot={quote(po_token)}'
+
+ mime = fmt.get('mimeType') or ''
+ ext = 'mp4' if 'mp4' in mime else 'webm' if 'webm' in mime else 'unknown'
+ codecs = self._search(r'codecs="([^"]+)"', mime) or ''
+ has_audio = mime.startswith('audio/') or any(x in codecs for x in ('mp4a', 'opus', 'vorbis'))
+ has_video = mime.startswith('video/') or any(x in codecs for x in ('avc', 'vp9', 'av01', 'h264'))
+ headers = (fmt.get('http_headers') or {}).copy()
+ if fmt.get('_client_ua'):
+ headers['User-Agent'] = fmt.get('_client_ua')
+
+ return {
+ 'itag': fmt.get('itag'),
+ 'url': media_url,
+ 'mimeType': mime,
+ 'client': fmt.get('_client_name'),
+ 'ext': ext,
+ 'width': fmt.get('width') or 0,
+ 'height': fmt.get('height') or 0,
+ 'fps': fmt.get('fps') or 0,
+ 'bitrate': fmt.get('bitrate') or fmt.get('averageBitrate') or 0,
+ 'contentLength': fmt.get('contentLength'),
+ 'initRange': fmt.get('initRange') or {},
+ 'indexRange': fmt.get('indexRange') or {},
+ 'codecs': codecs,
+ 'quality': fmt.get('qualityLabel') or fmt.get('quality'),
+ 'vcodec': codecs if has_video else 'none',
+ 'acodec': codecs if has_audio else 'none',
+ 'headers': headers,
+ }
+
+ def _decrypt_signature_cipher(self, cipher, player_url):
+ data = parse_qs(cipher)
+ media_url = unquote(data.get('url', [''])[0])
+ sig = unquote(data.get('s', [''])[0])
+ sp = data.get('sp', ['sig'])[0]
+ if not media_url:
+ return ''
+ if sig:
+ decoded = self._decrypt_sig(sig, player_url)
+ sep = '&' if '?' in media_url else '?'
+ media_url = f'{media_url}{sep}{sp}={quote(decoded)}'
+ return media_url
+
+ def _decrypt_sig(self, sig, player_url):
+ cache_key = player_url or ''
+ if cache_key in self.sig_plan_cache:
+ plan = self.sig_plan_cache[cache_key]
+ else:
+ code = self._get_player_code(player_url)
+ plan = self._extract_sig_plan(code)
+ self.sig_plan_cache[cache_key] = plan
+ if not plan:
+ return sig
+ arr = list(sig)
+ for op, arg in plan:
+ if op == 'reverse':
+ arr.reverse()
+ elif op in ('slice', 'splice'):
+ arr = arr[int(arg):]
+ elif op == 'swap' and arr:
+ j = int(arg) % len(arr)
+ arr[0], arr[j] = arr[j], arr[0]
+ return ''.join(arr)
+
+ def _decrypt_nsig(self, media_url, player_url):
+ try:
+ parsed = urlparse(media_url)
+ query = parse_qs(parsed.query)
+ n_value = query.get('n', [None])[0]
+ if not n_value:
+ return media_url
+
+ path_match = re.search(r'/n/([^/]+)', parsed.path)
+ if path_match and path_match.group(1) != n_value:
+ new_path = parsed.path.replace(f"/n/{path_match.group(1)}", f"/n/{n_value}", 1)
+ return urlunparse(parsed._replace(path=new_path))
+
+ if player_url:
+ func = self._get_n_function(player_url)
+ if func:
+ new_n = func(n_value)
+ if new_n != n_value:
+ query['n'] = [new_n]
+ new_query = urlencode(query, doseq=True)
+ return urlunparse(parsed._replace(query=new_query))
+ return media_url
+ except Exception:
+ return media_url
+
+ def _get_n_function(self, player_url):
+ if player_url in self.n_function_cache:
+ return self.n_function_cache[player_url]
+ code = self._get_player_code(player_url)
+ func = self._extract_n_function(code)
+ self.n_function_cache[player_url] = func
+ return func
+
+ def _get_player_code(self, player_url):
+ if not player_url:
+ return ''
+ if player_url in self.player_cache:
+ return self.player_cache[player_url]
+ if player_url.startswith('//'):
+ player_url = 'https:' + player_url
+ elif player_url.startswith('/'):
+ player_url = 'https://www.youtube.com' + player_url
+ try:
+ code = self._get(player_url, timeout=60).text
+ except Exception:
+ code = ''
+ self.player_cache[player_url] = code
+ return code
+
+ def _extract_sig_plan(self, code):
+ if not code:
+ return None
+ name = None
+ for pattern in [
+ r'\.sig\|\|([a-zA-Z0-9_$]+)\(',
+ r'"signature",\s*([a-zA-Z0-9_$]+)\(',
+ r'([a-zA-Z0-9_$]+)=function\(a\)\{a=a\.split\(""\);',
+ ]:
+ m = re.search(pattern, code)
+ if m:
+ name = m.group(1)
+ break
+ if not name:
+ return None
+ body = self._extract_js_function_body(code, name)
+ if not body:
+ return None
+ helper = self._search(r'([a-zA-Z0-9_$]+)\.[a-zA-Z0-9_$]+\(a,\d+\)', body)
+ helper_map = self._extract_helper_object(code, helper) if helper else {}
+ plan = []
+ for part in body.split(';'):
+ if 'reverse()' in part:
+ plan.append(('reverse', 0))
+ continue
+ m = re.search(r'\.slice\((\d+)\)', part)
+ if m:
+ plan.append(('slice', int(m.group(1))))
+ continue
+ m = re.search(r'\.splice\(0,(\d+)\)', part)
+ if m:
+ plan.append(('splice', int(m.group(1))))
+ continue
+ m = re.search(r'([a-zA-Z0-9_$]+)\.([a-zA-Z0-9_$]+)\(a,(\d+)\)', part)
+ if m and m.group(1) == helper:
+ op = helper_map.get(m.group(2))
+ if op:
+ plan.append((op, int(m.group(3))))
+ return plan or None
+
+ def _extract_helper_object(self, code, name):
+ if not name:
+ return {}
+ m = re.search(r'var\s+' + re.escape(name) + r'=\{(.+?)\};', code, re.S) or re.search(re.escape(name) + r'=\{(.+?)\};', code, re.S)
+ if not m:
+ return {}
+ result = {}
+ for method, body in re.findall(r'([a-zA-Z0-9_$]+):function\([a-z,]+\)\{(.*?)\}', m.group(1)):
+ if '.reverse(' in body:
+ result[method] = 'reverse'
+ elif '.splice(' in body:
+ result[method] = 'splice'
+ elif '.slice(' in body:
+ result[method] = 'slice'
+ elif 'a[0]' in body and 'length' in body:
+ result[method] = 'swap'
+ return result
+
+ def _extract_n_function(self, code):
+ if not code:
+ return None
+ name = None
+ for pattern in [
+ r'\.get\("n"\)\)&&\(b=([a-zA-Z0-9_$]+)(?:\[(\d+)\])?\(b\)',
+ r'\.get\("n"\)\)&&\(b=([a-zA-Z0-9_$]+)\(b\)',
+ r'([a-zA-Z0-9_$]+)=function\(a\)\{var b=a\.split\(""\)',
+ r'function\s+([a-zA-Z0-9_$]+)\(a\)\{var b=a\.split\(""\)',
+ r'([a-zA-Z0-9_$]+)=function\(a\)\{a=a\.split\(""\)',
+ ]:
+ m = re.search(pattern, code)
+ if m:
+ name = m.group(1)
+ break
+ if not name:
+ return None
+ body = self._extract_js_function_body(code, name)
+ if not body:
+ return None
+
+ def transform(value):
+ arr = list(value)
+ for part in body.split(';'):
+ if 'reverse()' in part:
+ arr.reverse()
+ m = re.search(r'\.slice\((\d+)\)', part)
+ if m:
+ arr = arr[int(m.group(1)):]
+ m = re.search(r'\.splice\(0,(\d+)\)', part)
+ if m:
+ arr = arr[int(m.group(1)):]
+ return ''.join(arr) or value
+ return transform
+
+ def _extract_js_function_body(self, code, name):
+ starts = []
+ for pattern in [
+ r'function\s+' + re.escape(name) + r'\s*\([^)]*\)\s*\{',
+ re.escape(name) + r'\s*=\s*function\s*\([^)]*\)\s*\{',
+ r'var\s+' + re.escape(name) + r'\s*=\s*function\s*\([^)]*\)\s*\{',
+ ]:
+ m = re.search(pattern, code)
+ if m:
+ starts.append(m.end() - 1)
+ if not starts:
+ return ''
+ start = starts[0]
+ depth = 0
+ in_str = None
+ escape = False
+ for i in range(start, len(code)):
+ ch = code[i]
+ if escape:
+ escape = False
+ continue
+ if ch == '\\':
+ escape = True
+ continue
+ if in_str:
+ if ch == in_str:
+ in_str = None
+ continue
+ if ch in ('"', "'", '`'):
+ in_str = ch
+ continue
+ if ch == '{':
+ depth += 1
+ elif ch == '}':
+ depth -= 1
+ if depth == 0:
+ return code[start + 1:i]
+ return ''
+
+ def _extract_initial_player_response(self, text):
+ return self._extract_json_after(text, 'ytInitialPlayerResponse')
+
+class YouTubeLiveLite(BaseExtractor):
+ def __init__(self, session, headers=None, config=None):
+ self.session = session
+ self.headers = headers or {}
+ self.config = config or {}
+ self.cache = {}
+ self.cache_ttl = int(self.config.get('live_cache_ttl') or 45)
+
+ def extract_live(self, url_or_id):
+ video_id = self.extract_video_id(url_or_id)
+ now = time.time()
+ cached = self.cache.get(video_id)
+ if cached and cached.get('expires', 0) > now:
+ return cached.get('data')
+
+ watch_url = f'https://www.youtube.com/watch?v={video_id}'
+ page = self._get(watch_url, timeout=60).text
+
+ player_response = self._extract_initial_player_response(page) or {}
+ ytcfg = self._extract_ytcfg(page) or {}
+ api_key = ytcfg.get('INNERTUBE_API_KEY') or self._search(r'"INNERTUBE_API_KEY":"([^"]+)"', page)
+ visitor_data = (
+ self.config.get('visitor_data') or ytcfg.get('VISITOR_DATA') or
+ (((ytcfg.get('INNERTUBE_CONTEXT') or {}).get('client') or {}).get('visitorData')) or
+ ((player_response.get('responseContext') or {}).get('visitorData'))
+ )
+
+ status_obj = player_response.get('playabilityStatus') or {}
+ streaming = player_response.get('streamingData') or {}
+ details = player_response.get('videoDetails') or {}
+
+ page_hls_url = streaming.get('hlsManifestUrl') or ''
+ api_data = None
+ if api_key:
+ api_data = self._call_player_api(video_id, api_key, ytcfg, watch_url, visitor_data)
+ if api_data:
+ api_streaming = api_data.get('streamingData') or {}
+ api_details = api_data.get('videoDetails') or {}
+ api_hls_url = api_streaming.get('hlsManifestUrl') or ''
+ if api_hls_url:
+ streaming = api_streaming
+ elif not page_hls_url and api_streaming:
+ streaming = api_streaming
+ if api_details:
+ details = api_details
+ status_obj = api_data.get('playabilityStatus') or status_obj
+
+ if not (streaming.get('hlsManifestUrl') or '') and page_hls_url:
+ streaming = dict(streaming or {})
+ streaming['hlsManifestUrl'] = page_hls_url
+
+ hls_url = streaming.get('hlsManifestUrl') or ''
+ is_live = bool(details.get('isLive') or hls_url)
+ status = status_obj.get('status') or ''
+ reason = status_obj.get('reason') or ''
+ title = details.get('title') or video_id
+
+ data = {
+ 'id': video_id,
+ 'title': title,
+ 'is_live': is_live,
+ 'status': status,
+ 'reason': reason,
+ 'hls_url': hls_url,
+ 'duration': int(details.get('lengthSeconds') or 0),
+ }
+ self.cache[video_id] = {'data': data, 'expires': time.time() + self.cache_ttl}
+ return data
+
+ def _get(self, url, **kwargs):
+ headers = self.headers.copy()
+ headers.update(kwargs.pop('headers', {}) or {})
+ timeout = kwargs.pop('timeout', 60)
+ response = self.session.get(url, headers=headers, timeout=timeout, **kwargs)
+ response.raise_for_status()
+ return response
+
+ def _post_json(self, url, payload, headers=None):
+ final_headers = self.headers.copy()
+ final_headers.update({'Content-Type': 'application/json', 'Origin': 'https://www.youtube.com'})
+ if headers:
+ final_headers.update({k: v for k, v in headers.items() if v})
+ response = self.session.post(url, json=payload, headers=final_headers, timeout=60)
+ response.raise_for_status()
+ return response.json()
+
+ def _call_player_api(self, video_id, api_key, ytcfg, referer, visitor_data=None):
+ context = ytcfg.get('INNERTUBE_CONTEXT') or {
+ 'client': {'clientName': 'WEB', 'clientVersion': '2.20240310.01.00', 'hl': 'en', 'gl': 'US'}
+ }
+ clients = [
+ {'client': {'clientName': 'ANDROID_VR', 'clientVersion': '1.65.10', 'deviceMake': 'Oculus', 'deviceModel': 'Quest 3', 'androidSdkVersion': 32, 'userAgent': 'com.google.android.apps.youtube.vr.oculus/1.65.10 (Linux; U; Android 12L; eureka-user Build/SQ3A.220605.009.A1) gzip', 'osName': 'Android', 'osVersion': '12L', 'hl': 'en', 'gl': 'US'}}
+ ]
+ for ctx in clients:
+ client = ctx.get('client') or {}
+ client_name = client.get('clientName') or 'WEB'
+ try:
+ url = f'https://www.youtube.com/youtubei/v1/player?key={quote(api_key)}&prettyPrint=false'
+ headers = {
+ 'Referer': referer,
+ 'X-YouTube-Client-Name': str(self._client_name_id(client_name)),
+ 'X-YouTube-Client-Version': client.get('clientVersion') or '',
+ }
+ if visitor_data:
+ headers['X-Goog-Visitor-Id'] = visitor_data
+ if client.get('userAgent'):
+ headers['User-Agent'] = client.get('userAgent')
+
+ payload = {
+ 'context': ctx,
+ 'videoId': video_id,
+ 'contentCheckOk': True,
+ 'racyCheckOk': True,
+ }
+ data = self._post_json(url, payload, headers=headers)
+ streaming = data.get('streamingData') or {}
+ if streaming.get('hlsManifestUrl'):
+ data['_client_name'] = client_name
+ return data
+ except Exception:
+ continue
+ return None
+
+ def _extract_initial_player_response(self, text):
+ return self._extract_json_after(text, 'ytInitialPlayerResponse')
+
+class Spider(Spider):
+ def getName(self):
+ return 'YouTube 视频+直播'
+
+ def init(self, extend):
+ try:
+ self.extendDict = json.loads(extend) if extend else {}
+ except Exception:
+ self.extendDict = {}
+ self.session = requests.Session()
+ retry = Retry(
+ total=3,
+ backoff_factor=1,
+ status_forcelist=[500, 502, 503, 504, 408, 429],
+ allowed_methods=["GET", "POST"]
+ )
+ adapter = HTTPAdapter(max_retries=retry, pool_connections=20, pool_maxsize=20)
+ self.session.mount('http://', adapter)
+ self.session.mount('https://', adapter)
+ self.session.keep_alive = False
+ self._cache = {}
+
+ proxy_config = self.extendDict.get('proxy')
+ if proxy_config:
+ if isinstance(proxy_config, str):
+ proxy_str = proxy_config.strip()
+ if proxy_str:
+ if not proxy_str.startswith(('http://', 'https://')):
+ proxy_str = 'http://' + proxy_str
+ self.session.proxies = {'http': proxy_str, 'https': proxy_str}
+ elif isinstance(proxy_config, dict):
+ proxies = {}
+ for k, v in proxy_config.items():
+ if k in ('http', 'https') and v:
+ v_str = v.strip()
+ if v_str:
+ if not v_str.startswith(('http://', 'https://')):
+ v_str = 'http://' + v_str
+ proxies[k] = v_str
+ if proxies:
+ self.session.proxies = proxies
+ else:
+ self.session.proxies = {}
+ else:
+ self.session.proxies = {}
+
+ self.header = {
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
+ 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
+ 'Referer': 'https://www.youtube.com/'
+ }
+ self.session.headers.update(self.header)
+
+ self.yt_video = YouTubeLite(self.session, self.header, self.extendDict)
+ self.yt_live = YouTubeLiveLite(self.session, self.header, self.extendDict)
+ self.search_page_cache = {}
+ self.live_search_cache = {}
+ self.hls_url_cache = {}
+ self.hls_proxy_enabled = self.extendDict.get('hls_proxy', True) is not False
+ self._hls_key_seq = 0
+
+ def setCache(self, key, value):
+ self._cache[key] = value
+
+ def getCache(self, key):
+ return self._cache.get(key)
+
+ def homeContent(self, filter):
+ result = {'class': YOUTUBE_CLASSES}
+ if filter:
+ video_filters = {}
+ for c in YOUTUBE_CLASSES:
+ cid = c['type_id']
+ if cid in CATEGORY_FILTERS:
+ video_filters[cid] = CATEGORY_FILTERS[cid]
+ result['filters'] = video_filters
+ return result
+
+ def homeVideoContent(self):
+ return {'list': []}
+
+ def categoryContent(self, cid, page, filter, ext):
+ page = int(page or 1)
+ filters = ext if isinstance(ext, dict) else {}
+ if self._is_live_category(cid):
+ keyword = self._build_live_keyword(cid, filters)
+ videos, has_more = self._search_live_page(keyword, page)
+ else:
+ keyword = self._build_video_keyword(cid, filters)
+ videos, has_more = self._search_video_page(keyword, page)
+ return {
+ 'list': videos,
+ 'page': page,
+ 'pagecount': page + 1 if has_more else page,
+ 'limit': len(videos),
+ 'total': len(videos)
+ }
+
+ def searchContent(self, key, quick, pg=1):
+ page = int(pg or 1)
+ keyword = str(key or '').strip()
+ videos_v, _ = self._search_video_page(keyword, page)
+ live_keyword = f'{keyword} live' if 'live' not in keyword.lower() and '直播' not in keyword else keyword
+ videos_l, _ = self._search_live_page(live_keyword, page)
+ seen = set()
+ merged = []
+ for v in videos_v + videos_l:
+ if v['vod_id'] not in seen:
+ seen.add(v['vod_id'])
+ merged.append(v)
+ return {
+ 'list': merged[:30],
+ 'page': page,
+ 'pagecount': page + 1,
+ 'limit': len(merged),
+ 'total': len(merged)
+ }
+
+ def detailContent(self, did):
+ video_id = did[0]
+ is_live = False
+ title = video_id
+ status = '视频'
+ has_super = False
+
+ try:
+ data = self.yt_video.extract(video_id)
+ title = data.get('title') or video_id
+ is_live = data.get('is_live', False)
+ status = '直播中' if is_live else '视频'
+
+ if not is_live:
+ formats = data.get('formats') or []
+ all_videos = [x for x in formats if x.get('vcodec') != 'none' and x.get('acodec') == 'none']
+ high_res = [x for x in all_videos if int(x.get('height') or 0) >= 720]
+ has_super = len(high_res) > 0
+ except Exception:
+ is_live = False
+ title = self._get_video_title(video_id) or video_id
+ status = '视频'
+
+ related = []
+ try:
+ r = self.session.get(f'https://www.youtube.com/watch?v={video_id}', timeout=60)
+ related = self._extract_videos_fixed(r.text, 20)
+ except Exception:
+ pass
+
+ safe_title = self._safe_title(title)
+
+ play_sources = []
+ play_urls = []
+
+ if is_live:
+ play_sources.append('直播')
+ play_urls.append(f'{safe_title}${video_id}@live')
+ else:
+ if has_super:
+ play_sources.append('极客VP')
+ play_urls.append(f'{safe_title}${video_id}@super')
+
+ play_sources.append('万能MP')
+ play_urls.append(f'{safe_title}${video_id}@normal')
+
+ if related:
+ play_sources.append('相关推荐')
+ play_url2 = '#'.join([f"{self._safe_title(v['vod_name'])}${v['vod_id']}@normal" for v in related if v.get('vod_id') != video_id])
+ play_urls.append(play_url2)
+
+ vod = {
+ 'vod_id': video_id,
+ 'vod_name': title,
+ 'vod_pic': f'http://127.0.0.1:9978/proxy?do=py&type=image&vid={video_id}',
+ 'vod_remarks': status,
+ 'vod_play_from': '$$$'.join(play_sources),
+ 'vod_play_url': '$$$'.join(play_urls)
+ }
+ return {'list': [vod]}
+
+ def playerContent(self, flag, pid, vipFlags):
+ raw_pid = pid.split('$')[-1]
+ if '@' in raw_pid:
+ video_id, quality_or_type = raw_pid.rsplit('@', 1)
+ else:
+ video_id, quality_or_type = raw_pid, 'super'
+
+ if quality_or_type == 'live':
+ return self._play_live(video_id)
+ else:
+ return self._play_video(video_id, quality_or_type)
+
+ def _is_live_category(self, cid):
+ return 'live' in cid.lower() or '直播' in cid.lower()
+
+ def _build_live_keyword(self, cid, filters=None):
+ terms = [cid]
+ if isinstance(filters, dict):
+ for value in filters.values():
+ term = self._normalize_filter_term(value)
+ if term:
+ terms.append(term)
+ keyword = ' '.join(terms).strip()
+ if 'live' not in keyword.lower() and '直播' not in keyword:
+ keyword = f'{keyword} live'
+ return keyword
+
+ def _build_video_keyword(self, cid, filters=None):
+ if cid.startswith('LIST:'):
+ raw = cid[5:].strip()
+ channels = [ch.strip() for ch in raw.split(',') if ch.strip()]
+ terms = []
+ for ch in channels:
+ if ch.startswith('@'):
+ terms.append(f'channel:{ch}')
+ else:
+ terms.append(f'"{ch}"')
+ keyword = ' OR '.join(terms) if terms else ''
+ else:
+ keyword = cid
+ if isinstance(filters, dict):
+ for value in filters.values():
+ term = self._normalize_filter_term(value)
+ if term:
+ keyword += ' ' + term
+ return keyword.strip()
+
+ def _normalize_filter_term(self, value):
+ if isinstance(value, (list, tuple)):
+ return ' '.join([self._normalize_filter_term(item) for item in value if item])
+ if isinstance(value, dict):
+ return ' '.join([self._normalize_filter_term(item) for item in value.values() if item])
+ return re.sub(r'\s+', ' ', str(value or '')).strip()[:180]
+
+ def _search_cache_key(self, key):
+ return re.sub(r'\s+', ' ', str(key or '')).strip().lower()
+
+ def _search_video_page(self, key, page=1):
+ page = max(1, int(page or 1))
+ cache_key = self._search_cache_key(key)
+ session = self.search_page_cache.get(cache_key)
+ if page == 1 or not session:
+ session = self._fetch_search_first_page(key)
+ self.search_page_cache[cache_key] = session
+ while len(session.get('pages', [])) < page and session.get('next'):
+ data = self._fetch_search_continuation(session)
+ videos = self._extract_videos_from_api(data, 30)
+ session.setdefault('pages', []).append(videos)
+ session['next'] = self._extract_continuation_token(data)
+ pages = session.get('pages', [])
+ videos = pages[page - 1] if len(pages) >= page else []
+ has_more = bool(session.get('next')) or len(pages) > page
+ return videos, has_more
+
+ def _search_live_page(self, key, page=1):
+ page = max(1, int(page or 1))
+ cache_key = f'live_{self._search_cache_key(key)}'
+ session = self.live_search_cache.get(cache_key)
+ if page == 1 or not session:
+ session = self._fetch_live_search_first_page(key)
+ self.live_search_cache[cache_key] = session
+ while len(session.get('pages', [])) < page and session.get('next'):
+ data = self._fetch_search_continuation(session)
+ videos = self._extract_live_videos_from_api(data, 30)
+ session.setdefault('pages', []).append(videos)
+ session['next'] = self._extract_continuation_token(data)
+ pages = session.get('pages', [])
+ videos = pages[page - 1] if len(pages) >= page else []
+ has_more = bool(session.get('next')) or len(pages) > page
+ return videos, has_more
+
+ def _fetch_live_search_first_page(self, key):
+ search_url = f'https://www.youtube.com/results?search_query={quote(str(key or ""))}&sp=EgJAAQ%253D%253D'
+ r = self.session.get(search_url, timeout=60)
+ html_str = r.text
+ data = self.yt_video._extract_json_after(html_str, 'ytInitialData') or {}
+ ytcfg = self.yt_video._extract_ytcfg(html_str) or {}
+ api_key = ytcfg.get('INNERTUBE_API_KEY') or self.yt_video._search(r'"INNERTUBE_API_KEY":"([^"]+)"', html_str)
+ context = ytcfg.get('INNERTUBE_CONTEXT') or {'client': {'clientName': 'WEB', 'clientVersion': '2.20240310.01.00', 'hl': 'zh-CN', 'gl': 'US'}}
+ client = context.get('client') or {}
+ return {
+ 'key': key,
+ 'api_key': api_key,
+ 'context': context,
+ 'client_name': client.get('clientName') or 'WEB',
+ 'client_version': client.get('clientVersion') or '2.20240310.01.00',
+ 'referer': search_url,
+ 'pages': [self._extract_live_videos_from_api(data, 30)],
+ 'next': self._extract_continuation_token(data),
+ }
+
+ def _fetch_search_first_page(self, key):
+ search_url = f'https://www.youtube.com/results?search_query={quote(str(key or ""))}'
+ r = self.session.get(search_url, timeout=60)
+ html_str = r.text
+ data = self.yt_video._extract_json_after(html_str, 'ytInitialData') or {}
+ ytcfg = self.yt_video._extract_ytcfg(html_str) or {}
+ api_key = ytcfg.get('INNERTUBE_API_KEY') or self.yt_video._search(r'"INNERTUBE_API_KEY":"([^"]+)"', html_str)
+ context = ytcfg.get('INNERTUBE_CONTEXT') or {'client': {'clientName': 'WEB', 'clientVersion': '2.20240310.01.00', 'hl': 'zh-CN', 'gl': 'US'}}
+ client = context.get('client') or {}
+ return {
+ 'key': key,
+ 'api_key': api_key,
+ 'context': context,
+ 'client_name': client.get('clientName') or 'WEB',
+ 'client_version': client.get('clientVersion') or '2.20240310.01.00',
+ 'referer': search_url,
+ 'pages': [self._extract_videos_from_api(data, 30)],
+ 'next': self._extract_continuation_token(data),
+ }
+
+ def _fetch_search_continuation(self, session):
+ token = session.get('next')
+ api_key = session.get('api_key')
+ if not token or not api_key:
+ return {}
+ url = f'https://www.youtube.com/youtubei/v1/search?key={quote(api_key)}'
+ headers = self.header.copy()
+ headers.update({
+ 'Content-Type': 'application/json',
+ 'Origin': 'https://www.youtube.com',
+ 'Referer': session.get('referer') or 'https://www.youtube.com/',
+ 'X-YouTube-Client-Name': str(self.yt_video._client_name_id(session.get('client_name'))),
+ 'X-YouTube-Client-Version': session.get('client_version') or '2.20240310.01.00',
+ })
+ payload = {'context': session.get('context') or {}, 'continuation': token}
+ r = self.session.post(url, json=payload, headers=headers, timeout=60)
+ r.raise_for_status()
+ return r.json()
+
+ def _extract_continuation_token(self, data):
+ tokens = []
+ def scan(obj):
+ if isinstance(obj, dict):
+ endpoint = obj.get('continuationEndpoint') or {}
+ token = endpoint.get('continuationCommand', {}).get('token')
+ if token:
+ tokens.append(token)
+ renderer = obj.get('continuationItemRenderer') or {}
+ token = renderer.get('continuationEndpoint', {}).get('continuationCommand', {}).get('token')
+ if token:
+ tokens.append(token)
+ for value in obj.values():
+ scan(value)
+ elif isinstance(obj, list):
+ for value in obj:
+ scan(value)
+ scan(data)
+ return tokens[0] if tokens else ''
+
+ def _extract_videos_from_api(self, data, limit=30):
+ videos = []
+ seen = set()
+ def scan(obj):
+ if len(videos) >= limit:
+ return
+ if isinstance(obj, dict):
+ for key in ('videoRenderer', 'compactVideoRenderer', 'gridVideoRenderer'):
+ if key in obj:
+ item = self._parse_renderer(obj[key], is_live=False)
+ if item and item['vod_id'] not in seen:
+ seen.add(item['vod_id'])
+ videos.append(item)
+ for value in obj.values():
+ scan(value)
+ elif isinstance(obj, list):
+ for value in obj:
+ scan(value)
+ scan(data)
+ return videos[:limit]
+
+ def _extract_live_videos_from_api(self, data, limit=30):
+ videos = []
+ seen = set()
+ def scan(obj):
+ if len(videos) >= limit:
+ return
+ if isinstance(obj, dict):
+ for key in ('videoRenderer', 'compactVideoRenderer', 'gridVideoRenderer'):
+ if key in obj:
+ item = self._parse_renderer(obj[key], is_live=True)
+ if item and item['vod_id'] not in seen:
+ seen.add(item['vod_id'])
+ videos.append(item)
+ for value in obj.values():
+ scan(value)
+ elif isinstance(obj, list):
+ for value in obj:
+ scan(value)
+ scan(data)
+ return videos[:limit]
+
+ def _parse_renderer(self, renderer, is_live=False):
+ try:
+ vid = renderer.get('videoId')
+ if not vid:
+ nav = renderer.get('navigationEndpoint') or {}
+ vid = (nav.get('watchEndpoint') or {}).get('videoId')
+ if not vid:
+ return None
+
+ is_actually_live = False
+ badges = renderer.get('badges', [])
+ for badge in badges:
+ if isinstance(badge, dict):
+ text = badge.get('text', '') or badge.get('label', '') or ''
+ if '直播' in text or 'LIVE' in text.upper():
+ is_actually_live = True
+ break
+ if not is_live and is_actually_live:
+ return None
+
+ title_obj = renderer.get('title') or renderer.get('headline') or {}
+ title = title_obj.get('simpleText') or ''.join([x.get('text', '') for x in title_obj.get('runs', [])]) or 'YouTube Video'
+ dur = ''
+ if not is_actually_live:
+ dur_obj = renderer.get('lengthText') or {}
+ dur = dur_obj.get('simpleText') or ''
+ remarks = '直播' if is_actually_live else (dur if dur else '视频')
+
+ return {
+ 'vod_id': vid,
+ 'vod_name': html.unescape(title),
+ 'vod_pic': f'http://127.0.0.1:9978/proxy?do=py&type=image&vid={vid}',
+ 'vod_remarks': remarks
+ }
+ except Exception:
+ return None
+
+ def _extract_videos_fixed(self, html_str, limit=30):
+ data = None
+ match = re.search(r'var ytInitialData = (\{.*?\});', html_str)
+ if match:
+ try:
+ data = json.loads(match.group(1))
+ except Exception:
+ data = None
+ if not data:
+ return []
+ return self._extract_videos_from_api(data, limit)
+
+ def _get_video_title(self, vid):
+ try:
+ r = self.session.get(f'https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v={vid}&format=json', timeout=30)
+ return r.json().get('title') or vid
+ except Exception:
+ return vid
+
+ def _safe_title(self, title):
+ if not title:
+ return 'video'
+ return re.sub(r'[#$@%&!?*|\\/:<>]', ' ', title)[:60]
+
+ def _play_video(self, video_id, quality):
+ try:
+ data = self.yt_video.extract(video_id)
+ formats = data.get('formats') or []
+
+ all_videos = [x for x in formats if x.get('vcodec') != 'none' and x.get('acodec') == 'none']
+
+ def filter_and_sort_videos(videos):
+ filtered = [v for v in videos if int(v.get('height') or 0) >= 720]
+ filtered.sort(key=lambda x: (int(x.get('height') or 0), int(x.get('bitrate') or 0)), reverse=True)
+ seen_res = {}
+ result = []
+ for v in filtered:
+ h = int(v.get('height') or 0)
+ if h not in seen_res:
+ seen_res[h] = True
+ result.append(v)
+ return result
+
+ webm_videos = filter_and_sort_videos([x for x in all_videos if x.get('ext') == 'webm'])
+ mp4_videos = filter_and_sort_videos([x for x in all_videos if x.get('ext') == 'mp4'])
+
+ if quality == 'normal':
+ target_videos = mp4_videos if mp4_videos else webm_videos
+ else:
+ target_videos = webm_videos if webm_videos else mp4_videos
+
+ audio_candidates = [x for x in formats if x.get('acodec') != 'none' and x.get('vcodec') == 'none']
+ audio_candidates.sort(
+ key=lambda x: (1 if x.get('ext') == 'mp4' else 0, int(x.get('bitrate') or 0)),
+ reverse=True
+ )
+ audio = audio_candidates[0] if audio_candidates else None
+
+ if not target_videos:
+ raise Exception('未获取到可用视频流')
+
+ cache_key = f'yt_{video_id}_{quality}'
+ all_cached = {}
+ for v in target_videos:
+ all_cached[str(v.get('itag'))] = v
+ if audio:
+ all_cached[str(audio.get('itag'))] = audio
+
+ self.setCache(cache_key, {
+ 'target_videos': target_videos,
+ 'audio_item': audio,
+ 'all_by_itag': all_cached,
+ 'duration': data.get('duration') or 0,
+ 'expires': time.time() + 600,
+ })
+
+ return {
+ 'parse': 0, 'jx': 0,
+ 'url': f'http://127.0.0.1:9978/proxy?do=py&type=mpd&vid={video_id}&quality={quality}',
+ 'format': 'application/dash+xml'
+ }
+ except Exception:
+ return {
+ 'parse': 1,
+ 'url': f'https://www.youtube.com/embed/{video_id}?autoplay=1',
+ 'header': json.dumps(self.header)
+ }
+
+ def _proxy_mpd(self, params):
+ vid = params.get('vid')
+ quality = params.get('quality') or 'super'
+ data = self.getCache(f'yt_{vid}_{quality}') if vid else None
+ if not data:
+ return [404, 'text/plain', '视频缓存已过期或不存在']
+
+ target_videos = data.get('target_videos') or []
+ audio_item = data.get('audio_item') or {}
+ duration = data.get('duration') or 0
+ duration_pt = f"PT{int(duration)}S"
+ media_base = f'http://127.0.0.1:9978/proxy?do=py&type=media&vid={vid}&quality={quality}'
+
+ def build_video_repr(item, rank):
+ itag = item.get('itag', 0)
+ init = item.get('initRange') or {}
+ index = item.get('indexRange') or {}
+ return (
+ f'
\n'
+ f' {html.escape(media_base + f"&itag={itag}&track=video")}\n'
+ f' '
+ f'\n'
+ f' '
+ )
+
+ mpd = (
+ f'\n'
+ f'
\n'
+ f' '
+ )
+
+ if target_videos:
+ mime_type = "video/webm" if target_videos[0].get('ext') == 'webm' else "video/mp4"
+ label = "极客VP" if mime_type == "video/webm" else "万能MP"
+ mpd += f'\n \n'
+ mpd += f' \n'
+ for rank, v in enumerate(target_videos, start=1):
+ mpd += build_video_repr(v, rank) + '\n'
+ mpd += ' '
+
+ if audio_item:
+ audio_itag = audio_item.get('itag', 0)
+ audio_init = audio_item.get('initRange') or {}
+ audio_index = audio_item.get('indexRange') or {}
+ audio_mime = (audio_item.get('mimeType') or 'audio/mp4').split(';')[0]
+ mpd += (
+ f'\n \n'
+ f' \n'
+ f' {html.escape(media_base + f"&itag={audio_itag}&track=audio")}\n'
+ f' '
+ f'\n'
+ f' \n'
+ f' '
+ )
+
+ mpd += '\n \n'
+ return [200, 'application/dash+xml', mpd]
+
+ def _proxy_media(self, params):
+ vid = params.get('vid')
+ quality = params.get('quality') or 'super'
+ itag = params.get('itag')
+ track = params.get('track')
+ data = self.getCache(f'yt_{vid}_{quality}') if vid else None
+ if not data:
+ return [404, 'text/plain', '媒体缓存不存在或已过期']
+
+ all_by_itag = data.get('all_by_itag') or {}
+ media_item = None
+
+ if itag and str(itag) in all_by_itag:
+ media_item = all_by_itag[str(itag)]
+ elif track == 'audio':
+ media_item = data.get('audio_item')
+
+ if not media_item:
+ return [404, 'text/plain', f'流不存在 (itag={itag})']
+
+ target_url = media_item.get('url')
+ if not target_url:
+ return [404, 'text/plain', '播放地址不存在']
+
+ headers = self.header.copy()
+ headers.update(media_item.get('headers') or {})
+ range_header = params.get('range') or params.get('Range')
+ if range_header:
+ headers['Range'] = range_header
+
+ max_retries = 3
+ for attempt in range(max_retries + 1):
+ try:
+ r = self.session.get(target_url, headers=headers, stream=True, timeout=120)
+ if r.status_code in (403, 404) and attempt < max_retries:
+ try:
+ fresh_data = self.yt_video.extract(vid)
+ fresh_formats = fresh_data.get('formats', [])
+ fresh_item = None
+ for f in fresh_formats:
+ if str(f.get('itag')) == str(itag):
+ fresh_item = f
+ break
+ if fresh_item and fresh_item.get('url'):
+ media_item['url'] = fresh_item['url']
+ target_url = fresh_item['url']
+ all_by_itag[str(itag)] = fresh_item
+ data['all_by_itag'] = all_by_itag
+ self.setCache(f'yt_{vid}_{quality}', data)
+ continue
+ except Exception:
+ pass
+ time.sleep(1)
+ continue
+ content_type = r.headers.get('content-type', 'application/octet-stream')
+ resp_headers = {
+ 'Content-Type': content_type,
+ 'Accept-Ranges': 'bytes',
+ 'Cache-Control': 'no-cache',
+ }
+ if r.headers.get('content-range'):
+ resp_headers['Content-Range'] = r.headers.get('content-range')
+ if r.headers.get('content-length'):
+ resp_headers['Content-Length'] = r.headers.get('content-length')
+ return [r.status_code, content_type, r.content, resp_headers]
+ except Exception as e:
+ if attempt == max_retries:
+ return [500, 'text/plain', f'代理媒体失败: {str(e)}']
+ time.sleep(1)
+ return [500, 'text/plain', '代理媒体失败']
+
+ def _play_live(self, video_id):
+ try:
+ data = self.yt_live.extract_live(video_id)
+ hls_url = data.get('hls_url') or ''
+ if not hls_url:
+ raise Exception(data.get('reason') or '未获取到直播 HLS 地址')
+ if self.extendDict.get('hls_probe'):
+ self._probe_hls(video_id, hls_url)
+ play_url = hls_url
+ if self.hls_proxy_enabled:
+ play_url = self._cache_hls_url(hls_url, video_id, 'master')
+ return {
+ 'parse': 0,
+ 'jx': 0,
+ 'url': play_url,
+ 'header': self.header,
+ 'format': 'application/x-mpegURL'
+ }
+ except Exception:
+ return {'parse': 1, 'jx': 1, 'url': f'https://www.youtube.com/embed/{video_id}?autoplay=1'}
+
+ def _probe_hls(self, video_id, hls_url):
+ try:
+ response = self.session.get(hls_url, headers=self.header, timeout=60)
+ full_text = response.text or ''
+ variant_url = self._pick_variant_playlist(hls_url, full_text)
+ if variant_url:
+ self.session.get(variant_url, headers=self.header, timeout=60)
+ except Exception:
+ pass
+
+ def _pick_variant_playlist(self, base_url, text):
+ lines = [line.strip() for line in (text or '').splitlines()]
+ best_score = -1
+ best_url = ''
+ for index, line in enumerate(lines):
+ if not line.startswith('#EXT-X-STREAM-INF'):
+ continue
+ score = 0
+ bandwidth = re.search(r'BANDWIDTH=(\d+)', line)
+ resolution = re.search(r'RESOLUTION=(\d+)x(\d+)', line)
+ if bandwidth:
+ score += int(bandwidth.group(1))
+ if resolution:
+ score += int(resolution.group(1)) * int(resolution.group(2))
+ for next_line in lines[index + 1:]:
+ if not next_line or next_line.startswith('#'):
+ continue
+ if score > best_score:
+ best_score = score
+ best_url = urljoin(base_url, next_line)
+ break
+ return best_url
+
+ HLS_TTL = {'master': 6 * 3600, 'playlist': 6 * 3600, 'media': 120, 'media_retry': 120}
+
+ def _hls_ttl(self, kind):
+ return self.HLS_TTL.get(kind, 180)
+
+ def _prune_hls_cache(self):
+ now = time.time()
+ expired = [k for k, v in self.hls_url_cache.items() if v.get('expires', 0) < now]
+ for k in expired:
+ self.hls_url_cache.pop(k, None)
+
+ def _cache_hls_url(self, target_url, video_id='', kind='media'):
+ self._prune_hls_cache()
+ self._hls_key_seq += 1
+ key = f'{int(time.time() * 1000)}_{self._hls_key_seq}'
+ self.hls_url_cache[key] = {
+ 'url': target_url,
+ 'video_id': video_id,
+ 'kind': kind,
+ 'expires': time.time() + self._hls_ttl(kind),
+ }
+ return f'http://127.0.0.1:9978/proxy?do=py&type=hls&key={quote(key)}'
+
+ def _hls_headers(self, target_url, kind=None):
+ if kind == 'media_retry':
+ return {
+ 'User-Agent': 'com.google.android.youtube/21.02.35 (Linux; U; Android 11) gzip',
+ 'Accept': '*/*',
+ }
+ headers = self.header.copy()
+ headers['Accept'] = '*/*'
+ if kind in ('master', 'playlist'):
+ headers['Origin'] = 'https://www.youtube.com'
+ headers['Referer'] = 'https://www.youtube.com/'
+ elif kind == 'media':
+ headers['User-Agent'] = 'com.google.android.youtube/21.02.35 (Linux; U; Android 11) gzip'
+ headers.pop('Origin', None)
+ headers.pop('Referer', None)
+ return headers
+
+ def _rewrite_m3u8(self, text, base_url, video_id=''):
+ output = []
+ for line in (text or '').splitlines():
+ stripped = line.strip()
+ if not stripped:
+ output.append(line)
+ continue
+ if stripped.startswith('#'):
+ output.append(self._rewrite_m3u8_tag(line, base_url, video_id))
+ continue
+ absolute = urljoin(base_url, stripped)
+ kind = 'playlist' if stripped.endswith('.m3u8') or '/hls_playlist/' in stripped else 'media'
+ output.append(self._cache_hls_url(absolute, video_id, kind))
+ return '\n'.join(output) + '\n'
+
+ def _rewrite_m3u8_tag(self, line, base_url, video_id=''):
+ def replace_uri(match):
+ raw_url = match.group(1)
+ absolute = urljoin(base_url, raw_url)
+ proxied = self._cache_hls_url(absolute, video_id, 'media')
+ return f'URI="{proxied}"'
+ return re.sub(r'URI="([^"]+)"', replace_uri, line)
+
+ def _proxy_hls(self, params):
+ key = params.get('key') or ''
+ item = self.hls_url_cache.get(key)
+ if not item or item.get('expires', 0) < time.time():
+ return [404, 'text/plain', 'HLS 缓存已过期']
+ item['expires'] = time.time() + self._hls_ttl(item.get('kind'))
+ target_url = item.get('url') or ''
+ video_id = item.get('video_id', '')
+
+ try:
+ headers = self._hls_headers(target_url, item.get('kind'))
+ max_retries = 3
+ for attempt in range(max_retries + 1):
+ try:
+ response = self.session.get(target_url, headers=headers, stream=True, timeout=120)
+ if response.status_code in (403, 404) and attempt < max_retries:
+ if video_id and item.get('kind') in ('master', 'playlist'):
+ try:
+ live_data = self.yt_live.extract_live(video_id)
+ new_hls = live_data.get('hls_url')
+ if new_hls:
+ item['url'] = new_hls
+ target_url = new_hls
+ self.hls_url_cache[key] = item
+ continue
+ except Exception:
+ pass
+ time.sleep(1)
+ continue
+ content_type = response.headers.get('content-type') or ''
+ is_m3u8 = item.get('kind') in ('master', 'playlist') or 'mpegurl' in content_type.lower() or target_url.split('?')[0].endswith('.m3u8')
+ if is_m3u8:
+ text = response.text
+ rewritten = self._rewrite_m3u8(text, target_url, video_id)
+ return [response.status_code, 'application/vnd.apple.mpegurl', rewritten, {'Content-Type': 'application/vnd.apple.mpegurl', 'Cache-Control': 'no-cache'}]
+ resp_headers = {'Content-Type': content_type or 'application/octet-stream', 'Cache-Control': 'no-cache'}
+ if response.headers.get('content-length'):
+ resp_headers['Content-Length'] = response.headers.get('content-length')
+ return [response.status_code, content_type or 'application/octet-stream', response.content, resp_headers]
+ except Exception as e:
+ if attempt == max_retries:
+ raise
+ time.sleep(1)
+ except Exception as e:
+ return [500, 'text/plain', f'HLS 代理失败: {str(e)}']
+ return [500, 'text/plain', 'HLS 代理失败']
+
+ def localProxy(self, params):
+ if params.get('do') != 'py':
+ return None
+ typ = params.get('type')
+ if typ == 'mpd':
+ return self._proxy_mpd(params)
+ if typ == 'media':
+ return self._proxy_media(params)
+ if typ == 'single':
+ return self._proxy_single(params)
+ if typ == 'image':
+ return self._proxy_image(params)
+ if typ == 'hls':
+ return self._proxy_hls(params)
+ return None
+
+ def _proxy_image(self, params):
+ vid = params.get('vid')
+ if not vid:
+ return [400, 'text/plain', '缺少 video id']
+ quality = params.get('quality', 'hqdefault')
+ img_url = f'https://i.ytimg.com/vi/{vid}/{quality}.jpg'
+ try:
+ r = self.session.get(img_url, timeout=30)
+ if r.status_code == 200:
+ content_type = r.headers.get('content-type', 'image/jpeg')
+ return [200, content_type, r.content, {'Cache-Control': 'max-age=86400'}]
+ else:
+ return [404, 'text/plain', f'图片不存在 ({r.status_code})']
+ except Exception:
+ return [500, 'text/plain', '代理图片失败']
+
+ def _proxy_single(self, params):
+ vid = params.get('vid')
+ data = self.getCache(f'yt_single_{vid}') if vid else None
+ if not data:
+ return [404, 'text/plain', '播放缓存已过期或不存在']
+ target_url = data.get('url')
+ if not target_url:
+ return [404, 'text/plain', '播放地址不存在']
+ headers = (data.get('headers') or self.header).copy()
+ range_header = params.get('range') or params.get('Range')
+ if range_header:
+ headers['Range'] = range_header
+ try:
+ r = self.session.get(target_url, headers=headers, stream=True, timeout=120)
+ content_type = r.headers.get('content-type', 'video/mp4')
+ resp_headers = {
+ 'Content-Type': content_type,
+ 'Accept-Ranges': 'bytes',
+ 'Cache-Control': 'no-cache',
+ }
+ if r.headers.get('content-range'):
+ resp_headers['Content-Range'] = r.headers.get('content-range')
+ if r.headers.get('content-length'):
+ resp_headers['Content-Length'] = r.headers.get('content-length')
+ return [r.status_code, content_type, r.content, resp_headers]
+ except Exception:
+ return [500, 'text/plain', '代理播放失败']
+
+ def destroy(self):
+ try:
+ self.session.close()
+ except Exception:
+ pass
\ No newline at end of file
diff --git a/tvbox/lib/aliproxy.tar.xz b/tvbox/lib/aliproxy.tar.xz
index 587ad4be..bf3357b3 100755
Binary files a/tvbox/lib/aliproxy.tar.xz and b/tvbox/lib/aliproxy.tar.xz differ
diff --git a/tvbox/lib/aliproxy.tar.xz.md5 b/tvbox/lib/aliproxy.tar.xz.md5
index 7773ce8b..4aa66736 100644
--- a/tvbox/lib/aliproxy.tar.xz.md5
+++ b/tvbox/lib/aliproxy.tar.xz.md5
@@ -1 +1 @@
-73b0a7d905aa71581bfad6860e7affc4
+bf1480593cbb56542c8f183231818244
diff --git a/tvbox/lib/allinone.tar.xz b/tvbox/lib/allinone.tar.xz
index a56d40fe..82e71e3c 100755
Binary files a/tvbox/lib/allinone.tar.xz and b/tvbox/lib/allinone.tar.xz differ
diff --git a/tvbox/lib/allinone.tar.xz.md5 b/tvbox/lib/allinone.tar.xz.md5
index a2c84bb1..fbf9bb47 100644
--- a/tvbox/lib/allinone.tar.xz.md5
+++ b/tvbox/lib/allinone.tar.xz.md5
@@ -1 +1 @@
-20b84d6b6d2f6f4e3445efe0cbe3d592
+0b0eee7f30e33f4c9ef607f8bf3470f2
diff --git a/tvbox/lib/clash2singbox.tar.xz b/tvbox/lib/clash2singbox.tar.xz
index a70f6af6..68936af3 100755
Binary files a/tvbox/lib/clash2singbox.tar.xz and b/tvbox/lib/clash2singbox.tar.xz differ
diff --git a/tvbox/lib/clash2singbox.tar.xz.md5 b/tvbox/lib/clash2singbox.tar.xz.md5
index 39d12f00..b269c965 100644
--- a/tvbox/lib/clash2singbox.tar.xz.md5
+++ b/tvbox/lib/clash2singbox.tar.xz.md5
@@ -1 +1 @@
-05be016ae6119c38a60f62717af8c883
+0212473db4864d72a0a8aa9394ba2116
diff --git a/tvbox/lib/iptv.m3u b/tvbox/lib/iptv.m3u
index af528f5f..5e43ebb0 100755
--- a/tvbox/lib/iptv.m3u
+++ b/tvbox/lib/iptv.m3u
@@ -68,7 +68,7 @@ http://101.43.145.141:12002/gaoma/cctv4k.m3u8$LR•IPV4•7『线路2』
#EXTINF:-1 tvg-id="CCTV4K" tvg-name="CCTV4K" group-title="4K",CCTV4K
https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784358000-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-c0b2f705841d49d821e3075961bb6e84&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•7『线路3』
#EXTINF:-1 tvg-id="CCTV4K" tvg-name="CCTV4K" group-title="4K",CCTV4K
-https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784361600-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-dbc4b9704792e97da2c65aeed2033e45&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•7『线路4』
+https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784371500-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-48ffc61db508f8062cc67caddde58d68&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•7『线路4』
#EXTINF:-1 tvg-id="CCTV4K" tvg-name="CCTV4K" group-title="4K",CCTV4K
http://198.204.240.250:82/live/cctv4k.m3u8$LR•IPV4•7『线路5』
#EXTINF:-1 tvg-id="CCTV4K" tvg-name="CCTV4K" group-title="4K",CCTV4K
@@ -170,7 +170,7 @@ p3p://167.114.175.6:55331/61244d9c0006885d64b1b7591f6c12a0$LR•IPV4•16『线
#EXTINF:-1 tvg-id="CCTV4" tvg-name="CCTV4" group-title="央视",CCTV4
https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784358000-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-109c81da2b0d59c7b20e5792a12e386f&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•16『线路10』
#EXTINF:-1 tvg-id="CCTV4" tvg-name="CCTV4" group-title="央视",CCTV4
-https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784361600-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-e246d8a5986fffcd5d21d25acc7aca83&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•16『线路11』
+https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784371500-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-bb4241b14453c4f49bd0749a3aab3caf&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•16『线路11』
#EXTINF:-1 tvg-id="CCTV4" tvg-name="CCTV4" group-title="央视",CCTV4
https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784271600-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-6aec44040ec72def77e22587fc404005&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•16『线路12』
#EXTINF:-1 tvg-id="CCTV4" tvg-name="CCTV4" group-title="央视",CCTV4
@@ -310,7 +310,7 @@ http://153.0.171.163:9901/tsfile/live/1008_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 tvg-id="CCTV9" tvg-name="CCTV9" group-title="央视",CCTV9
https://v4-e6b1c5baf4e240fe63adbf68dda23435.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=8a60541ebe4d355d0da6b086b9f2026d$LR•IPV4•12『线路8』
#EXTINF:-1 tvg-id="CCTV9" tvg-name="CCTV9" group-title="央视",CCTV9
-https://v4-702cae17a28d6e4f0c0002bba021d934.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=db97ec06b982224fd6b00b7bb1f6143c$LR•IPV4•12『线路9』
+https://v4-702cae17a28d6e4f0c0002bba021d934.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=17294e1ca3c39692f88722ff53cecd2a$LR•IPV4•12『线路9』
#EXTINF:-1 tvg-id="CCTV9" tvg-name="CCTV9" group-title="央视",CCTV9
http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226944/1.m3u8?$LR•IPV6•12『线路10』
#EXTINF:-1 tvg-id="CCTV9" tvg-name="CCTV9" group-title="央视",CCTV9
@@ -876,41 +876,39 @@ http://153.0.171.163:9901/tsfile/live/0137_1.m3u8?key=txiptv&playlive=1&authid=0
#EXTINF:-1 tvg-id="东南卫视" tvg-name="东南卫视" group-title="卫视",东南卫视
http://118.81.195.79:9003/hls/24/index.m3u8$LR•IPV4•18『线路18』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•18『线路1』
+http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•17『线路1』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•18『线路2』
+http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•17『线路2』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv$LR•IPV4•18『线路3』
+http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv$LR•IPV4•17『线路3』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://173.208.212.130:8181/720p/szws.m3u8$LR•IPV4•18『线路4』
+http://173.208.212.130:8181/720p/szws.m3u8$LR•IPV4•17『线路4』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://192.151.150.154/live/szwshd.m3u8$LR•IPV4•18『线路5』
+http://192.151.150.154/live/szwshd.m3u8$LR•IPV4•17『线路5』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://124.228.160.210:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路6』
+http://124.228.160.210:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路6』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://36.136.38.87:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路7』
+http://36.136.38.87:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路7』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://183.11.239.36:808/hls/45/index.m3u8$LR•IPV4•18『线路8』
+http://183.11.239.36:808/hls/45/index.m3u8$LR•IPV4•17『线路8』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-https://sztv-hls.sztv.com.cn/AxeFRth/500/q37Age0.m3u8?sign=671fcd3c133f66cef04a83ae0b8c542b&t=6a59189c$LR•IPV4•18『线路9』
+http://38.75.136.137:98/gslb/dsdqpub/szwshd.m3u8?auth=testpub$LR•IPV4•17『线路9』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://38.75.136.137:98/gslb/dsdqpub/szwshd.m3u8?auth=testpub$LR•IPV4•18『线路10』
+http://23.237.228.134/live6/shenzhen.m3u8$LR•IPV4•17『线路10』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://23.237.228.134/live6/shenzhen.m3u8$LR•IPV4•18『线路11』
+http://gfr.x3322.net:9901/tsfile/live/1095_1.m3u8$LR•IPV4•17『线路11』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://gfr.x3322.net:9901/tsfile/live/1095_1.m3u8$LR•IPV4•18『线路12』
+http://api.kkitv.itv888.cn:8080/hls/iftsd32ykm/index.m3u8$LR•IPV4•17『线路12』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://api.kkitv.itv888.cn:8080/hls/iftsd32ykm/index.m3u8$LR•IPV4•18『线路13』
+https://iptv.catvod.com/catvod.php?id=szws$LR•IPV4•17『线路13』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-https://iptv.catvod.com/catvod.php?id=szws$LR•IPV4•18『线路14』
+https://httop.top/ysp-深圳卫视$LR•IPV4•17『线路14』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-https://httop.top/ysp-深圳卫视$LR•IPV4•18『线路15』
+http://iptv.huuc.edu.cn/hls/szhd.m3u8$LR•IPV4•17『线路15』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://iptv.huuc.edu.cn/hls/szhd.m3u8$LR•IPV4•18『线路16』
+http://153.0.171.163:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路16』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://153.0.171.163:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路17』
-#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="卫视",深圳卫视
-http://38.64.72.148:80/hls/modn/list/4007/playlist.m3u8$LR•IPV4•18『线路18』
+http://38.64.72.148:80/hls/modn/list/4007/playlist.m3u8$LR•IPV4•17『线路17』
#EXTINF:-1 tvg-id="广东卫视" tvg-name="广东卫视" group-title="卫视",广东卫视
http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226961/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E2MGyx659D_aaDPP0qt3NgA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•12『线路1』
#EXTINF:-1 tvg-id="广东卫视" tvg-name="广东卫视" group-title="卫视",广东卫视
@@ -1018,31 +1016,33 @@ http://183.207.248.71/gitv/live1/G_GUIZHOU/G_GUIZHOU$LR•IPV4•16『线路15
#EXTINF:-1 tvg-id="贵州卫视" tvg-name="贵州卫视" group-title="卫视",贵州卫视
http://39.134.115.163:8080/PLTV/88888910/224/3221225728/index.m3u8$LR•IPV4•16『线路16』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227014/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ErSGjhI3DMaaAASPrbQJYTg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•13『线路1』
+http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227014/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ErSGjhI3DMaaAASPrbQJYTg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•14『线路1』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://101.66.194.63:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•13『线路2』
+http://101.66.194.63:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•14『线路2』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://101.66.199.247:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•13『线路3』
+http://101.66.199.247:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•14『线路3』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://204.12.221.218:8181/3m1080p/hews.m3u8$LR•IPV4•13『线路4』
+http://204.12.221.218:8181/3m1080p/hews.m3u8$LR•IPV4•14『线路4』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://event.pull.hebtv.com/jishi/weishi_tingyun.m3u8$LR•IPV4•13『线路5』
+http://event.pull.hebtv.com/jishi/weishi_tingyun.m3u8$LR•IPV4•14『线路5』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://183.11.239.36:808/hls/54/index.m3u8$LR•IPV4•13『线路6』
+http://183.11.239.36:808/hls/54/index.m3u8$LR•IPV4•14『线路6』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://23.237.228.134/live8/hebei.m3u8$LR•IPV4•13『线路7』
+https://tv.pull.hebtv.com/jishi/nongminpindao.m3u8?t=1783932137&k=f5f7fa7a3e39ef329f1b86c4f866958c$LR•IPV4•14『线路7』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://43.251.226.89:8080/play/42.m3u8$LR•IPV4•13『线路8』
+http://23.237.228.134/live8/hebei.m3u8$LR•IPV4•14『线路8』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://gfr.x3322.net:9901/tsfile/live/1091_1.m3u8$LR•IPV4•13『线路9』
+http://43.251.226.89:8080/play/42.m3u8$LR•IPV4•14『线路9』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-https://iptv.catvod.com/catvod.php?id=hbws$LR•IPV4•13『线路10』
+http://gfr.x3322.net:9901/tsfile/live/1091_1.m3u8$LR•IPV4•14『线路10』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-https://httop.top/ysp-河北卫视$LR•IPV4•13『线路11』
+https://iptv.catvod.com/catvod.php?id=hbws$LR•IPV4•14『线路11』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://iptv.huuc.edu.cn/hls/hebhd.m3u8$LR•IPV4•13『线路12』
+https://httop.top/ysp-河北卫视$LR•IPV4•14『线路12』
#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
-http://153.0.171.163:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•13『线路13』
+http://iptv.huuc.edu.cn/hls/hebhd.m3u8$LR•IPV4•14『线路13』
+#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视",河北卫视
+http://153.0.171.163:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•14『线路14』
#EXTINF:-1 tvg-id="河南卫视" tvg-name="河南卫视" group-title="卫视",河南卫视
http://101.66.195.138:9901/tsfile/live/0139_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•12『线路1』
#EXTINF:-1 tvg-id="河南卫视" tvg-name="河南卫视" group-title="卫视",河南卫视
@@ -1120,37 +1120,35 @@ http://www.745612.xyz:7788/rtp/235.254.198.72:1564$LR•IPV4•14『线路13』
#EXTINF:-1 tvg-id="湖北卫视" tvg-name="湖北卫视" group-title="卫视",湖北卫视
http://118.81.195.79:9003/hls/32/index.m3u8$LR•IPV4•14『线路14』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226956/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Ei6ZIpVizXlewg-YfGvH8dA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•16『线路1』
+http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226956/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Ei6ZIpVizXlewg-YfGvH8dA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•15『线路1』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://101.66.199.247:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路2』
+http://101.66.199.247:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•15『线路2』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://112.123.243.37:50085/tsfile/live/0132_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路3』
+http://112.123.243.37:50085/tsfile/live/0132_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•15『线路3』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://124.228.160.210:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路4』
+http://124.228.160.210:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•15『线路4』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://153.0.171.163:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路5』
+http://153.0.171.163:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•15『线路5』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://112.27.235.94:8000/hls/44/index.m3u8$LR•IPV4•16『线路6』
+http://112.27.235.94:8000/hls/44/index.m3u8$LR•IPV4•15『线路6』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-https://jsp-tv-live.jxtvcn.com.cn/live-jsp/tv_jxtv6.m3u8?t=1784004704&token=67a59c29-de6e-4407-90c8-39f7e099b3db&d=0a7a8c487c454bc7bb02a60298283c5e$LR•IPV4•16『线路7』
+http://38.75.136.137:98/gslb/dsdqpub/jxwshd.m3u8?auth=testpub$LR•IPV4•15『线路7』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://38.75.136.137:98/gslb/dsdqpub/jxwshd.m3u8?auth=testpub$LR•IPV4•16『线路8』
+http://23.237.228.134/live8/jiangxi.m3u8$LR•IPV4•15『线路8』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://23.237.228.134/live8/jiangxi.m3u8$LR•IPV4•16『线路9』
+http://43.251.226.89:8080/play/43.m3u8$LR•IPV4•15『线路9』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://43.251.226.89:8080/play/43.m3u8$LR•IPV4•16『线路10』
+http://api.kkitv.itv888.cn:8080/hls/pv0np60bpin/index.m3u8$LR•IPV4•15『线路10』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://api.kkitv.itv888.cn:8080/hls/pv0np60bpin/index.m3u8$LR•IPV4•16『线路11』
+https://iptv.catvod.com/catvod.php?id=jxws$LR•IPV4•15『线路11』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-https://iptv.catvod.com/catvod.php?id=jxws$LR•IPV4•16『线路12』
+https://httop.top/ysp-江西卫视$LR•IPV4•15『线路12』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-https://httop.top/ysp-江西卫视$LR•IPV4•16『线路13』
+http://iptv.huuc.edu.cn/hls/jxhd.m3u8$LR•IPV4•15『线路13』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://iptv.huuc.edu.cn/hls/jxhd.m3u8$LR•IPV4•16『线路14』
+http://mg.hmysapp.cn:177/ckmg/zb.php?id=jxws$LR•IPV4•15『线路14』
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://mg.hmysapp.cn:177/ckmg/zb.php?id=jxws$LR•IPV4•16『线路15』
-#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" group-title="卫视",江西卫视
-http://39.134.115.163:8080/PLTV/88888910/224/3221225705/index.m3u8$LR•IPV4•16『线路16』
+http://39.134.115.163:8080/PLTV/88888910/224/3221225705/index.m3u8$LR•IPV4•15『线路15』
#EXTINF:-1 tvg-id="吉林卫视" tvg-name="吉林卫视" group-title="卫视",吉林卫视
http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227015/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EW5-3AVdwD5KlUpuA4mz7Cg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•17『线路1』
#EXTINF:-1 tvg-id="吉林卫视" tvg-name="吉林卫视" group-title="卫视",吉林卫视
@@ -1400,39 +1398,37 @@ http://223.110.243.136/PLTV/3/224/3221225523/index.m3u8$LR•IPV4•14『线路1
#EXTINF:-1 tvg-id="新疆卫视" tvg-name="新疆卫视" group-title="卫视",新疆卫视
http://112.25.48.68/live/program/live/xjws/1300000/mnf.m3u8$LR•IPV4•14『线路14』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227028/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGfQPqRNVeBjTMsZ48qu0SA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•17『线路1』
+http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227028/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGfQPqRNVeBjTMsZ48qu0SA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•16『线路1』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://120.198.95.220:9901/tsfile/live/1056_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•17『线路2』
+http://120.198.95.220:9901/tsfile/live/1056_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•16『线路2』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://38.75.136.137:98/gslb/dsdqpub/ynwshd.m3u8?auth=testpub$LR•IPV4•17『线路3』
+http://38.75.136.137:98/gslb/dsdqpub/ynwshd.m3u8?auth=testpub$LR•IPV4•16『线路3』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://204.12.221.218:8181/3m1080p/ynws.m3u8$LR•IPV4•17『线路4』
+http://204.12.221.218:8181/3m1080p/ynws.m3u8$LR•IPV4•16『线路4』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://112.123.243.37:50085/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•17『线路5』
+http://112.123.243.37:50085/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路5』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://101.66.194.82:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•17『线路6』
+http://101.66.194.82:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路6』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://101.66.194.63:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•17『线路7』
+http://101.66.194.63:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路7』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://36.136.38.87:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路8』
+http://36.136.38.87:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路8』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://101.66.195.138:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•17『线路9』
+http://101.66.195.138:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路9』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://101.66.199.247:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•17『线路10』
+http://101.66.199.247:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路10』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://153.0.171.163:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路11』
+http://153.0.171.163:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路11』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://112.27.235.94:8000/hls/40/index.m3u8$LR•IPV4•17『线路12』
+http://112.27.235.94:8000/hls/40/index.m3u8$LR•IPV4•16『线路12』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://p2.ioioz.com/xgplayer.php?id=https://hwapi.yntv.net/ew265l/z1z6s5.m3u8$LR•IPV4•17『线路13』
+http://23.237.228.134/live8/yunnan.m3u8$LR•IPV4•16『线路13』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-http://23.237.228.134/live8/yunnan.m3u8$LR•IPV4•17『线路14』
+https://iptv.catvod.com/catvod.php?id=ynws$LR•IPV4•16『线路14』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-https://iptv.catvod.com/catvod.php?id=ynws$LR•IPV4•17『线路15』
+https://httop.top/ysp-云南卫视$LR•IPV4•16『线路15』
#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-https://httop.top/ysp-云南卫视$LR•IPV4•17『线路16』
-#EXTINF:-1 tvg-id="云南卫视" tvg-name="云南卫视" group-title="卫视",云南卫视
-https://hwapi.yunshicloud.com/8xughf/e0bx15.m3u8$LR•IPV4•17『线路17』
+https://hwapi.yunshicloud.com/8xughf/e0bx15.m3u8$LR•IPV4•16『线路16』
#EXTINF:-1 tvg-id="西藏卫视" tvg-name="西藏卫视" group-title="卫视",西藏卫视
http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227033/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EdeTB7OZ9G_VNJk5C3t96fQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•12『线路1』
#EXTINF:-1 tvg-id="西藏卫视" tvg-name="西藏卫视" group-title="卫视",西藏卫视
@@ -1556,7 +1552,7 @@ http://101.66.199.247:9901/tsfile/live/0118_1.m3u8?key=txiptv&playlive=0&authid=
#EXTINF:-1 tvg-id="山西卫视" tvg-name="山西卫视" group-title="卫视",山西卫视
http://153.0.171.163:9901/tsfile/live/0118_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•15『线路10』
#EXTINF:-1 tvg-id="山西卫视" tvg-name="山西卫视" group-title="卫视",山西卫视
-https://livehhhttps.sxrtv.com/lsdream/lce1mC4/800/h1thc41.m3u8$LR•IPV4•15『线路11』
+https://livehhhttps.sxrtv.com/lsdream/Md571Kv/800/p7iM150.m3u8$LR•IPV4•15『线路11』
#EXTINF:-1 tvg-id="山西卫视" tvg-name="山西卫视" group-title="卫视",山西卫视
http://23.237.228.134/live8/shanxi.m3u8$LR•IPV4•15『线路12』
#EXTINF:-1 tvg-id="山西卫视" tvg-name="山西卫视" group-title="卫视",山西卫视
@@ -1884,9 +1880,9 @@ http://feiyang.ak47s.top:35455/itv/1000000001000009601.m3u8?cdn=ystenlive$LR•I
#EXTINF:-1 tvg-id="NewTV超级体育" tvg-name="NewTV超级体育" group-title="数字",NewTV超级体育
http://kkk.jjjj.jiduo.me/api.php?n=tttt&id=3188&tk=23a9aca1f79f$LR•IPV4•5『线路5』
#EXTINF:-1 tvg-id="NewTV动作电影" tvg-name="NewTV动作电影" group-title="数字",NewTV动作电影
-http://39.134.19.68/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226465/index.m3u8$LR•IPV4•2『线路1』
+http://live.metshop.top/huya/11602077?cdn=alicdn$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="NewTV动作电影" tvg-name="NewTV动作电影" group-title="数字",NewTV动作电影
-http://live.metshop.top/huya/11602077?cdn=alicdn$LR•IPV4•2『线路2』
+http://39.134.19.68/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226465/index.m3u8$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="NewTV精品体育" tvg-name="NewTV精品体育" group-title="数字",NewTV精品体育
https://epg.pw/stream/f7556eccd4ae06b0c2991fdc7a4f8388496559f728cc82459a8e50346040e226.m3u8$LR•IPV4•6『线路1』
#EXTINF:-1 tvg-id="NewTV精品体育" tvg-name="NewTV精品体育" group-title="数字",NewTV精品体育
@@ -2200,9 +2196,9 @@ https://ls.qingting.fm/live/21303/64k.m3u8$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="铜陵新闻综合频道" tvg-name="铜陵新闻综合频道" group-title="安徽",铜陵新闻综合频道
http://dstpush1.retalltech.com/app/stream1.m3u8$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="亳州农村" tvg-name="亳州农村" group-title="安徽",亳州农村
-http://220.180.110.101:8083/videos/live/39/13/o4ncrHkSp7q09/o4ncrHkSp7q09.m3u8$LR•IPV4•2『线路1』
+http://zbbf2.ahbztv.com/live/418.m3u8$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="亳州农村" tvg-name="亳州农村" group-title="安徽",亳州农村
-http://zbbf2.ahbztv.com/live/418.m3u8$LR•IPV4•2『线路2』
+http://220.180.110.101:8083/videos/live/39/13/o4ncrHkSp7q09/o4ncrHkSp7q09.m3u8$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="北京财经" tvg-name="北京财经" group-title="北京",北京财经
http://ivi.bupt.edu.cn/hls/btv5.m3u8$LR•IPV4
#EXTINF:-1 tvg-id="北京青年" tvg-name="北京青年" group-title="北京",北京青年
@@ -2222,31 +2218,31 @@ https://31182.hlsplay.aodianyun.com/lms_31182/tv_channel_175.m3u8$LR•IPV4
#EXTINF:-1 tvg-id="南宁影视娱乐" tvg-name="南宁影视娱乐" group-title="广西",南宁影视娱乐
http://hls.nntv.cn/nnlive/YSYL_244.m3u8$LR•IPV4
#EXTINF:-1 tvg-id="邢台综合" tvg-name="邢台综合" group-title="河北",邢台综合
-http://222.223.119.21:8888/newlive/live/hls/54/live.m3u8$LR•IPV4•2『线路1』
+https://jwplay.hebyun.com.cn:443/live/xtsrmtzs/1500k/tzwj_video.m3u8$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="邢台综合" tvg-name="邢台综合" group-title="河北",邢台综合
-https://jwplay.hebyun.com.cn:443/live/xtsrmtzs/1500k/tzwj_video.m3u8$LR•IPV4•2『线路2』
+http://222.223.119.21:8888/newlive/live/hls/54/live.m3u8$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="河北都市" tvg-name="河北都市" group-title="河北",河北都市
-http://121.19.134.246:808/hls/21/index.m3u8$LR•IPV4•2『线路1』
+http://1.94.31.214/php/hebei.php?id=hbds$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="河北都市" tvg-name="河北都市" group-title="河北",河北都市
-http://1.94.31.214/php/hebei.php?id=hbds$LR•IPV4•2『线路2』
+http://121.19.134.246:808/hls/21/index.m3u8$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="河北农民" tvg-name="河北农民" group-title="河北",河北农民
-http://121.19.134.246:808/hls/25/index.m3u8$LR•IPV4•2『线路1』
+https://ls.qingting.fm/live/1650/64k.m3u8$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="河北农民" tvg-name="河北农民" group-title="河北",河北农民
-https://ls.qingting.fm/live/1650/64k.m3u8$LR•IPV4•2『线路2』
+http://121.19.134.246:808/hls/25/index.m3u8$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="鹿泉一套" tvg-name="鹿泉一套" group-title="河北",鹿泉一套
http://hblq.chinashadt.com:2036/live/stream:luquan1.stream/playlist.m3u8$LR•IPV4
#EXTINF:-1 tvg-id="河北经济" tvg-name="河北经济" group-title="河北",河北经济
-http://121.19.134.246:808/hls/20/index.m3u8$LR•IPV4•2『线路1』
+http://1.94.31.214/php/hebei.php?id=jjsh$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="河北经济" tvg-name="河北经济" group-title="河北",河北经济
-http://1.94.31.214/php/hebei.php?id=jjsh$LR•IPV4•2『线路2』
+http://121.19.134.246:808/hls/20/index.m3u8$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="河北影视" tvg-name="河北影视" group-title="河北",河北影视
-http://121.19.134.246:808/hls/22/index.m3u8$LR•IPV4•2『线路1』
+http://1.94.31.214/php/hebei.php?id=hbys$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="河北影视" tvg-name="河北影视" group-title="河北",河北影视
-http://1.94.31.214/php/hebei.php?id=hbys$LR•IPV4•2『线路2』
+http://121.19.134.246:808/hls/22/index.m3u8$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="河北公共" tvg-name="河北公共" group-title="河北",河北公共
-http://121.19.134.246:808/hls/24/index.m3u8$LR•IPV4•2『线路1』
+http://1.94.31.214/php/hebei.php?id=hbgg$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="河北公共" tvg-name="河北公共" group-title="河北",河北公共
-http://1.94.31.214/php/hebei.php?id=hbgg$LR•IPV4•2『线路2』
+http://121.19.134.246:808/hls/24/index.m3u8$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="鹿泉二套" tvg-name="鹿泉二套" group-title="河北",鹿泉二套
http://hblq.chinashadt.com:2036/live/stream:luquan2.stream/playlist.m3u8$LR•IPV4
#EXTINF:-1 tvg-id="内蒙新闻" tvg-name="内蒙新闻" group-title="内蒙古",内蒙新闻
@@ -2288,13 +2284,13 @@ http://183.207.248.71/gitv/live1/G_NJSB/G_NJSB$LR•IPV4
#EXTINF:-1 tvg-id="江苏体育" tvg-name="江苏体育" group-title="江苏",江苏体育
http://183.207.248.71/gitv/live1/G_JSTY/G_JSTY$LR•IPV4
#EXTINF:-1 tvg-id="南京教科" tvg-name="南京教科" group-title="江苏",南京教科
-https://live.nbs.cn/channels/njtv/jkpd/m3u8:500k/live.m3u8$LR•IPV4•4『线路1』
+http://nklive.nbs.cn/hls/75b3c462-b831-4de7-a34b-5d3221db2069/index.m3u8$LR•IPV4•4『线路1』
#EXTINF:-1 tvg-id="南京教科" tvg-name="南京教科" group-title="江苏",南京教科
-http://183.207.248.71/gitv/live1/G_NJJK/G_NJJK$LR•IPV4•4『线路2』
+https://live.nbs.cn/channels/njtv/jkpd/m3u8:500k/live.m3u8$LR•IPV4•4『线路2』
#EXTINF:-1 tvg-id="南京教科" tvg-name="南京教科" group-title="江苏",南京教科
-http://223.110.245.155/ott.js.chinamobile.com/PLTV/3/224/3221227194/index.m3u8$LR•IPV4•4『线路3』
+http://183.207.248.71/gitv/live1/G_NJJK/G_NJJK$LR•IPV4•4『线路3』
#EXTINF:-1 tvg-id="南京教科" tvg-name="南京教科" group-title="江苏",南京教科
-http://nklive.nbs.cn/hls/75b3c462-b831-4de7-a34b-5d3221db2069/index.m3u8$LR•IPV4•4『线路4』
+http://223.110.245.155/ott.js.chinamobile.com/PLTV/3/224/3221227194/index.m3u8$LR•IPV4•4『线路4』
#EXTINF:-1 tvg-id="南京少儿" tvg-name="南京少儿" group-title="江苏",南京少儿
https://live.nbs.cn/channels/njtv/sepd/m3u8:500k/live.m3u8$LR•IPV4
#EXTINF:-1 tvg-id="苏州4k" tvg-name="苏州4k" group-title="江苏",苏州4k
@@ -5912,99 +5908,99 @@ https://stream1.freetv.fun/shang-hai-xin-wen-zong-he-8.m3u8$LR•IPV4•115『
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
https://stream1.freetv.fun/ipv6-xin-wen-zong-he-10.m3u8$LR•IPV4•115『线路70』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://stream2.jlntv.cn/baicheng1/sd/live.m3u8$LR•IPV4•115『线路71』
+http://stream8.jlntv.cn/shulan/sd/live.m3u8?_upt=332db6421699196585$LR•IPV4•115『线路71』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://live.cztv.cc:85/live/xwpd.m3u8$LR•IPV4•115『线路72』
+http://stream5.jlntv.cn/hn/sd/live.m3u8$LR•IPV4•115『线路72』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://117.156.28.119/270000001111/1110000001/index.m3u8$LR•IPV4•115『线路73』
+http://pili-live-hls.ybcxjd.com/jdh-live/2108111201035597.m3u8?zsicd$LR•IPV4•115『线路73』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://pili-live-hls.hebitv.com/hebi/hebi.m3u8$LR•IPV4•115『线路74』
+http://live.spccmc.com:90/live/spxwzh.m3u8$LR•IPV4•115『线路74』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://stream2.jlntv.cn/naxw/sd/live.m3u8$LR•IPV4•115『线路75』
+http://live.iwcmt.cn:90/live/zhxw.m3u8$LR•IPV4•115『线路75』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://uni6rtmp.tulix.tv:1935/vbstv/vbsabr.smil/chunklist_w439903609_b1228800.m3u8$LR•IPV4•115『线路76』
+http://live.jinchuanrmt.com:90/live/zhxw.m3u8?zsicd$LR•IPV4•115『线路76』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://221.5.213.4:30000/1111.m3u8$LR•IPV4•115『线路77』
+https://play.yunxya.com/channellive/xinwen.m3u8$LR•IPV4•115『线路77』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://stream2.jlntv.cn/jilin1/sd/live.m3u8$LR•IPV4•115『线路78』
+http://ls.qingting.fm/live/267.m3u8$LR•IPV4•115『线路78』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://30515.hlsplay.aodianyun.com/lms_30515/tv_channel_239.m3u8$LR•IPV4•115『线路79』
+http://hslive.hsnewsnet.com/lsdream/hve9Wjs/1000/live.m3u8$LR•IPV4•115『线路79』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://stream2.jlntv.cn/sptv/sd/live.m3u8$LR•IPV4•115『线路80』
+https://p2.vzan.com/slowlive/596867413819827251/live.m3u8?zbid=1725814272&tpid=1516989100&type=0$LR•IPV4•115『线路80』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://live.ahsz.tv/video/s10001-szzh/index.m3u8$LR•IPV4•115『线路81』
+http://uzoiczhh.live.sxmty.com/live/hls/0d41f1480c4042d49927858f01fde707/53130407737b417b9a6259b57246bae3.m3u8?zshanxd$LR•IPV4•115『线路81』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://guangshui.live.tempsource.cjyun.org/videotmp/s10146-GSXW.m3u8$LR•IPV4•115『线路82』
+https://ls.qingting.fm/live/5043/64k.m3u8$LR•IPV4•115『线路82』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://stream2.jlntv.cn/jlyb/sd/live.m3u8$LR•IPV4•115『线路83』
+http://liveout.btzx.com.cn/62ds9e/4nxdih.m3u8?fbl=$LR•IPV4•115『线路83』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://stream2.jlntv.cn/sytv/sd/live.m3u8$LR•IPV4•115『线路84』
+http://nklive.nbs.cn/hls/d511bc9d-a694-4453-b3a2-4fc842cc97a1/index.m3u8$LR•IPV4•115『线路84』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://222.179.155.21:1935/ch1.m3u8$LR•IPV4•115『线路85』
+http://cm-wshls.homecdn.com/live/2aa50.m3u8$LR•IPV4•115『线路85』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://117.172.215.250:8083/videos/live/35/39/GQVbrgob5CGJM/GQVbrgob5CGJM.m3u8$LR•IPV4•115『线路86』
+http://ls.qingting.fm/live/23797.m3u8$LR•IPV4•115『线路86』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://220.180.110.101:8083/videos/live/36/57/hwEHU4UVQ1Iv5/hwEHU4UVQ1Iv5.m3u8$LR•IPV4•115『线路87』
+https://play.kankanlive.com/live/1720583434627241.m3u8$LR•IPV4•115『线路87』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://live.hnxttv.com:9601/live/xwzh/800K/tzwj_video.m3u8$LR•IPV4•115『线路88』
+https://ls.qingting.fm/live/5022100/64k.m3u8$LR•IPV4•115『线路88』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://stream.bzcm.net/2/sd/live.m3u8$LR•IPV4•115『线路89』
+https://liveout.xntv.tv/a65jur/96iln2.m3u8?zqinghd$LR•IPV4•115『线路89』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://117.156.28.119/270000001111/1110000145/index.m3u8$LR•IPV4•115『线路90』
+http://live.qthnews.org.cn:1935/live/live1/800k/tzwj_video.m3u8$LR•IPV4•115『线路90』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://stream2.jlntv.cn/baishan1/sd/live.m3u8$LR•IPV4•115『线路91』
+http://stream.hrbtv.net/xwzh/sd/live.m3u8?zheild$LR•IPV4•115『线路91』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://live1.wuhubtv.com/channel1/sd/live.m3u8$LR•IPV4•115『线路92』
+https://stream2.jlntv.cn/baicheng1/sd/live.m3u8$LR•IPV4•115『线路92』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://palive.patv123.com:8091/live/xwpd_800K.m3u8$LR•IPV4•115『线路93』
+http://live.cztv.cc:85/live/xwpd.m3u8$LR•IPV4•115『线路93』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://stream2.jlntv.cn/liaoyuan1/sd/live.m3u8$LR•IPV4•115『线路94』
+http://117.156.28.119/270000001111/1110000001/index.m3u8$LR•IPV4•115『线路94』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://stream8.jlntv.cn/shulan/sd/live.m3u8?_upt=332db6421699196585$LR•IPV4•115『线路95』
+http://pili-live-hls.hebitv.com/hebi/hebi.m3u8$LR•IPV4•115『线路95』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://stream5.jlntv.cn/hn/sd/live.m3u8$LR•IPV4•115『线路96』
+https://stream2.jlntv.cn/naxw/sd/live.m3u8$LR•IPV4•115『线路96』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://pili-live-hls.ybcxjd.com/jdh-live/2108111201035597.m3u8?zsicd$LR•IPV4•115『线路97』
+http://uni6rtmp.tulix.tv:1935/vbstv/vbsabr.smil/chunklist_w439903609_b1228800.m3u8$LR•IPV4•115『线路97』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://live.spccmc.com:90/live/spxwzh.m3u8$LR•IPV4•115『线路98』
+http://221.5.213.4:30000/1111.m3u8$LR•IPV4•115『线路98』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://live.iwcmt.cn:90/live/zhxw.m3u8$LR•IPV4•115『线路99』
+https://stream2.jlntv.cn/jilin1/sd/live.m3u8$LR•IPV4•115『线路99』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://live.jinchuanrmt.com:90/live/zhxw.m3u8?zsicd$LR•IPV4•115『线路100』
+http://30515.hlsplay.aodianyun.com/lms_30515/tv_channel_239.m3u8$LR•IPV4•115『线路100』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://play.yunxya.com/channellive/xinwen.m3u8$LR•IPV4•115『线路101』
+https://stream2.jlntv.cn/sptv/sd/live.m3u8$LR•IPV4•115『线路101』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://ls.qingting.fm/live/267.m3u8$LR•IPV4•115『线路102』
+http://live.ahsz.tv/video/s10001-szzh/index.m3u8$LR•IPV4•115『线路102』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://hslive.hsnewsnet.com/lsdream/hve9Wjs/1000/live.m3u8$LR•IPV4•115『线路103』
+http://guangshui.live.tempsource.cjyun.org/videotmp/s10146-GSXW.m3u8$LR•IPV4•115『线路103』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://p2.vzan.com/slowlive/596867413819827251/live.m3u8?zbid=1725814272&tpid=1516989100&type=0$LR•IPV4•115『线路104』
+https://stream2.jlntv.cn/jlyb/sd/live.m3u8$LR•IPV4•115『线路104』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://uzoiczhh.live.sxmty.com/live/hls/0d41f1480c4042d49927858f01fde707/53130407737b417b9a6259b57246bae3.m3u8?zshanxd$LR•IPV4•115『线路105』
+https://stream2.jlntv.cn/sytv/sd/live.m3u8$LR•IPV4•115『线路105』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://ls.qingting.fm/live/5043/64k.m3u8$LR•IPV4•115『线路106』
+http://222.179.155.21:1935/ch1.m3u8$LR•IPV4•115『线路106』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://liveout.btzx.com.cn/62ds9e/4nxdih.m3u8?fbl=$LR•IPV4•115『线路107』
+http://117.172.215.250:8083/videos/live/35/39/GQVbrgob5CGJM/GQVbrgob5CGJM.m3u8$LR•IPV4•115『线路107』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://nklive.nbs.cn/hls/d511bc9d-a694-4453-b3a2-4fc842cc97a1/index.m3u8$LR•IPV4•115『线路108』
+http://220.180.110.101:8083/videos/live/36/57/hwEHU4UVQ1Iv5/hwEHU4UVQ1Iv5.m3u8$LR•IPV4•115『线路108』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://cm-wshls.homecdn.com/live/2aa50.m3u8$LR•IPV4•115『线路109』
+http://live.hnxttv.com:9601/live/xwzh/800K/tzwj_video.m3u8$LR•IPV4•115『线路109』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://ls.qingting.fm/live/23797.m3u8$LR•IPV4•115『线路110』
+http://stream.bzcm.net/2/sd/live.m3u8$LR•IPV4•115『线路110』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://play.kankanlive.com/live/1720583434627241.m3u8$LR•IPV4•115『线路111』
+http://117.156.28.119/270000001111/1110000145/index.m3u8$LR•IPV4•115『线路111』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://ls.qingting.fm/live/5022100/64k.m3u8$LR•IPV4•115『线路112』
+https://stream2.jlntv.cn/baishan1/sd/live.m3u8$LR•IPV4•115『线路112』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-https://liveout.xntv.tv/a65jur/96iln2.m3u8?zqinghd$LR•IPV4•115『线路113』
+http://live1.wuhubtv.com/channel1/sd/live.m3u8$LR•IPV4•115『线路113』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://live.qthnews.org.cn:1935/live/live1/800k/tzwj_video.m3u8$LR•IPV4•115『线路114』
+http://palive.patv123.com:8091/live/xwpd_800K.m3u8$LR•IPV4•115『线路114』
#EXTINF:-1 tvg-id="新闻综合" tvg-name="新闻综合" group-title="上海",新闻综合
-http://stream.hrbtv.net/xwzh/sd/live.m3u8?zheild$LR•IPV4•115『线路115』
+https://stream2.jlntv.cn/liaoyuan1/sd/live.m3u8$LR•IPV4•115『线路115』
#EXTINF:-1 tvg-id="西安新闻" tvg-name="西安新闻" group-title="陕西",西安新闻
-http://stream2.xiancity.cn/xatv1/playlist.m3u8$LR•IPV4•2『线路1』
+http://112.46.105.20:8009/hls/28/index.m3u8$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="西安新闻" tvg-name="西安新闻" group-title="陕西",西安新闻
-http://112.46.105.20:8009/hls/28/index.m3u8$LR•IPV4•2『线路2』
+http://stream2.xiancity.cn/xatv1/playlist.m3u8$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="山东少儿" tvg-name="山东少儿" group-title="山东",山东少儿
http://123.129.70.178:9901/tsfile/live/1004_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路1』
#EXTINF:-1 tvg-id="山东少儿" tvg-name="山东少儿" group-title="山东",山东少儿
@@ -6262,11 +6258,11 @@ http://218.206.193.218:8888/hls/66/index.m3u8$LR•IPV4•8『线路4』
#EXTINF:-1 tvg-id="凤凰中文" tvg-name="凤凰中文" group-title="港澳台",凤凰中文
http://120.198.95.220:9901/tsfile/live/1036_1.m3u8?key=txiptv$LR•IPV4•8『线路5』
#EXTINF:-1 tvg-id="凤凰中文" tvg-name="凤凰中文" group-title="港澳台",凤凰中文
-http://223.110.245.139/ott.js.chinamobile.com/PLTV/3/224/3221226922/index.m3u8$LR•IPV4•8『线路6』
+http://r.jdshipin.com/cCCzW$LR•IPV4•8『线路6』
#EXTINF:-1 tvg-id="凤凰中文" tvg-name="凤凰中文" group-title="港澳台",凤凰中文
-http://r.jdshipin.com/cCCzW$LR•IPV4•8『线路7』
+http://cdn6.163189.xyz/163189/fhzw$LR•IPV4•8『线路7』
#EXTINF:-1 tvg-id="凤凰中文" tvg-name="凤凰中文" group-title="港澳台",凤凰中文
-http://cdn6.163189.xyz/163189/fhzw$LR•IPV4•8『线路8』
+http://223.110.245.139/ott.js.chinamobile.com/PLTV/3/224/3221226922/index.m3u8$LR•IPV4•8『线路8』
#EXTINF:-1 tvg-id="凤凰资讯" tvg-name="凤凰资讯" group-title="港澳台",凤凰资讯
http://api.mg.itv888.cn:8080/hls/11ef1dc70d8/index.m3u8$LR•IPV4•10『线路1』
#EXTINF:-1 tvg-id="凤凰资讯" tvg-name="凤凰资讯" group-title="港澳台",凤凰资讯
@@ -6280,25 +6276,25 @@ http://120.198.95.220:9901/tsfile/live/1037_1.m3u8?key=txiptv$LR•IPV4•10『
#EXTINF:-1 tvg-id="凤凰资讯" tvg-name="凤凰资讯" group-title="港澳台",凤凰资讯
p3p://167.114.175.6:55331/5fffbf860003807cedf4e1016c3c3ed2$LR•IPV4•10『线路6』
#EXTINF:-1 tvg-id="凤凰资讯" tvg-name="凤凰资讯" group-title="港澳台",凤凰资讯
-http://223.110.245.167/ott.js.chinamobile.com/PLTV/3/224/3221226923/index.m3u8$LR•IPV4•10『线路7』
+http://r.jdshipin.com/0Rp07$LR•IPV4•10『线路7』
#EXTINF:-1 tvg-id="凤凰资讯" tvg-name="凤凰资讯" group-title="港澳台",凤凰资讯
-http://r.jdshipin.com/0Rp07$LR•IPV4•10『线路8』
+http://php.jdshipin.com/TVOD/iptv.php?id=fhzx$LR•IPV4•10『线路8』
#EXTINF:-1 tvg-id="凤凰资讯" tvg-name="凤凰资讯" group-title="港澳台",凤凰资讯
-http://php.jdshipin.com/TVOD/iptv.php?id=fhzx$LR•IPV4•10『线路9』
+http://cdn6.163189.xyz/163189/fhzx$LR•IPV4•10『线路9』
#EXTINF:-1 tvg-id="凤凰资讯" tvg-name="凤凰资讯" group-title="港澳台",凤凰资讯
-http://cdn6.163189.xyz/163189/fhzx$LR•IPV4•10『线路10』
+http://223.110.245.167/ott.js.chinamobile.com/PLTV/3/224/3221226923/index.m3u8$LR•IPV4•10『线路10』
#EXTINF:-1 tvg-id="凤凰香港" tvg-name="凤凰香港" group-title="港澳台",凤凰香港
http://122.152.202.33/s/81a8a44f/index.m3u8?id=fhhk$LR•IPV4•6『线路1』
#EXTINF:-1 tvg-id="凤凰香港" tvg-name="凤凰香港" group-title="港澳台",凤凰香港
p3p://167.114.175.6:55331/5fe0b82c000cac9774c17f262e43314d$LR•IPV4•6『线路2』
#EXTINF:-1 tvg-id="凤凰香港" tvg-name="凤凰香港" group-title="港澳台",凤凰香港
-http://223.110.245.136/PLTV/3/224/3221226975/index.m3u8$LR•IPV4•6『线路3』
+http://r.jdshipin.com/yDoTN$LR•IPV4•6『线路3』
#EXTINF:-1 tvg-id="凤凰香港" tvg-name="凤凰香港" group-title="港澳台",凤凰香港
-http://r.jdshipin.com/yDoTN$LR•IPV4•6『线路4』
+http://php.jdshipin.com/TVOD/iptv.php?id=fhhk$LR•IPV4•6『线路4』
#EXTINF:-1 tvg-id="凤凰香港" tvg-name="凤凰香港" group-title="港澳台",凤凰香港
-http://php.jdshipin.com/TVOD/iptv.php?id=fhhk$LR•IPV4•6『线路5』
+http://cdn6.163189.xyz/163189/fhhk$LR•IPV4•6『线路5』
#EXTINF:-1 tvg-id="凤凰香港" tvg-name="凤凰香港" group-title="港澳台",凤凰香港
-http://cdn6.163189.xyz/163189/fhhk$LR•IPV4•6『线路6』
+http://223.110.245.136/PLTV/3/224/3221226975/index.m3u8$LR•IPV4•6『线路6』
#EXTINF:-1 tvg-id="TVB翡翠台" tvg-name="TVB翡翠台" group-title="港澳台",TVB翡翠台
p3p://167.114.175.6:55331/653e4c02000ea0440c8c63fd3e5d709d$LR•IPV4•12『线路1』
#EXTINF:-1 tvg-id="TVB翡翠台" tvg-name="TVB翡翠台" group-title="港澳台",TVB翡翠台
@@ -6398,9 +6394,9 @@ p3p://167.114.175.6:55331/612ee2240008f3db8e0578dc59406f9e$LR•IPV4•10『线
#EXTINF:-1 tvg-id="台视" tvg-name="台视" group-title="港澳台",台视
p3p://167.114.175.6:55331/6223b571000a13023e78ece5030b5b05$LR•IPV4•10『线路8』
#EXTINF:-1 tvg-id="台视" tvg-name="台视" group-title="港澳台",台视
-http://162.19.247.76:22222/live/taishi/index.m3u8$LR•IPV4•10『线路9』
+http://38.64.72.148/hls/modn/list/4013/chunklist1.m3u8$LR•IPV4•10『线路9』
#EXTINF:-1 tvg-id="台视" tvg-name="台视" group-title="港澳台",台视
-http://38.64.72.148/hls/modn/list/4013/chunklist1.m3u8$LR•IPV4•10『线路10』
+http://162.19.247.76:22222/live/taishi/index.m3u8$LR•IPV4•10『线路10』
#EXTINF:-1 tvg-id="民视新闻" tvg-name="民视新闻" group-title="港澳台",民视新闻
http://38.64.72.148:80/hls/modn/list/4012/chunklist0.m3u8$LR•IPV4•4『线路1』
#EXTINF:-1 tvg-id="民视新闻" tvg-name="民视新闻" group-title="港澳台",民视新闻
@@ -6412,9 +6408,9 @@ http://38.64.72.148/hls/modn/list/4012/chunklist1.m3u8$LR•IPV4•4『线路4
#EXTINF:-1 tvg-id="耀才财经" tvg-name="耀才财经" group-title="港澳台",耀才财经
https://v3.mediacast.hk/webcast/bshdlive-pc/playlist.m3u8$LR•IPV4•3『线路1』
#EXTINF:-1 tvg-id="耀才财经" tvg-name="耀才财经" group-title="港澳台",耀才财经
-http://202.69.67.66:443/webcast/bshdlive-mobile/playlist.m3u8$LR•IPV4•3『线路2』
+https://v3.mediacast.hk/webcast/bshdlive-pc/chunklist_w99771165.m3u8$LR•IPV4•3『线路2』
#EXTINF:-1 tvg-id="耀才财经" tvg-name="耀才财经" group-title="港澳台",耀才财经
-https://v3.mediacast.hk/webcast/bshdlive-pc/chunklist_w99771165.m3u8$LR•IPV4•3『线路3』
+http://202.69.67.66:443/webcast/bshdlive-mobile/playlist.m3u8$LR•IPV4•3『线路3』
#EXTINF:-1 tvg-id="美亚C+" tvg-name="美亚C+" group-title="港澳台",美亚C+
http://ottproxy2.ist.ooo/livehls/MOB-U1-NO/03.m3u8$LR•IPV4•3『线路1』
#EXTINF:-1 tvg-id="美亚C+" tvg-name="美亚C+" group-title="港澳台",美亚C+
@@ -7024,9 +7020,9 @@ https://lotus.stingray.com/manifest/ose-317ads-montreal/samsungtvplus/master.m3u
#EXTINF:-1 tvg-id="HOY TV" tvg-name="HOY TV" group-title="港澳台",HOY TV
p3p://167.114.175.6:55331/62184bc3000cd48f11e47b06202b7e18$LR•IPV4•3『线路1』
#EXTINF:-1 tvg-id="HOY TV" tvg-name="HOY TV" group-title="港澳台",HOY TV
-https://hoytv-live-stream.hoy.tv/ch77/index.m3u8$LR•IPV4•3『线路2』
+http://php.jdshipin.com/TVOD/iptv.php?id=hoytv$LR•IPV4•3『线路2』
#EXTINF:-1 tvg-id="HOY TV" tvg-name="HOY TV" group-title="港澳台",HOY TV
-http://php.jdshipin.com/TVOD/iptv.php?id=hoytv$LR•IPV4•3『线路3』
+https://hoytv-live-stream.hoy.tv/ch77/index.m3u8$LR•IPV4•3『线路3』
#EXTINF:-1 tvg-id="MOMOTV" tvg-name="MOMOTV" group-title="港澳台",MOMOTV
rtmp://f13h.mine.nu/sat/tv761$LR•IPV4
#EXTINF:-1 tvg-id="大爱1" tvg-name="大爱1" group-title="港澳台",大爱1
diff --git a/tvbox/lib/iptv.txt b/tvbox/lib/iptv.txt
index 2f70ba11..4cb2d542 100755
--- a/tvbox/lib/iptv.txt
+++ b/tvbox/lib/iptv.txt
@@ -34,7 +34,7 @@
CCTV4K,http://vip1.xinketongxun.fun:8082/tsfile/live/1026_1.m3u8$LR•IPV4•7『线路1』
CCTV4K,http://101.43.145.141:12002/gaoma/cctv4k.m3u8$LR•IPV4•7『线路2』
CCTV4K,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784358000-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-c0b2f705841d49d821e3075961bb6e84&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•7『线路3』
-CCTV4K,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784361600-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-dbc4b9704792e97da2c65aeed2033e45&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•7『线路4』
+CCTV4K,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784371500-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-48ffc61db508f8062cc67caddde58d68&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•7『线路4』
CCTV4K,http://198.204.240.250:82/live/cctv4k.m3u8$LR•IPV4•7『线路5』
CCTV4K,http://fn.tmde.top:35455/nptv/cctv4k.m3u8$LR•IPV4•7『线路6』
CCTV4K,http://xc.mfykeke.top:35455/nptv/cctv4k.m3u8$LR•IPV4•7『线路7』
@@ -89,7 +89,7 @@ CCTV4,http://112.46.105.20:8009/hls/4/index.m3u8$LR•IPV4•16『线路7』
CCTV4,http://74.91.26.218:82/live/cctv4hd.m3u8$LR•IPV4•16『线路8』
CCTV4,p3p://167.114.175.6:55331/61244d9c0006885d64b1b7591f6c12a0$LR•IPV4•16『线路9』
CCTV4,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784358000-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-109c81da2b0d59c7b20e5792a12e386f&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•16『线路10』
-CCTV4,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784361600-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-e246d8a5986fffcd5d21d25acc7aca83&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•16『线路11』
+CCTV4,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784371500-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-bb4241b14453c4f49bd0749a3aab3caf&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•16『线路11』
CCTV4,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784271600-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-6aec44040ec72def77e22587fc404005&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•16『线路12』
CCTV4,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226335/1.m3u8?$LR•IPV6•16『线路13』
CCTV4,http://63.141.230.178:82/gslb/zbdq5.m3u8?id=cctv4hd$LR•IPV4•16『线路14』
@@ -159,7 +159,7 @@ CCTV9,http://74.91.26.218:82/live/cctv9hd.m3u8$LR•IPV4•12『线路5』
CCTV9,http://112.46.105.20:8009/hls/509/index.m3u8$LR•IPV4•12『线路6』
CCTV9,http://153.0.171.163:9901/tsfile/live/1008_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•12『线路7』
CCTV9,https://v4-e6b1c5baf4e240fe63adbf68dda23435.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=8a60541ebe4d355d0da6b086b9f2026d$LR•IPV4•12『线路8』
-CCTV9,https://v4-702cae17a28d6e4f0c0002bba021d934.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=db97ec06b982224fd6b00b7bb1f6143c$LR•IPV4•12『线路9』
+CCTV9,https://v4-702cae17a28d6e4f0c0002bba021d934.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=17294e1ca3c39692f88722ff53cecd2a$LR•IPV4•12『线路9』
CCTV9,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226944/1.m3u8?$LR•IPV6•12『线路10』
CCTV9,http://222.223.41.27:8888/hls/9/index.m3u8$LR•IPV4•12『线路11』
CCTV9,https://xykt-fix.github.io/Y77.m3u8$LR•IPV4•12『线路12』
@@ -444,24 +444,23 @@ CGTN阿语,https://0472.org/hls/cgtna.m3u8$LR•IPV4
东南卫视,http://iptv.huuc.edu.cn/hls/dnhd.m3u8$LR•IPV4•18『线路16』
东南卫视,http://153.0.171.163:9901/tsfile/live/0137_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路17』
东南卫视,http://118.81.195.79:9003/hls/24/index.m3u8$LR•IPV4•18『线路18』
-深圳卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•18『线路1』
-深圳卫视,http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•18『线路2』
-深圳卫视,http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv$LR•IPV4•18『线路3』
-深圳卫视,http://173.208.212.130:8181/720p/szws.m3u8$LR•IPV4•18『线路4』
-深圳卫视,http://192.151.150.154/live/szwshd.m3u8$LR•IPV4•18『线路5』
-深圳卫视,http://124.228.160.210:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路6』
-深圳卫视,http://36.136.38.87:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路7』
-深圳卫视,http://183.11.239.36:808/hls/45/index.m3u8$LR•IPV4•18『线路8』
-深圳卫视,https://sztv-hls.sztv.com.cn/AxeFRth/500/q37Age0.m3u8?sign=671fcd3c133f66cef04a83ae0b8c542b&t=6a59189c$LR•IPV4•18『线路9』
-深圳卫视,http://38.75.136.137:98/gslb/dsdqpub/szwshd.m3u8?auth=testpub$LR•IPV4•18『线路10』
-深圳卫视,http://23.237.228.134/live6/shenzhen.m3u8$LR•IPV4•18『线路11』
-深圳卫视,http://gfr.x3322.net:9901/tsfile/live/1095_1.m3u8$LR•IPV4•18『线路12』
-深圳卫视,http://api.kkitv.itv888.cn:8080/hls/iftsd32ykm/index.m3u8$LR•IPV4•18『线路13』
-深圳卫视,https://iptv.catvod.com/catvod.php?id=szws$LR•IPV4•18『线路14』
-深圳卫视,https://httop.top/ysp-深圳卫视$LR•IPV4•18『线路15』
-深圳卫视,http://iptv.huuc.edu.cn/hls/szhd.m3u8$LR•IPV4•18『线路16』
-深圳卫视,http://153.0.171.163:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路17』
-深圳卫视,http://38.64.72.148:80/hls/modn/list/4007/playlist.m3u8$LR•IPV4•18『线路18』
+深圳卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•17『线路1』
+深圳卫视,http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•17『线路2』
+深圳卫视,http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv$LR•IPV4•17『线路3』
+深圳卫视,http://173.208.212.130:8181/720p/szws.m3u8$LR•IPV4•17『线路4』
+深圳卫视,http://192.151.150.154/live/szwshd.m3u8$LR•IPV4•17『线路5』
+深圳卫视,http://124.228.160.210:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路6』
+深圳卫视,http://36.136.38.87:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路7』
+深圳卫视,http://183.11.239.36:808/hls/45/index.m3u8$LR•IPV4•17『线路8』
+深圳卫视,http://38.75.136.137:98/gslb/dsdqpub/szwshd.m3u8?auth=testpub$LR•IPV4•17『线路9』
+深圳卫视,http://23.237.228.134/live6/shenzhen.m3u8$LR•IPV4•17『线路10』
+深圳卫视,http://gfr.x3322.net:9901/tsfile/live/1095_1.m3u8$LR•IPV4•17『线路11』
+深圳卫视,http://api.kkitv.itv888.cn:8080/hls/iftsd32ykm/index.m3u8$LR•IPV4•17『线路12』
+深圳卫视,https://iptv.catvod.com/catvod.php?id=szws$LR•IPV4•17『线路13』
+深圳卫视,https://httop.top/ysp-深圳卫视$LR•IPV4•17『线路14』
+深圳卫视,http://iptv.huuc.edu.cn/hls/szhd.m3u8$LR•IPV4•17『线路15』
+深圳卫视,http://153.0.171.163:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路16』
+深圳卫视,http://38.64.72.148:80/hls/modn/list/4007/playlist.m3u8$LR•IPV4•17『线路17』
广东卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226961/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E2MGyx659D_aaDPP0qt3NgA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•12『线路1』
广东卫视,http://112.27.235.94:8000/hls/30/index.m3u8$LR•IPV4•12『线路2』
广东卫视,http://38.75.136.137:98/gslb/dsdqpub/gdwshd.m3u8?auth=testpub$LR•IPV4•12『线路3』
@@ -515,19 +514,20 @@ CGTN阿语,https://0472.org/hls/cgtna.m3u8$LR•IPV4
贵州卫视,http://153.0.171.163:9901/tsfile/live/0120_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路14』
贵州卫视,http://183.207.248.71/gitv/live1/G_GUIZHOU/G_GUIZHOU$LR•IPV4•16『线路15』
贵州卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225728/index.m3u8$LR•IPV4•16『线路16』
-河北卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227014/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ErSGjhI3DMaaAASPrbQJYTg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•13『线路1』
-河北卫视,http://101.66.194.63:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•13『线路2』
-河北卫视,http://101.66.199.247:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•13『线路3』
-河北卫视,http://204.12.221.218:8181/3m1080p/hews.m3u8$LR•IPV4•13『线路4』
-河北卫视,http://event.pull.hebtv.com/jishi/weishi_tingyun.m3u8$LR•IPV4•13『线路5』
-河北卫视,http://183.11.239.36:808/hls/54/index.m3u8$LR•IPV4•13『线路6』
-河北卫视,http://23.237.228.134/live8/hebei.m3u8$LR•IPV4•13『线路7』
-河北卫视,http://43.251.226.89:8080/play/42.m3u8$LR•IPV4•13『线路8』
-河北卫视,http://gfr.x3322.net:9901/tsfile/live/1091_1.m3u8$LR•IPV4•13『线路9』
-河北卫视,https://iptv.catvod.com/catvod.php?id=hbws$LR•IPV4•13『线路10』
-河北卫视,https://httop.top/ysp-河北卫视$LR•IPV4•13『线路11』
-河北卫视,http://iptv.huuc.edu.cn/hls/hebhd.m3u8$LR•IPV4•13『线路12』
-河北卫视,http://153.0.171.163:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•13『线路13』
+河北卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227014/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ErSGjhI3DMaaAASPrbQJYTg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•14『线路1』
+河北卫视,http://101.66.194.63:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•14『线路2』
+河北卫视,http://101.66.199.247:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•14『线路3』
+河北卫视,http://204.12.221.218:8181/3m1080p/hews.m3u8$LR•IPV4•14『线路4』
+河北卫视,http://event.pull.hebtv.com/jishi/weishi_tingyun.m3u8$LR•IPV4•14『线路5』
+河北卫视,http://183.11.239.36:808/hls/54/index.m3u8$LR•IPV4•14『线路6』
+河北卫视,https://tv.pull.hebtv.com/jishi/nongminpindao.m3u8?t=1783932137&k=f5f7fa7a3e39ef329f1b86c4f866958c$LR•IPV4•14『线路7』
+河北卫视,http://23.237.228.134/live8/hebei.m3u8$LR•IPV4•14『线路8』
+河北卫视,http://43.251.226.89:8080/play/42.m3u8$LR•IPV4•14『线路9』
+河北卫视,http://gfr.x3322.net:9901/tsfile/live/1091_1.m3u8$LR•IPV4•14『线路10』
+河北卫视,https://iptv.catvod.com/catvod.php?id=hbws$LR•IPV4•14『线路11』
+河北卫视,https://httop.top/ysp-河北卫视$LR•IPV4•14『线路12』
+河北卫视,http://iptv.huuc.edu.cn/hls/hebhd.m3u8$LR•IPV4•14『线路13』
+河北卫视,http://153.0.171.163:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•14『线路14』
河南卫视,http://101.66.195.138:9901/tsfile/live/0139_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•12『线路1』
河南卫视,http://38.75.136.137:98/gslb/dsdqpub/hawshd.m3u8?auth=testpub$LR•IPV4•12『线路2』
河南卫视,http://63.141.230.178:82/gslb/zbdq5.m3u8?id=hawshd$LR•IPV4•12『线路3』
@@ -566,22 +566,21 @@ CGTN阿语,https://0472.org/hls/cgtna.m3u8$LR•IPV4
湖北卫视,http://153.0.171.163:9901/tsfile/live/0132_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•14『线路12』
湖北卫视,http://www.745612.xyz:7788/rtp/235.254.198.72:1564$LR•IPV4•14『线路13』
湖北卫视,http://118.81.195.79:9003/hls/32/index.m3u8$LR•IPV4•14『线路14』
-江西卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226956/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Ei6ZIpVizXlewg-YfGvH8dA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•16『线路1』
-江西卫视,http://101.66.199.247:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路2』
-江西卫视,http://112.123.243.37:50085/tsfile/live/0132_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路3』
-江西卫视,http://124.228.160.210:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路4』
-江西卫视,http://153.0.171.163:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路5』
-江西卫视,http://112.27.235.94:8000/hls/44/index.m3u8$LR•IPV4•16『线路6』
-江西卫视,https://jsp-tv-live.jxtvcn.com.cn/live-jsp/tv_jxtv6.m3u8?t=1784004704&token=67a59c29-de6e-4407-90c8-39f7e099b3db&d=0a7a8c487c454bc7bb02a60298283c5e$LR•IPV4•16『线路7』
-江西卫视,http://38.75.136.137:98/gslb/dsdqpub/jxwshd.m3u8?auth=testpub$LR•IPV4•16『线路8』
-江西卫视,http://23.237.228.134/live8/jiangxi.m3u8$LR•IPV4•16『线路9』
-江西卫视,http://43.251.226.89:8080/play/43.m3u8$LR•IPV4•16『线路10』
-江西卫视,http://api.kkitv.itv888.cn:8080/hls/pv0np60bpin/index.m3u8$LR•IPV4•16『线路11』
-江西卫视,https://iptv.catvod.com/catvod.php?id=jxws$LR•IPV4•16『线路12』
-江西卫视,https://httop.top/ysp-江西卫视$LR•IPV4•16『线路13』
-江西卫视,http://iptv.huuc.edu.cn/hls/jxhd.m3u8$LR•IPV4•16『线路14』
-江西卫视,http://mg.hmysapp.cn:177/ckmg/zb.php?id=jxws$LR•IPV4•16『线路15』
-江西卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225705/index.m3u8$LR•IPV4•16『线路16』
+江西卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226956/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Ei6ZIpVizXlewg-YfGvH8dA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•15『线路1』
+江西卫视,http://101.66.199.247:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•15『线路2』
+江西卫视,http://112.123.243.37:50085/tsfile/live/0132_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•15『线路3』
+江西卫视,http://124.228.160.210:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•15『线路4』
+江西卫视,http://153.0.171.163:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•15『线路5』
+江西卫视,http://112.27.235.94:8000/hls/44/index.m3u8$LR•IPV4•15『线路6』
+江西卫视,http://38.75.136.137:98/gslb/dsdqpub/jxwshd.m3u8?auth=testpub$LR•IPV4•15『线路7』
+江西卫视,http://23.237.228.134/live8/jiangxi.m3u8$LR•IPV4•15『线路8』
+江西卫视,http://43.251.226.89:8080/play/43.m3u8$LR•IPV4•15『线路9』
+江西卫视,http://api.kkitv.itv888.cn:8080/hls/pv0np60bpin/index.m3u8$LR•IPV4•15『线路10』
+江西卫视,https://iptv.catvod.com/catvod.php?id=jxws$LR•IPV4•15『线路11』
+江西卫视,https://httop.top/ysp-江西卫视$LR•IPV4•15『线路12』
+江西卫视,http://iptv.huuc.edu.cn/hls/jxhd.m3u8$LR•IPV4•15『线路13』
+江西卫视,http://mg.hmysapp.cn:177/ckmg/zb.php?id=jxws$LR•IPV4•15『线路14』
+江西卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225705/index.m3u8$LR•IPV4•15『线路15』
吉林卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227015/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EW5-3AVdwD5KlUpuA4mz7Cg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•17『线路1』
吉林卫视,http://204.12.221.218:8181/3m1080p/jlws.m3u8$LR•IPV4•17『线路2』
吉林卫视,http://38.75.136.137:98/gslb/dsdqpub/jlwshd.m3u8?auth=testpub$LR•IPV4•17『线路3』
@@ -706,23 +705,22 @@ CGTN阿语,https://0472.org/hls/cgtna.m3u8$LR•IPV4
新疆卫视,http://183.207.249.15/PLTV/3/224/3221225523/index.m3u8$LR•IPV4•14『线路12』
新疆卫视,http://223.110.243.136/PLTV/3/224/3221225523/index.m3u8$LR•IPV4•14『线路13』
新疆卫视,http://112.25.48.68/live/program/live/xjws/1300000/mnf.m3u8$LR•IPV4•14『线路14』
-云南卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227028/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGfQPqRNVeBjTMsZ48qu0SA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•17『线路1』
-云南卫视,http://120.198.95.220:9901/tsfile/live/1056_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•17『线路2』
-云南卫视,http://38.75.136.137:98/gslb/dsdqpub/ynwshd.m3u8?auth=testpub$LR•IPV4•17『线路3』
-云南卫视,http://204.12.221.218:8181/3m1080p/ynws.m3u8$LR•IPV4•17『线路4』
-云南卫视,http://112.123.243.37:50085/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•17『线路5』
-云南卫视,http://101.66.194.82:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•17『线路6』
-云南卫视,http://101.66.194.63:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•17『线路7』
-云南卫视,http://36.136.38.87:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路8』
-云南卫视,http://101.66.195.138:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•17『线路9』
-云南卫视,http://101.66.199.247:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•17『线路10』
-云南卫视,http://153.0.171.163:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路11』
-云南卫视,http://112.27.235.94:8000/hls/40/index.m3u8$LR•IPV4•17『线路12』
-云南卫视,http://p2.ioioz.com/xgplayer.php?id=https://hwapi.yntv.net/ew265l/z1z6s5.m3u8$LR•IPV4•17『线路13』
-云南卫视,http://23.237.228.134/live8/yunnan.m3u8$LR•IPV4•17『线路14』
-云南卫视,https://iptv.catvod.com/catvod.php?id=ynws$LR•IPV4•17『线路15』
-云南卫视,https://httop.top/ysp-云南卫视$LR•IPV4•17『线路16』
-云南卫视,https://hwapi.yunshicloud.com/8xughf/e0bx15.m3u8$LR•IPV4•17『线路17』
+云南卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227028/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGfQPqRNVeBjTMsZ48qu0SA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•16『线路1』
+云南卫视,http://120.198.95.220:9901/tsfile/live/1056_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•16『线路2』
+云南卫视,http://38.75.136.137:98/gslb/dsdqpub/ynwshd.m3u8?auth=testpub$LR•IPV4•16『线路3』
+云南卫视,http://204.12.221.218:8181/3m1080p/ynws.m3u8$LR•IPV4•16『线路4』
+云南卫视,http://112.123.243.37:50085/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路5』
+云南卫视,http://101.66.194.82:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路6』
+云南卫视,http://101.66.194.63:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路7』
+云南卫视,http://36.136.38.87:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路8』
+云南卫视,http://101.66.195.138:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路9』
+云南卫视,http://101.66.199.247:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•16『线路10』
+云南卫视,http://153.0.171.163:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路11』
+云南卫视,http://112.27.235.94:8000/hls/40/index.m3u8$LR•IPV4•16『线路12』
+云南卫视,http://23.237.228.134/live8/yunnan.m3u8$LR•IPV4•16『线路13』
+云南卫视,https://iptv.catvod.com/catvod.php?id=ynws$LR•IPV4•16『线路14』
+云南卫视,https://httop.top/ysp-云南卫视$LR•IPV4•16『线路15』
+云南卫视,https://hwapi.yunshicloud.com/8xughf/e0bx15.m3u8$LR•IPV4•16『线路16』
西藏卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227033/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EdeTB7OZ9G_VNJk5C3t96fQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•12『线路1』
西藏卫视,http://59.39.89.130:60901/tsfile/live/0125_3.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•12『线路2』
西藏卫视,http://198.204.228.26/live/xzws.m3u8$LR•IPV4•12『线路3』
@@ -784,7 +782,7 @@ CGTN阿语,https://0472.org/hls/cgtna.m3u8$LR•IPV4
山西卫视,http://36.136.38.87:9901/tsfile/live/0118_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•15『线路8』
山西卫视,http://101.66.199.247:9901/tsfile/live/0118_1.m3u8?key=txiptv&playlive=0&authid=0$LR•IPV4•15『线路9』
山西卫视,http://153.0.171.163:9901/tsfile/live/0118_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•15『线路10』
-山西卫视,https://livehhhttps.sxrtv.com/lsdream/lce1mC4/800/h1thc41.m3u8$LR•IPV4•15『线路11』
+山西卫视,https://livehhhttps.sxrtv.com/lsdream/Md571Kv/800/p7iM150.m3u8$LR•IPV4•15『线路11』
山西卫视,http://23.237.228.134/live8/shanxi.m3u8$LR•IPV4•15『线路12』
山西卫视,https://iptv.catvod.com/catvod.php?id=sxiws$LR•IPV4•15『线路13』
山西卫视,https://httop.top/ysp-山西卫视$LR•IPV4•15『线路14』
@@ -950,8 +948,8 @@ NewTV超级体育,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/
NewTV超级体育,http://kkk.jjjj.jiduo.me/api.php?n=tttt&id=0078&tk=a0c4f6cfaba3$LR•IPV4•5『线路3』
NewTV超级体育,http://feiyang.ak47s.top:35455/itv/1000000001000009601.m3u8?cdn=ystenlive$LR•IPV4•5『线路4』
NewTV超级体育,http://kkk.jjjj.jiduo.me/api.php?n=tttt&id=3188&tk=23a9aca1f79f$LR•IPV4•5『线路5』
-NewTV动作电影,http://39.134.19.68/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226465/index.m3u8$LR•IPV4•2『线路1』
-NewTV动作电影,http://live.metshop.top/huya/11602077?cdn=alicdn$LR•IPV4•2『线路2』
+NewTV动作电影,http://live.metshop.top/huya/11602077?cdn=alicdn$LR•IPV4•2『线路1』
+NewTV动作电影,http://39.134.19.68/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226465/index.m3u8$LR•IPV4•2『线路2』
NewTV精品体育,https://epg.pw/stream/f7556eccd4ae06b0c2991fdc7a4f8388496559f728cc82459a8e50346040e226.m3u8$LR•IPV4•6『线路1』
NewTV精品体育,https://epg.pw/stream/866a097a0907c9832440f8df38272dd555abf05200dfbafcc137e214c9b30ca7.m3u8$LR•IPV4•6『线路2』
NewTV精品体育,http://kkk.jjjj.jiduo.me/api.php?n=tttt&id=5739&tk=23a9aca1f79f$LR•IPV4•6『线路3』
@@ -1110,8 +1108,8 @@ NewTV精品体育,http://dl.wifi942.com:66/jsyd/jsyd.php?id=GITV-JS-65$LR•IPV4
滁州公共频道,http://183.167.193.45:1935/live/cztvgg/playlist.m3u8$LR•IPV4
铜陵新闻综合频道,https://ls.qingting.fm/live/21303/64k.m3u8$LR•IPV4•2『线路1』
铜陵新闻综合频道,http://dstpush1.retalltech.com/app/stream1.m3u8$LR•IPV4•2『线路2』
-亳州农村,http://220.180.110.101:8083/videos/live/39/13/o4ncrHkSp7q09/o4ncrHkSp7q09.m3u8$LR•IPV4•2『线路1』
-亳州农村,http://zbbf2.ahbztv.com/live/418.m3u8$LR•IPV4•2『线路2』
+亳州农村,http://zbbf2.ahbztv.com/live/418.m3u8$LR•IPV4•2『线路1』
+亳州农村,http://220.180.110.101:8083/videos/live/39/13/o4ncrHkSp7q09/o4ncrHkSp7q09.m3u8$LR•IPV4•2『线路2』
北京,#genre#
北京财经,http://ivi.bupt.edu.cn/hls/btv5.m3u8$LR•IPV4
@@ -1131,19 +1129,19 @@ NewTV精品体育,http://dl.wifi942.com:66/jsyd/jsyd.php?id=GITV-JS-65$LR•IPV4
南宁影视娱乐,http://hls.nntv.cn/nnlive/YSYL_244.m3u8$LR•IPV4
河北,#genre#
-邢台综合,http://222.223.119.21:8888/newlive/live/hls/54/live.m3u8$LR•IPV4•2『线路1』
-邢台综合,https://jwplay.hebyun.com.cn:443/live/xtsrmtzs/1500k/tzwj_video.m3u8$LR•IPV4•2『线路2』
-河北都市,http://121.19.134.246:808/hls/21/index.m3u8$LR•IPV4•2『线路1』
-河北都市,http://1.94.31.214/php/hebei.php?id=hbds$LR•IPV4•2『线路2』
-河北农民,http://121.19.134.246:808/hls/25/index.m3u8$LR•IPV4•2『线路1』
-河北农民,https://ls.qingting.fm/live/1650/64k.m3u8$LR•IPV4•2『线路2』
+邢台综合,https://jwplay.hebyun.com.cn:443/live/xtsrmtzs/1500k/tzwj_video.m3u8$LR•IPV4•2『线路1』
+邢台综合,http://222.223.119.21:8888/newlive/live/hls/54/live.m3u8$LR•IPV4•2『线路2』
+河北都市,http://1.94.31.214/php/hebei.php?id=hbds$LR•IPV4•2『线路1』
+河北都市,http://121.19.134.246:808/hls/21/index.m3u8$LR•IPV4•2『线路2』
+河北农民,https://ls.qingting.fm/live/1650/64k.m3u8$LR•IPV4•2『线路1』
+河北农民,http://121.19.134.246:808/hls/25/index.m3u8$LR•IPV4•2『线路2』
鹿泉一套,http://hblq.chinashadt.com:2036/live/stream:luquan1.stream/playlist.m3u8$LR•IPV4
-河北经济,http://121.19.134.246:808/hls/20/index.m3u8$LR•IPV4•2『线路1』
-河北经济,http://1.94.31.214/php/hebei.php?id=jjsh$LR•IPV4•2『线路2』
-河北影视,http://121.19.134.246:808/hls/22/index.m3u8$LR•IPV4•2『线路1』
-河北影视,http://1.94.31.214/php/hebei.php?id=hbys$LR•IPV4•2『线路2』
-河北公共,http://121.19.134.246:808/hls/24/index.m3u8$LR•IPV4•2『线路1』
-河北公共,http://1.94.31.214/php/hebei.php?id=hbgg$LR•IPV4•2『线路2』
+河北经济,http://1.94.31.214/php/hebei.php?id=jjsh$LR•IPV4•2『线路1』
+河北经济,http://121.19.134.246:808/hls/20/index.m3u8$LR•IPV4•2『线路2』
+河北影视,http://1.94.31.214/php/hebei.php?id=hbys$LR•IPV4•2『线路1』
+河北影视,http://121.19.134.246:808/hls/22/index.m3u8$LR•IPV4•2『线路2』
+河北公共,http://1.94.31.214/php/hebei.php?id=hbgg$LR•IPV4•2『线路1』
+河北公共,http://121.19.134.246:808/hls/24/index.m3u8$LR•IPV4•2『线路2』
鹿泉二套,http://hblq.chinashadt.com:2036/live/stream:luquan2.stream/playlist.m3u8$LR•IPV4
内蒙古,#genre#
@@ -1168,10 +1166,10 @@ NewTV精品体育,http://dl.wifi942.com:66/jsyd/jsyd.php?id=GITV-JS-65$LR•IPV4
江苏教育,http://223.110.245.151/ott.js.chinamobile.com/PLTV/3/224/3221225923/index.m3u8$LR•IPV4
南京十八,http://183.207.248.71/gitv/live1/G_NJSB/G_NJSB$LR•IPV4
江苏体育,http://183.207.248.71/gitv/live1/G_JSTY/G_JSTY$LR•IPV4
-南京教科,https://live.nbs.cn/channels/njtv/jkpd/m3u8:500k/live.m3u8$LR•IPV4•4『线路1』
-南京教科,http://183.207.248.71/gitv/live1/G_NJJK/G_NJJK$LR•IPV4•4『线路2』
-南京教科,http://223.110.245.155/ott.js.chinamobile.com/PLTV/3/224/3221227194/index.m3u8$LR•IPV4•4『线路3』
-南京教科,http://nklive.nbs.cn/hls/75b3c462-b831-4de7-a34b-5d3221db2069/index.m3u8$LR•IPV4•4『线路4』
+南京教科,http://nklive.nbs.cn/hls/75b3c462-b831-4de7-a34b-5d3221db2069/index.m3u8$LR•IPV4•4『线路1』
+南京教科,https://live.nbs.cn/channels/njtv/jkpd/m3u8:500k/live.m3u8$LR•IPV4•4『线路2』
+南京教科,http://183.207.248.71/gitv/live1/G_NJJK/G_NJJK$LR•IPV4•4『线路3』
+南京教科,http://223.110.245.155/ott.js.chinamobile.com/PLTV/3/224/3221227194/index.m3u8$LR•IPV4•4『线路4』
南京少儿,https://live.nbs.cn/channels/njtv/sepd/m3u8:500k/live.m3u8$LR•IPV4
苏州4k,https://live-auth.51kandianshi.com/szgd/csztv4k_hd.m3u8$LR•IPV4•5『线路1』
苏州4k,http://43.251.226.89:8080/play/927.m3u8$LR•IPV4•5『线路2』
@@ -2994,55 +2992,55 @@ NewTV精品体育,http://dl.wifi942.com:66/jsyd/jsyd.php?id=GITV-JS-65$LR•IPV4
新闻综合,http://111.228.4.117:6789/migu720p.php?id=651632657$LR•IPV4•115『线路68』
新闻综合,https://stream1.freetv.fun/shang-hai-xin-wen-zong-he-8.m3u8$LR•IPV4•115『线路69』
新闻综合,https://stream1.freetv.fun/ipv6-xin-wen-zong-he-10.m3u8$LR•IPV4•115『线路70』
-新闻综合,https://stream2.jlntv.cn/baicheng1/sd/live.m3u8$LR•IPV4•115『线路71』
-新闻综合,http://live.cztv.cc:85/live/xwpd.m3u8$LR•IPV4•115『线路72』
-新闻综合,http://117.156.28.119/270000001111/1110000001/index.m3u8$LR•IPV4•115『线路73』
-新闻综合,http://pili-live-hls.hebitv.com/hebi/hebi.m3u8$LR•IPV4•115『线路74』
-新闻综合,https://stream2.jlntv.cn/naxw/sd/live.m3u8$LR•IPV4•115『线路75』
-新闻综合,http://uni6rtmp.tulix.tv:1935/vbstv/vbsabr.smil/chunklist_w439903609_b1228800.m3u8$LR•IPV4•115『线路76』
-新闻综合,http://221.5.213.4:30000/1111.m3u8$LR•IPV4•115『线路77』
-新闻综合,https://stream2.jlntv.cn/jilin1/sd/live.m3u8$LR•IPV4•115『线路78』
-新闻综合,http://30515.hlsplay.aodianyun.com/lms_30515/tv_channel_239.m3u8$LR•IPV4•115『线路79』
-新闻综合,https://stream2.jlntv.cn/sptv/sd/live.m3u8$LR•IPV4•115『线路80』
-新闻综合,http://live.ahsz.tv/video/s10001-szzh/index.m3u8$LR•IPV4•115『线路81』
-新闻综合,http://guangshui.live.tempsource.cjyun.org/videotmp/s10146-GSXW.m3u8$LR•IPV4•115『线路82』
-新闻综合,https://stream2.jlntv.cn/jlyb/sd/live.m3u8$LR•IPV4•115『线路83』
-新闻综合,https://stream2.jlntv.cn/sytv/sd/live.m3u8$LR•IPV4•115『线路84』
-新闻综合,http://222.179.155.21:1935/ch1.m3u8$LR•IPV4•115『线路85』
-新闻综合,http://117.172.215.250:8083/videos/live/35/39/GQVbrgob5CGJM/GQVbrgob5CGJM.m3u8$LR•IPV4•115『线路86』
-新闻综合,http://220.180.110.101:8083/videos/live/36/57/hwEHU4UVQ1Iv5/hwEHU4UVQ1Iv5.m3u8$LR•IPV4•115『线路87』
-新闻综合,http://live.hnxttv.com:9601/live/xwzh/800K/tzwj_video.m3u8$LR•IPV4•115『线路88』
-新闻综合,http://stream.bzcm.net/2/sd/live.m3u8$LR•IPV4•115『线路89』
-新闻综合,http://117.156.28.119/270000001111/1110000145/index.m3u8$LR•IPV4•115『线路90』
-新闻综合,https://stream2.jlntv.cn/baishan1/sd/live.m3u8$LR•IPV4•115『线路91』
-新闻综合,http://live1.wuhubtv.com/channel1/sd/live.m3u8$LR•IPV4•115『线路92』
-新闻综合,http://palive.patv123.com:8091/live/xwpd_800K.m3u8$LR•IPV4•115『线路93』
-新闻综合,https://stream2.jlntv.cn/liaoyuan1/sd/live.m3u8$LR•IPV4•115『线路94』
-新闻综合,http://stream8.jlntv.cn/shulan/sd/live.m3u8?_upt=332db6421699196585$LR•IPV4•115『线路95』
-新闻综合,http://stream5.jlntv.cn/hn/sd/live.m3u8$LR•IPV4•115『线路96』
-新闻综合,http://pili-live-hls.ybcxjd.com/jdh-live/2108111201035597.m3u8?zsicd$LR•IPV4•115『线路97』
-新闻综合,http://live.spccmc.com:90/live/spxwzh.m3u8$LR•IPV4•115『线路98』
-新闻综合,http://live.iwcmt.cn:90/live/zhxw.m3u8$LR•IPV4•115『线路99』
-新闻综合,http://live.jinchuanrmt.com:90/live/zhxw.m3u8?zsicd$LR•IPV4•115『线路100』
-新闻综合,https://play.yunxya.com/channellive/xinwen.m3u8$LR•IPV4•115『线路101』
-新闻综合,http://ls.qingting.fm/live/267.m3u8$LR•IPV4•115『线路102』
-新闻综合,http://hslive.hsnewsnet.com/lsdream/hve9Wjs/1000/live.m3u8$LR•IPV4•115『线路103』
-新闻综合,https://p2.vzan.com/slowlive/596867413819827251/live.m3u8?zbid=1725814272&tpid=1516989100&type=0$LR•IPV4•115『线路104』
-新闻综合,http://uzoiczhh.live.sxmty.com/live/hls/0d41f1480c4042d49927858f01fde707/53130407737b417b9a6259b57246bae3.m3u8?zshanxd$LR•IPV4•115『线路105』
-新闻综合,https://ls.qingting.fm/live/5043/64k.m3u8$LR•IPV4•115『线路106』
-新闻综合,http://liveout.btzx.com.cn/62ds9e/4nxdih.m3u8?fbl=$LR•IPV4•115『线路107』
-新闻综合,http://nklive.nbs.cn/hls/d511bc9d-a694-4453-b3a2-4fc842cc97a1/index.m3u8$LR•IPV4•115『线路108』
-新闻综合,http://cm-wshls.homecdn.com/live/2aa50.m3u8$LR•IPV4•115『线路109』
-新闻综合,http://ls.qingting.fm/live/23797.m3u8$LR•IPV4•115『线路110』
-新闻综合,https://play.kankanlive.com/live/1720583434627241.m3u8$LR•IPV4•115『线路111』
-新闻综合,https://ls.qingting.fm/live/5022100/64k.m3u8$LR•IPV4•115『线路112』
-新闻综合,https://liveout.xntv.tv/a65jur/96iln2.m3u8?zqinghd$LR•IPV4•115『线路113』
-新闻综合,http://live.qthnews.org.cn:1935/live/live1/800k/tzwj_video.m3u8$LR•IPV4•115『线路114』
-新闻综合,http://stream.hrbtv.net/xwzh/sd/live.m3u8?zheild$LR•IPV4•115『线路115』
+新闻综合,http://stream8.jlntv.cn/shulan/sd/live.m3u8?_upt=332db6421699196585$LR•IPV4•115『线路71』
+新闻综合,http://stream5.jlntv.cn/hn/sd/live.m3u8$LR•IPV4•115『线路72』
+新闻综合,http://pili-live-hls.ybcxjd.com/jdh-live/2108111201035597.m3u8?zsicd$LR•IPV4•115『线路73』
+新闻综合,http://live.spccmc.com:90/live/spxwzh.m3u8$LR•IPV4•115『线路74』
+新闻综合,http://live.iwcmt.cn:90/live/zhxw.m3u8$LR•IPV4•115『线路75』
+新闻综合,http://live.jinchuanrmt.com:90/live/zhxw.m3u8?zsicd$LR•IPV4•115『线路76』
+新闻综合,https://play.yunxya.com/channellive/xinwen.m3u8$LR•IPV4•115『线路77』
+新闻综合,http://ls.qingting.fm/live/267.m3u8$LR•IPV4•115『线路78』
+新闻综合,http://hslive.hsnewsnet.com/lsdream/hve9Wjs/1000/live.m3u8$LR•IPV4•115『线路79』
+新闻综合,https://p2.vzan.com/slowlive/596867413819827251/live.m3u8?zbid=1725814272&tpid=1516989100&type=0$LR•IPV4•115『线路80』
+新闻综合,http://uzoiczhh.live.sxmty.com/live/hls/0d41f1480c4042d49927858f01fde707/53130407737b417b9a6259b57246bae3.m3u8?zshanxd$LR•IPV4•115『线路81』
+新闻综合,https://ls.qingting.fm/live/5043/64k.m3u8$LR•IPV4•115『线路82』
+新闻综合,http://liveout.btzx.com.cn/62ds9e/4nxdih.m3u8?fbl=$LR•IPV4•115『线路83』
+新闻综合,http://nklive.nbs.cn/hls/d511bc9d-a694-4453-b3a2-4fc842cc97a1/index.m3u8$LR•IPV4•115『线路84』
+新闻综合,http://cm-wshls.homecdn.com/live/2aa50.m3u8$LR•IPV4•115『线路85』
+新闻综合,http://ls.qingting.fm/live/23797.m3u8$LR•IPV4•115『线路86』
+新闻综合,https://play.kankanlive.com/live/1720583434627241.m3u8$LR•IPV4•115『线路87』
+新闻综合,https://ls.qingting.fm/live/5022100/64k.m3u8$LR•IPV4•115『线路88』
+新闻综合,https://liveout.xntv.tv/a65jur/96iln2.m3u8?zqinghd$LR•IPV4•115『线路89』
+新闻综合,http://live.qthnews.org.cn:1935/live/live1/800k/tzwj_video.m3u8$LR•IPV4•115『线路90』
+新闻综合,http://stream.hrbtv.net/xwzh/sd/live.m3u8?zheild$LR•IPV4•115『线路91』
+新闻综合,https://stream2.jlntv.cn/baicheng1/sd/live.m3u8$LR•IPV4•115『线路92』
+新闻综合,http://live.cztv.cc:85/live/xwpd.m3u8$LR•IPV4•115『线路93』
+新闻综合,http://117.156.28.119/270000001111/1110000001/index.m3u8$LR•IPV4•115『线路94』
+新闻综合,http://pili-live-hls.hebitv.com/hebi/hebi.m3u8$LR•IPV4•115『线路95』
+新闻综合,https://stream2.jlntv.cn/naxw/sd/live.m3u8$LR•IPV4•115『线路96』
+新闻综合,http://uni6rtmp.tulix.tv:1935/vbstv/vbsabr.smil/chunklist_w439903609_b1228800.m3u8$LR•IPV4•115『线路97』
+新闻综合,http://221.5.213.4:30000/1111.m3u8$LR•IPV4•115『线路98』
+新闻综合,https://stream2.jlntv.cn/jilin1/sd/live.m3u8$LR•IPV4•115『线路99』
+新闻综合,http://30515.hlsplay.aodianyun.com/lms_30515/tv_channel_239.m3u8$LR•IPV4•115『线路100』
+新闻综合,https://stream2.jlntv.cn/sptv/sd/live.m3u8$LR•IPV4•115『线路101』
+新闻综合,http://live.ahsz.tv/video/s10001-szzh/index.m3u8$LR•IPV4•115『线路102』
+新闻综合,http://guangshui.live.tempsource.cjyun.org/videotmp/s10146-GSXW.m3u8$LR•IPV4•115『线路103』
+新闻综合,https://stream2.jlntv.cn/jlyb/sd/live.m3u8$LR•IPV4•115『线路104』
+新闻综合,https://stream2.jlntv.cn/sytv/sd/live.m3u8$LR•IPV4•115『线路105』
+新闻综合,http://222.179.155.21:1935/ch1.m3u8$LR•IPV4•115『线路106』
+新闻综合,http://117.172.215.250:8083/videos/live/35/39/GQVbrgob5CGJM/GQVbrgob5CGJM.m3u8$LR•IPV4•115『线路107』
+新闻综合,http://220.180.110.101:8083/videos/live/36/57/hwEHU4UVQ1Iv5/hwEHU4UVQ1Iv5.m3u8$LR•IPV4•115『线路108』
+新闻综合,http://live.hnxttv.com:9601/live/xwzh/800K/tzwj_video.m3u8$LR•IPV4•115『线路109』
+新闻综合,http://stream.bzcm.net/2/sd/live.m3u8$LR•IPV4•115『线路110』
+新闻综合,http://117.156.28.119/270000001111/1110000145/index.m3u8$LR•IPV4•115『线路111』
+新闻综合,https://stream2.jlntv.cn/baishan1/sd/live.m3u8$LR•IPV4•115『线路112』
+新闻综合,http://live1.wuhubtv.com/channel1/sd/live.m3u8$LR•IPV4•115『线路113』
+新闻综合,http://palive.patv123.com:8091/live/xwpd_800K.m3u8$LR•IPV4•115『线路114』
+新闻综合,https://stream2.jlntv.cn/liaoyuan1/sd/live.m3u8$LR•IPV4•115『线路115』
陕西,#genre#
-西安新闻,http://stream2.xiancity.cn/xatv1/playlist.m3u8$LR•IPV4•2『线路1』
-西安新闻,http://112.46.105.20:8009/hls/28/index.m3u8$LR•IPV4•2『线路2』
+西安新闻,http://112.46.105.20:8009/hls/28/index.m3u8$LR•IPV4•2『线路1』
+西安新闻,http://stream2.xiancity.cn/xatv1/playlist.m3u8$LR•IPV4•2『线路2』
山东,#genre#
山东少儿,http://123.129.70.178:9901/tsfile/live/1004_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•16『线路1』
@@ -3179,25 +3177,25 @@ NewTV精品体育,http://dl.wifi942.com:66/jsyd/jsyd.php?id=GITV-JS-65$LR•IPV4
凤凰中文,http://120.198.95.220:9901/tsfile/live/1036_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•8『线路3』
凤凰中文,http://218.206.193.218:8888/hls/66/index.m3u8$LR•IPV4•8『线路4』
凤凰中文,http://120.198.95.220:9901/tsfile/live/1036_1.m3u8?key=txiptv$LR•IPV4•8『线路5』
-凤凰中文,http://223.110.245.139/ott.js.chinamobile.com/PLTV/3/224/3221226922/index.m3u8$LR•IPV4•8『线路6』
-凤凰中文,http://r.jdshipin.com/cCCzW$LR•IPV4•8『线路7』
-凤凰中文,http://cdn6.163189.xyz/163189/fhzw$LR•IPV4•8『线路8』
+凤凰中文,http://r.jdshipin.com/cCCzW$LR•IPV4•8『线路6』
+凤凰中文,http://cdn6.163189.xyz/163189/fhzw$LR•IPV4•8『线路7』
+凤凰中文,http://223.110.245.139/ott.js.chinamobile.com/PLTV/3/224/3221226922/index.m3u8$LR•IPV4•8『线路8』
凤凰资讯,http://api.mg.itv888.cn:8080/hls/11ef1dc70d8/index.m3u8$LR•IPV4•10『线路1』
凤凰资讯,http://zmgd.zyrnet.com:8888/hls/109/index.m3u8$LR•IPV4•10『线路2』
凤凰资讯,http://221.7.175.154:8445/tsfile/live/1021_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•10『线路3』
凤凰资讯,http://120.198.95.220:9901/tsfile/live/1037_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•10『线路4』
凤凰资讯,http://120.198.95.220:9901/tsfile/live/1037_1.m3u8?key=txiptv$LR•IPV4•10『线路5』
凤凰资讯,p3p://167.114.175.6:55331/5fffbf860003807cedf4e1016c3c3ed2$LR•IPV4•10『线路6』
-凤凰资讯,http://223.110.245.167/ott.js.chinamobile.com/PLTV/3/224/3221226923/index.m3u8$LR•IPV4•10『线路7』
-凤凰资讯,http://r.jdshipin.com/0Rp07$LR•IPV4•10『线路8』
-凤凰资讯,http://php.jdshipin.com/TVOD/iptv.php?id=fhzx$LR•IPV4•10『线路9』
-凤凰资讯,http://cdn6.163189.xyz/163189/fhzx$LR•IPV4•10『线路10』
+凤凰资讯,http://r.jdshipin.com/0Rp07$LR•IPV4•10『线路7』
+凤凰资讯,http://php.jdshipin.com/TVOD/iptv.php?id=fhzx$LR•IPV4•10『线路8』
+凤凰资讯,http://cdn6.163189.xyz/163189/fhzx$LR•IPV4•10『线路9』
+凤凰资讯,http://223.110.245.167/ott.js.chinamobile.com/PLTV/3/224/3221226923/index.m3u8$LR•IPV4•10『线路10』
凤凰香港,http://122.152.202.33/s/81a8a44f/index.m3u8?id=fhhk$LR•IPV4•6『线路1』
凤凰香港,p3p://167.114.175.6:55331/5fe0b82c000cac9774c17f262e43314d$LR•IPV4•6『线路2』
-凤凰香港,http://223.110.245.136/PLTV/3/224/3221226975/index.m3u8$LR•IPV4•6『线路3』
-凤凰香港,http://r.jdshipin.com/yDoTN$LR•IPV4•6『线路4』
-凤凰香港,http://php.jdshipin.com/TVOD/iptv.php?id=fhhk$LR•IPV4•6『线路5』
-凤凰香港,http://cdn6.163189.xyz/163189/fhhk$LR•IPV4•6『线路6』
+凤凰香港,http://r.jdshipin.com/yDoTN$LR•IPV4•6『线路3』
+凤凰香港,http://php.jdshipin.com/TVOD/iptv.php?id=fhhk$LR•IPV4•6『线路4』
+凤凰香港,http://cdn6.163189.xyz/163189/fhhk$LR•IPV4•6『线路5』
+凤凰香港,http://223.110.245.136/PLTV/3/224/3221226975/index.m3u8$LR•IPV4•6『线路6』
TVB翡翠台,p3p://167.114.175.6:55331/653e4c02000ea0440c8c63fd3e5d709d$LR•IPV4•12『线路1』
TVB翡翠台,p3p://167.114.175.6:55331/66c04cec000a20ac2dbf03c71cf661c9$LR•IPV4•12『线路2』
TVB翡翠台,p3p://108.181.32.169:19673/6533f6560002787f2d01338b57197695$LR•IPV4•12『线路3』
@@ -3247,15 +3245,15 @@ TVBS,http://seb.sason.top/sc/tvbsxw_fhd.m3u8$LR•IPV4•13『线路13』
台视,rtmp://f13h.mine.nu/sat/tv071$LR•IPV4•10『线路6』
台视,p3p://167.114.175.6:55331/612ee2240008f3db8e0578dc59406f9e$LR•IPV4•10『线路7』
台视,p3p://167.114.175.6:55331/6223b571000a13023e78ece5030b5b05$LR•IPV4•10『线路8』
-台视,http://162.19.247.76:22222/live/taishi/index.m3u8$LR•IPV4•10『线路9』
-台视,http://38.64.72.148/hls/modn/list/4013/chunklist1.m3u8$LR•IPV4•10『线路10』
+台视,http://38.64.72.148/hls/modn/list/4013/chunklist1.m3u8$LR•IPV4•10『线路9』
+台视,http://162.19.247.76:22222/live/taishi/index.m3u8$LR•IPV4•10『线路10』
民视新闻,http://38.64.72.148:80/hls/modn/list/4012/chunklist0.m3u8$LR•IPV4•4『线路1』
民视新闻,http://38.64.72.148:80/hls/modn/list/4012/chunklist1.m3u8$LR•IPV4•4『线路2』
民视新闻,http://38.64.72.148/hls/modn/list/4012/chunklist0.m3u8$LR•IPV4•4『线路3』
民视新闻,http://38.64.72.148/hls/modn/list/4012/chunklist1.m3u8$LR•IPV4•4『线路4』
耀才财经,https://v3.mediacast.hk/webcast/bshdlive-pc/playlist.m3u8$LR•IPV4•3『线路1』
-耀才财经,http://202.69.67.66:443/webcast/bshdlive-mobile/playlist.m3u8$LR•IPV4•3『线路2』
-耀才财经,https://v3.mediacast.hk/webcast/bshdlive-pc/chunklist_w99771165.m3u8$LR•IPV4•3『线路3』
+耀才财经,https://v3.mediacast.hk/webcast/bshdlive-pc/chunklist_w99771165.m3u8$LR•IPV4•3『线路2』
+耀才财经,http://202.69.67.66:443/webcast/bshdlive-mobile/playlist.m3u8$LR•IPV4•3『线路3』
美亚C+,http://ottproxy2.ist.ooo/livehls/MOB-U1-NO/03.m3u8$LR•IPV4•3『线路1』
美亚C+,http://ottproxy2.ist.ooo/livehls/MOB-U1-NO/01.m3u8$LR•IPV4•3『线路2』
美亚C+,http://ottproxy2.ist.ooo/livehls/MOB-U1-NO/02.m3u8$LR•IPV4•3『线路3』
@@ -3560,8 +3558,8 @@ KPop,https://ads.its-newid.net/api/manifest.m3u8?ads.service_id=USAJ3000013FJ&ch
KPop,https://ads.its-newid.net/api/manifest.m3u8?ads.service_id=GB17000088V&channel_id=newid_086&tp=samsung_tvplus$LR•IPV4•5『线路4』
KPop,https://lotus.stingray.com/manifest/ose-317ads-montreal/samsungtvplus/master.m3u8$LR•IPV4•5『线路5』
HOY TV,p3p://167.114.175.6:55331/62184bc3000cd48f11e47b06202b7e18$LR•IPV4•3『线路1』
-HOY TV,https://hoytv-live-stream.hoy.tv/ch77/index.m3u8$LR•IPV4•3『线路2』
-HOY TV,http://php.jdshipin.com/TVOD/iptv.php?id=hoytv$LR•IPV4•3『线路3』
+HOY TV,http://php.jdshipin.com/TVOD/iptv.php?id=hoytv$LR•IPV4•3『线路2』
+HOY TV,https://hoytv-live-stream.hoy.tv/ch77/index.m3u8$LR•IPV4•3『线路3』
MOMOTV,rtmp://f13h.mine.nu/sat/tv761$LR•IPV4
大爱1,p3p://167.114.175.6:55331/63ed9fff00076875e972c31c79f4152e$LR•IPV4
大爱2,p3p://167.114.175.6:55331/63eda04a0001f6fae973e6a334696980$LR•IPV4
diff --git a/tvbox/lib/iptv_test.m3u b/tvbox/lib/iptv_test.m3u
index e1427117..5f85a5dc 100755
--- a/tvbox/lib/iptv_test.m3u
+++ b/tvbox/lib/iptv_test.m3u
@@ -2,7 +2,7 @@
#EXTINF:-1 tvg-id="CCTV4K" tvg-name="CCTV4K" group-title="央视频道",CCTV-4K
https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784358000-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-c0b2f705841d49d821e3075961bb6e84&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•3『线路1』
#EXTINF:-1 tvg-id="CCTV4K" tvg-name="CCTV4K" group-title="央视频道",CCTV-4K
-https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784361600-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-dbc4b9704792e97da2c65aeed2033e45&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•3『线路2』
+https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784371500-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-48ffc61db508f8062cc67caddde58d68&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•3『线路2』
#EXTINF:-1 tvg-id="CCTV4K" tvg-name="CCTV4K" group-title="央视频道",CCTV-4K
http://198.204.240.250:82/live/cctv4k.m3u8$LR•IPV4•3『线路3』
#EXTINF:-1 tvg-id="象山综合" tvg-name="象山综合" group-title="浙江频道",象山综合
@@ -774,11 +774,11 @@ http://218.206.193.218:8888/hls/66/index.m3u8$LR•IPV4•8『线路4』
#EXTINF:-1 tvg-id="凤凰卫视中文台" tvg-name="凤凰卫视中文台" group-title="港澳台",凤凰卫视中文台
http://120.198.95.220:9901/tsfile/live/1036_1.m3u8?key=txiptv$LR•IPV4•8『线路5』
#EXTINF:-1 tvg-id="凤凰卫视中文台" tvg-name="凤凰卫视中文台" group-title="港澳台",凤凰卫视中文台
-http://223.110.245.139/ott.js.chinamobile.com/PLTV/3/224/3221226922/index.m3u8$LR•IPV4•8『线路6』
+http://r.jdshipin.com/cCCzW$LR•IPV4•8『线路6』
#EXTINF:-1 tvg-id="凤凰卫视中文台" tvg-name="凤凰卫视中文台" group-title="港澳台",凤凰卫视中文台
-http://r.jdshipin.com/cCCzW$LR•IPV4•8『线路7』
+http://cdn6.163189.xyz/163189/fhzw$LR•IPV4•8『线路7』
#EXTINF:-1 tvg-id="凤凰卫视中文台" tvg-name="凤凰卫视中文台" group-title="港澳台",凤凰卫视中文台
-http://cdn6.163189.xyz/163189/fhzw$LR•IPV4•8『线路8』
+http://223.110.245.139/ott.js.chinamobile.com/PLTV/3/224/3221226922/index.m3u8$LR•IPV4•8『线路8』
#EXTINF:-1 tvg-id="凤凰卫视资讯台" tvg-name="凤凰卫视资讯台" group-title="港澳台",凤凰卫视资讯台
http://api.mg.itv888.cn:8080/hls/11ef1dc70d8/index.m3u8$LR•IPV4•10『线路1』
#EXTINF:-1 tvg-id="凤凰卫视资讯台" tvg-name="凤凰卫视资讯台" group-title="港澳台",凤凰卫视资讯台
@@ -792,25 +792,25 @@ http://120.198.95.220:9901/tsfile/live/1037_1.m3u8?key=txiptv$LR•IPV4•10『
#EXTINF:-1 tvg-id="凤凰卫视资讯台" tvg-name="凤凰卫视资讯台" group-title="港澳台",凤凰卫视资讯台
p3p://167.114.175.6:55331/5fffbf860003807cedf4e1016c3c3ed2$LR•IPV4•10『线路6』
#EXTINF:-1 tvg-id="凤凰卫视资讯台" tvg-name="凤凰卫视资讯台" group-title="港澳台",凤凰卫视资讯台
-http://223.110.245.167/ott.js.chinamobile.com/PLTV/3/224/3221226923/index.m3u8$LR•IPV4•10『线路7』
+http://r.jdshipin.com/0Rp07$LR•IPV4•10『线路7』
#EXTINF:-1 tvg-id="凤凰卫视资讯台" tvg-name="凤凰卫视资讯台" group-title="港澳台",凤凰卫视资讯台
-http://r.jdshipin.com/0Rp07$LR•IPV4•10『线路8』
+http://php.jdshipin.com/TVOD/iptv.php?id=fhzx$LR•IPV4•10『线路8』
#EXTINF:-1 tvg-id="凤凰卫视资讯台" tvg-name="凤凰卫视资讯台" group-title="港澳台",凤凰卫视资讯台
-http://php.jdshipin.com/TVOD/iptv.php?id=fhzx$LR•IPV4•10『线路9』
+http://cdn6.163189.xyz/163189/fhzx$LR•IPV4•10『线路9』
#EXTINF:-1 tvg-id="凤凰卫视资讯台" tvg-name="凤凰卫视资讯台" group-title="港澳台",凤凰卫视资讯台
-http://cdn6.163189.xyz/163189/fhzx$LR•IPV4•10『线路10』
+http://223.110.245.167/ott.js.chinamobile.com/PLTV/3/224/3221226923/index.m3u8$LR•IPV4•10『线路10』
#EXTINF:-1 tvg-id="凤凰卫视香港台" tvg-name="凤凰卫视香港台" group-title="港澳台",凤凰卫视香港台
http://122.152.202.33/s/81a8a44f/index.m3u8?id=fhhk$LR•IPV4•6『线路1』
#EXTINF:-1 tvg-id="凤凰卫视香港台" tvg-name="凤凰卫视香港台" group-title="港澳台",凤凰卫视香港台
p3p://167.114.175.6:55331/5fe0b82c000cac9774c17f262e43314d$LR•IPV4•6『线路2』
#EXTINF:-1 tvg-id="凤凰卫视香港台" tvg-name="凤凰卫视香港台" group-title="港澳台",凤凰卫视香港台
-http://223.110.245.136/PLTV/3/224/3221226975/index.m3u8$LR•IPV4•6『线路3』
+http://r.jdshipin.com/yDoTN$LR•IPV4•6『线路3』
#EXTINF:-1 tvg-id="凤凰卫视香港台" tvg-name="凤凰卫视香港台" group-title="港澳台",凤凰卫视香港台
-http://r.jdshipin.com/yDoTN$LR•IPV4•6『线路4』
+http://php.jdshipin.com/TVOD/iptv.php?id=fhhk$LR•IPV4•6『线路4』
#EXTINF:-1 tvg-id="凤凰卫视香港台" tvg-name="凤凰卫视香港台" group-title="港澳台",凤凰卫视香港台
-http://php.jdshipin.com/TVOD/iptv.php?id=fhhk$LR•IPV4•6『线路5』
+http://cdn6.163189.xyz/163189/fhhk$LR•IPV4•6『线路5』
#EXTINF:-1 tvg-id="凤凰卫视香港台" tvg-name="凤凰卫视香港台" group-title="港澳台",凤凰卫视香港台
-http://cdn6.163189.xyz/163189/fhhk$LR•IPV4•6『线路6』
+http://223.110.245.136/PLTV/3/224/3221226975/index.m3u8$LR•IPV4•6『线路6』
#EXTINF:-1 tvg-id="台视新闻" tvg-name="台视新闻" group-title="港澳台",台视新闻
http://38.64.72.148:80/hls/modn/list/4013/chunklist0.m3u8$LR•IPV4•4『线路1』
#EXTINF:-1 tvg-id="台视新闻" tvg-name="台视新闻" group-title="港澳台",台视新闻
@@ -3010,7 +3010,7 @@ https://ali-m-l.cztv.com/channels/lantian/channel012/1080p.m3u8$LR•IPV4•41
#EXTINF:-1 tvg-id="纪录" tvg-name="纪录" group-title="💓优质个源",纪录
https://ali-m-l.cztv.com/channels/lantian/channel12/720p.m3u8$LR•IPV4•41『线路3』
#EXTINF:-1 tvg-id="纪录" tvg-name="纪录" group-title="💓优质个源",纪录
-https://v4-702cae17a28d6e4f0c0002bba021d934.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=db97ec06b982224fd6b00b7bb1f6143c$LR•IPV4•41『线路4』
+https://v4-702cae17a28d6e4f0c0002bba021d934.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=17294e1ca3c39692f88722ff53cecd2a$LR•IPV4•41『线路4』
#EXTINF:-1 tvg-id="纪录" tvg-name="纪录" group-title="💓优质个源",纪录
http://free.cnlive.club/channel/n3f497a4c/index.m3u8?q=1752629214236$LR•IPV4•41『线路5』
#EXTINF:-1 tvg-id="纪录" tvg-name="纪录" group-title="💓优质个源",纪录
@@ -3712,7 +3712,7 @@ https://shcm-stream-cf1.stream.264788.xyz/cms001/ch00000090990000001620/index.m3
#EXTINF:-1 tvg-id="CCTV" tvg-name="CCTV" group-title="🌐央视频道",CCTV
https://epg.pw/stream/ac8062ec9484078061d3bef507c15a423ac57ae4144e3fcc4b0a198dd420f911.m3u8$LR•IPV4•90『线路52』
#EXTINF:-1 tvg-id="CCTV" tvg-name="CCTV" group-title="🌐央视频道",CCTV
-https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784361600-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-e246d8a5986fffcd5d21d25acc7aca83&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•90『线路53』
+https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784371500-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-bb4241b14453c4f49bd0749a3aab3caf&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•90『线路53』
#EXTINF:-1 tvg-id="CCTV" tvg-name="CCTV" group-title="🌐央视频道",CCTV
http://183.196.25.171:808/hls/77/index.m3u8$LR•IPV4•90『线路54』
#EXTINF:-1 tvg-id="CCTV" tvg-name="CCTV" group-title="🌐央视频道",CCTV
@@ -3790,9 +3790,9 @@ https://xykt-fix.github.io/Y77.m3u8$LR•IPV4•90『线路90』
#EXTINF:-1 tvg-id="梁家辉" tvg-name="梁家辉" group-title="明星",梁家辉
http://live.metshop.top/huya/11342429?cdn=alicdn$LR•IPV4
#EXTINF:-1 tvg-id="刘德华" tvg-name="刘德华" group-title="明星",刘德华
-http://epg.112114.xyz/douyu/2516864$LR•IPV4•2『线路1』
+http://live.metshop.top/huya/11342424?cdn=alicdn$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="刘德华" tvg-name="刘德华" group-title="明星",刘德华
-http://live.metshop.top/huya/11342424?cdn=alicdn$LR•IPV4•2『线路2』
+http://epg.112114.xyz/douyu/2516864$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="林正英" tvg-name="林正英" group-title="明星",林正英
http://zzy789.xyz/douyu1.php?id=7356023$LR•IPV4•2『线路1』
#EXTINF:-1 tvg-id="林正英" tvg-name="林正英" group-title="明星",林正英
@@ -4722,41 +4722,39 @@ http://ali-m-l.cztv.com/channels/lantian/channel009/1080p.m3u8$LR•IPV4•2『
#EXTINF:-1 tvg-id="中国蓝新闻" tvg-name="中国蓝新闻" group-title="浙江",中国蓝新闻
https://ali-m-l.cztv.com/channels/lantian/channel009/1080p.m3u8?$LR•IPV4•2『线路2』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•18『线路1』
+http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•17『线路1』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•18『线路2』
+http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•17『线路2』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv$LR•IPV4•18『线路3』
+http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv$LR•IPV4•17『线路3』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://173.208.212.130:8181/720p/szws.m3u8$LR•IPV4•18『线路4』
+http://173.208.212.130:8181/720p/szws.m3u8$LR•IPV4•17『线路4』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://192.151.150.154/live/szwshd.m3u8$LR•IPV4•18『线路5』
+http://192.151.150.154/live/szwshd.m3u8$LR•IPV4•17『线路5』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://124.228.160.210:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路6』
+http://124.228.160.210:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路6』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://36.136.38.87:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路7』
+http://36.136.38.87:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路7』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://183.11.239.36:808/hls/45/index.m3u8$LR•IPV4•18『线路8』
+http://183.11.239.36:808/hls/45/index.m3u8$LR•IPV4•17『线路8』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-https://sztv-hls.sztv.com.cn/AxeFRth/500/q37Age0.m3u8?sign=671fcd3c133f66cef04a83ae0b8c542b&t=6a59189c$LR•IPV4•18『线路9』
+http://38.75.136.137:98/gslb/dsdqpub/szwshd.m3u8?auth=testpub$LR•IPV4•17『线路9』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://38.75.136.137:98/gslb/dsdqpub/szwshd.m3u8?auth=testpub$LR•IPV4•18『线路10』
+http://23.237.228.134/live6/shenzhen.m3u8$LR•IPV4•17『线路10』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://23.237.228.134/live6/shenzhen.m3u8$LR•IPV4•18『线路11』
+http://gfr.x3322.net:9901/tsfile/live/1095_1.m3u8$LR•IPV4•17『线路11』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://gfr.x3322.net:9901/tsfile/live/1095_1.m3u8$LR•IPV4•18『线路12』
+http://api.kkitv.itv888.cn:8080/hls/iftsd32ykm/index.m3u8$LR•IPV4•17『线路12』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://api.kkitv.itv888.cn:8080/hls/iftsd32ykm/index.m3u8$LR•IPV4•18『线路13』
+https://iptv.catvod.com/catvod.php?id=szws$LR•IPV4•17『线路13』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-https://iptv.catvod.com/catvod.php?id=szws$LR•IPV4•18『线路14』
+https://httop.top/ysp-深圳卫视$LR•IPV4•17『线路14』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-https://httop.top/ysp-深圳卫视$LR•IPV4•18『线路15』
+http://iptv.huuc.edu.cn/hls/szhd.m3u8$LR•IPV4•17『线路15』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://iptv.huuc.edu.cn/hls/szhd.m3u8$LR•IPV4•18『线路16』
+http://153.0.171.163:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路16』
#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://153.0.171.163:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路17』
-#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" group-title="广东",深圳卫视
-http://38.64.72.148:80/hls/modn/list/4007/playlist.m3u8$LR•IPV4•18『线路18』
+http://38.64.72.148:80/hls/modn/list/4007/playlist.m3u8$LR•IPV4•17『线路17』
#EXTINF:-1 tvg-id="汕头经济" tvg-name="汕头经济" group-title="广东",汕头经济
https://stream1.freetv.fun/shan-tou-jing-ji-2.ctv$LR•IPV4•11『线路1』
#EXTINF:-1 tvg-id="汕头经济" tvg-name="汕头经济" group-title="广东",汕头经济
diff --git a/tvbox/lib/iptv_test.txt b/tvbox/lib/iptv_test.txt
index 985f6c1c..f87bea00 100755
--- a/tvbox/lib/iptv_test.txt
+++ b/tvbox/lib/iptv_test.txt
@@ -1,7 +1,7 @@
央视频道,#genre#
CCTV-4K,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784358000-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-c0b2f705841d49d821e3075961bb6e84&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•3『线路1』
-CCTV-4K,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784361600-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-dbc4b9704792e97da2c65aeed2033e45&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•3『线路2』
+CCTV-4K,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4k_mbd.m3u8?auth_key=1784371500-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-48ffc61db508f8062cc67caddde58d68&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•3『线路2』
CCTV-4K,http://198.204.240.250:82/live/cctv4k.m3u8$LR•IPV4•3『线路3』
浙江频道,#genre#
@@ -433,25 +433,25 @@ Now星影,p3p://167.114.175.6:55331/65bf5e010005226704b84f4f048a4148$LR•IPV4
凤凰卫视中文台,http://120.198.95.220:9901/tsfile/live/1036_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•8『线路3』
凤凰卫视中文台,http://218.206.193.218:8888/hls/66/index.m3u8$LR•IPV4•8『线路4』
凤凰卫视中文台,http://120.198.95.220:9901/tsfile/live/1036_1.m3u8?key=txiptv$LR•IPV4•8『线路5』
-凤凰卫视中文台,http://223.110.245.139/ott.js.chinamobile.com/PLTV/3/224/3221226922/index.m3u8$LR•IPV4•8『线路6』
-凤凰卫视中文台,http://r.jdshipin.com/cCCzW$LR•IPV4•8『线路7』
-凤凰卫视中文台,http://cdn6.163189.xyz/163189/fhzw$LR•IPV4•8『线路8』
+凤凰卫视中文台,http://r.jdshipin.com/cCCzW$LR•IPV4•8『线路6』
+凤凰卫视中文台,http://cdn6.163189.xyz/163189/fhzw$LR•IPV4•8『线路7』
+凤凰卫视中文台,http://223.110.245.139/ott.js.chinamobile.com/PLTV/3/224/3221226922/index.m3u8$LR•IPV4•8『线路8』
凤凰卫视资讯台,http://api.mg.itv888.cn:8080/hls/11ef1dc70d8/index.m3u8$LR•IPV4•10『线路1』
凤凰卫视资讯台,http://zmgd.zyrnet.com:8888/hls/109/index.m3u8$LR•IPV4•10『线路2』
凤凰卫视资讯台,http://221.7.175.154:8445/tsfile/live/1021_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•10『线路3』
凤凰卫视资讯台,http://120.198.95.220:9901/tsfile/live/1037_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•10『线路4』
凤凰卫视资讯台,http://120.198.95.220:9901/tsfile/live/1037_1.m3u8?key=txiptv$LR•IPV4•10『线路5』
凤凰卫视资讯台,p3p://167.114.175.6:55331/5fffbf860003807cedf4e1016c3c3ed2$LR•IPV4•10『线路6』
-凤凰卫视资讯台,http://223.110.245.167/ott.js.chinamobile.com/PLTV/3/224/3221226923/index.m3u8$LR•IPV4•10『线路7』
-凤凰卫视资讯台,http://r.jdshipin.com/0Rp07$LR•IPV4•10『线路8』
-凤凰卫视资讯台,http://php.jdshipin.com/TVOD/iptv.php?id=fhzx$LR•IPV4•10『线路9』
-凤凰卫视资讯台,http://cdn6.163189.xyz/163189/fhzx$LR•IPV4•10『线路10』
+凤凰卫视资讯台,http://r.jdshipin.com/0Rp07$LR•IPV4•10『线路7』
+凤凰卫视资讯台,http://php.jdshipin.com/TVOD/iptv.php?id=fhzx$LR•IPV4•10『线路8』
+凤凰卫视资讯台,http://cdn6.163189.xyz/163189/fhzx$LR•IPV4•10『线路9』
+凤凰卫视资讯台,http://223.110.245.167/ott.js.chinamobile.com/PLTV/3/224/3221226923/index.m3u8$LR•IPV4•10『线路10』
凤凰卫视香港台,http://122.152.202.33/s/81a8a44f/index.m3u8?id=fhhk$LR•IPV4•6『线路1』
凤凰卫视香港台,p3p://167.114.175.6:55331/5fe0b82c000cac9774c17f262e43314d$LR•IPV4•6『线路2』
-凤凰卫视香港台,http://223.110.245.136/PLTV/3/224/3221226975/index.m3u8$LR•IPV4•6『线路3』
-凤凰卫视香港台,http://r.jdshipin.com/yDoTN$LR•IPV4•6『线路4』
-凤凰卫视香港台,http://php.jdshipin.com/TVOD/iptv.php?id=fhhk$LR•IPV4•6『线路5』
-凤凰卫视香港台,http://cdn6.163189.xyz/163189/fhhk$LR•IPV4•6『线路6』
+凤凰卫视香港台,http://r.jdshipin.com/yDoTN$LR•IPV4•6『线路3』
+凤凰卫视香港台,http://php.jdshipin.com/TVOD/iptv.php?id=fhhk$LR•IPV4•6『线路4』
+凤凰卫视香港台,http://cdn6.163189.xyz/163189/fhhk$LR•IPV4•6『线路5』
+凤凰卫视香港台,http://223.110.245.136/PLTV/3/224/3221226975/index.m3u8$LR•IPV4•6『线路6』
台视新闻,http://38.64.72.148:80/hls/modn/list/4013/chunklist0.m3u8$LR•IPV4•4『线路1』
台视新闻,http://38.64.72.148:80/hls/modn/list/4013/chunklist1.m3u8$LR•IPV4•4『线路2』
台视新闻,http://38.64.72.148/hls/modn/list/4013/chunklist0.m3u8$LR•IPV4•4『线路3』
@@ -1633,7 +1633,7 @@ XXXXXXXXX粤,http://lxajh.top/tv/douyu.php?id=8912325$LR•IPV4
纪录,https://v4-e6b1c5baf4e240fe63adbf68dda23435.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=8a60541ebe4d355d0da6b086b9f2026d$LR•IPV4•41『线路1』
纪录,https://ali-m-l.cztv.com/channels/lantian/channel012/1080p.m3u8$LR•IPV4•41『线路2』
纪录,https://ali-m-l.cztv.com/channels/lantian/channel12/720p.m3u8$LR•IPV4•41『线路3』
-纪录,https://v4-702cae17a28d6e4f0c0002bba021d934.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=db97ec06b982224fd6b00b7bb1f6143c$LR•IPV4•41『线路4』
+纪录,https://v4-702cae17a28d6e4f0c0002bba021d934.livehwc4.com/play.kankanlive.com/live/1698423397390920.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=17294e1ca3c39692f88722ff53cecd2a$LR•IPV4•41『线路4』
纪录,http://free.cnlive.club/channel/n3f497a4c/index.m3u8?q=1752629214236$LR•IPV4•41『线路5』
纪录,http://free.cnlive.club/channel/2ae73b1a/index.m3u8?q=1752629214236$LR•IPV4•41『线路6』
纪录,http://free.cnlive.club/channel/nb957a7c/index.m3u8?q=1752629214236$LR•IPV4•41『线路7』
@@ -1998,7 +1998,7 @@ CCTV,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?
CCTV,https://jsv-live-play.sfccn.com/live/jsv_3920_fhd.m3u8$LR•IPV4•90『线路50』
CCTV,https://shcm-stream-cf1.stream.264788.xyz/cms001/ch00000090990000001620/index.m3u8?streamid=8a034b40397504e25b3775c772237996&streamkey=01vY5fRxC8VyKg4oq30vfikHXTCAKySLP29l6OG91kQlzDttHgzNLkUw5kivm3PfNsVHJv5FgdsPBYFYI2IWpt7tfRCuFHqLT2pvX67ubMds8jl2DHtvOh0&token=1775754349-4f33f4f84a4abeba-0-91687dc8c9325092efa1d00f330d2710$LR•IPV4•90『线路51』
CCTV,https://epg.pw/stream/ac8062ec9484078061d3bef507c15a423ac57ae4144e3fcc4b0a198dd420f911.m3u8$LR•IPV4•90『线路52』
-CCTV,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784361600-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-e246d8a5986fffcd5d21d25acc7aca83&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•90『线路53』
+CCTV,https://live-play-hls.cctvnews.cctv.com/CCTVChannel/channel_cctv4_mbd.m3u8?auth_key=1784371500-1-b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c-bb4241b14453c4f49bd0749a3aab3caf&yid=b59134a2ead43d7f783f943c8f535e7bb80c5169575b2e8efcd5b3ddea21b41c$LR•IPV4•90『线路53』
CCTV,http://183.196.25.171:808/hls/77/index.m3u8$LR•IPV4•90『线路54』
CCTV,http://183.196.25.171:808/hls/11/index.m3u8$LR•IPV4•90『线路55』
CCTV,http://183.196.25.171:808/hls/93/index.m3u8$LR•IPV4•90『线路56』
@@ -2039,8 +2039,8 @@ CCTV,https://xykt-fix.github.io/Y77.m3u8$LR•IPV4•90『线路90』
明星,#genre#
梁家辉,http://live.metshop.top/huya/11342429?cdn=alicdn$LR•IPV4
-刘德华,http://epg.112114.xyz/douyu/2516864$LR•IPV4•2『线路1』
-刘德华,http://live.metshop.top/huya/11342424?cdn=alicdn$LR•IPV4•2『线路2』
+刘德华,http://live.metshop.top/huya/11342424?cdn=alicdn$LR•IPV4•2『线路1』
+刘德华,http://epg.112114.xyz/douyu/2516864$LR•IPV4•2『线路2』
林正英,http://zzy789.xyz/douyu1.php?id=7356023$LR•IPV4•2『线路1』
林正英,http://epg.112114.xyz/douyu/218859$LR•IPV4•2『线路2』
@@ -2523,24 +2523,23 @@ YOUNG,https://s.emisoras.tv:8081/penielkids/index.m3u8$LR•IPV4•3『线路3
中国蓝新闻,https://ali-m-l.cztv.com/channels/lantian/channel009/1080p.m3u8?$LR•IPV4•2『线路2』
广东,#genre#
-深圳卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•18『线路1』
-深圳卫视,http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•18『线路2』
-深圳卫视,http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv$LR•IPV4•18『线路3』
-深圳卫视,http://173.208.212.130:8181/720p/szws.m3u8$LR•IPV4•18『线路4』
-深圳卫视,http://192.151.150.154/live/szwshd.m3u8$LR•IPV4•18『线路5』
-深圳卫视,http://124.228.160.210:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路6』
-深圳卫视,http://36.136.38.87:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路7』
-深圳卫视,http://183.11.239.36:808/hls/45/index.m3u8$LR•IPV4•18『线路8』
-深圳卫视,https://sztv-hls.sztv.com.cn/AxeFRth/500/q37Age0.m3u8?sign=671fcd3c133f66cef04a83ae0b8c542b&t=6a59189c$LR•IPV4•18『线路9』
-深圳卫视,http://38.75.136.137:98/gslb/dsdqpub/szwshd.m3u8?auth=testpub$LR•IPV4•18『线路10』
-深圳卫视,http://23.237.228.134/live6/shenzhen.m3u8$LR•IPV4•18『线路11』
-深圳卫视,http://gfr.x3322.net:9901/tsfile/live/1095_1.m3u8$LR•IPV4•18『线路12』
-深圳卫视,http://api.kkitv.itv888.cn:8080/hls/iftsd32ykm/index.m3u8$LR•IPV4•18『线路13』
-深圳卫视,https://iptv.catvod.com/catvod.php?id=szws$LR•IPV4•18『线路14』
-深圳卫视,https://httop.top/ysp-深圳卫视$LR•IPV4•18『线路15』
-深圳卫视,http://iptv.huuc.edu.cn/hls/szhd.m3u8$LR•IPV4•18『线路16』
-深圳卫视,http://153.0.171.163:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•18『线路17』
-深圳卫视,http://38.64.72.148:80/hls/modn/list/4007/playlist.m3u8$LR•IPV4•18『线路18』
+深圳卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND$LR•IPV6•17『线路1』
+深圳卫视,http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv&playlive=1&down=1$LR•IPV4•17『线路2』
+深圳卫视,http://120.198.95.220:9901/tsfile/live/1048_1.m3u8?key=txiptv$LR•IPV4•17『线路3』
+深圳卫视,http://173.208.212.130:8181/720p/szws.m3u8$LR•IPV4•17『线路4』
+深圳卫视,http://192.151.150.154/live/szwshd.m3u8$LR•IPV4•17『线路5』
+深圳卫视,http://124.228.160.210:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路6』
+深圳卫视,http://36.136.38.87:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路7』
+深圳卫视,http://183.11.239.36:808/hls/45/index.m3u8$LR•IPV4•17『线路8』
+深圳卫视,http://38.75.136.137:98/gslb/dsdqpub/szwshd.m3u8?auth=testpub$LR•IPV4•17『线路9』
+深圳卫视,http://23.237.228.134/live6/shenzhen.m3u8$LR•IPV4•17『线路10』
+深圳卫视,http://gfr.x3322.net:9901/tsfile/live/1095_1.m3u8$LR•IPV4•17『线路11』
+深圳卫视,http://api.kkitv.itv888.cn:8080/hls/iftsd32ykm/index.m3u8$LR•IPV4•17『线路12』
+深圳卫视,https://iptv.catvod.com/catvod.php?id=szws$LR•IPV4•17『线路13』
+深圳卫视,https://httop.top/ysp-深圳卫视$LR•IPV4•17『线路14』
+深圳卫视,http://iptv.huuc.edu.cn/hls/szhd.m3u8$LR•IPV4•17『线路15』
+深圳卫视,http://153.0.171.163:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4•17『线路16』
+深圳卫视,http://38.64.72.148:80/hls/modn/list/4007/playlist.m3u8$LR•IPV4•17『线路17』
汕头经济,https://stream1.freetv.fun/shan-tou-jing-ji-2.ctv$LR•IPV4•11『线路1』
汕头经济,https://stream1.freetv.fun/shan-tou-jing-ji-3.ctv$LR•IPV4•11『线路2』
汕头经济,https://stream1.freetv.fun/shan-tou-jing-ji-5.ctv$LR•IPV4•11『线路3』
diff --git a/tvbox/lib/sing-box.tar.xz b/tvbox/lib/sing-box.tar.xz
index 0d77f149..854f8dab 100755
Binary files a/tvbox/lib/sing-box.tar.xz and b/tvbox/lib/sing-box.tar.xz differ
diff --git a/tvbox/lib/sing-box.tar.xz.md5 b/tvbox/lib/sing-box.tar.xz.md5
index 6c5c0a8e..8f068f44 100644
--- a/tvbox/lib/sing-box.tar.xz.md5
+++ b/tvbox/lib/sing-box.tar.xz.md5
@@ -1 +1 @@
-42df056144fa4e08ea39b624be4cd477
+012e78d91f15a374e5fe5361042336ac
\ No newline at end of file
diff --git a/tvbox/lib/singbox.json b/tvbox/lib/singbox.json
index f1598bdc..3227f349 100755
--- a/tvbox/lib/singbox.json
+++ b/tvbox/lib/singbox.json
@@ -6,31 +6,24 @@
"dns": {
"servers": [
{
+ "type": "https",
"tag": "remote",
- "address": "https://8.8.8.8/dns-query",
- "strategy": "prefer_ipv4",
+ "server": "8.8.8.8",
"detour": "select"
},
{
+ "type": "https",
"tag": "local",
- "address": "https://223.5.5.5/dns-query",
- "strategy": "prefer_ipv4",
- "detour": "direct"
- },
- {
- "tag": "block",
- "address": "rcode://success"
+ "server": "223.5.5.5"
},
{
+ "type": "fakeip",
"tag": "fakeip",
- "address": "fakeip"
+ "inet4_range": "198.18.0.0/15",
+ "inet6_range": "fc00::/18"
}
],
"rules": [
- {
- "outbound": ["any"],
- "server": "local"
- },
{
"clash_mode": "Global",
"server": "remote"
@@ -38,13 +31,16 @@
{
"clash_mode": "Direct",
"server": "local"
+ },
+ {
+ "query_type": [
+ "A",
+ "AAAA"
+ ],
+ "server": "fakeip",
+ "rewrite_ttl": 1
}
],
- "fakeip": {
- "enabled": true,
- "inet4_range": "198.18.0.0/15",
- "inet6_range": "fc00::/18"
- },
"strategy": "prefer_ipv4",
"independent_cache": true,
"reverse_mapping": true
@@ -55,10 +51,7 @@
"tag": "mixed-in",
"listen": "0.0.0.0",
"listen_port": 10172,
- "tcp_fast_open":true,
- "sniff": false,
- "sniff_override_destination": false,
- "domain_strategy": "prefer_ipv4",
+ "tcp_fast_open": true,
"set_system_proxy": false
},
{
@@ -66,20 +59,14 @@
"tag": "socks-in",
"listen": "0.0.0.0",
"listen_port": 10173,
- "tcp_fast_open":true,
- "sniff": false,
- "sniff_override_destination": false,
- "domain_strategy": "prefer_ipv4"
+ "tcp_fast_open": true
},
{
"type": "mixed",
"tag": "mixed-in2",
"listen": "0.0.0.0",
"listen_port": 10174,
- "tcp_fast_open":true,
- "sniff": false,
- "sniff_override_destination": false,
- "domain_strategy": "prefer_ipv4",
+ "tcp_fast_open": true,
"set_system_proxy": false
},
{
@@ -87,10 +74,7 @@
"tag": "mixed-in3",
"listen": "0.0.0.0",
"listen_port": 10175,
- "tcp_fast_open":true,
- "sniff": false,
- "sniff_override_destination": false,
- "domain_strategy": "prefer_ipv4",
+ "tcp_fast_open": true,
"set_system_proxy": false
}
],
@@ -114,18 +98,13 @@
{
"type": "direct",
"tag": "direct"
- },
- {
- "type": "block",
- "tag": "block"
- },
- {
- "type": "dns",
- "tag": "dns-out"
}
],
"route": {
"rules": [
+ {
+ "action": "sniff"
+ },
{
"type": "logical",
"mode": "or",
@@ -137,23 +116,33 @@
"port": 53
}
],
- "outbound": "dns-out"
+ "action": "hijack-dns"
+ },
+ {
+ "inbound": [
+ "mixed-in",
+ "socks-in",
+ "mixed-in2",
+ "mixed-in3"
+ ],
+ "action": "resolve",
+ "strategy": "prefer_ipv4"
},
{
"ip_is_private": true,
"outbound": "direct"
},
{
- "inbound":[
- "mixed-in2"
- ],
- "outbound":"select2"
+ "inbound": [
+ "mixed-in2"
+ ],
+ "outbound": "select2"
},
{
- "inbound":[
- "mixed-in3"
- ],
- "outbound":"select3"
+ "inbound": [
+ "mixed-in3"
+ ],
+ "outbound": "select3"
},
{
"clash_mode": "Direct",
@@ -178,10 +167,14 @@
"protocol": "stun"
}
],
- "outbound": "block"
+ "action": "reject"
}
],
- "auto_detect_interface": false
+ "auto_detect_interface": false,
+ "default_domain_resolver": {
+ "server": "local",
+ "strategy": "prefer_ipv4"
+ }
},
"experimental": {
"cache_file": {
@@ -197,4 +190,3 @@
}
}
}
-
diff --git a/tvbox/lib/youtube.json b/tvbox/lib/youtube.json
index 3a57687a..fb662790 100755
--- a/tvbox/lib/youtube.json
+++ b/tvbox/lib/youtube.json
@@ -1,4766 +1,1244 @@
{
- "recommend": "LIST:最新|推薦,官方頻道",
- "class": [
+ "recommend":"LIST:最新|推薦,官方頻道",
+ "class":[
{
- "type_id": "新聞",
- "type_name": "新闻"
+ "type_id":"LIST:王志安 @wangzhian,老高與小茉 @laogao,脑洞乌托邦 @NDWTB,自说自话的总裁 @STBoss,纪实说 @C-Documentary,老肉雜談 @老肉雜談,李永樂老師 @TchLiyongle,滇西小哥 @dianxixiaoge,李子柒 Liziqi @cnliziqi,老饭骨 @LaoFanGu,小高姐的 Magic Ingredients @MagicIngredients,小穎美食 @XiaoYingFood,primitivetechnology9550 @primitivetechnology9550,Mr Beast@MrBeast,Airforceproud95 @Airforceproud95,TheGreatWar @TheGreatWar,Mark Rober @MarkRober,不良林,涌哥侃侃 @ygkkk,悟空的日常",
+ "type_name":"自媒體"
},
{
- "type_id": "战情室",
- "type_name": "栏目"
+ "type_id":"LIST:HDR,Girls HDR,Landscape HDR,Walk HDR",
+ "type_name":"HDR"
},
{
- "type_id": "个人频道",
- "type_name": "频道"
+ "type_id":"LIST:华语音乐,华语MV,点击率最高",
+ "type_name":"音樂"
},
{
- "type_id": "音樂",
- "type_name": "音乐"
+ "type_id":"LIST:综艺,芒果综艺,腾讯综艺,爱奇艺综艺,优酷综艺,卫视综艺",
+ "type_name":"綜藝"
},
{
- "type_id": "短劇",
- "type_name": "短剧"
+ "type_id":"LIST:紀錄片,历史纪录片,自然纪录片,宇宙纪录片",
+ "type_name":"紀錄片"
},
{
- "type_id": "HDR",
- "type_name": "HDR"
+ "type_id":"LIST:新闻 Live,体育直播,赛事直播",
+ "type_name":"新聞直播"
},
{
- "type_id": "4K",
- "type_name": "4K"
+ "type_id":"短劇",
+ "type_name":"短劇"
},
{
- "type_id": "放松",
- "type_name": "放松"
+ "type_id":"LIST:剧集,腾讯剧集,爱奇艺剧集,优酷剧集,芒果剧集,TVB",
+ "type_name":"劇集"
},
{
- "type_id": "時尚",
- "type_name": "時尚"
+ "type_id":"電影",
+ "type_name":"電影"
},
{
- "type_id": "紀錄",
- "type_name": "纪录"
+ "type_id":"體育",
+ "type_name":"體育"
},
{
- "type_id": "劇集",
- "type_name": "剧集"
+ "type_id":"時尚潮流",
+ "type_name":"時尚潮流"
},
{
- "type_id": "電影",
- "type_name": "电影"
+ "type_id":"放松",
+ "type_name":"放松"
},
{
- "type_id": "動畫",
- "type_name": "动画"
+ "type_id":"4K",
+ "type_name":"4K"
},
{
- "type_id": "綜藝",
- "type_name": "综艺"
+ "type_id":"宇宙",
+ "type_name":"科普知識"
},
{
- "type_id": "體育",
- "type_name": "体育"
+ "type_id":"科技",
+ "type_name":"科技"
},
{
- "type_id": "宇宙",
- "type_name": "科普"
+ "type_id":"解說",
+ "type_name":"解說"
},
{
- "type_id": "科技",
- "type_name": "科技"
+ "type_id":"神秘",
+ "type_name":"神秘"
},
{
- "type_id": "解說",
- "type_name": "解说"
- },
- {
- "type_id": "神秘",
- "type_name": "神秘"
- },
- {
- "type_id": "自媒體",
- "type_name": "自媒體"
- },
- {
- "type_id": "熱門",
- "type_name": "热门"
- },
- {
- "type_id": "GETTRENDS",
- "type_name": "Trends"
+ "type_id":"动画片",
+ "type_name":"动画片"
}
],
- "filters": {
- "熱門": [
+ "filters":{
+ "短劇":[
{
- "key": "tid",
- "name": "LIST",
- "value": [
- {
- "n": "默认",
- "v": "PL hottest 默認"
- },
- {
- "n": "热门",
- "v": "PL Trending 熱門"
- },
- {
- "n": "动漫",
- "v": "PL Popular anime 動漫熱門"
- },
- {
- "n": "漫画",
- "v": "PL Popular comics 漫畫熱門"
- },
- {
- "n": "上传",
- "v": "PL Recently uploaded 最近上傳"
- },
- {
- "n": "其他",
- "v": "PL Popular Other popular ones 其他熱門"
- }
+ "key":"time",
+ "name":"時間",
+ "value":[
+ {"n":"時間全選","v":""},
+ {"n":"2024","v":"2024"},
+ {"n":"2023","v":"2023"},
+ {"n":"2022","v":"2022"},
+ {"n":"2021","v":"2021"},
+ {"n":"2020","v":"2020"},
+ {"n":"2019","v":"2019"},
+ {"n":"2018","v":"2018"},
+ {"n":"2017","v":"2017"},
+ {"n":"2016","v":"2016"},
+ {"n":"2015","v":"2015"},
+ {"n":"2014","v":"2014"},
+ {"n":"2013","v":"2013"},
+ {"n":"2012","v":"2012"},
+ {"n":"2011","v":"2011"},
+ {"n":"2010","v":"2010"},
+ {"n":"2009","v":"2009"},
+ {"n":"2008","v":"2008"},
+ {"n":"2007","v":"2007"},
+ {"n":"2006","v":"2006"},
+ {"n":"2005","v":"2005"},
+ {"n":"2004","v":"2004"},
+ {"n":"2003","v":"2003"},
+ {"n":"2002","v":"2002"},
+ {"n":"2001","v":"2001"},
+ {"n":"2000","v":"2000"},
+ {"n":"1999","v":"1999"},
+ {"n":"1998","v":"1998"},
+ {"n":"1997","v":"1997"},
+ {"n":"1996","v":"1996"},
+ {"n":"1995","v":"1995"},
+ {"n":"1994","v":"1994"},
+ {"n":"1993","v":"1993"},
+ {"n":"1992","v":"1992"},
+ {"n":"1991","v":"1991"},
+ {"n":"1990","v":"1990"},
+ {"n":"1989","v":"1989"},
+ {"n":"1988","v":"1988"},
+ {"n":"1987","v":"1987"},
+ {"n":"1986","v":"1986"},
+ {"n":"1985","v":"1985"},
+ {"n":"1984","v":"1984"},
+ {"n":"1983","v":"1983"},
+ {"n":"1982","v":"1982"},
+ {"n":"1981","v":"1981"},
+ {"n":"1980","v":"1980"},
+ {"n":"1979","v":"1979"},
+ {"n":"1978","v":"1978"},
+ {"n":"1977","v":"1977"},
+ {"n":"1976","v":"1976"},
+ {"n":"1975","v":"1975"},
+ {"n":"1974","v":"1974"},
+ {"n":"1973","v":"1973"},
+ {"n":"1972","v":"1972"},
+ {"n":"1971","v":"1971"},
+ {"n":"1970","v":"1970"},
+ {"n":"1969","v":"1969"},
+ {"n":"1968","v":"1968"},
+ {"n":"1967","v":"1967"},
+ {"n":"1966","v":"1966"},
+ {"n":"1965","v":"1965"},
+ {"n":"1964","v":"1964"},
+ {"n":"1963","v":"1963"},
+ {"n":"1962","v":"1962"},
+ {"n":"1961","v":"1961"},
+ {"n":"1960","v":"1960"},
+ {"n":"1959","v":"1959"},
+ {"n":"1958","v":"1958"}
]
},
{
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": "LIST"
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"短劇",
+ "value":[
+ {"n":"抖音","v":"抖音 短剧"},
+ {"n":"快手","v":"快手 短剧"},
+ {"n":"大陆","v":"大陆 短剧"},
+ {"n":"香港","v":"香港 短剧"},
+ {"n":"澳門","v":"澳門 短剧"},
+ {"n":"台湾","v":"台湾 短剧"},
+ {"n":"新加坡","v":"新加坡 短剧"},
+ {"n":"馬來西亞","v":"馬來西亞 短剧"},
+ {"n":"泰國","v":"泰國 短剧"},
+ {"n":"越南","v":"越南 短剧"},
+ {"n":"印度","v":"印度 短剧"},
+ {"n":"韩国","v":"韩国 短剧"},
+ {"n":"日本","v":"日本 短剧"},
+ {"n":"欧美","v":"欧美 短剧"},
+ {"n":"腾讯","v":"腾讯 短剧"},
+ {"n":"爱奇艺","v":"爱奇艺 短剧"},
+ {"n":"优酷","v":"优酷 短剧"},
+ {"n":"芒果","v":"芒果TV 短剧"},
+ {"n":"搜狐","v":"搜狐 短剧"}
+ ]
+ },
+ {
+ "key":"tid",
+ "name":"短劇",
+ "value":[
+ {"n":"都市","v":"@Urbanshort-TV 都市 短劇"},
+ {"n":"爱情","v":"爱情 短劇"},
+ {"n":"复仇","v":"复仇 短劇"},
+ {"n":"穿越","v":"穿越 短劇"},
+ {"n":"喜剧","v":"喜剧 短劇"},
+ {"n":"奇幻","v":"奇幻 短劇"},
+ {"n":"九酱爱追剧","v":"@NineSauceDramaTV"},
+ {"n":"百万好剧场","v":"@1-pw5ox"},
+ {"n":"咖啡追剧","v":"@@coffeedrama605"},
+ {"n":"斗罗短剧","v":"@DouluoDrama123 斗羅短劇"},
+ {"n":"嘟嘟剧场","v":"@DUDUJUCHANG"},
+ {"n":"牛牛短剧","v":"@niuniuduanju"}
]
}
],
- "短劇": [
+ "動畫片":[
{
- "key": "time",
- "name": "時間",
- "value": [
- {
- "n": "時間全選",
- "v": ""
- },
- {
- "n": "2025",
- "v": "2025"
- },
- {
- "n": "2024",
- "v": "2024"
- },
- {
- "n": "2023",
- "v": "2023"
- },
- {
- "n": "2022",
- "v": "2022"
- },
- {
- "n": "2021",
- "v": "2021"
- },
- {
- "n": "2020",
- "v": "2020"
- },
- {
- "n": "2019",
- "v": "2019"
- },
- {
- "n": "2018",
- "v": "2018"
- },
- {
- "n": "2017",
- "v": "2017"
- },
- {
- "n": "2016",
- "v": "2016"
- },
- {
- "n": "2015",
- "v": "2015"
- },
- {
- "n": "2014",
- "v": "2014"
- },
- {
- "n": "2013",
- "v": "2013"
- },
- {
- "n": "2012",
- "v": "2012"
- },
- {
- "n": "2011",
- "v": "2011"
- },
- {
- "n": "2010",
- "v": "2010"
- },
- {
- "n": "2009",
- "v": "2009"
- },
- {
- "n": "2008",
- "v": "2008"
- },
- {
- "n": "2007",
- "v": "2007"
- },
- {
- "n": "2006",
- "v": "2006"
- },
- {
- "n": "2005",
- "v": "2005"
- },
- {
- "n": "2004",
- "v": "2004"
- },
- {
- "n": "2003",
- "v": "2003"
- },
- {
- "n": "2002",
- "v": "2002"
- },
- {
- "n": "2001",
- "v": "2001"
- },
- {
- "n": "2000",
- "v": "2000"
- },
- {
- "n": "1999",
- "v": "1999"
- },
- {
- "n": "1998",
- "v": "1998"
- },
- {
- "n": "1997",
- "v": "1997"
- },
- {
- "n": "1996",
- "v": "1996"
- },
- {
- "n": "1995",
- "v": "1995"
- },
- {
- "n": "1994",
- "v": "1994"
- },
- {
- "n": "1993",
- "v": "1993"
- },
- {
- "n": "1992",
- "v": "1992"
- },
- {
- "n": "1991",
- "v": "1991"
- },
- {
- "n": "1990",
- "v": "1990"
- },
- {
- "n": "1989",
- "v": "1989"
- },
- {
- "n": "1988",
- "v": "1988"
- },
- {
- "n": "1987",
- "v": "1987"
- },
- {
- "n": "1986",
- "v": "1986"
- },
- {
- "n": "1985",
- "v": "1985"
- },
- {
- "n": "1984",
- "v": "1984"
- },
- {
- "n": "1983",
- "v": "1983"
- },
- {
- "n": "1982",
- "v": "1982"
- },
- {
- "n": "1981",
- "v": "1981"
- },
- {
- "n": "1980",
- "v": "1980"
- },
- {
- "n": "1979",
- "v": "1979"
- },
- {
- "n": "1978",
- "v": "1978"
- },
- {
- "n": "1977",
- "v": "1977"
- },
- {
- "n": "1976",
- "v": "1976"
- },
- {
- "n": "1975",
- "v": "1975"
- },
- {
- "n": "1974",
- "v": "1974"
- },
- {
- "n": "1973",
- "v": "1973"
- },
- {
- "n": "1972",
- "v": "1972"
- },
- {
- "n": "1971",
- "v": "1971"
- },
- {
- "n": "1970",
- "v": "1970"
- },
- {
- "n": "1969",
- "v": "1969"
- },
- {
- "n": "1968",
- "v": "1968"
- },
- {
- "n": "1967",
- "v": "1967"
- },
- {
- "n": "1966",
- "v": "1966"
- },
- {
- "n": "1965",
- "v": "1965"
- },
- {
- "n": "1964",
- "v": "1964"
- },
- {
- "n": "1963",
- "v": "1963"
- },
- {
- "n": "1962",
- "v": "1962"
- },
- {
- "n": "1961",
- "v": "1961"
- },
- {
- "n": "1960",
- "v": "1960"
- },
- {
- "n": "1959",
- "v": "1959"
- },
- {
- "n": "1958",
- "v": "1958"
- }
+ "key":"time",
+ "name":"時間",
+ "value":[
+ {"n":"時間全選","v":""},
+ {"n":"2024","v":"2024"},
+ {"n":"2023","v":"2023"},
+ {"n":"2022","v":"2022"},
+ {"n":"2021","v":"2021"},
+ {"n":"2020","v":"2020"},
+ {"n":"2019","v":"2019"},
+ {"n":"2018","v":"2018"},
+ {"n":"2017","v":"2017"},
+ {"n":"2016","v":"2016"},
+ {"n":"2015","v":"2015"},
+ {"n":"2014","v":"2014"},
+ {"n":"2013","v":"2013"},
+ {"n":"2012","v":"2012"},
+ {"n":"2011","v":"2011"},
+ {"n":"2010","v":"2010"},
+ {"n":"2009","v":"2009"},
+ {"n":"2008","v":"2008"},
+ {"n":"2007","v":"2007"},
+ {"n":"2006","v":"2006"},
+ {"n":"2005","v":"2005"},
+ {"n":"2004","v":"2004"},
+ {"n":"2003","v":"2003"},
+ {"n":"2002","v":"2002"},
+ {"n":"2001","v":"2001"},
+ {"n":"2000","v":"2000"},
+ {"n":"1999","v":"1999"},
+ {"n":"1998","v":"1998"},
+ {"n":"1997","v":"1997"},
+ {"n":"1996","v":"1996"},
+ {"n":"1995","v":"1995"},
+ {"n":"1994","v":"1994"},
+ {"n":"1993","v":"1993"},
+ {"n":"1992","v":"1992"},
+ {"n":"1991","v":"1991"},
+ {"n":"1990","v":"1990"},
+ {"n":"1989","v":"1989"},
+ {"n":"1988","v":"1988"},
+ {"n":"1987","v":"1987"},
+ {"n":"1986","v":"1986"},
+ {"n":"1985","v":"1985"},
+ {"n":"1984","v":"1984"},
+ {"n":"1983","v":"1983"},
+ {"n":"1982","v":"1982"},
+ {"n":"1981","v":"1981"},
+ {"n":"1980","v":"1980"},
+ {"n":"1979","v":"1979"},
+ {"n":"1978","v":"1978"},
+ {"n":"1977","v":"1977"},
+ {"n":"1976","v":"1976"},
+ {"n":"1975","v":"1975"},
+ {"n":"1974","v":"1974"},
+ {"n":"1973","v":"1973"},
+ {"n":"1972","v":"1972"},
+ {"n":"1971","v":"1971"},
+ {"n":"1970","v":"1970"},
+ {"n":"1969","v":"1969"},
+ {"n":"1968","v":"1968"},
+ {"n":"1967","v":"1967"},
+ {"n":"1966","v":"1966"},
+ {"n":"1965","v":"1965"},
+ {"n":"1964","v":"1964"},
+ {"n":"1963","v":"1963"},
+ {"n":"1962","v":"1962"},
+ {"n":"1961","v":"1961"},
+ {"n":"1960","v":"1960"},
+ {"n":"1959","v":"1959"},
+ {"n":"1958","v":"1958"}
]
},
{
- "key": "tid",
- "name": "短劇",
- "value": [
- {
- "n": "抖音",
- "v": "PL抖音 短剧"
- },
- {
- "n": "快手",
- "v": "PL快手 短剧"
- },
- {
- "n": "大陆",
- "v": "PL大陆短剧"
- },
- {
- "n": "香港",
- "v": "PL香港短剧"
- },
- {
- "n": "澳门",
- "v": "PL澳门短剧"
- },
- {
- "n": "台湾",
- "v": "PL台湾短剧"
- },
- {
- "n": "新加坡",
- "v": "PL新加坡短剧"
- },
- {
- "n": "马来西亚",
- "v": "PL马来西亚短剧"
- },
- {
- "n": "泰国",
- "v": "PL泰国短剧"
- },
- {
- "n": "越南",
- "v": "PL越南短剧"
- },
- {
- "n": "印度",
- "v": "PL印度短剧"
- },
- {
- "n": "韩国",
- "v": "PL韩国短剧"
- },
- {
- "n": "日本",
- "v": "PL日本短剧"
- },
- {
- "n": "欧美",
- "v": "PL欧美短剧"
- },
- {
- "n": "腾讯",
- "v": "PL腾讯短剧"
- },
- {
- "n": "爱奇艺",
- "v": "PL爱奇艺短剧"
- },
- {
- "n": "优酷",
- "v": "PL优酷短剧"
- },
- {
- "n": "芒果",
- "v": "PL芒果TV短剧"
- },
- {
- "n": "搜狐",
- "v": "PL搜狐短剧"
- }
+ "key":"tid",
+ "name":"中文",
+ "value":[
+ {"n":"默认中文国漫","v":"國漫 劇集 3D"},
+ {"n":"默认","v":"animation"},
+ {"n":"儿童早教","v":"儿童早教"},
+ {"n":"儿童歌曲","v":"儿童歌曲"},
+ {"n":"儿童音乐","v":"儿童音乐"},
+ {"n":"儿童绘画","v":"儿童绘画"},
+ {"n":"宝宝巴士","v":"宝宝巴士"},
+ {"n":"儿歌多多","v":"儿歌多多"},
+ {"n":"儿童英语启蒙","v":"儿童英语启蒙"},
+ {"n":"儿童启蒙故事","v":"儿童启蒙故事"},
+ {"n":"儿童安全教育","v":"儿童安全教育"}
]
},
{
- "key": "tid",
- "name": "短劇",
- "value": [
- {
- "n": "都市",
- "v": "PL都市短剧"
- },
- {
- "n": "爱情",
- "v": "PL爱情短剧"
- },
- {
- "n": "复仇",
- "v": "PL复仇短劇"
- },
- {
- "n": "霸总",
- "v": "PL霸总短劇"
- },
- {
- "n": "萌宝",
- "v": "PL萌宝短劇"
- },
- {
- "n": "古装",
- "v": "PL古装短劇"
- },
- {
- "n": "穿越",
- "v": "PL穿越短劇"
- },
- {
- "n": "喜剧",
- "v": "PL喜剧短劇"
- },
- {
- "n": "奇幻",
- "v": "PL奇幻短劇"
- },
- {
- "n": "九酱爱追剧",
- "v": "PD@NineSauceDramaTV"
- },
- {
- "n": "百万好剧场",
- "v": "PD@1-pw5ox"
- },
- {
- "n": "咖啡追剧",
- "v": "PD@coffeedrama605"
- },
- {
- "n": "斗罗短剧",
- "v": "PD@DouluoDrama123 斗羅短劇"
- },
- {
- "n": "嘟嘟剧场",
- "v": "PD@DUDUJUCHANG"
- },
- {
- "n": "牛牛短剧",
- "v": "PD@niuniuduanju"
- }
- ]
- },
- {
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"English",
+ "value":[
+ {"n":"默认英文国漫","v":"3D Chinese cartoon"},
+ {"n":"小猪佩奇","v":"@PeppaPigChineseOfficial 小猪佩奇 中文官方 - Peppa Pig"},
+ {"n":"CoComelon","v":"@CoComelon"},
+ {"n":"合集","v":"Anime ENG SUB 合集"},
+ {"n":"国漫社","v":"@Animation 次元 苍穹动漫 PP看动漫 公馆"},
+ {"n":"国漫工厂","v":"@3DGuoman SUB"},
+ {"n":"阅文动漫","v":"@yuewenanimation SUB"},
+ {"n":"哔哩","v":"@madebybilibili 哔哩动漫"},
+ {"n":"腾讯","v":"@TencentVideoAnimation SUB"},
+ {"n":"优酷","v":"@youkuanimation 优酷动漫"},
+ {"n":"爱奇艺","v":"@iQIYIAnime 爱奇艺动漫"}
]
}
],
- "動畫": [
+ "LIST:新闻 Live,体育直播,赛事直播":[
{
- "key": "time",
- "name": "時間",
- "value": [
- {
- "n": "時間全選",
- "v": ""
- },
- {
- "n": "2025",
- "v": "2025"
- },
- {
- "n": "2024",
- "v": "2024"
- },
- {
- "n": "2023",
- "v": "2023"
- },
- {
- "n": "2022",
- "v": "2022"
- },
- {
- "n": "2021",
- "v": "2021"
- },
- {
- "n": "2020",
- "v": "2020"
- },
- {
- "n": "2019",
- "v": "2019"
- },
- {
- "n": "2018",
- "v": "2018"
- },
- {
- "n": "2017",
- "v": "2017"
- },
- {
- "n": "2016",
- "v": "2016"
- },
- {
- "n": "2015",
- "v": "2015"
- },
- {
- "n": "2014",
- "v": "2014"
- },
- {
- "n": "2013",
- "v": "2013"
- },
- {
- "n": "2012",
- "v": "2012"
- },
- {
- "n": "2011",
- "v": "2011"
- },
- {
- "n": "2010",
- "v": "2010"
- },
- {
- "n": "2009",
- "v": "2009"
- },
- {
- "n": "2008",
- "v": "2008"
- },
- {
- "n": "2007",
- "v": "2007"
- },
- {
- "n": "2006",
- "v": "2006"
- },
- {
- "n": "2005",
- "v": "2005"
- },
- {
- "n": "2004",
- "v": "2004"
- },
- {
- "n": "2003",
- "v": "2003"
- },
- {
- "n": "2002",
- "v": "2002"
- },
- {
- "n": "2001",
- "v": "2001"
- },
- {
- "n": "2000",
- "v": "2000"
- },
- {
- "n": "1999",
- "v": "1999"
- },
- {
- "n": "1998",
- "v": "1998"
- },
- {
- "n": "1997",
- "v": "1997"
- },
- {
- "n": "1996",
- "v": "1996"
- },
- {
- "n": "1995",
- "v": "1995"
- },
- {
- "n": "1994",
- "v": "1994"
- },
- {
- "n": "1993",
- "v": "1993"
- },
- {
- "n": "1992",
- "v": "1992"
- },
- {
- "n": "1991",
- "v": "1991"
- },
- {
- "n": "1990",
- "v": "1990"
- },
- {
- "n": "1989",
- "v": "1989"
- },
- {
- "n": "1988",
- "v": "1988"
- },
- {
- "n": "1987",
- "v": "1987"
- },
- {
- "n": "1986",
- "v": "1986"
- },
- {
- "n": "1985",
- "v": "1985"
- },
- {
- "n": "1984",
- "v": "1984"
- },
- {
- "n": "1983",
- "v": "1983"
- },
- {
- "n": "1982",
- "v": "1982"
- },
- {
- "n": "1981",
- "v": "1981"
- },
- {
- "n": "1980",
- "v": "1980"
- },
- {
- "n": "1979",
- "v": "1979"
- },
- {
- "n": "1978",
- "v": "1978"
- },
- {
- "n": "1977",
- "v": "1977"
- },
- {
- "n": "1976",
- "v": "1976"
- },
- {
- "n": "1975",
- "v": "1975"
- },
- {
- "n": "1974",
- "v": "1974"
- },
- {
- "n": "1973",
- "v": "1973"
- },
- {
- "n": "1972",
- "v": "1972"
- },
- {
- "n": "1971",
- "v": "1971"
- },
- {
- "n": "1970",
- "v": "1970"
- },
- {
- "n": "1969",
- "v": "1969"
- },
- {
- "n": "1968",
- "v": "1968"
- },
- {
- "n": "1967",
- "v": "1967"
- },
- {
- "n": "1966",
- "v": "1966"
- },
- {
- "n": "1965",
- "v": "1965"
- },
- {
- "n": "1964",
- "v": "1964"
- },
- {
- "n": "1963",
- "v": "1963"
- },
- {
- "n": "1962",
- "v": "1962"
- },
- {
- "n": "1961",
- "v": "1961"
- },
- {
- "n": "1960",
- "v": "1960"
- },
- {
- "n": "1959",
- "v": "1959"
- },
- {
- "n": "1958",
- "v": "1958"
- }
+ "key":"tid",
+ "name":"中文",
+ "value":[
+ {"n":"默认","v":"fully YouTube 新聞 Live"},
+ {"n":"赛事","v":"直播 赛事"},
+ {"n":"CCTV","v":"直播 CCTV"},
+ {"n":"港台","v":"直播 港台"}
]
},
{
- "key": "tid",
- "name": "中文",
- "value": [
- {
- "n": "默认",
- "v": "animation"
- },
- {
- "n": "虾仁动画",
- "v": "PL虾仁"
- },
- {
- "n": "沙雕动画",
- "v": "PL沙雕动画"
- },
- {
- "n": "中文国漫",
- "v": "PL國漫3D"
- },
- {
- "n": "儿童早教",
- "v": "PL儿童早教"
- },
- {
- "n": "儿童歌曲",
- "v": "PL儿童歌曲"
- },
- {
- "n": "儿童音乐",
- "v": "PL儿童音乐"
- },
- {
- "n": "儿童绘画",
- "v": "PL儿童绘画"
- },
- {
- "n": "宝宝巴士",
- "v": "PL宝宝巴士"
- },
- {
- "n": "儿歌多多",
- "v": "PL儿歌多多"
- },
- {
- "n": "儿童英语启蒙",
- "v": "PL儿童英语启蒙"
- },
- {
- "n": "儿童启蒙故事",
- "v": "PL儿童启蒙故事"
- },
- {
- "n": "儿童安全教育",
- "v": "PL儿童安全教育"
- }
+ "key":"tid",
+ "name":"English",
+ "value":[
+ {"n":"Live","v":"live"},
+ {"n":"CNN","v":"live CNN"},
+ {"n":"BBC","v":"live BBC"},
+ {"n":"games","v":"live games"},
+ {"n":"印度電視台","v":"@SETIndia"}
]
},
{
- "key": "tid",
- "name": "English",
- "value": [
- {
- "n": "默认英文国漫",
- "v": "PD'3D Chinese cartoon'"
- },
- {
- "n": "小猪佩奇",
- "v": "PD@PeppaPigChineseOfficial 小猪佩奇 中文官方 - Peppa Pig"
- },
- {
- "n": "CoComelon",
- "v": "PD@CoComelon"
- },
- {
- "n": "合集",
- "v": "'Anime ENG SUB'合集"
- },
- {
- "n": "国漫社",
- "v": "PD@Animation"
- },
- {
- "n": "国漫工厂",
- "v": "PD@3DGuoman"
- },
- {
- "n": "阅文动漫",
- "v": "PD@yuewenanimation"
- },
- {
- "n": "哔哩",
- "v": "PD@madebybilibili"
- },
- {
- "n": "腾讯",
- "v": "PD@TencentVideoAnimation"
- },
- {
- "n": "优酷",
- "v": "PD@youkuanimation"
- },
- {
- "n": "爱奇艺",
- "v": "PD@iQIYIAnime"
- }
+ "key":"tid",
+ "name":"中文",
+ "value":[
+ {"n":"默认","v":"News"},
+ {"n":"时政","v":"时政 新闻"},
+ {"n":"体育","v":"体育 新闻"},
+ {"n":"娱乐","v":"娱乐 新闻"},
+ {"n":"大陆","v":"大陆 新闻"},
+ {"n":"港台","v":"港台 新闻"}
]
},
{
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"English",
+ "value":[
+ {"n":"科技與發展","v":"閱兵 奧運會 航母 航空母艦 潛水艇 核武器 坦克 武器 卫星 火箭 輪船 飛機 飛碟"},
+ {"n":"法治与社会","v":"法治 法制 社会 卖淫 淫秽 污蔑 赌博 毒品 裸聊 诈骗 拐卖 强奸 勒索"},
+ {"n":"News","v":"News"},
+ {"n":"CNN","v":"CNN news"},
+ {"n":"BBC","v":"BBC news"}
]
}
],
- "新聞": [
+ "LIST:剧集,腾讯剧集,爱奇艺剧集,优酷剧集,芒果剧集,TVB":[
{
- "key": "tid",
- "name": "中文",
- "value": [
- {
- "n": "默认",
- "v": "fully YouTube 新聞 Live"
- },
- {
- "n": "赛事",
- "v": "直播 赛事"
- },
- {
- "n": "CCTV",
- "v": "直播 CCTV"
- },
- {
- "n": "港台",
- "v": "直播 港台"
- },
- {
- "n": "CNA",
- "v": "@channelnewsasia"
- },
- {
- "n": "鳳凰衛視",
- "v": "@phoenixtvhk"
- },
- {
- "n": "CTINEWS",
- "v": "直播 中天新闻"
- },
- {
- "n": "TVBSEWS",
- "v": "直播 TVBSNEWS"
- },
- {
- "n": "新亚太唐人",
- "v": "@NTDAPTV"
- },
- {
- "n": "東森新聞 CH51",
- "v": "直播 東森新聞 CH51"
- },
- {
- "n": "三立LIVE新闻",
- "v": "直播 三立LIVE新闻 @setnews "
- },
- {
- "n": "台視新聞台HD",
- "v": "直播 台視新聞 TTV NEWS"
- },
- {
- "n": "中視新聞 HD",
- "v": "直播 Taiwan CTV news HD Live"
- }
+ "key":"time",
+ "name":"時間",
+ "value":[
+ {"n":"時間全選","v":""},
+ {"n":"2024","v":"2024"},
+ {"n":"2023","v":"2023"},
+ {"n":"2022","v":"2022"},
+ {"n":"2021","v":"2021"},
+ {"n":"2020","v":"2020"},
+ {"n":"2019","v":"2019"},
+ {"n":"2018","v":"2018"},
+ {"n":"2017","v":"2017"},
+ {"n":"2016","v":"2016"},
+ {"n":"2015","v":"2015"},
+ {"n":"2014","v":"2014"},
+ {"n":"2013","v":"2013"},
+ {"n":"2012","v":"2012"},
+ {"n":"2011","v":"2011"},
+ {"n":"2010","v":"2010"},
+ {"n":"2009","v":"2009"},
+ {"n":"2008","v":"2008"},
+ {"n":"2007","v":"2007"},
+ {"n":"2006","v":"2006"},
+ {"n":"2005","v":"2005"},
+ {"n":"2004","v":"2004"},
+ {"n":"2003","v":"2003"},
+ {"n":"2002","v":"2002"},
+ {"n":"2001","v":"2001"},
+ {"n":"2000","v":"2000"},
+ {"n":"1999","v":"1999"},
+ {"n":"1998","v":"1998"},
+ {"n":"1997","v":"1997"},
+ {"n":"1996","v":"1996"},
+ {"n":"1995","v":"1995"},
+ {"n":"1994","v":"1994"},
+ {"n":"1993","v":"1993"},
+ {"n":"1992","v":"1992"},
+ {"n":"1991","v":"1991"},
+ {"n":"1990","v":"1990"},
+ {"n":"1989","v":"1989"},
+ {"n":"1988","v":"1988"},
+ {"n":"1987","v":"1987"},
+ {"n":"1986","v":"1986"},
+ {"n":"1985","v":"1985"},
+ {"n":"1984","v":"1984"},
+ {"n":"1983","v":"1983"},
+ {"n":"1982","v":"1982"},
+ {"n":"1981","v":"1981"},
+ {"n":"1980","v":"1980"},
+ {"n":"1979","v":"1979"},
+ {"n":"1978","v":"1978"},
+ {"n":"1977","v":"1977"},
+ {"n":"1976","v":"1976"},
+ {"n":"1975","v":"1975"},
+ {"n":"1974","v":"1974"},
+ {"n":"1973","v":"1973"},
+ {"n":"1972","v":"1972"},
+ {"n":"1971","v":"1971"},
+ {"n":"1970","v":"1970"},
+ {"n":"1969","v":"1969"},
+ {"n":"1968","v":"1968"},
+ {"n":"1967","v":"1967"},
+ {"n":"1966","v":"1966"},
+ {"n":"1965","v":"1965"},
+ {"n":"1964","v":"1964"},
+ {"n":"1963","v":"1963"},
+ {"n":"1962","v":"1962"},
+ {"n":"1961","v":"1961"},
+ {"n":"1960","v":"1960"},
+ {"n":"1959","v":"1959"},
+ {"n":"1958","v":"1958"}
]
},
{
- "key": "tid",
- "name": "English",
- "value": [
- {
- "n": "Live",
- "v": "live"
- },
- {
- "n": "CNN",
- "v": "live CNN"
- },
- {
- "n": "BBC",
- "v": "live BBC"
- },
- {
- "n": "games",
- "v": "live games"
- },
- {
- "n": "CBS",
- "v": "@CBSNews"
- },
- {
- "n": "ABC",
- "v": "live ABC NEWS"
- },
- {
- "n": "NBC",
- "v": "@NBCNews"
- },
- {
- "n": "LiveNOW from FOX",
- "v": "@livenowfox"
- },
- {
- "n": "Sky News",
- "v": "@SkyNews"
- },
- {
- "n": "euronews",
- "v": "@euronews"
- },
- {
- "n": "GBNews",
- "v": "@GBNewsOnline"
- },
- {
- "n": "Al Jazeera English",
- "v": "@aljazeeraenglish"
- },
- {
- "n": "ABCNews (Australia)",
- "v": "@abcnewsaustralia"
- },
- {
- "n": "FRANCE 24 English",
- "v": "live FRANCE 24 English"
- },
- {
- "n": "Reuters",
- "v": "live Reuters"
- },
- {
- "n": "印度电视台",
- "v": "@SETIndia"
- }
+ "key":"tid",
+ "name":"中文",
+ "value":[
+ {"n":"默認","v":""},
+ {"n":"華語熱播電視劇官方頻道","v":"華語熱播電視劇官方頻道"},
+ {"n":"粵劇","v":"粵劇 劇集"},
+ {"n":"TVB","v":"@TVB"},
+ {"n":"国剧放映社","v":"国剧放映社"},
+ {"n":"大陆","v":"大陆 剧集"},
+ {"n":"腾讯","v":"腾讯 剧集"},
+ {"n":"爱奇艺","v":"爱奇艺 剧集"},
+ {"n":"优酷","v":"优酷 剧集"},
+ {"n":"芒果","v":"芒果TV 剧集"},
+ {"n":"搜狐","v":"搜狐 剧集"},
+ {"n":"华数","v":"华数 剧集"},
+ {"n":"港台","v":"港台 剧集"},
+ {"n":"美国","v":"美国 Full Episode 完整剧集"},
+ {"n":"Netflix","v":"Netflix Full Episode 完整剧集"},
+ {"n":"Disney","v":"disney Full Episode 完整剧集"},
+ {"n":"Apple","v":"apple Full Episode 完整剧集"},
+ {"n":"Amazon","v":"amazon Full Episode 完整剧集"},
+ {"n":"HBO","v":"hbo Full Episode 完整剧集"},
+ {"n":"韩国","v":"韩国 剧集"},
+ {"n":"日本","v":"日本 剧集"},
+ {"n":"英国","v":"英国 Full Episode 完整剧集"}
]
},
{
- "key": "tid",
- "name": "中文",
- "value": [
- {
- "n": "默认",
- "v": "News"
- },
- {
- "n": "News",
- "v": "news"
- },
- {
- "n": "时政",
- "v": "时政 新闻"
- },
- {
- "n": "体育",
- "v": "体育 新闻"
- },
- {
- "n": "娱乐",
- "v": "娱乐 新闻"
- },
- {
- "n": "大陆",
- "v": "大陆 新闻"
- },
- {
- "n": "HKTVB",
- "v": "@tvbnewsofficial"
- },
- {
- "n": "少康戰情室",
- "v": "@tvbssituationroom"
- },
- {
- "n": "政经龙凤配",
- "v": "@觀點"
- },
- {
- "n": "FOCUS全球新闻",
- "v": "@TVBSNEWS FOCUS全球新闻"
- },
- {
- "n": "新闻大白话",
- "v": "@TVBSNEWS 新闻大白话"
- },
- {
- "n": "东森新闻",
- "v": "关键时刻新闻"
- },
- {
- "n": "港台",
- "v": "港台 新闻"
- }
- ]
- },
- {
- "key": "tid",
- "name": "English",
- "value": [
- {
- "n": "科技與發展",
- "v": "閱兵 奧運會 航母 航空母艦 潛水艇 核武器 坦克 武器 卫星 火箭 輪船 飛機 飛碟"
- },
- {
- "n": "法治与社会",
- "v": "法治 法制 社会 卖淫 淫秽 污蔑 赌博 毒品 裸聊 诈骗 拐卖 强奸 勒索"
- },
- {
- "n": "News",
- "v": "News"
- },
- {
- "n": "CNN",
- "v": "CNN news"
- },
- {
- "n": "BBC",
- "v": "BBC news"
- }
- ]
- },
- {
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"English",
+ "value":[
+ {"n":"Drama","v":"Full Episode drama"},
+ {"n":"US","v":"drama Full Episode US"},
+ {"n":"Netflix","v":"netflix Full Episode drama"},
+ {"n":"Disney","v":"disney Full Episode drama"},
+ {"n":"Apple","v":"apple Full Episode drama"},
+ {"n":"Amazon","v":"amazon Full Episode drama"},
+ {"n":"HBO","v":"hbo Full Episode drama"},
+ {"n":"Korea","v":"korea Full Episode drama"},
+ {"n":"Japan","v":"japan Full Episode drama"},
+ {"n":"UK","v":"uk Full Episode drama"}
]
}
],
- "劇集": [
+ "電影":[
{
- "key": "time",
- "name": "時間",
- "value": [
- {
- "n": "時間全選",
- "v": ""
- },
- {
- "n": "2025",
- "v": "2025"
- },
- {
- "n": "2024",
- "v": "2024"
- },
- {
- "n": "2023",
- "v": "2023"
- },
- {
- "n": "2022",
- "v": "2022"
- },
- {
- "n": "2021",
- "v": "2021"
- },
- {
- "n": "2020",
- "v": "2020"
- },
- {
- "n": "2019",
- "v": "2019"
- },
- {
- "n": "2018",
- "v": "2018"
- },
- {
- "n": "2017",
- "v": "2017"
- },
- {
- "n": "2016",
- "v": "2016"
- },
- {
- "n": "2015",
- "v": "2015"
- },
- {
- "n": "2014",
- "v": "2014"
- },
- {
- "n": "2013",
- "v": "2013"
- },
- {
- "n": "2012",
- "v": "2012"
- },
- {
- "n": "2011",
- "v": "2011"
- },
- {
- "n": "2010",
- "v": "2010"
- },
- {
- "n": "2009",
- "v": "2009"
- },
- {
- "n": "2008",
- "v": "2008"
- },
- {
- "n": "2007",
- "v": "2007"
- },
- {
- "n": "2006",
- "v": "2006"
- },
- {
- "n": "2005",
- "v": "2005"
- },
- {
- "n": "2004",
- "v": "2004"
- },
- {
- "n": "2003",
- "v": "2003"
- },
- {
- "n": "2002",
- "v": "2002"
- },
- {
- "n": "2001",
- "v": "2001"
- },
- {
- "n": "2000",
- "v": "2000"
- },
- {
- "n": "1999",
- "v": "1999"
- },
- {
- "n": "1998",
- "v": "1998"
- },
- {
- "n": "1997",
- "v": "1997"
- },
- {
- "n": "1996",
- "v": "1996"
- },
- {
- "n": "1995",
- "v": "1995"
- },
- {
- "n": "1994",
- "v": "1994"
- },
- {
- "n": "1993",
- "v": "1993"
- },
- {
- "n": "1992",
- "v": "1992"
- },
- {
- "n": "1991",
- "v": "1991"
- },
- {
- "n": "1990",
- "v": "1990"
- },
- {
- "n": "1989",
- "v": "1989"
- },
- {
- "n": "1988",
- "v": "1988"
- },
- {
- "n": "1987",
- "v": "1987"
- },
- {
- "n": "1986",
- "v": "1986"
- },
- {
- "n": "1985",
- "v": "1985"
- },
- {
- "n": "1984",
- "v": "1984"
- },
- {
- "n": "1983",
- "v": "1983"
- },
- {
- "n": "1982",
- "v": "1982"
- },
- {
- "n": "1981",
- "v": "1981"
- },
- {
- "n": "1980",
- "v": "1980"
- },
- {
- "n": "1979",
- "v": "1979"
- },
- {
- "n": "1978",
- "v": "1978"
- },
- {
- "n": "1977",
- "v": "1977"
- },
- {
- "n": "1976",
- "v": "1976"
- },
- {
- "n": "1975",
- "v": "1975"
- },
- {
- "n": "1974",
- "v": "1974"
- },
- {
- "n": "1973",
- "v": "1973"
- },
- {
- "n": "1972",
- "v": "1972"
- },
- {
- "n": "1971",
- "v": "1971"
- },
- {
- "n": "1970",
- "v": "1970"
- },
- {
- "n": "1969",
- "v": "1969"
- },
- {
- "n": "1968",
- "v": "1968"
- },
- {
- "n": "1967",
- "v": "1967"
- },
- {
- "n": "1966",
- "v": "1966"
- },
- {
- "n": "1965",
- "v": "1965"
- },
- {
- "n": "1964",
- "v": "1964"
- },
- {
- "n": "1963",
- "v": "1963"
- },
- {
- "n": "1962",
- "v": "1962"
- },
- {
- "n": "1961",
- "v": "1961"
- },
- {
- "n": "1960",
- "v": "1960"
- },
- {
- "n": "1959",
- "v": "1959"
- },
- {
- "n": "1958",
- "v": "1958"
- }
+ "key":"time",
+ "name":"時間",
+ "value":[
+ {"n":"時間全選","v":""},
+ {"n":"2024","v":"2024"},
+ {"n":"2023","v":"2023"},
+ {"n":"2022","v":"2022"},
+ {"n":"2021","v":"2021"},
+ {"n":"2020","v":"2020"},
+ {"n":"2019","v":"2019"},
+ {"n":"2018","v":"2018"},
+ {"n":"2017","v":"2017"},
+ {"n":"2016","v":"2016"},
+ {"n":"2015","v":"2015"},
+ {"n":"2014","v":"2014"},
+ {"n":"2013","v":"2013"},
+ {"n":"2012","v":"2012"},
+ {"n":"2011","v":"2011"},
+ {"n":"2010","v":"2010"},
+ {"n":"2009","v":"2009"},
+ {"n":"2008","v":"2008"},
+ {"n":"2007","v":"2007"},
+ {"n":"2006","v":"2006"},
+ {"n":"2005","v":"2005"},
+ {"n":"2004","v":"2004"},
+ {"n":"2003","v":"2003"},
+ {"n":"2002","v":"2002"},
+ {"n":"2001","v":"2001"},
+ {"n":"2000","v":"2000"},
+ {"n":"1999","v":"1999"},
+ {"n":"1998","v":"1998"},
+ {"n":"1997","v":"1997"},
+ {"n":"1996","v":"1996"},
+ {"n":"1995","v":"1995"},
+ {"n":"1994","v":"1994"},
+ {"n":"1993","v":"1993"},
+ {"n":"1992","v":"1992"},
+ {"n":"1991","v":"1991"},
+ {"n":"1990","v":"1990"},
+ {"n":"1989","v":"1989"},
+ {"n":"1988","v":"1988"},
+ {"n":"1987","v":"1987"},
+ {"n":"1986","v":"1986"},
+ {"n":"1985","v":"1985"},
+ {"n":"1984","v":"1984"},
+ {"n":"1983","v":"1983"},
+ {"n":"1982","v":"1982"},
+ {"n":"1981","v":"1981"},
+ {"n":"1980","v":"1980"},
+ {"n":"1979","v":"1979"},
+ {"n":"1978","v":"1978"},
+ {"n":"1977","v":"1977"},
+ {"n":"1976","v":"1976"},
+ {"n":"1975","v":"1975"},
+ {"n":"1974","v":"1974"},
+ {"n":"1973","v":"1973"},
+ {"n":"1972","v":"1972"},
+ {"n":"1971","v":"1971"},
+ {"n":"1970","v":"1970"},
+ {"n":"1969","v":"1969"},
+ {"n":"1968","v":"1968"},
+ {"n":"1967","v":"1967"},
+ {"n":"1966","v":"1966"},
+ {"n":"1965","v":"1965"},
+ {"n":"1964","v":"1964"},
+ {"n":"1963","v":"1963"},
+ {"n":"1962","v":"1962"},
+ {"n":"1961","v":"1961"},
+ {"n":"1960","v":"1960"},
+ {"n":"1959","v":"1959"},
+ {"n":"1958","v":"1958"}
]
},
{
- "key": "tid",
- "name": "中文",
- "value": [
- {
- "n": "默認",
- "v": ""
- },
- {
- "n": "華語熱播電視劇官方頻道",
- "v": "PL華語熱播電視劇官方頻道"
- },
- {
- "n": "TVB 国语",
- "v": "PL TVB Drama 国语剧场"
- },
- {
- "n": "粵劇",
- "v": "PL 粵劇 劇集"
- },
- {
- "n": "TVB",
- "v": "PL TVB"
- },
- {
- "n": "国剧放映社",
- "v": "PL 国剧放映社"
- },
- {
- "n": "大陆",
- "v": "PL 大陆 剧集"
- },
- {
- "n": "腾讯",
- "v": "PL 腾讯 剧集"
- },
- {
- "n": "爱奇艺",
- "v": "PL 爱奇艺 剧集"
- },
- {
- "n": "优酷",
- "v": "PL 优酷 剧集"
- },
- {
- "n": "芒果",
- "v": "PL 芒果TV 剧集"
- },
- {
- "n": "搜狐",
- "v": "PL 搜狐 剧集"
- },
- {
- "n": "华数",
- "v": "PL 华数 剧集"
- },
- {
- "n": "港台",
- "v": "PL 港台 剧集"
- },
- {
- "n": "美国",
- "v": "PL 美国 Full Episode 完整剧集"
- },
- {
- "n": "Netflix",
- "v": "PL Netflix Full Episode 完整剧集"
- },
- {
- "n": "Disney",
- "v": "PL disney Full Episode 完整剧集"
- },
- {
- "n": "Apple",
- "v": "PL apple Full Episode 完整剧集"
- },
- {
- "n": "Amazon",
- "v": "PL amazon Full Episode 完整剧集"
- },
- {
- "n": "HBO",
- "v": "PL hbo Full Episode 完整剧集"
- },
- {
- "n": "韩国",
- "v": "PL 韩国 剧集"
- },
- {
- "n": "日本",
- "v": "PL 日本 剧集"
- },
- {
- "n": "英国",
- "v": "PL 英国 Full Episode 完整剧集"
- }
+ "key":"tid",
+ "name":"中文",
+ "value":[
+ {"n":"默認","v":""},
+ {"n":"大陆","v":"大陆 电影"},
+ {"n":"腾讯","v":"腾讯 电影"},
+ {"n":"爱奇艺","v":"爱奇艺 电影"},
+ {"n":"优酷","v":"优酷 电影"},
+ {"n":"芒果","v":"芒果TV 电影"},
+ {"n":"搜狐","v":"搜狐 电影"},
+ {"n":"港台","v":"港台 电影"},
+ {"n":"美国","v":"美国 电影"},
+ {"n":"Netflix","v":"netflix Full movie 电影"},
+ {"n":"Disney","v":"disney Full movie 电影"},
+ {"n":"Apple","v":"apple Full movie 电影"},
+ {"n":"Amazon","v":"amazon Full movie 电影"},
+ {"n":"HBO","v":"hbo Full movie 电影"},
+ {"n":"韩国","v":"韩国 Full movie 电影"},
+ {"n":"日本","v":"日本 Full movie 电影"},
+ {"n":"英国","v":"英国 Full movie 电影"}
]
},
{
- "key": "tid",
- "name": "English",
- "value": [
- {
- "n": "Drama",
- "v": "PL Full Episode drama"
- },
- {
- "n": "US",
- "v": "PL drama Full Episode US"
- },
- {
- "n": "Netflix",
- "v": "PL netflix Full Episode drama"
- },
- {
- "n": "Disney",
- "v": "PL disney Full Episode drama"
- },
- {
- "n": "Apple",
- "v": "PL apple Full Episode drama"
- },
- {
- "n": "Amazon",
- "v": "PL amazon Full Episode drama"
- },
- {
- "n": "HBO",
- "v": "PL hbo Full Episode drama"
- },
- {
- "n": "Korea",
- "v": "PL korea Full Episode drama"
- },
- {
- "n": "Japan",
- "v": "PL japan Full Episode drama"
- },
- {
- "n": "UK",
- "v": "PL uk Full Episode drama"
- }
- ]
- },
- {
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"English",
+ "value":[
+ {"n":"movie","v":"youtube movies Full movie"},
+ {"n":"US","v":"us Full movie movie"},
+ {"n":"Netflix movie","v":"netflix Full movie movie"},
+ {"n":"Disney","v":"disney Full movie movie"},
+ {"n":"Apple","v":"apple Full movie movie"},
+ {"n":"Amazon","v":"amazon Full movie movie"},
+ {"n":"HBO","v":"hbo Full movie movie"},
+ {"n":"Koera","v":"korea Full movie movie"},
+ {"n":"Japan","v":"japan Full movie movie"},
+ {"n":"UK","v":"uk Full movie movie"}
]
}
],
- "電影": [
+ "LIST:综艺,芒果综艺,腾讯综艺,爱奇艺综艺,优酷综艺,卫视综艺":[
{
- "key": "time",
- "name": "時間",
- "value": [
- {
- "n": "時間全選",
- "v": ""
- },
- {
- "n": "2025",
- "v": "2025"
- },
- {
- "n": "2024",
- "v": "2024"
- },
- {
- "n": "2023",
- "v": "2023"
- },
- {
- "n": "2022",
- "v": "2022"
- },
- {
- "n": "2021",
- "v": "2021"
- },
- {
- "n": "2020",
- "v": "2020"
- },
- {
- "n": "2019",
- "v": "2019"
- },
- {
- "n": "2018",
- "v": "2018"
- },
- {
- "n": "2017",
- "v": "2017"
- },
- {
- "n": "2016",
- "v": "2016"
- },
- {
- "n": "2015",
- "v": "2015"
- },
- {
- "n": "2014",
- "v": "2014"
- },
- {
- "n": "2013",
- "v": "2013"
- },
- {
- "n": "2012",
- "v": "2012"
- },
- {
- "n": "2011",
- "v": "2011"
- },
- {
- "n": "2010",
- "v": "2010"
- },
- {
- "n": "2009",
- "v": "2009"
- },
- {
- "n": "2008",
- "v": "2008"
- },
- {
- "n": "2007",
- "v": "2007"
- },
- {
- "n": "2006",
- "v": "2006"
- },
- {
- "n": "2005",
- "v": "2005"
- },
- {
- "n": "2004",
- "v": "2004"
- },
- {
- "n": "2003",
- "v": "2003"
- },
- {
- "n": "2002",
- "v": "2002"
- },
- {
- "n": "2001",
- "v": "2001"
- },
- {
- "n": "2000",
- "v": "2000"
- },
- {
- "n": "1999",
- "v": "1999"
- },
- {
- "n": "1998",
- "v": "1998"
- },
- {
- "n": "1997",
- "v": "1997"
- },
- {
- "n": "1996",
- "v": "1996"
- },
- {
- "n": "1995",
- "v": "1995"
- },
- {
- "n": "1994",
- "v": "1994"
- },
- {
- "n": "1993",
- "v": "1993"
- },
- {
- "n": "1992",
- "v": "1992"
- },
- {
- "n": "1991",
- "v": "1991"
- },
- {
- "n": "1990",
- "v": "1990"
- },
- {
- "n": "1989",
- "v": "1989"
- },
- {
- "n": "1988",
- "v": "1988"
- },
- {
- "n": "1987",
- "v": "1987"
- },
- {
- "n": "1986",
- "v": "1986"
- },
- {
- "n": "1985",
- "v": "1985"
- },
- {
- "n": "1984",
- "v": "1984"
- },
- {
- "n": "1983",
- "v": "1983"
- },
- {
- "n": "1982",
- "v": "1982"
- },
- {
- "n": "1981",
- "v": "1981"
- },
- {
- "n": "1980",
- "v": "1980"
- },
- {
- "n": "1979",
- "v": "1979"
- },
- {
- "n": "1978",
- "v": "1978"
- },
- {
- "n": "1977",
- "v": "1977"
- },
- {
- "n": "1976",
- "v": "1976"
- },
- {
- "n": "1975",
- "v": "1975"
- },
- {
- "n": "1974",
- "v": "1974"
- },
- {
- "n": "1973",
- "v": "1973"
- },
- {
- "n": "1972",
- "v": "1972"
- },
- {
- "n": "1971",
- "v": "1971"
- },
- {
- "n": "1970",
- "v": "1970"
- },
- {
- "n": "1969",
- "v": "1969"
- },
- {
- "n": "1968",
- "v": "1968"
- },
- {
- "n": "1967",
- "v": "1967"
- },
- {
- "n": "1966",
- "v": "1966"
- },
- {
- "n": "1965",
- "v": "1965"
- },
- {
- "n": "1964",
- "v": "1964"
- },
- {
- "n": "1963",
- "v": "1963"
- },
- {
- "n": "1962",
- "v": "1962"
- },
- {
- "n": "1961",
- "v": "1961"
- },
- {
- "n": "1960",
- "v": "1960"
- },
- {
- "n": "1959",
- "v": "1959"
- },
- {
- "n": "1958",
- "v": "1958"
- }
+ "key":"time",
+ "name":"時間",
+ "value":[
+ {"n":"時間全選","v":""},
+ {"n":"2024","v":"2024"},
+ {"n":"2023","v":"2023"},
+ {"n":"2022","v":"2022"},
+ {"n":"2021","v":"2021"},
+ {"n":"2020","v":"2020"},
+ {"n":"2019","v":"2019"},
+ {"n":"2018","v":"2018"},
+ {"n":"2017","v":"2017"},
+ {"n":"2016","v":"2016"},
+ {"n":"2015","v":"2015"},
+ {"n":"2014","v":"2014"},
+ {"n":"2013","v":"2013"},
+ {"n":"2012","v":"2012"},
+ {"n":"2011","v":"2011"},
+ {"n":"2010","v":"2010"},
+ {"n":"2009","v":"2009"},
+ {"n":"2008","v":"2008"},
+ {"n":"2007","v":"2007"},
+ {"n":"2006","v":"2006"},
+ {"n":"2005","v":"2005"},
+ {"n":"2004","v":"2004"},
+ {"n":"2003","v":"2003"},
+ {"n":"2002","v":"2002"},
+ {"n":"2001","v":"2001"},
+ {"n":"2000","v":"2000"},
+ {"n":"1999","v":"1999"},
+ {"n":"1998","v":"1998"},
+ {"n":"1997","v":"1997"},
+ {"n":"1996","v":"1996"},
+ {"n":"1995","v":"1995"},
+ {"n":"1994","v":"1994"},
+ {"n":"1993","v":"1993"},
+ {"n":"1992","v":"1992"},
+ {"n":"1991","v":"1991"},
+ {"n":"1990","v":"1990"},
+ {"n":"1989","v":"1989"},
+ {"n":"1988","v":"1988"},
+ {"n":"1987","v":"1987"},
+ {"n":"1986","v":"1986"},
+ {"n":"1985","v":"1985"},
+ {"n":"1984","v":"1984"},
+ {"n":"1983","v":"1983"},
+ {"n":"1982","v":"1982"},
+ {"n":"1981","v":"1981"},
+ {"n":"1980","v":"1980"},
+ {"n":"1979","v":"1979"},
+ {"n":"1978","v":"1978"},
+ {"n":"1977","v":"1977"},
+ {"n":"1976","v":"1976"},
+ {"n":"1975","v":"1975"},
+ {"n":"1974","v":"1974"},
+ {"n":"1973","v":"1973"},
+ {"n":"1972","v":"1972"},
+ {"n":"1971","v":"1971"},
+ {"n":"1970","v":"1970"},
+ {"n":"1969","v":"1969"},
+ {"n":"1968","v":"1968"},
+ {"n":"1967","v":"1967"},
+ {"n":"1966","v":"1966"},
+ {"n":"1965","v":"1965"},
+ {"n":"1964","v":"1964"},
+ {"n":"1963","v":"1963"},
+ {"n":"1962","v":"1962"},
+ {"n":"1961","v":"1961"},
+ {"n":"1960","v":"1960"},
+ {"n":"1959","v":"1959"},
+ {"n":"1958","v":"1958"}
]
},
{
- "key": "tid",
- "name": "中文",
- "value": [
- {
- "n": "默認",
- "v": ""
- },
- {
- "n": "大陆",
- "v": "PL 大陆 电影"
- },
- {
- "n": "腾讯",
- "v": "PL 腾讯 电影"
- },
- {
- "n": "爱奇艺",
- "v": "PL 爱奇艺 电影"
- },
- {
- "n": "优酷",
- "v": "PL 优酷 电影"
- },
- {
- "n": "芒果",
- "v": "PL 芒果TV 电影"
- },
- {
- "n": "搜狐",
- "v": "PL 搜狐 电影"
- },
- {
- "n": "港台",
- "v": "PL 港台 电影"
- },
- {
- "n": "美国",
- "v": "PL 美国 电影"
- },
- {
- "n": "Netflix",
- "v": "PL netflix Full movie 电影"
- },
- {
- "n": "Disney",
- "v": "PL disney Full movie 电影"
- },
- {
- "n": "Apple",
- "v": "PL apple Full movie 电影"
- },
- {
- "n": "Amazon",
- "v": "PL amazon Full movie 电影"
- },
- {
- "n": "HBO",
- "v": "PL hbo Full movie 电影"
- },
- {
- "n": "韩国",
- "v": "PL 韩国 Full movie 电影"
- },
- {
- "n": "日本",
- "v": "PL 日本 Full movie 电影"
- },
- {
- "n": "英国",
- "v": "PL 英国 Full movie 电影"
- }
+ "key":"tid",
+ "name":"中文",
+ "value":[
+ {"n":"默认","v":"Variety show"},
+ {"n":"大陆","v":"大陆 综艺"},
+ {"n":"芒果","v":"芒果 综艺"},
+ {"n":"腾讯","v":"腾讯 综艺"},
+ {"n":"爱奇艺","v":"爱奇艺 综艺"},
+ {"n":"优酷","v":"优酷 综艺"},
+ {"n":"港台","v":"港台 综艺"},
+ {"n":"美国","v":"美国 综艺"},
+ {"n":"Netflix","v":"Netflix 综艺"},
+ {"n":"韩国","v":"CRAVITY on Variety Shows 韩国 综艺"},
+ {"n":"日本","v":"日本 综艺"},
+ {"n":"英国","v":"英国 综艺"}
]
},
{
- "key": "tid",
- "name": "English",
- "value": [
- {
- "n": "movie",
- "v": "PL youtube movies Full movie"
- },
- {
- "n": "US",
- "v": "PL us Full movie movie"
- },
- {
- "n": "Netflix movie",
- "v": "PL netflix Full movie movie"
- },
- {
- "n": "Disney",
- "v": "PL disney Full movie movie"
- },
- {
- "n": "Apple",
- "v": "PL apple Full movie movie"
- },
- {
- "n": "Amazon",
- "v": "PL amazon Full movie movie"
- },
- {
- "n": "HBO",
- "v": "PL hbo Full movie movie"
- },
- {
- "n": "Koera",
- "v": "PL korea Full movie movie"
- },
- {
- "n": "Japan",
- "v": "PL japan Full movie movie"
- },
- {
- "n": "UK",
- "v": "PL uk Full movie movie"
- }
+ "key":"tid",
+ "name":"English",
+ "value":[
+ {"n":"Variety","v":"variety"},
+ {"n":"Netflix variety","v":"netflix variety"},
+ {"n":"Korea","v":"korea variety"},
+ {"n":"Japan","v":"japan variety"},
+ {"n":"UK","v":"uk variety"}
]
},
{
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"小品",
+ "value":[
+ {"n":"春晚小品","v":"春晚小品"},
+ {"n":"开心麻花","v":"开心麻花"},
+ {"n":"屌丝男士","v":"屌丝男士"},
+ {"n":"喜剧综艺","v":"喜剧综艺"},
+ {"n":"单口","v":"单口 相声"},
+ {"n":"群口","v":"群口 相声"},
+ {"n":"德云社","v":"德云社"},
+ {"n":"青曲社","v":"青曲社"},
+ {"n":"郭德纲","v":"郭德纲"},
+ {"n":"岳云鹏","v":"岳云鹏"},
+ {"n":"曹云金","v":"曹云金"},
+ {"n":"评书","v":"评书"},
+ {"n":"小曲","v":"小曲"},
+ {"n":"赵本山","v":"赵本山"},
+ {"n":"陈佩斯","v":"陈佩斯"},
+ {"n":"冯巩","v":"冯巩"},
+ {"n":"宋小宝","v":"宋小宝"},
+ {"n":"赵丽蓉","v":"赵丽蓉"},
+ {"n":"潘长江","v":"潘长江"},
+ {"n":"郭冬临","v":"郭冬临"},
+ {"n":"严顺开","v":"严顺开"},
+ {"n":"文松","v":"文松"}
]
}
],
- "綜藝": [
+ "LIST:紀錄片,历史纪录片,自然纪录片,宇宙纪录片":[
{
- "key": "time",
- "name": "時間",
- "value": [
- {
- "n": "時間全選",
- "v": ""
- },
- {
- "n": "2025",
- "v": "2025"
- },
- {
- "n": "2024",
- "v": "2024"
- },
- {
- "n": "2023",
- "v": "2023"
- },
- {
- "n": "2022",
- "v": "2022"
- },
- {
- "n": "2021",
- "v": "2021"
- },
- {
- "n": "2020",
- "v": "2020"
- },
- {
- "n": "2019",
- "v": "2019"
- },
- {
- "n": "2018",
- "v": "2018"
- },
- {
- "n": "2017",
- "v": "2017"
- },
- {
- "n": "2016",
- "v": "2016"
- },
- {
- "n": "2015",
- "v": "2015"
- },
- {
- "n": "2014",
- "v": "2014"
- },
- {
- "n": "2013",
- "v": "2013"
- },
- {
- "n": "2012",
- "v": "2012"
- },
- {
- "n": "2011",
- "v": "2011"
- },
- {
- "n": "2010",
- "v": "2010"
- },
- {
- "n": "2009",
- "v": "2009"
- },
- {
- "n": "2008",
- "v": "2008"
- },
- {
- "n": "2007",
- "v": "2007"
- },
- {
- "n": "2006",
- "v": "2006"
- },
- {
- "n": "2005",
- "v": "2005"
- },
- {
- "n": "2004",
- "v": "2004"
- },
- {
- "n": "2003",
- "v": "2003"
- },
- {
- "n": "2002",
- "v": "2002"
- },
- {
- "n": "2001",
- "v": "2001"
- },
- {
- "n": "2000",
- "v": "2000"
- },
- {
- "n": "1999",
- "v": "1999"
- },
- {
- "n": "1998",
- "v": "1998"
- },
- {
- "n": "1997",
- "v": "1997"
- },
- {
- "n": "1996",
- "v": "1996"
- },
- {
- "n": "1995",
- "v": "1995"
- },
- {
- "n": "1994",
- "v": "1994"
- },
- {
- "n": "1993",
- "v": "1993"
- },
- {
- "n": "1992",
- "v": "1992"
- },
- {
- "n": "1991",
- "v": "1991"
- },
- {
- "n": "1990",
- "v": "1990"
- },
- {
- "n": "1989",
- "v": "1989"
- },
- {
- "n": "1988",
- "v": "1988"
- },
- {
- "n": "1987",
- "v": "1987"
- },
- {
- "n": "1986",
- "v": "1986"
- },
- {
- "n": "1985",
- "v": "1985"
- },
- {
- "n": "1984",
- "v": "1984"
- },
- {
- "n": "1983",
- "v": "1983"
- },
- {
- "n": "1982",
- "v": "1982"
- },
- {
- "n": "1981",
- "v": "1981"
- },
- {
- "n": "1980",
- "v": "1980"
- },
- {
- "n": "1979",
- "v": "1979"
- },
- {
- "n": "1978",
- "v": "1978"
- },
- {
- "n": "1977",
- "v": "1977"
- },
- {
- "n": "1976",
- "v": "1976"
- },
- {
- "n": "1975",
- "v": "1975"
- },
- {
- "n": "1974",
- "v": "1974"
- },
- {
- "n": "1973",
- "v": "1973"
- },
- {
- "n": "1972",
- "v": "1972"
- },
- {
- "n": "1971",
- "v": "1971"
- },
- {
- "n": "1970",
- "v": "1970"
- },
- {
- "n": "1969",
- "v": "1969"
- },
- {
- "n": "1968",
- "v": "1968"
- },
- {
- "n": "1967",
- "v": "1967"
- },
- {
- "n": "1966",
- "v": "1966"
- },
- {
- "n": "1965",
- "v": "1965"
- },
- {
- "n": "1964",
- "v": "1964"
- },
- {
- "n": "1963",
- "v": "1963"
- },
- {
- "n": "1962",
- "v": "1962"
- },
- {
- "n": "1961",
- "v": "1961"
- },
- {
- "n": "1960",
- "v": "1960"
- },
- {
- "n": "1959",
- "v": "1959"
- },
- {
- "n": "1958",
- "v": "1958"
- }
+ "key":"time",
+ "name":"時間",
+ "value":[
+ {"n":"時間全選","v":""},
+ {"n":"2024","v":"2024"},
+ {"n":"2023","v":"2023"},
+ {"n":"2022","v":"2022"},
+ {"n":"2021","v":"2021"},
+ {"n":"2020","v":"2020"},
+ {"n":"2019","v":"2019"},
+ {"n":"2018","v":"2018"},
+ {"n":"2017","v":"2017"},
+ {"n":"2016","v":"2016"},
+ {"n":"2015","v":"2015"},
+ {"n":"2014","v":"2014"},
+ {"n":"2013","v":"2013"},
+ {"n":"2012","v":"2012"},
+ {"n":"2011","v":"2011"},
+ {"n":"2010","v":"2010"},
+ {"n":"2009","v":"2009"},
+ {"n":"2008","v":"2008"},
+ {"n":"2007","v":"2007"},
+ {"n":"2006","v":"2006"},
+ {"n":"2005","v":"2005"},
+ {"n":"2004","v":"2004"},
+ {"n":"2003","v":"2003"},
+ {"n":"2002","v":"2002"},
+ {"n":"2001","v":"2001"},
+ {"n":"2000","v":"2000"},
+ {"n":"1999","v":"1999"},
+ {"n":"1998","v":"1998"},
+ {"n":"1997","v":"1997"},
+ {"n":"1996","v":"1996"},
+ {"n":"1995","v":"1995"},
+ {"n":"1994","v":"1994"},
+ {"n":"1993","v":"1993"},
+ {"n":"1992","v":"1992"},
+ {"n":"1991","v":"1991"},
+ {"n":"1990","v":"1990"},
+ {"n":"1989","v":"1989"},
+ {"n":"1988","v":"1988"},
+ {"n":"1987","v":"1987"},
+ {"n":"1986","v":"1986"},
+ {"n":"1985","v":"1985"},
+ {"n":"1984","v":"1984"},
+ {"n":"1983","v":"1983"},
+ {"n":"1982","v":"1982"},
+ {"n":"1981","v":"1981"},
+ {"n":"1980","v":"1980"},
+ {"n":"1979","v":"1979"},
+ {"n":"1978","v":"1978"},
+ {"n":"1977","v":"1977"},
+ {"n":"1976","v":"1976"},
+ {"n":"1975","v":"1975"},
+ {"n":"1974","v":"1974"},
+ {"n":"1973","v":"1973"},
+ {"n":"1972","v":"1972"},
+ {"n":"1971","v":"1971"},
+ {"n":"1970","v":"1970"},
+ {"n":"1969","v":"1969"},
+ {"n":"1968","v":"1968"},
+ {"n":"1967","v":"1967"},
+ {"n":"1966","v":"1966"},
+ {"n":"1965","v":"1965"},
+ {"n":"1964","v":"1964"},
+ {"n":"1963","v":"1963"},
+ {"n":"1962","v":"1962"},
+ {"n":"1961","v":"1961"},
+ {"n":"1960","v":"1960"},
+ {"n":"1959","v":"1959"},
+ {"n":"1958","v":"1958"}
]
},
{
- "key": "tid",
- "name": "中文",
- "value": [
- {
- "n": "默认",
- "v": "Variety show"
- },
- {
- "n": "大陆",
- "v": "大陆 综艺"
- },
- {
- "n": "芒果",
- "v": "芒果 综艺"
- },
- {
- "n": "腾讯",
- "v": "腾讯 综艺"
- },
- {
- "n": "爱奇艺",
- "v": "爱奇艺 综艺"
- },
- {
- "n": "优酷",
- "v": "优酷 综艺"
- },
- {
- "n": "港台",
- "v": "港台 综艺"
- },
- {
- "n": "美国",
- "v": "美国 综艺"
- },
- {
- "n": "Netflix",
- "v": "Netflix 综艺"
- },
- {
- "n": "韩国",
- "v": "CRAVITY on Variety Shows 韩国 综艺"
- },
- {
- "n": "日本",
- "v": "日本 综艺"
- },
- {
- "n": "英国",
- "v": "英国 综艺"
- }
+ "key":"tid",
+ "name":"中文",
+ "value":[
+ {"n":"地區🎶排序","v":"歷史記錄片 地球記錄片 宇宙記錄片 海洋記錄片 戰爭記錄片 大自然生存記錄片"},
+ {"n":"默认","v":"documentary"},
+ {"n":"CCTV纪录片","v":"CCTV 纪录片"},
+ {"n":"BBC纪录片","v":"BBC 纪录片"},
+ {"n":"国家地理","v":"国家地理 纪录片"},
+ {"n":"Netflix纪录片","v":"netflix 纪录片"},
+ {"n":"BBC","v":"BBC documentary"},
+ {"n":"National Geographic","v":"National Geographic documentary"},
+ {"n":"Netflix","v":"netflix documentary"},
+ {"n":"历史","v":"历史 纪录片"},
+ {"n":"野性","v":"野性 纪录片"},
+ {"n":"地球","v":"地球 纪录片"},
+ {"n":"宇宙","v":"宇宙 纪录片"},
+ {"n":"海洋","v":"海洋 纪录片"},
+ {"n":"人文","v":"人文 纪录片"},
+ {"n":"战争","v":"战争 纪录片"}
]
},
{
- "key": "tid",
- "name": "English",
- "value": [
- {
- "n": "Variety",
- "v": "variety"
- },
- {
- "n": "Netflix variety",
- "v": "netflix variety"
- },
- {
- "n": "Korea",
- "v": "korea variety"
- },
- {
- "n": "Japan",
- "v": "japan variety"
- },
- {
- "n": "UK",
- "v": "uk variety"
- }
- ]
- },
- {
- "key": "tid",
- "name": "小品",
- "value": [
- {
- "n": "春晚小品",
- "v": "春晚小品"
- },
- {
- "n": "开心麻花",
- "v": "开心麻花"
- },
- {
- "n": "屌丝男士",
- "v": "屌丝男士"
- },
- {
- "n": "喜剧综艺",
- "v": "喜剧综艺"
- },
- {
- "n": "单口",
- "v": "单口 相声"
- },
- {
- "n": "群口",
- "v": "群口 相声"
- },
- {
- "n": "德云社",
- "v": "德云社"
- },
- {
- "n": "青曲社",
- "v": "青曲社"
- },
- {
- "n": "郭德纲",
- "v": "郭德纲"
- },
- {
- "n": "岳云鹏",
- "v": "岳云鹏"
- },
- {
- "n": "曹云金",
- "v": "曹云金"
- },
- {
- "n": "评书",
- "v": "评书"
- },
- {
- "n": "小曲",
- "v": "小曲"
- },
- {
- "n": "赵本山",
- "v": "赵本山"
- },
- {
- "n": "陈佩斯",
- "v": "陈佩斯"
- },
- {
- "n": "冯巩",
- "v": "冯巩"
- },
- {
- "n": "宋小宝",
- "v": "宋小宝"
- },
- {
- "n": "赵丽蓉",
- "v": "赵丽蓉"
- },
- {
- "n": "潘长江",
- "v": "潘长江"
- },
- {
- "n": "郭冬临",
- "v": "郭冬临"
- },
- {
- "n": "严顺开",
- "v": "严顺开"
- },
- {
- "n": "文松",
- "v": "文松"
- }
- ]
- },
- {
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"English",
+ "value":[
+ {"n":"History","v":"Full history documentary"},
+ {"n":"WILD","v":"Full wild documentary"},
+ {"n":"Earch","v":"Full earth documentary"},
+ {"n":"Universe","v":"Full universe documentary"},
+ {"n":"Oceans","v":"Full oceans documentary"},
+ {"n":"Humanism","v":"Full humanism documentary"},
+ {"n":"Wars","v":"Full war documentary"}
]
}
],
- "紀錄": [
+ "LIST:华语音乐,华语MV,点击率最高":[
{
- "key": "time",
- "name": "時間",
- "value": [
- {
- "n": "時間全選",
- "v": ""
- },
- {
- "n": "2025",
- "v": "2025"
- },
- {
- "n": "2024",
- "v": "2024"
- },
- {
- "n": "2023",
- "v": "2023"
- },
- {
- "n": "2022",
- "v": "2022"
- },
- {
- "n": "2021",
- "v": "2021"
- },
- {
- "n": "2020",
- "v": "2020"
- },
- {
- "n": "2019",
- "v": "2019"
- },
- {
- "n": "2018",
- "v": "2018"
- },
- {
- "n": "2017",
- "v": "2017"
- },
- {
- "n": "2016",
- "v": "2016"
- },
- {
- "n": "2015",
- "v": "2015"
- },
- {
- "n": "2014",
- "v": "2014"
- },
- {
- "n": "2013",
- "v": "2013"
- },
- {
- "n": "2012",
- "v": "2012"
- },
- {
- "n": "2011",
- "v": "2011"
- },
- {
- "n": "2010",
- "v": "2010"
- },
- {
- "n": "2009",
- "v": "2009"
- },
- {
- "n": "2008",
- "v": "2008"
- },
- {
- "n": "2007",
- "v": "2007"
- },
- {
- "n": "2006",
- "v": "2006"
- },
- {
- "n": "2005",
- "v": "2005"
- },
- {
- "n": "2004",
- "v": "2004"
- },
- {
- "n": "2003",
- "v": "2003"
- },
- {
- "n": "2002",
- "v": "2002"
- },
- {
- "n": "2001",
- "v": "2001"
- },
- {
- "n": "2000",
- "v": "2000"
- },
- {
- "n": "1999",
- "v": "1999"
- },
- {
- "n": "1998",
- "v": "1998"
- },
- {
- "n": "1997",
- "v": "1997"
- },
- {
- "n": "1996",
- "v": "1996"
- },
- {
- "n": "1995",
- "v": "1995"
- },
- {
- "n": "1994",
- "v": "1994"
- },
- {
- "n": "1993",
- "v": "1993"
- },
- {
- "n": "1992",
- "v": "1992"
- },
- {
- "n": "1991",
- "v": "1991"
- },
- {
- "n": "1990",
- "v": "1990"
- },
- {
- "n": "1989",
- "v": "1989"
- },
- {
- "n": "1988",
- "v": "1988"
- },
- {
- "n": "1987",
- "v": "1987"
- },
- {
- "n": "1986",
- "v": "1986"
- },
- {
- "n": "1985",
- "v": "1985"
- },
- {
- "n": "1984",
- "v": "1984"
- },
- {
- "n": "1983",
- "v": "1983"
- },
- {
- "n": "1982",
- "v": "1982"
- },
- {
- "n": "1981",
- "v": "1981"
- },
- {
- "n": "1980",
- "v": "1980"
- },
- {
- "n": "1979",
- "v": "1979"
- },
- {
- "n": "1978",
- "v": "1978"
- },
- {
- "n": "1977",
- "v": "1977"
- },
- {
- "n": "1976",
- "v": "1976"
- },
- {
- "n": "1975",
- "v": "1975"
- },
- {
- "n": "1974",
- "v": "1974"
- },
- {
- "n": "1973",
- "v": "1973"
- },
- {
- "n": "1972",
- "v": "1972"
- },
- {
- "n": "1971",
- "v": "1971"
- },
- {
- "n": "1970",
- "v": "1970"
- },
- {
- "n": "1969",
- "v": "1969"
- },
- {
- "n": "1968",
- "v": "1968"
- },
- {
- "n": "1967",
- "v": "1967"
- },
- {
- "n": "1966",
- "v": "1966"
- },
- {
- "n": "1965",
- "v": "1965"
- },
- {
- "n": "1964",
- "v": "1964"
- },
- {
- "n": "1963",
- "v": "1963"
- },
- {
- "n": "1962",
- "v": "1962"
- },
- {
- "n": "1961",
- "v": "1961"
- },
- {
- "n": "1960",
- "v": "1960"
- },
- {
- "n": "1959",
- "v": "1959"
- },
- {
- "n": "1958",
- "v": "1958"
- }
+ "key":"time",
+ "name":"時間",
+ "value":[
+ {"n":"時間全選","v":""},
+ {"n":"2024","v":"2024"},
+ {"n":"2023","v":"2023"},
+ {"n":"2022","v":"2022"},
+ {"n":"2021","v":"2021"},
+ {"n":"2020","v":"2020"},
+ {"n":"2019","v":"2019"},
+ {"n":"2018","v":"2018"},
+ {"n":"2017","v":"2017"},
+ {"n":"2016","v":"2016"},
+ {"n":"2015","v":"2015"},
+ {"n":"2014","v":"2014"},
+ {"n":"2013","v":"2013"},
+ {"n":"2012","v":"2012"},
+ {"n":"2011","v":"2011"},
+ {"n":"2010","v":"2010"},
+ {"n":"2009","v":"2009"},
+ {"n":"2008","v":"2008"},
+ {"n":"2007","v":"2007"},
+ {"n":"2006","v":"2006"},
+ {"n":"2005","v":"2005"},
+ {"n":"2004","v":"2004"},
+ {"n":"2003","v":"2003"},
+ {"n":"2002","v":"2002"},
+ {"n":"2001","v":"2001"},
+ {"n":"2000","v":"2000"},
+ {"n":"1999","v":"1999"},
+ {"n":"1998","v":"1998"},
+ {"n":"1997","v":"1997"},
+ {"n":"1996","v":"1996"},
+ {"n":"1995","v":"1995"},
+ {"n":"1994","v":"1994"},
+ {"n":"1993","v":"1993"},
+ {"n":"1992","v":"1992"},
+ {"n":"1991","v":"1991"},
+ {"n":"1990","v":"1990"},
+ {"n":"1989","v":"1989"},
+ {"n":"1988","v":"1988"},
+ {"n":"1987","v":"1987"},
+ {"n":"1986","v":"1986"},
+ {"n":"1985","v":"1985"},
+ {"n":"1984","v":"1984"},
+ {"n":"1983","v":"1983"},
+ {"n":"1982","v":"1982"},
+ {"n":"1981","v":"1981"},
+ {"n":"1980","v":"1980"},
+ {"n":"1979","v":"1979"},
+ {"n":"1978","v":"1978"},
+ {"n":"1977","v":"1977"},
+ {"n":"1976","v":"1976"},
+ {"n":"1975","v":"1975"},
+ {"n":"1974","v":"1974"},
+ {"n":"1973","v":"1973"},
+ {"n":"1972","v":"1972"},
+ {"n":"1971","v":"1971"},
+ {"n":"1970","v":"1970"},
+ {"n":"1969","v":"1969"},
+ {"n":"1968","v":"1968"},
+ {"n":"1967","v":"1967"},
+ {"n":"1966","v":"1966"},
+ {"n":"1965","v":"1965"},
+ {"n":"1964","v":"1964"},
+ {"n":"1963","v":"1963"},
+ {"n":"1962","v":"1962"},
+ {"n":"1961","v":"1961"},
+ {"n":"1960","v":"1960"},
+ {"n":"1959","v":"1959"},
+ {"n":"1958","v":"1958"}
]
},
{
- "key": "tid",
- "name": "中文",
- "value": [
- {
- "n": "地區🎶排序",
- "v": "歷史記錄片 地球記錄片 宇宙記錄片 海洋記錄片 戰爭記錄片 大自然生存記錄片"
- },
- {
- "n": "默认",
- "v": "PL documentary"
- },
- {
- "n": "CCTV 纪录片",
- "v": "PL CCTV 纪录片"
- },
- {
- "n": "BBC 纪录片",
- "v": "PL BBC 纪录片"
- },
- {
- "n": "国家地理",
- "v": "PL 国家地理 纪录片"
- },
- {
- "n": "Netflix纪录片",
- "v": "PL netflix 纪录片"
- },
- {
- "n": "BBC",
- "v": "PL BBC documentary"
- },
- {
- "n": "National Geographic",
- "v": "Pl National Geographic documentary"
- },
- {
- "n": "Netflix",
- "v": "PL netflix documentary"
- },
- {
- "n": "历史",
- "v": "PL 历史 纪录片"
- },
- {
- "n": "野性",
- "v": "PL 野性 纪录片"
- },
- {
- "n": "地球",
- "v": "PL 地球 纪录片"
- },
- {
- "n": "宇宙",
- "v": "PL 宇宙 纪录片"
- },
- {
- "n": "海洋",
- "v": "PL 海洋 纪录片"
- },
- {
- "n": "人文",
- "v": "PL 人文 纪录片"
- },
- {
- "n": "战争",
- "v": "PL 战争 纪录片"
- }
+ "key":"tid",
+ "name":"地區",
+ "value":[
+ {"n":"華語音樂","v":"華語音樂"},
+ {"n":"華語MV","v":"華語MV"},
+ {"n":"环球视听","v":"环球视听1980 @RippleOfficialEvent"},
+ {"n":"YouTube 點閱率最高","v":"YouTube 點閱率最高觀看次數最多華語歌曲"},
+ {"n":"海外抖音","v":"TikTok 翻唱 抖音 音樂"},
+ {"n":"粵語","v":"粵語 音樂"},
+ {"n":"國語","v":"國語 音樂"},
+ {"n":"大陆","v":"大陆 音乐"},
+ {"n":"香港","v":"香港 音乐"},
+ {"n":"台湾","v":"台湾 音乐"},
+ {"n":"新加坡","v":"新加坡 音乐"},
+ {"n":"馬來西亞","v":"馬來西亞 音乐"},
+ {"n":"泰國","v":"泰國 音乐"},
+ {"n":"越南","v":"越南 音乐"},
+ {"n":"印度","v":"印度 音乐"},
+ {"n":"韩国","v":"韩国 音乐"},
+ {"n":"日本","v":"日本 音乐"},
+ {"n":"欧美","v":"欧美 音乐"}
]
},
{
- "key": "tid",
- "name": "English",
- "value": [
- {
- "n": "History",
- "v": "PL Full history documentary"
- },
- {
- "n": "WILD",
- "v": "PL Full wild documentary"
- },
- {
- "n": "Earch",
- "v": "PL Full earth documentary"
- },
- {
- "n": "Universe",
- "v": "PL Full universe documentary"
- },
- {
- "n": "Oceans",
- "v": "PL Full oceans documentary"
- },
- {
- "n": "Humanism",
- "v": "PL Full humanism documentary"
- },
- {
- "n": "Wars",
- "v": "PL Full war documentary"
- }
+ "key":"tid",
+ "name":"愛好",
+ "value":[
+ {"n":"舞曲","v":"慢搖 夜店 低音 女聲 "},
+ {"n":"80-90","v":"80 90 音樂"},
+ {"n":"人聲","v":"人聲 音樂"},
+ {"n":"A8製造","v":"A8製造 工體音樂"},
+ {"n":"硬歌","v":"深水炸彈 音樂"},
+ {"n":"失傳已久","v":"嗨音雷虎 失傳 嗨音會所 音樂"},
+ {"n":"重低音DJ","v":"3D 8D 慢搖 重低音 音樂"},
+ {"n":"車載舞曲","v":"車載慢搖DJ歌曲串燒 深水炸彈DJ歌曲串燒 越南鼓DJ歌曲串燒 音樂"},
+ {"n":"超級女聲","v":"超級女聲"},
+ {"n":"tseries","v":"@tseries"}
]
},
{
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"歌手",
+ "value":[
+ {"n":"邁克爾傑克遜","v":"邁克爾傑克遜 演唱會,巡演 音樂"},
+ {"n":"張瑋伽","v":"張瑋伽 演唱會 巡演 音樂"},
+ {"n":"孫露","v":"孫露 演唱會 巡演 音樂"},
+ {"n":"鳳凰傳奇","v":"鳳凰傳奇 演 巡演 音樂"},
+ {"n":"龍梅子","v":"龍梅子 演唱會 巡演 音樂"},
+ {"n":"刀郎","v":"刀郎 演唱會 巡演 音樂"},
+ {"n":"S.H.E","v":"S.H.E 演唱會 巡演 音樂"},
+ {"n":"慕容曉曉","v":"慕容曉曉 演唱會 巡演 音樂"},
+ {"n":"東方紅豔","v":"東方紅豔 演唱會 巡演 音樂"},
+ {"n":"孟庭葦","v":"孟庭葦 演唱會 巡演 音樂"},
+ {"n":"斯琴高麗","v":"斯琴高麗 演唱會 巡演 音樂"},
+ {"n":"程響","v":"程響 演唱會 巡演 音樂"},
+ {"n":"蔣雪兒","v":"蔣雪兒 演唱會 巡演 音樂"}
]
}
],
- "音樂": [
+ "體育":[
{
- "key": "time",
- "name": "時間",
- "value": [
- {
- "n": "時間全選",
- "v": ""
- },
- {
- "n": "2025",
- "v": "2025"
- },
- {
- "n": "2024",
- "v": "2024"
- },
- {
- "n": "2023",
- "v": "2023"
- },
- {
- "n": "2022",
- "v": "2022"
- },
- {
- "n": "2021",
- "v": "2021"
- },
- {
- "n": "2020",
- "v": "2020"
- },
- {
- "n": "2019",
- "v": "2019"
- },
- {
- "n": "2018",
- "v": "2018"
- },
- {
- "n": "2017",
- "v": "2017"
- },
- {
- "n": "2016",
- "v": "2016"
- },
- {
- "n": "2015",
- "v": "2015"
- },
- {
- "n": "2014",
- "v": "2014"
- },
- {
- "n": "2013",
- "v": "2013"
- },
- {
- "n": "2012",
- "v": "2012"
- },
- {
- "n": "2011",
- "v": "2011"
- },
- {
- "n": "2010",
- "v": "2010"
- },
- {
- "n": "2009",
- "v": "2009"
- },
- {
- "n": "2008",
- "v": "2008"
- },
- {
- "n": "2007",
- "v": "2007"
- },
- {
- "n": "2006",
- "v": "2006"
- },
- {
- "n": "2005",
- "v": "2005"
- },
- {
- "n": "2004",
- "v": "2004"
- },
- {
- "n": "2003",
- "v": "2003"
- },
- {
- "n": "2002",
- "v": "2002"
- },
- {
- "n": "2001",
- "v": "2001"
- },
- {
- "n": "2000",
- "v": "2000"
- },
- {
- "n": "1999",
- "v": "1999"
- },
- {
- "n": "1998",
- "v": "1998"
- },
- {
- "n": "1997",
- "v": "1997"
- },
- {
- "n": "1996",
- "v": "1996"
- },
- {
- "n": "1995",
- "v": "1995"
- },
- {
- "n": "1994",
- "v": "1994"
- },
- {
- "n": "1993",
- "v": "1993"
- },
- {
- "n": "1992",
- "v": "1992"
- },
- {
- "n": "1991",
- "v": "1991"
- },
- {
- "n": "1990",
- "v": "1990"
- },
- {
- "n": "1989",
- "v": "1989"
- },
- {
- "n": "1988",
- "v": "1988"
- },
- {
- "n": "1987",
- "v": "1987"
- },
- {
- "n": "1986",
- "v": "1986"
- },
- {
- "n": "1985",
- "v": "1985"
- },
- {
- "n": "1984",
- "v": "1984"
- },
- {
- "n": "1983",
- "v": "1983"
- },
- {
- "n": "1982",
- "v": "1982"
- },
- {
- "n": "1981",
- "v": "1981"
- },
- {
- "n": "1980",
- "v": "1980"
- },
- {
- "n": "1979",
- "v": "1979"
- },
- {
- "n": "1978",
- "v": "1978"
- },
- {
- "n": "1977",
- "v": "1977"
- },
- {
- "n": "1976",
- "v": "1976"
- },
- {
- "n": "1975",
- "v": "1975"
- },
- {
- "n": "1974",
- "v": "1974"
- },
- {
- "n": "1973",
- "v": "1973"
- },
- {
- "n": "1972",
- "v": "1972"
- },
- {
- "n": "1971",
- "v": "1971"
- },
- {
- "n": "1970",
- "v": "1970"
- },
- {
- "n": "1969",
- "v": "1969"
- },
- {
- "n": "1968",
- "v": "1968"
- },
- {
- "n": "1967",
- "v": "1967"
- },
- {
- "n": "1966",
- "v": "1966"
- },
- {
- "n": "1965",
- "v": "1965"
- },
- {
- "n": "1964",
- "v": "1964"
- },
- {
- "n": "1963",
- "v": "1963"
- },
- {
- "n": "1962",
- "v": "1962"
- },
- {
- "n": "1961",
- "v": "1961"
- },
- {
- "n": "1960",
- "v": "1960"
- },
- {
- "n": "1959",
- "v": "1959"
- },
- {
- "n": "1958",
- "v": "1958"
- }
+ "key":"time",
+ "name":"時間",
+ "value":[
+ {"n":"時間全選","v":""},
+ {"n":"2024","v":"2024"},
+ {"n":"2023","v":"2023"},
+ {"n":"2022","v":"2022"},
+ {"n":"2021","v":"2021"},
+ {"n":"2020","v":"2020"},
+ {"n":"2019","v":"2019"},
+ {"n":"2018","v":"2018"},
+ {"n":"2017","v":"2017"},
+ {"n":"2016","v":"2016"},
+ {"n":"2015","v":"2015"},
+ {"n":"2014","v":"2014"},
+ {"n":"2013","v":"2013"},
+ {"n":"2012","v":"2012"},
+ {"n":"2011","v":"2011"},
+ {"n":"2010","v":"2010"},
+ {"n":"2009","v":"2009"},
+ {"n":"2008","v":"2008"},
+ {"n":"2007","v":"2007"},
+ {"n":"2006","v":"2006"},
+ {"n":"2005","v":"2005"},
+ {"n":"2004","v":"2004"},
+ {"n":"2003","v":"2003"},
+ {"n":"2002","v":"2002"},
+ {"n":"2001","v":"2001"},
+ {"n":"2000","v":"2000"},
+ {"n":"1999","v":"1999"},
+ {"n":"1998","v":"1998"},
+ {"n":"1997","v":"1997"},
+ {"n":"1996","v":"1996"},
+ {"n":"1995","v":"1995"},
+ {"n":"1994","v":"1994"},
+ {"n":"1993","v":"1993"},
+ {"n":"1992","v":"1992"},
+ {"n":"1991","v":"1991"},
+ {"n":"1990","v":"1990"},
+ {"n":"1989","v":"1989"},
+ {"n":"1988","v":"1988"},
+ {"n":"1987","v":"1987"},
+ {"n":"1986","v":"1986"},
+ {"n":"1985","v":"1985"},
+ {"n":"1984","v":"1984"},
+ {"n":"1983","v":"1983"},
+ {"n":"1982","v":"1982"},
+ {"n":"1981","v":"1981"},
+ {"n":"1980","v":"1980"},
+ {"n":"1979","v":"1979"},
+ {"n":"1978","v":"1978"},
+ {"n":"1977","v":"1977"},
+ {"n":"1976","v":"1976"},
+ {"n":"1975","v":"1975"},
+ {"n":"1974","v":"1974"},
+ {"n":"1973","v":"1973"},
+ {"n":"1972","v":"1972"},
+ {"n":"1971","v":"1971"},
+ {"n":"1970","v":"1970"},
+ {"n":"1969","v":"1969"},
+ {"n":"1968","v":"1968"},
+ {"n":"1967","v":"1967"},
+ {"n":"1966","v":"1966"},
+ {"n":"1965","v":"1965"},
+ {"n":"1964","v":"1964"},
+ {"n":"1963","v":"1963"},
+ {"n":"1962","v":"1962"},
+ {"n":"1961","v":"1961"},
+ {"n":"1960","v":"1960"},
+ {"n":"1959","v":"1959"},
+ {"n":"1958","v":"1958"}
]
},
{
- "key": "tid",
- "name": "地區",
- "value": [
- {
- "n": "華語音樂",
- "v": "PL 華語音樂"
- },
- {
- "n": "華語MV",
- "v": "PL 華語MV"
- },
- {
- "n": "环球视听",
- "v": "PL 环球视听"
- },
- {
- "n": "YouTube 點閱率最高",
- "v": "點閱率最高華語歌曲"
- },
- {
- "n": "海外抖音",
- "v": "PL TikTok 抖音 音樂"
- },
- {
- "n": "粵語",
- "v": "PL 粵語 音樂"
- },
- {
- "n": "國語",
- "v": "PL 國語 音樂"
- },
- {
- "n": "大陆",
- "v": "PL 大陆 音乐"
- },
- {
- "n": "香港",
- "v": "PL 香港 音乐"
- },
- {
- "n": "台湾",
- "v": "PL 台湾 音乐"
- },
- {
- "n": "新加坡",
- "v": "PL 新加坡 音乐"
- },
- {
- "n": "馬來西亞",
- "v": "PL 馬來西亞 音乐"
- },
- {
- "n": "泰國",
- "v": "PL 泰國 音乐"
- },
- {
- "n": "越南",
- "v": "PL 越南 音乐"
- },
- {
- "n": "印度",
- "v": "PL 印度 音乐"
- },
- {
- "n": "韩国",
- "v": "PL 韩国 音乐"
- },
- {
- "n": "日本",
- "v": "PL 日本 音乐"
- },
- {
- "n": "欧美",
- "v": "PL 欧美 音乐"
- },
- {
- "n": "时光音乐会 MV",
- "v": "时光音乐会MV"
- },
- {
- "n": "中国好声音 MV",
- "v": "中国好声音MV"
- },
- {
- "n": "滚石 MV",
- "v": "滚石MV"
- },
- {
- "n": "古风 MV",
- "v": "古风MV"
- },
- {
- "n": "韩国女团 MV",
- "v": "韩国女团MV"
- },
- {
- "n": "欧美",
- "v": "欧美 音乐"
- },
- {
- "n": "BillBoard",
- "v": "BillBoard"
- }
+ "key":"tid",
+ "name":"中文",
+ "value":[
+ {"n":"默认","v":""},
+ {"n":"體育直播","v":"体育直播"},
+ {"n":"體育赛事","v":"体育赛事"},
+ {"n":"足球比賽","v":"足球賽事"},
+ {"n":"篮球比賽","v":"篮球賽事"},
+ {"n":"极限運動","v":"极限運動"},
+ {"n":"室内運動","v":"室内运动"},
+ {"n":"户外運動","v":"户外运动"},
+ {"n":"健身運動","v":"健身運動"}
]
},
{
- "key": "tid",
- "name": "愛好",
- "value": [
- {
- "n": "合辑",
- "v": "合辑"
- },
- {
- "n": "超級女聲",
- "v": "超級女聲"
- },
- {
- "n": "whitneyhouston",
- "v": "@whitneyhoustonmusic"
- },
- {
- "n": "玛丽.凯丽",
- "v": "@MariahCarey"
- },
- {
- "n": "LadyGaga",
- "v": "@LadyGaga"
- },
- {
- "n": "G.E.M邓紫棋",
- "v": "@gem0816"
- },
- {
- "n": "麦当娜",
- "v": "@madonna"
- },
- {
- "n": "Taylor Swift",
- "v": "@TaylorSwift"
- },
- {
- "n": "舞曲",
- "v": "蹦迪現場 慢搖 夜店 低音 女聲 "
- },
- {
- "n": "80-90",
- "v": "80 90 音樂"
- },
- {
- "n": "人聲",
- "v": "人聲 音樂"
- },
- {
- "n": "硬歌",
- "v": "深水炸弹"
- },
- {
- "n": "A8製造",
- "v": "A8製造 工體音樂"
- },
- {
- "n": "中国MTV",
- "v": "@ChineseMusicTV"
- },
- {
- "n": "滚石",
- "v": "@RockRecordsTaipei"
- },
- {
- "n": "失傳已久",
- "v": "嗨音雷虎 失傳 嗨音會所 音樂"
- },
- {
- "n": "重低音 DJ",
- "v": "重低音 DJ"
- },
- {
- "n": "車載舞曲",
- "v": "車載慢搖"
- },
- {
- "n": "超級女聲",
- "v": "超級女聲"
- },
- {
- "n": "tseries",
- "v": "@tseries"
- },
- {
- "n": "戲曲",
- "v": "秦腔 京剧 越剧 黄梅戏 评剧 豫剧 昆曲 高腔 梆子腔 河北梆子 晋剧 蒲剧 雁剧 上党梆子 武安平调 二人台 吉剧 龙江剧 越调 河南曲剧 山东梆子 淮剧 滑稽戏 婺剧 绍剧 徽剧 闽剧 莆仙戏 梨园戏 高甲戏 赣剧 采茶戏 汉剧 湘剧 祁剧 湖南花鼓戏 粤剧 潮剧 桂剧 彩调 壮剧 川剧 黔剧 滇剧 傣剧 藏剧 皮影戏"
- }
+ "key":"tid",
+ "name":"English",
+ "value":[
+ {"n":"Live","v":"live sports"},
+ {"n":"Games","v":"live games"},
+ {"n":"Soccer","v":"live soccer"},
+ {"n":"NBA","v":"NBA"},
+ {"n":"Extreme","v":"extreme sports"},
+ {"n":"InDoor","v":"indoor sports"},
+ {"n":"OutDoor","v":"outdoor sports"},
+ {"n":"Workout","v":"workout"}
]
},
{
- "key": "tid",
- "name": "歌手",
- "value": [
- {
- "n": "邓丽君",
- "v": "邓丽君 音乐"
- },
- {
- "n": "林忆莲",
- "v": "林忆莲 音樂"
- },
- {
- "n": "陈慧娴",
- "v": "陈慧娴音樂"
- },
- {
- "n": "韩宝仪",
- "v": "韩宝仪 音樂"
- },
- {
- "n": "张学友",
- "v": "张学友 音樂"
- },
- {
- "n": "李宗盛",
- "v": "李宗盛 音樂"
- },
- {
- "n": "罗大佑",
- "v": "罗大佑 音樂"
- },
- {
- "n": "周杰伦",
- "v": "周杰伦 音樂"
- },
- {
- "n": "张玮伽",
- "v": "张玮伽 音樂"
- },
- {
- "n": "张惠妹",
- "v": "张惠妹 音樂"
- },
- {
- "n": "斯琴高麗",
- "v": "斯琴高麗 音樂"
- },
- {
- "n": "林俊杰",
- "v": "@jjlin • 音乐"
- },
- {
- "n": "周深",
- "v": "周深 音樂"
- },
- {
- "n": "張瑋伽",
- "v": "張瑋伽 演唱會 巡演 音樂"
- },
- {
- "n": "孫露",
- "v": "孫露 演唱會 巡演 音樂"
- },
- {
- "n": "鳳凰傳奇",
- "v": "鳳凰傳奇 演 巡演 音樂"
- },
- {
- "n": "刀郎",
- "v": "刀郎 演唱會 巡演 音樂"
- },
- {
- "n": "S.H.E",
- "v": "S.H.E 演唱會 巡演 音樂"
- },
- {
- "n": "慕容曉曉",
- "v": "慕容曉曉 演唱會 巡演 音樂"
- },
- {
- "n": "東方紅豔",
- "v": "東方紅豔 演唱會 巡演 音樂"
- },
- {
- "n": "孟庭葦",
- "v": "孟庭葦 演唱會 巡演 音樂"
- },
- {
- "n": "斯琴高麗",
- "v": "斯琴高麗 演唱會 巡演 音樂"
- },
- {
- "n": "程響",
- "v": "程響 演唱會 巡演 音樂"
- },
- {
- "n": "蔣雪兒",
- "v": "蔣雪兒 演唱會 巡演 音樂"
- },
- {
- "n": "迈克尔杰克逊",
- "v": "麥可傑克森"
- }
- ]
- },
- {
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"體育",
+ "value":[
+ {"n":"女足港場","v":"女足港場 @Hong KongWomensStadium"},
+ {"n":"全國校運動會","v":"全國大專 校院運動會 全中運 女子組賽事 全國中等 學校運動會"},
+ {"n":"女中儀隊","v":"北一女中樂儀旗隊永續發展協會 北一女中家長會樂儀旗家長後援會 北一女中儀隊校友隊 台灣 学校运动会 景美女中儀隊 北一女樂儀旗隊 full樂儀隊 "},
+ {"n":"校園熱舞","v":"full 校園熱舞 開南熱無 開南大學課外活動組 女生熱舞社 南寶熱舞社 寶踐熱舞社 NTDC 熱舞社 STUST"},
+ {"n":"红星体育官方频道","v":"红星体育官方频道【高清直播】"},
+ {"n":"中國體育比賽傳奇","v":"中國體育比賽傳奇"},
+ {"n":"愛爾達體育家族","v":"愛爾達體育家族 ELTA Sports"},
+ {"n":"公視體育","v":"公視體育"},
+ {"n":"體育之光","v":"體育之光"},
+ {"n":"偶然體育賽事","v":"偶然體育賽事"}
]
}
],
- "體育": [
+ "時尚潮流":[
{
- "key": "time",
- "name": "時間",
- "value": [
- {
- "n": "時間全選",
- "v": ""
- },
- {
- "n": "2025",
- "v": "2025"
- },
- {
- "n": "2024",
- "v": "2024"
- },
- {
- "n": "2023",
- "v": "2023"
- },
- {
- "n": "2022",
- "v": "2022"
- },
- {
- "n": "2021",
- "v": "2021"
- },
- {
- "n": "2020",
- "v": "2020"
- },
- {
- "n": "2019",
- "v": "2019"
- },
- {
- "n": "2018",
- "v": "2018"
- },
- {
- "n": "2017",
- "v": "2017"
- },
- {
- "n": "2016",
- "v": "2016"
- },
- {
- "n": "2015",
- "v": "2015"
- },
- {
- "n": "2014",
- "v": "2014"
- },
- {
- "n": "2013",
- "v": "2013"
- },
- {
- "n": "2012",
- "v": "2012"
- },
- {
- "n": "2011",
- "v": "2011"
- },
- {
- "n": "2010",
- "v": "2010"
- },
- {
- "n": "2009",
- "v": "2009"
- },
- {
- "n": "2008",
- "v": "2008"
- },
- {
- "n": "2007",
- "v": "2007"
- },
- {
- "n": "2006",
- "v": "2006"
- },
- {
- "n": "2005",
- "v": "2005"
- },
- {
- "n": "2004",
- "v": "2004"
- },
- {
- "n": "2003",
- "v": "2003"
- },
- {
- "n": "2002",
- "v": "2002"
- },
- {
- "n": "2001",
- "v": "2001"
- },
- {
- "n": "2000",
- "v": "2000"
- },
- {
- "n": "1999",
- "v": "1999"
- },
- {
- "n": "1998",
- "v": "1998"
- },
- {
- "n": "1997",
- "v": "1997"
- },
- {
- "n": "1996",
- "v": "1996"
- },
- {
- "n": "1995",
- "v": "1995"
- },
- {
- "n": "1994",
- "v": "1994"
- },
- {
- "n": "1993",
- "v": "1993"
- },
- {
- "n": "1992",
- "v": "1992"
- },
- {
- "n": "1991",
- "v": "1991"
- },
- {
- "n": "1990",
- "v": "1990"
- },
- {
- "n": "1989",
- "v": "1989"
- },
- {
- "n": "1988",
- "v": "1988"
- },
- {
- "n": "1987",
- "v": "1987"
- },
- {
- "n": "1986",
- "v": "1986"
- },
- {
- "n": "1985",
- "v": "1985"
- },
- {
- "n": "1984",
- "v": "1984"
- },
- {
- "n": "1983",
- "v": "1983"
- },
- {
- "n": "1982",
- "v": "1982"
- },
- {
- "n": "1981",
- "v": "1981"
- },
- {
- "n": "1980",
- "v": "1980"
- },
- {
- "n": "1979",
- "v": "1979"
- },
- {
- "n": "1978",
- "v": "1978"
- },
- {
- "n": "1977",
- "v": "1977"
- },
- {
- "n": "1976",
- "v": "1976"
- },
- {
- "n": "1975",
- "v": "1975"
- },
- {
- "n": "1974",
- "v": "1974"
- },
- {
- "n": "1973",
- "v": "1973"
- },
- {
- "n": "1972",
- "v": "1972"
- },
- {
- "n": "1971",
- "v": "1971"
- },
- {
- "n": "1970",
- "v": "1970"
- },
- {
- "n": "1969",
- "v": "1969"
- },
- {
- "n": "1968",
- "v": "1968"
- },
- {
- "n": "1967",
- "v": "1967"
- },
- {
- "n": "1966",
- "v": "1966"
- },
- {
- "n": "1965",
- "v": "1965"
- },
- {
- "n": "1964",
- "v": "1964"
- },
- {
- "n": "1963",
- "v": "1963"
- },
- {
- "n": "1962",
- "v": "1962"
- },
- {
- "n": "1961",
- "v": "1961"
- },
- {
- "n": "1960",
- "v": "1960"
- },
- {
- "n": "1959",
- "v": "1959"
- },
- {
- "n": "1958",
- "v": "1958"
- }
+ "key":"tid",
+ "name":"時裝秀",
+ "value":[
+ {"n":"街舞","v":"脫衣舞 丁字褲 街舞 太空步 機械舞 舞 裸體舞蹈 霹靂舞 魔性舞蹈 鬼步舞 木偶舞 女性藝術舞蹈"},
+ {"n":"時尚走秀","v":"T台走秀 lingerie show"},
+ {"n":"時裝秀","v":"hdr ASM lingerieTV 東京ファッションショー 下着ショー"},
+ {"n":"潮流秀","v":"FASHION IN UHD"},
+ {"n":"時裝模特","v":"FASHION Runway"},
+ {"n":"模特","v":"比基尼 泳裝 頂級車模 空姐 寫真 Car model Stewardess Portrait"},
+ {"n":"裸体秀","v":"hdr 人體藝術 裸体秀 Nude show"},
+ {"n":"無限亂鬥","v":"hdr 廟會秀 無限HD 公廟 鋼管舞 脫衣舞 舞女 清純 寫真"}
]
},
{
- "key": "tid",
- "name": "中文",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "休育直播",
- "v": "體育直播"
- },
- {
- "n": "休育赛事",
- "v": "體育赛事"
- },
- {
- "n": "足球比赛",
- "v": "足球賽事"
- },
- {
- "n": "篮球比赛",
- "v": "篮球賽事"
- },
- {
- "n": "极限运动",
- "v": "极限運動"
- },
- {
- "n": "室内运动",
- "v": "室内運動"
- },
- {
- "n": "户外运动",
- "v": "户外運動"
- },
- {
- "n": "瑜伽健身",
- "v": "瑜珈健身"
- },
- {
- "n": "健身运动",
- "v": "健身運動"
- }
+ "key":"tid",
+ "name":"小姐姐",
+ "value":[
+ {"n":"小姐姐超清","v":"小姐姐超清"},
+ {"n":"国内小姐姐","v":"快手模特 抖音模特 国内小姐姐"},
+ {"n":"韩国小姐姐","v":"韩国小姐姐"},
+ {"n":"日本小姐姐","v":"日本小姐姐"},
+ {"n":"俄罗斯小姐姐","v":"俄罗斯小姐姐"},
+ {"n":"混血小姐姐","v":"混血小姐姐"},
+ {"n":"越南小姐姐","v":"越南小姐姐"},
+ {"n":"Al小姐姐","v":"Al美女超清"},
+ {"n":"抖音热门小姐姐","v":"抖音热门小姐姐"},
+ {"n":"快手热门美女","v":"快手热门美女"},
+ {"n":"打碟小姐姐","v":"打碟小姐姐"},
+ {"n":"冲浪小姐姐","v":"冲浪小姐姐"},
+ {"n":"蹦迪小姐姐","v":"蹦迪小姐姐"},
+ {"n":"艺校小姐姐","v":"艺校小姐姐"},
+ {"n":"环球小姐","v":"环球小姐"},
+ {"n":"泰国人妖","v":"泰国人妖"},
+ {"n":"人间胸器","v":"人间胸器"}
]
},
{
- "key": "tid",
- "name": "English",
- "value": [
- {
- "n": "Live",
- "v": "live sports"
- },
- {
- "n": "Games",
- "v": "live games"
- },
- {
- "n": "Soccer",
- "v": "live soccer"
- },
- {
- "n": "NBA",
- "v": "NBA"
- },
- {
- "n": "Extreme",
- "v": "extreme sports"
- },
- {
- "n": "InDoor",
- "v": "indoor sports"
- },
- {
- "n": "OutDoor",
- "v": "outdoor sports"
- },
- {
- "n": "Workout",
- "v": "workout"
- }
- ]
- },
- {
- "key": "tid",
- "name": "體育",
- "value": [
- {
- "n": "女足港場",
- "v": "女足港場 @Hong KongWomensStadium"
- },
- {
- "n": "全國校運動會",
- "v": "全國大專 校院運動會 全中運 女子組賽事 全國中等 學校運動會"
- },
- {
- "n": "女中儀隊",
- "v": "北一女中樂儀旗隊永續發展協會 北一女中家長會樂儀旗家長後援會 北一女中儀隊校友隊 台灣 学校运动会 景美女中儀隊 北一女樂儀旗隊 full樂儀隊 "
- },
- {
- "n": "校園熱舞",
- "v": "full 校園熱舞 開南熱無 開南大學課外活動組 女生熱舞社 南寶熱舞社 寶踐熱舞社 NTDC 熱舞社 STUST"
- },
- {
- "n": "红星体育官方频道",
- "v": "红星体育官方频道【高清直播】"
- },
- {
- "n": "中國體育比賽傳奇",
- "v": "中國體育比賽傳奇"
- },
- {
- "n": "愛爾達體育家族",
- "v": "愛爾達體育家族 ELTA Sports"
- },
- {
- "n": "公視體育",
- "v": "公視體育"
- },
- {
- "n": "體育之光",
- "v": "體育之光"
- },
- {
- "n": "偶然體育賽事",
- "v": "偶然體育賽事"
- }
- ]
- },
- {
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"English",
+ "value":[
+ {"n":"sexy Miss","v":"sexy Miss"},
+ {"n":"Hot sexy Girl","v":"Hot sexy Girl"},
+ {"n":"Korean Girl","v":"Korean sexy Girl"},
+ {"n":"Japanese Girl","v":"Japanese sexy Girl"},
+ {"n":"Russian Girl","v":"Russian sexy Girl"},
+ {"n":"Vietnamese Girl","v":"Vietnamese sexy Girl"},
+ {"n":"AI Girl","v":"AI Girl"},
+ {"n":"TikTok Hot Siste","v":"TikTok Hot sexy Girl"},
+ {"n":"Cute Girl","v":"sexy Cute Girl"},
+ {"n":"Girl Dj","v":"sexy Girl Dj"},
+ {"n":"Girl Surfer","v":"sexy Girl Surfer"},
+ {"n":"Dance Girl","v":"Dance sexy Girl"},
+ {"n":"Miss Universe","v":"Miss Universe"},
+ {"n":"Thai Shemale","v":"Thai Shemale"}
]
}
],
- "時尚": [
+ "解說":[
{
- "key": "tid",
- "name": "时装秀",
- "value": [
- {
- "n": "街舞",
- "v": "街舞"
- },
- {
- "n": "時裝秀",
- "v": "hdr ASM lingerieTV 東京ファッションショー 下着ショー"
- },
- {
- "n": "潮流秀",
- "v": "FASHION IN UHD"
- },
- {
- "n": "時尚走秀",
- "v": "時尚走秀 Fashion show"
- },
- {
- "n": "时装模特",
- "v": "FASHION Runway"
- },
- {
- "n": "模特",
- "v": "比基尼 泳裝 頂級車模 空姐 寫真 Car model Stewardess Portrait"
- },
- {
- "n": "裸体秀",
- "v": "hdr 人體藝術 裸体秀 Nude show"
- },
- {
- "n": "無限亂鬥",
- "v": "hdr 廟會秀 無限HD 公廟 鋼管舞 脫衣舞 舞女 清純 寫真"
- }
- ]
- },
- {
- "key": "tid",
- "name": "小姐姐",
- "value": [
- {
- "n": "小姐姐超清",
- "v": "小姐姐超清"
- },
- {
- "n": "国内小姐姐",
- "v": "国内小姐姐"
- },
- {
- "n": "韩国小姐姐",
- "v": "韩国小姐姐"
- },
- {
- "n": "日本小姐姐",
- "v": "日本小姐姐"
- },
- {
- "n": "俄罗斯小姐姐",
- "v": "俄罗斯小姐姐"
- },
- {
- "n": "混血小姐姐",
- "v": "混血小姐姐"
- },
- {
- "n": "越南小姐姐",
- "v": "越南小姐姐"
- },
- {
- "n": "Al小姐姐",
- "v": "Al美女超清"
- },
- {
- "n": "抖音热门小姐姐",
- "v": "抖音热门小姐姐"
- },
- {
- "n": "快手热门美女",
- "v": "快手热门美女"
- },
- {
- "n": "打碟小姐姐",
- "v": "打碟小姐姐"
- },
- {
- "n": "冲浪小姐姐",
- "v": "冲浪小姐姐"
- },
- {
- "n": "蹦迪小姐姐",
- "v": "蹦迪小姐姐"
- },
- {
- "n": "艺校小姐姐",
- "v": "艺校小姐姐"
- },
- {
- "n": "环球小姐",
- "v": "环球小姐"
- },
- {
- "n": "泰国人妖",
- "v": "泰国人妖"
- },
- {
- "n": "人间胸器",
- "v": "人间胸器"
- }
- ]
- },
- {
- "key": "tid",
- "name": "English",
- "value": [
- {
- "n": "sexy Miss",
- "v": "sexy Miss"
- },
- {
- "n": "Hot sexy Girl",
- "v": "Hot sexy Girl"
- },
- {
- "n": "Korean Girl",
- "v": "Korean sexy Girl"
- },
- {
- "n": "Japanese Girl",
- "v": "Japanese sexy Girl"
- },
- {
- "n": "Russian Girl",
- "v": "Russian sexy Girl"
- },
- {
- "n": "Vietnamese Girl",
- "v": "Vietnamese sexy Girl"
- },
- {
- "n": "AI Girl",
- "v": "AI Girl"
- },
- {
- "n": "TikTok Hot Siste",
- "v": "TikTok Hot sexy Girl"
- },
- {
- "n": "Cute Girl",
- "v": "sexy Cute Girl"
- },
- {
- "n": "Girl Dj",
- "v": "sexy Girl Dj"
- },
- {
- "n": "Girl Surfer",
- "v": "sexy Girl Surfer"
- },
- {
- "n": "Dance Girl",
- "v": "Dance sexy Girl"
- },
- {
- "n": "Miss Universe",
- "v": "Miss Universe"
- },
- {
- "n": "Thai Shemale",
- "v": "Thai Shemale"
- }
- ]
- },
- {
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"頻道主",
+ "value":[
+ {"n":"宇哥侃故事","v":"@yuge"},
+ {"n":"零度解说","v":"@lingdujieshuo"}
]
}
],
- "解說": [
+ "LIST:HDR,Girls HDR,Landscape HDR,Walk HDR":[
{
- "key": "tid",
- "name": "頻道主",
- "value": [
- {
- "n": "宇哥侃故事",
- "v": "PL 宇哥侃故事"
- },
- {
- "n": "零度解说",
- "v": "PL 零度解说"
- }
- ]
- },
- {
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"風景",
+ "value":[
+ {"n":"運動","v":"GoPro 女翼裝飛行 極限自行車運動"},
+ {"n":"風景","v":"hdr 大自然"},
+ {"n":"Links TV頻道主","v":"@linksphotograph Links TV hdr"},
+ {"n":"放鬆","v":"hdr 放鬆"},
+ {"n":"動物世界","v":"hdr Carnivorous Animals 動物世界"},
+ {"n":"深海世界","v":"hdr Invertebrate Fish 深海世界"},
+ {"n":"飛禽走獸","v":"hdr Birds of Prey Columbiform Birds Passerine Birds"},
+ {"n":"生物世界","v":"hdr Amphibians Reptiles 生物世界"}
]
}
],
- "战情室": [
+ "Full YouTube":[
{
- "key": "tid",
- "name": "栏目",
- "value": [
- {
- "n": "军情观察室",
- "v": "|PL-K7NYq6mtAuw3rO7t2rDUhI3qbS1rLMj"
- },
- {
- "n": "环球大战线",
- "v": "|PLwHjhKNud0GiqFBpW5aorjeIVO4mZAn_b"
- },
- {
- "n": "少康战情室",
- "v": "|PL64Si-sSRnvZFmksKhDl34-Rgv2NGFbK-"
- },
- {
- "n": "国际直球对决",
- "v": "|PLvHT0yeWYIuASUZjoW8OXe4e_UkgP7qDU"
- },
- {
- "n": "全球大视野",
- "v": "|PLvHT0yeWYIuDyLVv1yDiIxhtk1ZQ92_RY"
- },
- {
- "n": "前进战略高地",
- "v": "|PLvHT0yeWYIuBGUWA2KySjgKdPEUFuM8Dc"
- },
- {
- "n": "全广角",
- "v": "|PL7I7pJTFhwdoALXJ4QyPjaCIRNm2qBCpU"
- }
+ "key":"tid",
+ "name":"頻道主",
+ "value":[
+ {"n":"李子柒","v":"李子柒 Liziqi @cnliziqi"},
+ {"n":"滇西小哥","v":"滇西小哥 @dianxixiaoge"},
+ {"n":"老高與小茉","v":"老高與小茉 @laogao"},
+ {"n":"李永樂老師","v":"李永樂老師 @TchLiyongle"}
+ ]
+ },
+ {
+ "key":"tid",
+ "name":"美食頻道主",
+ "value":[
+ {"n":"美食作家王刚","v":"美食作家王刚 @chefwang"},
+ {"n":"小高姐的 Magic Ingredients","v":"小高姐的 Magic Ingredients @MagicIngredients"},
+ {"n":"小穎美食","v":"小穎美食 @XiaoYingFood"}
+ ]
+ },
+ {
+ "key":"tid",
+ "name":"野外頻道主",
+ "value":[
+ {"n":"野外求生","v":"primitivetechnology9550 @primitivetechnology9550"}
+ ]
+ },
+ {
+ "key":"tid",
+ "name":"科普頻道主",
+ "value":[
+ {"n":"科普","v":"Mr Beast@MrBeast"},
+ {"n":"航天大學","v":"Airforceproud95 @Airforceproud95"},
+ {"n":"世界大戰","v":"TheGreatWar @TheGreatWar"},
+ {"n":"MarkRober","v":"Mark Rober @MarkRober"}
+ ]
+ },
+ {
+ "key":"tid",
+ "name":"教材",
+ "value":[
+ {"n":"不良林","v":"不良林"},
+ {"n":"涌哥侃侃","v":"涌哥侃侃 @ygkkk"},
+ {"n":"悟空的日常","v":"悟空的日常"}
]
}
],
- "自媒體": [
+ "宇宙":[
{
- "key": "tid",
- "name": "频道主",
- "value": [
- {
- "n": "cctv电视剧",
- "v": "UC7Vl0YiY0rDlovqcCFN4yTA"
- },
- {
- "n": "王剑每日观察",
- "v": "PD王剑每日观察"
- },
- {
- "n": "红岸视野",
- "v": "PD红岸视野"
- },
- {
- "n": "私人局",
- "v": "PD私人局"
- },
- {
- "n": "内部看美国",
- "v": "PD内部看美国"
- },
- {
- "n": "饭圈人间观察",
- "v": "PD饭圈人间观察"
- },
- {
- "n": "孤烟暮蝉",
- "v": "PD孤烟暮蝉"
- },
- {
- "n": "老高与小茉",
- "v": "PD老高与小茉"
- },
- {
- "n": "海洋探险",
- "v": "UCJUIqG9JUcQ5saqXSYTF0gg"
- }
- ]
- }
- ],
- "HDR": [
- {
- "key": "tid",
- "name": "風景",
- "value": [
- {
- "n": "運動",
- "v": "GoPro 女翼裝飛行 極限自行車運動"
- },
- {
- "n": "風景",
- "v": "hdr 大自然"
- },
- {
- "n": "Links TV 頻道主",
- "v": "@linksphotograph Links TV hdr"
- },
- {
- "n": "放鬆",
- "v": "hdr 放鬆"
- },
- {
- "n": "動物世界",
- "v": "hdr 動物世界 Carnivorous Animals"
- },
- {
- "n": "深海世界",
- "v": "hdr 深海世界 Invertebrate Fish"
- },
- {
- "n": "飛禽走獸",
- "v": "hdr Birds of Prey Columbiform Birds Passerine Birds"
- },
- {
- "n": "生物世界",
- "v": "hdr 生物世界 Amphibians Reptiles"
- }
- ]
- }
- ],
- "Full YouTube": [
- {
- "key": "tid",
- "name": "頻道主",
- "value": [
- {
- "n": "李子柒",
- "v": "李子柒 Liziqi @cnliziqi"
- },
- {
- "n": "滇西小哥",
- "v": "滇西小哥 @dianxixiaoge"
- },
- {
- "n": "老高與小茉",
- "v": "老高與小茉 @laogao"
- },
- {
- "n": "李永樂老師",
- "v": "李永樂老師 @TchLiyongle"
- }
+ "key":"tid",
+ "name":"科普知識",
+ "value":[
+ {"n":"宇宙","v":"光年 黑洞 銀河系 空間站 太空技術"},
+ {"n":"粒子","v":"空間粒子 宇宙磁場 四維空間 元素 量子 光波 光源 靈魂"},
+ {"n":"靠蒙","v":"microorganism"}
]
},
{
- "key": "tid",
- "name": "美食頻道主",
- "value": [
- {
- "n": "美食作家王刚",
- "v": "美食作家王刚 @chefwang"
- },
- {
- "n": "小高姐的 Magic Ingredients",
- "v": "小高姐的 Magic Ingredients @MagicIngredients"
- },
- {
- "n": "小穎美食",
- "v": "小穎美食 @XiaoYingFood"
- }
- ]
- },
- {
- "key": "tid",
- "name": "野外頻道主",
- "value": [
- {
- "n": "野外求生",
- "v": "@primitivetechnology9550"
- }
- ]
- },
- {
- "key": "tid",
- "name": "科普频道主",
- "value": [
- {
- "n": "科普",
- "v": "Mr Beast@MrBeast"
- },
- {
- "n": "航天大學",
- "v": "Airforceproud95 @Airforceproud95"
- },
- {
- "n": "世界大戰",
- "v": "TheGreatWar @TheGreatWar"
- },
- {
- "n": "MarkRober",
- "v": "Mark Rober @MarkRober"
- }
- ]
- },
- {
- "key": "tid",
- "name": "教材",
- "value": [
- {
- "n": "不良林",
- "v": "不良林"
- },
- {
- "n": "涌哥侃侃",
- "v": "涌哥侃侃 @ygkkk"
- },
- {
- "n": "悟空的日常",
- "v": "悟空的日常"
- }
- ]
- },
- {
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
- ]
- }
- ],
- "宇宙": [
- {
- "key": "tid",
- "name": "科普知識",
- "value": [
- {
- "n": "宇宙",
- "v": "光年 黑洞 銀河系 空間站 太空技術"
- },
- {
- "n": "粒子",
- "v": "空間粒子 宇宙磁場 四維空間 元素 量子 光波 光源 靈魂"
- },
- {
- "n": "靠蒙",
- "v": "microorganism"
- }
- ]
- },
- {
- "key": "tid",
- "name": "歷史科普",
- "value": [
- {
- "n": "世界大戰",
- "v": "世界大戰 二戰 日侵 八國聯軍"
- },
- {
- "n": "人物",
- "v": "古代名人 歷史名人 歷代祖先"
- },
- {
- "n": "生物進化史",
- "v": "人類進化 微生物進化 動物進化 地球進化"
- },
- {
- "v": "歷史 History"
- }
- ]
- },
- {
- "key": "date",
- "name": "排序/时间",
- "value": [
- {
- "n": "默认",
- "v": ""
- },
- {
- "n": "最新",
- "v": "latest"
- },
- {
- "n": "最热",
- "v": "hottest"
- },
- {
- "n": "最高",
- "v": "favorite"
- },
- {
- "n": "当天",
- "v": "day"
- },
- {
- "n": "本周",
- "v": "week"
- },
- {
- "n": "本月",
- "v": "month"
- }
+ "key":"tid",
+ "name":"歷史科普",
+ "value":[
+ {"n":"世界大戰","v":"世界大戰 二戰 日侵 八國聯軍"},
+ {"n":"人物","v":"古代名人 歷史名人 歷代祖先"},
+ {"n":"生物進化史","v":"人類進化 微生物進化 動物進化 地球進化"},
+ {"n":"靠蒙","v":"歷史 History"}
]
}
]
},
- "jx": 0,
- "parse": 0
-}
\ No newline at end of file
+ "jx":0,
+ "parse":0
+}
diff --git a/tvbox/lib/yt2.json b/tvbox/lib/yt2.json
new file mode 100644
index 00000000..3a57687a
--- /dev/null
+++ b/tvbox/lib/yt2.json
@@ -0,0 +1,4766 @@
+{
+ "recommend": "LIST:最新|推薦,官方頻道",
+ "class": [
+ {
+ "type_id": "新聞",
+ "type_name": "新闻"
+ },
+ {
+ "type_id": "战情室",
+ "type_name": "栏目"
+ },
+ {
+ "type_id": "个人频道",
+ "type_name": "频道"
+ },
+ {
+ "type_id": "音樂",
+ "type_name": "音乐"
+ },
+ {
+ "type_id": "短劇",
+ "type_name": "短剧"
+ },
+ {
+ "type_id": "HDR",
+ "type_name": "HDR"
+ },
+ {
+ "type_id": "4K",
+ "type_name": "4K"
+ },
+ {
+ "type_id": "放松",
+ "type_name": "放松"
+ },
+ {
+ "type_id": "時尚",
+ "type_name": "時尚"
+ },
+ {
+ "type_id": "紀錄",
+ "type_name": "纪录"
+ },
+ {
+ "type_id": "劇集",
+ "type_name": "剧集"
+ },
+ {
+ "type_id": "電影",
+ "type_name": "电影"
+ },
+ {
+ "type_id": "動畫",
+ "type_name": "动画"
+ },
+ {
+ "type_id": "綜藝",
+ "type_name": "综艺"
+ },
+ {
+ "type_id": "體育",
+ "type_name": "体育"
+ },
+ {
+ "type_id": "宇宙",
+ "type_name": "科普"
+ },
+ {
+ "type_id": "科技",
+ "type_name": "科技"
+ },
+ {
+ "type_id": "解說",
+ "type_name": "解说"
+ },
+ {
+ "type_id": "神秘",
+ "type_name": "神秘"
+ },
+ {
+ "type_id": "自媒體",
+ "type_name": "自媒體"
+ },
+ {
+ "type_id": "熱門",
+ "type_name": "热门"
+ },
+ {
+ "type_id": "GETTRENDS",
+ "type_name": "Trends"
+ }
+ ],
+ "filters": {
+ "熱門": [
+ {
+ "key": "tid",
+ "name": "LIST",
+ "value": [
+ {
+ "n": "默认",
+ "v": "PL hottest 默認"
+ },
+ {
+ "n": "热门",
+ "v": "PL Trending 熱門"
+ },
+ {
+ "n": "动漫",
+ "v": "PL Popular anime 動漫熱門"
+ },
+ {
+ "n": "漫画",
+ "v": "PL Popular comics 漫畫熱門"
+ },
+ {
+ "n": "上传",
+ "v": "PL Recently uploaded 最近上傳"
+ },
+ {
+ "n": "其他",
+ "v": "PL Popular Other popular ones 其他熱門"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": "LIST"
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "短劇": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {
+ "n": "時間全選",
+ "v": ""
+ },
+ {
+ "n": "2025",
+ "v": "2025"
+ },
+ {
+ "n": "2024",
+ "v": "2024"
+ },
+ {
+ "n": "2023",
+ "v": "2023"
+ },
+ {
+ "n": "2022",
+ "v": "2022"
+ },
+ {
+ "n": "2021",
+ "v": "2021"
+ },
+ {
+ "n": "2020",
+ "v": "2020"
+ },
+ {
+ "n": "2019",
+ "v": "2019"
+ },
+ {
+ "n": "2018",
+ "v": "2018"
+ },
+ {
+ "n": "2017",
+ "v": "2017"
+ },
+ {
+ "n": "2016",
+ "v": "2016"
+ },
+ {
+ "n": "2015",
+ "v": "2015"
+ },
+ {
+ "n": "2014",
+ "v": "2014"
+ },
+ {
+ "n": "2013",
+ "v": "2013"
+ },
+ {
+ "n": "2012",
+ "v": "2012"
+ },
+ {
+ "n": "2011",
+ "v": "2011"
+ },
+ {
+ "n": "2010",
+ "v": "2010"
+ },
+ {
+ "n": "2009",
+ "v": "2009"
+ },
+ {
+ "n": "2008",
+ "v": "2008"
+ },
+ {
+ "n": "2007",
+ "v": "2007"
+ },
+ {
+ "n": "2006",
+ "v": "2006"
+ },
+ {
+ "n": "2005",
+ "v": "2005"
+ },
+ {
+ "n": "2004",
+ "v": "2004"
+ },
+ {
+ "n": "2003",
+ "v": "2003"
+ },
+ {
+ "n": "2002",
+ "v": "2002"
+ },
+ {
+ "n": "2001",
+ "v": "2001"
+ },
+ {
+ "n": "2000",
+ "v": "2000"
+ },
+ {
+ "n": "1999",
+ "v": "1999"
+ },
+ {
+ "n": "1998",
+ "v": "1998"
+ },
+ {
+ "n": "1997",
+ "v": "1997"
+ },
+ {
+ "n": "1996",
+ "v": "1996"
+ },
+ {
+ "n": "1995",
+ "v": "1995"
+ },
+ {
+ "n": "1994",
+ "v": "1994"
+ },
+ {
+ "n": "1993",
+ "v": "1993"
+ },
+ {
+ "n": "1992",
+ "v": "1992"
+ },
+ {
+ "n": "1991",
+ "v": "1991"
+ },
+ {
+ "n": "1990",
+ "v": "1990"
+ },
+ {
+ "n": "1989",
+ "v": "1989"
+ },
+ {
+ "n": "1988",
+ "v": "1988"
+ },
+ {
+ "n": "1987",
+ "v": "1987"
+ },
+ {
+ "n": "1986",
+ "v": "1986"
+ },
+ {
+ "n": "1985",
+ "v": "1985"
+ },
+ {
+ "n": "1984",
+ "v": "1984"
+ },
+ {
+ "n": "1983",
+ "v": "1983"
+ },
+ {
+ "n": "1982",
+ "v": "1982"
+ },
+ {
+ "n": "1981",
+ "v": "1981"
+ },
+ {
+ "n": "1980",
+ "v": "1980"
+ },
+ {
+ "n": "1979",
+ "v": "1979"
+ },
+ {
+ "n": "1978",
+ "v": "1978"
+ },
+ {
+ "n": "1977",
+ "v": "1977"
+ },
+ {
+ "n": "1976",
+ "v": "1976"
+ },
+ {
+ "n": "1975",
+ "v": "1975"
+ },
+ {
+ "n": "1974",
+ "v": "1974"
+ },
+ {
+ "n": "1973",
+ "v": "1973"
+ },
+ {
+ "n": "1972",
+ "v": "1972"
+ },
+ {
+ "n": "1971",
+ "v": "1971"
+ },
+ {
+ "n": "1970",
+ "v": "1970"
+ },
+ {
+ "n": "1969",
+ "v": "1969"
+ },
+ {
+ "n": "1968",
+ "v": "1968"
+ },
+ {
+ "n": "1967",
+ "v": "1967"
+ },
+ {
+ "n": "1966",
+ "v": "1966"
+ },
+ {
+ "n": "1965",
+ "v": "1965"
+ },
+ {
+ "n": "1964",
+ "v": "1964"
+ },
+ {
+ "n": "1963",
+ "v": "1963"
+ },
+ {
+ "n": "1962",
+ "v": "1962"
+ },
+ {
+ "n": "1961",
+ "v": "1961"
+ },
+ {
+ "n": "1960",
+ "v": "1960"
+ },
+ {
+ "n": "1959",
+ "v": "1959"
+ },
+ {
+ "n": "1958",
+ "v": "1958"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "短劇",
+ "value": [
+ {
+ "n": "抖音",
+ "v": "PL抖音 短剧"
+ },
+ {
+ "n": "快手",
+ "v": "PL快手 短剧"
+ },
+ {
+ "n": "大陆",
+ "v": "PL大陆短剧"
+ },
+ {
+ "n": "香港",
+ "v": "PL香港短剧"
+ },
+ {
+ "n": "澳门",
+ "v": "PL澳门短剧"
+ },
+ {
+ "n": "台湾",
+ "v": "PL台湾短剧"
+ },
+ {
+ "n": "新加坡",
+ "v": "PL新加坡短剧"
+ },
+ {
+ "n": "马来西亚",
+ "v": "PL马来西亚短剧"
+ },
+ {
+ "n": "泰国",
+ "v": "PL泰国短剧"
+ },
+ {
+ "n": "越南",
+ "v": "PL越南短剧"
+ },
+ {
+ "n": "印度",
+ "v": "PL印度短剧"
+ },
+ {
+ "n": "韩国",
+ "v": "PL韩国短剧"
+ },
+ {
+ "n": "日本",
+ "v": "PL日本短剧"
+ },
+ {
+ "n": "欧美",
+ "v": "PL欧美短剧"
+ },
+ {
+ "n": "腾讯",
+ "v": "PL腾讯短剧"
+ },
+ {
+ "n": "爱奇艺",
+ "v": "PL爱奇艺短剧"
+ },
+ {
+ "n": "优酷",
+ "v": "PL优酷短剧"
+ },
+ {
+ "n": "芒果",
+ "v": "PL芒果TV短剧"
+ },
+ {
+ "n": "搜狐",
+ "v": "PL搜狐短剧"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "短劇",
+ "value": [
+ {
+ "n": "都市",
+ "v": "PL都市短剧"
+ },
+ {
+ "n": "爱情",
+ "v": "PL爱情短剧"
+ },
+ {
+ "n": "复仇",
+ "v": "PL复仇短劇"
+ },
+ {
+ "n": "霸总",
+ "v": "PL霸总短劇"
+ },
+ {
+ "n": "萌宝",
+ "v": "PL萌宝短劇"
+ },
+ {
+ "n": "古装",
+ "v": "PL古装短劇"
+ },
+ {
+ "n": "穿越",
+ "v": "PL穿越短劇"
+ },
+ {
+ "n": "喜剧",
+ "v": "PL喜剧短劇"
+ },
+ {
+ "n": "奇幻",
+ "v": "PL奇幻短劇"
+ },
+ {
+ "n": "九酱爱追剧",
+ "v": "PD@NineSauceDramaTV"
+ },
+ {
+ "n": "百万好剧场",
+ "v": "PD@1-pw5ox"
+ },
+ {
+ "n": "咖啡追剧",
+ "v": "PD@coffeedrama605"
+ },
+ {
+ "n": "斗罗短剧",
+ "v": "PD@DouluoDrama123 斗羅短劇"
+ },
+ {
+ "n": "嘟嘟剧场",
+ "v": "PD@DUDUJUCHANG"
+ },
+ {
+ "n": "牛牛短剧",
+ "v": "PD@niuniuduanju"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "動畫": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {
+ "n": "時間全選",
+ "v": ""
+ },
+ {
+ "n": "2025",
+ "v": "2025"
+ },
+ {
+ "n": "2024",
+ "v": "2024"
+ },
+ {
+ "n": "2023",
+ "v": "2023"
+ },
+ {
+ "n": "2022",
+ "v": "2022"
+ },
+ {
+ "n": "2021",
+ "v": "2021"
+ },
+ {
+ "n": "2020",
+ "v": "2020"
+ },
+ {
+ "n": "2019",
+ "v": "2019"
+ },
+ {
+ "n": "2018",
+ "v": "2018"
+ },
+ {
+ "n": "2017",
+ "v": "2017"
+ },
+ {
+ "n": "2016",
+ "v": "2016"
+ },
+ {
+ "n": "2015",
+ "v": "2015"
+ },
+ {
+ "n": "2014",
+ "v": "2014"
+ },
+ {
+ "n": "2013",
+ "v": "2013"
+ },
+ {
+ "n": "2012",
+ "v": "2012"
+ },
+ {
+ "n": "2011",
+ "v": "2011"
+ },
+ {
+ "n": "2010",
+ "v": "2010"
+ },
+ {
+ "n": "2009",
+ "v": "2009"
+ },
+ {
+ "n": "2008",
+ "v": "2008"
+ },
+ {
+ "n": "2007",
+ "v": "2007"
+ },
+ {
+ "n": "2006",
+ "v": "2006"
+ },
+ {
+ "n": "2005",
+ "v": "2005"
+ },
+ {
+ "n": "2004",
+ "v": "2004"
+ },
+ {
+ "n": "2003",
+ "v": "2003"
+ },
+ {
+ "n": "2002",
+ "v": "2002"
+ },
+ {
+ "n": "2001",
+ "v": "2001"
+ },
+ {
+ "n": "2000",
+ "v": "2000"
+ },
+ {
+ "n": "1999",
+ "v": "1999"
+ },
+ {
+ "n": "1998",
+ "v": "1998"
+ },
+ {
+ "n": "1997",
+ "v": "1997"
+ },
+ {
+ "n": "1996",
+ "v": "1996"
+ },
+ {
+ "n": "1995",
+ "v": "1995"
+ },
+ {
+ "n": "1994",
+ "v": "1994"
+ },
+ {
+ "n": "1993",
+ "v": "1993"
+ },
+ {
+ "n": "1992",
+ "v": "1992"
+ },
+ {
+ "n": "1991",
+ "v": "1991"
+ },
+ {
+ "n": "1990",
+ "v": "1990"
+ },
+ {
+ "n": "1989",
+ "v": "1989"
+ },
+ {
+ "n": "1988",
+ "v": "1988"
+ },
+ {
+ "n": "1987",
+ "v": "1987"
+ },
+ {
+ "n": "1986",
+ "v": "1986"
+ },
+ {
+ "n": "1985",
+ "v": "1985"
+ },
+ {
+ "n": "1984",
+ "v": "1984"
+ },
+ {
+ "n": "1983",
+ "v": "1983"
+ },
+ {
+ "n": "1982",
+ "v": "1982"
+ },
+ {
+ "n": "1981",
+ "v": "1981"
+ },
+ {
+ "n": "1980",
+ "v": "1980"
+ },
+ {
+ "n": "1979",
+ "v": "1979"
+ },
+ {
+ "n": "1978",
+ "v": "1978"
+ },
+ {
+ "n": "1977",
+ "v": "1977"
+ },
+ {
+ "n": "1976",
+ "v": "1976"
+ },
+ {
+ "n": "1975",
+ "v": "1975"
+ },
+ {
+ "n": "1974",
+ "v": "1974"
+ },
+ {
+ "n": "1973",
+ "v": "1973"
+ },
+ {
+ "n": "1972",
+ "v": "1972"
+ },
+ {
+ "n": "1971",
+ "v": "1971"
+ },
+ {
+ "n": "1970",
+ "v": "1970"
+ },
+ {
+ "n": "1969",
+ "v": "1969"
+ },
+ {
+ "n": "1968",
+ "v": "1968"
+ },
+ {
+ "n": "1967",
+ "v": "1967"
+ },
+ {
+ "n": "1966",
+ "v": "1966"
+ },
+ {
+ "n": "1965",
+ "v": "1965"
+ },
+ {
+ "n": "1964",
+ "v": "1964"
+ },
+ {
+ "n": "1963",
+ "v": "1963"
+ },
+ {
+ "n": "1962",
+ "v": "1962"
+ },
+ {
+ "n": "1961",
+ "v": "1961"
+ },
+ {
+ "n": "1960",
+ "v": "1960"
+ },
+ {
+ "n": "1959",
+ "v": "1959"
+ },
+ {
+ "n": "1958",
+ "v": "1958"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {
+ "n": "默认",
+ "v": "animation"
+ },
+ {
+ "n": "虾仁动画",
+ "v": "PL虾仁"
+ },
+ {
+ "n": "沙雕动画",
+ "v": "PL沙雕动画"
+ },
+ {
+ "n": "中文国漫",
+ "v": "PL國漫3D"
+ },
+ {
+ "n": "儿童早教",
+ "v": "PL儿童早教"
+ },
+ {
+ "n": "儿童歌曲",
+ "v": "PL儿童歌曲"
+ },
+ {
+ "n": "儿童音乐",
+ "v": "PL儿童音乐"
+ },
+ {
+ "n": "儿童绘画",
+ "v": "PL儿童绘画"
+ },
+ {
+ "n": "宝宝巴士",
+ "v": "PL宝宝巴士"
+ },
+ {
+ "n": "儿歌多多",
+ "v": "PL儿歌多多"
+ },
+ {
+ "n": "儿童英语启蒙",
+ "v": "PL儿童英语启蒙"
+ },
+ {
+ "n": "儿童启蒙故事",
+ "v": "PL儿童启蒙故事"
+ },
+ {
+ "n": "儿童安全教育",
+ "v": "PL儿童安全教育"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {
+ "n": "默认英文国漫",
+ "v": "PD'3D Chinese cartoon'"
+ },
+ {
+ "n": "小猪佩奇",
+ "v": "PD@PeppaPigChineseOfficial 小猪佩奇 中文官方 - Peppa Pig"
+ },
+ {
+ "n": "CoComelon",
+ "v": "PD@CoComelon"
+ },
+ {
+ "n": "合集",
+ "v": "'Anime ENG SUB'合集"
+ },
+ {
+ "n": "国漫社",
+ "v": "PD@Animation"
+ },
+ {
+ "n": "国漫工厂",
+ "v": "PD@3DGuoman"
+ },
+ {
+ "n": "阅文动漫",
+ "v": "PD@yuewenanimation"
+ },
+ {
+ "n": "哔哩",
+ "v": "PD@madebybilibili"
+ },
+ {
+ "n": "腾讯",
+ "v": "PD@TencentVideoAnimation"
+ },
+ {
+ "n": "优酷",
+ "v": "PD@youkuanimation"
+ },
+ {
+ "n": "爱奇艺",
+ "v": "PD@iQIYIAnime"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "新聞": [
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {
+ "n": "默认",
+ "v": "fully YouTube 新聞 Live"
+ },
+ {
+ "n": "赛事",
+ "v": "直播 赛事"
+ },
+ {
+ "n": "CCTV",
+ "v": "直播 CCTV"
+ },
+ {
+ "n": "港台",
+ "v": "直播 港台"
+ },
+ {
+ "n": "CNA",
+ "v": "@channelnewsasia"
+ },
+ {
+ "n": "鳳凰衛視",
+ "v": "@phoenixtvhk"
+ },
+ {
+ "n": "CTINEWS",
+ "v": "直播 中天新闻"
+ },
+ {
+ "n": "TVBSEWS",
+ "v": "直播 TVBSNEWS"
+ },
+ {
+ "n": "新亚太唐人",
+ "v": "@NTDAPTV"
+ },
+ {
+ "n": "東森新聞 CH51",
+ "v": "直播 東森新聞 CH51"
+ },
+ {
+ "n": "三立LIVE新闻",
+ "v": "直播 三立LIVE新闻 @setnews "
+ },
+ {
+ "n": "台視新聞台HD",
+ "v": "直播 台視新聞 TTV NEWS"
+ },
+ {
+ "n": "中視新聞 HD",
+ "v": "直播 Taiwan CTV news HD Live"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {
+ "n": "Live",
+ "v": "live"
+ },
+ {
+ "n": "CNN",
+ "v": "live CNN"
+ },
+ {
+ "n": "BBC",
+ "v": "live BBC"
+ },
+ {
+ "n": "games",
+ "v": "live games"
+ },
+ {
+ "n": "CBS",
+ "v": "@CBSNews"
+ },
+ {
+ "n": "ABC",
+ "v": "live ABC NEWS"
+ },
+ {
+ "n": "NBC",
+ "v": "@NBCNews"
+ },
+ {
+ "n": "LiveNOW from FOX",
+ "v": "@livenowfox"
+ },
+ {
+ "n": "Sky News",
+ "v": "@SkyNews"
+ },
+ {
+ "n": "euronews",
+ "v": "@euronews"
+ },
+ {
+ "n": "GBNews",
+ "v": "@GBNewsOnline"
+ },
+ {
+ "n": "Al Jazeera English",
+ "v": "@aljazeeraenglish"
+ },
+ {
+ "n": "ABCNews (Australia)",
+ "v": "@abcnewsaustralia"
+ },
+ {
+ "n": "FRANCE 24 English",
+ "v": "live FRANCE 24 English"
+ },
+ {
+ "n": "Reuters",
+ "v": "live Reuters"
+ },
+ {
+ "n": "印度电视台",
+ "v": "@SETIndia"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {
+ "n": "默认",
+ "v": "News"
+ },
+ {
+ "n": "News",
+ "v": "news"
+ },
+ {
+ "n": "时政",
+ "v": "时政 新闻"
+ },
+ {
+ "n": "体育",
+ "v": "体育 新闻"
+ },
+ {
+ "n": "娱乐",
+ "v": "娱乐 新闻"
+ },
+ {
+ "n": "大陆",
+ "v": "大陆 新闻"
+ },
+ {
+ "n": "HKTVB",
+ "v": "@tvbnewsofficial"
+ },
+ {
+ "n": "少康戰情室",
+ "v": "@tvbssituationroom"
+ },
+ {
+ "n": "政经龙凤配",
+ "v": "@觀點"
+ },
+ {
+ "n": "FOCUS全球新闻",
+ "v": "@TVBSNEWS FOCUS全球新闻"
+ },
+ {
+ "n": "新闻大白话",
+ "v": "@TVBSNEWS 新闻大白话"
+ },
+ {
+ "n": "东森新闻",
+ "v": "关键时刻新闻"
+ },
+ {
+ "n": "港台",
+ "v": "港台 新闻"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {
+ "n": "科技與發展",
+ "v": "閱兵 奧運會 航母 航空母艦 潛水艇 核武器 坦克 武器 卫星 火箭 輪船 飛機 飛碟"
+ },
+ {
+ "n": "法治与社会",
+ "v": "法治 法制 社会 卖淫 淫秽 污蔑 赌博 毒品 裸聊 诈骗 拐卖 强奸 勒索"
+ },
+ {
+ "n": "News",
+ "v": "News"
+ },
+ {
+ "n": "CNN",
+ "v": "CNN news"
+ },
+ {
+ "n": "BBC",
+ "v": "BBC news"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "劇集": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {
+ "n": "時間全選",
+ "v": ""
+ },
+ {
+ "n": "2025",
+ "v": "2025"
+ },
+ {
+ "n": "2024",
+ "v": "2024"
+ },
+ {
+ "n": "2023",
+ "v": "2023"
+ },
+ {
+ "n": "2022",
+ "v": "2022"
+ },
+ {
+ "n": "2021",
+ "v": "2021"
+ },
+ {
+ "n": "2020",
+ "v": "2020"
+ },
+ {
+ "n": "2019",
+ "v": "2019"
+ },
+ {
+ "n": "2018",
+ "v": "2018"
+ },
+ {
+ "n": "2017",
+ "v": "2017"
+ },
+ {
+ "n": "2016",
+ "v": "2016"
+ },
+ {
+ "n": "2015",
+ "v": "2015"
+ },
+ {
+ "n": "2014",
+ "v": "2014"
+ },
+ {
+ "n": "2013",
+ "v": "2013"
+ },
+ {
+ "n": "2012",
+ "v": "2012"
+ },
+ {
+ "n": "2011",
+ "v": "2011"
+ },
+ {
+ "n": "2010",
+ "v": "2010"
+ },
+ {
+ "n": "2009",
+ "v": "2009"
+ },
+ {
+ "n": "2008",
+ "v": "2008"
+ },
+ {
+ "n": "2007",
+ "v": "2007"
+ },
+ {
+ "n": "2006",
+ "v": "2006"
+ },
+ {
+ "n": "2005",
+ "v": "2005"
+ },
+ {
+ "n": "2004",
+ "v": "2004"
+ },
+ {
+ "n": "2003",
+ "v": "2003"
+ },
+ {
+ "n": "2002",
+ "v": "2002"
+ },
+ {
+ "n": "2001",
+ "v": "2001"
+ },
+ {
+ "n": "2000",
+ "v": "2000"
+ },
+ {
+ "n": "1999",
+ "v": "1999"
+ },
+ {
+ "n": "1998",
+ "v": "1998"
+ },
+ {
+ "n": "1997",
+ "v": "1997"
+ },
+ {
+ "n": "1996",
+ "v": "1996"
+ },
+ {
+ "n": "1995",
+ "v": "1995"
+ },
+ {
+ "n": "1994",
+ "v": "1994"
+ },
+ {
+ "n": "1993",
+ "v": "1993"
+ },
+ {
+ "n": "1992",
+ "v": "1992"
+ },
+ {
+ "n": "1991",
+ "v": "1991"
+ },
+ {
+ "n": "1990",
+ "v": "1990"
+ },
+ {
+ "n": "1989",
+ "v": "1989"
+ },
+ {
+ "n": "1988",
+ "v": "1988"
+ },
+ {
+ "n": "1987",
+ "v": "1987"
+ },
+ {
+ "n": "1986",
+ "v": "1986"
+ },
+ {
+ "n": "1985",
+ "v": "1985"
+ },
+ {
+ "n": "1984",
+ "v": "1984"
+ },
+ {
+ "n": "1983",
+ "v": "1983"
+ },
+ {
+ "n": "1982",
+ "v": "1982"
+ },
+ {
+ "n": "1981",
+ "v": "1981"
+ },
+ {
+ "n": "1980",
+ "v": "1980"
+ },
+ {
+ "n": "1979",
+ "v": "1979"
+ },
+ {
+ "n": "1978",
+ "v": "1978"
+ },
+ {
+ "n": "1977",
+ "v": "1977"
+ },
+ {
+ "n": "1976",
+ "v": "1976"
+ },
+ {
+ "n": "1975",
+ "v": "1975"
+ },
+ {
+ "n": "1974",
+ "v": "1974"
+ },
+ {
+ "n": "1973",
+ "v": "1973"
+ },
+ {
+ "n": "1972",
+ "v": "1972"
+ },
+ {
+ "n": "1971",
+ "v": "1971"
+ },
+ {
+ "n": "1970",
+ "v": "1970"
+ },
+ {
+ "n": "1969",
+ "v": "1969"
+ },
+ {
+ "n": "1968",
+ "v": "1968"
+ },
+ {
+ "n": "1967",
+ "v": "1967"
+ },
+ {
+ "n": "1966",
+ "v": "1966"
+ },
+ {
+ "n": "1965",
+ "v": "1965"
+ },
+ {
+ "n": "1964",
+ "v": "1964"
+ },
+ {
+ "n": "1963",
+ "v": "1963"
+ },
+ {
+ "n": "1962",
+ "v": "1962"
+ },
+ {
+ "n": "1961",
+ "v": "1961"
+ },
+ {
+ "n": "1960",
+ "v": "1960"
+ },
+ {
+ "n": "1959",
+ "v": "1959"
+ },
+ {
+ "n": "1958",
+ "v": "1958"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {
+ "n": "默認",
+ "v": ""
+ },
+ {
+ "n": "華語熱播電視劇官方頻道",
+ "v": "PL華語熱播電視劇官方頻道"
+ },
+ {
+ "n": "TVB 国语",
+ "v": "PL TVB Drama 国语剧场"
+ },
+ {
+ "n": "粵劇",
+ "v": "PL 粵劇 劇集"
+ },
+ {
+ "n": "TVB",
+ "v": "PL TVB"
+ },
+ {
+ "n": "国剧放映社",
+ "v": "PL 国剧放映社"
+ },
+ {
+ "n": "大陆",
+ "v": "PL 大陆 剧集"
+ },
+ {
+ "n": "腾讯",
+ "v": "PL 腾讯 剧集"
+ },
+ {
+ "n": "爱奇艺",
+ "v": "PL 爱奇艺 剧集"
+ },
+ {
+ "n": "优酷",
+ "v": "PL 优酷 剧集"
+ },
+ {
+ "n": "芒果",
+ "v": "PL 芒果TV 剧集"
+ },
+ {
+ "n": "搜狐",
+ "v": "PL 搜狐 剧集"
+ },
+ {
+ "n": "华数",
+ "v": "PL 华数 剧集"
+ },
+ {
+ "n": "港台",
+ "v": "PL 港台 剧集"
+ },
+ {
+ "n": "美国",
+ "v": "PL 美国 Full Episode 完整剧集"
+ },
+ {
+ "n": "Netflix",
+ "v": "PL Netflix Full Episode 完整剧集"
+ },
+ {
+ "n": "Disney",
+ "v": "PL disney Full Episode 完整剧集"
+ },
+ {
+ "n": "Apple",
+ "v": "PL apple Full Episode 完整剧集"
+ },
+ {
+ "n": "Amazon",
+ "v": "PL amazon Full Episode 完整剧集"
+ },
+ {
+ "n": "HBO",
+ "v": "PL hbo Full Episode 完整剧集"
+ },
+ {
+ "n": "韩国",
+ "v": "PL 韩国 剧集"
+ },
+ {
+ "n": "日本",
+ "v": "PL 日本 剧集"
+ },
+ {
+ "n": "英国",
+ "v": "PL 英国 Full Episode 完整剧集"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {
+ "n": "Drama",
+ "v": "PL Full Episode drama"
+ },
+ {
+ "n": "US",
+ "v": "PL drama Full Episode US"
+ },
+ {
+ "n": "Netflix",
+ "v": "PL netflix Full Episode drama"
+ },
+ {
+ "n": "Disney",
+ "v": "PL disney Full Episode drama"
+ },
+ {
+ "n": "Apple",
+ "v": "PL apple Full Episode drama"
+ },
+ {
+ "n": "Amazon",
+ "v": "PL amazon Full Episode drama"
+ },
+ {
+ "n": "HBO",
+ "v": "PL hbo Full Episode drama"
+ },
+ {
+ "n": "Korea",
+ "v": "PL korea Full Episode drama"
+ },
+ {
+ "n": "Japan",
+ "v": "PL japan Full Episode drama"
+ },
+ {
+ "n": "UK",
+ "v": "PL uk Full Episode drama"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "電影": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {
+ "n": "時間全選",
+ "v": ""
+ },
+ {
+ "n": "2025",
+ "v": "2025"
+ },
+ {
+ "n": "2024",
+ "v": "2024"
+ },
+ {
+ "n": "2023",
+ "v": "2023"
+ },
+ {
+ "n": "2022",
+ "v": "2022"
+ },
+ {
+ "n": "2021",
+ "v": "2021"
+ },
+ {
+ "n": "2020",
+ "v": "2020"
+ },
+ {
+ "n": "2019",
+ "v": "2019"
+ },
+ {
+ "n": "2018",
+ "v": "2018"
+ },
+ {
+ "n": "2017",
+ "v": "2017"
+ },
+ {
+ "n": "2016",
+ "v": "2016"
+ },
+ {
+ "n": "2015",
+ "v": "2015"
+ },
+ {
+ "n": "2014",
+ "v": "2014"
+ },
+ {
+ "n": "2013",
+ "v": "2013"
+ },
+ {
+ "n": "2012",
+ "v": "2012"
+ },
+ {
+ "n": "2011",
+ "v": "2011"
+ },
+ {
+ "n": "2010",
+ "v": "2010"
+ },
+ {
+ "n": "2009",
+ "v": "2009"
+ },
+ {
+ "n": "2008",
+ "v": "2008"
+ },
+ {
+ "n": "2007",
+ "v": "2007"
+ },
+ {
+ "n": "2006",
+ "v": "2006"
+ },
+ {
+ "n": "2005",
+ "v": "2005"
+ },
+ {
+ "n": "2004",
+ "v": "2004"
+ },
+ {
+ "n": "2003",
+ "v": "2003"
+ },
+ {
+ "n": "2002",
+ "v": "2002"
+ },
+ {
+ "n": "2001",
+ "v": "2001"
+ },
+ {
+ "n": "2000",
+ "v": "2000"
+ },
+ {
+ "n": "1999",
+ "v": "1999"
+ },
+ {
+ "n": "1998",
+ "v": "1998"
+ },
+ {
+ "n": "1997",
+ "v": "1997"
+ },
+ {
+ "n": "1996",
+ "v": "1996"
+ },
+ {
+ "n": "1995",
+ "v": "1995"
+ },
+ {
+ "n": "1994",
+ "v": "1994"
+ },
+ {
+ "n": "1993",
+ "v": "1993"
+ },
+ {
+ "n": "1992",
+ "v": "1992"
+ },
+ {
+ "n": "1991",
+ "v": "1991"
+ },
+ {
+ "n": "1990",
+ "v": "1990"
+ },
+ {
+ "n": "1989",
+ "v": "1989"
+ },
+ {
+ "n": "1988",
+ "v": "1988"
+ },
+ {
+ "n": "1987",
+ "v": "1987"
+ },
+ {
+ "n": "1986",
+ "v": "1986"
+ },
+ {
+ "n": "1985",
+ "v": "1985"
+ },
+ {
+ "n": "1984",
+ "v": "1984"
+ },
+ {
+ "n": "1983",
+ "v": "1983"
+ },
+ {
+ "n": "1982",
+ "v": "1982"
+ },
+ {
+ "n": "1981",
+ "v": "1981"
+ },
+ {
+ "n": "1980",
+ "v": "1980"
+ },
+ {
+ "n": "1979",
+ "v": "1979"
+ },
+ {
+ "n": "1978",
+ "v": "1978"
+ },
+ {
+ "n": "1977",
+ "v": "1977"
+ },
+ {
+ "n": "1976",
+ "v": "1976"
+ },
+ {
+ "n": "1975",
+ "v": "1975"
+ },
+ {
+ "n": "1974",
+ "v": "1974"
+ },
+ {
+ "n": "1973",
+ "v": "1973"
+ },
+ {
+ "n": "1972",
+ "v": "1972"
+ },
+ {
+ "n": "1971",
+ "v": "1971"
+ },
+ {
+ "n": "1970",
+ "v": "1970"
+ },
+ {
+ "n": "1969",
+ "v": "1969"
+ },
+ {
+ "n": "1968",
+ "v": "1968"
+ },
+ {
+ "n": "1967",
+ "v": "1967"
+ },
+ {
+ "n": "1966",
+ "v": "1966"
+ },
+ {
+ "n": "1965",
+ "v": "1965"
+ },
+ {
+ "n": "1964",
+ "v": "1964"
+ },
+ {
+ "n": "1963",
+ "v": "1963"
+ },
+ {
+ "n": "1962",
+ "v": "1962"
+ },
+ {
+ "n": "1961",
+ "v": "1961"
+ },
+ {
+ "n": "1960",
+ "v": "1960"
+ },
+ {
+ "n": "1959",
+ "v": "1959"
+ },
+ {
+ "n": "1958",
+ "v": "1958"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {
+ "n": "默認",
+ "v": ""
+ },
+ {
+ "n": "大陆",
+ "v": "PL 大陆 电影"
+ },
+ {
+ "n": "腾讯",
+ "v": "PL 腾讯 电影"
+ },
+ {
+ "n": "爱奇艺",
+ "v": "PL 爱奇艺 电影"
+ },
+ {
+ "n": "优酷",
+ "v": "PL 优酷 电影"
+ },
+ {
+ "n": "芒果",
+ "v": "PL 芒果TV 电影"
+ },
+ {
+ "n": "搜狐",
+ "v": "PL 搜狐 电影"
+ },
+ {
+ "n": "港台",
+ "v": "PL 港台 电影"
+ },
+ {
+ "n": "美国",
+ "v": "PL 美国 电影"
+ },
+ {
+ "n": "Netflix",
+ "v": "PL netflix Full movie 电影"
+ },
+ {
+ "n": "Disney",
+ "v": "PL disney Full movie 电影"
+ },
+ {
+ "n": "Apple",
+ "v": "PL apple Full movie 电影"
+ },
+ {
+ "n": "Amazon",
+ "v": "PL amazon Full movie 电影"
+ },
+ {
+ "n": "HBO",
+ "v": "PL hbo Full movie 电影"
+ },
+ {
+ "n": "韩国",
+ "v": "PL 韩国 Full movie 电影"
+ },
+ {
+ "n": "日本",
+ "v": "PL 日本 Full movie 电影"
+ },
+ {
+ "n": "英国",
+ "v": "PL 英国 Full movie 电影"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {
+ "n": "movie",
+ "v": "PL youtube movies Full movie"
+ },
+ {
+ "n": "US",
+ "v": "PL us Full movie movie"
+ },
+ {
+ "n": "Netflix movie",
+ "v": "PL netflix Full movie movie"
+ },
+ {
+ "n": "Disney",
+ "v": "PL disney Full movie movie"
+ },
+ {
+ "n": "Apple",
+ "v": "PL apple Full movie movie"
+ },
+ {
+ "n": "Amazon",
+ "v": "PL amazon Full movie movie"
+ },
+ {
+ "n": "HBO",
+ "v": "PL hbo Full movie movie"
+ },
+ {
+ "n": "Koera",
+ "v": "PL korea Full movie movie"
+ },
+ {
+ "n": "Japan",
+ "v": "PL japan Full movie movie"
+ },
+ {
+ "n": "UK",
+ "v": "PL uk Full movie movie"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "綜藝": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {
+ "n": "時間全選",
+ "v": ""
+ },
+ {
+ "n": "2025",
+ "v": "2025"
+ },
+ {
+ "n": "2024",
+ "v": "2024"
+ },
+ {
+ "n": "2023",
+ "v": "2023"
+ },
+ {
+ "n": "2022",
+ "v": "2022"
+ },
+ {
+ "n": "2021",
+ "v": "2021"
+ },
+ {
+ "n": "2020",
+ "v": "2020"
+ },
+ {
+ "n": "2019",
+ "v": "2019"
+ },
+ {
+ "n": "2018",
+ "v": "2018"
+ },
+ {
+ "n": "2017",
+ "v": "2017"
+ },
+ {
+ "n": "2016",
+ "v": "2016"
+ },
+ {
+ "n": "2015",
+ "v": "2015"
+ },
+ {
+ "n": "2014",
+ "v": "2014"
+ },
+ {
+ "n": "2013",
+ "v": "2013"
+ },
+ {
+ "n": "2012",
+ "v": "2012"
+ },
+ {
+ "n": "2011",
+ "v": "2011"
+ },
+ {
+ "n": "2010",
+ "v": "2010"
+ },
+ {
+ "n": "2009",
+ "v": "2009"
+ },
+ {
+ "n": "2008",
+ "v": "2008"
+ },
+ {
+ "n": "2007",
+ "v": "2007"
+ },
+ {
+ "n": "2006",
+ "v": "2006"
+ },
+ {
+ "n": "2005",
+ "v": "2005"
+ },
+ {
+ "n": "2004",
+ "v": "2004"
+ },
+ {
+ "n": "2003",
+ "v": "2003"
+ },
+ {
+ "n": "2002",
+ "v": "2002"
+ },
+ {
+ "n": "2001",
+ "v": "2001"
+ },
+ {
+ "n": "2000",
+ "v": "2000"
+ },
+ {
+ "n": "1999",
+ "v": "1999"
+ },
+ {
+ "n": "1998",
+ "v": "1998"
+ },
+ {
+ "n": "1997",
+ "v": "1997"
+ },
+ {
+ "n": "1996",
+ "v": "1996"
+ },
+ {
+ "n": "1995",
+ "v": "1995"
+ },
+ {
+ "n": "1994",
+ "v": "1994"
+ },
+ {
+ "n": "1993",
+ "v": "1993"
+ },
+ {
+ "n": "1992",
+ "v": "1992"
+ },
+ {
+ "n": "1991",
+ "v": "1991"
+ },
+ {
+ "n": "1990",
+ "v": "1990"
+ },
+ {
+ "n": "1989",
+ "v": "1989"
+ },
+ {
+ "n": "1988",
+ "v": "1988"
+ },
+ {
+ "n": "1987",
+ "v": "1987"
+ },
+ {
+ "n": "1986",
+ "v": "1986"
+ },
+ {
+ "n": "1985",
+ "v": "1985"
+ },
+ {
+ "n": "1984",
+ "v": "1984"
+ },
+ {
+ "n": "1983",
+ "v": "1983"
+ },
+ {
+ "n": "1982",
+ "v": "1982"
+ },
+ {
+ "n": "1981",
+ "v": "1981"
+ },
+ {
+ "n": "1980",
+ "v": "1980"
+ },
+ {
+ "n": "1979",
+ "v": "1979"
+ },
+ {
+ "n": "1978",
+ "v": "1978"
+ },
+ {
+ "n": "1977",
+ "v": "1977"
+ },
+ {
+ "n": "1976",
+ "v": "1976"
+ },
+ {
+ "n": "1975",
+ "v": "1975"
+ },
+ {
+ "n": "1974",
+ "v": "1974"
+ },
+ {
+ "n": "1973",
+ "v": "1973"
+ },
+ {
+ "n": "1972",
+ "v": "1972"
+ },
+ {
+ "n": "1971",
+ "v": "1971"
+ },
+ {
+ "n": "1970",
+ "v": "1970"
+ },
+ {
+ "n": "1969",
+ "v": "1969"
+ },
+ {
+ "n": "1968",
+ "v": "1968"
+ },
+ {
+ "n": "1967",
+ "v": "1967"
+ },
+ {
+ "n": "1966",
+ "v": "1966"
+ },
+ {
+ "n": "1965",
+ "v": "1965"
+ },
+ {
+ "n": "1964",
+ "v": "1964"
+ },
+ {
+ "n": "1963",
+ "v": "1963"
+ },
+ {
+ "n": "1962",
+ "v": "1962"
+ },
+ {
+ "n": "1961",
+ "v": "1961"
+ },
+ {
+ "n": "1960",
+ "v": "1960"
+ },
+ {
+ "n": "1959",
+ "v": "1959"
+ },
+ {
+ "n": "1958",
+ "v": "1958"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {
+ "n": "默认",
+ "v": "Variety show"
+ },
+ {
+ "n": "大陆",
+ "v": "大陆 综艺"
+ },
+ {
+ "n": "芒果",
+ "v": "芒果 综艺"
+ },
+ {
+ "n": "腾讯",
+ "v": "腾讯 综艺"
+ },
+ {
+ "n": "爱奇艺",
+ "v": "爱奇艺 综艺"
+ },
+ {
+ "n": "优酷",
+ "v": "优酷 综艺"
+ },
+ {
+ "n": "港台",
+ "v": "港台 综艺"
+ },
+ {
+ "n": "美国",
+ "v": "美国 综艺"
+ },
+ {
+ "n": "Netflix",
+ "v": "Netflix 综艺"
+ },
+ {
+ "n": "韩国",
+ "v": "CRAVITY on Variety Shows 韩国 综艺"
+ },
+ {
+ "n": "日本",
+ "v": "日本 综艺"
+ },
+ {
+ "n": "英国",
+ "v": "英国 综艺"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {
+ "n": "Variety",
+ "v": "variety"
+ },
+ {
+ "n": "Netflix variety",
+ "v": "netflix variety"
+ },
+ {
+ "n": "Korea",
+ "v": "korea variety"
+ },
+ {
+ "n": "Japan",
+ "v": "japan variety"
+ },
+ {
+ "n": "UK",
+ "v": "uk variety"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "小品",
+ "value": [
+ {
+ "n": "春晚小品",
+ "v": "春晚小品"
+ },
+ {
+ "n": "开心麻花",
+ "v": "开心麻花"
+ },
+ {
+ "n": "屌丝男士",
+ "v": "屌丝男士"
+ },
+ {
+ "n": "喜剧综艺",
+ "v": "喜剧综艺"
+ },
+ {
+ "n": "单口",
+ "v": "单口 相声"
+ },
+ {
+ "n": "群口",
+ "v": "群口 相声"
+ },
+ {
+ "n": "德云社",
+ "v": "德云社"
+ },
+ {
+ "n": "青曲社",
+ "v": "青曲社"
+ },
+ {
+ "n": "郭德纲",
+ "v": "郭德纲"
+ },
+ {
+ "n": "岳云鹏",
+ "v": "岳云鹏"
+ },
+ {
+ "n": "曹云金",
+ "v": "曹云金"
+ },
+ {
+ "n": "评书",
+ "v": "评书"
+ },
+ {
+ "n": "小曲",
+ "v": "小曲"
+ },
+ {
+ "n": "赵本山",
+ "v": "赵本山"
+ },
+ {
+ "n": "陈佩斯",
+ "v": "陈佩斯"
+ },
+ {
+ "n": "冯巩",
+ "v": "冯巩"
+ },
+ {
+ "n": "宋小宝",
+ "v": "宋小宝"
+ },
+ {
+ "n": "赵丽蓉",
+ "v": "赵丽蓉"
+ },
+ {
+ "n": "潘长江",
+ "v": "潘长江"
+ },
+ {
+ "n": "郭冬临",
+ "v": "郭冬临"
+ },
+ {
+ "n": "严顺开",
+ "v": "严顺开"
+ },
+ {
+ "n": "文松",
+ "v": "文松"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "紀錄": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {
+ "n": "時間全選",
+ "v": ""
+ },
+ {
+ "n": "2025",
+ "v": "2025"
+ },
+ {
+ "n": "2024",
+ "v": "2024"
+ },
+ {
+ "n": "2023",
+ "v": "2023"
+ },
+ {
+ "n": "2022",
+ "v": "2022"
+ },
+ {
+ "n": "2021",
+ "v": "2021"
+ },
+ {
+ "n": "2020",
+ "v": "2020"
+ },
+ {
+ "n": "2019",
+ "v": "2019"
+ },
+ {
+ "n": "2018",
+ "v": "2018"
+ },
+ {
+ "n": "2017",
+ "v": "2017"
+ },
+ {
+ "n": "2016",
+ "v": "2016"
+ },
+ {
+ "n": "2015",
+ "v": "2015"
+ },
+ {
+ "n": "2014",
+ "v": "2014"
+ },
+ {
+ "n": "2013",
+ "v": "2013"
+ },
+ {
+ "n": "2012",
+ "v": "2012"
+ },
+ {
+ "n": "2011",
+ "v": "2011"
+ },
+ {
+ "n": "2010",
+ "v": "2010"
+ },
+ {
+ "n": "2009",
+ "v": "2009"
+ },
+ {
+ "n": "2008",
+ "v": "2008"
+ },
+ {
+ "n": "2007",
+ "v": "2007"
+ },
+ {
+ "n": "2006",
+ "v": "2006"
+ },
+ {
+ "n": "2005",
+ "v": "2005"
+ },
+ {
+ "n": "2004",
+ "v": "2004"
+ },
+ {
+ "n": "2003",
+ "v": "2003"
+ },
+ {
+ "n": "2002",
+ "v": "2002"
+ },
+ {
+ "n": "2001",
+ "v": "2001"
+ },
+ {
+ "n": "2000",
+ "v": "2000"
+ },
+ {
+ "n": "1999",
+ "v": "1999"
+ },
+ {
+ "n": "1998",
+ "v": "1998"
+ },
+ {
+ "n": "1997",
+ "v": "1997"
+ },
+ {
+ "n": "1996",
+ "v": "1996"
+ },
+ {
+ "n": "1995",
+ "v": "1995"
+ },
+ {
+ "n": "1994",
+ "v": "1994"
+ },
+ {
+ "n": "1993",
+ "v": "1993"
+ },
+ {
+ "n": "1992",
+ "v": "1992"
+ },
+ {
+ "n": "1991",
+ "v": "1991"
+ },
+ {
+ "n": "1990",
+ "v": "1990"
+ },
+ {
+ "n": "1989",
+ "v": "1989"
+ },
+ {
+ "n": "1988",
+ "v": "1988"
+ },
+ {
+ "n": "1987",
+ "v": "1987"
+ },
+ {
+ "n": "1986",
+ "v": "1986"
+ },
+ {
+ "n": "1985",
+ "v": "1985"
+ },
+ {
+ "n": "1984",
+ "v": "1984"
+ },
+ {
+ "n": "1983",
+ "v": "1983"
+ },
+ {
+ "n": "1982",
+ "v": "1982"
+ },
+ {
+ "n": "1981",
+ "v": "1981"
+ },
+ {
+ "n": "1980",
+ "v": "1980"
+ },
+ {
+ "n": "1979",
+ "v": "1979"
+ },
+ {
+ "n": "1978",
+ "v": "1978"
+ },
+ {
+ "n": "1977",
+ "v": "1977"
+ },
+ {
+ "n": "1976",
+ "v": "1976"
+ },
+ {
+ "n": "1975",
+ "v": "1975"
+ },
+ {
+ "n": "1974",
+ "v": "1974"
+ },
+ {
+ "n": "1973",
+ "v": "1973"
+ },
+ {
+ "n": "1972",
+ "v": "1972"
+ },
+ {
+ "n": "1971",
+ "v": "1971"
+ },
+ {
+ "n": "1970",
+ "v": "1970"
+ },
+ {
+ "n": "1969",
+ "v": "1969"
+ },
+ {
+ "n": "1968",
+ "v": "1968"
+ },
+ {
+ "n": "1967",
+ "v": "1967"
+ },
+ {
+ "n": "1966",
+ "v": "1966"
+ },
+ {
+ "n": "1965",
+ "v": "1965"
+ },
+ {
+ "n": "1964",
+ "v": "1964"
+ },
+ {
+ "n": "1963",
+ "v": "1963"
+ },
+ {
+ "n": "1962",
+ "v": "1962"
+ },
+ {
+ "n": "1961",
+ "v": "1961"
+ },
+ {
+ "n": "1960",
+ "v": "1960"
+ },
+ {
+ "n": "1959",
+ "v": "1959"
+ },
+ {
+ "n": "1958",
+ "v": "1958"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {
+ "n": "地區🎶排序",
+ "v": "歷史記錄片 地球記錄片 宇宙記錄片 海洋記錄片 戰爭記錄片 大自然生存記錄片"
+ },
+ {
+ "n": "默认",
+ "v": "PL documentary"
+ },
+ {
+ "n": "CCTV 纪录片",
+ "v": "PL CCTV 纪录片"
+ },
+ {
+ "n": "BBC 纪录片",
+ "v": "PL BBC 纪录片"
+ },
+ {
+ "n": "国家地理",
+ "v": "PL 国家地理 纪录片"
+ },
+ {
+ "n": "Netflix纪录片",
+ "v": "PL netflix 纪录片"
+ },
+ {
+ "n": "BBC",
+ "v": "PL BBC documentary"
+ },
+ {
+ "n": "National Geographic",
+ "v": "Pl National Geographic documentary"
+ },
+ {
+ "n": "Netflix",
+ "v": "PL netflix documentary"
+ },
+ {
+ "n": "历史",
+ "v": "PL 历史 纪录片"
+ },
+ {
+ "n": "野性",
+ "v": "PL 野性 纪录片"
+ },
+ {
+ "n": "地球",
+ "v": "PL 地球 纪录片"
+ },
+ {
+ "n": "宇宙",
+ "v": "PL 宇宙 纪录片"
+ },
+ {
+ "n": "海洋",
+ "v": "PL 海洋 纪录片"
+ },
+ {
+ "n": "人文",
+ "v": "PL 人文 纪录片"
+ },
+ {
+ "n": "战争",
+ "v": "PL 战争 纪录片"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {
+ "n": "History",
+ "v": "PL Full history documentary"
+ },
+ {
+ "n": "WILD",
+ "v": "PL Full wild documentary"
+ },
+ {
+ "n": "Earch",
+ "v": "PL Full earth documentary"
+ },
+ {
+ "n": "Universe",
+ "v": "PL Full universe documentary"
+ },
+ {
+ "n": "Oceans",
+ "v": "PL Full oceans documentary"
+ },
+ {
+ "n": "Humanism",
+ "v": "PL Full humanism documentary"
+ },
+ {
+ "n": "Wars",
+ "v": "PL Full war documentary"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "音樂": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {
+ "n": "時間全選",
+ "v": ""
+ },
+ {
+ "n": "2025",
+ "v": "2025"
+ },
+ {
+ "n": "2024",
+ "v": "2024"
+ },
+ {
+ "n": "2023",
+ "v": "2023"
+ },
+ {
+ "n": "2022",
+ "v": "2022"
+ },
+ {
+ "n": "2021",
+ "v": "2021"
+ },
+ {
+ "n": "2020",
+ "v": "2020"
+ },
+ {
+ "n": "2019",
+ "v": "2019"
+ },
+ {
+ "n": "2018",
+ "v": "2018"
+ },
+ {
+ "n": "2017",
+ "v": "2017"
+ },
+ {
+ "n": "2016",
+ "v": "2016"
+ },
+ {
+ "n": "2015",
+ "v": "2015"
+ },
+ {
+ "n": "2014",
+ "v": "2014"
+ },
+ {
+ "n": "2013",
+ "v": "2013"
+ },
+ {
+ "n": "2012",
+ "v": "2012"
+ },
+ {
+ "n": "2011",
+ "v": "2011"
+ },
+ {
+ "n": "2010",
+ "v": "2010"
+ },
+ {
+ "n": "2009",
+ "v": "2009"
+ },
+ {
+ "n": "2008",
+ "v": "2008"
+ },
+ {
+ "n": "2007",
+ "v": "2007"
+ },
+ {
+ "n": "2006",
+ "v": "2006"
+ },
+ {
+ "n": "2005",
+ "v": "2005"
+ },
+ {
+ "n": "2004",
+ "v": "2004"
+ },
+ {
+ "n": "2003",
+ "v": "2003"
+ },
+ {
+ "n": "2002",
+ "v": "2002"
+ },
+ {
+ "n": "2001",
+ "v": "2001"
+ },
+ {
+ "n": "2000",
+ "v": "2000"
+ },
+ {
+ "n": "1999",
+ "v": "1999"
+ },
+ {
+ "n": "1998",
+ "v": "1998"
+ },
+ {
+ "n": "1997",
+ "v": "1997"
+ },
+ {
+ "n": "1996",
+ "v": "1996"
+ },
+ {
+ "n": "1995",
+ "v": "1995"
+ },
+ {
+ "n": "1994",
+ "v": "1994"
+ },
+ {
+ "n": "1993",
+ "v": "1993"
+ },
+ {
+ "n": "1992",
+ "v": "1992"
+ },
+ {
+ "n": "1991",
+ "v": "1991"
+ },
+ {
+ "n": "1990",
+ "v": "1990"
+ },
+ {
+ "n": "1989",
+ "v": "1989"
+ },
+ {
+ "n": "1988",
+ "v": "1988"
+ },
+ {
+ "n": "1987",
+ "v": "1987"
+ },
+ {
+ "n": "1986",
+ "v": "1986"
+ },
+ {
+ "n": "1985",
+ "v": "1985"
+ },
+ {
+ "n": "1984",
+ "v": "1984"
+ },
+ {
+ "n": "1983",
+ "v": "1983"
+ },
+ {
+ "n": "1982",
+ "v": "1982"
+ },
+ {
+ "n": "1981",
+ "v": "1981"
+ },
+ {
+ "n": "1980",
+ "v": "1980"
+ },
+ {
+ "n": "1979",
+ "v": "1979"
+ },
+ {
+ "n": "1978",
+ "v": "1978"
+ },
+ {
+ "n": "1977",
+ "v": "1977"
+ },
+ {
+ "n": "1976",
+ "v": "1976"
+ },
+ {
+ "n": "1975",
+ "v": "1975"
+ },
+ {
+ "n": "1974",
+ "v": "1974"
+ },
+ {
+ "n": "1973",
+ "v": "1973"
+ },
+ {
+ "n": "1972",
+ "v": "1972"
+ },
+ {
+ "n": "1971",
+ "v": "1971"
+ },
+ {
+ "n": "1970",
+ "v": "1970"
+ },
+ {
+ "n": "1969",
+ "v": "1969"
+ },
+ {
+ "n": "1968",
+ "v": "1968"
+ },
+ {
+ "n": "1967",
+ "v": "1967"
+ },
+ {
+ "n": "1966",
+ "v": "1966"
+ },
+ {
+ "n": "1965",
+ "v": "1965"
+ },
+ {
+ "n": "1964",
+ "v": "1964"
+ },
+ {
+ "n": "1963",
+ "v": "1963"
+ },
+ {
+ "n": "1962",
+ "v": "1962"
+ },
+ {
+ "n": "1961",
+ "v": "1961"
+ },
+ {
+ "n": "1960",
+ "v": "1960"
+ },
+ {
+ "n": "1959",
+ "v": "1959"
+ },
+ {
+ "n": "1958",
+ "v": "1958"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "地區",
+ "value": [
+ {
+ "n": "華語音樂",
+ "v": "PL 華語音樂"
+ },
+ {
+ "n": "華語MV",
+ "v": "PL 華語MV"
+ },
+ {
+ "n": "环球视听",
+ "v": "PL 环球视听"
+ },
+ {
+ "n": "YouTube 點閱率最高",
+ "v": "點閱率最高華語歌曲"
+ },
+ {
+ "n": "海外抖音",
+ "v": "PL TikTok 抖音 音樂"
+ },
+ {
+ "n": "粵語",
+ "v": "PL 粵語 音樂"
+ },
+ {
+ "n": "國語",
+ "v": "PL 國語 音樂"
+ },
+ {
+ "n": "大陆",
+ "v": "PL 大陆 音乐"
+ },
+ {
+ "n": "香港",
+ "v": "PL 香港 音乐"
+ },
+ {
+ "n": "台湾",
+ "v": "PL 台湾 音乐"
+ },
+ {
+ "n": "新加坡",
+ "v": "PL 新加坡 音乐"
+ },
+ {
+ "n": "馬來西亞",
+ "v": "PL 馬來西亞 音乐"
+ },
+ {
+ "n": "泰國",
+ "v": "PL 泰國 音乐"
+ },
+ {
+ "n": "越南",
+ "v": "PL 越南 音乐"
+ },
+ {
+ "n": "印度",
+ "v": "PL 印度 音乐"
+ },
+ {
+ "n": "韩国",
+ "v": "PL 韩国 音乐"
+ },
+ {
+ "n": "日本",
+ "v": "PL 日本 音乐"
+ },
+ {
+ "n": "欧美",
+ "v": "PL 欧美 音乐"
+ },
+ {
+ "n": "时光音乐会 MV",
+ "v": "时光音乐会MV"
+ },
+ {
+ "n": "中国好声音 MV",
+ "v": "中国好声音MV"
+ },
+ {
+ "n": "滚石 MV",
+ "v": "滚石MV"
+ },
+ {
+ "n": "古风 MV",
+ "v": "古风MV"
+ },
+ {
+ "n": "韩国女团 MV",
+ "v": "韩国女团MV"
+ },
+ {
+ "n": "欧美",
+ "v": "欧美 音乐"
+ },
+ {
+ "n": "BillBoard",
+ "v": "BillBoard"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "愛好",
+ "value": [
+ {
+ "n": "合辑",
+ "v": "合辑"
+ },
+ {
+ "n": "超級女聲",
+ "v": "超級女聲"
+ },
+ {
+ "n": "whitneyhouston",
+ "v": "@whitneyhoustonmusic"
+ },
+ {
+ "n": "玛丽.凯丽",
+ "v": "@MariahCarey"
+ },
+ {
+ "n": "LadyGaga",
+ "v": "@LadyGaga"
+ },
+ {
+ "n": "G.E.M邓紫棋",
+ "v": "@gem0816"
+ },
+ {
+ "n": "麦当娜",
+ "v": "@madonna"
+ },
+ {
+ "n": "Taylor Swift",
+ "v": "@TaylorSwift"
+ },
+ {
+ "n": "舞曲",
+ "v": "蹦迪現場 慢搖 夜店 低音 女聲 "
+ },
+ {
+ "n": "80-90",
+ "v": "80 90 音樂"
+ },
+ {
+ "n": "人聲",
+ "v": "人聲 音樂"
+ },
+ {
+ "n": "硬歌",
+ "v": "深水炸弹"
+ },
+ {
+ "n": "A8製造",
+ "v": "A8製造 工體音樂"
+ },
+ {
+ "n": "中国MTV",
+ "v": "@ChineseMusicTV"
+ },
+ {
+ "n": "滚石",
+ "v": "@RockRecordsTaipei"
+ },
+ {
+ "n": "失傳已久",
+ "v": "嗨音雷虎 失傳 嗨音會所 音樂"
+ },
+ {
+ "n": "重低音 DJ",
+ "v": "重低音 DJ"
+ },
+ {
+ "n": "車載舞曲",
+ "v": "車載慢搖"
+ },
+ {
+ "n": "超級女聲",
+ "v": "超級女聲"
+ },
+ {
+ "n": "tseries",
+ "v": "@tseries"
+ },
+ {
+ "n": "戲曲",
+ "v": "秦腔 京剧 越剧 黄梅戏 评剧 豫剧 昆曲 高腔 梆子腔 河北梆子 晋剧 蒲剧 雁剧 上党梆子 武安平调 二人台 吉剧 龙江剧 越调 河南曲剧 山东梆子 淮剧 滑稽戏 婺剧 绍剧 徽剧 闽剧 莆仙戏 梨园戏 高甲戏 赣剧 采茶戏 汉剧 湘剧 祁剧 湖南花鼓戏 粤剧 潮剧 桂剧 彩调 壮剧 川剧 黔剧 滇剧 傣剧 藏剧 皮影戏"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "歌手",
+ "value": [
+ {
+ "n": "邓丽君",
+ "v": "邓丽君 音乐"
+ },
+ {
+ "n": "林忆莲",
+ "v": "林忆莲 音樂"
+ },
+ {
+ "n": "陈慧娴",
+ "v": "陈慧娴音樂"
+ },
+ {
+ "n": "韩宝仪",
+ "v": "韩宝仪 音樂"
+ },
+ {
+ "n": "张学友",
+ "v": "张学友 音樂"
+ },
+ {
+ "n": "李宗盛",
+ "v": "李宗盛 音樂"
+ },
+ {
+ "n": "罗大佑",
+ "v": "罗大佑 音樂"
+ },
+ {
+ "n": "周杰伦",
+ "v": "周杰伦 音樂"
+ },
+ {
+ "n": "张玮伽",
+ "v": "张玮伽 音樂"
+ },
+ {
+ "n": "张惠妹",
+ "v": "张惠妹 音樂"
+ },
+ {
+ "n": "斯琴高麗",
+ "v": "斯琴高麗 音樂"
+ },
+ {
+ "n": "林俊杰",
+ "v": "@jjlin • 音乐"
+ },
+ {
+ "n": "周深",
+ "v": "周深 音樂"
+ },
+ {
+ "n": "張瑋伽",
+ "v": "張瑋伽 演唱會 巡演 音樂"
+ },
+ {
+ "n": "孫露",
+ "v": "孫露 演唱會 巡演 音樂"
+ },
+ {
+ "n": "鳳凰傳奇",
+ "v": "鳳凰傳奇 演 巡演 音樂"
+ },
+ {
+ "n": "刀郎",
+ "v": "刀郎 演唱會 巡演 音樂"
+ },
+ {
+ "n": "S.H.E",
+ "v": "S.H.E 演唱會 巡演 音樂"
+ },
+ {
+ "n": "慕容曉曉",
+ "v": "慕容曉曉 演唱會 巡演 音樂"
+ },
+ {
+ "n": "東方紅豔",
+ "v": "東方紅豔 演唱會 巡演 音樂"
+ },
+ {
+ "n": "孟庭葦",
+ "v": "孟庭葦 演唱會 巡演 音樂"
+ },
+ {
+ "n": "斯琴高麗",
+ "v": "斯琴高麗 演唱會 巡演 音樂"
+ },
+ {
+ "n": "程響",
+ "v": "程響 演唱會 巡演 音樂"
+ },
+ {
+ "n": "蔣雪兒",
+ "v": "蔣雪兒 演唱會 巡演 音樂"
+ },
+ {
+ "n": "迈克尔杰克逊",
+ "v": "麥可傑克森"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "體育": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {
+ "n": "時間全選",
+ "v": ""
+ },
+ {
+ "n": "2025",
+ "v": "2025"
+ },
+ {
+ "n": "2024",
+ "v": "2024"
+ },
+ {
+ "n": "2023",
+ "v": "2023"
+ },
+ {
+ "n": "2022",
+ "v": "2022"
+ },
+ {
+ "n": "2021",
+ "v": "2021"
+ },
+ {
+ "n": "2020",
+ "v": "2020"
+ },
+ {
+ "n": "2019",
+ "v": "2019"
+ },
+ {
+ "n": "2018",
+ "v": "2018"
+ },
+ {
+ "n": "2017",
+ "v": "2017"
+ },
+ {
+ "n": "2016",
+ "v": "2016"
+ },
+ {
+ "n": "2015",
+ "v": "2015"
+ },
+ {
+ "n": "2014",
+ "v": "2014"
+ },
+ {
+ "n": "2013",
+ "v": "2013"
+ },
+ {
+ "n": "2012",
+ "v": "2012"
+ },
+ {
+ "n": "2011",
+ "v": "2011"
+ },
+ {
+ "n": "2010",
+ "v": "2010"
+ },
+ {
+ "n": "2009",
+ "v": "2009"
+ },
+ {
+ "n": "2008",
+ "v": "2008"
+ },
+ {
+ "n": "2007",
+ "v": "2007"
+ },
+ {
+ "n": "2006",
+ "v": "2006"
+ },
+ {
+ "n": "2005",
+ "v": "2005"
+ },
+ {
+ "n": "2004",
+ "v": "2004"
+ },
+ {
+ "n": "2003",
+ "v": "2003"
+ },
+ {
+ "n": "2002",
+ "v": "2002"
+ },
+ {
+ "n": "2001",
+ "v": "2001"
+ },
+ {
+ "n": "2000",
+ "v": "2000"
+ },
+ {
+ "n": "1999",
+ "v": "1999"
+ },
+ {
+ "n": "1998",
+ "v": "1998"
+ },
+ {
+ "n": "1997",
+ "v": "1997"
+ },
+ {
+ "n": "1996",
+ "v": "1996"
+ },
+ {
+ "n": "1995",
+ "v": "1995"
+ },
+ {
+ "n": "1994",
+ "v": "1994"
+ },
+ {
+ "n": "1993",
+ "v": "1993"
+ },
+ {
+ "n": "1992",
+ "v": "1992"
+ },
+ {
+ "n": "1991",
+ "v": "1991"
+ },
+ {
+ "n": "1990",
+ "v": "1990"
+ },
+ {
+ "n": "1989",
+ "v": "1989"
+ },
+ {
+ "n": "1988",
+ "v": "1988"
+ },
+ {
+ "n": "1987",
+ "v": "1987"
+ },
+ {
+ "n": "1986",
+ "v": "1986"
+ },
+ {
+ "n": "1985",
+ "v": "1985"
+ },
+ {
+ "n": "1984",
+ "v": "1984"
+ },
+ {
+ "n": "1983",
+ "v": "1983"
+ },
+ {
+ "n": "1982",
+ "v": "1982"
+ },
+ {
+ "n": "1981",
+ "v": "1981"
+ },
+ {
+ "n": "1980",
+ "v": "1980"
+ },
+ {
+ "n": "1979",
+ "v": "1979"
+ },
+ {
+ "n": "1978",
+ "v": "1978"
+ },
+ {
+ "n": "1977",
+ "v": "1977"
+ },
+ {
+ "n": "1976",
+ "v": "1976"
+ },
+ {
+ "n": "1975",
+ "v": "1975"
+ },
+ {
+ "n": "1974",
+ "v": "1974"
+ },
+ {
+ "n": "1973",
+ "v": "1973"
+ },
+ {
+ "n": "1972",
+ "v": "1972"
+ },
+ {
+ "n": "1971",
+ "v": "1971"
+ },
+ {
+ "n": "1970",
+ "v": "1970"
+ },
+ {
+ "n": "1969",
+ "v": "1969"
+ },
+ {
+ "n": "1968",
+ "v": "1968"
+ },
+ {
+ "n": "1967",
+ "v": "1967"
+ },
+ {
+ "n": "1966",
+ "v": "1966"
+ },
+ {
+ "n": "1965",
+ "v": "1965"
+ },
+ {
+ "n": "1964",
+ "v": "1964"
+ },
+ {
+ "n": "1963",
+ "v": "1963"
+ },
+ {
+ "n": "1962",
+ "v": "1962"
+ },
+ {
+ "n": "1961",
+ "v": "1961"
+ },
+ {
+ "n": "1960",
+ "v": "1960"
+ },
+ {
+ "n": "1959",
+ "v": "1959"
+ },
+ {
+ "n": "1958",
+ "v": "1958"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "休育直播",
+ "v": "體育直播"
+ },
+ {
+ "n": "休育赛事",
+ "v": "體育赛事"
+ },
+ {
+ "n": "足球比赛",
+ "v": "足球賽事"
+ },
+ {
+ "n": "篮球比赛",
+ "v": "篮球賽事"
+ },
+ {
+ "n": "极限运动",
+ "v": "极限運動"
+ },
+ {
+ "n": "室内运动",
+ "v": "室内運動"
+ },
+ {
+ "n": "户外运动",
+ "v": "户外運動"
+ },
+ {
+ "n": "瑜伽健身",
+ "v": "瑜珈健身"
+ },
+ {
+ "n": "健身运动",
+ "v": "健身運動"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {
+ "n": "Live",
+ "v": "live sports"
+ },
+ {
+ "n": "Games",
+ "v": "live games"
+ },
+ {
+ "n": "Soccer",
+ "v": "live soccer"
+ },
+ {
+ "n": "NBA",
+ "v": "NBA"
+ },
+ {
+ "n": "Extreme",
+ "v": "extreme sports"
+ },
+ {
+ "n": "InDoor",
+ "v": "indoor sports"
+ },
+ {
+ "n": "OutDoor",
+ "v": "outdoor sports"
+ },
+ {
+ "n": "Workout",
+ "v": "workout"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "體育",
+ "value": [
+ {
+ "n": "女足港場",
+ "v": "女足港場 @Hong KongWomensStadium"
+ },
+ {
+ "n": "全國校運動會",
+ "v": "全國大專 校院運動會 全中運 女子組賽事 全國中等 學校運動會"
+ },
+ {
+ "n": "女中儀隊",
+ "v": "北一女中樂儀旗隊永續發展協會 北一女中家長會樂儀旗家長後援會 北一女中儀隊校友隊 台灣 学校运动会 景美女中儀隊 北一女樂儀旗隊 full樂儀隊 "
+ },
+ {
+ "n": "校園熱舞",
+ "v": "full 校園熱舞 開南熱無 開南大學課外活動組 女生熱舞社 南寶熱舞社 寶踐熱舞社 NTDC 熱舞社 STUST"
+ },
+ {
+ "n": "红星体育官方频道",
+ "v": "红星体育官方频道【高清直播】"
+ },
+ {
+ "n": "中國體育比賽傳奇",
+ "v": "中國體育比賽傳奇"
+ },
+ {
+ "n": "愛爾達體育家族",
+ "v": "愛爾達體育家族 ELTA Sports"
+ },
+ {
+ "n": "公視體育",
+ "v": "公視體育"
+ },
+ {
+ "n": "體育之光",
+ "v": "體育之光"
+ },
+ {
+ "n": "偶然體育賽事",
+ "v": "偶然體育賽事"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "時尚": [
+ {
+ "key": "tid",
+ "name": "时装秀",
+ "value": [
+ {
+ "n": "街舞",
+ "v": "街舞"
+ },
+ {
+ "n": "時裝秀",
+ "v": "hdr ASM lingerieTV 東京ファッションショー 下着ショー"
+ },
+ {
+ "n": "潮流秀",
+ "v": "FASHION IN UHD"
+ },
+ {
+ "n": "時尚走秀",
+ "v": "時尚走秀 Fashion show"
+ },
+ {
+ "n": "时装模特",
+ "v": "FASHION Runway"
+ },
+ {
+ "n": "模特",
+ "v": "比基尼 泳裝 頂級車模 空姐 寫真 Car model Stewardess Portrait"
+ },
+ {
+ "n": "裸体秀",
+ "v": "hdr 人體藝術 裸体秀 Nude show"
+ },
+ {
+ "n": "無限亂鬥",
+ "v": "hdr 廟會秀 無限HD 公廟 鋼管舞 脫衣舞 舞女 清純 寫真"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "小姐姐",
+ "value": [
+ {
+ "n": "小姐姐超清",
+ "v": "小姐姐超清"
+ },
+ {
+ "n": "国内小姐姐",
+ "v": "国内小姐姐"
+ },
+ {
+ "n": "韩国小姐姐",
+ "v": "韩国小姐姐"
+ },
+ {
+ "n": "日本小姐姐",
+ "v": "日本小姐姐"
+ },
+ {
+ "n": "俄罗斯小姐姐",
+ "v": "俄罗斯小姐姐"
+ },
+ {
+ "n": "混血小姐姐",
+ "v": "混血小姐姐"
+ },
+ {
+ "n": "越南小姐姐",
+ "v": "越南小姐姐"
+ },
+ {
+ "n": "Al小姐姐",
+ "v": "Al美女超清"
+ },
+ {
+ "n": "抖音热门小姐姐",
+ "v": "抖音热门小姐姐"
+ },
+ {
+ "n": "快手热门美女",
+ "v": "快手热门美女"
+ },
+ {
+ "n": "打碟小姐姐",
+ "v": "打碟小姐姐"
+ },
+ {
+ "n": "冲浪小姐姐",
+ "v": "冲浪小姐姐"
+ },
+ {
+ "n": "蹦迪小姐姐",
+ "v": "蹦迪小姐姐"
+ },
+ {
+ "n": "艺校小姐姐",
+ "v": "艺校小姐姐"
+ },
+ {
+ "n": "环球小姐",
+ "v": "环球小姐"
+ },
+ {
+ "n": "泰国人妖",
+ "v": "泰国人妖"
+ },
+ {
+ "n": "人间胸器",
+ "v": "人间胸器"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {
+ "n": "sexy Miss",
+ "v": "sexy Miss"
+ },
+ {
+ "n": "Hot sexy Girl",
+ "v": "Hot sexy Girl"
+ },
+ {
+ "n": "Korean Girl",
+ "v": "Korean sexy Girl"
+ },
+ {
+ "n": "Japanese Girl",
+ "v": "Japanese sexy Girl"
+ },
+ {
+ "n": "Russian Girl",
+ "v": "Russian sexy Girl"
+ },
+ {
+ "n": "Vietnamese Girl",
+ "v": "Vietnamese sexy Girl"
+ },
+ {
+ "n": "AI Girl",
+ "v": "AI Girl"
+ },
+ {
+ "n": "TikTok Hot Siste",
+ "v": "TikTok Hot sexy Girl"
+ },
+ {
+ "n": "Cute Girl",
+ "v": "sexy Cute Girl"
+ },
+ {
+ "n": "Girl Dj",
+ "v": "sexy Girl Dj"
+ },
+ {
+ "n": "Girl Surfer",
+ "v": "sexy Girl Surfer"
+ },
+ {
+ "n": "Dance Girl",
+ "v": "Dance sexy Girl"
+ },
+ {
+ "n": "Miss Universe",
+ "v": "Miss Universe"
+ },
+ {
+ "n": "Thai Shemale",
+ "v": "Thai Shemale"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "解說": [
+ {
+ "key": "tid",
+ "name": "頻道主",
+ "value": [
+ {
+ "n": "宇哥侃故事",
+ "v": "PL 宇哥侃故事"
+ },
+ {
+ "n": "零度解说",
+ "v": "PL 零度解说"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "战情室": [
+ {
+ "key": "tid",
+ "name": "栏目",
+ "value": [
+ {
+ "n": "军情观察室",
+ "v": "|PL-K7NYq6mtAuw3rO7t2rDUhI3qbS1rLMj"
+ },
+ {
+ "n": "环球大战线",
+ "v": "|PLwHjhKNud0GiqFBpW5aorjeIVO4mZAn_b"
+ },
+ {
+ "n": "少康战情室",
+ "v": "|PL64Si-sSRnvZFmksKhDl34-Rgv2NGFbK-"
+ },
+ {
+ "n": "国际直球对决",
+ "v": "|PLvHT0yeWYIuASUZjoW8OXe4e_UkgP7qDU"
+ },
+ {
+ "n": "全球大视野",
+ "v": "|PLvHT0yeWYIuDyLVv1yDiIxhtk1ZQ92_RY"
+ },
+ {
+ "n": "前进战略高地",
+ "v": "|PLvHT0yeWYIuBGUWA2KySjgKdPEUFuM8Dc"
+ },
+ {
+ "n": "全广角",
+ "v": "|PL7I7pJTFhwdoALXJ4QyPjaCIRNm2qBCpU"
+ }
+ ]
+ }
+ ],
+ "自媒體": [
+ {
+ "key": "tid",
+ "name": "频道主",
+ "value": [
+ {
+ "n": "cctv电视剧",
+ "v": "UC7Vl0YiY0rDlovqcCFN4yTA"
+ },
+ {
+ "n": "王剑每日观察",
+ "v": "PD王剑每日观察"
+ },
+ {
+ "n": "红岸视野",
+ "v": "PD红岸视野"
+ },
+ {
+ "n": "私人局",
+ "v": "PD私人局"
+ },
+ {
+ "n": "内部看美国",
+ "v": "PD内部看美国"
+ },
+ {
+ "n": "饭圈人间观察",
+ "v": "PD饭圈人间观察"
+ },
+ {
+ "n": "孤烟暮蝉",
+ "v": "PD孤烟暮蝉"
+ },
+ {
+ "n": "老高与小茉",
+ "v": "PD老高与小茉"
+ },
+ {
+ "n": "海洋探险",
+ "v": "UCJUIqG9JUcQ5saqXSYTF0gg"
+ }
+ ]
+ }
+ ],
+ "HDR": [
+ {
+ "key": "tid",
+ "name": "風景",
+ "value": [
+ {
+ "n": "運動",
+ "v": "GoPro 女翼裝飛行 極限自行車運動"
+ },
+ {
+ "n": "風景",
+ "v": "hdr 大自然"
+ },
+ {
+ "n": "Links TV 頻道主",
+ "v": "@linksphotograph Links TV hdr"
+ },
+ {
+ "n": "放鬆",
+ "v": "hdr 放鬆"
+ },
+ {
+ "n": "動物世界",
+ "v": "hdr 動物世界 Carnivorous Animals"
+ },
+ {
+ "n": "深海世界",
+ "v": "hdr 深海世界 Invertebrate Fish"
+ },
+ {
+ "n": "飛禽走獸",
+ "v": "hdr Birds of Prey Columbiform Birds Passerine Birds"
+ },
+ {
+ "n": "生物世界",
+ "v": "hdr 生物世界 Amphibians Reptiles"
+ }
+ ]
+ }
+ ],
+ "Full YouTube": [
+ {
+ "key": "tid",
+ "name": "頻道主",
+ "value": [
+ {
+ "n": "李子柒",
+ "v": "李子柒 Liziqi @cnliziqi"
+ },
+ {
+ "n": "滇西小哥",
+ "v": "滇西小哥 @dianxixiaoge"
+ },
+ {
+ "n": "老高與小茉",
+ "v": "老高與小茉 @laogao"
+ },
+ {
+ "n": "李永樂老師",
+ "v": "李永樂老師 @TchLiyongle"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "美食頻道主",
+ "value": [
+ {
+ "n": "美食作家王刚",
+ "v": "美食作家王刚 @chefwang"
+ },
+ {
+ "n": "小高姐的 Magic Ingredients",
+ "v": "小高姐的 Magic Ingredients @MagicIngredients"
+ },
+ {
+ "n": "小穎美食",
+ "v": "小穎美食 @XiaoYingFood"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "野外頻道主",
+ "value": [
+ {
+ "n": "野外求生",
+ "v": "@primitivetechnology9550"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "科普频道主",
+ "value": [
+ {
+ "n": "科普",
+ "v": "Mr Beast@MrBeast"
+ },
+ {
+ "n": "航天大學",
+ "v": "Airforceproud95 @Airforceproud95"
+ },
+ {
+ "n": "世界大戰",
+ "v": "TheGreatWar @TheGreatWar"
+ },
+ {
+ "n": "MarkRober",
+ "v": "Mark Rober @MarkRober"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "教材",
+ "value": [
+ {
+ "n": "不良林",
+ "v": "不良林"
+ },
+ {
+ "n": "涌哥侃侃",
+ "v": "涌哥侃侃 @ygkkk"
+ },
+ {
+ "n": "悟空的日常",
+ "v": "悟空的日常"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ],
+ "宇宙": [
+ {
+ "key": "tid",
+ "name": "科普知識",
+ "value": [
+ {
+ "n": "宇宙",
+ "v": "光年 黑洞 銀河系 空間站 太空技術"
+ },
+ {
+ "n": "粒子",
+ "v": "空間粒子 宇宙磁場 四維空間 元素 量子 光波 光源 靈魂"
+ },
+ {
+ "n": "靠蒙",
+ "v": "microorganism"
+ }
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "歷史科普",
+ "value": [
+ {
+ "n": "世界大戰",
+ "v": "世界大戰 二戰 日侵 八國聯軍"
+ },
+ {
+ "n": "人物",
+ "v": "古代名人 歷史名人 歷代祖先"
+ },
+ {
+ "n": "生物進化史",
+ "v": "人類進化 微生物進化 動物進化 地球進化"
+ },
+ {
+ "v": "歷史 History"
+ }
+ ]
+ },
+ {
+ "key": "date",
+ "name": "排序/时间",
+ "value": [
+ {
+ "n": "默认",
+ "v": ""
+ },
+ {
+ "n": "最新",
+ "v": "latest"
+ },
+ {
+ "n": "最热",
+ "v": "hottest"
+ },
+ {
+ "n": "最高",
+ "v": "favorite"
+ },
+ {
+ "n": "当天",
+ "v": "day"
+ },
+ {
+ "n": "本周",
+ "v": "week"
+ },
+ {
+ "n": "本月",
+ "v": "month"
+ }
+ ]
+ }
+ ]
+ },
+ "jx": 0,
+ "parse": 0
+}
\ No newline at end of file
diff --git a/tvbox/pg.jar b/tvbox/pg.jar
index f5111315..fd1936d3 100755
Binary files a/tvbox/pg.jar and b/tvbox/pg.jar differ
diff --git a/tvbox/pg.jar.md5 b/tvbox/pg.jar.md5
index 47d5f5c0..be3701c1 100755
--- a/tvbox/pg.jar.md5
+++ b/tvbox/pg.jar.md5
@@ -1 +1 @@
-2bcfe51e523f1b2c0cd7834db0dea613
+c3e1076058635dd37ca90220add97dc1
diff --git a/tvbox/py/ytb.py b/tvbox/py/ytb.py
new file mode 100644
index 00000000..ef091bca
--- /dev/null
+++ b/tvbox/py/ytb.py
@@ -0,0 +1,3228 @@
+#coding=utf-8
+#!/usr/bin/python
+import re
+import os
+import sys
+import json
+import html
+import time
+from urllib.parse import quote, unquote, parse_qs, urlencode, urlparse, urlunparse, urljoin
+
+import requests
+from base.spider import Spider
+
+sys.path.append('..')
+
+# ---------- 日志路径 ----------
+# DEBUG_LOG = '/storage/emulated/0/源码/ytb_debug.log'
+def _ensure_log_dir():
+ try:
+ log_dir = os.path.dirname(DEBUG_LOG)
+ if log_dir and not os.path.exists(log_dir):
+ os.makedirs(log_dir, exist_ok=True)
+ except:
+ pass
+_ensure_log_dir()
+
+def debug_log(message, data=None):
+ try:
+ log_dir = os.path.dirname(DEBUG_LOG)
+ if log_dir and not os.path.exists(log_dir):
+ os.makedirs(log_dir, exist_ok=True)
+ line = f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] {message}"
+ if data is not None:
+ if isinstance(data, (dict, list)):
+ line += ' ' + json.dumps(data, ensure_ascii=False, default=str)
+ else:
+ line += ' ' + str(data)
+ with open(DEBUG_LOG, 'a', encoding='utf-8') as f:
+ f.write(line + '\n')
+ except Exception:
+ pass
+
+# ==================== 从 youtube.json 加载分类和过滤器 ====================
+YOUTUBE_CLASSES = [
+ {"type_name": "推荐", "type_id": "YouTube 直播 24小時"},
+ {"type_id": "YouTube 新聞 Live", "type_name": "新闻"},
+ {"type_id": "劇集", "type_name": "剧集"},
+ {"type_id": "電影", "type_name": "电影"},
+ {"type_id": "动画片", "type_name": "动画片"},
+ {"type_id": "綜藝", "type_name": "综艺"},
+ {"type_id": "短劇", "type_name": "短剧"},
+ {"type_id": "紀錄片", "type_name": "纪录片"},
+ {"type_id": "體育", "type_name": "体育"},
+ {"type_id": "音樂", "type_name": "音乐"},
+ {"type_id": "放松", "type_name": "放松"},
+ {"type_id": "時尚潮流", "type_name": "时尚潮流"},
+ {"type_id": "宇宙", "type_name": "科普"},
+ {"type_id": "科技", "type_name": "科技"},
+ {"type_id": "解說", "type_name": "解说"},
+ {"type_id": "神秘", "type_name": "神秘"},
+ {"type_id": "4K", "type_name": "4K"},
+ {"type_id": "16K HDR", "type_name": "16K HDR"},
+ {"type_id": "LIST:自媒體 We Media,零度解说 @lingdujieshuo,老高與小茉 @laogao,李子柒 Liziqi @cnliziqi,康1+1 @user-mr5bh4bk8z,不良林,涌哥侃侃 @ygkkk,悟空的日常,Learn English with EnglishClass101.com,Speak English With Vanessa,Tangerine Academy,听笙阁 @tingshengge,李永樂老師 @TchLiyongle,滇西小哥 @dianxixiaoge,脑洞乌托邦 @NDWTB,自说自话的总裁 @STBoss,老肉雜談 @老肉雜談,老饭骨 @LaoFanGu,小高姐的 Magic Ingredients @MagicIngredients,小穎美食 @XiaoYingFood,primitivetechnology9550 @primitivetechnology9550,Mr Beast@MrBeast,Airforceproud95 @Airforceproud95,TheGreatWar @TheGreatWar,Mark Rober @MarkRober", "type_name": "自媒体"}
+]
+CATEGORY_FILTERS = {
+ "YouTube 直播 24小時": [
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {"n": "默认", "v": "鳳凰衛視 @phoenixtv 中天新闻不斷電直播"},
+ {"n": "鳳凰衛視", "v": "大事發生看鳳凰 鳳凰 鳳凰衛視 @phoenixtv"},
+ {"n": "中天新闻", "v": "直播 中天新闻"}
+ ]
+ }
+ ],
+ "短劇": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {"n": "時間全選", "v": ""},
+ {"n": "2025", "v": "2025"},
+ {"n": "2024", "v": "2024"},
+ {"n": "2023", "v": "2023"},
+ {"n": "2022", "v": "2022"},
+ {"n": "2021", "v": "2021"},
+ {"n": "2020", "v": "2020"},
+ {"n": "2019", "v": "2019"},
+ {"n": "2018", "v": "2018"},
+ {"n": "2017", "v": "2017"},
+ {"n": "2016", "v": "2016"},
+ {"n": "2015", "v": "2015"},
+ {"n": "2014", "v": "2014"},
+ {"n": "2013", "v": "2013"},
+ {"n": "2012", "v": "2012"},
+ {"n": "2011", "v": "2011"},
+ {"n": "2010", "v": "2010"},
+ {"n": "2009", "v": "2009"},
+ {"n": "2008", "v": "2008"},
+ {"n": "2007", "v": "2007"},
+ {"n": "2006", "v": "2006"},
+ {"n": "2005", "v": "2005"},
+ {"n": "2004", "v": "2004"},
+ {"n": "2003", "v": "2003"},
+ {"n": "2002", "v": "2002"},
+ {"n": "2001", "v": "2001"},
+ {"n": "2000", "v": "2000"},
+ {"n": "1999", "v": "1999"},
+ {"n": "1998", "v": "1998"},
+ {"n": "1997", "v": "1997"},
+ {"n": "1996", "v": "1996"},
+ {"n": "1995", "v": "1995"},
+ {"n": "1994", "v": "1994"},
+ {"n": "1993", "v": "1993"},
+ {"n": "1992", "v": "1992"},
+ {"n": "1991", "v": "1991"},
+ {"n": "1990", "v": "1990"},
+ {"n": "1989", "v": "1989"},
+ {"n": "1988", "v": "1988"},
+ {"n": "1987", "v": "1987"},
+ {"n": "1986", "v": "1986"},
+ {"n": "1985", "v": "1985"},
+ {"n": "1984", "v": "1984"},
+ {"n": "1983", "v": "1983"},
+ {"n": "1982", "v": "1982"},
+ {"n": "1981", "v": "1981"},
+ {"n": "1980", "v": "1980"},
+ {"n": "1979", "v": "1979"},
+ {"n": "1978", "v": "1978"},
+ {"n": "1977", "v": "1977"},
+ {"n": "1976", "v": "1976"},
+ {"n": "1975", "v": "1975"},
+ {"n": "1974", "v": "1974"},
+ {"n": "1973", "v": "1973"},
+ {"n": "1972", "v": "1972"},
+ {"n": "1971", "v": "1971"},
+ {"n": "1970", "v": "1970"},
+ {"n": "1969", "v": "1969"},
+ {"n": "1968", "v": "1968"},
+ {"n": "1967", "v": "1967"},
+ {"n": "1966", "v": "1966"},
+ {"n": "1965", "v": "1965"},
+ {"n": "1964", "v": "1964"},
+ {"n": "1963", "v": "1963"},
+ {"n": "1962", "v": "1962"},
+ {"n": "1961", "v": "1961"},
+ {"n": "1960", "v": "1960"},
+ {"n": "1959", "v": "1959"},
+ {"n": "1958", "v": "1958"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "短劇",
+ "value": [
+ {"n": "抖音", "v": "抖音 短剧"},
+ {"n": "快手", "v": "快手 短剧"},
+ {"n": "大陆", "v": "大陆 短剧"},
+ {"n": "香港", "v": "香港 短剧"},
+ {"n": "澳門", "v": "澳門 短剧"},
+ {"n": "台湾", "v": "台湾 短剧"},
+ {"n": "新加坡", "v": "新加坡 短剧"},
+ {"n": "馬來西亞", "v": "馬來西亞 短剧"},
+ {"n": "泰國", "v": "泰國 短剧"},
+ {"n": "越南", "v": "越南 短剧"},
+ {"n": "印度", "v": "印度 短剧"},
+ {"n": "韩国", "v": "韩国 短剧"},
+ {"n": "日本", "v": "日本 短剧"},
+ {"n": "欧美", "v": "欧美 短剧"},
+ {"n": "腾讯", "v": "腾讯 短剧"},
+ {"n": "爱奇艺", "v": "爱奇艺 短剧"},
+ {"n": "优酷", "v": "优酷 短剧"},
+ {"n": "芒果", "v": "芒果TV 短剧"},
+ {"n": "搜狐", "v": "搜狐 短剧"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "短劇",
+ "value": [
+ {"n": "都市", "v": "@Urbanshort-TV 都市 短劇"},
+ {"n": "爱情", "v": "爱情 短劇"},
+ {"n": "复仇", "v": "复仇 短劇"},
+ {"n": "霸总", "v": "霸总 短劇"},
+ {"n": "萌宝", "v": "萌宝 短劇"},
+ {"n": "古装", "v": "古装 短劇"},
+ {"n": "穿越", "v": "穿越 短劇"},
+ {"n": "喜剧", "v": "喜剧 短劇"},
+ {"n": "奇幻", "v": "奇幻 短劇"},
+ {"n": "九酱爱追剧", "v": "@NineSauceDramaTV"},
+ {"n": "百万好剧场", "v": "@1-pw5ox"},
+ {"n": "咖啡追剧", "v": "@@coffeedrama605"},
+ {"n": "斗罗短剧", "v": "@DouluoDrama123 斗羅短劇"},
+ {"n": "嘟嘟剧场", "v": "@DUDUJUCHANG"},
+ {"n": "牛牛短剧", "v": "@niuniuduanju"}
+ ]
+ }
+ ],
+ "动画片": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {"n": "時間全選", "v": ""},
+ {"n": "2024", "v": "2024"},
+ {"n": "2023", "v": "2023"},
+ {"n": "2022", "v": "2022"},
+ {"n": "2021", "v": "2021"},
+ {"n": "2020", "v": "2020"},
+ {"n": "2019", "v": "2019"},
+ {"n": "2018", "v": "2018"},
+ {"n": "2017", "v": "2017"},
+ {"n": "2016", "v": "2016"},
+ {"n": "2015", "v": "2015"},
+ {"n": "2014", "v": "2014"},
+ {"n": "2013", "v": "2013"},
+ {"n": "2012", "v": "2012"},
+ {"n": "2011", "v": "2011"},
+ {"n": "2010", "v": "2010"},
+ {"n": "2009", "v": "2009"},
+ {"n": "2008", "v": "2008"},
+ {"n": "2007", "v": "2007"},
+ {"n": "2006", "v": "2006"},
+ {"n": "2005", "v": "2005"},
+ {"n": "2004", "v": "2004"},
+ {"n": "2003", "v": "2003"},
+ {"n": "2002", "v": "2002"},
+ {"n": "2001", "v": "2001"},
+ {"n": "2000", "v": "2000"},
+ {"n": "1999", "v": "1999"},
+ {"n": "1998", "v": "1998"},
+ {"n": "1997", "v": "1997"},
+ {"n": "1996", "v": "1996"},
+ {"n": "1995", "v": "1995"},
+ {"n": "1994", "v": "1994"},
+ {"n": "1993", "v": "1993"},
+ {"n": "1992", "v": "1992"},
+ {"n": "1991", "v": "1991"},
+ {"n": "1990", "v": "1990"},
+ {"n": "1989", "v": "1989"},
+ {"n": "1988", "v": "1988"},
+ {"n": "1987", "v": "1987"},
+ {"n": "1986", "v": "1986"},
+ {"n": "1985", "v": "1985"},
+ {"n": "1984", "v": "1984"},
+ {"n": "1983", "v": "1983"},
+ {"n": "1982", "v": "1982"},
+ {"n": "1981", "v": "1981"},
+ {"n": "1980", "v": "1980"},
+ {"n": "1979", "v": "1979"},
+ {"n": "1978", "v": "1978"},
+ {"n": "1977", "v": "1977"},
+ {"n": "1976", "v": "1976"},
+ {"n": "1975", "v": "1975"},
+ {"n": "1974", "v": "1974"},
+ {"n": "1973", "v": "1973"},
+ {"n": "1972", "v": "1972"},
+ {"n": "1971", "v": "1971"},
+ {"n": "1970", "v": "1970"},
+ {"n": "1969", "v": "1969"},
+ {"n": "1968", "v": "1968"},
+ {"n": "1967", "v": "1967"},
+ {"n": "1966", "v": "1966"},
+ {"n": "1965", "v": "1965"},
+ {"n": "1964", "v": "1964"},
+ {"n": "1963", "v": "1963"},
+ {"n": "1962", "v": "1962"},
+ {"n": "1961", "v": "1961"},
+ {"n": "1960", "v": "1960"},
+ {"n": "1959", "v": "1959"},
+ {"n": "1958", "v": "1958"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {"n": "默认中文国漫", "v": "國漫 劇集 3D"},
+ {"n": "默认", "v": "animation"},
+ {"n": "儿童早教", "v": "儿童早教"},
+ {"n": "儿童歌曲", "v": "儿童歌曲"},
+ {"n": "儿童音乐", "v": "儿童音乐"},
+ {"n": "儿童绘画", "v": "儿童绘画"},
+ {"n": "宝宝巴士", "v": "宝宝巴士"},
+ {"n": "儿歌多多", "v": "儿歌多多"},
+ {"n": "儿童英语启蒙", "v": "儿童英语启蒙"},
+ {"n": "儿童启蒙故事", "v": "儿童启蒙故事"},
+ {"n": "儿童安全教育", "v": "儿童安全教育"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {"n": "默认英文国漫", "v": "3D Chinese cartoon"},
+ {"n": "小猪佩奇", "v": "@PeppaPigChineseOfficial 小猪佩奇 中文官方 - Peppa Pig"},
+ {"n": "CoComelon", "v": "@CoComelon"},
+ {"n": "合集", "v": "Anime ENG SUB 合集"},
+ {"n": "国漫社", "v": "@Animation 次元 苍穹动漫 PP看动漫 公馆"},
+ {"n": "国漫工厂", "v": "@3DGuoman SUB"},
+ {"n": "阅文动漫", "v": "@yuewenanimation SUB"},
+ {"n": "哔哩", "v": "@madebybilibili 哔哩动漫"},
+ {"n": "腾讯", "v": "@TencentVideoAnimation SUB"},
+ {"n": "优酷", "v": "@youkuanimation 优酷动漫"},
+ {"n": "爱奇艺", "v": "@iQIYIAnime 爱奇艺动漫"}
+ ]
+ }
+ ],
+ "YouTube 新聞 Live": [
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {"n": "默认", "v": "中天新闻24小時 大事發生看鳳凰 鳳凰 鳳凰衛視 @phoenixtv 三立LIVE新闻 台視新聞 東森新聞 TVBSNEWS"},
+ {"n": "鳳凰衛視", "v": "大事發生看鳳凰 鳳凰 鳳凰衛視 @phoenixtv"},
+ {"n": "中天新闻", "v": "直播 中天新闻"},
+ {"n": "TVBSEWS", "v": "直播 TVBSNEWS"},
+ {"n": "東森新聞 CH51", "v": "直播 東森新聞 CH51"},
+ {"n": "三立LIVE新闻", "v": "直播 三立LIVE新闻 @setnews "},
+ {"n": "台視新聞台HD", "v": "直播 台視新聞 TTV NEWS"},
+ {"n": "中視新聞 HD", "v": "直播 Taiwan CTV news HD Live"},
+ {"n": "港台", "v": "直播 港台"},
+ {"n": "赛事", "v": "直播 赛事"},
+ {"n": "CCTV", "v": "直播 CCTV"},
+ {"n": "CNA", "v": "@channelnewsasia"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {"n": "Live", "v": "live"},
+ {"n": "CNN", "v": "live CNN"},
+ {"n": "BBC", "v": "live BBC"},
+ {"n": "CBS", "v": "@CBSNews"},
+ {"n": "ABC", "v": "live ABC NEWS"},
+ {"n": "NBC", "v": "@NBCNews"},
+ {"n": "LiveNOW from FOX", "v": "@livenowfox"},
+ {"n": "Sky News", "v": "@SkyNews"},
+ {"n": "euronews", "v": "@euronews"},
+ {"n": "GBNews", "v": "@GBNewsOnline"},
+ {"n": "Al Jazeera English", "v": "@aljazeeraenglish"},
+ {"n": "ABCNews (Australia)", "v": "@abcnewsaustralia"},
+ {"n": "FRANCE 24 English", "v": "live FRANCE 24 English"},
+ {"n": "Reuters", "v": "live Reuters"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {"n": "默认", "v": "News"},
+ {"n": "News", "v": "news"},
+ {"n": "时政", "v": "时政 新闻"},
+ {"n": "体育", "v": "体育 新闻"},
+ {"n": "大陆", "v": "大陆 新闻"},
+ {"n": "HKTVB", "v": "@tvbnewsofficial"},
+ {"n": "少康戰情室", "v": " @tvbssituationroom"},
+ {"n": "政经龙凤配", "v": " @觀點"},
+ {"n": "FOCUS全球新闻", "v": " @TVBSNEWS FOCUS全球新闻"},
+ {"n": "新闻大白话", "v": " @TVBSNEWS 新闻大白话"},
+ {"n": "东森新闻", "v": "关键时刻新闻"},
+ {"n": "港台", "v": "港台 新闻"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {"n": "科技與發展", "v": "閱兵 奧運會 航母 航空母艦 潛水艇 核武器 坦克 武器 卫星 火箭 輪船 飛機 飛碟"},
+ {"n": "法治与社会", "v": "法治 法制 社会 卖淫 淫秽 污蔑 赌博 毒品 裸聊 诈骗 拐卖 强奸 勒索"},
+ {"n": "News", "v": "News"},
+ {"n": "CNN", "v": "CNN news"},
+ {"n": "BBC", "v": "BBC news"}
+ ]
+ }
+ ],
+ "劇集": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {"n": "時間全選", "v": ""},
+ {"n": "2024", "v": "2024"},
+ {"n": "2023", "v": "2023"},
+ {"n": "2022", "v": "2022"},
+ {"n": "2021", "v": "2021"},
+ {"n": "2020", "v": "2020"},
+ {"n": "2019", "v": "2019"},
+ {"n": "2018", "v": "2018"},
+ {"n": "2017", "v": "2017"},
+ {"n": "2016", "v": "2016"},
+ {"n": "2015", "v": "2015"},
+ {"n": "2014", "v": "2014"},
+ {"n": "2013", "v": "2013"},
+ {"n": "2012", "v": "2012"},
+ {"n": "2011", "v": "2011"},
+ {"n": "2010", "v": "2010"},
+ {"n": "2009", "v": "2009"},
+ {"n": "2008", "v": "2008"},
+ {"n": "2007", "v": "2007"},
+ {"n": "2006", "v": "2006"},
+ {"n": "2005", "v": "2005"},
+ {"n": "2004", "v": "2004"},
+ {"n": "2003", "v": "2003"},
+ {"n": "2002", "v": "2002"},
+ {"n": "2001", "v": "2001"},
+ {"n": "2000", "v": "2000"},
+ {"n": "1999", "v": "1999"},
+ {"n": "1998", "v": "1998"},
+ {"n": "1997", "v": "1997"},
+ {"n": "1996", "v": "1996"},
+ {"n": "1995", "v": "1995"},
+ {"n": "1994", "v": "1994"},
+ {"n": "1993", "v": "1993"},
+ {"n": "1992", "v": "1992"},
+ {"n": "1991", "v": "1991"},
+ {"n": "1990", "v": "1990"},
+ {"n": "1989", "v": "1989"},
+ {"n": "1988", "v": "1988"},
+ {"n": "1987", "v": "1987"},
+ {"n": "1986", "v": "1986"},
+ {"n": "1985", "v": "1985"},
+ {"n": "1984", "v": "1984"},
+ {"n": "1983", "v": "1983"},
+ {"n": "1982", "v": "1982"},
+ {"n": "1981", "v": "1981"},
+ {"n": "1980", "v": "1980"},
+ {"n": "1979", "v": "1979"},
+ {"n": "1978", "v": "1978"},
+ {"n": "1977", "v": "1977"},
+ {"n": "1976", "v": "1976"},
+ {"n": "1975", "v": "1975"},
+ {"n": "1974", "v": "1974"},
+ {"n": "1973", "v": "1973"},
+ {"n": "1972", "v": "1972"},
+ {"n": "1971", "v": "1971"},
+ {"n": "1970", "v": "1970"},
+ {"n": "1969", "v": "1969"},
+ {"n": "1968", "v": "1968"},
+ {"n": "1967", "v": "1967"},
+ {"n": "1966", "v": "1966"},
+ {"n": "1965", "v": "1965"},
+ {"n": "1964", "v": "1964"},
+ {"n": "1963", "v": "1963"},
+ {"n": "1962", "v": "1962"},
+ {"n": "1961", "v": "1961"},
+ {"n": "1960", "v": "1960"},
+ {"n": "1959", "v": "1959"},
+ {"n": "1958", "v": "1958"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {"n": "默認", "v": ""},
+ {"n": "華語熱播電視劇官方頻道", "v": "華語熱播電視劇官方頻道"},
+ {"n": "TVB国语", "v": "TVB Drama 国语剧场"},
+ {"n": "粵劇", "v": "粵劇 劇集"},
+ {"n": "TVB", "v": "@TVB"},
+ {"n": "国剧放映社", "v": "国剧放映社"},
+ {"n": "大陆", "v": "大陆 剧集"},
+ {"n": "腾讯", "v": "腾讯 剧集"},
+ {"n": "爱奇艺", "v": "爱奇艺 剧集"},
+ {"n": "优酷", "v": "优酷 剧集"},
+ {"n": "芒果", "v": "芒果TV 剧集"},
+ {"n": "搜狐", "v": "搜狐 剧集"},
+ {"n": "华数", "v": "华数 剧集"},
+ {"n": "港台", "v": "港台 剧集"},
+ {"n": "美国", "v": "美国 Full Episode 完整剧集"},
+ {"n": "Netflix", "v": "Netflix Full Episode 完整剧集"},
+ {"n": "Disney", "v": "disney Full Episode 完整剧集"},
+ {"n": "Apple", "v": "apple Full Episode 完整剧集"},
+ {"n": "Amazon", "v": "amazon Full Episode 完整剧集"},
+ {"n": "HBO", "v": "hbo Full Episode 完整剧集"},
+ {"n": "韩国", "v": "韩国 剧集"},
+ {"n": "日本", "v": "日本 剧集"},
+ {"n": "英国", "v": "英国 Full Episode 完整剧集"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {"n": "Drama", "v": "Full Episode drama"},
+ {"n": "US", "v": "drama Full Episode US"},
+ {"n": "Netflix", "v": "netflix Full Episode drama"},
+ {"n": "Disney", "v": "disney Full Episode drama"},
+ {"n": "Apple", "v": "apple Full Episode drama"},
+ {"n": "Amazon", "v": "amazon Full Episode drama"},
+ {"n": "HBO", "v": "hbo Full Episode drama"},
+ {"n": "Korea", "v": "korea Full Episode drama"},
+ {"n": "Japan", "v": "japan Full Episode drama"},
+ {"n": "UK", "v": "uk Full Episode drama"}
+ ]
+ }
+ ],
+ "電影": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {"n": "時間全選", "v": ""},
+ {"n": "2026", "v": "2026"},
+ {"n": "2025", "v": "2025"},
+ {"n": "2024", "v": "2024"},
+ {"n": "2023", "v": "2023"},
+ {"n": "2022", "v": "2022"},
+ {"n": "2021", "v": "2021"},
+ {"n": "2020", "v": "2020"},
+ {"n": "2019", "v": "2019"},
+ {"n": "2018", "v": "2018"},
+ {"n": "2017", "v": "2017"},
+ {"n": "2016", "v": "2016"},
+ {"n": "2015", "v": "2015"},
+ {"n": "2014", "v": "2014"},
+ {"n": "2013", "v": "2013"},
+ {"n": "2012", "v": "2012"},
+ {"n": "2011", "v": "2011"},
+ {"n": "2010", "v": "2010"},
+ {"n": "2009", "v": "2009"},
+ {"n": "2008", "v": "2008"},
+ {"n": "2007", "v": "2007"},
+ {"n": "2006", "v": "2006"},
+ {"n": "2005", "v": "2005"},
+ {"n": "2004", "v": "2004"},
+ {"n": "2003", "v": "2003"},
+ {"n": "2002", "v": "2002"},
+ {"n": "2001", "v": "2001"},
+ {"n": "2000", "v": "2000"},
+ {"n": "1999", "v": "1999"},
+ {"n": "1998", "v": "1998"},
+ {"n": "1997", "v": "1997"},
+ {"n": "1996", "v": "1996"},
+ {"n": "1995", "v": "1995"},
+ {"n": "1994", "v": "1994"},
+ {"n": "1993", "v": "1993"},
+ {"n": "1992", "v": "1992"},
+ {"n": "1991", "v": "1991"},
+ {"n": "1990", "v": "1990"},
+ {"n": "1989", "v": "1989"},
+ {"n": "1988", "v": "1988"},
+ {"n": "1987", "v": "1987"},
+ {"n": "1986", "v": "1986"},
+ {"n": "1985", "v": "1985"},
+ {"n": "1984", "v": "1984"},
+ {"n": "1983", "v": "1983"},
+ {"n": "1982", "v": "1982"},
+ {"n": "1981", "v": "1981"},
+ {"n": "1980", "v": "1980"},
+ {"n": "1979", "v": "1979"},
+ {"n": "1978", "v": "1978"},
+ {"n": "1977", "v": "1977"},
+ {"n": "1976", "v": "1976"},
+ {"n": "1975", "v": "1975"},
+ {"n": "1974", "v": "1974"},
+ {"n": "1973", "v": "1973"},
+ {"n": "1972", "v": "1972"},
+ {"n": "1971", "v": "1971"},
+ {"n": "1970", "v": "1970"},
+ {"n": "1969", "v": "1969"},
+ {"n": "1968", "v": "1968"},
+ {"n": "1967", "v": "1967"},
+ {"n": "1966", "v": "1966"},
+ {"n": "1965", "v": "1965"},
+ {"n": "1964", "v": "1964"},
+ {"n": "1963", "v": "1963"},
+ {"n": "1962", "v": "1962"},
+ {"n": "1961", "v": "1961"},
+ {"n": "1960", "v": "1960"},
+ {"n": "1959", "v": "1959"},
+ {"n": "1958", "v": "1958"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {"n": "默認", "v": ""},
+ {"n": "大陆", "v": "大陆 电影"},
+ {"n": "腾讯", "v": "腾讯 电影"},
+ {"n": "爱奇艺", "v": "爱奇艺 电影"},
+ {"n": "优酷", "v": "优酷 电影"},
+ {"n": "芒果", "v": "芒果TV 电影"},
+ {"n": "搜狐", "v": "搜狐 电影"},
+ {"n": "港台", "v": "港台 电影"},
+ {"n": "美国", "v": "美国 电影"},
+ {"n": "Netflix", "v": "netflix Full movie 电影"},
+ {"n": "Disney", "v": "disney Full movie 电影"},
+ {"n": "Apple", "v": "apple Full movie 电影"},
+ {"n": "Amazon", "v": "amazon Full movie 电影"},
+ {"n": "HBO", "v": "hbo Full movie 电影"},
+ {"n": "韩国", "v": "韩国 Full movie 电影"},
+ {"n": "日本", "v": "日本 Full movie 电影"},
+ {"n": "英国", "v": "英国 Full movie 电影"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {"n": "movie", "v": "youtube movies Full movie"},
+ {"n": "US", "v": "us Full movie movie"},
+ {"n": "Netflix movie", "v": "netflix Full movie movie"},
+ {"n": "Disney", "v": "disney Full movie movie"},
+ {"n": "Apple", "v": "apple Full movie movie"},
+ {"n": "Amazon", "v": "amazon Full movie movie"},
+ {"n": "HBO", "v": "hbo Full movie movie"},
+ {"n": "Koera", "v": "korea Full movie movie"},
+ {"n": "Japan", "v": "japan Full movie movie"},
+ {"n": "UK", "v": "uk Full movie movie"}
+ ]
+ }
+ ],
+ "綜藝": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {"n": "時間全選", "v": ""},
+ {"n": "2024", "v": "2024"},
+ {"n": "2023", "v": "2023"},
+ {"n": "2022", "v": "2022"},
+ {"n": "2021", "v": "2021"},
+ {"n": "2020", "v": "2020"},
+ {"n": "2019", "v": "2019"},
+ {"n": "2018", "v": "2018"},
+ {"n": "2017", "v": "2017"},
+ {"n": "2016", "v": "2016"},
+ {"n": "2015", "v": "2015"},
+ {"n": "2014", "v": "2014"},
+ {"n": "2013", "v": "2013"},
+ {"n": "2012", "v": "2012"},
+ {"n": "2011", "v": "2011"},
+ {"n": "2010", "v": "2010"},
+ {"n": "2009", "v": "2009"},
+ {"n": "2008", "v": "2008"},
+ {"n": "2007", "v": "2007"},
+ {"n": "2006", "v": "2006"},
+ {"n": "2005", "v": "2005"},
+ {"n": "2004", "v": "2004"},
+ {"n": "2003", "v": "2003"},
+ {"n": "2002", "v": "2002"},
+ {"n": "2001", "v": "2001"},
+ {"n": "2000", "v": "2000"},
+ {"n": "1999", "v": "1999"},
+ {"n": "1998", "v": "1998"},
+ {"n": "1997", "v": "1997"},
+ {"n": "1996", "v": "1996"},
+ {"n": "1995", "v": "1995"},
+ {"n": "1994", "v": "1994"},
+ {"n": "1993", "v": "1993"},
+ {"n": "1992", "v": "1992"},
+ {"n": "1991", "v": "1991"},
+ {"n": "1990", "v": "1990"},
+ {"n": "1989", "v": "1989"},
+ {"n": "1988", "v": "1988"},
+ {"n": "1987", "v": "1987"},
+ {"n": "1986", "v": "1986"},
+ {"n": "1985", "v": "1985"},
+ {"n": "1984", "v": "1984"},
+ {"n": "1983", "v": "1983"},
+ {"n": "1982", "v": "1982"},
+ {"n": "1981", "v": "1981"},
+ {"n": "1980", "v": "1980"},
+ {"n": "1979", "v": "1979"},
+ {"n": "1978", "v": "1978"},
+ {"n": "1977", "v": "1977"},
+ {"n": "1976", "v": "1976"},
+ {"n": "1975", "v": "1975"},
+ {"n": "1974", "v": "1974"},
+ {"n": "1973", "v": "1973"},
+ {"n": "1972", "v": "1972"},
+ {"n": "1971", "v": "1971"},
+ {"n": "1970", "v": "1970"},
+ {"n": "1969", "v": "1969"},
+ {"n": "1968", "v": "1968"},
+ {"n": "1967", "v": "1967"},
+ {"n": "1966", "v": "1966"},
+ {"n": "1965", "v": "1965"},
+ {"n": "1964", "v": "1964"},
+ {"n": "1963", "v": "1963"},
+ {"n": "1962", "v": "1962"},
+ {"n": "1961", "v": "1961"},
+ {"n": "1960", "v": "1960"},
+ {"n": "1959", "v": "1959"},
+ {"n": "1958", "v": "1958"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {"n": "默认", "v": "Variety show"},
+ {"n": "大陆", "v": "大陆 综艺"},
+ {"n": "芒果", "v": "芒果 综艺"},
+ {"n": "腾讯", "v": "腾讯 综艺"},
+ {"n": "爱奇艺", "v": "爱奇艺 综艺"},
+ {"n": "优酷", "v": "优酷 综艺"},
+ {"n": "港台", "v": "港台 综艺"},
+ {"n": "美国", "v": "美国 综艺"},
+ {"n": "Netflix", "v": "Netflix 综艺"},
+ {"n": "韩国", "v": "CRAVITY on Variety Shows 韩国 综艺"},
+ {"n": "日本", "v": "日本 综艺"},
+ {"n": "英国", "v": "英国 综艺"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {"n": "Variety", "v": "variety"},
+ {"n": "Netflix variety", "v": "netflix variety"},
+ {"n": "Korea", "v": "korea variety"},
+ {"n": "Japan", "v": "japan variety"},
+ {"n": "UK", "v": "uk variety"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "小品",
+ "value": [
+ {"n": "春晚小品", "v": "春晚小品"},
+ {"n": "开心麻花", "v": "开心麻花"},
+ {"n": "屌丝男士", "v": "屌丝男士"},
+ {"n": "喜剧综艺", "v": "喜剧综艺"},
+ {"n": "单口", "v": "单口 相声"},
+ {"n": "群口", "v": "群口 相声"},
+ {"n": "德云社", "v": "德云社"},
+ {"n": "青曲社", "v": "青曲社"},
+ {"n": "郭德纲", "v": "郭德纲"},
+ {"n": "岳云鹏", "v": "岳云鹏"},
+ {"n": "曹云金", "v": "曹云金"},
+ {"n": "评书", "v": "评书"},
+ {"n": "小曲", "v": "小曲"},
+ {"n": "赵本山", "v": "赵本山"},
+ {"n": "陈佩斯", "v": "陈佩斯"},
+ {"n": "冯巩", "v": "冯巩"},
+ {"n": "宋小宝", "v": "宋小宝"},
+ {"n": "赵丽蓉", "v": "赵丽蓉"},
+ {"n": "潘长江", "v": "潘长江"},
+ {"n": "郭冬临", "v": "郭冬临"},
+ {"n": "严顺开", "v": "严顺开"},
+ {"n": "文松", "v": "文松"}
+ ]
+ }
+ ],
+ "紀錄片": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {"n": "時間全選", "v": ""},
+ {"n": "2024", "v": "2024"},
+ {"n": "2023", "v": "2023"},
+ {"n": "2022", "v": "2022"},
+ {"n": "2021", "v": "2021"},
+ {"n": "2020", "v": "2020"},
+ {"n": "2019", "v": "2019"},
+ {"n": "2018", "v": "2018"},
+ {"n": "2017", "v": "2017"},
+ {"n": "2016", "v": "2016"},
+ {"n": "2015", "v": "2015"},
+ {"n": "2014", "v": "2014"},
+ {"n": "2013", "v": "2013"},
+ {"n": "2012", "v": "2012"},
+ {"n": "2011", "v": "2011"},
+ {"n": "2010", "v": "2010"},
+ {"n": "2009", "v": "2009"},
+ {"n": "2008", "v": "2008"},
+ {"n": "2007", "v": "2007"},
+ {"n": "2006", "v": "2006"},
+ {"n": "2005", "v": "2005"},
+ {"n": "2004", "v": "2004"},
+ {"n": "2003", "v": "2003"},
+ {"n": "2002", "v": "2002"},
+ {"n": "2001", "v": "2001"},
+ {"n": "2000", "v": "2000"},
+ {"n": "1999", "v": "1999"},
+ {"n": "1998", "v": "1998"},
+ {"n": "1997", "v": "1997"},
+ {"n": "1996", "v": "1996"},
+ {"n": "1995", "v": "1995"},
+ {"n": "1994", "v": "1994"},
+ {"n": "1993", "v": "1993"},
+ {"n": "1992", "v": "1992"},
+ {"n": "1991", "v": "1991"},
+ {"n": "1990", "v": "1990"},
+ {"n": "1989", "v": "1989"},
+ {"n": "1988", "v": "1988"},
+ {"n": "1987", "v": "1987"},
+ {"n": "1986", "v": "1986"},
+ {"n": "1985", "v": "1985"},
+ {"n": "1984", "v": "1984"},
+ {"n": "1983", "v": "1983"},
+ {"n": "1982", "v": "1982"},
+ {"n": "1981", "v": "1981"},
+ {"n": "1980", "v": "1980"},
+ {"n": "1979", "v": "1979"},
+ {"n": "1978", "v": "1978"},
+ {"n": "1977", "v": "1977"},
+ {"n": "1976", "v": "1976"},
+ {"n": "1975", "v": "1975"},
+ {"n": "1974", "v": "1974"},
+ {"n": "1973", "v": "1973"},
+ {"n": "1972", "v": "1972"},
+ {"n": "1971", "v": "1971"},
+ {"n": "1970", "v": "1970"},
+ {"n": "1969", "v": "1969"},
+ {"n": "1968", "v": "1968"},
+ {"n": "1967", "v": "1967"},
+ {"n": "1966", "v": "1966"},
+ {"n": "1965", "v": "1965"},
+ {"n": "1964", "v": "1964"},
+ {"n": "1963", "v": "1963"},
+ {"n": "1962", "v": "1962"},
+ {"n": "1961", "v": "1961"},
+ {"n": "1960", "v": "1960"},
+ {"n": "1959", "v": "1959"},
+ {"n": "1958", "v": "1958"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {"n": "地區🎶排序", "v": "歷史記錄片 地球記錄片 宇宙記錄片 海洋記錄片 戰爭記錄片 大自然生存記錄片"},
+ {"n": "默认", "v": "documentary"},
+ {"n": "BBC纪录片", "v": "BBC 纪录片"},
+ {"n": "国家地理", "v": "国家地理 纪录片"},
+ {"n": "Netflix纪录片", "v": "netflix 纪录片"},
+ {"n": "BBC", "v": "BBC documentary"},
+ {"n": "National Geographic", "v": "National Geographic documentary"},
+ {"n": "Netflix", "v": "netflix documentary"},
+ {"n": "历史", "v": "历史 纪录片"},
+ {"n": "野性", "v": "野性 纪录片"},
+ {"n": "地球", "v": "地球 纪录片"},
+ {"n": "宇宙", "v": "宇宙 纪录片"},
+ {"n": "海洋", "v": "海洋 纪录片"},
+ {"n": "人文", "v": "人文 纪录片"},
+ {"n": "战争", "v": "战争 纪录片"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {"n": "History", "v": "Full history documentary"},
+ {"n": "WILD", "v": "Full wild documentary"},
+ {"n": "Earch", "v": "Full earth documentary"},
+ {"n": "Universe", "v": "Full universe documentary"},
+ {"n": "Oceans", "v": "Full oceans documentary"},
+ {"n": "Humanism", "v": "Full humanism documentary"},
+ {"n": "Wars", "v": "Full war documentary"}
+ ]
+ }
+ ],
+ "音樂": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {"n": "時間全選", "v": ""},
+ {"n": "2024", "v": "2024"},
+ {"n": "2023", "v": "2023"},
+ {"n": "2022", "v": "2022"},
+ {"n": "2021", "v": "2021"},
+ {"n": "2020", "v": "2020"},
+ {"n": "2019", "v": "2019"},
+ {"n": "2018", "v": "2018"},
+ {"n": "2017", "v": "2017"},
+ {"n": "2016", "v": "2016"},
+ {"n": "2015", "v": "2015"},
+ {"n": "2014", "v": "2014"},
+ {"n": "2013", "v": "2013"},
+ {"n": "2012", "v": "2012"},
+ {"n": "2011", "v": "2011"},
+ {"n": "2010", "v": "2010"},
+ {"n": "2009", "v": "2009"},
+ {"n": "2008", "v": "2008"},
+ {"n": "2007", "v": "2007"},
+ {"n": "2006", "v": "2006"},
+ {"n": "2005", "v": "2005"},
+ {"n": "2004", "v": "2004"},
+ {"n": "2003", "v": "2003"},
+ {"n": "2002", "v": "2002"},
+ {"n": "2001", "v": "2001"},
+ {"n": "2000", "v": "2000"},
+ {"n": "1999", "v": "1999"},
+ {"n": "1998", "v": "1998"},
+ {"n": "1997", "v": "1997"},
+ {"n": "1996", "v": "1996"},
+ {"n": "1995", "v": "1995"},
+ {"n": "1994", "v": "1994"},
+ {"n": "1993", "v": "1993"},
+ {"n": "1992", "v": "1992"},
+ {"n": "1991", "v": "1991"},
+ {"n": "1990", "v": "1990"},
+ {"n": "1989", "v": "1989"},
+ {"n": "1988", "v": "1988"},
+ {"n": "1987", "v": "1987"},
+ {"n": "1986", "v": "1986"},
+ {"n": "1985", "v": "1985"},
+ {"n": "1984", "v": "1984"},
+ {"n": "1983", "v": "1983"},
+ {"n": "1982", "v": "1982"},
+ {"n": "1981", "v": "1981"},
+ {"n": "1980", "v": "1980"},
+ {"n": "1979", "v": "1979"},
+ {"n": "1978", "v": "1978"},
+ {"n": "1977", "v": "1977"},
+ {"n": "1976", "v": "1976"},
+ {"n": "1975", "v": "1975"},
+ {"n": "1974", "v": "1974"},
+ {"n": "1973", "v": "1973"},
+ {"n": "1972", "v": "1972"},
+ {"n": "1971", "v": "1971"},
+ {"n": "1970", "v": "1970"},
+ {"n": "1969", "v": "1969"},
+ {"n": "1968", "v": "1968"},
+ {"n": "1967", "v": "1967"},
+ {"n": "1966", "v": "1966"},
+ {"n": "1965", "v": "1965"},
+ {"n": "1964", "v": "1964"},
+ {"n": "1963", "v": "1963"},
+ {"n": "1962", "v": "1962"},
+ {"n": "1961", "v": "1961"},
+ {"n": "1960", "v": "1960"},
+ {"n": "1959", "v": "1959"},
+ {"n": "1958", "v": "1958"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "地區",
+ "value": [
+ {"n": "華語音樂", "v": "華語音樂"},
+ {"n": "華語MV", "v": "華語MV"},
+ {"n": "环球视听", "v": "环球视听1980 @RippleOfficialEvent"},
+ {"n": "YouTube 點閱率最高", "v": "YouTube 點閱率最高觀看次數最多華語歌曲"},
+ {"n": "海外抖音", "v": "TikTok 翻唱 抖音 音樂"},
+ {"n": "粵語", "v": "粵語 音樂"},
+ {"n": "國語", "v": "國語 音樂"},
+ {"n": "大陆", "v": "大陆 音乐"},
+ {"n": "香港", "v": "香港 音乐"},
+ {"n": "台湾", "v": "台湾 音乐"},
+ {"n": "新加坡", "v": "新加坡 音乐"},
+ {"n": "馬來西亞", "v": "馬來西亞 音乐"},
+ {"n": "泰國", "v": "泰國 音乐"},
+ {"n": "印度", "v": "印度 音乐"},
+ {"n": "韩国", "v": "韩国 音乐"},
+ {"n": "日本", "v": "日本 音乐"},
+ {"n": "欧美", "v": "欧美 音乐"},
+ {"n": "时光音乐会MV", "v": "时光音乐会MV"},
+ {"n": "中国好声音MV", "v": "中国好声音MV"},
+ {"n": "滚石MV", "v": "滚石MV"},
+ {"n": "古风MV", "v": "古风MV"},
+ {"n": "韩国女团MV", "v": "韩国女团MV"},
+ {"n": "欧美", "v": "欧美 音乐"},
+ {"n": "BillBoard", "v": "BillBoard"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "愛好",
+ "value": [
+ {"n": "合辑", "v": "合辑"},
+ {"n": "超級女聲", "v": "超級女聲"},
+ {"n": "whitneyhouston", "v": "@whitneyhoustonmusic"},
+ {"n": "玛丽.凯丽", "v": "@MariahCarey"},
+ {"n": "LadyGaga", "v": "@LadyGaga"},
+ {"n": "G.E.M邓紫棋", "v": "@gem0816"},
+ {"n": "麦当娜", "v": "@madonna"},
+ {"n": "Taylor Swift", "v": "@TaylorSwift"},
+ {"n": "舞曲", "v": "蹦迪現場 慢搖 夜店 低音 女聲 "},
+ {"n": "80-90", "v": "80 90 音樂"},
+ {"n": "人聲", "v": "人聲 音樂"},
+ {"n": "A8製造", "v": "A8製造 工體音樂"},
+ {"n": "中国MTV", "v": "@ChineseMusicTV"},
+ {"n": "滚石", "v": "@RockRecordsTaipei"},
+ {"n": "失傳已久", "v": "嗨音雷虎 失傳 嗨音會所 音樂"},
+ {"n": "重低音DJ", "v": "3D 8D 慢搖 重低音 音樂"},
+ {"n": "車載舞曲", "v": "車載慢搖DJ歌曲串燒 深水炸彈DJ歌曲串燒 越南鼓DJ歌曲串燒 音樂"},
+ {"n": "超級女聲", "v": "超級女聲"},
+ {"n": "tseries", "v": "@tseries"},
+ {"n": "戲曲", "v": "秦腔 京剧 越剧 黄梅戏 评剧 豫剧 昆曲 高腔 梆子腔 河北梆子 晋剧 蒲剧 雁剧 上党梆子 武安平调 二人台 吉剧 龙江剧 越调 河南曲剧 山东梆子 淮剧 滑稽戏 婺剧 绍剧 徽剧 闽剧 莆仙戏 梨园戏 高甲戏 赣剧 采茶戏 汉剧 湘剧 祁剧 湖南花鼓戏 粤剧 潮剧 桂剧 彩调 壮剧 川剧 黔剧 滇剧 傣剧 藏剧 皮影戏"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "歌手",
+ "value": [
+ {"n": "邓丽君", "v": "邓丽君 音乐🎶"},
+ {"n": "林忆莲", "v": "林忆莲 音樂🎶"},
+ {"n": "陈慧娴", "v": "陈慧娴音樂🎶"},
+ {"n": "韩宝仪", "v": "韩宝仪 音樂🎶"},
+ {"n": "张学友", "v": "张学友 音樂🎶"},
+ {"n": "李宗盛", "v": "李宗盛 音樂🎶"},
+ {"n": "罗大佑", "v": "罗大佑 音樂🎶"},
+ {"n": "周杰伦", "v": "周杰伦 音樂🎶"},
+ {"n": "张惠妹", "v": "张惠妹 音樂🎶"},
+ {"n": "斯琴高麗", "v": "斯琴高麗 音樂🎶"},
+ {"n": "林俊杰", "v": "@jjlin • 音乐🎶"},
+ {"n": "周深", "v": "周深 音樂🎶"},
+ {"n": "張瑋伽", "v": "張瑋伽 演唱會 巡演 音樂"},
+ {"n": "孫露", "v": "孫露 演唱會 巡演 音樂"},
+ {"n": "鳳凰傳奇", "v": "鳳凰傳奇 演 巡演 音樂"},
+ {"n": "刀郎", "v": "刀郎 演唱會 巡演 音樂"},
+ {"n": "S.H.E", "v": "S.H.E 演唱會 巡演 音樂"},
+ {"n": "慕容曉曉", "v": "慕容曉曉 演唱會 巡演 音樂"},
+ {"n": "東方紅豔", "v": "東方紅豔 演唱會 巡演 音樂"},
+ {"n": "孟庭葦", "v": "孟庭葦 演唱會 巡演 音樂"},
+ {"n": "斯琴高麗", "v": "斯琴高麗 演唱會 巡演 音樂"},
+ {"n": "程響", "v": "程響 演唱會 巡演 音樂"},
+ {"n": "蔣雪兒", "v": "蔣雪兒 演唱會 巡演 音樂"}
+ ]
+ }
+ ],
+ "體育": [
+ {
+ "key": "time",
+ "name": "時間",
+ "value": [
+ {"n": "時間全選", "v": ""},
+ {"n": "2024", "v": "2024"},
+ {"n": "2023", "v": "2023"},
+ {"n": "2022", "v": "2022"},
+ {"n": "2021", "v": "2021"},
+ {"n": "2020", "v": "2020"},
+ {"n": "2019", "v": "2019"},
+ {"n": "2018", "v": "2018"},
+ {"n": "2017", "v": "2017"},
+ {"n": "2016", "v": "2016"},
+ {"n": "2015", "v": "2015"},
+ {"n": "2014", "v": "2014"},
+ {"n": "2013", "v": "2013"},
+ {"n": "2012", "v": "2012"},
+ {"n": "2011", "v": "2011"},
+ {"n": "2010", "v": "2010"},
+ {"n": "2009", "v": "2009"},
+ {"n": "2008", "v": "2008"},
+ {"n": "2007", "v": "2007"},
+ {"n": "2006", "v": "2006"},
+ {"n": "2005", "v": "2005"},
+ {"n": "2004", "v": "2004"},
+ {"n": "2003", "v": "2003"},
+ {"n": "2002", "v": "2002"},
+ {"n": "2001", "v": "2001"},
+ {"n": "2000", "v": "2000"},
+ {"n": "1999", "v": "1999"},
+ {"n": "1998", "v": "1998"},
+ {"n": "1997", "v": "1997"},
+ {"n": "1996", "v": "1996"},
+ {"n": "1995", "v": "1995"},
+ {"n": "1994", "v": "1994"},
+ {"n": "1993", "v": "1993"},
+ {"n": "1992", "v": "1992"},
+ {"n": "1991", "v": "1991"},
+ {"n": "1990", "v": "1990"},
+ {"n": "1989", "v": "1989"},
+ {"n": "1988", "v": "1988"},
+ {"n": "1987", "v": "1987"},
+ {"n": "1986", "v": "1986"},
+ {"n": "1985", "v": "1985"},
+ {"n": "1984", "v": "1984"},
+ {"n": "1983", "v": "1983"},
+ {"n": "1982", "v": "1982"},
+ {"n": "1981", "v": "1981"},
+ {"n": "1980", "v": "1980"},
+ {"n": "1979", "v": "1979"},
+ {"n": "1978", "v": "1978"},
+ {"n": "1977", "v": "1977"},
+ {"n": "1976", "v": "1976"},
+ {"n": "1975", "v": "1975"},
+ {"n": "1974", "v": "1974"},
+ {"n": "1973", "v": "1973"},
+ {"n": "1972", "v": "1972"},
+ {"n": "1971", "v": "1971"},
+ {"n": "1970", "v": "1970"},
+ {"n": "1969", "v": "1969"},
+ {"n": "1968", "v": "1968"},
+ {"n": "1967", "v": "1967"},
+ {"n": "1966", "v": "1966"},
+ {"n": "1965", "v": "1965"},
+ {"n": "1964", "v": "1964"},
+ {"n": "1963", "v": "1963"},
+ {"n": "1962", "v": "1962"},
+ {"n": "1961", "v": "1961"},
+ {"n": "1960", "v": "1960"},
+ {"n": "1959", "v": "1959"},
+ {"n": "1958", "v": "1958"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "中文",
+ "value": [
+ {"n": "默认", "v": ""},
+ {"n": "體育直播", "v": "体育直播"},
+ {"n": "體育赛事", "v": "体育赛事"},
+ {"n": "足球比賽", "v": "足球賽事"},
+ {"n": "篮球比賽", "v": "篮球賽事"},
+ {"n": "极限運動", "v": "极限運動"},
+ {"n": "室内運動", "v": "室内运动"},
+ {"n": "户外運動", "v": "户外运动"},
+ {"n": "瑜伽健身", "v": "@kundalyoghealthylifestyle4566"},
+ {"n": "健身運動", "v": "健身運動"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {"n": "Live", "v": "live sports"},
+ {"n": "Games", "v": "live games"},
+ {"n": "Soccer", "v": "live soccer"},
+ {"n": "NBA", "v": "NBA"},
+ {"n": "Extreme", "v": "extreme sports"},
+ {"n": "InDoor", "v": "indoor sports"},
+ {"n": "OutDoor", "v": "outdoor sports"},
+ {"n": "Workout", "v": "workout"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "體育",
+ "value": [
+ {"n": "女足港場", "v": "女足港場 @Hong KongWomensStadium"},
+ {"n": "全國校運動會", "v": "全國大專 校院運動會 全中運 女子組賽事 全國中等 學校運動會"},
+ {"n": "女中儀隊", "v": "北一女中樂儀旗隊永續發展協會 北一女中家長會樂儀旗家長後援會 北一女中儀隊校友隊 台灣 学校运动会 景美女中儀隊 北一女樂儀旗隊 full樂儀隊 "},
+ {"n": "校園熱舞", "v": "full 校園熱舞 開南熱無 開南大學課外活動組 女生熱舞社 南寶熱舞社 寶踐熱舞社 NTDC 熱舞社 STUST"},
+ {"n": "红星体育官方频道", "v": "红星体育官方频道【高清直播】"},
+ {"n": "中國體育比賽傳奇", "v": "中國體育比赛傳奇"},
+ {"n": "愛爾達體育家族", "v": "愛爾達體育家族 ELTA Sports"},
+ {"n": "公視體育", "v": "公視體育"},
+ {"n": "體育之光", "v": "體育之光"},
+ {"n": "偶然體育賽事", "v": "偶然體育賽事"}
+ ]
+ }
+ ],
+ "時尚潮流": [
+ {
+ "key": "tid",
+ "name": "時裝秀",
+ "value": [
+ {"n": "街舞", "v": "脫衣舞 丁字褲 街舞 太空步 機械舞 舞 裸體舞蹈 霹靂舞 魔性舞蹈 鬼步舞 木偶舞 女性藝術舞蹈"},
+ {"n": "時尚走秀", "v": "T台走秀 lingerie show"},
+ {"n": "時裝秀", "v": "hdr ASM lingerieTV 東京ファッションショー 下着ショー"},
+ {"n": "潮流秀", "v": "FASHION IN UHD"},
+ {"n": "時裝模特", "v": "FASHION Runway"},
+ {"n": "模特", "v": "比基尼 泳裝 頂級車模 空姐 寫真 Car model Stewardess Portrait"},
+ {"n": "裸体秀", "v": "hdr 人體藝術 裸体秀 Nude show"},
+ {"n": "無限亂鬥", "v": "hdr 廟會秀 無限HD 公廟 鋼管舞 脫衣舞 舞女 清純 寫真"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "小姐姐",
+ "value": [
+ {"n": "小姐姐超清", "v": "小姐姐超清"},
+ {"n": "国内小姐姐", "v": "快手模特 抖音模特 国内小姐姐"},
+ {"n": "韩国小姐姐", "v": "韩国小姐姐"},
+ {"n": "日本小姐姐", "v": "日本小姐姐"},
+ {"n": "俄罗斯小姐姐", "v": "俄罗斯小姐姐"},
+ {"n": "混血小姐姐", "v": "混血小姐姐"},
+ {"n": "越南小姐姐", "v": "越南小姐姐"},
+ {"n": "Al小姐姐", "v": "Al美女超清"},
+ {"n": "抖音热门小姐姐", "v": "抖音热门小姐姐"},
+ {"n": "快手热门美女", "v": "快手热门美女"},
+ {"n": "打碟小姐姐", "v": "打碟小姐姐"},
+ {"n": "冲浪小姐姐", "v": "冲浪小姐姐"},
+ {"n": "蹦迪小姐姐", "v": "蹦迪小姐姐"},
+ {"n": "艺校小姐姐", "v": "艺校小姐姐"},
+ {"n": "环球小姐", "v": "环球小姐"},
+ {"n": "泰国人妖", "v": "泰国人妖"},
+ {"n": "人间胸器", "v": "人间胸器"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "English",
+ "value": [
+ {"n": "sexy Miss", "v": "sexy Miss"},
+ {"n": "Hot sexy Girl", "v": "Hot sexy Girl"},
+ {"n": "Korean Girl", "v": "Korean sexy Girl"},
+ {"n": "Japanese Girl", "v": "Japanese sexy Girl"},
+ {"n": "Russian Girl", "v": "Russian sexy Girl"},
+ {"n": "Vietnamese Girl", "v": "Vietnamese sexy Girl"},
+ {"n": "AI Girl", "v": "AI Girl"},
+ {"n": "TikTok Hot Siste", "v": "TikTok Hot sexy Girl"},
+ {"n": "Cute Girl", "v": "sexy Cute Girl"},
+ {"n": "Girl Dj", "v": "sexy Girl Dj"},
+ {"n": "Girl Surfer", "v": "sexy Girl Surfer"},
+ {"n": "Dance Girl", "v": "Dance sexy Girl"},
+ {"n": "Miss Universe", "v": "Miss Universe"},
+ {"n": "Thai Shemale", "v": "Thai Shemale"}
+ ]
+ }
+ ],
+ "解說": [
+ {
+ "key": "tid",
+ "name": "頻道主",
+ "value": [
+ {"n": "宇哥侃故事", "v": "@yuge"},
+ {"n": "零度解说", "v": "@lingdujieshuo"}
+ ]
+ }
+ ],
+ "16K HDR": [
+ {
+ "key": "tid",
+ "name": "風景",
+ "value": [
+ {"n": "運動", "v": "GoPro 女翼裝飛行 極限自行車運動"},
+ {"n": "風景", "v": "hdr 大自然"},
+ {"n": "Links TV頻道主", "v": "@linksphotograph Links TV hdr"},
+ {"n": "放鬆", "v": "hdr 放鬆"},
+ {"n": "動物世界", "v": "hdr Carnivorous Animals 動物世界"},
+ {"n": "深海世界", "v": "hdr Invertebrate Fish 深海世界"},
+ {"n": "飛禽走獸", "v": "hdr Birds of Prey Columbiform Birds Passerine Birds"},
+ {"n": "生物世界", "v": "hdr Amphibians Reptiles 生物世界"}
+ ]
+ }
+ ],
+ "Full YouTube": [
+ {
+ "key": "tid",
+ "name": "頻道主",
+ "value": [
+ {"n": "李子柒", "v": "李子柒 Liziqi @cnliziqi"},
+ {"n": "滇西小哥", "v": "滇西小哥 @dianxixiaoge"},
+ {"n": "老高與小茉", "v": "老高與小茉 @laogao"},
+ {"n": "李永樂老師", "v": "李永樂老師 @TchLiyongle"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "美食頻道主",
+ "value": [
+ {"n": "美食作家王刚", "v": "美食作家王刚 @chefwang"},
+ {"n": "小高姐的 Magic Ingredients", "v": "小高姐的 Magic Ingredients @MagicIngredients"},
+ {"n": "小穎美食", "v": "小穎美食 @XiaoYingFood"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "野外頻道主",
+ "value": [
+ {"n": "野外求生", "v": "primitivetechnology9550 @primitivetechnology9550"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "科普頻道主",
+ "value": [
+ {"n": "科普", "v": "Mr Beast@MrBeast"},
+ {"n": "航天大學", "v": "Airforceproud95 @Airforceproud95"},
+ {"n": "世界大戰", "v": "TheGreatWar @TheGreatWar"},
+ {"n": "MarkRober", "v": "Mark Rober @MarkRober"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "教材",
+ "value": [
+ {"n": "不良林", "v": "不良林"},
+ {"n": "涌哥侃侃", "v": "涌哥侃侃 @ygkkk"},
+ {"n": "悟空的日常", "v": "悟空的日常"}
+ ]
+ }
+ ],
+ "宇宙": [
+ {
+ "key": "tid",
+ "name": "科普知識",
+ "value": [
+ {"n": "宇宙", "v": "光年 黑洞 銀河系 空間站 太空技術"},
+ {"n": "粒子", "v": "空間粒子 宇宙磁場 四維空間 元素 量子 光波 光源 靈魂"},
+ {"n": "靠蒙", "v": "microorganism"}
+ ]
+ },
+ {
+ "key": "tid",
+ "name": "歷史科普",
+ "value": [
+ {"n": "世界大戰", "v": "世界大戰 二戰 日侵 八國聯軍"},
+ {"n": "人物", "v": "古代名人 歷史名人 歷代祖先"},
+ {"n": "生物進化史", "v": "人類進化 微生物進化 動物進化 地球進化"},
+ {"n": "靠蒙", "v": "歷史 History"}
+ ]
+ }
+ ]
+}
+CATEGORY_QUERY = {}
+CATEGORY_ALIASES = {}
+try:
+ YOUTUBE_CLASSES
+except NameError:
+ YOUTUBE_CLASSES = []
+try:
+ CATEGORY_FILTERS
+except NameError:
+ CATEGORY_FILTERS = {}
+
+# ==================== 核心提取类(合并优化) ====================
+class YouTubeLite:
+ """普通视频提取,合并 0712 优化:快速 API、编码优先级、SDR/HDR 识别"""
+ def __init__(self, session, headers=None, config=None):
+ self.session = session
+ self.headers = headers or {}
+ self.config = config or {}
+ self.player_cache = {}
+ self.extract_cache = {}
+ self.sig_plan_cache = {}
+ self.extract_cache_ttl = int(self.config.get('extract_cache_ttl') or 300)
+
+ def extract(self, url_or_id):
+ video_id = self.extract_video_id(url_or_id)
+ cached = self.extract_cache.get(video_id)
+ now = time.time()
+ if cached and cached.get('expires', 0) > now:
+ debug_log('extract cache hit', {'video_id': video_id, 'ttl': int(cached.get('expires', 0) - now)})
+ return cached.get('data')
+ watch_url = f"https://www.youtube.com/watch?v={video_id}"
+ debug_log('extract start', {'input': url_or_id, 'video_id': video_id})
+ page_resp = self._get(watch_url)
+ page = page_resp.text
+ debug_log('watch page', {'status': page_resp.status_code, 'length': len(page)})
+ ytcfg = self._extract_ytcfg(page) or {}
+ player_response = self._extract_initial_player_response(page) or {}
+ player_url = self._extract_player_url(page)
+ api_key = ytcfg.get('INNERTUBE_API_KEY') or self._search(r'"INNERTUBE_API_KEY":"([^"]+)"', page)
+ visitor_data = self._extract_visitor_data(ytcfg, player_response)
+ sts = None
+ debug_log('page parsed', {'has_ytcfg': bool(ytcfg), 'has_initial_pr': bool(player_response), 'initial_status': (player_response.get('playabilityStatus') or {}).get('status'), 'initial_has_streaming': bool(player_response.get('streamingData')), 'has_api_key': bool(api_key), 'has_visitor': bool(visitor_data), 'sts': sts, 'player_url': player_url})
+ context = ytcfg.get('INNERTUBE_CONTEXT') or {
+ 'client': {'clientName': 'WEB', 'clientVersion': '2.20240310.01.00', 'hl': 'en', 'gl': 'US'}
+ }
+ responses = [player_response] if player_response else []
+ if api_key:
+ api_responses = self._call_player_api(video_id, api_key, context, watch_url, visitor_data, sts)
+ if not isinstance(api_responses, list):
+ api_responses = [api_responses] if api_responses else []
+ responses.extend([x for x in api_responses if x])
+ debug_log('player api result', {'responses': len(api_responses), 'has_streaming': [bool((x or {}).get('streamingData')) for x in api_responses]})
+ player_response = next((x for x in responses if (x.get('playabilityStatus') or {}).get('status') == 'OK'), player_response)
+ status = (player_response.get('playabilityStatus') or {}).get('status')
+ streaming = player_response.get('streamingData') or {}
+ if status and status not in ('OK', 'LIVE_STREAM_OFFLINE') and not streaming:
+ reason = (player_response.get('playabilityStatus') or {}).get('reason') or status
+ raise Exception(f'YouTube 不可播放: {reason}')
+ details = player_response.get('videoDetails') or {}
+ raw_formats = []
+ seen_raw = set()
+ source_counts = []
+ for response in responses:
+ response_streaming = (response or {}).get('streamingData') or {}
+ source_raw = (response_streaming.get('formats') or []) + (response_streaming.get('adaptiveFormats') or [])
+ source_counts.append({'formats': len(response_streaming.get('formats') or []), 'adaptive': len(response_streaming.get('adaptiveFormats') or [])})
+ for raw in source_raw:
+ key = (raw.get('itag'), raw.get('url') or raw.get('signatureCipher') or raw.get('cipher') or raw.get('mimeType'))
+ if key not in seen_raw:
+ seen_raw.add(key)
+ raw = raw.copy()
+ raw['_client_name'] = (response or {}).get('_client_name')
+ raw['_client_ua'] = (response or {}).get('_client_ua')
+ raw_formats.append(raw)
+ debug_log('raw formats', {'sources': source_counts, 'total': len(raw_formats), 'sample_keys': sorted(list(raw_formats[0].keys())) if raw_formats else []})
+ formats = []
+ cipher_count = 0
+ for raw in raw_formats:
+ if raw.get('signatureCipher') or raw.get('cipher'):
+ cipher_count += 1
+ item = self._normalize_format(raw, player_url)
+ if item and item.get('url'):
+ formats.append(item)
+ debug_log('normalized formats', {'count': len(formats), 'cipher_count': cipher_count, 'progressive': len([x for x in formats if x.get('vcodec') != 'none' and x.get('acodec') != 'none'])})
+ if not formats:
+ raise Exception('未获取到可用播放地址')
+ data = {
+ 'id': video_id,
+ 'title': details.get('title') or video_id,
+ 'duration': int(details.get('lengthSeconds') or 0),
+ 'formats': formats,
+ }
+ self.extract_cache[video_id] = {'data': data, 'expires': time.time() + self.extract_cache_ttl}
+ return data
+
+ @staticmethod
+ def extract_video_id(text):
+ text = str(text or '').strip()
+ for pattern in [
+ r'(?:v=|/v/|/embed/|/shorts/|youtu\.be/)([0-9A-Za-z_-]{11})',
+ r'^([0-9A-Za-z_-]{11})$',
+ ]:
+ m = re.search(pattern, text)
+ if m:
+ return m.group(1)
+ raise Exception('无法识别 YouTube 视频 ID')
+
+ def _client_name_id(self, client_name):
+ return {
+ 'WEB': 1,
+ 'MWEB': 2,
+ 'ANDROID': 3,
+ 'IOS': 5,
+ 'TVHTML5': 7,
+ 'ANDROID_VR': 28,
+ 'WEB_EMBEDDED_PLAYER': 56,
+ 'WEB_REMIX': 67,
+ }.get(client_name, 1)
+
+ def _extract_visitor_data(self, ytcfg, player_response):
+ return (
+ self.config.get('visitor_data')
+ or ytcfg.get('VISITOR_DATA')
+ or (((ytcfg.get('INNERTUBE_CONTEXT') or {}).get('client') or {}).get('visitorData'))
+ or ((player_response.get('responseContext') or {}).get('visitorData'))
+ )
+
+ def _extract_signature_timestamp(self, video_id, player_url, ytcfg=None):
+ try:
+ code = self._get_player_code(player_url)
+ sts = self._search(r'(?:signatureTimestamp|sts)\s*:\s*(\d{5})', code)
+ return int(sts) if sts else None
+ except Exception as e:
+ debug_log('sts extract error', repr(e))
+ return None
+
+ def _get_po_token(self, client_name, context='gvs'):
+ tokens = self.config.get('po_token') or self.config.get('po_tokens') or {}
+ if isinstance(tokens, str):
+ return tokens
+ if isinstance(tokens, dict):
+ return tokens.get(f'{client_name}.{context}') or tokens.get(client_name) or tokens.get(context)
+ return None
+
+ def _video_codec_priority(self, item):
+ mime = (item.get('mimeType') or '').lower()
+ codecs = (item.get('codecs') or '').lower()
+ if 'vp9.2' in mime or 'vp09.02' in codecs:
+ return 4
+ if 'vp9' in mime or 'vp09' in codecs:
+ return 3
+ if 'avc' in codecs or 'h264' in codecs:
+ return 2
+ if 'av01' in codecs:
+ return 1
+ return 0
+
+ def _is_hdr_video(self, item):
+ mime = (item.get('mimeType') or '').lower()
+ codecs = (item.get('codecs') or '').lower()
+ color = item.get('colorInfo') or {}
+ return 'vp9.2' in mime or 'vp09.02' in codecs or bool(color.get('hdrMetadataInfo'))
+
+ def _is_risky_best_video(self, item):
+ codecs = (item.get('codecs') or '').lower()
+ return 'av01' in codecs
+
+ def choose_playable(self, formats, quality=None):
+ all_videos = [x for x in formats if x.get('vcodec') != 'none' and x.get('acodec') == 'none']
+ candidates = all_videos[:]
+ if quality == '4k':
+ candidates = [x for x in candidates if int(x.get('height') or 0) >= 2160]
+ elif quality == '2k':
+ candidates = [x for x in candidates if 1440 <= int(x.get('height') or 0) < 2160]
+ elif quality == '1080p':
+ candidates = [x for x in candidates if 1000 <= int(x.get('height') or 0) < 1440]
+ elif quality == 'best':
+ safe_candidates = [x for x in candidates if not self._is_risky_best_video(x)]
+ if safe_candidates:
+ candidates = safe_candidates
+ else:
+ candidates = [x for x in candidates if int(x.get('height') or 0) >= 1080]
+ if not candidates and quality == 'best':
+ candidates = all_videos
+ if not candidates:
+ return None
+ candidates.sort(key=lambda x: (
+ self._video_codec_priority(x),
+ int(x.get('height') or 0),
+ int(x.get('bitrate') or 0)
+ ), reverse=True)
+ selected = candidates[0]
+ debug_log('video selected fast', {
+ 'quality': quality,
+ 'itag': selected.get('itag'),
+ 'height': selected.get('height'),
+ 'mime': selected.get('mimeType'),
+ 'codec_priority': self._video_codec_priority(selected),
+ 'candidates': len(candidates),
+ 'probe_skipped': True,
+ })
+ return selected
+
+ def choose_video_tracks(self, formats, quality=None):
+ videos = [x for x in formats if x.get('vcodec') != 'none' and x.get('acodec') == 'none']
+ cap = 2160 if quality in ('best', '4k') else 1440 if quality == '2k' else 1080
+ videos = [x for x in videos if int(x.get('height') or 0) <= cap] or videos
+ vp9 = [x for x in videos if self._video_codec_priority(x) >= 3]
+ if vp9:
+ videos = vp9
+ sdr = [x for x in videos if not self._is_hdr_video(x)]
+ hdr = [x for x in videos if self._is_hdr_video(x)]
+ sort_key = lambda x: (int(x.get('height') or 0), int(x.get('bitrate') or 0))
+ sdr.sort(key=sort_key, reverse=True)
+ hdr.sort(key=sort_key, reverse=True)
+ tracks = []
+ if sdr:
+ item = sdr[0].copy()
+ item['track_name'] = 'SDR'
+ item['is_hdr'] = False
+ tracks.append(item)
+ if hdr:
+ item = hdr[0].copy()
+ item['track_name'] = 'HDR'
+ item['is_hdr'] = True
+ tracks.append(item)
+ if not tracks:
+ item = self.choose_playable(formats, quality)
+ if item:
+ item = item.copy()
+ item['track_name'] = 'HDR' if self._is_hdr_video(item) else 'SDR'
+ item['is_hdr'] = self._is_hdr_video(item)
+ tracks.append(item)
+ debug_log('video tracks selected', [{'name': x.get('track_name'), 'itag': x.get('itag'), 'height': x.get('height'), 'codecs': x.get('codecs')} for x in tracks])
+ return tracks
+
+ def choose_audio(self, formats):
+ candidates = [x for x in formats if x.get('acodec') != 'none' and x.get('vcodec') == 'none']
+ if not candidates:
+ return None
+ candidates.sort(key=lambda x: (1 if x.get('ext') == 'mp4' else 0, int(x.get('bitrate') or 0)), reverse=True)
+ selected = candidates[0]
+ debug_log('audio selected fast', {
+ 'itag': selected.get('itag'),
+ 'mime': selected.get('mimeType'),
+ 'bitrate': selected.get('bitrate'),
+ 'probe_skipped': True,
+ })
+ return selected
+
+ def _probe_format(self, item):
+ try:
+ headers = self.headers.copy()
+ headers.update(item.get('headers') or {})
+ headers['Range'] = 'bytes=0-1'
+ r = self.session.get(item.get('url'), headers=headers, stream=True, timeout=10)
+ if r.url and r.url != item.get('url'):
+ item['url'] = r.url
+ item['redirected'] = True
+ debug_log('probe redirected url', self._url_summary(r.url))
+ status_code = r.status_code
+ r.close()
+ return status_code in (200, 206), status_code
+ except Exception as e:
+ return False, repr(e)
+
+ def choose_best_video_audio(self, formats):
+ videos = [x for x in formats if x.get('vcodec') != 'none' and x.get('acodec') == 'none']
+ audios = [x for x in formats if x.get('acodec') != 'none' and x.get('vcodec') == 'none']
+ videos.sort(key=lambda x: (int(x.get('height') or 0), int(x.get('bitrate') or 0)), reverse=True)
+ audios.sort(key=lambda x: int(x.get('bitrate') or 0), reverse=True)
+ return (videos[0] if videos else None), (audios[0] if audios else None)
+
+ def _url_summary(self, media_url):
+ parsed = urlparse(media_url or '')
+ query = parse_qs(parsed.query)
+ keys = ['itag', 'mime', 'c', 'expire', 'ip', 'mip', 'source', 'requiressl', 'gir', 'clen', 'dur', 'n', 'pot', 'sig', 'lsig', 'cms_redirect']
+ return {
+ 'host': parsed.netloc,
+ 'path': parsed.path,
+ 'len': len(media_url or ''),
+ 'params': {k: bool(query.get(k)) if k in ('pot', 'sig', 'lsig', 'cms_redirect') else (query.get(k, [''])[0][:80]) for k in keys if k in query}
+ }
+
+ def _get(self, url, **kwargs):
+ headers = self.headers.copy()
+ headers.update(kwargs.pop('headers', {}) or {})
+ r = self.session.get(url, headers=headers, timeout=kwargs.pop('timeout', 15), **kwargs)
+ r.raise_for_status()
+ return r
+
+ def _post_json(self, url, payload, headers=None):
+ h = self.headers.copy()
+ h.update({'Content-Type': 'application/json', 'Origin': 'https://www.youtube.com'})
+ if headers:
+ h.update({k: v for k, v in headers.items() if v})
+ r = self.session.post(url, json=payload, headers=h, timeout=15)
+ r.raise_for_status()
+ return r.json()
+
+ def _call_player_api(self, video_id, api_key, context, referer, visitor_data=None, sts=None):
+ clients = [
+ {'client': {'clientName': 'ANDROID_VR', 'clientVersion': '1.65.10', 'deviceMake': 'Oculus', 'deviceModel': 'Quest 3', 'androidSdkVersion': 32, 'userAgent': 'com.google.android.apps.youtube.vr.oculus/1.65.10 (Linux; U; Android 12L; eureka-user Build/SQ3A.220605.009.A1) gzip', 'osName': 'Android', 'osVersion': '12L', 'hl': 'en', 'gl': 'US'}},
+ {'client': {'clientName': 'ANDROID', 'clientVersion': '21.02.35', 'androidSdkVersion': 30, 'userAgent': 'com.google.android.youtube/21.02.35 (Linux; U; Android 11) gzip', 'osName': 'Android', 'osVersion': '11', 'hl': 'en', 'gl': 'US'}},
+ {'client': {'clientName': 'IOS', 'clientVersion': '21.02.3', 'deviceMake': 'Apple', 'deviceModel': 'iPhone16,2', 'userAgent': 'com.google.ios.youtube/21.02.3 (iPhone16,2; U; CPU iOS 18_3_2 like Mac OS X;)', 'osName': 'iPhone', 'osVersion': '18.3.2.22D82', 'hl': 'en', 'gl': 'US'}},
+ context,
+ {'client': {'clientName': 'MWEB', 'clientVersion': '2.20260115.01.00', 'userAgent': 'Mozilla/5.0 (iPad; CPU OS 16_7_10 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1,gzip(gfe)', 'hl': 'en', 'gl': 'US'}},
+ ]
+ results = []
+ fallback = None
+ for ctx in clients:
+ client_name = (ctx.get('client') or {}).get('clientName')
+ try:
+ url = f'https://www.youtube.com/youtubei/v1/player?key={api_key}&prettyPrint=false'
+ payload = {
+ 'context': ctx,
+ 'videoId': video_id,
+ 'playbackContext': {'contentPlaybackContext': {'html5Preference': 'HTML5_PREF_WANTS', **({'signatureTimestamp': sts} if sts else {})}},
+ 'contentCheckOk': True,
+ 'racyCheckOk': True,
+ }
+ client = ctx.get('client') or {}
+ headers = {
+ 'Referer': referer,
+ 'X-YouTube-Client-Name': str(self._client_name_id(client.get('clientName'))),
+ 'X-YouTube-Client-Version': client.get('clientVersion') or '',
+ }
+ if visitor_data:
+ headers['X-Goog-Visitor-Id'] = visitor_data
+ client_ua = client.get('userAgent')
+ if client_ua:
+ headers['User-Agent'] = client_ua
+ data = self._post_json(url, payload, headers=headers)
+ status = (data.get('playabilityStatus') or {}).get('status')
+ streaming = data.get('streamingData') or {}
+ formats = streaming.get('formats') or []
+ adaptive = streaming.get('adaptiveFormats') or []
+ direct_video = [x for x in adaptive if (x.get('url') or x.get('signatureCipher') or x.get('cipher')) and str(x.get('mimeType') or '').startswith('video/')]
+ direct_any = [x for x in formats + adaptive if x.get('url') or x.get('signatureCipher') or x.get('cipher')]
+ has_streaming = bool(streaming)
+ debug_log('player api client', {'client': client_name, 'status': status, 'has_streaming': has_streaming, 'formats': len(formats), 'adaptive': len(adaptive), 'direct_any': len(direct_any), 'direct_video': len(direct_video)})
+ if has_streaming:
+ data['_client_name'] = client_name
+ data['_client_ua'] = client_ua
+ results.append(data)
+ if client_name == 'ANDROID_VR' and direct_video:
+ debug_log('player api fast return', {'client': client_name, 'direct_video': len(direct_video)})
+ return results
+ if has_streaming and fallback is None:
+ fallback = data
+ elif fallback is None:
+ fallback = data
+ except Exception as e:
+ debug_log('player api client error', {'client': client_name, 'error': repr(e)})
+ continue
+ return results or ([fallback] if fallback else [])
+
+ def _normalize_format(self, fmt, player_url):
+ media_url = fmt.get('url')
+ if not media_url:
+ cipher = fmt.get('signatureCipher') or fmt.get('cipher')
+ if cipher:
+ media_url = self._decrypt_signature_cipher(cipher, player_url)
+ if not media_url:
+ return None
+ media_url = self._decrypt_nsig(media_url, player_url)
+ client_name = fmt.get('_client_name')
+ po_token = self._get_po_token(client_name, 'gvs') if client_name else None
+ if po_token:
+ sep = '&' if '?' in media_url else '?'
+ media_url = f'{media_url}{sep}pot={quote(po_token)}'
+ mime = fmt.get('mimeType') or ''
+ ext = 'mp4' if 'mp4' in mime else 'webm' if 'webm' in mime else 'unknown'
+ codecs = self._search(r'codecs="([^"]+)"', mime) or ''
+ has_audio = mime.startswith('audio/') or any(x in codecs for x in ('mp4a', 'opus', 'vorbis'))
+ has_video = mime.startswith('video/') or any(x in codecs for x in ('avc', 'vp9', 'av01', 'h264'))
+ headers = (fmt.get('http_headers') or {}).copy()
+ if fmt.get('_client_ua'):
+ headers['User-Agent'] = fmt.get('_client_ua')
+ return {
+ 'itag': fmt.get('itag'),
+ 'url': media_url,
+ 'mimeType': mime,
+ 'client': fmt.get('_client_name'),
+ 'ext': ext,
+ 'width': fmt.get('width') or 0,
+ 'height': fmt.get('height') or 0,
+ 'fps': fmt.get('fps') or 0,
+ 'bitrate': fmt.get('bitrate') or fmt.get('averageBitrate') or 0,
+ 'contentLength': fmt.get('contentLength'),
+ 'initRange': fmt.get('initRange') or {},
+ 'indexRange': fmt.get('indexRange') or {},
+ 'codecs': codecs,
+ 'quality': fmt.get('qualityLabel') or fmt.get('quality'),
+ 'colorInfo': fmt.get('colorInfo') or {},
+ 'vcodec': codecs if has_video else 'none',
+ 'acodec': codecs if has_audio else 'none',
+ 'headers': headers,
+ }
+
+ def _decrypt_signature_cipher(self, cipher, player_url):
+ data = parse_qs(cipher)
+ media_url = unquote(data.get('url', [''])[0])
+ sig = unquote(data.get('s', [''])[0])
+ sp = data.get('sp', ['sig'])[0]
+ if not media_url:
+ return ''
+ if sig:
+ decoded = self._decrypt_sig(sig, player_url)
+ debug_log('signature cipher', {'sp': sp, 'sig_len': len(sig), 'decoded_changed': decoded != sig, 'has_player': bool(player_url)})
+ sep = '&' if '?' in media_url else '?'
+ media_url = f'{media_url}{sep}{sp}={quote(decoded)}'
+ return media_url
+
+ def _decrypt_sig(self, sig, player_url):
+ cache_key = player_url or ''
+ if cache_key in self.sig_plan_cache:
+ plan = self.sig_plan_cache.get(cache_key)
+ debug_log('sig plan cache', {'has_plan': bool(plan), 'plan': plan[:8] if plan else None})
+ else:
+ code = self._get_player_code(player_url)
+ plan = self._extract_sig_plan(code)
+ self.sig_plan_cache[cache_key] = plan
+ debug_log('sig plan', {'code_len': len(code), 'has_plan': bool(plan), 'plan': plan[:8] if plan else None})
+ if not plan:
+ return sig
+ arr = list(sig)
+ for op, arg in plan:
+ if op == 'reverse':
+ arr.reverse()
+ elif op in ('slice', 'splice'):
+ arr = arr[int(arg):]
+ elif op == 'swap' and arr:
+ j = int(arg) % len(arr)
+ arr[0], arr[j] = arr[j], arr[0]
+ return ''.join(arr)
+
+ def _decrypt_nsig(self, media_url, player_url):
+ try:
+ parsed = urlparse(media_url)
+ query = parse_qs(parsed.query)
+ n_value = query.get('n', [None])[0]
+ if not n_value:
+ return media_url
+ path_match = re.search(r'/n/([^/]+)', parsed.path)
+ if path_match and path_match.group(1) != n_value:
+ new_path = parsed.path.replace(f"/n/{path_match.group(1)}", f"/n/{n_value}", 1)
+ fixed = urlunparse(parsed._replace(path=new_path))
+ debug_log('n path synced', {'old': path_match.group(1), 'new_len': len(n_value), 'changed': fixed != media_url})
+ return fixed
+ debug_log('n present', {'n_len': len(n_value), 'has_path_n': bool(path_match)})
+ return media_url
+ except Exception as e:
+ debug_log('n sync error', repr(e))
+ return media_url
+
+ def _get_player_code(self, player_url):
+ if not player_url:
+ return ''
+ if player_url in self.player_cache:
+ return self.player_cache[player_url]
+ if player_url.startswith('//'):
+ player_url = 'https:' + player_url
+ elif player_url.startswith('/'):
+ player_url = 'https://www.youtube.com' + player_url
+ try:
+ code = self._get(player_url).text
+ except Exception:
+ code = ''
+ self.player_cache[player_url] = code
+ return code
+
+ def _extract_sig_plan(self, code):
+ if not code:
+ return None
+ name = None
+ for pattern in [
+ r'\.sig\|\|([a-zA-Z0-9_$]+)\(',
+ r'"signature",\s*([a-zA-Z0-9_$]+)\(',
+ r'([a-zA-Z0-9_$]+)=function\(a\)\{a=a\.split\(""\);',
+ ]:
+ m = re.search(pattern, code)
+ if m:
+ name = m.group(1)
+ break
+ if not name:
+ return None
+ body = self._extract_js_function_body(code, name)
+ if not body:
+ return None
+ helper = self._search(r'([a-zA-Z0-9_$]+)\.[a-zA-Z0-9_$]+\(a,\d+\)', body)
+ helper_map = self._extract_helper_object(code, helper) if helper else {}
+ plan = []
+ for part in body.split(';'):
+ if 'reverse()' in part:
+ plan.append(('reverse', 0))
+ continue
+ m = re.search(r'\.slice\((\d+)\)', part)
+ if m:
+ plan.append(('slice', int(m.group(1))))
+ continue
+ m = re.search(r'\.splice\(0,(\d+)\)', part)
+ if m:
+ plan.append(('splice', int(m.group(1))))
+ continue
+ m = re.search(r'([a-zA-Z0-9_$]+)\.([a-zA-Z0-9_$]+)\(a,(\d+)\)', part)
+ if m and m.group(1) == helper:
+ op = helper_map.get(m.group(2))
+ if op:
+ plan.append((op, int(m.group(3))))
+ return plan or None
+
+ def _extract_helper_object(self, code, name):
+ if not name:
+ return {}
+ m = re.search(r'var\s+' + re.escape(name) + r'=\{(.+?)\};', code, re.S) or re.search(re.escape(name) + r'=\{(.+?)\};', code, re.S)
+ if not m:
+ return {}
+ result = {}
+ for method, body in re.findall(r'([a-zA-Z0-9_$]+):function\([a-z,]+\)\{(.*?)\}', m.group(1)):
+ if '.reverse(' in body:
+ result[method] = 'reverse'
+ elif '.splice(' in body:
+ result[method] = 'splice'
+ elif '.slice(' in body:
+ result[method] = 'slice'
+ elif 'a[0]' in body and 'length' in body:
+ result[method] = 'swap'
+ return result
+
+ def _extract_n_function(self, code):
+ if not code:
+ return None
+ name = None
+ for pattern in [
+ r'\.get\("n"\)\)&&\(b=([a-zA-Z0-9_$]+)(?:\[(\d+)\])?\(b\)',
+ r'\.get\("n"\)\)&&\(b=([a-zA-Z0-9_$]+)\(b\)',
+ r'([a-zA-Z0-9_$]+)=function\(a\)\{var b=a\.split\(""\)',
+ r'function\s+([a-zA-Z0-9_$]+)\(a\)\{var b=a\.split\(""\)',
+ r'([a-zA-Z0-9_$]+)=function\(a\)\{a=a\.split\(""\)',
+ ]:
+ m = re.search(pattern, code)
+ if m:
+ name = m.group(1)
+ break
+ if not name:
+ return None
+ body = self._extract_js_function_body(code, name)
+ debug_log('n function', {'name': name, 'body_len': len(body)})
+ if not body:
+ return None
+ def transform(value):
+ arr = list(value)
+ for part in body.split(';'):
+ if 'reverse()' in part:
+ arr.reverse()
+ m = re.search(r'\.slice\((\d+)\)', part)
+ if m:
+ arr = arr[int(m.group(1)):]
+ m = re.search(r'\.splice\(0,(\d+)\)', part)
+ if m:
+ arr = arr[int(m.group(1)):]
+ return ''.join(arr) or value
+ return transform
+
+ def _extract_js_function_body(self, code, name):
+ starts = []
+ for pattern in [
+ r'function\s+' + re.escape(name) + r'\s*\([^)]*\)\s*\{',
+ re.escape(name) + r'\s*=\s*function\s*\([^)]*\)\s*\{',
+ r'var\s+' + re.escape(name) + r'\s*=\s*function\s*\([^)]*\)\s*\{',
+ ]:
+ m = re.search(pattern, code)
+ if m:
+ starts.append(m.end() - 1)
+ if not starts:
+ return ''
+ start = starts[0]
+ depth = 0
+ in_str = None
+ escape = False
+ for i in range(start, len(code)):
+ ch = code[i]
+ if escape:
+ escape = False
+ continue
+ if ch == '\\':
+ escape = True
+ continue
+ if in_str:
+ if ch == in_str:
+ in_str = None
+ continue
+ if ch in ('"', "'", '`'):
+ in_str = ch
+ continue
+ if ch == '{':
+ depth += 1
+ elif ch == '}':
+ depth -= 1
+ if depth == 0:
+ return code[start + 1:i]
+ return ''
+
+ def _extract_ytcfg(self, text):
+ m = re.search(r'ytcfg\.set\s*\(\s*({.+?})\s*\)\s*;', text, re.S)
+ if not m:
+ return None
+ try:
+ return json.loads(m.group(1))
+ except Exception:
+ return None
+
+ def _extract_initial_player_response(self, text):
+ return self._extract_json_after(text, 'ytInitialPlayerResponse')
+
+ def _extract_json_after(self, text, marker):
+ pos = text.find(marker)
+ if pos < 0:
+ return None
+ start = text.find('{', pos)
+ if start < 0:
+ return None
+ depth = 0
+ in_str = None
+ escape = False
+ for i in range(start, len(text)):
+ ch = text[i]
+ if escape:
+ escape = False
+ continue
+ if ch == '\\':
+ escape = True
+ continue
+ if in_str:
+ if ch == in_str:
+ in_str = None
+ continue
+ if ch == '"':
+ in_str = ch
+ continue
+ if ch == '{':
+ depth += 1
+ elif ch == '}':
+ depth -= 1
+ if depth == 0:
+ try:
+ return json.loads(text[start:i + 1])
+ except Exception:
+ return None
+ return None
+
+ def _extract_player_url(self, text):
+ for pattern in [
+ r'"jsUrl":"([^"]+)"',
+ r'"PLAYER_JS_URL":"([^"]+)"',
+ r'(/s/player/[^"\\]+/base\.js)',
+ ]:
+ m = re.search(pattern, text)
+ if m:
+ return m.group(1).replace('\\/', '/')
+ return ''
+
+ @staticmethod
+ def _search(pattern, text, default=None):
+ m = re.search(pattern, text or '', re.S)
+ return m.group(1) if m else default
+
+
+# ==================== 直播提取类 ====================
+class YouTubeLiveLite:
+ """直播提取(原 youtubelive.py)"""
+ def __init__(self, session, headers=None, config=None):
+ self.session = session
+ self.headers = headers or {}
+ self.config = config or {}
+ self.cache = {}
+ self.cache_ttl = int(self.config.get('live_cache_ttl') or 45)
+
+ def extract_video_id(self, text):
+ text = str(text or '').strip()
+ for pattern in [
+ r'(?:v=|/v/|/embed/|/shorts/|youtu\.be/)([0-9A-Za-z_-]{11})',
+ r'^([0-9A-Za-z_-]{11})$',
+ ]:
+ match = re.search(pattern, text)
+ if match:
+ return match.group(1)
+ raise Exception('无法识别 YouTube 视频 ID')
+
+ def extract_live(self, url_or_id):
+ video_id = self.extract_video_id(url_or_id)
+ now = time.time()
+ cached = self.cache.get(video_id)
+ if cached and cached.get('expires', 0) > now:
+ debug_log('live cache hit', {'video_id': video_id, 'ttl': int(cached.get('expires', 0) - now)})
+ return cached.get('data')
+ watch_url = f'https://www.youtube.com/watch?v={video_id}'
+ debug_log('live extract start', {'input': url_or_id, 'video_id': video_id})
+ response = self._get(watch_url)
+ page = response.text
+ player_response = self._extract_initial_player_response(page) or {}
+ ytcfg = self._extract_ytcfg(page) or {}
+ api_key = ytcfg.get('INNERTUBE_API_KEY') or self._search(r'"INNERTUBE_API_KEY":"([^"]+)"', page)
+ visitor_data = self._extract_visitor_data(ytcfg, player_response)
+ status_obj = player_response.get('playabilityStatus') or {}
+ streaming = player_response.get('streamingData') or {}
+ details = player_response.get('videoDetails') or {}
+ debug_log('live page parsed', {
+ 'status': status_obj.get('status'),
+ 'reason': status_obj.get('reason'),
+ 'is_live': details.get('isLiveContent'),
+ 'has_hls': bool(streaming.get('hlsManifestUrl')),
+ 'has_api_key': bool(api_key),
+ 'has_visitor': bool(visitor_data),
+ })
+ page_hls_url = streaming.get('hlsManifestUrl') or ''
+ hls_source = 'page' if page_hls_url else ''
+ api_data = None
+ if api_key:
+ api_data = self._call_player_api(video_id, api_key, ytcfg, watch_url, visitor_data)
+ if api_data:
+ api_streaming = api_data.get('streamingData') or {}
+ api_details = api_data.get('videoDetails') or {}
+ api_hls_url = api_streaming.get('hlsManifestUrl') or ''
+ if api_hls_url:
+ streaming = api_streaming
+ hls_source = api_data.get('_client_name') or 'api'
+ elif not page_hls_url and api_streaming:
+ streaming = api_streaming
+ hls_source = api_data.get('_client_name') or 'api_no_hls'
+ if api_details:
+ details = api_details
+ status_obj = api_data.get('playabilityStatus') or status_obj
+ if not (streaming.get('hlsManifestUrl') or '') and page_hls_url:
+ streaming = dict(streaming or {})
+ streaming['hlsManifestUrl'] = page_hls_url
+ hls_source = 'page_fallback'
+ hls_url = streaming.get('hlsManifestUrl') or ''
+ is_live = bool(details.get('isLiveContent') or hls_url)
+ status = status_obj.get('status') or ''
+ reason = status_obj.get('reason') or ''
+ title = details.get('title') or video_id
+ data = {
+ 'id': video_id,
+ 'title': title,
+ 'is_live': is_live,
+ 'status': status,
+ 'reason': reason,
+ 'hls_url': hls_url,
+ 'duration': int(details.get('lengthSeconds') or 0),
+ }
+ debug_log('live extract result', {
+ 'video_id': video_id,
+ 'status': status,
+ 'is_live': is_live,
+ 'has_hls': bool(hls_url),
+ 'hls_source': hls_source,
+ 'duration': data.get('duration'),
+ })
+ self.cache[video_id] = {'data': data, 'expires': time.time() + self.cache_ttl}
+ return data
+
+ def _get(self, url, **kwargs):
+ headers = self.headers.copy()
+ headers.update(kwargs.pop('headers', {}) or {})
+ response = self.session.get(url, headers=headers, timeout=kwargs.pop('timeout', 15), **kwargs)
+ response.raise_for_status()
+ return response
+
+ def _post_json(self, url, payload, headers=None):
+ final_headers = self.headers.copy()
+ final_headers.update({'Content-Type': 'application/json', 'Origin': 'https://www.youtube.com'})
+ if headers:
+ final_headers.update({k: v for k, v in headers.items() if v})
+ response = self.session.post(url, json=payload, headers=final_headers, timeout=15)
+ response.raise_for_status()
+ return response.json()
+
+ def _call_player_api(self, video_id, api_key, ytcfg, referer, visitor_data=None):
+ context = ytcfg.get('INNERTUBE_CONTEXT') or {
+ 'client': {'clientName': 'WEB', 'clientVersion': '2.20240310.01.00', 'hl': 'en', 'gl': 'US'}
+ }
+ clients = [
+ {'client': {'clientName': 'ANDROID', 'clientVersion': '21.02.35', 'androidSdkVersion': 30, 'userAgent': 'com.google.android.youtube/21.02.35 (Linux; U; Android 11) gzip', 'osName': 'Android', 'osVersion': '11', 'hl': 'en', 'gl': 'US'}},
+ {'client': {'clientName': 'IOS', 'clientVersion': '21.02.3', 'deviceMake': 'Apple', 'deviceModel': 'iPhone16,2', 'userAgent': 'com.google.ios.youtube/21.02.3 (iPhone16,2; U; CPU iOS 18_3_2 like Mac OS X;)', 'osName': 'iPhone', 'osVersion': '18.3.2.22D82', 'hl': 'en', 'gl': 'US'}},
+ {'client': {'clientName': 'MWEB', 'clientVersion': '2.20260115.01.00', 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1', 'hl': 'en', 'gl': 'US'}},
+ context,
+ ]
+ for ctx in clients:
+ client = ctx.get('client') or {}
+ client_name = client.get('clientName') or 'WEB'
+ try:
+ url = f'https://www.youtube.com/youtubei/v1/player?key={quote(api_key)}&prettyPrint=false'
+ headers = {
+ 'Referer': referer,
+ 'X-YouTube-Client-Name': str(self._client_name_id(client_name)),
+ 'X-YouTube-Client-Version': client.get('clientVersion') or '',
+ }
+ if visitor_data:
+ headers['X-Goog-Visitor-Id'] = visitor_data
+ if client.get('userAgent'):
+ headers['User-Agent'] = client.get('userAgent')
+ payload = {
+ 'context': ctx,
+ 'videoId': video_id,
+ 'contentCheckOk': True,
+ 'racyCheckOk': True,
+ }
+ data = self._post_json(url, payload, headers=headers)
+ streaming = data.get('streamingData') or {}
+ status = (data.get('playabilityStatus') or {}).get('status')
+ debug_log('live api client', {
+ 'client': client_name,
+ 'status': status,
+ 'has_hls': bool(streaming.get('hlsManifestUrl')),
+ 'has_streaming': bool(streaming),
+ })
+ if streaming.get('hlsManifestUrl'):
+ data['_client_name'] = client_name
+ return data
+ except Exception as e:
+ debug_log('live api client error', {'client': client_name, 'error': repr(e)})
+ return None
+
+ def _extract_visitor_data(self, ytcfg, player_response):
+ return (
+ self.config.get('visitor_data')
+ or ytcfg.get('VISITOR_DATA')
+ or (((ytcfg.get('INNERTUBE_CONTEXT') or {}).get('client') or {}).get('visitorData'))
+ or ((player_response.get('responseContext') or {}).get('visitorData'))
+ )
+
+ def _extract_ytcfg(self, text):
+ m = re.search(r'ytcfg\.set\s*\(\s*({.+?})\s*\)\s*;', text, re.S)
+ if not m:
+ return None
+ try:
+ return json.loads(m.group(1))
+ except Exception:
+ return None
+
+ def _extract_initial_player_response(self, text):
+ return self._extract_json_after(text, 'ytInitialPlayerResponse')
+
+ def _extract_json_after(self, text, marker):
+ pos = text.find(marker)
+ if pos < 0:
+ return None
+ start = text.find('{', pos)
+ if start < 0:
+ return None
+ depth = 0
+ in_str = None
+ escape = False
+ for i in range(start, len(text)):
+ ch = text[i]
+ if escape:
+ escape = False
+ continue
+ if ch == '\\':
+ escape = True
+ continue
+ if in_str:
+ if ch == in_str:
+ in_str = None
+ continue
+ if ch == '"':
+ in_str = ch
+ continue
+ if ch == '{':
+ depth += 1
+ elif ch == '}':
+ depth -= 1
+ if depth == 0:
+ try:
+ return json.loads(text[start:i + 1])
+ except Exception:
+ return None
+ return None
+
+ @staticmethod
+ def _search(pattern, text, default=None):
+ m = re.search(pattern, text or '', re.S)
+ return m.group(1) if m else default
+
+ def _client_name_id(self, client_name):
+ return {
+ 'WEB': 1,
+ 'MWEB': 2,
+ 'ANDROID': 3,
+ 'IOS': 5,
+ 'TVHTML5': 7,
+ 'ANDROID_VR': 28,
+ 'WEB_EMBEDDED_PLAYER': 56,
+ 'WEB_REMIX': 67,
+ }.get(client_name, 1)
+
+
+# ==================== 主 Spider 类 ====================
+class Spider(Spider):
+ def getName(self):
+ return 'YouTube 视频+直播(优化版)'
+
+ def init(self, extend):
+ try:
+ self.extendDict = json.loads(extend) if extend else {}
+ except Exception:
+ self.extendDict = {}
+
+ self.session = requests.Session()
+ # 确保 requests 在没有指定代理时,信任环境变量中的系统代理配置
+ self.session.trust_env = True
+
+ # ----- 1. 代理配置:三级回退逻辑 -----
+ self.proxy_str = None
+ proxy = self.extendDict.get('proxy')
+
+ if proxy:
+ # 第一级:优先使用 ext 传入的代理
+ if isinstance(proxy, str):
+ if not proxy.startswith('http://') and not proxy.startswith('https://'):
+ proxy = 'http://' + proxy
+ self.session.proxies = {'http': proxy, 'https': proxy}
+ self.proxy_str = proxy.replace('http://', '').replace('https://', '')
+ debug_log('使用 ext 传入代理', {'proxy': proxy})
+ elif isinstance(proxy, dict):
+ proxies = {}
+ for k, v in proxy.items():
+ if k in ('http', 'https') and v:
+ if not v.startswith('http://') and not v.startswith('https://'):
+ v = 'http://' + v
+ proxies[k] = v
+ if proxies:
+ self.session.proxies = proxies
+ self.proxy_str = (proxies.get('https') or proxies.get('http') or '').replace('http://', '').replace('https://', '')
+ debug_log('使用 ext 传入的字典代理', proxies)
+ else:
+ self._auto_detect_proxy()
+ else:
+ self._auto_detect_proxy()
+ else:
+ # 第二级/第三级:如果不写/没传入,进入自动探测回退流程
+ self._auto_detect_proxy()
+ # ---------------------------------------------------------
+
+ # ----- 2. 加载自定义分类与过滤器配置 -----
+ self.yt_classes = YOUTUBE_CLASSES
+ self.yt_filters = CATEGORY_FILTERS
+
+ if 'json' in self.extendDict and self.extendDict['json']:
+ try:
+ config_url = self.extendDict['json']
+ if config_url.startswith('./'):
+ import os
+ config_path = os.path.join(os.path.dirname(__file__), config_url[2:])
+ with open(config_path, 'r', encoding='utf-8') as f:
+ custom_config = json.load(f)
+ else:
+ # 使用当前确定好的代理去请求 JSON
+ r = self.session.get(config_url, timeout=10)
+ custom_config = r.json()
+
+ if 'class' in custom_config:
+ self.yt_classes = custom_config['class']
+ if 'filters' in custom_config:
+ self.yt_filters = custom_config['filters']
+ except Exception as e:
+ debug_log("加载外部 JSON 配置文件失败", repr(e))
+
+ self.header = {
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
+ 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
+ 'Referer': 'https://www.youtube.com/'
+ }
+ self.session.headers.update(self.header)
+
+ # 初始化两个提取器
+ self.yt_video = YouTubeLite(self.session, self.header, self.extendDict)
+ self.yt_live = YouTubeLiveLite(self.session, self.header, self.extendDict)
+ self.search_page_cache = {} # 视频搜索缓存
+ self.live_search_cache = {} # 直播搜索缓存
+ self.hls_url_cache = {} # 直播 HLS 代理缓存
+ self.hls_proxy_enabled = self.extendDict.get('hls_proxy', True) is not False
+ self._hls_key_seq = 0
+ self.direct_segments = str(self.extendDict.get('seg') or 'proxy').lower() == 'direct'
+
+ def _auto_detect_proxy(self):
+ """代理逻辑 2 & 3:探测内置列表,若都不行则清空,回退使用系统/全局代理"""
+ proxy_list = [
+ "http://127.0.0.1:2080",
+ "http://127.0.0.1:7890",
+ "http://127.0.0.1:10809",
+ "http://127.0.0.1:10172",
+ "http://127.0.0.1:20172",
+ "http://127.0.0.1:7891",
+ "http://127.0.0.1:10808",
+ "http://127.0.0.1:1087",
+ "http://127.0.0.1:3128",
+ "http://127.0.0.1:1080",
+ "http://127.0.0.1:8080",
+ "http://127.0.0.1:9090"
+ ]
+
+ # 第二级:探测内置列表
+ for p in proxy_list:
+ try:
+ test_proxies = {'http': p, 'https': p}
+ # 设置较短超时时间,快速失败
+ r = requests.get('https://www.youtube.com', proxies=test_proxies, timeout=2)
+ if r.status_code < 400:
+ self.session.proxies = test_proxies
+ self.proxy_str = p.replace('http://', '').replace('https://', '')
+ debug_log('内置代理探测成功,使用内置', {'proxy': p})
+ return
+ except Exception:
+ continue
+
+ # 第三级:如果所有预设都失败,清空 proxies 字典,回退到全局/系统代理
+ self.session.proxies = {}
+ self.proxy_str = ''
+ debug_log('所有内置代理均不可用,清空设置,回退使用系统/全局代理')
+
+ def homeContent(self, filter):
+ result = {'class': self.yt_classes}
+ if filter:
+ video_filters = {}
+ for c in self.yt_classes:
+ cid = c['type_id']
+ if cid in self.yt_filters:
+ video_filters[cid] = self.yt_filters[cid]
+ result['filters'] = video_filters
+ return result
+
+ def homeVideoContent(self):
+ return {'list': []}
+
+ def categoryContent(self, cid, page, filter, ext):
+ page = int(page or 1)
+ filters = ext if isinstance(ext, dict) else {}
+ if self._is_live_category(cid):
+ keyword = self._build_live_keyword(cid, filters)
+ videos, has_more = self._search_live_page(keyword, page)
+ else:
+ keyword = self._build_video_keyword(cid, filters)
+ videos, has_more = self._search_video_page(keyword, page)
+ return {
+ 'list': videos,
+ 'page': page,
+ 'pagecount': page + 1 if has_more else page,
+ 'limit': len(videos),
+ 'total': len(videos)
+ }
+
+ def searchContent(self, key, quick, pg=1):
+ page = int(pg or 1)
+ keyword = str(key or '').strip()
+ videos_v, _ = self._search_video_page(keyword, page)
+ live_keyword = f'{keyword} live' if 'live' not in keyword.lower() and '直播' not in keyword else keyword
+ videos_l, _ = self._search_live_page(live_keyword, page)
+ seen = set()
+ merged = []
+ for v in videos_v + videos_l:
+ if v['vod_id'] not in seen:
+ seen.add(v['vod_id'])
+ merged.append(v)
+ return {
+ 'list': merged[:30],
+ 'page': page,
+ 'pagecount': page + 1,
+ 'limit': len(merged),
+ 'total': len(merged)
+ }
+
+ # ---------- 画质名称辅助 ----------
+ def _get_quality_label(self, height):
+ if height >= 2160:
+ return '4K'
+ elif height >= 1440:
+ return '2K'
+ elif height >= 1080:
+ return '1080P'
+ elif height >= 720:
+ return '720P'
+ elif height >= 480:
+ return '480P'
+ elif height >= 360:
+ return '360P'
+ else:
+ return f'{height}P'
+
+ # ---------- 解析 HLS 主播放列表(直播多画质) ----------
+ def _parse_hls_master(self, master_url):
+ """返回 list of dict: {height, width, bandwidth, url}"""
+ try:
+ r = self.session.get(master_url, headers=self.header, timeout=10)
+ r.raise_for_status()
+ lines = r.text.splitlines()
+ variants = []
+ i = 0
+ while i < len(lines):
+ line = lines[i].strip()
+ if line.startswith('#EXT-X-STREAM-INF'):
+ bandwidth = re.search(r'BANDWIDTH=(\d+)', line)
+ resolution = re.search(r'RESOLUTION=(\d+)x(\d+)', line)
+ height = int(resolution.group(2)) if resolution else 0
+ width = int(resolution.group(1)) if resolution else 0
+ bw = int(bandwidth.group(1)) if bandwidth else 0
+ if i + 1 < len(lines):
+ url_line = lines[i+1].strip()
+ if not url_line.startswith('#'):
+ full_url = urljoin(master_url, url_line)
+ variants.append({
+ 'height': height,
+ 'width': width,
+ 'bandwidth': bw,
+ 'url': full_url
+ })
+ i += 2
+ else:
+ i += 1
+ variants.sort(key=lambda x: x['height'], reverse=True)
+ return variants
+ except Exception as e:
+ debug_log('parse hls master error', {'master_url': master_url, 'error': repr(e)})
+ return []
+
+ # ---------- detailContent(方案A:按高度分 SDR/HDR) ----------
+ def detailContent(self, did):
+ video_id = did[0]
+ # 检测是否为直播
+ try:
+ live_data = self.yt_live.extract_live(video_id)
+ is_live = live_data.get('is_live') or bool(live_data.get('hls_url'))
+ title = live_data.get('title') or video_id
+ status = '直播中' if is_live else '未开播'
+ except Exception as e:
+ debug_log('detail live check failed', {'video_id': video_id, 'error': repr(e)})
+ is_live = False
+ title = self._get_video_title(video_id) or video_id
+ status = '视频'
+
+ play_sources = []
+ play_urls = []
+
+ if is_live:
+ hls_url = live_data.get('hls_url')
+ if hls_url:
+ variants = self._parse_hls_master(hls_url)
+ if variants:
+ for v in variants:
+ height = v['height']
+ label = self._get_quality_label(height)
+ cache_key = f'live_{video_id}_{height}'
+ self.setCache(cache_key, {'url': v['url'], 'expires': time.time() + 300})
+ play_sources.append(label)
+ play_urls.append(f'{label}${video_id}@live_{height}')
+ else:
+ play_sources.append('直播')
+ play_urls.append(f'直播${video_id}@live')
+ else:
+ play_sources.append('直播')
+ play_urls.append(f'直播${video_id}@live')
+ else:
+ # ---- 点播:方案A ----
+ try:
+ data = self.yt_video.extract(video_id)
+ formats = data.get('formats', [])
+ # 只取视频流
+ video_streams = [f for f in formats if f.get('vcodec') != 'none' and f.get('acodec') == 'none']
+ # 按高度分组
+ height_groups = {}
+ for f in video_streams:
+ h = int(f.get('height', 0))
+ if h <= 0:
+ continue
+ height_groups.setdefault(h, []).append(f)
+
+ # 对每个高度,按码率排序取最佳,并区分 SDR/HDR
+ for h in sorted(height_groups.keys(), reverse=True):
+ items = height_groups[h]
+ # 选 SDR 和 HDR 中码率最高的各一个
+ sdr_items = [x for x in items if not self.yt_video._is_hdr_video(x)]
+ hdr_items = [x for x in items if self.yt_video._is_hdr_video(x)]
+ sdr_item = max(sdr_items, key=lambda x: int(x.get('bitrate') or 0)) if sdr_items else None
+ hdr_item = max(hdr_items, key=lambda x: int(x.get('bitrate') or 0)) if hdr_items else None
+
+ label_base = self._get_quality_label(h)
+ if sdr_item:
+ name = f'{label_base} SDR'
+ play_sources.append(name)
+ play_urls.append(f'{name}${video_id}@{h}_sdr')
+ if hdr_item:
+ name = f'{label_base} HDR'
+ play_sources.append(name)
+ play_urls.append(f'{name}${video_id}@{h}_hdr')
+ # 若两者都无(理论上不会),忽略
+
+ # 如果没有生成任何线路,回退
+ if not play_sources:
+ raise Exception('No video streams found')
+ except Exception as e:
+ debug_log('detail get formats error', {'video_id': video_id, 'error': repr(e)})
+ play_sources.append('最高画质')
+ play_urls.append(f'最高画质${video_id}@best')
+
+ # 获取相关推荐
+ related = []
+ try:
+ r = self.session.get(f'https://www.youtube.com/watch?v={video_id}', timeout=10)
+ related = self._extract_videos_fixed(r.text, 20)
+ except Exception:
+ pass
+
+ if related:
+ related_urls = []
+ for v in related:
+ if v.get('vod_id') != video_id:
+ related_urls.append(f"{self._safe_title(v['vod_name'])}${v['vod_id']}@best")
+ if related_urls:
+ play_sources.append('相关推荐')
+ play_urls.append('#'.join(related_urls))
+
+ vod = {
+ 'vod_id': video_id,
+ 'vod_name': title,
+ 'vod_pic': f'http://127.0.0.1:9978/proxy?do=py&type=image&vid={video_id}',
+ 'vod_remarks': status,
+ 'vod_play_from': '$$$'.join(play_sources),
+ 'vod_play_url': '$$$'.join(play_urls)
+ }
+ return {'list': [vod]}
+
+ # ---------- playerContent ----------
+ def playerContent(self, flag, pid, vipFlags):
+ raw_pid = pid.split('$')[-1]
+ if '@' in raw_pid:
+ video_id, quality_or_type = raw_pid.rsplit('@', 1)
+ else:
+ video_id, quality_or_type = raw_pid, 'best'
+
+ # 直播处理
+ if quality_or_type == 'live':
+ return self._play_live(video_id)
+ elif quality_or_type.startswith('live_'):
+ height_str = quality_or_type.split('_')[1]
+ if height_str.isdigit():
+ return self._play_live_by_height(video_id, int(height_str))
+ else:
+ return self._play_live(video_id)
+ else:
+ # 点播:解析高度和类型
+ if quality_or_type.endswith('_sdr') or quality_or_type.endswith('_hdr'):
+ parts = quality_or_type.rsplit('_', 1)
+ if len(parts) == 2 and parts[1] in ('sdr', 'hdr'):
+ height_str, hdr_flag = parts
+ if height_str.isdigit():
+ return self._play_video_by_height_and_type(video_id, int(height_str), hdr_flag)
+ # 兼容旧格式(纯高度或 best 等)
+ if quality_or_type.isdigit():
+ return self._play_video_by_height_and_type(video_id, int(quality_or_type), 'sdr') # 默认 SDR
+ else:
+ quality = quality_or_type if quality_or_type in ('best', '4k', '2k', '1080p') else 'best'
+ return self._play_video(video_id, quality)
+
+ # ---------- 按高度和 SDR/HDR 类型播放点播 ----------
+ def _play_video_by_height_and_type(self, video_id, target_height, hdr_type):
+ try:
+ data = self.yt_video.extract(video_id)
+ formats = data.get('formats', [])
+ video_streams = [f for f in formats if f.get('vcodec') != 'none' and f.get('acodec') == 'none']
+ # 按高度筛选(>= target_height 中取最小,若无则取最大)
+ candidates = [f for f in video_streams if int(f.get('height', 0)) >= target_height]
+ if not candidates:
+ candidates = video_streams
+ # 再按 HDR 类型筛选
+ is_hdr_wanted = (hdr_type == 'hdr')
+ candidates = [f for f in candidates if self.yt_video._is_hdr_video(f) == is_hdr_wanted]
+ if not candidates:
+ # 若无匹配,则取该类型中任意一个(或回退到无类型)
+ candidates = [f for f in video_streams if self.yt_video._is_hdr_video(f) == is_hdr_wanted]
+ if not candidates:
+ candidates = video_streams # 最终回退
+ # 选码率最高的
+ selected_video = max(candidates, key=lambda x: int(x.get('bitrate') or 0))
+ audio = self.yt_video.choose_audio(formats)
+ if audio:
+ cache_key = f'yt_{video_id}_{target_height}_{hdr_type}'
+ self.setCache(cache_key, {
+ 'video_tracks': [selected_video],
+ 'video_url': selected_video['url'],
+ 'audio_url': audio['url'],
+ 'video_item': selected_video,
+ 'audio_item': audio,
+ 'duration': data.get('duration') or 0,
+ 'expires': time.time() + 300,
+ })
+ return {
+ 'parse': 0,
+ 'jx': 0,
+ 'url': f'http://127.0.0.1:9978/proxy?do=py&type=mpd&vid={video_id}&quality={target_height}_{hdr_type}',
+ 'format': 'application/dash+xml'
+ }
+ else:
+ headers = self.header.copy()
+ headers.update(selected_video.get('headers') or {})
+ return {'parse': 0, 'jx': 0, 'url': selected_video['url'], 'header': headers}
+ except Exception as e:
+ debug_log('_play_video_by_height_and_type error', {'video_id': video_id, 'height': target_height, 'type': hdr_type, 'error': repr(e)})
+ return {'parse': 1, 'url': f'https://www.youtube.com/embed/{video_id}?autoplay=1', 'header': json.dumps(self.header)}
+
+
+ def _play_live_by_height(self, video_id, target_height):
+ cache_key = f'live_{video_id}_{target_height}'
+ cached = self.getCache(cache_key)
+ if cached and cached.get('url'):
+ variant_url = cached['url']
+ if self.hls_proxy_enabled:
+ play_url = self._cache_hls_url(variant_url, video_id, 'master')
+ else:
+ play_url = variant_url
+ return {
+ 'parse': 0,
+ 'jx': 0,
+ 'url': play_url,
+ 'header': self.header,
+ 'format': 'application/x-mpegURL'
+ }
+ else:
+ return self._play_live(video_id)
+
+
+ def _is_live_category(self, cid):
+ cid_lower = cid.lower()
+ return 'live' in cid_lower or '直播' in cid_lower
+
+ def _build_live_keyword(self, cid, filters=None):
+ terms = [cid]
+ if isinstance(filters, dict):
+ for value in filters.values():
+ term = self._normalize_filter_term(value)
+ if term:
+ terms.append(term)
+ keyword = ' '.join([x for x in terms if x]).strip()
+ if 'live' not in keyword.lower() and '直播' not in keyword:
+ keyword = f'{keyword} live'
+ return keyword
+
+ def _build_video_keyword(self, cid, filters=None):
+ if cid.startswith('LIST:'):
+ raw = cid[5:].strip()
+ channels = [ch.strip() for ch in raw.split(',') if ch.strip()]
+ terms = []
+ for ch in channels:
+ if ch.startswith('@'):
+ terms.append(f'channel:{ch}')
+ else:
+ terms.append(f'"{ch}"')
+ keyword = ' OR '.join(terms) if terms else ''
+ else:
+ keyword = cid
+ if isinstance(filters, dict):
+ for value in filters.values():
+ term = self._normalize_filter_term(value)
+ if term:
+ keyword += ' ' + term
+ return keyword.strip()
+
+ def _normalize_filter_term(self, value):
+ if isinstance(value, (list, tuple)):
+ return ' '.join([self._normalize_filter_term(item) for item in value if item])
+ if isinstance(value, dict):
+ return ' '.join([self._normalize_filter_term(item) for item in value.values() if item])
+ return re.sub(r'\s+', ' ', str(value or '')).strip()[:180]
+
+ def _search_cache_key(self, key):
+ return re.sub(r'\s+', ' ', str(key or '')).strip().lower()
+
+ def _search_video_page(self, key, page=1):
+ page = max(1, int(page or 1))
+ cache_key = self._search_cache_key(key)
+ session = self.search_page_cache.get(cache_key)
+ if page == 1 or not session:
+ session = self._fetch_search_first_page(key)
+ self.search_page_cache[cache_key] = session
+ while len(session.get('pages', [])) < page and session.get('next'):
+ data = self._fetch_search_continuation(session)
+ videos = self._extract_videos_from_api(data, 30)
+ session.setdefault('pages', []).append(videos)
+ session['next'] = self._extract_continuation_token(data)
+ pages = session.get('pages', [])
+ videos = pages[page - 1] if len(pages) >= page else []
+ has_more = bool(session.get('next')) or len(pages) > page
+ return videos, has_more
+
+ def _search_live_page(self, key, page=1):
+ page = max(1, int(page or 1))
+ cache_key = f'live_{self._search_cache_key(key)}'
+ session = self.live_search_cache.get(cache_key)
+ if page == 1 or not session:
+ session = self._fetch_live_search_first_page(key)
+ self.live_search_cache[cache_key] = session
+ while len(session.get('pages', [])) < page and session.get('next'):
+ data = self._fetch_search_continuation(session)
+ videos = self._extract_live_videos_from_api(data, 30)
+ session.setdefault('pages', []).append(videos)
+ session['next'] = self._extract_continuation_token(data)
+ pages = session.get('pages', [])
+ videos = pages[page - 1] if len(pages) >= page else []
+ has_more = bool(session.get('next')) or len(pages) > page
+ return videos, has_more
+
+ def _fetch_live_search_first_page(self, key):
+ search_url = f'https://www.youtube.com/results?search_query={quote(str(key or ""))}&sp=EgJAAQ%253D%253D'
+ r = self.session.get(search_url, timeout=10)
+ html_str = r.text
+ data = self.yt_video._extract_json_after(html_str, 'ytInitialData') or {}
+ ytcfg = self.yt_video._extract_ytcfg(html_str) or {}
+ api_key = ytcfg.get('INNERTUBE_API_KEY') or self.yt_video._search(r'"INNERTUBE_API_KEY":"([^"]+)"', html_str)
+ context = ytcfg.get('INNERTUBE_CONTEXT') or {'client': {'clientName': 'WEB', 'clientVersion': '2.20240310.01.00', 'hl': 'zh-CN', 'gl': 'US'}}
+ client = context.get('client') or {}
+ return {
+ 'key': key,
+ 'api_key': api_key,
+ 'context': context,
+ 'client_name': client.get('clientName') or 'WEB',
+ 'client_version': client.get('clientVersion') or '2.20240310.01.00',
+ 'referer': search_url,
+ 'pages': [self._extract_live_videos_from_api(data, 30)],
+ 'next': self._extract_continuation_token(data),
+ }
+
+ def _fetch_search_first_page(self, key):
+ search_url = f'https://www.youtube.com/results?search_query={quote(str(key or ""))}'
+ r = self.session.get(search_url, timeout=10)
+ html_str = r.text
+ data = self.yt_video._extract_json_after(html_str, 'ytInitialData') or {}
+ ytcfg = self.yt_video._extract_ytcfg(html_str) or {}
+ api_key = ytcfg.get('INNERTUBE_API_KEY') or self.yt_video._search(r'"INNERTUBE_API_KEY":"([^"]+)"', html_str)
+ context = ytcfg.get('INNERTUBE_CONTEXT') or {'client': {'clientName': 'WEB', 'clientVersion': '2.20240310.01.00', 'hl': 'zh-CN', 'gl': 'US'}}
+ client = context.get('client') or {}
+ return {
+ 'key': key,
+ 'api_key': api_key,
+ 'context': context,
+ 'client_name': client.get('clientName') or 'WEB',
+ 'client_version': client.get('clientVersion') or '2.20240310.01.00',
+ 'referer': search_url,
+ 'pages': [self._extract_videos_from_api(data, 30)],
+ 'next': self._extract_continuation_token(data),
+ }
+
+ def _fetch_search_continuation(self, session):
+ token = session.get('next')
+ api_key = session.get('api_key')
+ if not token or not api_key:
+ return {}
+ url = f'https://www.youtube.com/youtubei/v1/search?key={quote(api_key)}'
+ headers = self.header.copy()
+ headers.update({
+ 'Content-Type': 'application/json',
+ 'Origin': 'https://www.youtube.com',
+ 'Referer': session.get('referer') or 'https://www.youtube.com/',
+ 'X-YouTube-Client-Name': str(self.yt_video._client_name_id(session.get('client_name'))),
+ 'X-YouTube-Client-Version': session.get('client_version') or '2.20240310.01.00',
+ })
+ payload = {'context': session.get('context') or {}, 'continuation': token}
+ r = self.session.post(url, json=payload, headers=headers, timeout=10)
+ r.raise_for_status()
+ return r.json()
+
+ def _extract_continuation_token(self, data):
+ tokens = []
+ def scan(obj):
+ if isinstance(obj, dict):
+ endpoint = obj.get('continuationEndpoint') or {}
+ token = endpoint.get('continuationCommand', {}).get('token')
+ if token:
+ tokens.append(token)
+ renderer = obj.get('continuationItemRenderer') or {}
+ token = renderer.get('continuationEndpoint', {}).get('continuationCommand', {}).get('token')
+ if token:
+ tokens.append(token)
+ for value in obj.values():
+ scan(value)
+ elif isinstance(obj, list):
+ for value in obj:
+ scan(value)
+ scan(data)
+ return tokens[0] if tokens else ''
+
+ def _extract_videos_from_api(self, data, limit=30):
+ videos = []
+ seen = set()
+ def scan(obj):
+ if len(videos) >= limit:
+ return
+ if isinstance(obj, dict):
+ for key in ('videoRenderer', 'compactVideoRenderer', 'gridVideoRenderer'):
+ if key in obj:
+ item = self._parse_renderer(obj[key], is_live=False)
+ if item and item['vod_id'] not in seen:
+ seen.add(item['vod_id'])
+ videos.append(item)
+ for value in obj.values():
+ scan(value)
+ elif isinstance(obj, list):
+ for value in obj:
+ scan(value)
+ scan(data)
+ return videos[:limit]
+
+ def _extract_live_videos_from_api(self, data, limit=30):
+ videos = []
+ seen = set()
+ def scan(obj):
+ if len(videos) >= limit:
+ return
+ if isinstance(obj, dict):
+ for key in ('videoRenderer', 'compactVideoRenderer', 'gridVideoRenderer'):
+ if key in obj:
+ item = self._parse_renderer(obj[key], is_live=True)
+ if item and item['vod_id'] not in seen:
+ seen.add(item['vod_id'])
+ videos.append(item)
+ for value in obj.values():
+ scan(value)
+ elif isinstance(obj, list):
+ for value in obj:
+ scan(value)
+ scan(data)
+ return videos[:limit]
+
+ def _parse_renderer(self, renderer, is_live=False):
+ try:
+ vid = renderer.get('videoId')
+ if not vid:
+ nav = renderer.get('navigationEndpoint') or {}
+ vid = (nav.get('watchEndpoint') or {}).get('videoId')
+ if not vid:
+ return None
+ title_obj = renderer.get('title') or renderer.get('headline') or {}
+ title = title_obj.get('simpleText') or ''.join([x.get('text', '') for x in title_obj.get('runs', [])]) or 'YouTube Video'
+ dur = (renderer.get('lengthText') or {}).get('simpleText') or ''
+ if is_live:
+ remarks = '直播'
+ else:
+ remarks = dur if dur else '视频'
+ return {
+ 'vod_id': vid,
+ 'vod_name': html.unescape(title),
+ 'vod_pic': f'http://127.0.0.1:9978/proxy?do=py&type=image&vid={vid}',
+ 'vod_remarks': remarks
+ }
+ except Exception:
+ return None
+
+ def _extract_videos_fixed(self, html_str, limit=30):
+ data = None
+ match = re.search(r'var ytInitialData = (\{.*?\});', html_str)
+ if match:
+ try:
+ data = json.loads(match.group(1))
+ except Exception:
+ data = None
+ if not data:
+ return []
+ return self._extract_videos_from_api(data, limit)
+
+ def _get_video_title(self, vid):
+ try:
+ r = self.session.get(f'https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v={vid}&format=json', timeout=5)
+ return r.json().get('title') or vid
+ except Exception:
+ return vid
+
+ def _safe_title(self, title):
+ if not title:
+ return 'video'
+ return re.sub(r'[#$@%&!?*|\\/:<>]', ' ', title)[:60]
+
+ def _play_live(self, video_id):
+ try:
+ data = self.yt_live.extract_live(video_id)
+ hls_url = data.get('hls_url') or ''
+ if not hls_url:
+ status = data.get('status') or 'NO_HLS'
+ reason = data.get('reason') or '未获取到直播 HLS 地址'
+ debug_log('_play_live no hls', {'video_id': video_id, 'status': status, 'reason': reason})
+ raise Exception(reason)
+ if self.extendDict.get('hls_probe'):
+ self._probe_hls(video_id, hls_url)
+ play_url = hls_url
+ if self.hls_proxy_enabled:
+ play_url = self._cache_hls_url(hls_url, video_id, 'master')
+ debug_log('return live hls', {'video_id': video_id, 'url_len': len(hls_url), 'status': data.get('status'), 'proxy': self.hls_proxy_enabled})
+ return {
+ 'parse': 0,
+ 'jx': 0,
+ 'url': play_url,
+ 'header': self.header,
+ 'format': 'application/x-mpegURL'
+ }
+ except Exception as e:
+ debug_log('_play_live error', {'video_id': video_id, 'error': repr(e)})
+ return {'parse': 1, 'jx': 1, 'url': f'https://www.youtube.com/embed/{video_id}?autoplay=1'}
+
+ def _play_video(self, video_id, quality):
+ try:
+ data = self.yt_video.extract(video_id)
+ playable = self.yt_video.choose_playable(data['formats'], quality)
+ if playable:
+ audio = self.yt_video.choose_audio(data['formats'])
+ debug_log('selected playable', {'itag': playable.get('itag'), 'client': playable.get('client'), 'mime': playable.get('mimeType'), 'height': playable.get('height'), 'has_n': 'n=' in playable.get('url', ''), 'redirected': bool(playable.get('redirected')), 'ua': (playable.get('headers') or {}).get('User-Agent', '')[:60], 'url_len': len(playable.get('url', ''))})
+ debug_log('selected audio', {'itag': audio.get('itag') if audio else None, 'client': audio.get('client') if audio else None, 'mime': audio.get('mimeType') if audio else None, 'bitrate': audio.get('bitrate') if audio else None})
+ if audio:
+ cache_key = f'yt_{video_id}_{quality}'
+ self.setCache(cache_key, {
+ 'video_url': playable['url'],
+ 'audio_url': audio['url'],
+ 'video_item': playable,
+ 'audio_item': audio,
+ 'duration': data.get('duration') or 0,
+ 'expires': time.time() + 300,
+ })
+ return {'parse': 0, 'jx': 0, 'url': f'http://127.0.0.1:9978/proxy?do=py&type=mpd&vid={video_id}&quality={quality}', 'format': 'application/dash+xml'}
+ debug_log('return direct url', self.yt_video._url_summary(playable.get('url')))
+ headers = self.header.copy()
+ headers.update(playable.get('headers') or {})
+ return {'parse': 0, 'jx': 0, 'url': playable['url'], 'header': headers}
+ raise Exception(f'没有可直接播放的 {quality} 视频流格式')
+ except Exception as e:
+ debug_log('_play_video error', repr(e))
+ return {'parse': 1, 'url': f'https://www.youtube.com/embed/{video_id}?autoplay=1', 'header': json.dumps(self.header)}
+
+ # ------------------ HLS 代理(原 youtubelive) ------------------
+ def _probe_hls(self, video_id, hls_url):
+ try:
+ response = self.session.get(hls_url, headers=self.header, timeout=10)
+ full_text = response.text or ''
+ text = full_text[:5000]
+ lines = [line.strip() for line in full_text.splitlines() if line.strip()][:12]
+ variant_url = self._pick_variant_playlist(hls_url, full_text)
+ debug_log('hls master probe', {
+ 'video_id': video_id,
+ 'status': response.status_code,
+ 'content_type': response.headers.get('content-type'),
+ 'length': len(response.text or ''),
+ 'has_extm3u': text.startswith('#EXTM3U'),
+ 'has_stream_inf': '#EXT-X-STREAM-INF' in text,
+ 'has_media_sequence': '#EXT-X-MEDIA-SEQUENCE' in text,
+ 'variant': bool(variant_url),
+ 'sample': lines,
+ })
+ if variant_url:
+ child = self.session.get(variant_url, headers=self.header, timeout=10)
+ child_text = child.text[:5000] if child.text else ''
+ child_lines = [line.strip() for line in child_text.splitlines() if line.strip()][:12]
+ debug_log('hls variant probe', {
+ 'video_id': video_id,
+ 'status': child.status_code,
+ 'content_type': child.headers.get('content-type'),
+ 'length': len(child.text or ''),
+ 'has_extm3u': child_text.startswith('#EXTM3U'),
+ 'has_media_sequence': '#EXT-X-MEDIA-SEQUENCE' in child_text,
+ 'has_segments': bool(re.search(r'^[^#].+', child_text, re.M)),
+ 'sample': child_lines,
+ })
+ except Exception as e:
+ debug_log('hls probe error', {'video_id': video_id, 'error': repr(e)})
+
+ def _pick_variant_playlist(self, base_url, text):
+ lines = [line.strip() for line in (text or '').splitlines()]
+ best_score = -1
+ best_url = ''
+ for index, line in enumerate(lines):
+ if not line.startswith('#EXT-X-STREAM-INF'):
+ continue
+ score = 0
+ bandwidth = re.search(r'BANDWIDTH=(\d+)', line)
+ resolution = re.search(r'RESOLUTION=(\d+)x(\d+)', line)
+ if bandwidth:
+ score += int(bandwidth.group(1))
+ if resolution:
+ score += int(resolution.group(1)) * int(resolution.group(2))
+ for next_line in lines[index + 1:]:
+ if not next_line or next_line.startswith('#'):
+ continue
+ if score > best_score:
+ best_score = score
+ best_url = urljoin(base_url, next_line)
+ break
+ return best_url
+
+ HLS_TTL = {'master': 6 * 3600, 'playlist': 6 * 3600, 'media': 120, 'media_retry': 120}
+
+ def _hls_ttl(self, kind):
+ return self.HLS_TTL.get(kind, 180)
+
+ def _prune_hls_cache(self):
+ now = time.time()
+ expired = [k for k, v in self.hls_url_cache.items() if v.get('expires', 0) < now]
+ for k in expired:
+ self.hls_url_cache.pop(k, None)
+
+ def _cache_hls_url(self, target_url, video_id='', kind='media'):
+ self._prune_hls_cache()
+ self._hls_key_seq += 1
+ key = f'{int(time.time() * 1000)}_{self._hls_key_seq}'
+ self.hls_url_cache[key] = {
+ 'url': target_url,
+ 'video_id': video_id,
+ 'kind': kind,
+ 'expires': time.time() + self._hls_ttl(kind),
+ }
+ return f'http://127.0.0.1:9978/proxy?do=py&type=hls&key={quote(key)}'
+
+ def _hls_headers(self, target_url, kind=None):
+ if kind == 'media_retry':
+ return {
+ 'User-Agent': 'com.google.android.youtube/21.02.35 (Linux; U; Android 11) gzip',
+ 'Accept': '*/*',
+ }
+ headers = self.header.copy()
+ headers['Accept'] = '*/*'
+ if kind in ('master', 'playlist'):
+ headers['Origin'] = 'https://www.youtube.com'
+ headers['Referer'] = 'https://www.youtube.com/'
+ elif kind == 'media':
+ headers['User-Agent'] = 'com.google.android.youtube/21.02.35 (Linux; U; Android 11) gzip'
+ headers.pop('Origin', None)
+ headers.pop('Referer', None)
+ return headers
+
+ def _rewrite_m3u8(self, text, base_url, video_id=''):
+ output = []
+ for line in (text or '').splitlines():
+ stripped = line.strip()
+ if not stripped:
+ output.append(line)
+ continue
+ if stripped.startswith('#'):
+ output.append(self._rewrite_m3u8_tag(line, base_url, video_id))
+ continue
+ absolute = urljoin(base_url, stripped)
+ kind = 'playlist' if stripped.endswith('.m3u8') or '/hls_playlist/' in stripped else 'media'
+ output.append(self._cache_hls_url(absolute, video_id, kind))
+ return '\n'.join(output) + '\n'
+
+ def _rewrite_m3u8_tag(self, line, base_url, video_id=''):
+ def replace_uri(match):
+ raw_url = match.group(1)
+ absolute = urljoin(base_url, raw_url)
+ proxied = self._cache_hls_url(absolute, video_id, 'media')
+ return f'URI="{proxied}"'
+ return re.sub(r'URI="([^"]+)"', replace_uri, line)
+
+ # 本地代理
+ def localProxy(self, params):
+ if params.get('do') != 'py':
+ return None
+ typ = params.get('type')
+ if typ == 'mpd':
+ return self._proxy_mpd(params)
+ if typ == 'media':
+ return self._proxy_media(params)
+ if typ == 'single':
+ return self._proxy_single(params)
+ if typ == 'image':
+ return self._proxy_image(params)
+ if typ == 'hls':
+ return self._proxy_hls(params)
+ return None
+
+ def _proxy_image(self, params):
+ vid = params.get('vid')
+ if not vid:
+ return [400, 'text/plain', '缺少 video id']
+ quality = params.get('quality', 'hqdefault')
+ img_url = f'https://i.ytimg.com/vi/{vid}/{quality}.jpg'
+ try:
+ r = self.session.get(img_url, timeout=10)
+ if r.status_code == 200:
+ content_type = r.headers.get('content-type', 'image/jpeg')
+ return [200, content_type, r.content, {'Cache-Control': 'max-age=86400'}]
+ else:
+ return [404, 'text/plain', f'图片不存在 ({r.status_code})']
+ except Exception as e:
+ return [500, 'text/plain', f'代理图片失败: {str(e)}']
+
+ def _proxy_single(self, params):
+ vid = params.get('vid')
+ data = self.getCache(f'yt_single_{vid}') if vid else None
+ if not data:
+ return [404, 'text/plain', '播放缓存已过期或不存在']
+ target_url = data.get('url')
+ if not target_url:
+ return [404, 'text/plain', '播放地址不存在']
+ headers = (data.get('headers') or self.header).copy()
+ range_header = params.get('range') or params.get('Range')
+ if range_header:
+ headers['Range'] = range_header
+ try:
+ r = self.session.get(target_url, headers=headers, stream=True, timeout=30)
+ content_type = r.headers.get('content-type', 'video/mp4')
+ resp_headers = {
+ 'Content-Type': content_type,
+ 'Accept-Ranges': 'bytes',
+ 'Cache-Control': 'no-cache',
+ }
+ if r.headers.get('content-range'):
+ resp_headers['Content-Range'] = r.headers.get('content-range')
+ if r.headers.get('content-length'):
+ resp_headers['Content-Length'] = r.headers.get('content-length')
+ return [r.status_code, content_type, r.content, resp_headers]
+ except Exception as e:
+ return [500, 'text/plain', f'代理播放失败: {str(e)}']
+
+ def _proxy_mpd(self, params):
+ vid = params.get('vid')
+ quality = params.get('quality') or '1080p'
+ data = self.getCache(f'yt_{vid}_{quality}') if vid else None
+ if not data:
+ return [404, 'text/plain', '视频缓存已过期或不存在']
+ video_url = data.get('video_url')
+ audio_url = data.get('audio_url')
+ duration = data.get('duration') or 'PT0S'
+ video_item = data.get('video_item') or {}
+ audio_item = data.get('audio_item') or {}
+ media_base = f'http://127.0.0.1:9978/proxy?do=py&type=media&vid={vid}&quality={quality}'
+ duration_pt = f"PT{int(duration or 0)}S"
+ video_mime = (video_item.get('mimeType') or 'video/webm').split(';')[0]
+ audio_mime = (audio_item.get('mimeType') or 'audio/mp4').split(';')[0]
+ video_init = video_item.get('initRange') or {}
+ video_index = video_item.get('indexRange') or {}
+ audio_init = audio_item.get('initRange') or {}
+ audio_index = audio_item.get('indexRange') or {}
+ mpd = f'''
+
+
+
+
+ {html.escape(media_base + '&track=video')}
+
+
+
+'''
+ if audio_url:
+ mpd += f'''
+
+ {html.escape(media_base + '&track=audio')}
+
+
+
+'''
+ mpd += ' \n'
+ return [200, 'application/dash+xml', mpd]
+
+ def _proxy_media(self, params):
+ vid = params.get('vid')
+ quality = params.get('quality') or '1080p'
+ track = params.get('track')
+ data = self.getCache(f'yt_{vid}_{quality}') if vid else None
+ if not data or track not in ('video', 'audio'):
+ return [404, 'text/plain', '媒体不存在']
+ target_url = data.get('video_url') if track == 'video' else data.get('audio_url')
+ if not target_url:
+ return [404, 'text/plain', f'{track} 流不存在']
+ media_item = data.get('video_item') if track == 'video' else data.get('audio_item')
+ headers = self.header.copy()
+ headers.update((media_item or {}).get('headers') or {})
+ range_header = params.get('range') or params.get('Range')
+ if range_header:
+ headers['Range'] = range_header
+ try:
+ r = self.session.get(target_url, headers=headers, stream=True, timeout=30)
+ content_type = r.headers.get('content-type', 'application/octet-stream')
+ resp_headers = {'Content-Type': content_type, 'Accept-Ranges': 'bytes', 'Cache-Control': 'no-cache'}
+ if r.headers.get('content-range'):
+ resp_headers['Content-Range'] = r.headers.get('content-range')
+ if r.headers.get('content-length'):
+ resp_headers['Content-Length'] = r.headers.get('content-length')
+ return [r.status_code, content_type, r.content, resp_headers]
+ except Exception as e:
+ return [500, 'text/plain', f'代理媒体失败: {str(e)}']
+
+ def _proxy_hls(self, params):
+ key = params.get('key') or ''
+ item = self.hls_url_cache.get(key)
+ if not item or item.get('expires', 0) < time.time():
+ debug_log('hls proxy missing', {'key': key})
+ return [404, 'text/plain', 'HLS 缓存已过期']
+ item['expires'] = time.time() + self._hls_ttl(item.get('kind'))
+ target_url = item.get('url') or ''
+ try:
+ headers = self._hls_headers(target_url, item.get('kind'))
+ response = self.session.get(target_url, headers=headers, stream=True, timeout=15)
+ retried = False
+ if item.get('kind') == 'media' and response.status_code == 403:
+ retry_headers = self._hls_headers(target_url, 'media_retry')
+ response.close()
+ retried = True
+ response = self.session.get(target_url, headers=retry_headers, stream=True, timeout=15)
+ content_type = response.headers.get('content-type') or ''
+ is_m3u8 = item.get('kind') in ('master', 'playlist') or 'mpegurl' in content_type.lower() or target_url.split('?')[0].endswith('.m3u8')
+ debug_log('hls proxy response', {
+ 'key': key,
+ 'kind': item.get('kind'),
+ 'status': response.status_code,
+ 'content_type': content_type,
+ 'is_m3u8': is_m3u8,
+ 'url_len': len(target_url),
+ 'path_tail': target_url.split('?')[0][-80:],
+ 'retried': retried,
+ })
+ if is_m3u8:
+ text = response.text
+ rewritten = self._rewrite_m3u8(text, target_url, item.get('video_id') or '')
+ return [response.status_code, 'application/vnd.apple.mpegurl', rewritten, {'Content-Type': 'application/vnd.apple.mpegurl', 'Cache-Control': 'no-cache'}]
+ resp_headers = {'Content-Type': content_type or 'application/octet-stream', 'Cache-Control': 'no-cache'}
+ if response.headers.get('content-length'):
+ resp_headers['Content-Length'] = response.headers.get('content-length')
+ return [response.status_code, content_type or 'application/octet-stream', response.content, resp_headers]
+ except Exception as e:
+ debug_log('hls proxy error', {'key': key, 'error': repr(e)})
+ return [500, 'text/plain', f'HLS 代理失败: {str(e)}']
+
+ def destroy(self):
+ try:
+ self.session.close()
+ except Exception:
+ pass
\ No newline at end of file
diff --git a/tvbox/py/ytbzb.py b/tvbox/py/ytbzb.py
new file mode 100644
index 00000000..9ee861c8
--- /dev/null
+++ b/tvbox/py/ytbzb.py
@@ -0,0 +1,795 @@
+# -*- coding: utf-8 -*-
+"""
+YouTube 台湾新闻直播爬虫(最终修复版) - 扩展频道与动态配置
+- 支持从 JSON 或 TXT(M3U风格)加载频道列表
+- 支持 proxy 数组自动探测
+- 保留分组信息 (group-title)
+- 强制使用已配置代理请求 M3U8/TS
+- 修复 TXT 分组识别
+"""
+
+import re
+import sys
+import json
+import html
+import time
+import base64
+import os
+import requests
+from urllib.parse import quote, unquote, urljoin
+from base.spider import Spider
+from requests.adapters import HTTPAdapter
+from urllib3.util.retry import Retry
+
+sys.path.append('..')
+
+# DEBUG_LOG = '/sdcard/Download/yt_tw_news_debug.log'
+
+def debug_log(message, data=None):
+ try:
+ line = f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] {message}"
+ if data is not None:
+ if isinstance(data, (dict, list)):
+ line += ' ' + json.dumps(data, ensure_ascii=False, default=str)
+ else:
+ line += ' ' + str(data)
+ with open(DEBUG_LOG, 'a', encoding='utf-8') as f:
+ f.write(line + '\n')
+ except Exception:
+ pass
+
+# ==================== YouTubeLiveLite(原版不变) ====================
+class YouTubeLiveLite:
+ def __init__(self, session, headers=None, config=None):
+ self.session = session
+ self.headers = headers or {}
+ self.config = config or {}
+ self.cache = {}
+ self.cache_ttl = int(self.config.get('live_cache_ttl') or 45)
+
+ @staticmethod
+ def extract_video_id(text):
+ text = str(text or '').strip()
+ for pattern in [
+ r'(?:v=|/v/|/embed/|/shorts/|youtu\.be/)([0-9A-Za-z_-]{11})',
+ r'^([0-9A-Za-z_-]{11})$',
+ ]:
+ match = re.search(pattern, text)
+ if match:
+ return match.group(1)
+ raise Exception('无法识别 YouTube 视频 ID')
+
+ def extract_live(self, url_or_id):
+ video_id = self.extract_video_id(url_or_id)
+ now = time.time()
+ cached = self.cache.get(video_id)
+ if cached and cached.get('expires', 0) > now:
+ debug_log('live cache hit', {'video_id': video_id, 'ttl': int(cached.get('expires', 0) - now)})
+ return cached.get('data')
+
+ watch_url = f'https://www.youtube.com/watch?v={video_id}'
+ debug_log('live extract start', {'input': url_or_id, 'video_id': video_id})
+ response = self._get(watch_url)
+ page = response.text
+ player_response = self._extract_initial_player_response(page) or {}
+ ytcfg = self._extract_ytcfg(page) or {}
+ api_key = ytcfg.get('INNERTUBE_API_KEY') or self._search(r'"INNERTUBE_API_KEY":"([^"]+)"', page)
+ visitor_data = self._extract_visitor_data(ytcfg, player_response)
+ status_obj = player_response.get('playabilityStatus') or {}
+ streaming = player_response.get('streamingData') or {}
+ details = player_response.get('videoDetails') or {}
+
+ debug_log('live page parsed', {
+ 'status': status_obj.get('status'),
+ 'reason': status_obj.get('reason'),
+ 'is_live': details.get('isLiveContent'),
+ 'has_hls': bool(streaming.get('hlsManifestUrl')),
+ 'has_api_key': bool(api_key),
+ 'has_visitor': bool(visitor_data),
+ })
+
+ page_hls_url = streaming.get('hlsManifestUrl') or ''
+ hls_source = 'page' if page_hls_url else ''
+ api_data = None
+ if api_key:
+ api_data = self._call_player_api(video_id, api_key, ytcfg, watch_url, visitor_data)
+ if api_data:
+ api_streaming = api_data.get('streamingData') or {}
+ api_details = api_data.get('videoDetails') or {}
+ api_hls_url = api_streaming.get('hlsManifestUrl') or ''
+ if api_hls_url:
+ streaming = api_streaming
+ hls_source = api_data.get('_client_name') or 'api'
+ elif not page_hls_url and api_streaming:
+ streaming = api_streaming
+ hls_source = api_data.get('_client_name') or 'api_no_hls'
+ if api_details:
+ details = api_details
+ status_obj = api_data.get('playabilityStatus') or status_obj
+ if not (streaming.get('hlsManifestUrl') or '') and page_hls_url:
+ streaming = dict(streaming or {})
+ streaming['hlsManifestUrl'] = page_hls_url
+ hls_source = 'page_fallback'
+
+ hls_url = streaming.get('hlsManifestUrl') or ''
+ is_live = bool(details.get('isLiveContent') or hls_url)
+ status = status_obj.get('status') or ''
+ reason = status_obj.get('reason') or ''
+ title = details.get('title') or video_id
+
+ data = {
+ 'id': video_id,
+ 'title': title,
+ 'is_live': is_live,
+ 'status': status,
+ 'reason': reason,
+ 'hls_url': hls_url,
+ 'duration': int(details.get('lengthSeconds') or 0),
+ }
+ debug_log('live extract result', {
+ 'video_id': video_id,
+ 'status': status,
+ 'is_live': is_live,
+ 'has_hls': bool(hls_url),
+ 'hls_source': hls_source,
+ 'duration': data.get('duration'),
+ })
+ self.cache[video_id] = {'data': data, 'expires': time.time() + self.cache_ttl}
+ return data
+
+ def _get(self, url, **kwargs):
+ headers = self.headers.copy()
+ headers.update(kwargs.pop('headers', {}) or {})
+ response = self.session.get(url, headers=headers, timeout=kwargs.pop('timeout', 30), **kwargs)
+ response.raise_for_status()
+ return response
+
+ def _post_json(self, url, payload, headers=None):
+ final_headers = self.headers.copy()
+ final_headers.update({'Content-Type': 'application/json', 'Origin': 'https://www.youtube.com'})
+ if headers:
+ final_headers.update({k: v for k, v in headers.items() if v})
+ response = self.session.post(url, json=payload, headers=final_headers, timeout=30)
+ response.raise_for_status()
+ return response.json()
+
+ def _call_player_api(self, video_id, api_key, ytcfg, referer, visitor_data=None):
+ context = ytcfg.get('INNERTUBE_CONTEXT') or {
+ 'client': {'clientName': 'WEB', 'clientVersion': '2.20240310.01.00', 'hl': 'en', 'gl': 'US'}
+ }
+ clients = [
+ {'client': {'clientName': 'ANDROID', 'clientVersion': '21.02.35', 'androidSdkVersion': 30, 'userAgent': 'com.google.android.youtube/21.02.35 (Linux; U; Android 11) gzip', 'osName': 'Android', 'osVersion': '11', 'hl': 'en', 'gl': 'US'}},
+ {'client': {'clientName': 'IOS', 'clientVersion': '21.02.3', 'deviceMake': 'Apple', 'deviceModel': 'iPhone16,2', 'userAgent': 'com.google.ios.youtube/21.02.3 (iPhone16,2; U; CPU iOS 18_3_2 like Mac OS X;)', 'osName': 'iPhone', 'osVersion': '18.3.2.22D82', 'hl': 'en', 'gl': 'US'}},
+ {'client': {'clientName': 'MWEB', 'clientVersion': '2.20260115.01.00', 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1', 'hl': 'en', 'gl': 'US'}},
+ context,
+ ]
+ for ctx in clients:
+ client = ctx.get('client') or {}
+ client_name = client.get('clientName') or 'WEB'
+ try:
+ url = f'https://www.youtube.com/youtubei/v1/player?key={quote(api_key)}&prettyPrint=false'
+ headers = {
+ 'Referer': referer,
+ 'X-YouTube-Client-Name': str(self._client_name_id(client_name)),
+ 'X-YouTube-Client-Version': client.get('clientVersion') or '',
+ }
+ if visitor_data:
+ headers['X-Goog-Visitor-Id'] = visitor_data
+ if client.get('userAgent'):
+ headers['User-Agent'] = client.get('userAgent')
+ payload = {
+ 'context': ctx,
+ 'videoId': video_id,
+ 'contentCheckOk': True,
+ 'racyCheckOk': True,
+ }
+ data = self._post_json(url, payload, headers=headers)
+ streaming = data.get('streamingData') or {}
+ status = (data.get('playabilityStatus') or {}).get('status')
+ debug_log('live api client', {
+ 'client': client_name,
+ 'status': status,
+ 'has_hls': bool(streaming.get('hlsManifestUrl')),
+ 'has_streaming': bool(streaming),
+ })
+ if streaming.get('hlsManifestUrl'):
+ data['_client_name'] = client_name
+ return data
+ except Exception as e:
+ debug_log('live api client error', {'client': client_name, 'error': repr(e)})
+ return None
+
+ def _extract_visitor_data(self, ytcfg, player_response):
+ return (
+ self.config.get('visitor_data')
+ or ytcfg.get('VISITOR_DATA')
+ or (((ytcfg.get('INNERTUBE_CONTEXT') or {}).get('client') or {}).get('visitorData'))
+ or ((player_response.get('responseContext') or {}).get('visitorData'))
+ )
+
+ def _extract_ytcfg(self, text):
+ match = re.search(r'ytcfg\.set\s*\(\s*({.+?})\s*\)\s*;', text or '', re.S)
+ if not match:
+ return None
+ try:
+ return json.loads(match.group(1))
+ except Exception:
+ return None
+
+ def _extract_initial_player_response(self, text):
+ return self._extract_json_after(text, 'ytInitialPlayerResponse')
+
+ def _extract_json_after(self, text, marker):
+ pos = (text or '').find(marker)
+ if pos < 0:
+ return None
+ start = text.find('{', pos)
+ if start < 0:
+ return None
+ depth = 0
+ in_str = None
+ escape = False
+ for index in range(start, len(text)):
+ char = text[index]
+ if escape:
+ escape = False
+ continue
+ if char == '\\':
+ escape = True
+ continue
+ if in_str:
+ if char == in_str:
+ in_str = None
+ continue
+ if char in ('"', "'"):
+ in_str = char
+ continue
+ if char == '{':
+ depth += 1
+ elif char == '}':
+ depth -= 1
+ if depth == 0:
+ try:
+ return json.loads(text[start:index + 1])
+ except Exception:
+ return None
+ return None
+
+ @staticmethod
+ def _search(pattern, text, default=None):
+ match = re.search(pattern, text or '', re.S)
+ return match.group(1) if match else default
+
+ def _client_name_id(self, client_name):
+ return {
+ 'WEB': 1,
+ 'MWEB': 2,
+ 'ANDROID': 3,
+ 'IOS': 5,
+ 'TVHTML5': 7,
+ 'ANDROID_VR': 28,
+ 'WEB_EMBEDDED_PLAYER': 56,
+ 'WEB_REMIX': 67,
+ }.get(client_name, 1)
+
+# ==================== 频道定义(默认) ====================
+DEFAULT_CHANNELS = [
+ {"id": "CTI", "name": "中天新聞", "url": "https://m.youtube.com/@中天電視CtiTv/streams/1"},
+ {"id": "TVBS", "name": "TVBS新聞", "url": "https://m.youtube.com/@TVBSNEWS01/streams/1"},
+ {"id": "EBC", "name": "東森新聞", "url": "https://m.youtube.com/@newsebc/streams/1"},
+ {"id": "FTV", "name": "民視新聞", "url": "https://m.youtube.com/@FTV_News/streams/1"},
+]
+
+# ==================== Spider 类 ====================
+class Spider(Spider):
+ def getName(self):
+ return "YouTube台湾新闻直播"
+
+ def init(self, extend):
+ try:
+ self.extendDict = json.loads(extend) if extend else {}
+ except:
+ self.extendDict = {}
+
+ # 创建 Session 并配置重试策略
+ self.session = requests.Session()
+ retry = Retry(total=2, backoff_factor=0.5, status_forcelist=[429, 500, 502, 503, 504])
+ adapter = HTTPAdapter(max_retries=retry, pool_connections=5, pool_maxsize=10)
+ self.session.mount('http://', adapter)
+ self.session.mount('https://', adapter)
+
+ # 请求头
+ self.session.headers.update({
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
+ 'Accept-Language': 'zh-TW,zh;q=0.9,en;q=0.8',
+ 'Referer': 'https://www.youtube.com/'
+ })
+
+ # ----- 代理配置:支持数组自动探测 -----
+ self.proxy_str = None
+ self._proxy_configured = False # 标记是否使用了有效代理
+ proxy_val = self.extendDict.get('proxy')
+
+ if proxy_val is not None:
+ if isinstance(proxy_val, list):
+ found = False
+ for p in proxy_val:
+ p_norm = self._normalize_proxy_url(p)
+ if p_norm:
+ test_proxies = {'http': p_norm, 'https': p_norm}
+ try:
+ r = requests.get('https://www.youtube.com', proxies=test_proxies, timeout=2)
+ if r.status_code < 400:
+ self.session.proxies = test_proxies
+ self.proxy_str = p_norm.replace('http://', '').replace('https://', '')
+ self._proxy_configured = True
+ debug_log('使用用户列表代理', {'proxy': p_norm})
+ found = True
+ break
+ except Exception:
+ continue
+ if not found:
+ self.session.proxies = {}
+ self.proxy_str = ''
+ self._proxy_configured = False
+ debug_log('用户列表代理均不可用,回退系统代理')
+ elif isinstance(proxy_val, str):
+ p_norm = self._normalize_proxy_url(proxy_val)
+ if p_norm:
+ self.session.proxies = {'http': p_norm, 'https': p_norm}
+ self.proxy_str = p_norm.replace('http://', '').replace('https://', '')
+ self._proxy_configured = True
+ debug_log('使用 ext 传入代理(字符串)', {'proxy': p_norm})
+ else:
+ self._auto_detect_proxy()
+ elif isinstance(proxy_val, dict):
+ proxies = {}
+ for k, v in proxy_val.items():
+ if k in ('http', 'https') and v:
+ v = self._normalize_proxy_url(v)
+ if v:
+ proxies[k] = v
+ if proxies:
+ self.session.proxies = proxies
+ self.proxy_str = (proxies.get('https') or proxies.get('http') or '').replace('http://', '').replace('https://', '')
+ self._proxy_configured = True
+ debug_log('使用 ext 传入的字典代理', proxies)
+ else:
+ self._auto_detect_proxy()
+ else:
+ self._auto_detect_proxy()
+ else:
+ self._auto_detect_proxy()
+
+ # 初始化 YouTube 提取器
+ self.yt = YouTubeLiveLite(self.session, self.session.headers, {})
+ # 缓存
+ self.video_cache = {}
+ self.fail_cache = {}
+ self.m3u8_cache = {}
+ self.video_ttl = 300
+ self.m3u8_ttl = 15
+ self.fail_ttl = 120
+
+ # ----- 频道列表加载:支持 JSON 或 TXT(本地/远程) -----
+ self.channels = DEFAULT_CHANNELS.copy()
+ custom = self.extendDict.get('channels')
+ if custom:
+ loaded = False
+ if isinstance(custom, list):
+ if all(isinstance(c, dict) and 'id' in c and 'name' in c and 'url' in c for c in custom):
+ self.channels = custom
+ loaded = True
+ debug_log("使用自定义频道列表(直接传入JSON列表)", {"count": len(self.channels)})
+ else:
+ debug_log("自定义频道列表格式无效,使用默认列表")
+ elif isinstance(custom, str):
+ # ---------- 远程 URL ----------
+ if custom.startswith('http://') or custom.startswith('https://'):
+ try:
+ resp = self.session.get(custom, timeout=10)
+ if resp.status_code == 200:
+ # 强制使用 UTF-8 解码
+ try:
+ txt_data = resp.content.decode('utf-8')
+ except UnicodeDecodeError:
+ txt_data = resp.content.decode('utf-8', errors='ignore')
+ # 先尝试 JSON
+ try:
+ data = json.loads(txt_data)
+ if isinstance(data, list) and all(isinstance(c, dict) and 'id' in c and 'name' in c and 'url' in c for c in data):
+ self.channels = data
+ loaded = True
+ debug_log("从远程 URL 加载频道列表(JSON)", {"url": custom, "count": len(self.channels)})
+ else:
+ debug_log("远程 JSON 数据格式无效,尝试 TXT 解析", {"url": custom})
+ except Exception as e:
+ debug_log("远程 JSON 解析失败,尝试 TXT 解析", {"url": custom, "error": repr(e)})
+ # 如果 JSON 未成功加载,尝试 TXT
+ if not loaded:
+ try:
+ channels, group = self._parse_txt_channels(txt_data)
+ if channels:
+ self.channels = channels
+ loaded = True
+ self._current_group = group
+ debug_log("从远程 URL 加载频道列表(TXT)", {"url": custom, "count": len(self.channels), "group": group})
+ else:
+ debug_log("远程 TXT 解析失败,无有效频道", {"url": custom})
+ except Exception as e2:
+ debug_log("远程 TXT 解析异常", {"url": custom, "error": repr(e2)})
+ else:
+ debug_log("远程请求失败", {"url": custom, "status": resp.status_code})
+ except Exception as e:
+ debug_log("远程加载失败", {"url": custom, "error": repr(e)})
+ # ---------- 本地文件 ----------
+ else:
+ script_dir = os.path.dirname(os.path.abspath(__file__))
+ if custom.startswith('./'):
+ file_path = os.path.join(script_dir, custom[2:])
+ else:
+ file_path = custom
+ if file_path.lower().endswith('.txt'):
+ try:
+ with open(file_path, 'r', encoding='utf-8') as f:
+ txt_content = f.read()
+ channels, group = self._parse_txt_channels(txt_content)
+ if channels:
+ self.channels = channels
+ loaded = True
+ self._current_group = group
+ debug_log("从本地 TXT 文件加载频道列表", {"path": file_path, "count": len(self.channels), "group": group})
+ else:
+ debug_log("TXT 文件内容无效", {"path": file_path})
+ except Exception as e:
+ debug_log("读取本地 TXT 失败", {"path": file_path, "error": repr(e)})
+ else:
+ # JSON 文件
+ try:
+ with open(file_path, 'r', encoding='utf-8') as f:
+ data = json.load(f)
+ if isinstance(data, list) and all(isinstance(c, dict) and 'id' in c and 'name' in c and 'url' in c for c in data):
+ self.channels = data
+ loaded = True
+ debug_log("从本地 JSON 文件加载频道列表", {"path": file_path, "count": len(self.channels)})
+ else:
+ debug_log("JSON 文件内容格式无效", {"path": file_path})
+ except Exception as e:
+ debug_log("读取本地 JSON 失败", {"path": file_path, "error": repr(e)})
+ else:
+ debug_log("channels 字段类型不支持,使用默认列表")
+ if not loaded:
+ debug_log("使用默认频道列表", {"count": len(self.channels)})
+ else:
+ debug_log("未配置 channels,使用默认列表", {"count": len(self.channels)})
+
+ debug_log("Spider init", {"channels": len(self.channels)})
+
+ def _parse_txt_channels(self, content):
+ """解析 TXT 格式(M3U风格),正确识别 #genre# 分组"""
+ lines = content.splitlines()
+ channels = []
+ current_group = "油管直播" # 默认组名
+ seen = set()
+
+ for line in lines:
+ line = line.strip()
+ if not line:
+ continue
+
+ # 检测分组行:格式为 "分组名,#genre#"
+ if '#genre#' in line:
+ parts = line.split(',')
+ if len(parts) >= 1:
+ group_name = parts[0].strip()
+ # 如果开头有 #,去掉
+ if group_name.startswith('#'):
+ group_name = group_name[1:].strip()
+ if group_name:
+ current_group = group_name
+ continue
+
+ # 跳过其他 # 开头的注释行(但不是 #genre#)
+ if line.startswith('#'):
+ continue
+
+ # 解析节目行:名称,URL
+ if ',' in line:
+ parts = line.split(',', 1)
+ name = parts[0].strip()
+ url = parts[1].strip()
+ if not url or not name:
+ continue
+ try:
+ video_id = YouTubeLiveLite.extract_video_id(url)
+ except:
+ # 无法提取ID,生成唯一ID
+ video_id = f"unknown_{abs(hash(url))}"
+ # 保证id唯一
+ base_id = video_id
+ if base_id in seen:
+ idx = 1
+ while f"{base_id}_{idx}" in seen:
+ idx += 1
+ video_id = f"{base_id}_{idx}"
+ seen.add(video_id)
+ channels.append({
+ 'id': video_id,
+ 'name': name,
+ 'url': url,
+ 'group': current_group
+ })
+ return channels, current_group
+
+ def _normalize_proxy_url(self, url):
+ if not url:
+ return ''
+ url = url.strip()
+ if not re.match(r'^[a-zA-Z]+://', url):
+ url = 'http://' + url
+ return url
+
+ def _auto_detect_proxy(self):
+ """内置代理列表探测"""
+ proxy_list = [
+ "http://127.0.0.1:2080",
+ "http://127.0.0.1:7890",
+ "http://127.0.0.1:10809",
+ "http://127.0.0.1:20172",
+ "http://127.0.0.1:10172",
+ "http://127.0.0.1:7891",
+ "http://127.0.0.1:10808",
+ "http://127.0.0.1:1087",
+ "http://127.0.0.1:3128",
+ "http://127.0.0.1:1080",
+ "http://127.0.0.1:8080",
+ "http://127.0.0.1:9090"
+ ]
+ for p in proxy_list:
+ try:
+ test_proxies = {'http': p, 'https': p}
+ r = requests.get('https://www.youtube.com', proxies=test_proxies, timeout=2)
+ if r.status_code < 400:
+ self.session.proxies = test_proxies
+ self.proxy_str = p.replace('http://', '').replace('https://', '')
+ self._proxy_configured = True
+ debug_log('内置代理探测成功', {'proxy': p})
+ return
+ except Exception:
+ continue
+ self.session.proxies = {}
+ self.proxy_str = ''
+ self._proxy_configured = False
+ debug_log('所有内置代理不可用,回退到系统/全局代理')
+
+ def destroy(self):
+ if self.session:
+ self.session.close()
+ debug_log("Spider destroyed")
+
+ def liveContent(self, url):
+ lines = ['#EXTM3U']
+ for ch in self.channels:
+ proxy_url = f"http://127.0.0.1:9978/proxy?do=py&type=youtube_live&channel={ch['id']}"
+ # 安全处理显示名称中的特殊字符
+ name = ch["name"].replace('"', '\\"').replace(',', '\\,')
+ group_attr = f' group-title="{ch.get("group", "油管直播")}"' if ch.get("group") else ''
+ lines.append(f'#EXTINF:-1 tvg-id="{ch["id"]}" tvg-name="{name}"{group_attr},{name}')
+ lines.append(proxy_url)
+ return '\n'.join(lines)
+
+ def localProxy(self, params):
+ t = params.get('type')
+ if t == 'youtube_live':
+ return self._handle_live(params)
+ elif t == 'ts':
+ return self._handle_ts(params)
+ return [404, "text/plain", "未知请求"]
+
+ def _handle_live(self, params):
+ channel_id = params.get('channel')
+ if not channel_id:
+ return self._error_response("缺少频道ID")
+
+ now = time.time()
+
+ if channel_id in self.fail_cache and self.fail_cache[channel_id] > now:
+ debug_log("Skip failed channel (cache)", {"channel": channel_id})
+ return self._error_response("该频道暂时无法获取直播流")
+
+ cached_m3u8 = self.m3u8_cache.get(channel_id)
+ if cached_m3u8 and cached_m3u8.get('expires', 0) > now:
+ debug_log("M3U8 cache hit", {"channel": channel_id})
+ return [200, "application/vnd.apple.mpegurl", cached_m3u8['content']]
+
+ video_info = self.video_cache.get(channel_id)
+ if not video_info or video_info.get('expires', 0) <= now:
+ debug_log("Refreshing video info", {"channel": channel_id})
+ info = self._get_live_video_info(channel_id)
+ if not info:
+ self.fail_cache[channel_id] = now + self.fail_ttl
+ return self._error_response("无法获取直播视频")
+ self.video_cache[channel_id] = {
+ 'video_id': info['video_id'],
+ 'hls_url': info['hls_url'],
+ 'expires': now + self.video_ttl
+ }
+ self.fail_cache.pop(channel_id, None)
+ video_info = self.video_cache[channel_id]
+
+ m3u8_content = self._fetch_and_rewrite_m3u8(video_info['hls_url'], channel_id)
+ if not m3u8_content:
+ self.fail_cache[channel_id] = now + self.fail_ttl
+ return self._error_response("获取 M3U8 失败")
+
+ self.m3u8_cache[channel_id] = {
+ 'content': m3u8_content,
+ 'expires': now + self.m3u8_ttl
+ }
+ return [200, "application/vnd.apple.mpegurl", m3u8_content]
+
+ def _handle_ts(self, params):
+ b64_url = params.get('url', '')
+ if not b64_url:
+ return self._error_response("缺少 TS URL")
+ try:
+ ts_url = self._b64_decode(b64_url)
+ except:
+ return self._error_response("TS URL 解码失败")
+
+ try:
+ # 强制使用已配置的代理(如果有)
+ resp = self.session.get(ts_url, headers={
+ 'User-Agent': 'com.google.android.youtube/21.02.35 (Linux; U; Android 11) gzip',
+ 'Accept': '*/*',
+ 'Referer': 'https://www.youtube.com/',
+ }, timeout=30)
+ if resp.status_code != 200:
+ return self._error_response(f"TS 请求失败 {resp.status_code}")
+ return [200, "video/MP2T", resp.content, {
+ 'Content-Type': 'video/MP2T',
+ 'Content-Length': str(len(resp.content)),
+ 'Cache-Control': 'no-cache'
+ }]
+ except Exception as e:
+ debug_log("TS proxy error", {"url": ts_url, "error": repr(e)})
+ return self._error_response(f"TS 代理异常: {str(e)}")
+
+ def _get_live_video_info(self, channel_id):
+ ch = next((c for c in self.channels if c['id'] == channel_id), None)
+ if not ch:
+ return None
+
+ url = ch['url']
+
+ if 'watch?v=' in url or 'youtu.be/' in url:
+ try:
+ video_id = YouTubeLiveLite.extract_video_id(url)
+ except Exception as e:
+ debug_log("提取视频ID失败", {"url": url, "error": repr(e)})
+ return None
+ try:
+ data = self.yt.extract_live(video_id)
+ if data.get('is_live') and data.get('hls_url'):
+ debug_log("直接视频链接 - 获取直播成功", {"video_id": video_id})
+ return {'video_id': video_id, 'hls_url': data['hls_url']}
+ else:
+ debug_log("直接视频链接 - 非直播或无HLS", {"video_id": video_id, "is_live": data.get('is_live')})
+ return None
+ except Exception as e:
+ debug_log("直接视频链接 - extract_live失败", {"video_id": video_id, "error": repr(e)})
+ return None
+
+ try:
+ resp = self.session.get(url, timeout=30)
+ resp.raise_for_status()
+ html_text = resp.text
+ except Exception as e:
+ debug_log("获取频道页失败", {"url": url, "error": repr(e)})
+ return None
+
+ video_ids = re.findall(r'watch\?v=([a-zA-Z0-9_-]{11})', html_text)
+ if not video_ids:
+ debug_log("频道页未找到视频ID", {"url": url})
+ return None
+
+ seen = set()
+ for vid in video_ids:
+ if vid in seen:
+ continue
+ seen.add(vid)
+ try:
+ data = self.yt.extract_live(vid)
+ if data.get('is_live') and data.get('hls_url'):
+ debug_log("频道页找到直播视频", {"video_id": vid, "hls_url": data['hls_url'][:80]})
+ return {'video_id': vid, 'hls_url': data['hls_url']}
+ except Exception as e:
+ debug_log("频道页 - extract_live失败", {"video_id": vid, "error": repr(e)})
+ continue
+
+ debug_log("频道页未找到直播视频", {"url": url})
+ return None
+
+ def _fetch_and_rewrite_m3u8(self, hls_url, channel_id):
+ try:
+ # 强制使用已配置的代理(session 已包含代理设置)
+ resp = self.session.get(hls_url, headers={
+ 'User-Agent': 'com.google.android.youtube/21.02.35 (Linux; U; Android 11) gzip',
+ 'Referer': 'https://www.youtube.com/',
+ }, timeout=30)
+ resp.raise_for_status()
+ text = resp.text
+ except Exception as e:
+ debug_log("Failed to fetch master m3u8", {"url": hls_url, "error": repr(e)})
+ return None
+
+ if '#EXT-X-STREAM-INF' in text:
+ variant_url = self._pick_best_variant(hls_url, text)
+ if not variant_url:
+ debug_log("No variant found", {"master": hls_url})
+ return None
+ try:
+ resp = self.session.get(variant_url, headers={
+ 'User-Agent': 'com.google.android.youtube/21.02.35 (Linux; U; Android 11) gzip',
+ 'Referer': 'https://www.youtube.com/',
+ }, timeout=30)
+ resp.raise_for_status()
+ text = resp.text
+ except Exception as e:
+ debug_log("Failed to fetch variant m3u8", {"url": variant_url, "error": repr(e)})
+ return None
+
+ rewritten = []
+ for line in text.splitlines():
+ if line.startswith('#'):
+ rewritten.append(line)
+ else:
+ ts_url = urljoin(hls_url, line.strip())
+ encoded = self._b64_encode(ts_url)
+ proxy_ts = f"http://127.0.0.1:9978/proxy?do=py&type=ts&url={encoded}&channel={channel_id}"
+ rewritten.append(proxy_ts)
+ return '\n'.join(rewritten) + '\n'
+
+ def _pick_best_variant(self, base_url, text):
+ lines = text.splitlines()
+ best_score = -1
+ best_url = ''
+ for i, line in enumerate(lines):
+ if not line.startswith('#EXT-X-STREAM-INF'):
+ continue
+ bandwidth = re.search(r'BANDWIDTH=(\d+)', line)
+ resolution = re.search(r'RESOLUTION=(\d+)x(\d+)', line)
+ score = 0
+ if bandwidth:
+ score += int(bandwidth.group(1))
+ if resolution:
+ score += int(resolution.group(1)) * int(resolution.group(2))
+ for j in range(i + 1, len(lines)):
+ if not lines[j].strip() or lines[j].startswith('#'):
+ continue
+ if score > best_score:
+ best_score = score
+ best_url = urljoin(base_url, lines[j].strip())
+ break
+ return best_url
+
+ def _b64_encode(self, s):
+ return base64.urlsafe_b64encode(s.encode()).decode().rstrip('=')
+
+ def _b64_decode(self, s):
+ padding = 4 - (len(s) % 4)
+ if padding != 4:
+ s += '=' * padding
+ return base64.urlsafe_b64decode(s).decode()
+
+ def _error_response(self, msg):
+ error_m3u8 = f"""#EXTM3U
+#EXT-X-VERSION:3
+#EXT-X-MEDIA-SEQUENCE:0
+#EXT-X-TARGETDURATION:10
+#EXTINF:10.0,
+error.ts
+#EXT-X-ENDLIST
+# {msg}
+"""
+ return [500, "application/vnd.apple.mpegurl", error_m3u8]
\ No newline at end of file
diff --git a/yjl/ZB/tv.txt b/yjl/ZB/tv.txt
index f02f59b0..9157d3dc 100644
--- a/yjl/ZB/tv.txt
+++ b/yjl/ZB/tv.txt
@@ -205,20 +205,15 @@ NOW新闻,http://bxtv.3a.ink/api.php?id=now
🇨🇳|快抖舞曲,#genre#
💃快手热舞,https://v.nrzj.vip/video.php
💃快手热舞,https://xjj.349457.xyz/video.php
-💃快手热舞,https://v.nrzj.vip/video.php
💃快手热舞,http://v.nrzj.vip/video.php
💃快手热舞,http://wwzpr.716888.xyz//fenlei/zj/heji1/heji1.php
💃快手热舞,http://qej6c.716888.xyz/fenlei/zj/heji1/heji1.php?
💃快手热舞,http://xjj2.716888.xyz/fenlei/tkxjj/tk.php
-💃快手热舞,https://mm.diskgirl.com/get/get1.php
-💃快手热舞,https://diskgirl.com/get/get2.php
💃快手热舞,http://api.yujn.cn/api/sbkl.php
-💃快手热舞,http://api.yujn.cn/api/hanfu.php
//💃快手热舞,https://jiejie.uk/xjj/get/video.php
💃快手热舞,https://v.nrzj.vip/tiktok/video.php
💃快手热舞,https://xn--vusr00g.v.nxog.top/m/tv/xjj.php?id=2
💃快手热舞,http://xjj2.716888.xyz/fenlei/zj/gengxin/gengxin.php
-💃快手热舞,https://jiejie.uk/xjj/tiktok/video2.php
💃快手热舞,http://api.yujn.cn/api/juhexjj.php?type=video
💃快手热舞,https://api.suyanw.cn/api/jksp.php
💃快手热舞,https://api.suyanw.cn/api/xjj/api.php
@@ -236,7 +231,6 @@ NOW新闻,http://bxtv.3a.ink/api.php?id=now
💃快手热舞,https://xn--vusr00g.v.nxog.top/m/tv/xjj.php?id=1
💃快手热舞,https://xn--vusr00g.v.nxog.top/m/tv/xjj.php?id=2
💃快手热舞,https://jiejie.uk/xjj/tiktok/video.php
-💃快手热舞,https://diskgirl.com/get/get1.php
💃快手热歌,http://epimw.716888.xyz/fenlei/djxjj/dj1.php
💃快手热歌,http://xjj1.716888.xyz/fenlei/djxjj/dj1.php
💃快手热歌,https://188sp.711888.xyz/188/video.php
diff --git a/yjl/ysm.json b/yjl/ysm.json
index e06061a5..4b90c6e3 100644
--- a/yjl/ysm.json
+++ b/yjl/ysm.json
@@ -9,7 +9,7 @@
//"spider": "http://pan.0076sf.cn/f/dPbHG/07101403.png;md5;4e485fbd3b8a48b61e0a90774dd58b9d",//王二小弹幕
//"spider": "https://pan.qingyuji.cn/f/Pm3yi4/1028logo.jpg",//小米弹幕
//"spider": "https://www.lequxiang.com.cn/down.php/eef74b7957e73ed47ee624bb0c67c9b2.txt",//潇洒
- "spider": "https://tc-new.z.wiki/autoupload/iYHTWVx6T8RrCmqdGD6MOdiO_OyvX7mIgxFBfDMDErs/20260710/zwC7/0X0/fish07102154.png;md5;01aeca771c222e9a65fae459a9bf0745",
+ "spider": "https://6800.kstore.vip/fish07170158.jar",
//"spider": "https://storage.7x24cc.com/storage-server/presigned/ss1/a6-online-fileupload/newMediaFile/5EE1360_773_okpng_20250919184254519newMediaFile.png;md5;4675eeed7adff0f35976ab076da9f1de",//OK弹幕
//"spider": "https://ghfast.top/https://raw.githubusercontent.com/xyq254245/xyqonlinerule/refs/heads/main/custom_spider.jar",
"sites": [{"name":"🐶嗷呜┃豆瓣推荐","key":"Douban","type":3,"api":"csp_DoubanAmns","indexs":1,"searchable":0,"quickSearch":0,"changeable":0,