# 更新日志 本文件记录 iPTV 各版本的更新内容,最新版本在最上方。自 v4.4.0 起每个版本也同步发布在 [GitHub Releases](https://github.com/akiralereal/iptv/releases)。 ### v4.53.1 (2026-10-30) 本次为「**百视通改为默认开启、按地区跳过缺失频道**」版本:「百视通」模块改为默认开启,升级后订阅里会多出「百视通」分组;百视通按地区下发频道,有的地区拿到的官方目录里没有多彩文体4K 等几个台,以前缺一个台整个模块就抓取失败、七个台都出不来,现在只跳过缺的那几路,其余照常播放。升级镜像后重启即生效,现有配置与订阅无需改动;没动过百视通开关的,升级后会自动打开,不需要的到「🌐 源管理 → 百视通」关掉。 - **「百视通」改为默认开启**:v4.53.0 新增时默认关闭,不进源管理就不知道有这个模块,现改为默认开启。升级后订阅里多出独立的「百视通」分组,默认七路:多彩文体4K、都市剧场、动漫秀场、乐游、法治天地、东方财经、生活时尚,都是现有来源没有的专业台。在 v4.53.0 里手动开关过的保持原样。本机只转发清单,画面由播放器直连官方 CDN;部署在海外的可能连不上百视通的接口,用不到的到「🌐 源管理 → 百视通」关掉。 - **百视通按地区跳过缺失的频道**:百视通按服务器所在地区和运营商下发不同的频道目录,有的地区(实测有上海移动的出口)拿到的目录里没有多彩文体4K、动漫秀场、乐游、法治天地,这几路在那边也确实播不了。以前缺一个台,整个模块就报「官方目录未唯一列出频道 219」,七个台一个都不出;现在只跳过缺的几路,其余照常输出,模块详情里用黄字写明跳过了哪些,不进「需要处理的提醒」;选中的频道全都不在目录里才算抓取失败。这类地区的播放地址在另一个官方节点,现在也一并放行,都市剧场、东方财经、生活时尚实测能正常播放。 ### v4.53.0 (2026-10-29) 本次为「**新增百视通模块、企业微信应用推送**」版本:新增「百视通」模块(默认关闭),打开后带来多彩文体4K、都市剧场、动漫秀场、乐游、法治天地、东方财经、生活时尚七路现有来源都没有的专业台;消息推送新增「企业微信应用」渠道,提醒可以直接发给企业微信成员,不用再拉群建机器人(issue #207)。升级镜像后重启即生效,现有配置与订阅无需改动;百视通默认关闭,升级后订阅不会多出频道,需要的到「🌐 源管理 → 百视通」打开。 - **新增「百视通」模块,默认关闭**:在「🌐 源管理 → 百视通」打开后,订阅里多出独立的「百视通」分组,默认只放七路现有来源都没有的专业台:多彩文体4K、都市剧场、动漫秀场、乐游、法治天地、东方财经、生活时尚。模块一共支持 64 路,央视、卫视等其他频道已有来源,想加一路作备用的,在模块的「加入订阅的频道」里勾选。台名和台标随百视通官方目录同步,台标已内置;五路有官方今明两天的节目单,乐游、法治天地官方是空表。播放时本机只转发清单、随时换掉过期的播放地址,画面由播放器直连官方 CDN,所以服务器和播放设备都要能访问百视通;也可以用全代理订阅,画面经部署的机器转发、占服务器带宽。多彩文体4K 的「4K」是官方台名,目前实际画面是 1080p;地区、运营商和平台策略都可能影响能不能播。 - **消息推送新增「企业微信应用」渠道**([#207](https://github.com/akiralereal/iptv/issues/207)):以前企业微信只能推到群机器人,现在也可以用企业的自建应用,把提醒直接发给成员。在「设置 → 消息推送」添加渠道时选「企业微信应用」,填企业 ID、AgentId 和 Secret 三项;接收人留空就发给应用可见范围内的所有人,也可以填成员账号,多个用 `|` 隔开。企业微信要求把服务器的公网 IP 加进应用的「企业可信IP」,IP 不固定、加不进去的,可以填自己的反代地址。Secret、企业 ID、AgentId 填错,或者 IP 不在可信列表里,渠道卡片上会直接写明原因。这一路只有「详细」和「简洁」两种样式:应用的 Markdown 消息在微信里显示不出来,所以不提供「卡片」。一次补发多条提醒时,正文超过企业微信 2048 字节的上限会自动截断,末尾补「…」。 ### v4.52.0 (2026-10-28) 本次为「**新疆恢复、浙江与青海新增地方台**」版本:新疆官网又改了签名,新疆卫视等 7 个频道恢复播放;新增东阳、衢江、江山三路浙江地方台和格尔木、海东两路青海地方台;「高校与场馆」新增智慧高教课堂、1905、微博、芒果四个来源(默认关闭),机构的长回放、长直播不再中途失效;后台去掉环境变量黄框,换上新的黑白 Logo。升级镜像后重启即生效,现有配置与订阅无需改动;「浙江地方台」是新模块、默认开启,升级后「浙江」分组会多出这三个频道,不需要的到「🌐 源管理」关掉。 - **修复新疆广电各频道取流失败**([#205](https://github.com/akiralereal/iptv/pull/205)):新疆官网又改了频道列表的签名,guid 换了生成规则,每次请求还要附带一段官网要求的计算校验;按旧方式签出的请求一律返回 403「验签失败」,新疆卫视等 7 个频道都播不了。现在按官网新格式签名,实测 7 个频道已能正常取流。修复由 [@vitter](https://github.com/vitter) 提供。 - **新增浙江地方台三路**:东阳新闻综合(720p)、衢江综合和江山电视一套(1080p),由新模块「浙江地方台」提供、默认开启,归入「浙江」分组。播放时先向官方播放器核对频道和播放状态再取签名地址,清单和画面经部署的机器转发,会占用服务器带宽;官方标为暂不可播时,频道会提示当前没有可用直播信号。台标已内置,官方暂无可用节目单。 - **新增格尔木新闻综合、海东综合频道**:两路官方 1080p 直播归入「青海」分组,由「青海」模块每天更新官方地址,播放器直连官方 CDN。精选频道里也加了同名条目,没升级的部署刷新订阅就能看到;开着青海模块时自动去重,只留一份。台标已内置,官方没有可用的节目单。 - **「高校与场馆」新增四个来源,现为 25 个**:国家智慧教育·高教课堂(教创赛三个学科六讲课堂实录)、1905电影活动(六场)、微博官方活动(四场)、芒果活动(三场),共 19 条官方完整回放,含《绽放》《金吾不禁》片场探班、微博电影之夜和颁奖活动。和其他机构一样各自开关、**默认关闭**,在「🌐 源管理 → 内置抓取模块 → 高校与场馆」打开即可。这四个来源只收逐条播放验收过的场次,不像其他机构那样跟着官网目录自动更新;每次播放前重新检查官方公开权限,登录、付费、试看和加密内容不收。某一轮官网临时打不开、所有场次都没通过检查时,保留上一轮的频道,不会从订阅里消失。 - **机构长回放和长直播不再中途失效**:几个小时的活动录像有几千个分片,以前本机最多登记 5000 条、6 小时后过期,分片特别多的录像开头会被提前清掉、拖回去播不了,一次看超过 6 小时也会报「播放引用已过期」;现在回放的引用保留 24 小时、上限放宽。直播的子清单只要播放器还在拉就自动续期,长时间的直播不会到点断开。 - **系统配置页去掉环境变量黄框**:用 docker-compose 部署时,「设置 → 系统配置」顶上一直挂着「以下配置由 docker-compose 环境变量设置:端口」的黄框,现已去掉。只有在 compose 里设了 `mhost` 或 `mpass` 时,才在公网地址或访问密码下面提示一行:清空保存后仍按环境变量生效。 - **浏览器图标换成新版黑白 Logo**:后台和网页播放器的标签页图标、收藏夹与主屏幕图标,以及后台左上角的 Logo,换成新的黑白电视图标。浏览器还显示旧图标的,强制刷新一次即可。 ### v4.51.2 (2026-10-27) 本次为「**高校与场馆修复、江门综合暂时下架**」版本:「高校与场馆」移除回放大多播不了的佳士得,现为 21 家;机构的目录、取址和画面转发改为走部署配置的代理;Ceau 这类先分段读取清单的播放器打开机构的 HLS 回放,不再被当成直播、没有进度条;江门综合官方直播持续 502,暂时从「广东」分组下架。升级镜像后重启即生效,现有配置与订阅无需改动,佳士得和江门的旧配置、缓存会自动清掉。跳过 v4.51.0、v4.51.1 直接升级的,那两版的内容同样生效,一并列在下面。 - **移除佳士得**:部署端反馈佳士得的三条视频只有一条能播,移除这家机构,「高校与场馆」现为 21 家,同是拍卖行的富艺斯照常保留。打开过佳士得的,升级后它的分组从订阅里消失,旧开关和抓取缓存自动清掉。 - **「高校与场馆」的请求改为走部署配置的代理**:机构的目录、播放取址和画面转发以前不读代理设置,部署时配了代理的,易北爱乐等境外来源照样连不上、只报 `fetch failed`。现在按 `HTTPS_PROXY`/`https_proxy`(macOS 上还有系统 HTTPS 代理)访问,没配代理的照旧直连;Docker 里的代理地址要能从容器内访问,容器里的 `127.0.0.1` 指的是容器自己。易北爱乐取不到时,模块详情里的错误会写明卡在目录、演出详情、NDR 播放器还是媒体哪一步,以及域名和连接错误码(如 `ENOTFOUND` 是域名解析失败、`ETIMEDOUT` 是连接超时),不显示媒体签名和代理账号密码。默认开关、权限和地区限制都没变。 - **机构的 HLS 回放在 Ceau 里不再显示成直播**:Ceau 打开回放时先只请求清单开头 64KB,本机把这个分段请求原样转给官网,拿回半截清单(缺了表示录像结束的标记)又当完整清单返回,播放器就把录像当成直播、不显示进度条,上海图书馆的三条回放都是这样。现在本机先向官网取完整清单、改写好,再按播放器要的那一段返回,播放器能读到完整清单、按录像处理。MP4 回放不受影响。 - **江门综合暂时下架**:江门广电官方直播 CDN 持续返回 502,江门综合播不了,暂时从「广东」分组移除,它的节目单一并停用;升级后旧配置和频道缓存自动清掉。解析模块和台标保留,官方恢复后再重新接入。 - **「高校与场馆」默认关闭**(v4.51.1):这类内容是活动直播和点播录像,不是电视频道,只有一部分人会看,画面又全经部署的机器转发、占服务器带宽,所以不默认推进每个人的订阅。需要的到「🌐 源管理 → 内置抓取模块 → 高校与场馆」打开想看的机构,十来秒后播放器重新拉一次订阅,就会出现以机构命名的分组;在 v4.51.0 里手动打开过的保持打开。机构列表和内容见 README「[高校与场馆](README.md#-高校与场馆)」一节。 - **新增「高校与场馆」分类,各机构单独开关**(v4.51.0):排在「海外」之后,现收录 21 家:西安交大、吉林大学、复旦、北师大、华中科大、中央音乐学院,国家博物馆、上海图书馆、中国数字科技馆,国家公共文化云和上海、浙江、广东、湖南四家群艺馆/文化馆,广州大剧院,中关村论坛、上海论坛,上海电视节白玉兰奖、上海国际电影节金爵奖颁奖典礼,以及富艺斯、易北爱乐音乐厅。内容只取各家官网(或官网嵌入的官方播放器)公开的部分:官方正在直播的活动标 `[直播]`,录像标 `[回放]`,分组用机构名;预告、要登录/付费/试看、DRM 加密和宗教内容不收。每家只取官方目录里当前的几条(多数 3 条),随官网更新;发版时各家都没有在播活动,所以全是 `[回放]`。`[回放]` 是可以直接点播、拖动进度的官方录像,不是电视频道那种按时间回看;活动和录像不是电视频道,所以没有台标和节目单,也不套用其他台的。 播放时由部署机器向官网取当前地址并转发画面,会占用服务器带宽,能不能看取决于部署机器访问这些官网的网络。富艺斯、易北爱乐还要能访问境外网站;富艺斯目前只有预展和拍后回顾短片,没有整场拍卖。湖南省文化馆部分回放和上海论坛的演讲录像是 HEVC 编码,播放器要支持 HEVC。各家来源和限制见 [机构模块说明](extractors/institution/README.md)。 - **修复安徽广电官方详情缺字段时取流失败**(v4.51.0):安徽视讯官方频道详情可能不带「发布状态」字段,以前缺这个字段就当成未发布、拒绝取流。现在缺字段时照常取流,明确标为未发布或不是免费的频道仍然拒绝。 - **「来源于网络」订阅补充一批频道**(v4.51.0,[#202](https://github.com/akiralereal/iptv/issues/202)):`from-the-web/from-the-web.m3u` 新增翡翠台4K、华丽翡翠台、Astro AEC、华丽台、千禧经典台、天映经典、爱奇艺 7 个频道,明珠台、天映频道、Astro AOD、Astro欢喜台、TVB星河各多一条同名备用线路。这个文件是直接从仓库订阅的,已添加的用户刷新订阅即生效,不用等升级镜像。 ### v4.51.1 (2026-10-27) 本次为「**高校与场馆改为默认关闭**」版本:v4.51.0 新增的「高校与场馆」22 家机构改为默认关闭,需要的到「🌐 源管理 → 高校与场馆」按机构打开;README 新增「高校与场馆」一节,列出各家机构和能看到的内容。升级镜像后重启即生效,现有配置与订阅无需改动:没动过这些开关的,机构分组会从订阅里消失;在 v4.51.0 里手动打开过的保持打开。跳过 v4.51.0 直接升级的,那一版的内容同样生效,一并列在下面。 - **「高校与场馆」改为默认关闭**:这类内容是活动直播和点播录像,不是电视频道,只有一部分人会看,画面又全经部署的机器转发、占服务器带宽,所以不再默认推进每个人的订阅。需要的到「🌐 源管理 → 内置抓取模块 → 高校与场馆」打开想看的机构,十来秒后播放器重新拉一次订阅,就会出现以机构命名的分组。机构列表和内容见 README「[高校与场馆](README.md#-高校与场馆)」一节。 - **新增「高校与场馆」分类,22 家机构各自开关**(v4.51.0):排在「海外」之后,收录西安交大、吉林大学、复旦、北师大、华中科大、中央音乐学院,国家博物馆、上海图书馆、中国数字科技馆,国家公共文化云和上海、浙江、广东、湖南四家群艺馆/文化馆,广州大剧院,中关村论坛、上海论坛,上海电视节白玉兰奖、上海国际电影节金爵奖颁奖典礼,以及佳士得、富艺斯、易北爱乐音乐厅。内容只取各家官网(或官网嵌入的官方播放器)公开的部分:官方正在直播的活动标 `[直播]`,录像标 `[回放]`,分组用机构名;预告、要登录/付费/试看、DRM 加密和宗教内容不收。每家只取官方目录里当前的几条(多数 3 条,发版时实测 22 家共 68 条,暂时没有在播活动,所以全是 `[回放]`),随官网更新。`[回放]` 是可以直接点播、拖动进度的官方录像,不是电视频道那种按时间回看;活动和录像不是电视频道,所以没有台标和节目单,也不套用其他台的。 播放时由部署机器向官网取当前地址并转发画面,会占用服务器带宽,能不能看取决于部署机器访问这些官网的网络。佳士得、富艺斯、易北爱乐还要能访问境外网站;两家拍卖行目前只有预展和拍后回顾短片,没有整场拍卖。湖南省文化馆部分回放和上海论坛的演讲录像是 HEVC 编码,播放器要支持 HEVC。各家来源和限制见 [机构模块说明](extractors/institution/README.md)。 - **修复安徽广电官方详情缺字段时取流失败**(v4.51.0):安徽视讯官方频道详情可能不带「发布状态」字段,以前缺这个字段就当成未发布、拒绝取流。现在缺字段时照常取流,明确标为未发布或不是免费的频道仍然拒绝。 - **「来源于网络」订阅补充一批频道**(v4.51.0,[#202](https://github.com/akiralereal/iptv/issues/202)):`from-the-web/from-the-web.m3u` 新增翡翠台4K、华丽翡翠台、Astro AEC、华丽台、千禧经典台、天映经典、爱奇艺 7 个频道,明珠台、天映频道、Astro AOD、Astro欢喜台、TVB星河各多一条同名备用线路。这个文件是直接从仓库订阅的,已添加的用户刷新订阅即生效,不用等升级镜像。 ### v4.51.0 (2026-10-27) 本次为「**新增高校与场馆来源**」版本:源管理新增「高校与场馆」分类,高校、博物馆、文化馆、剧院、论坛、颁奖礼和拍卖机构共 22 家,每家一个模块,官网公开的活动直播和录像回放直接进原有订阅,节目名前标 `[直播]` 或 `[回放]`;另修复安徽广电官方详情不带发布状态时频道取流失败。升级镜像后重启即生效,现有配置与订阅无需改动;其中国内 19 家默认开启,升级后订阅里会多出对应的机构分组,不需要的到「🌐 源管理 → 高校与场馆」关掉。 - **新增「高校与场馆」分类,22 家机构各自开关**:排在「海外」之后,收录西安交大、吉林大学、复旦、北师大、华中科大、中央音乐学院,国家博物馆、上海图书馆、中国数字科技馆,国家公共文化云和上海、浙江、广东、湖南四家群艺馆/文化馆,广州大剧院,中关村论坛、上海论坛,上海电视节白玉兰奖、上海国际电影节金爵奖颁奖典礼,以及佳士得、富艺斯、易北爱乐音乐厅。内容只取各家官网(或官网嵌入的官方播放器)公开的部分:官方正在直播的活动标 `[直播]`,录像标 `[回放]`,分组用机构名;预告、要登录/付费/试看、DRM 加密和宗教内容不收。每家只取官方目录里当前的几条(多数 3 条,本次实测 22 家共 68 条,暂时没有在播活动,所以全是 `[回放]`),随官网更新。`[回放]` 是可以直接点播、拖动进度的官方录像,不是电视频道那种按时间回看;活动和录像不是电视频道,所以没有台标和节目单,也不套用其他台的。 播放时由部署机器向官网取当前地址并转发画面,会占用服务器带宽,能不能看取决于部署机器访问这些官网的网络。佳士得、富艺斯、易北爱乐需要能访问境外网站,默认关闭,要看就手动打开;两家拍卖行目前只有预展和拍后回顾短片,没有整场拍卖。湖南省文化馆部分回放和上海论坛的演讲录像是 HEVC 编码,播放器要支持 HEVC。各家来源和限制见 [机构模块说明](extractors/institution/README.md)。 - **修复安徽广电官方详情缺字段时取流失败**:安徽视讯官方频道详情可能不带「发布状态」字段,以前缺这个字段就当成未发布、拒绝取流。现在缺字段时照常取流,明确标为未发布或不是免费的频道仍然拒绝。 - **「来源于网络」订阅补充一批频道**([#202](https://github.com/akiralereal/iptv/issues/202)):`from-the-web/from-the-web.m3u` 新增翡翠台4K、华丽翡翠台、Astro AEC、华丽台、千禧经典台、天映经典、爱奇艺 7 个频道,明珠台、天映频道、Astro AOD、Astro欢喜台、TVB星河各多一条同名备用线路。这个文件是直接从仓库订阅的,已添加的用户刷新订阅即生效,不用等升级镜像。 ### v4.50.0 (2026-10-26) 本次为「**自定义源回看修复、订阅兼容飞牛与 IINA**」版本:自定义订阅里带英文逗号的回看模板(运营商 IPTV 常见的 `rrsip=A,rrsip=B`)不再被丢掉,导入后能正常回放(issue #200);订阅和节目单地址允许网页端跨域读取,与 GitHub raw 一致(issue #201,飞牛影视 URL 导入);后台「用户管理」生成的一人一源链接改为 `.m3u` 结尾,IINA 能直接打开;订阅拉取失败的提示不再让人去配代理。升级镜像后重启即生效,现有配置与订阅无需改动;只有频道名带英文逗号的自定义源频道,之前做过的隐藏、改名要重设(见下文)。 - **自定义订阅的回看模板带逗号时不再被丢**([#200](https://github.com/akiralereal/iptv/issues/200)):运营商 IPTV 的回放地址常把多台服务器写成 `rrsip=A,rrsip=B`,以前 `catchup-source` 里只要有英文逗号就整条丢弃,频道只剩 `catchup="default"` 和回看天数、没有模板,回放不了。现在逗号放行,模板原样写回订阅;含引号、空白或以 `=` 结尾的模板仍会丢弃。默认每次重启都会重新解析所有自定义源(本地文件 / 粘贴导入的也一样),升级后自动生效,原文件不用改;关掉了「重启时更新」的源,到「源管理」里点一次「导入并保存」。播放器那边重新拉一次订阅即可。 - **频道名带英文逗号的自定义源频道名字恢复正常**:自定义源里频道名带英文逗号(如 `CCTV-1,综合`)的频道,以前在后台「我的频道」、以及做过频道整理的订阅里,名字会变成一串属性残渣(如 `综合" tvg-name="CCTV-1,综合" …`),现在显示原名。频道名变了,频道身份也跟着变,这类频道以前做过的隐藏、改名、换组、排序要重新设一次。 - **订阅和节目单允许网页端跨域读取**([#201](https://github.com/akiralereal/iptv/issues/201)):订阅地址(`/interface.m3u`、`/m3u`、`/txt`、`/interface.txt` 等,含一人一源的 `/u/<令牌>/…`)和节目单 `/playback.xml` 的响应带上 `Access-Control-Allow-Origin: *`,与飞牛能直接导入的 GitHub raw 一致;以前在网页里取订阅的客户端会被浏览器的跨域限制拦下、读不到内容。这是针对飞牛影视用 URL 导入本机订阅报「无法连接到直播源服务器」(浏览器能打开、粘贴能导入)的修改,升级后在飞牛里删掉原来的直播源,重新用 URL 导入;仍不行可先用上传文件或粘贴内容导入。访问控制不变:设了访问密码时,不带密码的请求照旧被拒,也不带这个头。 - **一人一源链接改为 `.m3u` 结尾,IINA 能直接打开**:「设置 → 用户管理」生成的链接从 `/u/<令牌>/m3u` 改为 `/u/<令牌>/interface.m3u`(兼容版、全代理版跟着带后缀),与顶部订阅栏一致。IINA 只把首行正好是 `#EXTM3U`、地址以 `.m3u` 结尾或类型是 mpegurl 的地址当播放列表,旧链接三条都不满足,打开会报「无法打开文件或流媒体」;它「打开 URL」窗口里的「HTTP 认证」用户名、密码栏是 IINA 自带的,不用填。服务端不变,已发出去的 `/m3u` 链接照常可用,给 IINA 用的把末尾换成 `/interface.m3u` 即可。 - **订阅拉取失败的提示不再让人配代理**:自定义订阅所有线路都拉不到时,以前提示「必要时配置代理」,但订阅拉取本来就不走代理,照做也没用。现在改为提示更换服务器能访问的订阅地址,或在电脑上下载后用「本地文件 / 粘贴」导入。 ### v4.49.2 (2026-10-25) 本次为「**修复安徽广电取流失败**」版本:安徽视讯官方换了直播域名,安徽卫视的流 ID 也改了,按旧地址签出的 7 个频道都播不了,本版改为播放时读取官方当前配置后恢复播放。升级镜像后重启即生效,现有配置与订阅无需改动。 - **修复安徽广电各频道取流失败**:官方把直播迁到了新的 CDN 域名,安徽卫视的流 ID 同时变更,原来写死的地址全部失效。现在每次播放先从「安徽视讯」App 的频道详情读取当前域名和流 ID 再签名,旧地址被拒时自动重新读取,以后官方再换域名也能跟上;频道引用不变,已隐藏、改名、换组的设置不受影响。新域名的 HTTPS 证书与域名不匹配,只在这个域名遇到该错误时改用同域 HTTP,不关闭证书校验。7 个频道实测均已能正常取流播放。 ### v4.49.1 (2026-10-24) 本次为「**修复新疆广电取流失败**」版本:新疆官网换了接口签名格式,新疆卫视等 7 个频道取流都被拒(HTTP 403),本版跟上新格式后恢复播放。升级镜像后重启即生效,现有配置与订阅无需改动。 - **修复新疆广电各频道取流失败**([#198](https://github.com/akiralereal/iptv/pull/198)):官网改了请求签名里 guid 的生成方式,按旧方式签出的请求一律验签失败,频道列表接口返回 403,新疆卫视等 7 个频道都播不了。现在按官网新格式生成,实测已能正常取流。修复由 [@vitter](https://github.com/vitter) 提供。 ### v4.49.0 (2026-10-24) 本次为「**山东区县台、20 省市县台、源管理按地区分面板**」版本:新增「山东市县」模块,山东 16 个地市约 200 路区县台按地市分组;新增「市县台」,广电云平台上 20 个省区市的市县级电视台和各地慢直播,按省单独开关;源管理的免账号模块按地区收进可折叠面板;虎牙直播少断流;修复订阅源偶尔卡住后所有源不再自动刷新。版本号跳过 4.47.0、4.48.0,没有遗漏的版本。升级镜像后重启即生效,现有配置与订阅无需改动;山东市县、市县台两类新模块默认关闭,需要的到「🌐 源管理」对应省面板里打开。 - **源管理的免账号模块按地区收进面板**:七十多个抓取模块里地方台占大半,「免账号模块」里现在把同一地区的省台、地市台、景观、市县台收进一个面板(如「山东 · 5 个模块 · 已开 2」),只有一个模块的地区也一样,以后再加地市模块直接进对应面板;亚洲与国际直播、央视直播中国、iPanda 各自收进「国际」「直播中国」「iPanda」三个专题面板,排在各省前面。收起的面板横排成小块(桌面一行约五个、手机两个),点开的那个占满整行、下面铺开模块卡片;默认收起,展开了哪些记在本机浏览器;面板里有模块抓取失败时标题上挂红点;「已启用 / 已关闭」筛选时有命中的面板自动展开。账号与授权、网络直播、海外几类模块少,不收面板。 - **新增「山东市县」模块:闪电新闻融媒平台上山东 16 个地市的 224 路区县台**([#196](https://github.com/akiralereal/iptv/issues/196)):长清、章丘、东营、潍坊、寿光、曲阜、泰山、威海等区县融媒体中心与部分市台的官方直播,免登录、不转码、不启动浏览器。两百来路区县台并进「山东」会把省台淹掉,所以按地市分成「山东-济南」…「山东-菏泽」16 个分组,排在「山东」后面,模块**默认关闭**:想看的在「源管理」打开,不需要的地市整组隐藏即可。每两小时查一次各台状态,只显示主清单取得到的台(目前 198 路),停推的 26 路暂不出现、恢复推流后下一轮自动回来。播放时跳转到官方当前地址,播放器直连官方 CDN,本机不转发清单和分片;官方地址里的签名参数每次都变,所以播放列表里写的是固定的频道地址,单个频道的隐藏、改名、换组不会因为刷新失效。台标用官方接口给的频道或电视台台标(目前约 160 路有图),节目单取自官方接口(目前只有崂山频道排了当天起的编排,其余台官方排了就自动有),均不提供回看。频道来自 issue 里群友的列表,逐台核对过官方接口和实际画面:台名统一补上区县名,去掉了广播、慢直播、会场直播、测试间,以及德州市台转发的各县同一路流,另补上列表里没有的微山两套与淄博高新。 - **按地市拆开的省内分组排在该省后面**:「山东-济南」这类「省名-地市」分组算作地方台,默认紧跟在「山东」后面;拖拽保存过分组顺序的配置档里,没记录过的这类分组也跟在该省后面,不会掉到列表最后。 - **新增「市县台」:广电云平台上 20 个省区市、126 路市县级电视台,外加 97 路各地慢直播**:按省拆成 20 个模块「市县台·山东」「市县台·湖北」…,各自出现在源管理对应的省面板里,可以按省单独开关;大庆、黄石、柳州、孝感、慈溪、贵阳、阿克苏、义乌、福清、新乡、阜阳、濮阳、襄阳、岳阳等地市和区县融媒体中心的官方直播,电视台按省归入对应分组(山东的淄博新闻综合、菏泽一套二套进「山东-淄博」「山东-菏泽」,排在该组区县台前面);许昌、桐庐、乌镇、宣恩、如皋等地融媒体中心的路口、广场、景区固定机位统一放进新的「慢直播」分组,默认排在各地景观分组那一段。默认关闭(频道量大、多是本地人看),需要的到「🌐 源管理」对应省面板里打开;免登录、不转码、不启动浏览器。每小时查一次各台推流状态,只显示正在推流的(目前电视台约 104 路、慢直播 97 路),停推的暂不出现、恢复推流后下一轮自动回来。平台的播放地址只对「在线」的观看会话有效,所以播放时由本机在官方平台挂一个在线会话(两条 WebSocket,每 25 秒保活一次)再取地址,没人看一分半后自动断开;10 台同时在播实测内存约 20MB、保活流量每秒不到 100 字节。清单经本机中继,分片带自己的签名由播放器直连官方 CDN。13 路带官方台标,28 路带今明两天官方节目单,均不提供回看。频道一部分来自 TG 群友提供的列表,其余是把平台直播间号 1~4100 全扫一遍后逐个截帧挑出来的:去掉了已删除的直播间、活动直播间、各台备线、转播央视的间、测试间和广播电台,改正了乐清两路互换的台名。 - **虎牙直播少断流:播放签名不再每分钟重签**:以前本机每 60 秒刷新房间页时都会给正在播的线路重签一个新签名,实测这种频繁换签名的情况下线路常在两三分钟后被虎牙 CDN 整条拒掉(403),线路少的房间会全部断开、过几分钟才恢复。现在签名在整个播放期间一直复用,只有主播重开、换档时才签新的;签名到了官方给的有效期(约 5 分钟)被拒时,在同一线路用最新的房间信息重签一次接着播,没到期就被拒才换线路并冷却该线路。家宽环境下用真实房间连播 7 分钟,两个房间清单与分片零失败(期间一次到期重签、一次换线都没有断)。虎牙 CDN 偶尔仍会对同一出口整条拒绝,这种情况照旧自动换线兜底。 - **修复订阅源偶尔从此不再自动更新**([#195](https://github.com/akiralereal/iptv/issues/195)):拉订阅的 15 秒超时以前只管到对方回应为止,订阅服务器回应后正文发到一半停住时,这次拉取会一直挂着;而 5 分钟一轮的源刷新要等上一轮结束才开始,于是之后每轮都被跳过(日志反复出现「上一轮源刷新检查尚未结束,跳过本次」),订阅、内置源、抓取模块的自动刷新全部停住,只能重启。现在超时一直管到正文读完,停住的订阅到点按「请求超时」失败、保留上次的频道,其它源照常刷新。 ### v4.46.0 (2026-10-24) 本次为「**四川市州 25 路官方直播、咪咕赛事弹幕、盐城两台**」版本:新增「四川市州」模块,成都以外 18 个市州共 25 路官方电视频道免登录直播;咪咕体育赛事直播带官方聊天室弹幕,Ceau 等支持直播弹幕的播放器可直接显示;江苏新增盐城电视一套、二套;修复上海看看新闻各台取流返回 403。升级镜像后重启即生效,现有配置与订阅无需改动;四川市州、盐城两个新模块默认开启,不需要的到「🌐 源管理」里关掉即可。 - **新增「四川市州」官方直播模块:18 个市州、25 路电视频道**:成都以外的绵阳、泸州、遂宁、内江、达州、巴中、甘孜、阿坝、广元、宜宾、凉山、雅安、乐山、眉山、资阳、德阳、攀枝花、南充共 25 路官方电视频道,默认开启,免登录、不转码、不启动浏览器,归入「四川」分组,与四川广电、成都两个模块并列。播放时从各台官网和官方 App 的公开入口取当前地址,签名到期自动续签并复用合法的 CDN 会话;遂宁、达州、凉山、资阳七路的清单和分片要求官网来路,由本机全代理,其余十八路中继清单、分片直连。25 路台标均已备份进内置台标包;凉山新闻综合、彝语综合和攀枝花新闻综合带今明两天官方节目单,其余 22 路官方暂无可用节目单,均不提供回看。自贡、广安及绵阳其他频道等官网入口不可用或没有公开接口,本次未收录;各台入口、已验证画质和未收录原因见 [四川市州模块说明](extractors/sichuan-cities/README.md)。 - **修复上海看看新闻电视源返回 403**:同步官网当前的请求版本参数,恢复东方卫视、第一财经等频道的直播取流;官网因当前节目版权暂停网络直播的时段仍以台方状态为准。 - **咪咕体育赛事直播带弹幕(需 Ceau 等支持直播弹幕的播放器)**:赛事直播条目在订阅里带上 `danmaku-url`,指向本机的 `/danmaku/migu/`;弹幕来自咪咕官网的赛事聊天室,不用登录,有人在看时每 5 秒拉一次、30 秒没人看就停,同一场比赛多少人看都只打官网一次。聊天室 ID 随赛事抓取一起记在数据目录 `migu-danmaku-rooms.json`,快速模式和重启后仍可用。回放条目、固定电视频道(CCTV5 等,咪咕上没有聊天室)不带。协议是统一弹幕接口的直播扩展:元数据多 `live` / `pollSeconds` / `liveURL`,播放器按服务器墙钟轮询增量,不看播放进度,细节见 [DANMAKU.md](DANMAKU.md);只认点播协议的老客户端拿到合法的空分段,不报错也没有字。APTV、系统播放器等不读这个属性,照常播放。本机对着真实赛事聊天室(乒乓球亚锦赛)验过首包、游标续取与鉴权(无密码前缀 403)。 - **江苏新增盐城两套电视**:独立盐城模块默认开启,免登录,收录盐城电视一套、盐城电视二套,带官方台标和今明两天节目单。每次播放从盐城网官方接口获取当前节目与签名地址,由本机代理清单和分片;暂不支持回看。 ### v4.45.0 (2026-10-22) 本次为「**沈阳频道下线、消息推送只发需要你处理的**」版本:沈阳三路频道的官方入口已不可用,随北斗融媒模块一起移除,大连三路不受影响;消息推送不再发模块抓取失败、官方服务故障这类你处理不了的提醒。版本号跳过 4.44.0,没有遗漏的版本。升级镜像后重启即生效,现有配置与订阅无需改动。 - **沈阳频道下线**:沈阳新闻综合、沈阳经济、沈阳公共的官方分享入口持续返回 WAF 405,与此前停用的辽宁省台一起从北斗融媒模块中移除,模块本身也已下架。升级后、或导入旧备份时,会自动清掉这个模块的配置和缓存,后台不会再挂着它的抓取失败提醒。大连新闻综合、生活、文体仍由「大连」模块提供,照旧在「辽宁」分组。 - **消息推送只发需要你动手处理的提醒**:以前模块抓取失败(连续两次)、被风控、「官方服务暂时不可用」也会推到群机器人或手机,可这些用户处理不了,只能等官方恢复或等项目更新。现在这几类只在后台顶部的提醒里显示,不推送,恢复时也不推「已恢复」;登录凭证失效、模块配置文件损坏、EPG 源抓取失败、加了一人一源用户却没设访问密码照常推送。升级前已经推过、至今没恢复的抓取失败,恢复时还会补一条「已恢复」。 ### v4.43.0 (2026-10-22) 本次为「**模块批量开关、自定义订阅能回放、堵住访问凭据外泄**」版本:源管理新增「批量开关」,一次勾好要保留的抓取模块和内置源,只想留央视频、凤凰卫视、咪咕不用再逐个点关(issue #189);自己添加的订阅源保留源自带的回看设置,直接订阅能回放的源导入后也能回放(issue #190);修复第三方订阅可借内部占位符 `${replace}` 拿到访问密码或用户令牌的安全问题,**添加过来路不明的订阅的,升级后建议更换访问密码、重置用户令牌**。升级镜像后重启即生效,现有配置与订阅无需改动。 - **抓取模块可以批量开关,一次只留需要的来源(issue #189)**:「🌐 源管理 → 内置抓取模块」筛选栏最右侧新增「批量开关」。弹窗按分类列出全部模块,末尾是「内置单频道源」「内置订阅源(精选频道)」两项;可以整体或按分类「全选 / 全不选」,「还原」回到打开时的状态,改动过的项单独标出,底部实时显示「将启用 N 个、关闭 M 个」,点「应用」一次保存、播放列表随即重新生成。例如只要央视频、凤凰卫视、咪咕:点「全不选」,勾上这三个,内置源两项不勾,再点「应用」。批量开关只是一次替你点好每张卡片自己的开关,没有另设白名单,之后在卡片上单独开关照常生效;关掉的模块配置和登录凭证原样保留,勾回即恢复。自己添加的源不在批量开关里,仍在「自定义源」里逐个管。完整步骤和注意事项(「央视频」分组含省级卫视、凤凰卫视在「香港」分组等)见 README「空白部署 / 纯频道管理」一节。 - **自定义订阅源能正常回放(issue #190)**:订阅自带的回看设置(`catchup`、`catchup-days`、`catchup-source`)以前在导入时被丢掉,频道只能套用咪咕的回看参数 `?playbackbegin=…&playbackend=…`。第三方服务器不认这套参数,照常返回直播,播放器也不报错,表现为同一个源直接订阅能回放、导入后只有咪咕能回放。现在导入时保留这些设置,写在频道行或文件头 `#EXTM3U` 上都认(频道行优先),也认 Kodi 的写法 `catchup-type`、`tvg-rec`、`timeshift`,逐个频道写回订阅,播放器按源自己的模板(例如 `?playseek=…`)回放。完整网址形式的模板自动补上 `catchup="default"`,SIPTV 式的 `timeshift="N"` 按 `catchup="shift"` 处理,免得被订阅头的咪咕设置接管。在「我的频道」里改名、移动分组、复制到分组都会带上回看设置,复制出来的频道改了地址后不再沿用原来的设置;同一路流在多个订阅里重复出现时,排在前面的那条没写回看模板,会改用后面那条的。订阅里没写回看模板的频道,和咪咕、各模块的频道一样保持原样。模板含引号、逗号、空白或以 `=` 结尾的会被丢弃,这类频道照旧继承订阅头。默认每次重启都会重新拉取所有订阅源,升级后自动生效;关掉了「重启时更新」的源,到「源管理」里点一次「导入并保存」。 - **安全:第三方订阅不能再拿到你的访问密码或用户令牌**:`${replace}` 是本项目内部的占位符,输出订阅时会换成本机地址加访问密码或用户令牌(`/<密码>`、`/u/<令牌>`)。以前订阅里的播放地址、台标、`#EXTVLCOPT` 请求头里只要写上它,也会被一并替换,播放器播放、取台标时就把这串凭据发给了对方的服务器;把占位符拆开写,还能借输出时剥离内部属性的步骤重新拼出来。现在频道名、分组名、播放地址或台标带它的频道整条丢弃,日志里写明是哪个源;请求头、回看模板里带它的那一项直接忽略;拆开拼接的写法也不再生效。外部源(订阅、直连)、内置源和各平台接口返回的数据都按这个规则处理,咪咕体育赛事也一样。如果你添加过来路不明的订阅,升级后建议到「设置 → 系统配置」更换访问密码,并在「设置 → 用户管理」给已发出去的链接「重置令牌」。 - **直连源里手写的 `${replace}/…` 地址不再支持**:个别用户在直连源里手写 `${replace}/…` 指向本机的频道,这类频道现在会和上一条一样被丢弃,并在日志里提示。这个写法文档里从未提供;想把频道放进别的分组,请在「我的频道」里移动分组。 - **精选频道里的第三方转发线路移到「来源于网络」列表**:翡翠台和三条第三方凤凰线路(凤凰中文、凤凰资讯、凤凰香港)是转发站,不是电视台官方源,按收录规则不放进内置列表,现已从精选频道移到仓库的「来源于网络」列表。凤凰卫视三个台仍由「凤凰卫视」模块从官方提供;还想要这几条线路的,到「🌐 源管理 → 自定义源」点「🌏 添加「来源于网络」列表」订阅即可。 ### v4.42.0 (2026-10-22) 本次为「**安徽、沈阳恢复播放,后台换新样式**」版本:安徽各台恢复播放;辽宁模块改走云盛京官方入口,沈阳三路恢复,辽宁省台因官方入口故障暂时移除;央视频不再因一次读取失败就误报登录失效;后台换成更简洁的统一样式,输入框和确认框改为页面居中弹窗。升级镜像后重启即生效,现有配置与订阅无需改动。 - **安徽各台恢复播放**:安徽视讯的 CDN 开始拒绝原先使用的 App 播放器标识,七路都打不开。现在改用 CDN 放行的浏览器标识取清单和分片(仍由本机全代理),安徽卫视、经济生活、影视、公共、农业科教、综艺体育、国际频道恢复播放。 - **辽宁模块:沈阳三路恢复,省台暂时移除**:辽宁省台和沈阳台原来的官方网页与接口持续返回 405,已无法取流。沈阳新闻综合、沈阳经济、沈阳公共三路改用云盛京官方 App 的分享入口,恢复播放;辽宁省台暂未找到可用的官方入口,先从列表中移除,升级后旧省台缓存会自动清理。沈阳频道地址和「辽宁」分组不变,大连仍由独立模块提供。 - **央视频不再误报「登录失效」**:以前官方用户信息接口偶尔慢一次、或正好在续期,就会被当成登录丢失并弹出提醒,手动检查又恢复正常。现在第一次读不到只记为疑似,30 秒后再查一次,前后两次都失败才提醒;中间任何一次读到登录态都会撤销。 - **后台换新样式,弹窗居中**:后台整体改为更简洁的统一配色和样式。新建 / 重命名分组、重命名配置档等输入框,以及删除推送渠道、删除配置档等确认框,从浏览器自带的顶部弹框改为页面居中弹窗,按 Esc 可取消。 ### v4.41.0 (2026-10-20) 本次为「**虎牙、B 站 4K,单频道设画质**」版本:虎牙赛事房间能看 4K / 2K,B 站登录并关掉「优先 H.264」后,房间有 4K / 杜比时也能拿到;虎牙、斗鱼、B 站可以在播放地址上给单个频道指定画质(issue #185、#186);官方服务故障的提醒改为黄色,每条提醒都能点「知道了」收起。升级镜像后重启即生效,现有配置与订阅无需改动;虎牙选了「原画 / 最高画质」的、B 站已登录的,有更高档的房间会自动升档,带宽吃不消的见下文。 - **虎牙、斗鱼、B 站可按频道单独设画质(issue #185)**:在频道播放地址末尾加 `?quality=<档位>` 即可覆盖后台画质,例如 `/relay/huya-660101.m3u8?quality=0`(虎牙取最高档)、`/relay/bili-21144080.m3u8?quality=10000`(B 站按原画取、不往上升档)。虎牙档位为 0 最高、20000 4K、14000 2K、4000 蓝光、2000 超清、500 流畅;斗鱼为 0 原画、3 超清、2 高清(斗鱼免登录取流,官方最高只给超清,选 0 实际也是超清);B 站见下条。只认后台下拉框里有的档位,写错时按后台设置播放。这三个模块不再把地址上的查询参数当回看参数拼进签名地址。 - **B 站新增「优先画质」,默认最高、能拿到 4K / 杜比(issue #186)**:以前固定按「原画」取流,房间有 4K、杜比等更高档也拿不到。现在默认「最高画质」:先按原画要,房间还有更高档时再要一次;没登录被封顶超清时不会多打接口。也可固定为原画、蓝光、超清或高清,单频道覆盖用 `?quality=`:0 最高、10000 原画、400 蓝光、250 超清、150 高清(单频道覆盖不改频道名里的画质标签)。4K / 杜比多为 HEVC,想要的话需关掉「优先 H.264」,并登录(扫码或填 SESSDATA);房间没有这一档、或账号权益不够时,B 站会自动降档。已登录、没改过「优先画质」的,升级后有更高档的房间会自动取最高档(开着「优先 H.264」也可能升到「原画真彩」),频道名里的画质标签会跟着变,码率也更高;想维持以前的原画,把「优先画质」改成原画即可。关掉「优先 H.264」后,如果房间的 HEVC 档比 H.264 低(实测有房间 H.264 给原画真彩、HEVC 只给蓝光),仍走 H.264,不会因此掉档。 - **虎牙赛事房间能看 4K / 2K(issue #186)**:虎牙赛事房间在原画(多为 1080P)之上还有 4K、2K 档,以前拿不到。现在后台「原画 / 最高画质」遇到有 4K、2K 的房间会取最高档,没有时仍是原画;也可固定选 4K 或 2K,房间没有这一档时往下退(4K 退 2K,2K 退原画),不会掉到原画以下。默认画质仍是超清 2M,没改过设置的升级后不变,想看 4K 要把「优先画质」改成「原画 / 最高画质」或 4K。免登录即可,4K 码率约 20M,需要带宽和设备跟得上。之前选了「原画 / 最高画质」的,升级后这类房间会直接拿到最高档(有 4K 就是 4K),也没法再固定只要原画;吃不消的改选 2K(仍比原画高一档)或蓝光 4M,或用 `?quality=` 单独给某个频道降档。单频道覆盖:`?quality=20000`(4K)、`?quality=14000`(2K)。 - **斗鱼画质说明更正**:斗鱼模块免登录取流,官方最高只给超清(720P),后台选原画拿到的也是超清。「优先画质」的说明以前写「匿名实测可取原画」,现已改正;实际取到的流没有变化。 - **提醒可以点「知道了」,官方服务故障改为黄色提醒**:辽宁等模块的官方接口挂掉时,后台顶部会一直挂着红色「抓取失败」,用户处理不了也消不掉。现在官方接口返回 HTTP 错误或请求超时时,提醒改为黄色「官方服务暂时不可用」,写明不用处理。黄色只按报错类型判断,服务器自己连不上外网(域名能解析)、海外部署被地区限制时也会显示黄色;长期失败又用不到的模块,仍可在源管理里关掉。提醒列表里每条都可以点「知道了」收起(不能撤销),顶部提醒条和标签上的红点随之消失(源管理里该模块仍标「失败」),之后也不再推送(点之前已经推送过的,恢复时仍会推一条「已恢复」)。官方恢复后标记自动清除,下次再出问题会重新提醒;问题变严重(黄色变红色)也会重新显示。登录凭证失效、本机网络解析失败、B 站风控仍是红色。 ### v4.40.0 (2026-10-18) 本次为「**新增江门、南通,新疆直播恢复**」版本:「广东」分组新增江门综合,「江苏」分组新增南通新闻综合、社教、公共三套,都带官方台标和节目单;新疆官网又改了签名脚本,新疆各台恢复播放。升级镜像后重启即生效,现有配置与订阅无需改动。 - **新增江门综合,归入「广东」**:新增独立「江门」模块,默认开启、免登录。播放由 NAS 代理官方直播(不转码),带官方台标和今明两天的官方节目单(保留剧名和集数)。暂不支持回看;官网的内部送流口和两套广播不收录。 - **新增南通三套电视,归入「江苏」**:新增独立「南通」模块,默认开启、免登录,收录南通新闻综合、南通社教、南通公共,带官方台标和当天的官方节目单。播放由 NAS 代理官方直播;台方在部分时段(电视剧、动画、录播等)不开放网络直播,这时频道仍保留在列表里,播放会提示「台方当前节目未开放网络直播」,到时段结束后自动恢复。暂不支持回看。 - **新疆直播恢复(PR #184)**:新疆网络广播电视台官网又改了签名脚本的写法,旧版读不出当天配置,新疆各台报「新疆广电签名脚本没有某天的配置」。现在新旧写法都能认(仍不执行下载的脚本),新疆各台恢复播放。感谢 @vitter 定位问题并提交修复 ### v4.39.0 (2026-10-18) 本次为「**撤下爱奇艺体育与爱奇艺影视**」版本:这两个模块要在后台常驻浏览器、反复打开官方页面核验观看权限,v4.38.0 虽然减轻了开销并改为默认关闭,实际用下来 NAS 仍会一阵一阵地高负载,还不够成熟,这一版先整体撤下。升级镜像后重启即生效,其他频道、配置与订阅不受影响。 - **撤下爱奇艺体育和爱奇艺影视**:升级后源管理里不再有这两个模块,后台也不会再为它们启动浏览器;播放列表里的「爱奇艺体育」分组、影视浏览页和影视专用 M3U 一并下线,播放器里收藏过的爱奇艺条目会播放失败,删掉即可。之前导入的爱奇艺登录数据(数据目录下的 `iqiyi-sports/`、`iqiyi-vod/` 两个文件夹,含 Cookie)不会自动删除,不再需要的话可以直接删掉。镜像不再安装 ffmpeg(原本只给爱奇艺影视做解码自检),体积回到 v4.37.0 以前。成都、绍兴等其他频道照常使用。 ### v4.38.0 (2026-10-18) 本次为「**爱奇艺体育不再占满 CPU、新增爱奇艺影视与成都 27 路**」版本:v4.37.0 默认开启的爱奇艺体育会在后台常驻浏览器逐条核验,不少 NAS 被占满(issue #182),这一版大幅减轻核验开销,并改为默认关闭、升级时统一关一次;新增爱奇艺影视(仅管理员可用,可浏览、播放、看弹幕并生成专用 M3U);「四川」分组新增成都主频道及区县共 27 路。升级镜像后重启即生效;要看爱奇艺体育的,到源管理里重新打开一次即可,登录态保留。 - **爱奇艺体育改为默认关闭,升级时统一关一次(issue #182)**:爱奇艺体育要在后台常驻浏览器、逐条打开官方页面核验观看权限,没人看也在跑,v4.37.0 里默认开启后不少 NAS 被占满。现在新装默认关闭;从 v4.37.0 升级上来时,不管之前开没开,都会先关一次(只关这一次)。要看爱奇艺体育的,到「源管理 → 网络直播平台 → 爱奇艺体育」重新打开即可,已导入的 Cookie 和登录态保留,之后不会再被关掉。 - **爱奇艺体育不再把 CPU 占满(issue #182)**:v4.37.0 里,爱奇艺体育没人看也会在后台不停核验:每核验完一批就立刻重跑一次模块并整张重生成播放列表,直播的核验结论 2 分钟就过期,两个浏览器页面同时开,弱一点的 NAS 和 N100 都会被占满。现在核验结果只在列表真的变了时才触发重新生成;后台核验同一时间只开一个官方页面;结论有效期拉长(能看的直播 20 分钟、看不了的直播 1 小时,回放、集锦能看的约 6 小时、看不了的约 2 小时),没核验出结果的 5 分钟后重试、连续失败逐次加倍到最长 1 小时;官方页面连续 4 次没有响应(设备太慢或连不上爱奇艺)时,后台核验暂停 30 分钟,模块详情里会写明;免费条目匿名打开超时后不再用账号重开一次;后台浏览器空闲 5 分钟自动关闭。列表里的回放和集锦改为只保留最新 30 条(合计),更早的不再列出。按 v4.37.0 报告里的目录规模模拟,后台打开官方页面从每小时两百多次降到稳定后约 20 次以内(重启或重新登录后的第一小时约 40 次,要把全部条目重新核验一遍)。 - **爱奇艺体育播放中遇到试看不再误报登录失效**:账号有效、只是没有这一场的权益时,官方播放器给的试看和登录过期时一样;现在播放或续票遇到试看只把这一条从列表隐藏,要等官方账号接口确认登录确实失效,才在提醒中心报「登录凭证已失效」(后台最多每 10 分钟查一次,不影响正在播放的请求)。 - **新增爱奇艺影视**:在「源管理 → 网络直播平台 → 爱奇艺影视」打开影视浏览页,可以看爱奇艺官网首页的推荐、最热、最新、你的观看历史和电视剧选集,在网页里播放(支持续播、自动下一集、弹幕),也可以生成专用 M3U 给播放器订阅(弹幕需 Ceau 等兼容客户端)。登录方式和爱奇艺体育一样:NAS / Docker 导入 Cookie,有桌面的本机可用官方窗口登录;每部内容播放前都先经官方播放器确认能完整观看,试看、无权限、加密内容不提供。影视不进固定频道列表。**仅管理员可用**:浏览页、清单、播放和弹幕都要用管理员地址,用户令牌访问一律拒绝(播放用的是站长本人的会员);没设访问密码时任何能连上端口的人都能用,建议先设访问密码。资源占用:没人打开浏览页或播放时后台不跑浏览器;打开一部内容要用后台浏览器打开一次官方播放页(几十秒到两分钟);播放中的地址最长用 30 分钟,到期或被官方拒绝时才重新取;专用 M3U 每轮最多新核验 20 部,核验结论 6 小时内有效,播放器拉清单最多每 2 小时触发一轮。它占用的浏览器计入全局上限(`mbrowserConcurrency`)。镜像新增 ffmpeg,用于发布前解码开头和末尾各 5 秒做自检,缺 ffmpeg 时跳过自检。 - **新增成都电视及区县频道**:新增独立「成都」模块,默认开启、免登录,27 路频道归入「四川」。播放时请求看度官方接口获取当前签名,成都主频道优先高清,官方给的高清地址无效时自动改用标清;默认 302 跳转、媒体由播放器直连,NAS 不转码、不启动浏览器,因此不跟随 302 跳转的播放器(如极影视)播不了成都频道。高新区频道显示为「成都高新电视台」,避免和别的城市的高新台混淆。龙泉旧源返回 404、未确认可用官方替代入口,暂不收录。新闻综合、公共接入央视网今明两天官方节目单,其余频道暂无;24 路台标取新版官网移动直播页,崇州、都江堰、新津从台标资料库手工收进内置包并记录出处,27 路均有台标。暂不支持回看。 - **换成新的 iPTV 图标,关于页更简洁**:浏览器标签页、书签和手机「添加到主屏幕」都有了 iPTV 自己的薄荷绿电视图标,后台左上角、网页播放器和公告视频也同步换成新图标(左上角点击仍是 iFansClub 官网);「关于我们」页改成更简洁的卡片排版。 ### v4.37.0 (2026-10-17) 本次为「**爱奇艺体育、绍兴三台**」版本:新增爱奇艺体育官方直播、回放与集锦,只列出免登录或你本人账号确认能完整观看的内容,标题标明观看条件;「浙江」分组新增绍兴新闻综合、公共、文化影视三台;咪咕动态赛事的频道详情精简。升级镜像后重启即生效,现有配置与订阅无需改动。 - **新增爱奇艺体育:官方直播、回放与集锦**:自动同步爱奇艺体育官网的在播赛事,以及官方标注的赛事回放和集锦,统一归入「爱奇艺体育」分组。标题以 `[直播]` / `[回放]` / `[集锦]` 区分,直播排在前面,点播附日期、按时间倒序。目录每 5 分钟同步一次,会扫描官方栏目及其中引用的赛事专题,再用官方赛事详情核对是否真在直播,专题标着「直播中」但比赛已结束的不收;官方入口读取不全时,模块详情里会提示覆盖不完整。播放时由后台浏览器打开官方播放页取票,清单和分片经本机代理:直播选官方给的最高码率 H.264 档(实测 1080P 50 帧,以赛事实际提供为准);回放、集锦用官方网页播放器默认选中的那一档(官方有 1080P 时也可能只给 720P),是完整点播,保留时长、可以拖动进度。没有节目单,也不提供 catchup 回看。同一时间只能为一场取票(正在看的那场约每两分半在后台续票时也算),这时打开另一场会播放失败,稍后再试即可。模块和其他新模块一样默认开启:不登录也会在后台用浏览器逐条核验目录里的直播、回放和集锦,并定期复核(Docker 镜像已自带 Chromium),用不到可以在源管理里关掉。 - **爱奇艺体育只显示能完整看的内容,并标出观看条件**:每条直播、回放、集锦进列表前,都先经官方播放器核验。目录标为免费的,先在不带登录的隔离会话里确认能完整播放;其余用你本人的登录态确认。只能试看、缺少权益、DRM 或加密,以及还没核验完的,都不显示。标题标出观看条件,例如「[直播] [免费免登录] 赛事名」「[回放] [会员 / 单场付费] 10月14日 赛事名」;官方没写明类型、但已确认能完整播放的,标「权益已授权」。首次启用时分批核验,确认一条加一条,模块详情里会提示还有多少条未确认。核验结论有时效(直播约 2 分钟,回放、集锦约 30 分钟),到期后在后台复核,复核期间照常显示,复核不通过才移除。重新登录、导入 Cookie 成功,或「检查登录与权益」确认登录有效后,会重新核验;播放时发现权限失效,会立即从列表移除。权益按赛事分别校验,体育会员、单场票不等于所有赛事都能看。 - **爱奇艺体育的登录方式**:在「源管理 → 网络直播平台 → 爱奇艺体育」操作。Docker / NAS 等没有桌面的部署,在自己电脑登录爱奇艺体育官网,从浏览器开发者工具复制完整的 Cookie 请求头,或导出 iqiyi.com 的 Cookie JSON,再点「验证并导入 Cookie」。导入的凭证先在隔离会话里验证,无效的不会覆盖当前登录态。服务装在有桌面的电脑上、并且从本机(localhost)打开后台时,还会出现「本机官方网页登录」,可以在官方窗口扫码或填短信验证码。「检查登录与权益」和导入 Cookie 都要拿当前目录里的一条会员直播或回放来核验;用来核验的那条只能试看时(账号有效、只是没有这一场的权益,比如单场付费的直播),会再向官方确认账号状态,显示「已登录 · 当前内容需额外权益」,不会把账号判为登录失效,导入 Cookie 也照常成功。登录态存在数据目录的 `iqiyi-sports/chrome-profile`,不进配置备份,迁移后需要重新导入;没有过期时间的请求头 Cookie 在本机保留 30 天,实际有效期以官方校验为准。只看免费赛事不用登录。可设环境变量 `IQIYI_HTTP_PROXY` 让服务端读取官方目录和直播清单时走代理;后台浏览器取票、核验、登录以及视频分片都不走它,服务器本身连不上爱奇艺时只设它播不了。 - **新增绍兴三台**:绍兴新闻综合、绍兴公共、绍兴文化影视三路,默认归入「浙江」分组,无需登录、无需配置。三台都是 720p,带各自的官方台标和今明两天的官方节目单。播放地址由绍兴网官方接口实时下发,每次播放都重新获取,官方换了播放域名、路径、签名或 CDN 会自动跟上,确认实时清单和视频分片能取到才开始播放。本机只中继清单,视频分片由播放器直连官方 CDN,也可用 `?relay=2` 全代理。暂不支持回看。 - **咪咕动态赛事的频道详情精简**:「体育-昨天 / 今天 / 明天」里的咪咕赛事,以及「爱奇艺体育」分组里的赛事,点开详情只显示赛事信息、播放入口和官网入口,不再提供台标、别名、改名、移动分组这些固定频道才用得上的编辑项;「我的频道」列表里也不再显示它们的节目单 / 台标配对圆点,不计入「缺台标」清单。这类条目随官方目录更新,比赛结束后改列回放,过了「昨天」就从列表移除。固定电视频道不受影响;搜索结果批量移动,以及分组里的隐藏、排序,对赛事条目照常可用。 ### v4.36.0 (2026-10-12) 本次为「**专用配置档一键整理、咪咕拦截播放器批量检测**」版本:给儿童、老人的电视单独配一档时,可以搜索频道后批量移进一个分组,再一键隐藏其余分组(issue #176);播放器批量检测、测速时,不再带着站长的咪咕账号连发几十次请求(issue #177);新疆官网改版后的直播恢复。升级镜像后重启即生效,现有配置与订阅无需改动。 - **搜索结果可以批量移动,新增「只保留此分组」「恢复全部分组」(issue #176)**:「我的频道」左侧搜索后,点「批量移动」勾选结果(可全选),一次移到同一个分组;整组隐藏或单独隐藏过的频道也能直接移出来,单独隐藏过的会一并恢复显示。分组按钮里新增「只保留此分组」,一次隐藏当前配置档的其余分组,确认框写明是哪一档、哪些分组会保留(自定义分组、「未分组」不能整组隐藏,公告固定保留);改过名的分组隐藏后名字保留。「已隐藏」里整组隐藏的分组超过一个时出现「恢复全部分组」,确认框列出要恢复的分组名,单独隐藏的频道不受影响。给儿童电视配一档的做法:新建分组「少儿」→ 搜「少儿」「卡通」等批量移进去 → 点「只保留此分组」。配置档仍是「各档共用全部频道、每档做减法」,以后新增的源或分组照样会出现在这一档,需要时再隐藏一次。 - **咪咕拦截播放器的批量检测(issue #177)**:播放器的「检测频道 / 测速 / 刷新预览图」会把整张列表逐个请求一遍,没有缓存的咪咕频道每个都要带着配置的账号向咪咕取一次地址,几秒内几十次。现在同一台播放器 10 秒内连续请求 6 个以上不同的咪咕频道,就判为批量检测、暂停替它取地址,停止换台 5 秒后自动恢复;检测开始前就在看的频道照常播放,日志里会写明哪个客户端被拦。规则与央视频已有的批量探测拦截相同。有报告账号被咪咕以「异常播放行为」封禁,原因尚未证实,建议同时关掉播放器里对咪咕源的自动检测、测速。 - **咪咕连不上时的提示更准确(issue #171)**:大陆服务器提示「咪咕接口请求失败:网络超时或不可达」时,实测多是咪咕拒绝了这台服务器的公网 IP(同一家云、同一地区换个 IP 就好),提示里改为写明这一点,去掉了不对的「海外部署」说法。 - **新疆直播恢复(issue #174)**:新疆网络广播电视台官网 10 月改了取流签名的混淆方式,旧实现会拼出跨日期的签名、接口返回 403。现在按官网自带的校验算出唯一正确的结果(不执行下载的脚本),新疆各台恢复播放。 - **「来源于网络」订阅清理失效频道**:`from-the-web/from-the-web.m3u` 删掉了已经只播「下载 App」二维码的 4gtv.cnlive.club 中转频道(37 个),以及华视教体、台视财经、ViuTV、ViuTVsix 四个已失效的频道。这个文件是直接从仓库订阅的,已添加的用户刷新订阅即生效,不用等升级镜像。 - **更新日志挪到 CHANGELOG.md**:README 里的版本历史已有七百多行,比正文还长,完整历史改放在仓库根目录的 `CHANGELOG.md`,README 只保留当前版本的更新内容。 ### v4.33.0 (2026-10-10) 本次为「**提醒推送到群机器人、后台设置页整理**」版本:登录凭证失效、模块连续抓取失败等需要处理的事,可以推送到飞书、企业微信、钉钉、Telegram、Bark 或自己的 Webhook,不用开着后台也能知道;设置页里添加用户、规则、节目单源都改成弹窗,系统配置按用途分区,配置备份单独成一个标签;南京并入「江苏」、青岛并入「山东」(issue #175)。升级镜像后重启即生效;南京、青岛两个分组里之前单独做过的设置需要重新设一次,其余配置与订阅无需改动。 - **新增消息推送**:后台「设置 → 消息推送」添加渠道,支持飞书(含签名校验)、企业微信、钉钉(含加签)、Telegram、Bark 和通用 Webhook,添加后点「发测试消息」确认能收到。后台顶部「需要处理的提醒」出现新的一条时发一条消息,问题恢复时再发一条「已恢复」:抓取失败要连续失败两次才发,一闪而过的不打扰;同一个问题没恢复前只发一次;升级前就已存在的提醒不发。每个渠道可以选消息样式:详细(带说明)、简洁(每条一行)、卡片(飞书是带颜色标题栏的卡片,企业微信、钉钉、Telegram 是加粗排版),表单里能看到预览。消息末尾写明来自哪台服务器(系统配置里的公网地址),不带访问密码。只往外发消息,不接收任何指令。Telegram 的接口在大陆连不上,部署在大陆的需给容器设 `HTTPS_PROXY`,或在渠道里填自己的反代地址。机器人地址和 Token 存在数据目录 `notify-channels.json`,随配置备份一起导出;发送失败时渠道卡片上直接写明原因(地址填错还是网络不通)。 - **提醒中心改由服务端判断**:以前「哪些算提醒」是后台网页自己算的,没人开后台就没人知道。现在服务端每分钟自己检查一次,每轮源刷新后也马上检查,播放时才发现的登录失效(央视频保活检查、咪咕播放时被拒等)也能及时知道;只读各模块已经记下的结论,不联网、不额外打官网。后台显示的提醒内容、红点和跳转都不变。记录存在数据目录 `alerts-state.json`,重启后不会把老提醒重新报一遍。 - **后台设置页整理**:用户管理、频道别名、自动分组、EPG 聚合的添加按钮挪到各页标题下方,点开弹窗填写,不再是页面底部一长行;别名和分组规则的「编辑」也在弹窗里改,编辑时规范名 / 分组名锁定(保存按名字覆盖,改名会悄悄多出一条规则)。系统配置分成「访问与安全」「更新与显示」两块,要重启才生效的项标「需重启」、改了后台地址会变的项标「改后地址会变」;配置备份挪到单独的「备份迁移」标签。另外统一了下拉框箭头的间距、表单标签与输入框的间距,占位提示文字调浅,不再像已经填了值。 - **南京并入「江苏」、青岛并入「山东」(issue #175)**:南京、青岛是最后两个还单独成组的城市模块,其余城市(大连、广州、无锡、宁波等)早已归入所在省份。现在南京的电视频道归入「江苏」,青岛五路电视直播归入「山东」;「南京景观」「青岛景观」照旧单独成组。分组改名后,这两个分组之前在「我的频道」里做过的排序、隐藏、重命名需要重新设一次。 ### v4.32.0 (2026-10-10) 本次为「**青岛五路电视直播、天台和合频道、虎牙线路自动切换**」版本:青岛新闻综合、生活服务、影视、都市、教育五路官网直播归入「青岛」分组;浙江新增天台县和合频道;虎牙直播在首选线路被 CDN 拒绝时自动换线路,不再播两三分钟就断。升级镜像后重启即生效,现有配置与订阅无需改动。 - **青岛新增 QTV-1 到 QTV-5 五路官网直播**:青岛新闻综合、生活服务、影视、都市、教育五路来自青岛网络电视台官网的直播页,免登录、零配置,归入「青岛」分组。官网的视频分片带播放器自用的加密封装,普通播放器直连播不了,所以播放时由本机代理边下边解、整段转发(与广西模块同一做法),能不能看取决于部署这台服务的机器能否访问官网。节目单取自官网播放页的接口,官方只给当天的编排;台标用官网台标并收进内置台标库。原来放五四广场、奥帆中心等城市直播的「青岛」卡片改名「青岛景观」,与电视频道分开,频道和分组不变。 - **浙江新增天台和合频道官方直播**:天台县和合频道一路,放在「台州」模块,默认开启、免登录,归入「浙江」。播放时向和合天台 App 链接的趣看公开接口获取新签名,本机只中继直播清单,分片由播放器直连官方 CDN,也支持全代理订阅。台标从官方频道卡里裁出风车标收进内置台标库;官方今明两天的节目单为空,暂无节目单和回看。实测 1920×1080。这一路是县级频道,台州新闻综合、文化生活尚未取得可验证的连续直播,未收录。 - **虎牙直播首选线路被拒时自动换线路**:虎牙首选的线路播两三分钟后会对同一出口整条拒绝(403),重新签名也没用,但房间页里的其它线路仍能播。现在清单一被拒就立刻换下一条线路(新线路先探一片分片再切,避开「清单正常、分片 403」的线路),被拒的线路冷却 5 分钟,上次能播的线路优先;所有线路都被拒时从 10 秒起逐次翻倍退避,最长 2 分钟,不再替播放器的连环重试去打上游。 ### v4.31.0 (2026-10-08) 本次为「**青海三路官方直播、订阅源自定义 User-Agent**」版本:青海卫视、经济生活、都市三路官方直播归入「青海」分组,精选频道加入西宁新闻综合(issue #169);自定义订阅源可以填写 User-Agent,用它拉取订阅、检测失效,并可选在播放时带上(issue #170)。升级镜像后重启即生效,现有配置与订阅无需改动。 - **青海新增青海卫视、经济生活、都市三路官方直播,精选频道加西宁新闻综合(issue #169)**:青海广电的云直播平台上,长云网(青海广播电视台官网)名下有青海卫视、经济生活(平台上叫旧称「青海经视」)、都市三个全天直播,和安多卫视同一套接口、同一个 CDN,现在一起归入「青海」,免登录、零配置。播放时取带签名的地址,本机只中继清单,实测都是 1080P。青海卫视的节目单取自央视网,另两路官方只有整点占位。和安多卫视一样,官网、接口和 CDN 只对大陆网络开放。西宁广播电视台官网的新闻综合频道地址固定、不带签名,写进精选频道的「青海」组,大陆和海外都能打开(生活服务频道已于 2026 年 4 月停播)。 - **订阅源可以自定义 User-Agent(issue #170)**:有些订阅要特定 UA 才肯返回列表,有些频道的 CDN 也按 UA 放行。后台「源管理 → 自定义源」的订阅源卡片新增「User-Agent」一栏,填了就用它拉订阅(留空仍用默认浏览器 UA),失效检测也按它去探,不再把这类频道误判成失效。勾选「播放时也带上这个 UA」后,本源的 http(s) 频道在 m3u 里会带上 `#EXTVLCOPT:http-user-agent`,由播放器播放时发出,需要播放器支持这一行(VLC、Kodi 等);订阅里已自带 UA 的频道保持不变,开关改完保存即生效,不用重新拉订阅。TXT 格式放不下请求头,勾选后这些频道不会出现在 TXT 订阅里,整组都被跳过时连空分组也不再留下。默认不勾,现有订阅不受影响 ### v4.30.0 (2026-10-06) 本次为「**咪咕投屏专享 4K、杭州宁波直播、海外频道模块**」版本:含电视端权益的咪咕会员在赛事上拿到 4K 投屏流,四屏账号的 H.265 / HDR 恢复正常;新增杭州、宁波官方直播与广东体育赛事;海外免费直播以默认关闭的「海外频道」「澳门」模块回归,国际频道从最高画质起播;登录失效有了提醒中心。升级镜像后重启即生效,现有配置与订阅无需改动。 - **咪咕含电视端权益的会员拿到「投屏专享」4K(issue #117)**:画质选 4K 时,含电视端权益的会员(四屏、超级足球通等)在列着「超清4K (投屏专享)」的赛事上,会按咪咕 App 投屏的取法拿到这一档:3840×2160、H.265、约 26M,比手机端的原画高一大截。其余情况统一按手机端取流:此前这类账号走「大屏」策略时,咪咕会无视 H.265 / HDR 设置只给 H.264 SDR,现在和其他账号一样拿到 H.265 HDR 版本,HDR 开关也能生效。没有电视端权益的账号画质不变 - **新增杭州、宁波官方直播**:杭州综合、西湖明珠、杭州生活、杭州影视、杭州青少体育 5 路,宁波新闻综合、经济生活、都市文体、影视剧 4 路,都归入「浙江」分组(杭州青少体育同时出现在「体育」),免登录、零配置、默认开启,可在源管理单独关闭。两家都按官网播放器的流程在播放时取新签名(杭州约 2 小时、宁波约 1 小时有效),签名快到期或被官方拒绝时自动重签,长时间观看不断流;不把一次性的签名写进播放列表。杭州官方 CDN 只认官网来源头,清单和视频都经本机转发;宁波的 CDN 不看来源头,本机只中继清单,视频由播放器直连官方 CDN。杭州台标取自官方频道接口,宁波官方没有频道图标,内置台标库收了 NBTV 台徽的图。两家官网都没有可读的节目单(杭州是整点「精彩节目」占位,宁波是每周一张节目表图片),暂无节目单。两家取签名的接口都只对大陆网络开放,部署在大陆以外(含香港)时这 9 路取不到。由公共直播实验台移植,2026-10-06 在上海联通出口实测 9 路均为 1280×720、H.264 / AAC,连续播放与签名失效后的重签都正常。 - **广东体育官方赛事并入广东分组**:新增独立「广东体育赛事」抓取模块,自动将官方账号当前公开在播的每场赛事显示为“广东体育 · 赛事名称”,放在「广东」分组,同时出现在「体育」分组(赛事名带少儿、卡通、动漫的改放「少儿」,带教育、科教的改放「教育」)。开播后加入、结束后移除,数量与排序变化不改变赛事标识;免登录、零配置,后台有独立开关。播放时重新检查赛事状态,本机只中继清单,视频分片由播放器直连官方 CDN,不占服务器带宽;播放器连不上官方 CDN 时可改用全代理版订阅(`?relay=2`)。广东体育电视频道继续使用荔枝网来源,赛事直播间单独取流;赛事直播间没有电视频道节目单,台标按直播间规则留空。 - **新增「海外频道」与「澳门」两个模块,默认关闭**:09-25 因大陆卡顿从精选列表移出的 33 个海外免费直播(体育、娱乐时尚、文旅、国际、韩国)回到新的「海外频道」模块,排在各分组末尾,视频由播放器直连各平台 CDN;频道表放在仓库里的 `IPTV-overseas.m3u`,每 6 小时拉一次,以后增删、换地址推送即生效,取不到时用镜像里自带的那份。「澳门」模块提供澳广视(TDM)自办的六套电视:澳视澳门、澳视葡文、澳门体育、澳门资讯、澳门综艺、澳门-Macau,按官网播放器的方式先查线路再取流。两个模块在「源管理 → 内置抓取模块」的「海外」分类里,默认关闭:能不能播取决于播放设备(澳门还要求部署的机器)能不能连到大陆以外,需要时手动打开。面包台在大陆和海外都已失效,从精选列表删除 - **海外频道新增 9 个官方直播**:Thai PBS、Bloomberg TV 亚太 / 欧洲 / 美国、DW English、TRT World、Al Jazeera English 并入「国际」,NASA+、Gusto TV(美食)并入「文旅」,都是广播机构官方或官方授权分发平台给的固定地址,视频由播放器直连。和其他海外频道一样在「海外频道」模块里、默认关闭;频道表是仓库里的 `IPTV-overseas.m3u`,以后换地址推送即生效。最高画质:TRT World 2560×1440,Thai PBS、DW、NASA+、Al Jazeera、Gusto TV 1920×1080,Bloomberg 1280×720;都从最高档起播(见下一条),Thai PBS、DW 保留官方的字幕轨。大陆网络下 Bloomberg 与 DW 连不上,其余几台大陆探针能连上,流畅度未经大陆实测。NHK World、Arirang、CNA、France 24 English 主项目里本来就有,没有重复加,改成了最高档起播(见下一条);Euronews 两台只有官方 YouTube 直播,要在镜像里装 yt-dlp 才能取,暂不接入。 - **国际频道从最高画质起播,网速不够再降**:不少官方主清单把最低档排在第一(CNA 270p、NASA+ 234p、Thai PBS 144p),APTV 等按清单顺序起播的播放器会先糊一阵;以前的办法是只写最高档,代价是网速跟不上也降不下来。现在 CNA、France 24 English / Français、World Poker Tour 改由「亚洲与国际直播」模块提供,海外频道里的 Thai PBS、DW English、TRT World、NASA+、Gusto TV、Arirang、France 24 Español,以及 FUEL TV、MTRSPT1、Terra Mater WILD、Wipeout Xtra、MovieSphere、FIFA+、Qello Concerts 也改成这样:播放时本机取一次官方主清单,把最高档挪到最前再交给播放器,其余几档、独立音轨和字幕都保留,子清单和视频仍由播放器直连官方 CDN,本机只多一次清单请求。本机取不到主清单时直接退回官方地址,和以前一样能播。France 24 三个语种官方都只公开了 1080p、360p 两条单档清单,模块把它们拼成两档的主清单;NHK World 的主清单也把高码率的 720p 挪到了最前。后台和独立播放页的网页播放器同样改为从最高档起播,之后照常自动升降。后 7 台的子清单带会话参数,以前写死不了最高档,现在由本机取主清单时建立会话,播放设备换个网络也能接着用。精选列表里的 CNA、France 24 English / Français、World Poker Tour 条目先留给没升级的部署,新镜像里会被模块那份顶替,不会出现两个同名频道;用户对这四台做过的隐藏、改名、移组、排序要重新设一次。2026-10-06 实测:本机交给播放器的主清单第一档都是最高档(TRT World 2560×1440,CNA、France 24 三个语种、DW、NASA+、Gusto、Thai PBS 1920×1080,NHK、Arirang 1280×720),网页播放器第一个请求的就是这一档。 - **登录失效有提醒,频道不再悄悄消失**:后台新增提醒中心,导航下方一行提示、点开看清单,汇总登录凭证失效、抓取失败或被限流的模块、损坏的模块配置、失效的节目单源,以及开了用户令牌却没设访问密码等问题,对应页签标红点或橙点,出问题的模块卡片变红。需要登录的模块(咪咕、B 站、北京台、央视频、凤凰秀、四川)凭证失效时都会报到这里;平台有游客档的自动降档继续播(凤凰三台降到 480p,咪咕降到游客 540P,B 站最高「超清」),北京台 9 个电视频道保留在列表里。此前凭证过期时,有的悄悄降了画质,有的频道直接从列表里消失,后台还显示「已配置」 - **后台网页里播放宁波、NASA+ 不再失败**:宁波的官方 CDN 拒绝别家网站的来源头、也不给网页跨域许可,后台网页播放宁波频道时自动改走本机全代理(和咪咕、山东台一样);后台和独立播放页请求视频时不再带本页地址做来源头,NASA+ 这类放行「不带来源」、拒绝别家来源的 CDN 在网页里也能播。订阅给电视和播放器的地址不变。Thai PBS 的官方 CDN 只放行自家网站,网页里仍播不了,用播放器打开正常。 - **海南台抓取不再隔几轮失败一次**:官方频道列表接口约三分之一的请求要 12~13 秒才回,原来 10 秒就放弃,提醒中心隔几轮就报一次「海南抓取失败」;现在等到 20 秒,连续 8 轮实测全部成功 - **后台界面整理**:「源管理 → 内置抓取模块」改成按分类(账号与授权、网络直播平台、免账号模块、海外)切换,不用再长距离滚动,各分类的数量跟着「全部 / 已启用 / 已关闭」筛选变;各页标题和导航统一样式,品牌标识更新 ### v4.29.0 (2026-10-05) 本次为「**8K 不再跳片、抓取模块可筛选**」版本:央视频 CCTV8K 不再隔一两分钟跳一下、跳完没声音;后台「抓取模块」页可以按开关筛选,关闭的模块一眼能看出来,详情里能看到这个模块有哪些频道(issue #164);后台网页里播放咪咕、山东台频道不再报错。另外后台界面做了一轮细节整理,「关于」页加了 Telegram 交流群和公告频道入口。升级镜像后重启即生效,配置与订阅无需改动。 - **央视频 CCTV8K 不再隔一两分钟跳一下、跳完没声音**:央视频各家 CDN 节点的进度不一样,慢的比快的落后一两片,服务端每次刷新清单又常常换节点。8K 一次只列 3 片(6 秒),先取到慢节点、再取到快节点时,中间会有一片谁都没列过,播放器就跳过这 2 秒,音画时间戳一断,有的播放器恢复后就没有声音了。以前取到比手里还旧的清单时,服务端还会把它当成换流,把攒下的清单清空,更容易漏片。现在取到旧的就当这次没有新内容,不清空;8K 这种每片时长固定的频道,窗口跳过的一两片会按相邻分片的地址补回来。不多向官方取一次清单,其他频道不受影响。本机按真实上游、用 Ceau 的播放核心各播 6 分钟:改前跳片 8 处、音频断开 6 次,改后都是 0。 - **抓取模块可以按开关筛选,详情里列出频道(issue #164)**:「源管理 → 抓取模块」顶部加了「全部 / 已启用 / 已关闭」筛选,选过的会记在这个浏览器里。模块卡片开关后位置不变,不会整片挪动;勾选框换成拨动开关,关闭的卡片改成虚线、内容变淡,底部写明「已关闭」,浅色主题下也能一眼分清。点开模块详情会列出它抓到的频道名(多个分组时按分组列),名单区可以单独滚动;关闭的模块显示关闭前抓到的频道;从没抓过、或抓了没拿到频道的模块(比如四川没配 Token)会写明原因。 - **后台网页里播放咪咕、山东台频道不再报错**:咪咕和山东台(齐鲁)的频道地址会跳转到官方 CDN,浏览器出于安全限制读不到那边的清单,在后台点「在页面里播放」或打开独立播放页时就报错。现在网页里播放这两类频道时自动改走本机全代理,访问密码、账号前缀和回看参数都保留。只影响后台网页里的播放,订阅给电视和播放器的地址不变。 - **后台界面细节整理**:频道详情弹窗统一了布局,标题栏固定、内容区单独滚动,按钮和输入框尺寸对齐,手机上也能完整显示;切换「我的频道 / 源管理 / 设置 / 关于我们」时页面不再左右跳动,「源管理」「设置」里切二级标签时,从长内容切到短内容页面也不会往上跳;滚动时内容不再从顶栏四周透出来;整体换成浅色薄荷的半透明质感,左上角换成 iFans 字标。 - **「关于」页加 Telegram 社区入口**:重新排版后新增 Telegram 用户交流群(@iFansClubChat)和公告频道(@iFansClub)的入口,README 顶部也加了对应链接。使用问题和心得可以到群里交流,Bug 和功能建议仍欢迎提交 GitHub Issue。 ### v4.28.1 (2026-10-04) 本次为「**修复会员台被登出、8K 不再卡**」版本:修复 v4.28.0 会把央视频账号登出、导致会员频道全部无法播放(**已被登出的需要升级后重新导入一次登录态**);央视频 CCTV8K 开播时先攒够缓冲,不再隔几秒卡一下。升级镜像后重启即生效。 - **修复 v4.28.0 会把央视频账号登出、会员频道无法播放**:v4.28.0 为了让会员频道首次打开快一点,浏览器刚启动时让播放页和账号检查同时打开官网。官网的登录组件每打开一个页面都会检查登录是否快到期,快到期就用刷新令牌换一套新的;两个页面同时换,后换的那个拿着已经作废的旧令牌失败,官网随即把这台服务器上的央视频登录全部清掉,会员频道就报「央视频登录态不存在或已过期」。现在恢复成先确认账号、再打开播放页;切台用的预热页只在账号刚确认过之后准备,也不再定时重开。**已经被登出的需要升级后重新导入一次登录态**(后台「源管理」→ 央视频卡片 → 导入登录态,做法和第一次一样)。切台时用预热页省下的时间不受影响,首次打开回到 v4.27.0 的速度。 - **央视频 CCTV8K 不再几秒卡一下**:8K 台每片只有 2 秒,官方一次只列 3 片(6 秒),而别的台每片 5~7 秒、一开播就有 15 秒左右。服务端约 5 秒更新一次清单,播放器手里这 6 秒撑不过去,所以隔几秒就卡一下,开不开代理都一样。现在这类短分片频道开播时,服务端先连着取几次清单、攒到 14 秒左右再交给播放器,起播会多等 8~9 秒,之后就顺了;只多向官方取四五次清单,其余频道不受影响。本机按真实 8K 录像回放、用 Ceau 的播放核心各播 90 秒:改前 4 轮每轮卡 5~12 次,改后 4 轮都是 0 次。另外说明:8K 台官方这条接口最高只给 1080P,播放器显示 1080p 是正常的。 ### v4.28.0 (2026-10-03) 本次为「**央视频会员台切台更快、少招官方限流**」版本:会员频道提前备好官网页面,切台少等几秒;公开频道收紧了向官方取票的节奏,播放器扫台、版权停播时的反复重试不再把服务器出口打进限流(issue #162、#158)。另外后台管理页换了一套薄荷绿配色。升级镜像后重启即生效,配置与订阅无需改动。 - **央视频会员频道打开、切台更快**:会员频道要靠后台浏览器打开官网页面来解扰。以前每开一个台都要现开一个官网页面,等频道列表加载完再点台,官网还要首次加载自己的播放器,这几步在 NAS 上要好几秒。现在看会员台期间,后台会提前备好一个已经加载完的官网页面(挡住官网默认台的视频,不下载、不解码),切到别的会员台时直接拿它点台;浏览器刚启动时,播放页也和账号检查同时加载,不再排队。本机用官网公开频道实测,切台时「点台到出第一片」从约 2.5 秒降到 1 秒左右;NAS 开页面更慢,省下的会更多。起播前凑够 18 秒缓冲的规则没变,播放稳定性和以前一样,切台总时间仍会随这段等待在几秒内波动。备用页随后台浏览器在停播 3 分钟后一起关掉,不常驻。 - **央视频公开频道收回会放大限流风险的两处上游请求**:v4.27.0 的共享刷新一有过清单就启动、停播后还跑 15 秒,播放器「刷新预览图 / 检测可用性」把频道扫一遍时,服务端对官方的请求随之翻倍。现在只有同一频道短时间内来了第二次请求(确实有播放器在轮询)才启动共享刷新,单次请求不留后台尾巴。同时去掉 v4.27.0 加的服务端分片探测:官方 CDN 对同一票据地址的重复请求大面积 403,这一枪既代表不了播放器出口的结果,在服务端与播放器同出口的家庭部署里还会吃掉播放器取这一片的机会。正常观看不受影响。 - **央视频公开频道增加实例级取票预算(issue #162)**:整台实例每分钟最多为 20 个没在播的频道向官方取票,超出的新频道请求本地回「疑似播放器批量探测,已暂停新频道取票」,不再打官方,约一分钟内自动恢复;正在播放的频道续播换票不计预算、不受影响。现有按客户端的批量探测防护只拦得住一台播放器连扫,官方限的却是服务器的出口 IP,几台设备各扫几个、或两秒一台的慢扫加起来照样会把出口打进限流,此后换新票也全部 403(issue #162 的现象)。多人共用一台时,有人扫台的那一分钟里其他人换新台可能被挡几十秒,日志里会有一行黄字写明是哪个客户端触发的。 - **央视频版权停播的台不再反复向官方请求(issue #158)**:官方回「应版权方要求,暂停提供直播信号」后,这个台在当前节目结束前(最多 5 分钟;查不到节目单时 3 分钟)直接在本地回同一句话,不再每次都去官方取票。以前播放器失败后约每秒重试一次、每次都向官方取票,几分钟就能取几百张,可能招来官方对整台服务器的限制。节目换了或到点后会重新向官方确认;开始冷却时日志里打一行黄字,写明当前节目和到几点。 - **后台管理页换成薄荷绿浅色配色**:主色由蓝紫改为墨绿,页面背景、卡片、按钮和订阅地址栏随之统一;标签页、标题和按钮前的表情图标去掉了,只留文字。布局、按钮位置和功能都没变。 ### v4.27.0 (2026-10-02) 本次为「**央视频断流不再卡死**」版本:官方清单入口偶尔卡住十来秒时,APTV 等播放器不再停在原地要手动切台,会自己续上(issue #158);公开频道的清单同时加厚到约 30 秒,给播放器更多缓冲余量。另修复咪咕含电视端权益的账号拿不到「超清4K (投屏专享)」(issue #117)。升级镜像后重启即生效;Ceau 的直播延迟调整需要同时更新 Ceau。 - **央视频官方入口短暂卡住时,播放器不再停死(issue #158)**:官方的清单入口偶尔会卡住十来秒不回应。以前这一下服务端要陪着等近十秒再回一段失败说明,APTV 这类播放器会停在原地(黑屏或没有声音),要手动切台才恢复。现在三四秒内先把上一份清单回给播放器,官方恢复后把中间跳过的分片接回去,播放器停几秒后自己续上。那十来秒官方确实没有新内容,仍会卡一下;连续半分钟以上取不到时仍会失败。日志里会多出带「[央视频]」的黄字,写明先回了上一份清单、隔了多久恢复。 - **央视频公开频道增加直播缓冲余量**:正在观看的频道共享约 5 秒一次的清单刷新,避免慢播放器漏片和多客户端重复请求,停播后停止刷新。保留真正从官方清单见过的分片及准确时长,逐步积累到至少 6 片、约 30 秒,最多 10 片,并按官方 CDN 留存范围剪掉旧片。冷启动先正常起播;断流恢复仍保留已有的旧清单兜底和跳片补接。视频继续由播放器直连 CDN,不转码。已有客户端不会因为清单变长就立即获得 30 秒缓冲,首次起播和长时间断流仍需实机验证。 - **央视频选线检查视频分片**:每频道、每 CDN 最多一分钟读取一次分片开头的 TS 包,可切换到分片探测通过的备用线路。NAS 与播放器的出口可能不同,因此服务端分片探测全部失败时仍保留有效清单,避免误判频道不可播;探测失败原因进入日志。 - **Ceau 配套播放调整**:Ceau 的央视频公开频道中继地址默认采用 30 秒 VLC 直播延迟,并支持订阅的 `adaptive-livedelay` 参数覆盖;需要更新 Ceau 才生效。其他来源和央视频会员解扰桥不套用此默认值。 - **咪咕含电视端权益的账号补要「超清4K (投屏专享)」(issue #117)**:这类账号取 4K 时咪咕的回应里可能不带大屏档位表,v4.16.0 加的「再要一次投屏档」因此没有触发。现在拿到的是原画或 4K 而没有大屏档位表时,会直接按投屏档再要一次;咪咕不给或只给试看就沿用原来的流,日志里写明咪咕列了哪些档、这一档给没给。普通频道和不含电视端权益的账号不受影响 ### v4.26.0 (2026-10-02) 本次为「**后台加频道搜索、分组置顶置底**」版本:后台「我的频道」页可以按名字搜索某个频道在哪个分组,调整分组顺序多了「置顶」「置底」(issue #159)。只改了后台页面,频道和播放不受影响;升级镜像后重启即生效,配置与订阅无需改动。 - **后台「我的频道」页可以按名字搜索频道(issue #159)**:分组多了以后,想知道某个台在哪个分组,只能一个个分组点开找。现在左侧「频道分组」标题下面多了一个搜索框,输入频道名,中间就列出所有分组里名字对得上的频道,每条后面标着它所在的分组;点一条会跳到那个分组,并把这个频道高亮出来。不分大小写,也不用管空格和连字符,输「cctv 5」「CCTV-5」都能搜到「CCTV5体育」。已隐藏的频道也搜得到,标着「已隐藏」,点了会跳到右侧「已隐藏」里对应的位置;按名字屏蔽掉的频道不在其中。搜索结果只用来查找和跳转,隐藏、改名、排序仍在分组里操作。点任意分组、点搜索框右侧的 ×、按 Esc 或点「退出搜索」都能回到分组视图。搜索框占了一行分组的位置 - **后台「我的频道」页的分组可以直接置顶、置底(issue #159)**:调整分组顺序以前只有「上移」「下移」,一次挪一位,分组多的时候把靠后的分组挪到最前面要点几十下。现在旁边多了「置顶」「置底」两个按钮,一下到位;「公告」分组固定在第一位,置顶是排到它后面。挪完后左侧列表会自动滚到这个分组,不用再去找。顺带修了一处小问题:排在「公告」后面第一位的分组以前还能再点一次「上移」,界面上会跑到「公告」前面,刷新后又弹回去,现在这时「上移」「置顶」都是灰的。窗口比较窄时这一排按钮一行放不下,会整齐地换成两行 ### v4.25.0 (2026-09-30) 本次为「**福建加莆田、宁德、德化**」版本:「福建」分组新增莆田 3 台、宁德 2 台和德化电视台;四川、内蒙古、西藏的省级频道台名带上省名(issue #157);修复挂载数据目录后重建容器,央视频提示找不到 Chrome(issue #153)。升级镜像后重启即生效;四川、内蒙古、西藏改名的 12 个台之前单独做过的频道设置需要重新设一次,其余配置与订阅无需改动。 - **新增莆田 3 个台(网友推荐)**:莆田新闻综合(1080p)、莆田文旅生活(原公共频道)、仙游电视台(720p),新模块「莆田」默认开启、无需配置,归入「福建」。地址取自莆田广播电视台「莆田TV」App 与官网共用的频道接口,带约 2 小时 45 分的官方签名,播放时由本机取签名并中继清单,视频分片仍由播放器直连官方 CDN,看多久都不会因签名过期断流。节目单取自莆田TV 官方接口(今明两天),仙游官方只有占位、暂时没有;台标收进了内置台标库。文旅生活播电视剧这类没有网络版权的节目时,官方会换成「因版权问题暂时无法观看」的画面,属于正常。「福建」模块里原本也有一路莆田新闻综合,来自海博 TV,海博恢复后播放器里会看到同一频道的两条线路 - **新增宁德 2 个台(网友推荐)**:宁德新闻综合、宁德文化旅游,均为 1080p,新模块「宁德」默认开启、无需配置,归入「福建」。每轮刷新向宁德台官方直播接口要一次地址,固定地址、不带签名,播放器直连官方 CDN;台标用接口里的官方频道图。宁德台的直播只对国内开放,海外部署播不了;官方节目单只有占位,暂时没有。和莆田一样,海博 TV 恢复后宁德新闻综合会多出一条线路 - **「福建」分组新增德化电视台**:泉州下辖德化县融媒体中心的电视频道,放在精选频道里,开着精选频道的部署最迟 6 小时内自动出现,不用升级镜像。地址是官网「瓷都德化新闻网」在线直播页用的固定 HLS,不带签名,播放器直连官方 CDN,1080p。官网没有节目单,暂时没有;台标用德化县融媒体中心的站标,收进了内置台标库,随本版镜像提供 - **四川、内蒙古、西藏的省级频道台名带上省名(issue #157)**:官网只写「新闻频道」「少儿频道」「影视文化」这类通用名,播放列表里看不出是哪个省的台(内蒙古的少儿频道还会复制进「少儿」分组),自己加的外部节目单和播放器按名字对节目单、台标也对不上。现在按其他省的写法改成:四川新闻、四川经济、四川文化旅游、四川影视文艺、四川妇女儿童;内蒙古新闻综合、内蒙古经济生活、内蒙古少儿、内蒙古文体娱乐、内蒙古农牧;西藏藏语卫视、西藏影视文化。四川卫视、四川乡村、康巴卫视和内蒙古 12 个盟市台不变。这 12 个台之前单独做过的隐藏、改名、移组和排序需要重新设一次;按名字屏蔽的规则如果写的是旧名全称,也要改成新名 - **修复:挂载数据目录后重建容器,央视频提示找不到 Chrome(issue #153)**:央视频的登录态保存在数据目录下的浏览器配置里,Chromium 运行时会在里面放几个锁文件。以前停容器时浏览器被直接结束,锁留在原处;拉新镜像或在 NAS 上「更新 / 重建」容器后,Chromium 认为这份配置还被别的机器占着、拒绝启动,后台报「找不到可用的 Chrome/Chromium」,只能不挂载数据目录、每次重启都重新导入 Cookie。现在启动前先检查锁,确认不是本机正在运行的浏览器就清掉;停容器时也会正常关闭浏览器,锁随之删除,最近的 Cookie 一并写回。之前按 issue 里的办法在 compose 加了清理锁命令的,升级后可以去掉。配置目录确实被另一个浏览器占用或没有写权限时,会直接报明原因 - **修复:后台手动抓取自定义源后,频道要等下次定时更新才出现**:在源管理里新加抓取模式的自定义源、点「抓取」,提示抓取成功,但频道管理和播放列表里看不到这个频道,要等下一轮定时更新或重启才出来。现在抓取成功后立即重新生成播放列表,频道马上出现。排在第一位的自定义源点「抓取」时,以前会把全部源重抓一遍,现在只抓这一个 - **精选频道去掉「东方卫视4K」**:这条其实是看东方 App 的轮播频道,放的是 8 月录好的节目(画面里还带着当时的暴雨预警),不是直播,最高也只有 1080p。东方卫视直播照常由「上海」模块提供。开着精选频道的部署最迟 6 小时内自动去掉,不用升级镜像 - **后台「我的频道」页的分组栏加高**:分组多了以后,左侧分组列表一屏只看得到八九个,还得先把整页往下滚一截。现在分组栏从页面顶部一直通到底,标题和订阅地址合成一张卡、挪到右侧频道列表上方,分组行也收紧了一些:1600×900 的窗口一屏能看到 17 个分组(原来 9 个),1280×800 能看到 14 个(原来 8 个),整页正好一屏。订阅地址一行放不下时,订阅、节目单、公网三组整组换行,不会把某个「复制」按钮单独挤到下一行;「点频道名看详情」的提示挪到了「配对状态」那一行 - **日志里能看到播放器拉中继清单的节奏(issue #142)**:央视频公开频道这类在标准订阅里由本机中继清单的频道,以前日志里不留痕迹,播放器加载慢或卡顿时看不出是哪台设备在播、多久刷新一次清单。现在每个频道、每个播放设备每分钟记一行「清单直出」,写明这段时间拉了几次清单、大约几秒一次,以及刚下发的清单有几片、目标时长和总时长,附带设备 IP 和 UA,排查卡顿时贴这几行就够 ### v4.24.0 (2026-09-29) 本次为「**江苏加苏州、无锡、扬州,新增抖音直播**」版本:「江苏」分组新增苏州 6 台、无锡 5 台、扬州 4 台(issue #149);新增抖音直播模块,默认从「聊天」「生活」两个分类挑 20 个正在直播的房间;四川模块在官网不认 Token 时后台直接提示(issue #150)。升级镜像后重启即生效,现有配置与订阅无需改动。 - **「江苏」分组新增苏州 6 个台(issue #149)**:苏州新闻综合、社会经济、文化生活、电影娱乐、生活资讯,以及苏州4K(官方名「SBS影像长廊」,台里自制纪录片轮播)。地址是苏州广电「看苏州」App 用的固定直播地址,不带签名,播放器直连官方 CDN;新闻综合、社会经济 1080p,另外三个 720p,苏州4K 为 3840×2160。这批频道放在精选频道里,开着精选频道的部署最迟 6 小时内自动出现,不用升级镜像;台标收进了内置台标库,随本版镜像提供。苏州台没有官方节目单接口,暂时没有节目单 - **新增无锡 5 个台(issue #149,网友推荐)**:无锡新闻综合、娱乐、都市资讯、生活、经济,新模块「无锡」默认开启、无需配置,归入「江苏」。地址取自无锡广电「无锡博报」App 的直播分享页,带约 2 小时的官方签名,播放时由本机取签名并中继清单,视频分片仍由播放器直连官方 CDN,看多久都不会因签名过期断流;新闻综合 1080i(约 3M),其余四个 720p(约 1.6M)。节目单取自无锡博报官方接口(今明两天),台标用 App 里的官方频道图。分享页只对国内开放,海外部署的这 5 个台会取流失败。无锡官网「太湖明珠」那一路要求带来源头,只能全代理,没接 - **新增扬州 4 个台(issue #149,网友推荐)**:扬州新闻(1080p)、扬州民生,以及江都、邗江两个区台(720p),新模块「扬州」默认开启、无需配置,归入「江苏」。地址是扬州市新闻传媒中心「扬州发布」App 直播用的 HLS,固定地址、播放器直连官方 CDN;节目单取自扬州发布官方接口(今明两天)。台标是 App 里的官方频道标,原图透明底黑字,深色界面看不清,内置台标库里铺了白底。扬州生活频道官方已停播,没收 - **新增抖音直播**:新模块「抖音直播」默认开启、无需登录,频道归入新的「抖音」分组,排在「B站」之后。默认从抖音网页版「聊天」「生活」两个分类里轮流挑 20 个正在直播的房间,每 30 分钟重新挑一次;源管理里可以改选分类(抖音网页版一共 8 个:聊天、音乐、游戏、二次元、舞蹈、文化、生活、运动)、改数量(填 0 只用手填房间),也可以改成抖音网页「全部」页的原始顺序(首批约 15 个,不是 App 登录后的个性化推荐)。想固定看某个主播,把直播间地址或 `live.douyin.com/` 后面的房间号填进「手动房间」,排在自动频道之前,没开播时跳过。播放地址在播放时现取;默认 FLV,由本机转发、不转码,抖音偶尔拿不到某个房间的 FLV 地址时自动改用 HLS,不再跳过这个房间;也可整体切到 HLS,由本机刷新清单、视频分片由播放器直连官方 CDN。画质默认超清,多数直播间是竖屏(超清约 720×1280),电视上两边会留黑边。直播间没有节目单,也没有回看 - **四川:官网不认 Token 时后台直接提示(issue #150)**:四川官网只在播放电视频道时才检查登录,Token 过期、被别处登录顶掉或复制错了,以前后台照样显示「已配置 Token」,要到播放时才报错。现在每次刷新会拿 Token 试换一次播放签名,官网不认时模块状态里出现警告、徽标变成「Token 已失效(请重新获取)」,频道列表照常保留;播放失败的提示也从只说「登录已过期」改成「官网不认当前 Token」。后台获取说明里加了一步:先确认官网里电视频道能正常播放,再复制 Token ### v4.23.0 (2026-09-29) 本次为「**福建加泉州新闻综合、晋江、石狮**」版本:「福建」分组新增泉州新闻综合、晋江电视台、石狮新闻综合三个频道,都直接取自各台官网;泉州两个频道多了一条取流入口,更少遇到「官网要求人机验证」。升级镜像后重启即生效,现有配置与订阅无需改动。 - **新增泉州新闻综合**:直接从泉州广播电视台官网取流,和泉州闽南语同一套做法:播放时向官网换取短期签名地址,清单与分片由本机转发;节目单取自官网播放页(只到今天),台标是官网首页的频道卡。「福建」模块里原本也有一路泉州新闻综合,来自海博 TV,但海博的频道接口现在一律返回 403,福建九个地市台都出不来,这一路先补上;以后海博恢复了,播放器里会看到同一频道的两条线路 - **泉州两个频道多一条取流入口,更少遇到「官网要求人机验证」**:以前只有官网的两个签名接口,两个都被防火墙要求拖滑块时只能等冷却。现在多了一条:官网另一个域名的播放页里直接带着签好名的地址,两个接口都被拦时从这里取;上次从哪个入口取到,下次就先用哪个,被拦的入口不再每次都去碰。三个入口其实是同一个网站、各挂一套防火墙,只是多一条路,不能保证不被拦;三条都被拦时照旧暂停 5~30 分钟再试 - **新增晋江电视台、石狮新闻综合(网友推荐)**:泉州下辖两个县级市的电视台,新模块「晋江、石狮」默认开启、无需配置,归入「福建」。地址是两台融媒体中心官网直播用的固定 HLS,不带签名,播放器直连官方 CDN;晋江 720p,石狮 1080p。石狮的节目单取自官网直播页(今明两天);晋江官网的节目单目前只有「精彩节目」占位,暂时没有,官方排了会自动出来。台标:晋江用官方频道图;石狮官方没有频道台标,用石狮市融媒体中心的狮子标 - **内置台标库补上上视东方影视**:上一版加回的咪咕上视东方影视漏收进内置台标库,这次补上 ### v4.22.0 (2026-09-28) 本次为「**上海台加备用源、外部节目单认别名**」版本:「上海」分组加上咪咕的上海新闻综合、第一财经作备用源,并加回上视东方影视(issue #146);在频道详情里设的别名,外部节目单配对时也认了(issue #144);后台可以一键添加「来源于网络」列表。升级镜像后重启即生效,现有配置与订阅无需改动。 - **「上海」分组加咪咕备用源,加回上视东方影视(issue #146)**:看看新闻官网对没有网络版权的节目(主要是电视剧)会暂停网络直播,这段时间上海新闻综合、第一财经播放报错,节目结束后才恢复;9 月 28 日实测新闻综合 30 个时段里有 13 个放不了,包括晚间黄金档。咪咕同一时段照常有画面,现在把咪咕的这两台放进「上海」分组、排在官方之后:APTV 等播放器会把同名频道合并成「源1 / 源2」,官方仍是源1,被暂停时切到源2 即可。节目单继续用看看新闻官方的。9 月 6 日因取不到流下线的上视东方影视复测能播,一并加回「上海」,节目单用咪咕的。上海都市、五星体育、新纪实、哈哈炫动咪咕没有,遇到暂停只能等节目结束。 - **频道别名对外部节目单生效(issue #144)**:在「频道详情」给频道设别名后,播放列表里的频道 id 会换成别名,但外部节目单配对时还在用原名,所以配不上。例如把 `NHK総合(東京)` 的别名设成 `NHK東京・総合`,外部源里 `NHK東京・総合` 的节目单一直不出来。现在按别名配对;咪咕或模块官方已经提供节目单的频道不受影响。升级后到「设置 → EPG 聚合」点一次「立即刷新并应用」就能配上;以后保存别名时,如果这个频道的节目单来自外部源,也会提示你刷新。 - **后台一键添加「来源于网络」列表**:以前精选列表里的港澳台、新马、影视等网络第三方频道,现在放在仓库 from-the-web 目录里,之前只有「公告」里的教程视频介绍,视频里的地址没法复制。现在「🌐 源管理 → 👤 自定义源」多了一张「🌏 添加「来源于网络」列表」卡片,点一下自动填好订阅名称和地址,再点「📥 导入并保存」即可;已经加过就不再显示这张卡片。从「+ 添加自定义源 → 订阅模式」进去的,地址框下也能一键填入。这些是第三方转发源,国内直连大多播不了,表单里会写明。「公告」里的教程视频也改成了这个流程。 ### v4.21.1 (2026-09-27) 本次为「**央视频改作备用源**」版本:默认分组顺序把「央视频」挪到咪咕的「央视」「卫视」之后,播放器合并同名频道时先走起播更快的咪咕,央视频作备用。升级镜像后重启即生效,现有配置与订阅无需改动。 - **央视频默认排到央视、卫视之后**:央视频官方线路起播慢、偶尔卡,同台的咪咕更快。APTV 等播放器会把同名频道合并成「源1 / 源2」,排在前面的分组就是默认源;现在默认顺序是 央视 → 卫视 → 央视频,央视和卫视都先走咪咕,想看央视频的 1080p 可以在播放器里切到另一个源。在后台拖动过分组顺序的配置档保持你自己的顺序;想换成新的默认顺序,在「我的频道」里把「央视频」拖到「卫视」下面,或者用重置功能只勾「分组排序」。 ### v4.21.0 (2026-09-27) 本次为「**VLC 内核播放器看央视频公开频道更顺**」版本:修复 Ceau Player、VLC 等 VLC 内核的播放器播央视频公开频道时,开头几分钟偶尔卡一两秒;央视频官方入口偶尔没响应时,更快切到备用线路。升级镜像后重启即生效,现有配置与订阅无需改动。 - **修复 VLC 内核播放器播央视频公开频道偶尔卡一下**:Ceau Player、VLC 这类用 VLC 内核的播放器播直播时不读清单里的最后一片,要等下一次刷新清单才继续;央视频一片 5~9 秒,碰上连续几段长片,手里的余量就不够,开头几分钟会卡一两秒,偶尔更久。v4.19.0 修的是会员频道,这次公开频道也给这类播放器单独下发一份清单:每片后面垫一小段空白,最新一片不再被扣着不放,刷新间隔最长 5 秒。用同一段录制在本机反复回放,原来 9 轮里 6 轮卡、最长 5 秒,现在 25 轮里 4 次、多数不到 1 秒;长片期间仍可能轻微顿一下。其他播放器收到的清单不变。 - **央视频官方入口没响应时更快切备用**:取频道清单时官方入口偶尔会挂住不回应,以前要等满 10 秒才换备用线路,画面跟着停 10 秒;现在等 3 秒就换。正常情况下 1 秒内就能取到,不受影响。 ### v4.20.0 (2026-09-27) 本次为「**央视频频道不再十几秒一卡**」版本:修复 APTV 等苹果系播放器、网页类播放器播央视频频道每隔十几秒卡一下、几次之后停播(issue #142、#143);泉州闽南语频道大幅减少对官网的请求,不容易再被要求人机验证。升级镜像后重启即生效,现有配置与订阅无需改动。 - **修复央视频频道在部分播放器上十几秒一卡(issue #142、#143)**:央视频官方 CDN 每次刷新清单都可能换一台服务器,同一段画面的地址跟着变。APTV、Apple TV / iPhone 上的播放器(苹果系统自带的播放内核)以及用 hls.js 的网页类播放器对这种变化处理得比较严格:发现地址变了就不再接受新清单,放完已缓冲的十几秒就卡住,反复几次后整条停播。上个版本只放宽了后台自带的网页播放器,这次改在服务端处理:同一段画面始终下发第一次给出的地址,这些播放器也能连续播放,实测同一频道连播 4 分钟不再卡顿。不做这项检查的播放器原本就能正常播,这次没有变化。 - **泉州闽南语频道减少被官网要求人机验证**:泉州台官网的签名接口有防火墙,同一出口请求太频繁就改成要求拖滑块,频道报「官网要求人机验证」,同一出口的其他设备也会被一起拦住。旧版播放器每刷新一次清单就去签一次名,一个人看就是几秒一次。现在签到的地址所有观众共用、快到期才重签,官网拒绝旧地址时立刻重签;万一被拦,就依次停 5、10、20、30 分钟再试,期间不再请求官网,播放器会看到什么时候重试的提示。 ### v4.19.0 (2026-09-26) 本次为「**央视频会员频道起播不卡**」版本:修复 Ceau Player、VLC 等 VLC 内核的播放器打开央视频会员频道后几秒就卡一下、卡一两次才顺;会员频道起播前多攒一点、切回不用重新起桥;修复后台网页播放器播央视频频道十几秒就停(issue #142),取不到地址时直接显示原因;用户管理在没设访问密码时给出提醒。升级镜像后重启即生效,现有配置与订阅无需改动。 - **修复 VLC 内核播放器打开会员频道几秒就卡**:Ceau Player、VLC 这类用 VLC 内核的播放器,播直播时不读清单里的最后一片、要等下一次刷新清单才继续,而且只在离直播边缘约 15 秒的位置起播;会员频道一片 5~9 秒,它手里常常只剩几秒,官网偶尔 9 秒才出一片就会卡,每卡一次它自己把缓冲加大一点,所以表现为开播几秒卡、卡一两次后正常。现在服务端认出这类播放器后给它一份专门的清单:把每片最后半秒单独列出来(它压着不用的只剩这半秒)、每秒刷新一次、起播点往回退到约 25 秒前。用 Ceau Player 自带的同一份播放内核实测,两个会员台同时冷启动各播 3 分钟不再卡(之前同样测法每次卡 3~4 次),中途加入 0.5 秒起播。APTV、系统播放器等拿到的清单与分片不变 - **会员频道起播更稳、切回更快**:以前官网播放器解出第一片就交给播放器,打开后常是播一段等一段;现在先攒够约 18 秒(至少三片)再交出去,并在拿到第一片时就催官网播放器去取后面的分片。冷启动大约 7~10 秒出画面(视网络和机器而定)。停播后页面保留 3 分钟(原来 45 秒),换台后切回来不用重新起桥、基本秒开。系统播放器等中途加入时从直播边缘往回约 25 秒起播,缓冲更厚。日志里新增「解扰桥就绪」一行,写明起播各阶段耗时;开 `mdebug=1` 后还会逐条记录播放器请求了哪些清单和分片、官网多久取一次上游清单,方便排查卡顿 - **修复网页播放器播央视频频道十几秒就停(issue #142)**:在后台「在页面里播放」或「新窗口打开」播央视频的频道,十几秒后就停住,下方提示「播放失败:levelParsingError」。央视频每次刷新清单会换一个 CDN 节点,同一段画面的地址跟着变,网页播放器用的播放库(hls.js 1.6 起)把这当成清单出错,只有一个清晰度可换时就直接放弃,放完已缓冲的十几秒就停了。现在网页播放器遇到这种情况只记一条警告、照常往下播,实测同一频道连续播放不再中断。APTV、VLC、电视上的播放器 App 本来就不受影响 - **网页播放器取不到地址时直接显示原因(issue #140)**:频道拿不到播放地址时,后台内嵌播放器和新窗口播放器以前只显示「manifestParsingError (HTTP 200)」或「网络错误」,咪咕版权屏蔽这类情况看起来像网络或海外 IP 问题。现在两处都直接显示服务端给出的原因,例如「节目播出调整…(咪咕版权屏蔽:…)」;其他错误照旧 - **用户管理提醒设访问密码(issue #141)**:没设访问密码时,所有地址都是开放的,去掉令牌的地址照样能拿到默认播放列表、打开后台,一人一源的令牌等于没生效。用户管理面板现在会在这种情况下显示提醒,并给出去系统配置设密码的入口(环境变量设的密码也算)。同时删掉了一个从未生效、界面上也没有的「强制令牌」配置项 ### v4.18.1 (2026-09-26) 本次为「**新疆直播签名修复**」版本:修复新疆模块隔三岔五整天放不出来、报「新疆广电签名脚本没有某天的配置」(PR #137)。升级镜像后重启即生效,现有配置与订阅无需改动。 - **修复新疆频道部分日子整天放不出来(PR #137)**:新疆广电官网每天换一套播放签名,官网脚本里预先排好了两个月的配置,但约四成日子的日期写法和其余日子不一样,旧版认不出来,那一整天新疆分组七路都报「新疆广电链接请求失败:新疆广电签名脚本没有 2026-09-26 的配置」这类错误(9 月 22 日、9 月 26 日至 10 月 2 日等都是)。现在两种写法都能认,官网当前排好的 9 月 1 日至 10 月 30 日全部能取到签名。感谢 @vitter 定位问题 ### v4.18.0 (2026-09-26) 本次为「**节目单跨零点不断档**」版本:咪咕频道(CCTV 各台取自央视网)的节目单改为取今天与明天两天,零点一过不再有一百来个频道同时显示「没有节目单」,央视频分组里同名的 CCTV 频道也随之恢复。升级镜像后重启即生效,现有配置与订阅无需改动。 - **修复零点后咪咕与 CCTV 频道没有节目单**:咪咕频道的节目单(CCTV 各台取自央视网)以前只取当天,而全量更新默认 8 小时一轮、从服务启动时起算,不对齐零点;零点一过到下一轮更新前,这些频道一条正在播的节目都没有,播放器里显示「没有节目单」(CeauPlayer 显示「No listings found for this channel」)。央视频里的 CCTV 频道与咪咕同名(如两边都有的 CCTV2财经),同名频道在播放器里共用一份节目单,按「咪咕 → 模块」的顺序用的是咪咕这份,所以央视频分组里的 CCTV 频道也一起空着,央视频自己取今明两天的节目单没轮上。现在咪咕与央视网两条接口都取今天与明天(2026-09-26 实测 243 个咪咕频道明天的节目都已排好),跨零点那条两天都有的只留一条;明天的取不到不影响今天,今天没发的频道照旧让给模块与外部源。本地零点后实测一轮更新:当时没有节目的频道从 100 个降到 0 个,CCTV2财经有今明两天共 80 条。每轮更新向这两个节目单接口的请求随之翻倍,它们不用登录,与咪咕账号无关。播放器一般会缓存节目单,升级后如果还显示旧的,在播放器里刷新一下节目单 ### v4.17.0 (2026-09-25) 本次为「**官方节目单、自维护台标与新增直播**」版本:节目单改由各台官方接口提供,29 个抓取模块接上了自己频道的官方节目单,不再内置 erw 等第三方 EPG 源;台标改由服务端下载校验后本机提供,并随镜像内置一套自己维护的台标库,不再默认引入公共台标库;新增山西、陕西、天津、西藏、青海、宁夏、嘉兴、梅州、泉州与澳门莲花卫视共 10 个官方直播模块(44 路);四川电视频道恢复、广东纪录片能播;修复自己配的少儿、体育、教育频道被地方官方同名频道顶掉。升级镜像后重启即生效,现有配置与订阅无需改动:老部署里没改过的默认 EPG 源(erw / 51zmt)会被自动删掉,想要更全的节目单可在「设置 → EPG 聚合」自己加 XMLTV 源并勾「优先于官方节目单」,想继续用公共台标库就设 `mexternalLogoBase`;大爱电视、GOOD TV 两个模块下线,精选列表删掉 34 个境外频道与华视高清,宁夏三台移入新的「宁夏」模块(精选列表远程更新,未升级镜像的部署也会跟着变,升级前暂时没有「宁夏」分组)。 - **新增山西官方直播**:山西广电官网直播页的 6 路省级频道(山西卫视、黄河电视台、经济与科技、影视、社会与法治、文体生活)与 10 路地市频道(太原、朔州、忻州、阳泉、吕梁、晋中、长治、晋城、临汾、运城)统一归入「山西」,免登录、零配置、默认开启,可在源管理单独关闭。两条链路取流方式不同:省级频道的地址不带签名,但路径里有一段由官网播放器按「频道码 + 当天日期(上海时区)」算出的键,只认当天——昨天和明天的键实测都回 400,所以不能写进播放列表,改为每次播放请求时按当前时间重算,零点后的第一次轮询就换到新路径。官网 CDN 换键的时刻和本机钟并不严格对齐:实测本机零点过 1.6 秒按新键取清单仍是 400,官网两三秒后才换过来,这一两秒足够让代理层退回 302、把播放器带进 400 后断流(跨零点实播时 ffmpeg 就停在了这里);因此零点前后 5 分钟内由模块自己取清单,先试按本机时间算的键、不通再试相邻那天的键,对真实 CDN 本机快、慢两个方向都能取到当前可用的清单;地市频道播放前向官网签名接口换取带 hwSecret 的地址,清单里每个分片也各带上游签好的签名,实测签名 10 分钟后仍可用,本机 30 秒换一次只为挡住播放器 2 秒一次的清单轮询。两家 CDN 都不看来源头、也不挑播放器标识(ffmpeg、okhttp 裸请求清单与分片均 200),所以走「只中继清单」:本机按轮询重新解析并下发清单,媒体分片由播放器直连官方 CDN,本机不转发媒体,需要时也可用 `?relay=2` 全代理。实测 16 路均为 1280×720、H.264 High / AAC-LC 立体声、25 帧。16 路台标都用官网直播页下发的官方台标。地市几路按官网原名收录为「太原-1」「吕梁-1」这类编号——台标角标上打的就是这个,不另起名。节目单取自官网逐台节目单接口(今天与明天):省级 6 路与太原、晋中、临汾有,另外 7 个地市台官网的节目单文件本身是空的 - **新增陕西官方直播**:陕西网络广播电视台看电视页的 8 路频道(陕西卫视、新闻资讯、都市青春、银龄、秦腔、体育休闲、农林卫视、移动电视)统一归入「陕西」,免登录、零配置、默认开启,可在源管理单独关闭;影视频道官网没有播放地址、乐家购物是购物台,不收。官网播放器从一个加密脚本读频道目录(每次下发的 AES 密钥都不同),地址本身不带签名,但会整批换名:实测上海凌晨 3 点前后 8 路全部换了新名、旧名当即 404,新名十来分钟后才陆续可播(官网自己也播不了),所以不把地址写进播放列表,改为播放时现解目录(5 分钟复用),清单取不到就立刻重读目录换新名。先前探测里「都市青春」「移动电视」超时并非停播:这家 CDN 按完整地址把约一成请求分到卡住的节点、同一地址次次卡(本机 12 秒、大陆各地探针 6 秒多),同一路换个查询参数一两百毫秒就回,模块取清单时带每秒一换的参数,3 秒没回就换个值重试。CDN 不看来源头、不挑播放器标识(ffmpeg、okhttp、空 UA 均 200),走「只中继清单」,媒体分片由播放器直连官方 CDN,需要时也可用 `?relay=2` 全代理。实测 8 路均为 720×404、H.264 Main / AAC-LC 立体声、25 帧,官网只提供这一档。台名沿用咪咕原先的叫法(陕西新闻资讯频道等),咪咕的同台几路随之撤掉(见「咪咕撤掉陕西四路」一条);8 路台标都用频道目录下发的官网频道图标。节目单:官网节目单接口 8 路都有,但只给当天、只有「时:分」,按服务器响应日期认定是哪一天,同一时刻排两条(国歌紧跟新闻联播)的留后一条。夜里新闻资讯、都市青春、银龄、秦腔、体育休闲、移动电视是测试卡(官方节目单里移动电视 0:01–6:00 写的就是「彩图」),属于正常 - **新增天津官方直播**:津云 App 的 7 路电视频道(天津卫视、新闻、文艺、影视、都市、体育、教育)统一归入「天津」,免登录、零配置、默认开启,可在源管理单独关闭。由独立实验台移植,只用纯 Node 实现,不需要安卓模拟器。取流按 App 的 WiseTV 协议:先取 RSA 公钥,把「包名|会话键|频道 ID」经 RSA 与 3DES 两层加密后请求签发接口,再把返回值两层解密得到直播地址;App 应用参数作为默认值内置,平台更换时可用 `TIANJIN_WISE_AK` / `TIANJIN_WISE_SK` / `TIANJIN_WISE_3DES_KEY` 覆盖。这条签发接口不是 App 当前版本实际播放走的路径,平台可能下线,届时 7 路会整体不可用。实测每次签发在腾讯、网宿、百度三家 CDN 间轮换;网宿、百度的入口签发后 10 分钟即失效(腾讯 60 分钟仍可用),但入口换出来的媒体清单不随入口过期(每 3 秒轮询连续 40 分钟不断),所以播放中直接轮询媒体清单、不中途重签,免得换 CDN 造成分片序号与时间戳跳变。网宿的播放会话绑定取清单那一方的播放器标识(换 UA 或多带 Referer 取分片即 403),只中继清单会断,因此清单与分片都经本机全代理。实测 7 路均为 1280×720、H.264 High / AAC-LC、25 帧;经本机代理三家 CDN 各一路连续播放 25 分钟(两轮半签名有效期)不断流、不换 CDN。台标用津云 App 频道卡(带 1~6 序号,七路可区分),由本机托管。节目单取自津云官方接口,取今天与明天:当天是播出日志粒度,明天起是编排计划;编排系统切成三小时一段的同一节目、以及跨零点被切开的节目合回一条,「30’」「2’30”」这类时长批注去掉。央视频里也有天津卫视,两个来源按设计各自保留、互为备份 - **新增西藏官方直播**:西藏广播电视台「珠峰云」App 直播页的西藏卫视、藏语卫视、影视文化 3 路统一归入「西藏」,免登录、零配置、默认开启。播放时从 App 与官网共用的频道接口取当前地址:只有清单带签名(签发一小时后实测仍有效),分片不带签名,CDN 也不看来源头和播放器标识,所以只中继清单,媒体分片由播放器直连官方 CDN,需要时可用 `?relay=2` 全代理。频道表五分钟复用一次,清单万一被拒就立即重取再试。实测 3 路均为 1920×1080、H.264 Main / AAC-LC、25 帧,西藏卫视经本机中继连续拉流 40 分钟不断。台标用 App 频道卡片上的官方图标;官方没有节目单(接口只给每台「正在播出」一条),西藏卫视与央视频同名,开着央视频时共用其节目单。影视文化凌晨是测试卡,白天正常播出 - **新增青海官方直播(安多卫视)**:青海藏语网络广播电视台官网的安多卫视归入「青海」,免登录、零配置、默认开启。播放时向官网频道接口换取带签名的地址(标称两小时,实测过期后十几分钟仍可用),本机半小时换一次,接口故障时沿用上次的地址;清单里每个分片各自带签名,换签名不影响播放。CDN 不看来源头与播放器标识,走「只中继清单」,也可用 `?relay=2` 全代理。实测 1920×1080、H.264 / AAC-LC、25 帧,跨签名更换连续拉流 40 分钟不断。台标用官方频道接口下发的图标。官网、接口与 CDN 只对大陆网络开放。官网节目单接口对任何日期都只回整点「精彩节目」占位,暂无节目单。青海卫视已由央视频模块收录;经济生活、都市目前没有找到官网的取流入口 - **宁夏三台改由独立模块提供,并接入官方节目单**:宁夏卫视、宁夏公共、宁夏文旅原先写在精选列表 `IPTV.m3u` 里,现在改由新的「宁夏」模块提供,归入「宁夏」,免登录、零配置、默认开启,可在源管理单独关闭。取流不变:仍是黄河云公开的固定官方入口,上游不校验来源也不挑播放器标识,播放器直连官方 CDN,本机不转发媒体。新增的是节目单:宁夏公共、宁夏文旅今天的节目取自黄河云官方接口(各约 22、29 档),官方只发当天的,零点后要等下一轮更新;宁夏卫视咪咕本来就有节目单,按「咪咕 → 模块」的顺序照旧用咪咕的,关掉咪咕时才改用黄河云。台标沿用内置库里已有的三张(官方接口给的频道图是带背景的宣传图,不用)。精选列表里的这三条同时删掉;精选列表由各实例直接从仓库拉取,还没升级镜像的部署在升级前暂时没有「宁夏」分组。由独立实验台移植,宁夏经济、宁夏少儿两路实验台核对过只循环测试卡,不收 - **新增嘉兴官方直播**:嘉兴在线「看电视」页的嘉兴新闻综合、文化影视、公共频道 3 路归入「浙江」,免登录、零配置、默认开启,可在源管理单独关闭。三路都挂在趣看云直播上:播放时按频道向趣看的公开播放接口换取带签名的 HLS(签名算法与网页播放器一致),每次播放都取新签名、并当场检查实时清单,清单与分片都限定在该频道自己的官方域名和路径,不是本频道的一律拒绝。本机只中继清单,媒体分片由播放器直连上游 CDN,需要时可用 `?relay=2` 全代理。官方频道卡在站点打包资源里、文件名带哈希不能写死,三张已按名收进内置台标库。由独立实验台移植,2026-09-25 在上海联通出口实测三路清单与分片均可直连 - **新增澳门莲花卫视官网直播,归入「澳门」分组**:莲花卫视官网直播页的一路电视直播,免登录、零配置、默认开启。官网播放器里写的是带 `auth_key` 的签名入口,会不定期更换:本机读官网拿当前入口并缓存五分钟,每次播放都检查实时清单,清单被拒就立即重读官网、不等缓存到期;官网页面里还留着一条注释掉的旧线路,解析时只认正在用的那一条。服务端只中继清单,带独立签名的媒体分片由播放器直连上游 CDN,也可用 `?relay=2` 全代理;签名不写进日志、频道目录和错误信息。台标用官网的,节目单取官网「節目單」页(一页一周、繁体照原样)。实验台在海外出口验证可播,作者在大陆网络实测也能正常播放 - **新增梅州官方直播(客家生活)**:梅州市广播电视台「客家生活」频道归入「广东」,免登录、零配置、默认开启。地址在梅州台自有域名下、固定且不带签名,播放器直连上游 CDN,本机一个字节的媒体都不转发;台方以后换地址只需改频道表。官方站点和 App 壳里都没有台标,内置台标库按名收了一张公开台标库的图兜底。由独立实验台移植,2026-09-25 在上海联通出口实测清单与分片均可直连 - **新增泉州官方直播(闽南语频道)**:泉州广播电视台官网的闽南语频道归入「福建」,免登录、零配置、默认开启。播放时向官网公开接口换取短期签名的 HLS,主入口触发官网的人机验证时自动改走备用入口,两个入口都被拦就明确报失败、不复用过期地址;上游 CDN 会拒绝部分播放器标识(curl、Lavf 一类),清单与分片由本机以浏览器标识全代理,并只放行闽南语频道自己的清单与 TS 路径。台标取官网首页的频道卡,节目单取官网播放页下方的节目表(只到今天)。由独立实验台移植,2026-09-25 在上海联通出口实测签名接口、清单与分片均可直连 - **节目单改为优先用各模块自己的官方节目单,第一个接入央视频**:原默认 EPG 源 erw 的站长宣布 10 月 1 日起停掉免费下载(XML 只给赞助用户),本项目不再依赖它,改由各抓取模块直接从官方接口取自己频道的节目单。顺序为「咪咕自带 → 模块官方节目单 → 外部 EPG 源」,前面给了的频道后面不再覆盖(自己加的外部源可以勾选优先于官方,见「外部 EPG 源可以设为「优先于官方节目单」」一条)。央视频模块按频道表里的 livePid 取官网节目单(对象存储上按日一份的静态文件,无需登录与签名,与 CNTV 官方节目单逐条一致),每轮取今天与明天两天;实测为咪咕没覆盖的 31 个频道补上了节目单(山西卫视、天津卫视、CCTV16 奥林匹克、CCTV4K、CGTN 纪录等)。国学频道官方没有节目单文件,由河南模块的同名频道补上。节目单代码与取流代码分开,放在各模块的 `epg.js`,只用注入的 fetch、不依赖项目内部模块;配合零依赖的公共件与 `scripts/build-epg.mjs`(只用模块节目单单独产出一份 XMLTV),以后可以整套拆出去独立维护。各省的接入见「河南、浙江、江苏、广西、海南、山西、上海七省接入官方节目单」「节目单第二轮:再接入 10 个省市与 4 个境外台的官方节目单」两条 - **河南、浙江、江苏、广西、海南、山西、上海七省接入官方节目单**:七个省级模块各自从官网接口取自己频道的节目单,与央视频一样放在模块的 `epg.js`、不依赖项目内部模块。实测一轮完整更新共补上 51 个频道(河南 12、浙江 8、江苏 8、山西 8、上海 5、海南 5、广西 5,同名频道已由咪咕或央视频给过的不重复计),全部频道中有节目单的从移除 erw 后的 109 个(已含央视频补上的 31 个)增至 158 个。各家接口差别很大,按平台特性分别处理:河南、江苏、上海的请求要签名(沿用模块取流时已有的算法),江苏还要先换匿名令牌;河南未来日期返回的是冻结的周模板、浙江未来日期是逐小时的「精彩节目」占位,都按「当天没发」处理;浙江的节目单是播出日志,广告、宣传片、片头片尾等短碎片被剔除;山西官方数据里一天最后一档常被拉长到第二天早上、与次日节目重叠,按下一档开始时间截断;广西只给开始时间与时长。覆盖情况:河南 13 路、浙江 9 路、江苏 10 路、海南 7 路全部有节目单;广西 7 路中 6 路(广西移动官方不展示节目单);山西 16 路中省级 6 路与太原、晋中、临汾有,另外 7 个地市台官网的节目单文件本身就是空的;上海 8 路电视频道中 6 路有(魔都眼、新纪实官方没有),景观机位没有节目单。取的天数随平台而定:广西、山西能给到明天,其余多数只有当天——零点后到下一轮更新前这些频道暂无新一天的节目单。另外修正了一处:同名频道来自不同模块时(央视频与河南的「国学频道」其实是同一个台,央视频没有它的节目单文件),前一个取不到会轮到下一个 - **节目单第二轮:再接入 10 个省市与 4 个境外台的官方节目单**:广东、深圳、河北、大连、南京、湖北、山东、福建(省级、厦门与福州综合 / 生活)、新疆、云南,以及凤凰三台、香港卫视、NHK World、YTN。连同第一轮,模块节目单在一轮完整更新里共补上 142 个频道,全部频道中有节目单的从 158 个增至 219 个(此后陕西、天津、北京、甘肃卫视、延边卫视、宁夏、澳门莲花卫视、泉州又陆续接上),已接近当初靠 erw 时的覆盖,且全部来自各台官方。几处值得一提:广东官网节目单要 WebAssembly 里的签名,实际是标准 HMAC-SHA256,key / secret 取自官网签名模块,不需要浏览器;山东用的是官网直播页真正在用的闪电新闻后端,九路都有;湖北取自长江云 TV(湖北广电 IPTV)遥控页的节目单接口;福州台官网只列自办栏目、中间空档很大,现在没有内置外部源,综合与生活两路照收,少儿一天只有一条不收;NHK World 与 YTN 按 UTC+9 换算,上海的一天对应当地凌晨一点到次日凌晨一点。确认暂时没有可用官方节目单的:湖南(芒果各接口只给 2010→2050 的占位)、内蒙古与吉林(节目单接口只维护广播,电视全空)、甘肃、贵州、重庆、广州、黑龙江、江西、安徽(官网与已知接口里都没有),辽宁北斗只有已播出的回看列表、没有预告;其中甘肃卫视、延边卫视后来改从央视网取到(见「北京、甘肃卫视、延边卫视接入央视网节目单」一条)。另外:直链频道(没有延迟解析 ref 的,如福州、南京)现在按「所属模块 + 频道名」精确对上模块节目单;顺手修了大连取流的一处 SM2 解密缺陷(点坐标前缀被剥两次,每 256 次令牌交换失败一次) - **北京、甘肃卫视、延边卫视接入央视网节目单**:北京时间官网、甘肃台、吉林台自己都没有电视节目单,央视网的节目单接口按代号收着这些台(北京 btv1…btv9、甘肃 gansu、延边 yanbian,都是逐个试出来的),不用登录、不带签名。北京 9 个电视频道里 7 个有了今明两天的节目单(体育休闲央视网连日为空、卡酷少儿没有代号),甘肃卫视、延边卫视各自补上;延边卫视是朝鲜语频道,节目名照官方原样。三个模块共用一个央视网提供者(`utils/cntvEpg.js`),以后再发现央视网收了哪个台,给出「频道 → 代号」表就能接上 - **外部 EPG 源可以设为「优先于官方节目单」**:节目单来源的顺序是咪咕自带 → 各模块官方节目单 → 用户在「设置 → EPG 聚合」自己加的外部源,每个频道只取一家,所以外部源原本只能补官方没有的频道。有的官方节目单只给当天、有的只列自办栏目,用户手里的源可能更全,现在每个外部源多了一个「优先于官方节目单」勾选项:勾上后,这个源当前还有没播完节目的频道改用它,咪咕与模块的官方节目单让出来;多个外部源之间,勾了的排在最前。只认「还有没播完的节目」,是为了源停更、只剩过期缓存时自动让回官方,不会拿旧节目单占着频道。默认不勾,现有配置不受影响。节目单的整套规则与各模块状态记在仓库的 [EPG.md](EPG.md) - **移除内置默认 EPG 源 erw**:erw 站长 10 月 1 日起关掉免费下载(XML 只给赞助用户),本项目不再内置任何外部 EPG 源,节目单默认由咪咕与各模块的官方接口提供。升级后,老部署里没改过的「默认EPG」(地址是 erw 或更早的 51zmt)会被自动删掉,连同它的缓存;改过名或改过地址的、自己加的源一律不动,后台会在停用地址那条上提示。之所以现在就删、不等它自己失效:外部源下载失败后程序会一直沿用最后一份缓存,配对时又不看日期,留着只会给一批频道挂上过期节目单,还会挡住用户自己加的源。此前只靠 erw 补节目单的一批频道(本地实测约 140 个,以各省地方台为主)已由本版各模块的官方节目单补回大半(见上面各条),官方确实没有节目单的少数地方台暂时空着;需要的可在「设置 → EPG 聚合」自己加 XMLTV 源 - **节目单里不再出现「10月1日e域名头关闭…」**:原默认 EPG 源 erw 的站长在 2026-09 把每一条节目的简介都换成了同一句关站通知(「10月1日e域名头关闭,vip域名头不在支持xml下载请大家提前调整」),播放器里点开任何一个由它补的节目,看到的都是这句话。聚合外部节目单时现已把这类站务公告式的简介整条去掉,节目名与时间不动;只匹配这句通知的固定字眼,正常的节目简介不受影响。erw 本身已从内置默认源移除(见「移除内置默认 EPG 源 erw」一条),这里照顾的是自己手动加了 erw 的用户 - **台标改为本机托管**:以前订阅里的台标写的是原始地址,播放器自己去各台图床或公共台标库取;台标库走的 gcore 在大陆 12 个探针里只有 5 个取得到,模块给的官方图也会失效(河南 13 张全是 404),而源自带台标的优先级高于台标库,坏图反倒挡住了库里的好图。现在每轮更新时由服务端把要用的台标下载到数据目录 `logo-cache/`,逐张按文件头确认是图片,订阅里写本机地址,播放器只找你自己的服务器。优先级为本地上传 > 源自带 > 内置台标 > 自己配的台标库,源自带的取不到或不是图片会自动换下一个;还没下载到的沿用原地址(和以前一样),全部确认坏掉才留空。已托管的每周重取一次、重取失败继续用旧图,坏掉的隔天再试,一个月没用到的自动清理;只代取公网地址:地址本身、域名解析结果(连接时再查一次)和每一跳跳转都会检查,落到局域网或本机的不代取、订阅里照原样写原地址(OpenClash 等 fake-ip 模式不受影响);单张超过 2 MB 的不要;第三方的 SVG 台标由本机提供时禁止执行脚本。实测首轮下载 583 张约 25 秒、占用约 50 MB,失效的官方图会自动换成内置台标。下载时不声明 WebP,按请求转码的图床(如内蒙古)给的是原图,老电视盒子也能显示;每次下发新签名地址的图床(内蒙古、吉林)按去掉签名的地址记账,不会每次刷新都重下一遍。可用 `menableLogoCache=false` 关掉 - **默认不再引入公共台标库**:以前没有自带台标的频道会按名字到 taksssss/tv 台标库兜底,这是别人维护的个人仓库,和节目单弃用 erw 同一个道理,现在默认不配,用各频道自己的官方台标(由本机托管),官方没有或取不到的由仓库内置台标兜底(见「内置台标库」一条)。自助的口子不变:想用台标库,设 `mexternalLogoBase` 即可(填 taksssss 的 gcore 地址时索引自动带上);缺台标的频道可以在「我的频道 → 缺台标」逐个上传,本地上传的永远最优先。台标的整套规则见仓库的 [LOGO.md](LOGO.md) - **内置台标库**:仓库新增 `logo-pack/`,是我们自己维护的一套台标(421 张,统一成长边不超过 256px 的 PNG,随镜像发布、服务端本机直接提供)。各模块和咪咕的官方台标都收了一份做备份,官方图床挂了、海外服务器连不上大陆图床时自动顶上;精选频道这类 m3u 本来没写台标的台(凤凰、翡翠台、台湾各台、海外新闻、体育与纪实频道等)也按名字补上了,官方有的用官方图,没有的才用正规平台或公开台标库的图,每张的出处都记在 `logo-pack/index.json`。本地实测电视频道已全部有台标:官方没有频道图标的用所属电视台的台标(广东台经典剧、纪录片、健康,宁夏文旅),北京台除北京卫视外的 8 个频道里 6 路用北京时间官网的官方图标、纪实科教与体育休闲的官方图标还是改版前的旧台名,改用公开台标库里带现名的;只有景观机位、活动直播间按规则留空。别的项目也可以直接引用:`https://gcore.jsdelivr.net/gh/akiralereal/iptv@main/logo-pack/<台标名>.png`。维护方法见 [LOGO.md](LOGO.md) - **各模块改用官方台标**:央视频(官网电视页的频道图标,73 套里 72 套)、内蒙古、吉林、广东、河南、湖北、贵州、江西、黑龙江、海南、云南、福州、南京、湖南长沙两台、YTN / NHK 都换上了官方频道图标或频道卡,河南以前拼错图床导致 13 张全裂也一并修好。四川、重庆两个模块也补上了官方台标 - **修复自己配的频道被地方官方同名频道顶掉(少儿、体育、教育)**:各省官方模块的少儿、体育、教育频道会自动收进对应的内容分组,收的时候组里同名的其它条目会被官方线路顶替。本意是去掉咪咕和精选列表里的重复,但没有区分来源,用户自己加的订阅、本地粘贴、直连里同名的线路也被一并删掉,放在自己起名的分组里(如「IPTV组播」)同样会被删。常见的情况是用本地 IPTV 组播地址导入优漫卡通、金鹰卡通、卡酷少儿这类频道,导入后只剩官方没有的那几个。现在用户自己配的线路一律保留:在少儿、体育、教育组里紧跟在官方线路后面,支持多线路的播放器会显示成线路1(官方)/ 线路2(自己的);在其它分组里原地不动。咪咕和精选列表的重复照旧去掉。升级后以前被吞掉的线路会重新出现,不想要的可以在「我的频道」里单独隐藏 - **四川电视频道恢复**:四川官网 9 月中旬换了播放域名和签名方式,模块把新地址当成非官方地址丢掉,关联了 Token 也只剩几个活动直播间。现在按官网播放器的新做法换签、逐跳加签,9 个电视频道恢复播放,并带上官方台标 - **广东纪录片能播了,广东台各频道播放时服务器更省力**:荔枝网官网把广东纪录片的播放地址换到了另一个域名(`lbplay.grtn.cn`,带 `auth_key` 签名、30 分钟有效),不再是其它 16 路用的触电 `t_token` 地址;本机取票只认后者,每次都等满 20 秒超时,这一路在任何播放器里都播不了,排在它后面的广东台换台也被拖慢。现在两种地址都认,其它域名照旧拒绝;纪录片的地址自带过期时刻,按它换票(离过期 5 分钟后台换,本机时钟最多信 30 分钟),不用像其它频道那样每 45 秒开一次官网页。另外,取票用的无头浏览器此前取到票后一直停在官网页面上播放、解码视频,看广东台期间服务器始终多占一份 CPU;现在取到票就暂停,页面保留、票照样有效。2026-09-25 本地实测:纪录片冷启动 3 秒出清单、两分钟轮询零失败,广东卫视跨过 45 秒换票与 90 秒硬边界零失败,浏览器 CPU 从持续两成多降到平时个位数、只在换票时短暂升高 - **新疆重新收录汉语综艺(XJTV-4)与维吾尔语影视(XJTV-5)**:这两路此前被丝路视听网标记禁播、CDN 回 404,所以没进频道表;复查发现禁播标记其实是按节目打的:电视剧时段多半标着、CDN 同时 404,其余节目清单与分片都能取,实测 1280×720,与新疆卫视一致,节目单也一并接上(每天约 16 条、逐日推进的真实编排)。标着的那档播放时会提示「当前这档节目官网不提供网络直播,换档后自动恢复」;汉语综艺白天的电视剧、维吾尔语影视白天到晚上的大部分时段都是这种情况,能看的时段有限。两台每天约 01:30–08:00 停播,这段画面是 XJTV 测试卡,属正常。新疆模块现为 7 路,频道表版本随之递增,老部署启动时会自动重建缓存。顺带把频道校验改成逐路:以前任何一路缺席或被标禁播都会让整个新疆模块所有频道一起失败,现在只跳过那一路,播放时说明原因 - **央视频:挡住播放器批量探测与失败重试打爆官方接口**:一位网友共享实例的日志(44 个客户端、两天 1487 次「主、备用 CDN 均不可用…403」)显示,央视频公开频道时好时坏不是接口坏了,而是本机出口被官方 CDN 按 IP 限频:不少播放器的「刷新预览图 / 检测源可用性 / 失败自动换台」会在几十秒内把 63 个公开频道逐一 GET 一遍,每台一张票加一两次清单全从本机出口打官方;被限后播放器毫秒级连环重试,每次重试又是六到八个上游请求,把限流越拖越久。现在两层处理:同一频道换票后主备 CDN 仍全部 403,就冷却 30 秒不再向官方请求(依据是回放该日志:同频道相邻两次失败 54% 间隔不到 1 秒,30 秒能挡掉 65% 的上游请求,再长几乎不多挡,只会让恢复后的人白等);同一客户端 10 秒内连续请求 6 个以上不同的央视频频道,判为批量探测,后续请求本地拒绝、一枪不打官方,停止探测 5 秒后自动恢复,探测开始前正在看的频道不受影响;10 个会员频道也在同一本账里,扫描从公开频道扫进会员频道算同一次,被拒时回 429,不再替扫描器用会员账号开浏览器页启动解扰桥,已经在播的会员频道照常给。HEAD 探活此前已本地应答,这次补的是 GET 这一半。多人共用一个出口仍可能被限,那是平台按 IP 限频的结果:控制共享人数,卡的时候切「央视」组里咪咕的同名频道 - **「体育」组里海外台排到最后**:各地官方体育频道(江苏、安徽、辽宁、广东、福建、河北、山东、天津、新疆、五星体育等)并入「体育」组时,以前追加在组尾,排到了精选列表的海外台后面;现在按「抓取模块 → 内置源 → 外部订阅」的既定优先级,插在外部订阅的频道之前。起播慢的 World Poker Tour、Red Bull TV、NHL FAST、UFC 24/7 因此落到「体育」组最后。「少儿」「教育」两组同样按这个顺序,默认没有外部订阅频道,不受影响 - **网页播放器不再依赖外部 CDN**:后台预览和播放器页用的 hls.js、DPlayer 以前从 cdn.jsdelivr.net 现取(大陆探针实测只有五到七成取得到,取不到预览就整个不能用,hls.js 还没锁版本),现在随仓库发布、由你自己的服务器提供(hls.js 1.7.3、DPlayer 1.27.1),按页面的相对路径加载,挂在反向代理子路径下也能用 - **「台湾」分组精简:移除大爱电视、GOOD TV 两个模块,精选列表去掉华视高清**:大爱一台 / 二台、GOODTV / GOODTV2 连同它们的官方节目单一起下线,源管理里不再有「大爱电视」「GOOD TV」这两张卡;精选列表 `IPTV.m3u` 去掉华视高清。「台湾」分组现在是精选列表里的公视、民视、台视、TVBS亚洲与大立电视台。升级后老部署缓存里这两个模块的频道会被忽略,不用手动清理;精选列表由各实例直接从仓库拉取,华视高清在下一轮刷新精选频道后消失 - **精选列表移除 34 个境外频道**:体育组的 FUEL TV、World of Freesports、FloRacing、SportsGrid、ACCDN、Pac-12 Insider、Tennis Channel International、MTRSPT1、Sky Racing 1、Sky Racing 2、Trace Sport Stars、beIN Sports Xtra、FIFA+,文旅组的 History Hit、InTravel、Terra Mater WILD、Court TV、Documentary+,国际组的 NEWS1、France 24 Español,香港组的港台电视31,韩国组的 Arirang,以及娱乐时尚组的 Wipeout Xtra、Graham Norton、Mystery TV、Rai Italia、Rai World Premium、Mediaset Italia、FashionTV Paris L'Original、Global Fashion Channel、Qello Concerts、Totalmusic Concerts、Estrella TV、MovieSphere(娱乐时尚组只留面包台),从 `IPTV.m3u` 的实验台直连区块删除,区块从 50 个减到 16 个。精选列表由各实例直接从仓库拉取,不用升级镜像,下一轮刷新精选频道后生效 - **咪咕撤掉陕西四路**:陕西官方模块已覆盖这几个台,咪咕原先并入「陕西」的银龄、都市青春、秦腔、新闻资讯四路不再输出,免得同一个台在「陕西」组里出现两次。实测游客模式下咪咕这几路是 854×480、码率与官网 720×404 相当,同一路信号,只多一个咪咕水印。咪咕「卫视」组的陕西卫视、中国农林卫视照旧保留(支持回看);「体育」组的陕西体育休闲频道本来就会被陕西模块那路自动替换,咪咕那条只在关掉陕西模块时才出现。给咪咕这几路设过的隐藏、移动、改名不会带到陕西模块的同名频道上,需要的话重新设一次 ### v4.16.0 (2026-09-24) 本次为「**咪咕 4K 投屏档、播放列表与分组修复**」版本:含电视端权益的咪咕账号改按「投屏专享」档取 4K(issue #117),并修复 `menableHDR=false` 对老用户不生效;修复首次部署或咪咕长期不可达时播放列表永远为空(issue #129)、分组改名后移进来的频道留在旧名下(issue #132);GOOD TV 两条官方线路自动择优切换并升到 1080p(issue #130);咪咕版权屏蔽时给出人话提示(issue #131)。升级镜像后重启即生效,现有配置与订阅无需改动;此前在 compose 里设过 `menableHDR=false` 的用户,升级后 HDR 会真正关掉。 - **咪咕 4K:含电视端权益的账号改要「投屏专享」档(issue #117)**:四屏账号按大屏策略请求 4K 已能通过,但咪咕回的「臻享 超高清」仍是手机端约 10 Mbps 的编码;它的大屏档位表里另有一档「超清4K (投屏专享)」(手机 App 投屏功能用的那条流),此前从未请求过,手机编码就成了天花板。现在大屏策略请求成功后,若档位表里列着投屏档就再按它要一次;返回的档位不符、只给试看或没给地址时一律沿用原来的 4K、不降级——咪咕拿不到所请求档位时不是拒绝而是以成功回应给一条低档流或几分钟试看,不能拿它顶掉完整 4K 再缓存 3 小时。日志会把咪咕给的两张档位表原样打出来(含 usageCode、是否需权益、本端可否切换),普通频道不打。三屏会员与游客的取流路径不变。这条路径没有四屏账号可实测,由报告者在下一场 4K 赛事上验证 - **修复 `menableHDR=false` 对老用户不生效(issue #117)**:老「系统配置」页每次保存都会把 `enableHDR: true` 连同其它字段整份写回配置文件,v4.0 把画质参数搬进咪咕模块时它被当成「后台配过的值」搬了过去,而后台配过的值优先于环境变量,HDR 这一项在后台又是隐藏的——于是 compose 里的 `menableHDR=false` 被顶死,界面上也没有任何地方能改回来。现在隐藏配置项以环境变量为准(两个方向都是:compose 示例里的 `menableHDR=true` 同样压过文件里的 false);可见配置项仍是后台保存值优先,不受影响 - **修复首次部署或咪咕长期不可达时播放列表永远为空(issue #129)**:「关键源本轮一个频道都没拿到就保留旧播放列表、不覆盖」的守卫在根本没有旧列表时也拦下了写入。全新部署时内置源和抓取模块已拿到 300+ 频道却一个都不写,「我的频道」是空的、`/interface.m3u` 返回「获取失败」,每轮刷新重复同样结果,永远不会自愈;海外等咪咕永久不可达的部署,旧列表本来就没有咪咕频道,却被整份冻结,之后加订阅、改频道配置都不再生效,短效地址也会过期。现在守卫按每条 EXTINF 自带的 source-ids 检查旧列表里有没有该源的频道:没有(或没有旧列表)就照常写入,该源恢复后下一轮自然补回;老到没有 source-ids 标记的列表按原样保留。实测咪咕不可达时,全新数据目录写出 332 个频道 / 31 个分组并在日志里指明缺的是哪个源,含咪咕频道的旧列表则原样不动 - **修复分组改名后「移进来的频道」留在旧名下(issue #132)**:单个频道的移动记录存的是目标分组显示名,且优先级高于分组改名;旧版改名不改写这些记录,于是移进来的频道留在旧名下撑起一个既不是源分组也不是自定义分组的残留分组,界面却提示「已重命名」。再给残留分组改名会写出一条永远匹配不上的改名键,静默无效,重启也没用。现在改名时同步改写移动目标(只改写不删除,否则被清空的源分组会重新显示、服务端的重名校验也会拒绝改名),识别残留分组并清掉它的无效改名键;一次改名涉及多张表,保存失败时整份配置回滚。已按报告者的配置回放验证。回归测试直接从后台页面抽出改名函数与服务端的配置应用串起来跑,测的是线上真正执行的代码 - **GOOD TV:两条官方线路自动择优切换,并升到 1080p(issue #130)**:站点播放器给大陆观众两条线路(CloudFront 与 Akamai),此前钉死在前一条。两条线路同源、路径与分片编号完全一致,切换无需对齐。现在每次取清单时按清单延迟择优,60 秒内沿用;当前线路清单取不到就立刻换另一条,不依赖代理层回传失败;全部挂掉时 2 秒退避,吸收播放器的重试风暴。清晰度由 1280×720、2 Mbps 升到 1920×1080、4 Mbps(H.264 Main L4.0,按直播分片实读);该档没列在主清单里、可能被撤,撤了自动回落 720p、下次到期再试。清单只有是 HLS、带分片且每个分片都落在官方 `/hls-live/` 目录时才算有效。第三条 streamingfast 线路在大陆 DNS 被污染(Globalping 10/10 探针超时),不纳入 - **咪咕版权屏蔽时说人话(issue #131)**:咪咕按当前节目屏蔽频道——亚运会期间 CCTV5 / CCTV5+ 播到相关赛事(直播、录像都算)就整条屏蔽,节目结束自动恢复,游客与会员一样。原来只透传「节目播出调整,换个内容看看吧!」,看着像是账号、画质或频道 ID 出了问题,报告者把登录态、画质、H.265 / HDR 排查了一遍才来问。现在对该错误码补一句说明:这是咪咕版权屏蔽,通常节目结束后自动恢复,可先切到其他源的同名频道。其余错误文案、返回码一字不改 ### v4.15.0 (2026-09-13) 本次为「**新增香港、台湾与黑龙江、云南共 19 路直播**」版本:黑龙江 7 路、云南 7 路各自成组,香港卫视并入「香港」与凤凰三台并列,大爱一台 / 二台与 GOODTV / GOODTV2 并入「台湾」;五家全部免登录、零配置、默认开启,可在源管理逐家关闭。取流方式正好各不相同——黑龙江地址固定且既不校验来源头也不挑播放器标识,频道直接写直链、本机一个字节的媒体都不转发;云南省级要按「当前这档节目」逐次换取带路径签名的 DVR 窗口,既不能预取也不能写死;香港卫视先问源站当前在播的是哪一路再换入口,并把两跳清单拍平成媒体清单;大爱按来源头防盗链、GOOD TV 卡的是播放器标识,两家的清单与分片统一由本机全代理并补齐所需请求头。升级镜像后重启即生效,现有配置与订阅无需改动。 - **新增黑龙江、云南两省官方直播**:黑龙江 7 路归入「黑龙江」,云南 7 路归入「云南」,均免登录、零配置、默认开启,可在源管理单独关闭。两者取流方式正好是两个极端。黑龙江是本项目里少见的「什么都不需要」的源:极光新闻 App 在用的官方入口地址固定、不带签名,清单和分片既不校验来源头也不挑播放器标识(ffmpeg、okhttp 都是 200),所以频道直接写直链、由播放器直连官方 CDN,本机一个字节的媒体都不转发;要留意的只有端口,官方业务域名走的是 4430 而不是 443。云南则要同时接两条链路:省级四路走云视网,官网接口返回的不是一条固定直播地址,而是「当前这档节目」的 DVR 窗口加一对按路径签发的签名——拿本轮签名去请求下一档节目的路径直接 403,既不能预取也不能写死,只能每次播放请求前重新换取;节目换档后下一次解析自然拿到新窗口,实测跨档时分片序号从 141184+604 接到 141794、单调递增不回退,播放器按普通直播清单推进即可(官网播放器自己反倒不换台,它的换档代码是注释掉的,一档放完就停)。地方三路走七彩云端目录,按房间名取当前在线机位;目录里另外 14 个地方台名字当前全部复用同一条 HLS,因此不作为独立频道收录。两家回源要求也不同:省级 CDN 缺了官网来源头不是回 403 而是把连接晾着(实测五次全部连接超时),地方那条裸请求就能取,所以请求头按目标主机分别下发,不把一家的凭据漏给另一家。实测黑龙江 7 路与云南省级 4 路均为 1280×720、H.264 / AAC-LC(黑龙江 25 帧、云南省级 25 帧),云南地方三路分别是 720p25、1080p50 和 720×416。台标方面公共台标库已收黑龙江 7 路与云南省级 4 路,按台名自动匹配;地方三路库里没有,改用七彩云端下发的官方频道卡 - **新增大爱电视与 GOOD TV 官网直播,归入「台湾」分组**:大爱一台、大爱二台与 GOODTV、GOODTV2 共四路台湾公开电视直播纳入「台湾」分组,与精选列表里的公视 / 民视 / 华视 / 台视等并列,免登录、零配置、默认开启,各自可在源管理单独关闭。四条地址都是官网写死的固定 HLS、不带签名,所以模块不做任何额外请求,播放时直接给地址;真正的门在回源那一侧,两家各不相同:大爱按 Referer 防盗链,清单和 .ts 分片缺了请求头都是 403;GOOD TV 不看 Referer,卡的是 CloudFront 的播放器标识白名单,浏览器 / VLC / ExoPlayer 能过,ffmpeg 的 Lavf 和 okhttp 一律 403。播放器发什么请求头不由本项目决定,因此两家的清单与媒体分片都由本机全代理回源并补齐所需请求头,回源地址另有白名单,只允许落在各自官方的直播目录内。实测四路均为 1280×720、H.264 / AAC-LC 立体声(大爱 30 帧、约 3 Mbps,GOOD TV 29.97 帧)。台标由公共台标库按台名自动匹配。节目单本轮没有:默认 EPG 源里一条台湾频道都没有,精选列表里原有的公视 / 民视等同样如此;大爱官网自己有逐日节目表接口,但抓取模块的 EPG 槽位目前还没有接进节目单流水线,故未一并接入 - **新增香港卫视官网直播,归入「香港」分组**:香港卫视一路电视直播纳入「香港」分组,与凤凰三台并列,免登录、零配置、默认开启。官网入口不是固定地址——先问官网当前在播的是哪一路,再向播放器接口换这一路的 HLS;入口在本机短期缓存,官网换台导致旧地址失效时立即重取,接口短时故障则沿用最近一次成功入口并退避重试。官网给的入口是一层 master,真正的分片列表在它下面带 `hls_ctx` 的子清单里,服务端取回时就拍平成媒体清单再下发,播放器少一跳、也不必理解跨主机的绝对地址;服务端只中继这份小清单,媒体分片由播放器直连上游 CDN,需要时也可用 `?relay=2` 全代理。实测为 1280×720、H.264 High / AAC、约 3 Mbps,节目单由默认 EPG 源直接覆盖、无需额外配置。上游 CDN 会按 IP 拒绝一部分来源(实测机房 IP 与个别移动线路回 403,电信家宽与境外正常),服务端中继取不到清单时按既有逻辑回退 302,由播放器自己直连 - **文档**:README 正文(频道覆盖、内容来源、数据流向图、常见问题、配置与进阶)收敛了「官方直播 / 官方 CDN / 官网接口」一类措辞——回源那一侧统一称「源站 / 上游 CDN」,用户实际访问或登录的一侧称「站点 / 网页端」。仅措辞调整,功能、配置与订阅地址均未变动 ### v4.14.0 (2026-09-09) 本次为「**隐藏不再失效、按名字屏蔽与台标 / 节目单修复**」版本:隐藏、重命名、归类、排序四项个性化设置不再因为源换签名地址而静默作废;新增按名字长期屏蔽的规则和一次隐藏整批同前缀分组的入口(issue #123);台标改为按库索引取图、0 裂图,默认台标库与默认 EPG 源双双换新,地方台多补 129 个频道的节目单(issue #124);修复自定义分组撞名后所有分组操作被锁死。升级镜像后重启即生效,现有配置与订阅无需改动,老配置里的默认 EPG 源会自动换成新地址。 - **修复隐藏 / 重命名 / 归类 / 排序在源刷新后静默失效(issue #123)**:这四项设置都按「原始分组::频道 ID」存,而频道 ID 是按播放地址算的。纬来体育这类每次抓取都换一条带 `?expire=&sign=` 签名地址的源,每个刷新周期 ID 都变一次,隐藏掉的频道自己冒回分组、改过的名字复原、挪过的位置弹回,且界面上看不到任何线索——「已隐藏」列表是按当前频道反查的,失配的那条直接就不显示。现在算 ID 前先剥掉时效 / 签名类参数(只剥确定与频道身份无关的那几个,`qn` 等可能区分清晰度的一律保留,避免两条频道撞成一条),源换签名不再影响频道身份。全量 1078 条频道里只有 16 条的 ID 会因此变一次,且均无历史配置受影响 - **新增「屏蔽规则」:按名字长期屏蔽频道,源换址、频道每天重建都照样生效(issue #123)**:频道旁多了一个「屏蔽」按钮,一键把这个频道名永久屏蔽——同名的跨源实例(CCTV5+ 在体育 / 央视 / 央视频三处各一条)一次全盖住;右上角「🚫 屏蔽规则」可手动添加「整名相同」或「名字包含」规则。规则只影响当前配置档,删掉即恢复;面板里每条规则直接列出当前命中的频道,输入框边打字边报命中数,避免「名字包含」一刀切多了。空规则一律丢弃,手改配置文件把它写成字符串也不会拆成单字规则屏蔽一大片。不做白名单模式:与配置档「共享全集、各档只做减法」的定位相反,且会让新装的源一条频道都不出现 - **隐藏分组时主动提议把同前缀的一整批一起隐藏(issue #123 / #2)**:「体育-昨天 / 今天 / 明天」这类分组每天重建,逐条隐藏明天照样冒出来。分组隐藏通配(`体育-*`)早已支持,但一直只有手改配置文件才用得上。现在对其中一个分组点「隐藏分组」时,界面会认出同前缀的兄弟分组并三选一:只隐藏这一个、或连同一起隐藏并存成规则,以后新出现的同前缀分组自动挡掉。前缀取到分隔符为止,`体育-*` 永远不会误伤「体育」或「体育频道」。被规则隐藏的分组在「已隐藏」里标出来源;恢复时可选解除整条规则或只恢复这一个。顺带修了三处与通配相关的既有问题:「已隐藏」列表在六处各算一遍且算法不一,配置里有通配符时「恢复整组」「全选」会操作到别的分组;对通配隐藏的分组点「恢复」无效却仍提示已恢复;「已隐藏」区的「全选」实际选不中任何频道 - **修复台标裂图:改为按台标库索引取图,默认库换为 taksssss(issue #124)**:此前没有自带台标的频道按名字盲拼一个公共库地址写进订阅,库里没有这张图时播放器拿到 404、屏幕上就是裂图——实测 253 条兜底里 138 条 404。现在程序下载库自带的「频道名 → 图片」索引(7 天刷新一次、失败沿用缓存),只写库里真实存在的文件名,没有的留空交给播放器画占位图;命名对不上的也按保守规则救回(CCTV怀旧剧场 → 怀旧剧场、内蒙古组的「新闻综合」→ 内蒙古新闻综合等),会撞成同一个的宁可留空不贴错。默认库从 fanmingming(929 张)换成 taksssss(3266 张),对本项目实际输出的频道是前者的严格超集,仍走 jsDelivr gcore 镜像、大陆直连可达。结果 174 个频道有真台标、0 裂图。新增「🖼 缺台标」清单列出当前档没图的频道,点进去直接上传;也可把 `<频道名>.png` 放进数据目录 `logos/` - **默认 EPG 源换为 e.erw.cc,地方台多补 129 个频道的节目单(issue #124)**:原默认源 `epg.51zmt.top` 已退化到对三个文件返回同一份内容,只剩 101 个央视卫视频道(咪咕本来就有)、2 天节目,地方台一个都补不到。新源 521 个频道、9 天节目、大陆多地探针直连可达;河南、广东、湖南、吉林、江苏、广西、江西、上海和各省少儿频道是主要收益。老配置里一字未改的默认源会自动换成新地址;自己改过名字或地址的那条不会被动,但「设置 → EPG 节目单源」里会明确提示它已失效并给出新地址。EPG 缓存改为 gzip 落盘(17MB → 1.3MB),老的明文缓存照常可读 - **修复自定义分组撞名后,之后新增 / 改名 / 删除任何分组都被拒绝**:在某个源分组暂时不可见时(源抓取失败、或整组被隐藏)建了同名自定义分组,源分组回来后两者撞名;保存端点每次都重校验整份配置,从此所有分组操作一律报「分组已存在」,且指着那个用户根本没碰的旧分组。现在只拦「本次改动新引入」的冲突,旧冲突放行、由播放列表生成时合并同名分组,界面上用 ⚠ 标出合并了几条源频道以及怎么拆开 - **「重置」增加「屏蔽规则」一项**:原「隐藏的分组和频道」一项承诺「显示所有被隐藏的频道」却不清屏蔽规则;现在屏蔽规则单独一项,原项文案改为它实际做的「逐条隐藏的」 - **许可说明更正**:README 此前写「仅供个人学习、不得商用」,与 GPL-3.0 第 10 条「不得附加限制」相抵触。现明确:代码按 GPL-3.0 授权、许可证之外不附加任何使用限制;「不得售卖订阅 / 公开转播」等限制针对的是未获授权的第三方**内容**,来自权利人与所在地法律,不来自本软件许可。补充第三方组件许可清单 ### v4.13.0 (2026-09-07) 本次为「**B 站直播改为播放时解析、北京电视台修复与网络第三方源自助订阅**」版本:B 站直播不再把 60 分钟就过期的签名直链写进播放列表,改为与虎牙、斗鱼相同的播放时解析,播放器多久重拉列表都不再每小时全部失效(issue #120);北京广播电视台 9 个电视频道导入 Cookie 后仍播不了的问题查明是电视台 CDN 只认完整频道页 Referer,已补齐;清单直出 / 全代理取回失败时日志写明上游到底回了什么,不再只有一行「回退 302」;v4.7.0 清出精选列表的 77 条网络第三方转发源整理成仓库 `from-the-web/from-the-web.m3u` 供自助订阅,不进内置默认,「公告」分组新增对应的添加教程短片(issue #121)。升级镜像后重启即生效,已导入的北京 Cookie 无需重做,现有订阅无需重新添加。 - **被清出精选列表的网络第三方源改放仓库 `from-the-web/` 供自助订阅,并新增「来源于网络」频道添加教程短片(issue #121)**:v4.7.0 从 `IPTV.m3u` 移出的台湾 4gtv 系、港澳、新加坡 / 马来西亚和影视共 77 条第三方转发源,现整理成与精选列表同级的 `from-the-web/from-the-web.m3u`(按台湾 / 香港 / 澳门 / 新加坡 / 马来西亚 / 影视分组,海外逐条复核可拉取清单与媒体分片,MOMO 亲子台已失效未收录),不进内置默认,需要的用户在「源管理 → + 添加自定义源 → 订阅模式 → 在线 URL」粘贴直链即可全部加回;以后从网络收集到的其它链接也会备份到这个文件里,订阅定时刷新后自动出现。转发站域名在大陆电信 / 联通 / 移动家宽与腾讯 / 阿里机房共 9 个探针上均被 DNS 污染,只有海外或全局代理环境才能播,这份清单不维护、失效不作为 bug 受理。「公告」分组新增第三条 25 秒短片,五页演示这份列表是什么、复制直链、后台添加、之后自动跟随更新,和其它系统短片一样可逐条隐藏、不可删除 / 移动 / 排序 / 重命名;短片由 `assets/from-the-web-guide-source.html` 经 `npm run generate:from-the-web-guide` 生成 - **修复北京广播电视台 9 个电视频道导入 Cookie 后仍全部播不了**:取流接口其实已经成功签出电视台的短效地址,是本机代理去拉清单时被电视台专用 CDN 回 403。用真实登录态实测,这台 CDN 校验的是 Referer 的**完整频道页路径**(`https://www.btime.com/btv/btvsy_index`),只带根路径 `https://www.btime.com/` 一律拒绝且空正文,与地区、IP、登录 Cookie、User-Agent 都无关;独立验证台当时能播正是因为服务端代理写的是完整页面路径,移植进来时收成了根路径。现已按频道页路径补齐,公开活动 / 慢直播按 `/live` 页给,Cookie 仍只发给官方取流接口、不发给媒体 CDN。升级后重启即生效,已导入的 Cookie 无需重做 - **清单直出 / 全代理取回失败时,日志写明上游到底回了什么**:此前服务端替播放器拉清单被拒时只有一行「清单直出取回失败,回退 302」,CDN 回的是 403、404 还是一页 HTML 完全看不出,北京电视台这次就是对着日志猜不出原因。现在这一行末尾会带上上游主机与路径、HTTP 状态、内容类型和正文头部(查询串里的签名 / 令牌不落日志,正文里回显的令牌也会抹掉),超时与网络异常也各有一句 - **修复 B 站直播每隔一小时全部失效、必须手动刷新才恢复(issue #120)**:此前模块把 B 站的签名直链直接写进播放列表,按「约 2 小时过期」设计了 45~90 分钟的刷新周期;用真实直播间实测,签名只有 **60 分钟**有效——刷新间隔一旦调到 60 分钟以上就每轮必灭,就算准时刷新,播放器不重拉播放列表也永远拿不到新地址(多数电视端播放器几小时甚至一天才重拉一次),正在播的流还会在签名到期那一刻被 403 掐断。现改为与虎牙、斗鱼相同的播放时解析:播放列表里写的是本机稳定地址,播放请求到达时才向 B 站换取签名地址(60 秒内复用;失败短暂记忆,免得播放器的连环重试触发风控),本机只中继清单并补齐防盗链请求头,视频分片仍由播放器直连官方 CDN。播放器多久重拉列表都不再影响,不认 `#EXTVLCOPT` 的播放器(LunaTV 等)和 TXT / TVBox 订阅也能直接播 B 站。刷新间隔现在只决定多久重挑一次直播间,允许范围放宽为 15~120 分钟(默认仍 45);「优先 HLS」「播放缓冲」两个直链时代的选项随之下线(统一 HLS)。升级后重启即生效,旧缓存里的直链会在启动抓取时被替换,订阅地址无需更换 ### v4.12.0 (2026-09-06) 本次为「**央视频会员频道在 Docker / NAS 上真正可用**」版本:登录态导入改为复制浏览器请求头里的整段 Cookie——用真实账号实测,央视频的会话 cookie 是 HttpOnly,v4.11.0 的书签工具拿不到、官网必拒;会员桥接不再因为镜像里 Chromium 被压到 96KB 的 JS 栈而在「启动官网解扰兼容桥」后立刻溢出,登录态有效就能播;导入失败时日志和报错会写明官网拒绝的具体原因;「公告」分组里的登录教程短片同步改版为开发者工具复制 Cookie 的六步演示。升级镜像即可生效,已导入的登录态保存在数据卷里无需重做,现有订阅无需重新添加。 - **修复央视频会员频道在 Docker / NAS 上一播就报「Maximum call stack size exceeded」**:会员桥接把官网播放器解扰后的 fMP4 块转成 base64 时,用 `String.fromCharCode(...bytes.subarray(i, i + 32768))` 一次把 32768 个字节当参数压栈;Mac 上默认 1MB 栈没事,官方镜像里 Alpine Chromium 为了兜住纬来体育那类混淆站崩渲染进程,JS 栈被压到 96KB,这一句直接溢出,登录态明明有效也播不了。改为 FileReader 原生编码,不占调用栈;本机用同样的 `--stack-size=96` 参数复现并验证通过,解码字节一致 - **修复央视频登录态导入在 NAS 上必定失败:书签工具改为复制请求头 Cookie**:v4.11.0 的「获取央视频登录态」书签只读 document.cookie,而用真实账号实测央视频的会话 cookie(vusession、accesstoken、refreshtoken 等)全是 HttpOnly,网页脚本根本拿不到;只种入书签能看到的那半套,官网用户信息接口不认、续期接口回「inner token失效」并让 SDK 清空令牌,所以导入一定报「官网没有认出这份登录态」。现改为和北京模块同样的做法:在自己电脑浏览器的开发者工具 Network 里点开任一 `yangshipin.cn` 请求,复制 Request Headers 中 `Cookie` 的完整值粘贴导入(请求头包含 HttpOnly 那层);种入完整 Cookie 后官网当场认出账号与 VIP,已实测。书签工具已从卡片移除;粘错来源(只有 ysp_* 令牌)时解析阶段就会说明缺的是 HttpOnly 会话 cookie,不再白起一次浏览器。导入失败时服务端日志会记下种入了哪些 cookie、官网账号接口的每次回包(路径、状态、返回码)和校验后剩余的 cookie,报错文案按原因区分(续期被拒 / 用户信息接口不认 / 缺会话 cookie)。「央视频会员频道登录教程」短片同步改版为开发者工具复制 Cookie 的六步演示 ### v4.11.0 (2026-09-06) 本次为「**央视频登录态导入与安徽广电**」版本:央视频会员频道新增「获取央视频登录态」书签工具,在自己电脑的浏览器登录官网后点一下、把内容粘贴到后台导入即可,Docker / NAS 等没有桌面的部署也能登录了;关联账号后服务端每 6 小时静默续期一次,家里几天没人看会员频道也不会掉线;「公告」分组新增一条 30 秒的登录教程短片,电视上就能照着操作,不需要可以隐藏;新增安徽广电 7 路官网直播,免登录、零配置、默认开启。升级镜像即可生效,现有订阅无需重新添加。 - **央视频会员频道支持从自己电脑的浏览器导入登录态,Docker / NAS 也能登录了**:此前会员频道只能在运行服务的电脑上弹出官方登录窗,没有桌面的 Docker / NAS 部署无路可走。现在「源管理 → 央视频」提供「获取央视频登录态」书签工具:在自己电脑的浏览器登录官网后点一下,把复制出的内容粘到卡片里导入即可。服务端把这组 cookie 种进央视频专用的浏览器 profile,当场让官网 SDK 校验并显示昵称与 VIP 状态;cookie 不进配置文件与备份。远程后台也能操作,本机弹窗登录照旧可用 - **央视频登录态自动保活,几天不看也不掉线**:官网 SDK 的刷新令牌 48 小时有效,且只在浏览器页面开着时才续期;而后台 Chromium 会员频道停播 45 秒后就会关掉,家里两天没人看会员频道,登录就没了(弹窗登录和导入登录都受影响)。现在只要关联过账号,服务端每 6 小时静默拉起一次后台会话让 SDK 续期再关掉,启动后约 90 秒也会先续一次;没关联过账号的部署不会为此启动浏览器 - **新增「央视频会员频道登录教程」系统短片**:书签导入那套操作光看文字不容易懂,现在「公告」分组里多了一条 30 秒的教程短片,六页演示拖书签、登录官网、点书签、粘贴导入的全过程,电视上就能看。和公告一样可以在「我的频道」逐条隐藏,不支持删除、移动、排序或重命名;短片由 `assets/ysp-login-guide-source.html` 经 `npm run generate:ysp-guide` 生成,生成脚本已支持多目标 - **新增安徽广电 7 路官网直播**:安徽卫视、经济生活、影视、公共、农业科教、综艺体育、国际频道全部纳入独立「安徽」分组,免登录、零配置、默认开启。服务端按「安徽视讯」App 的公开算法解出直播鉴权密钥、逐路生成两小时有效的腾讯云签名,并让播放器每次轮询都重新拉取滚动清单(官方清单只含 3 个 2 秒分片,复用旧清单几秒就会卡住)。该 CDN 按播放器标识放行:App 自己的 ijkplayer 能过,VLC / Apple / ExoPlayer 等常见播放器标识一律 403,因此清单与分片统一由本机以 App 标识全代理,播放器不直连 CDN;为此代理层允许模块用函数形态请求头指定 User-Agent,其余模块行为不变。官网旧接口的 8 路地址实为「网站直播已下线」占位画面,未收录;9 路安徽广播不进电视列表 - **文档**:README「产品预览」三张截图换成当前版本的后台主面板、源管理与实况播放效果 ### v4.10.0 (2026-09-06) 本次为「**央视频会员频道、后台改版与地方台大扩充**」版本:央视频在 63 个公开频道之外接入 10 个本人账号可看的会员频道,在本机登录一次官网即可长期复用,会员流自动解扰成普通播放器能播的 H.264;管理后台整体换成浅色、扁平、更舒展的新视觉,功能与操作路径不变;新增北京、重庆、四川、江西、贵州、甘肃、新疆、吉林、内蒙古九地官方广电与 iPanda 共 110 余路直播,福建省级线路改为播放时自动续签,精选列表补入宁夏三台;默认分组顺序改为央视频置顶、地方台沉底,咪咕去掉不可播与重复的分组;系统公告短片重制为 1080p,并可在后台按需隐藏;另修复换台标不生效、央视频误显回看入口、全代理长播断流和凤凰台标裂图。升级镜像即可生效,现有订阅无需重新添加。 - **央视频新增 10 个本人账号可访问的会员频道,并把本机登录与“有声无画”兼容桥接完整接入主项目**:原有 63 个公开频道保持匿名动态取流;会员频道从「源管理 → 央视频」在服务所在电脑的 `localhost` 后台打开央视频官方登录窗,登录态只保存在本地 Chromium profile,服务会自动复用会话、刷新短效签名,并把官网播放器解扰后的音视频重组为普通 IPTV 客户端可播的 H.264/AAC HLS。旧版 63 台磁盘缓存会在首次启动时按频道表版本自动重建,无需等 24 小时或手工刷新。Docker/NAS 无法远程弹出首次登录窗,远端管理页会明确禁用相关按钮;会员到期、官网退出或要求重新验证时仍需重新登录/续费 - **管理后台整体改版**:换成浅色、冷调、扁平、更舒展的新视觉——顶栏把品牌、主导航和运维操作各自分组;按钮只有主操作用实心、其余白底描边,不再有立体渐变;「我的频道」保留高频操作的效率但拉开了栏间与行间;内容源卡片本身保持中性,颜色只用来表示类型和状态;设置页每个字段各自成卡,层级更清楚、更好扫读;弹窗和页内播放器是全站唯一保留明显阴影的层级;关于页改成与其它页一致的信息卡。功能与操作路径都没变,老用户不用重新适应 - **新增北京广播电视台**:北京卫视、BRTV 文艺 / 纪实科教 / 影视 / 财经 / 体育休闲 / i生活 / 新闻、卡酷少儿 9 个电视频道,以及北京时间当前公开的活动或慢直播。公开直播免登录并自动排除失效项目;9 个电视频道需在「源管理 → 北京广播电视台」导入本人北京时间 Cookie(也可用 `mBtimeCookie` 环境变量),模块先验证再启用,失效时只隐藏电视台并给出提示、免登录直播照常。凭据只发给官方取流接口,不写进订阅、不发送到媒体 CDN;清单和分片由本机补齐防盗链请求头并代理,macOS 本地会自动沿用系统 HTTPS 代理,Docker / Linux 可按需设置标准 `HTTPS_PROXY` - **新增重庆广电**:官网当前公开的 CQTV新闻,免登录、零配置、默认开启;频道表自动同步,播放时匿名换取短效 HLS,清单、AES 密钥和媒体分片由本机全代理 - **新增四川广电**:四川卫视、新闻、经济、文化旅游、影视文艺、妇女儿童、四川乡村、康巴卫视、四川卫视 4K 超高清 SDR 共 9 个电视台,以及官网当前公开的活动直播(有则显示、无则隐藏、免登录)。9 个电视台需要部署者本人的四川官网登录态,后台提供书签工具一键读取官网 Token;播放时动态换取短效地址,清单、密钥和媒体分片补齐官网防盗链请求头并全代理 - **新增江西广电 8 路官网直播**:江西卫视、都市、经济生活、公共农业、少儿、新闻、移动电视、陶瓷全部纳入独立「江西」分组,免登录、零配置、默认开启。服务端按官网公开算法自动换取匿名短效 token,并让播放器每次轮询都重新拉取滚动清单,避免复用仅含三个 3 秒分片的旧清单而在约 9 秒后卡住;清单、密钥和媒体分片统一补齐防盗链请求头并全代理。官网当前八路均为单档 720p,无登录解锁更高清的 Web 机制 - **新增贵州广电 8 路官网直播**:贵州卫视、公共、影视文艺、大众生活、生态乡村、科教健康、经济、移动电视全部纳入独立「贵州」分组,免登录、零配置、默认开启;家有购物明确排除。播放时从官网公开 API 刷新短效签名地址,播放器每次轮询重新拉取只有三个 3 秒分片的实时清单,避免缓存快照导致约 9 秒后卡住;清单、密钥和媒体分片均经官方域名与频道路径校验后由本机全代理 - **新增甘肃广电 6 路官网直播**:甘肃卫视、文化影视、移动电视、少儿、科教、公共应急全部纳入独立「甘肃」分组,免登录、零配置、默认开启。六路共用官网频道表缓存,但播放器每次轮询都会重新获取滚动 HLS 清单;入口失效会立即重读频道表,接口短时故障则使用最近一次成功地址并退避重试。服务端只中继小型清单,媒体分片由播放器直连官方 CDN,避免长期播放占满服务器带宽。官网当前少儿频道为 540p,其余五路为 720p,均为 H.264/AAC、25 帧 - **新增新疆广电 5 路官网直播**:新疆卫视、维吾尔语新闻综合、哈萨克语新闻综合、体育健康、少儿全部纳入独立「新疆」分组,免登录、零配置、默认开启。播放时发现丝路视听网当前 Nuxt 构建并静态解析当天公开签名材料,不执行下载脚本;结合官网时间接口生成 MD5/RSA 请求签名,再从公开频道接口换取约一小时有效的 HLS。入口缓存会在失效时自动重签,滚动清单每次播放请求重新获取并校验官方域名、频道目录和鉴权参数;默认仅中继清单以节省服务器带宽,也支持 `?relay=2` 全代理。官网当前将 XJTV-4、XJTV-5 标记为禁播且对应 CDN 实测 404,因此不纳入频道表 - **新增吉林广电 28 路官网直播**:6 路省级频道和 9 路地方台归入「吉林」,13 路慢直播归入「吉林风景」,免登录、零配置、默认开启。省级频道与 9 路季节性景观在播放时从官网加密接口解析约四小时有效的 HLS,9 路地方台与 4 路固定景观使用已验证的官方 HTTPS 入口;所有清单、密钥和媒体分片都经过官方域名白名单校验并由本机全代理 - **新增内蒙古广电 20 路官网直播**:内蒙古卫视、内蒙古蒙古语卫视等 8 路自治区频道及呼和浩特、包头等 12 路盟市频道,全部纳入唯一的「内蒙古」分组,免登录、零配置、默认开启。播放时复现奔腾融媒官网公开的 XXTEA 加密频道协议获取当前 HLS;频道 ID、官方主机和媒体路径均严格校验,清单、密钥和媒体分片补齐 Referer 后由本机全代理。官网接口短时不可用时,仅内蒙古卫视和内蒙古蒙古语文化频道使用已验证的官方备用入口 - **接入 iPanda 22 路官网公开直播**:成都、都江堰 2 个 24 小时总频道与 18 个固定熊猫机位,加上江苏大丰麋鹿、云南白马雪山 2 路珍稀动物直播,统一归入独立「iPanda」分组并在源管理中提供一个零配置开关。固定机位走支持 CORS 的官方 CDN 直连,4 路动态频道播放时读取央视公开接口、实测最高档子清单并在官方 CDN 间自动回退,清单、密钥和媒体统一由本机安全代理。22 路最高均为真实 1280×720;官网把该档称为“超清”,1080p 对应的“蓝光”并未下发,匿名接口已给出全部画质,登录不会解锁更高档 - **福建省级线路改为播放时自动续签**:东南卫视等省级六路改用官网直播页的短效签名接口,播放时生成约 2 小时 47 分有效的地址并自动续签,只中转清单、分片由播放器直连官方 CDN;海博继续提供重点地市频道,福州综合 / 生活 / 少儿与厦视一套 / 二套 / 三套不依赖海博,各平台独立工作、任一异常不影响其它线路 - **精选列表补入宁夏三台**:宁夏卫视、宁夏公共、宁夏文旅加入内置精选列表的「宁夏」分组,随远程列表更新,无需升级镜像即可看到 - **默认分组顺序:央视频置顶、地方台沉底、咪咕精简**:央视频紧跟公告排在最前——它匿名就能提供 41 个与咪咕重叠的央视 / 卫视频道的 1080p,而咪咕游客档止于 540p、1080p 要会员;地方台分组统一沉到底部,景观 / 慢直播分组(景观、吉林风景)贴在地方台上方。旧配置档还没记录央视频时会自动把它放到最前,用户显式拖拽过的顺序仍然优先。咪咕去掉无法播放的上视东方影视(「上海」分组随之消失)和已由 iPanda 模块提供的整个「熊猫」分组,输出从 96 路减到 84 路 - **公告短片重制为 1080p**:「欢迎使用 iPTV for iFansClub.com」公告视频按新版后台的视觉重新制作,1920×1080,体积反而比原来小;视频由仓库内的 HTML 源稿经 `scripts/generate-announcement-video.mjs` 生成,以后改文案不必手工剪辑 - **系统公告频道可以隐藏了,详情卡只留有用的**:公告频道此前和普通频道一样不能隐藏,详情弹窗还堆着节目单配对、别名、TVG、台标上传等对公告毫无意义的内容。现在「我的频道」里可以像普通频道一样隐藏它(不想在电视上放这条短片就藏起来,随时可在「已隐藏」里恢复),详情卡精简为名称、播放预览和隐藏 / 恢复;删除、移动、排序、重命名仍不支持,显示时固定在第一位(issue #119) - **修复后台点公告频道「在页面里播放」报 manifestParsingError**:网页播放器把所有同源地址都当 HLS 交给 hls.js(延迟解析频道的旧地址没有 `.m3u8` 后缀,本机按 HLS 直出),公告短片 `/assets/announcement.mp4` 恰好同源,被当成清单解析后直接报错。现在 mp4 / webm / mp3 等直连媒体后缀一律走浏览器原生播放,独立播放页同时放开进度条;其它频道行为不变(issue #119) - **修复后台换了台标、电视上还是旧图**:本地上传的台标写进订阅的地址固定是 `/logos/<频道名>.png`,移除后重传同名图片地址一字不变,播放器按地址缓存台标(多数永不过期),后台看文件已是新图、电视上显示的仍是第一张。现在台标地址尾部带上文件修改时间作为版本号(`?v=…`),换图即换地址、播放器重新拉取;台标路由同时补齐 ETag / Last-Modified 并支持 304 条件请求,不认 query 的客户端也能校验新旧。手动放进 `logos/` 目录的图同样适用;升级后清单重生成即生效,已缓存旧图的电视重新加载播放列表即可(issue #119) - **央视频频道不再显示无效的回看入口**:订阅头的全局回看声明此前会套到央视频 73 个频道上,播放器据此在节目单里给出回放按钮,点了却只能拿到直播(模块从未实现回看)。现在央视频频道逐条标为 `catchup="none"`,播放器不再显示回看入口;要回看同一个台请切到播放器里同名频道的咪咕线路。频道表版本递增,升级后启动时自动重建缓存,无需手动刷新(issue #119) - **修复全代理多码率直播连续播放约 10 分钟后断流**:播放器持续轮询嵌套子清单或请求分片时会刷新代理地址的空闲期限与最近使用顺序;只有停播超过 10 分钟的地址才会回收,避免活跃子清单被固定 TTL 清掉后返回 404 - **修复凤凰卫视三台台标全部裂图**:模块里写死的台标地址挂在 `c1.fengshows-cdn.com`,该域名的 HTTPS 已经握不上手(大陆、香港、美国探针全部 TLS 握手失败,走 http 才能拿到图),播放器和后台里凤凰资讯 / 凤凰中文 / 凤凰香港三台一律显示无台标。凤凰秀官网现在把同一批文件挂在 `q1.fengshows.com` 下、路径一字不差、文件内容一致,且大陆直连可达,现改用该地址。升级后清单重生成即自动生效;已自行上传本地 `logos/` 台标的用户不受影响(issue #118) ### v4.8.1 (2026-09-05) 本次为「**咪咕取流日志整理**」版本:成功取流只打一行「咪咕取流:档位」,账号没订购某条内容的产品但流已正常下发时不再报红字,只给试看时改黄字并写明秒数,红字只留给真正拿不到地址的情况。升级镜像即可生效,现有订阅无需重新添加。 - **咪咕取流日志改为一行摘要,不再把正常播放报成红字**:此前每次取流打「登录认证成功」,账号没订购该内容的产品时再补一行红字「认证失败 视频内容不完整 可能缺少相关VIP」——可那时流已经正常下发(内容本身允许播放,或咪咕只给了几分钟试看),看着像出错其实什么都没坏;真正要紧的「拿到哪一档、试看多少秒」反而不打,issue #117 排查时全靠播放器截图。现在成功取流只打一行「咪咕取流:臻享 超高清」,游客标「游客」,命中缓存标「缓存」;只给试看时改黄字并写明秒数,如「咪咕取流:臻享 超高清 · 仅试看 360 秒」;红字只留给拿不到地址的情况 ### v4.8.0 (2026-09-05) 本次为「**咪咕 4K 权益与容器抓取修复**」版本:咪咕 4K 被大屏策略拒绝后改按手机策略再要一次,足球通等不含电视端的三屏会员不再卡在 1080P,拒绝日志改为带咪咕原话与实际降到的档位;纬来体育在 NAS 官方镜像里抓不到的根因是 Alpine 版 Chromium 一遇深递归就崩掉渲染进程,改为先在沙箱里解析播放器页、不起浏览器即可拿到地址,并给该 Chromium 压小 JS 栈预算兜底;大陆用户外部 / 抓取模块频道的台标改用 jsDelivr 镜像,不再全部裂图;凤凰三台只保留在「香港」,不再复制出一个空的「亚太」分组。升级镜像即可生效,现有订阅无需重新添加。 - **咪咕 4K:足球通等不含电视端的「三屏」会员此前只能拿到 1080P,现在被大屏策略拒绝后会改按手机策略再要一次 4K**:4K(rateType 9)请求一直带着 `ott=true`,这是咪咕的「大屏 / 电视终端」取流策略,按大屏(四屏)权益判定;三屏会员在这条路上被判「需会员」,代码随即降到蓝光,日志还打「该账号没有会员」,用户明明有会员却被带着去纠结账号。用「4K赛场原声」实测:游客带 ott 直接 409 连降级流都不给,不带 ott 则正常降到 540P、且可选档位里就列着 rateType 9「臻享 超高清」,手机策略本身就有 4K。现在被大屏策略拒绝后先原样按手机策略再要一次 4K,仍被拒才按咪咕愿意给的档位降级(它给到蓝光就要蓝光,此前给蓝光也会再降一级到高清);含大屏权益的账号第一次就成功、路径不变;拒绝日志改为带咪咕原话与实际降到的档位。回归测试 `scripts/test-migu-4k-fallback.mjs`(issue #117) - **纬来体育在 NAS 容器里抓不到:根因是镜像里 Alpine 版 Chromium 一遇「深递归且每层有分配」就崩掉渲染进程,改为先「沙箱解析」、并给该 Chromium 压小 JS 栈预算**:用户容器日志显示入口页与播放器 iframe 都能打开,卡在跨域播放器 iframe「10 秒不响应脚本执行」、页面上 xgplayer 两个脚本「无响应」,三个入口轮完全部失败,同一网络的电脑浏览器却能正常播。在官方镜像(Alpine 3.24 / Chromium 152)里用本地副本复现并二分定位:播放器页的 jsjiami 混淆脚本带 obfuscator.io 的 debugProtection——每 2 秒一轮「递归到栈溢出再 catch RangeError」,而这个 Chromium 上每层带分配(对象 / 数组 / 字符串)的递归到一千多层时渲染进程直接崩、不抛 RangeError(普通递归到一万七千层都正常),iframe 一进来就死,puppeteer 只能等到超时;「脚本无响应」是渲染进程崩了之后网络事件发不出来的表象,不是网络不通。两处修:① 内置抓取源每个入口先「沙箱解析」——把入口页与其播放器 iframe 的脚本放进独立 worker 线程的 `node:vm` 里按顺序跑一遍(跨域的播放器库、统计脚本一律不下载),收集交给播放器(`new Player({url})` / `hls.loadSource()` 等)或写进 DOM 的 m3u8,带 Referer 校验通过即用,本机实测 6 秒、几 MB 内存、不起 Chromium;沙箱拿不到或校验不过才起浏览器嗅探。沙箱只传字符串、不暴露任何宿主对象,同步死循环 3 秒截断,吃内存的脚本由 worker 内存上限兜住,不会拖死主进程;源可用 `extractOptions.sandbox=false` 关掉。② Alpine 环境(即官方镜像)起 Chromium 时加 `--js-flags=--stack-size=96`,V8 在撞穿原生栈之前先抛 RangeError 让页面自己 catch(64 / 96 / 128 验证可用、160 仍崩),官方镜像里原样的浏览器抓取从「全部失败」变为 2.8 秒拿到地址,其它网页抓取源与外部「网页提取」源一并受益;桌面 Chrome 没这个问题、不加,代价是页面 JS 递归上限约八百层。回归测试 `scripts/test-player-page-sandbox.mjs` 用真实播放器页快照做 fixture;排查脚本 `scripts/probe-builtin-fetch.mjs` 新增沙箱阶段 - **修复大陆用户外部 / 抓取模块频道台标全部加载不出来**:央视频、B 站、虎牙、精选频道等没有自带台标的频道,此前按名兜底取图的默认地址是 `live.fanmingming.com`,该域名及其 `.cn` 镜像在大陆均被 DNS 污染、根本连不上(大陆探针 30/30 失败),表现为 LunaTV 等播放器里咪咕频道有台标、其它源全是裂图。默认地址改为同一台标库的 jsDelivr 镜像(`gcore.jsdelivr.net/gh/fanmingming/live@main/tv/`),文件一一对应、大陆直连可达,升级后清单重生成即自动生效、无需任何操作;已自行设置 `mexternalLogoBase` 或放了本地 `logos/` 的用户不受影响。环境变量 `mexternalLogoBase` 补进配置表与 compose 示例(issue #25 / #114) - **凤凰三台不再置顶复制到「亚太」**:v4.7.0 起内置精选列表的港澳台频道已全部按「香港」「台湾」归组,「亚太」分组不再有任何内置条目,凤凰秀官方三台再复制一份进去只剩一个孤零零的空壳分组。现在三台只保留在「香港」,与内置的三条第三方凤凰线路并列,仍是置顶不顶替;外部订阅自带的「亚太」分组及其中的凤凰条目原样不动,播放器按名聚合时官方源照旧排在前面 ### v4.7.0 (2026-09-05) 本次为「**启动提速与直播源整理**」版本:纬来体育等网页抓取源改为在首份播放列表生成之后在后台抓取,启动不再被它拖住十几分钟,单个入口抓不到最多约 35 秒即放弃,抓不到也不再清掉仍可用的旧地址;亚洲与国际直播模块只保留 YTN、NHK World 两个需要动态解析的频道,50 个固定直连源改由内置精选列表 `IPTV.m3u` 提供,并同步复核清理了精选列表的旧条目;升级后自动清理旧模块残留的缓存频道。升级镜像即可生效,现有订阅无需重新添加。 - **纬来体育等网页抓取源不再拖慢启动,单次抓不到也不再耗时数分钟**:v4.6.1 的容器日志显示启动后 13 分 44 秒全在等纬来体育,外部源、抓取模块、播放列表生成都排在它后面干等;每个入口固定耗时 6 分 3 秒——兜底「触发播放」与页内找链接各执行一次页面脚本,渲染进程被阻塞时 puppeteer 要等满默认 180 秒的协议超时才放弃,错误还被静默吞掉。现在:① 启动先用缓存生成播放列表,需要网页抓取的内置源放到列表生成之后在后台抓,抓到再补一次「仅重新生成」;抓取加防重入,5 分钟定时刷新撞上正在抓的那一轮直接跳过(此前启动那轮与第一个 tick 会同时各起一个 Chromium 抓同一个源,退避计数也被记两次);② 页面脚本执行加 10 秒上限、超时的 frame 后续不再碰,alert / confirm 弹窗自动关闭,主文档 10 秒内零响应即放弃(国内访问被 DNS 污染的 `jrkan.com` 此前每轮白等 30 秒),页面导航上限从 puppeteer 默认的 30 秒改为 15 秒(健康页面 4~5 秒就拿到清单,嗅到即走,上限只在页面卡死时才会等满;可按源用 `extractOptions.timeout` 覆盖),单个入口最坏约 35 秒、一轮三个入口约 1.5 分钟;③ 抓取失败先带 Referer 校验缓存里的旧地址,仍可用就沿用(该 m3u8 多日不变),校验不过才清,频道不再因一次抓不到就整个消失;④ 导航超时时把仍挂着的请求按域名列进日志(挂了多久、有没有响应),不响应脚本的 frame 也会报出,内网抓不到时从容器日志即可看出卡在哪一跳,不必再进容器跑探测脚本。真实 Chromium 验证脚本 `scripts/verify-web-extract-timeout.mjs` 补了主线程死循环、页面 alert、零响应三个场景 - **亚洲与国际直播整理:模块只保留 YTN、NHK World 两个动态解析频道,固定直连源改由内置精选列表 `IPTV.m3u` 提供**:v4.6.0 起模块里的 43 个频道每次播放都要经本机解析、校验并代理清单与媒体,但其中绝大多数只是固定 HLS 地址,走这条链路只是多一跳转发。现在 `IPTV.m3u` 新增独立标记区块「亚洲直播实验台已处理直连源」,收录 50 个按直连方式复核过的固定地址(原模块迁来 27 个,新增 Wipeout Xtra、Graham Norton、Rai Italia、History Hit、Court TV、Documentary+、CGTN Documentary、Sky Racing、FUEL TV、FloRacing、World Poker Tour 等 23 个),每条附实验台备注;模块只留必须先访问官方接口才能拿到当前地址的 YTN 与 NHK World。需要防盗链 Cookie 或 Referer 才能播的 TVB 新闻、Bloomberg 三台,以及未列入实验台直连清单的 DW 两台、Al Jazeera、ABC News Australia、Al Arabiya、National Geographic、NASA+、France 24 Arabic、NBC Sports NOW、Stadium 共 14 个频道不再提供。精选列表原有条目同步绕过 VPN 逐条复核根地址与实际媒体数据:「影视」组的龙华 / 靖天 / TVB 星河等转流条目、香港 TVB / ViuTV / HOY / NOW / 澳门 / 新加坡各台、台湾 4gtv 系列,以及 v4.6.0 补充的纬来日本、纬来育乐 RTMP 源整体清理;翡翠台、公视 / 民视 / 华视 / 台视高清、TVBS 亚洲复核通过保留并按「香港」「台湾」归组,三条第三方凤凰线路归入「香港」。精选列表由运行中的实例直接从仓库拉取,这部分不用升级镜像即已生效 - **升级后自动清理抓取模块里新版不再认领的缓存频道**:模块升级后磁盘缓存 `extractor-cache.json` 里可能还留着旧版频道的延迟解析引用,本版亚洲与国际直播模块从 43 个缩到 2 个,若原样输出,已迁入 `IPTV.m3u` 的频道会和旧缓存同时出现,旧缓存那份还会生成永远解析不了的本地代理地址。现在每次加载缓存都按模块当前认领范围收口、落盘并打印清理数量;不带延迟解析引用的普通缓存频道不受影响 ### v4.6.1 (2026-09-05) 本次为「**亚洲直播代理修复**」版本:亚洲与国际直播模块改回清单、密钥与媒体全部由本机代理,修复 TVB 新闻等依赖防盗链 Cookie 的频道以及 Bloomberg 美国 / 欧洲台在 v4.6.0 播放失败的问题,Cookie 按域名与路径限定发送、回源重定向逐跳复验白名单;纬来体育把海外可达的入口提前,海外或走代理的部署不再整轮落空。升级镜像即可生效,现有订阅无需重新添加。 - **修复亚洲与国际直播模块的播放链路**:v4.6.0 里该模块默认只中继清单、媒体分片由播放器直连 CDN,但 TVB 新闻这类平台的 CDN 要求分片请求也带上清单响应下发的会话 Cookie,播放器直连时拿不到 Cookie 会被拒;Bloomberg 美国 / 欧洲台的清单会指向不在白名单里的备用 CDN 域名,被模块按「不允许访问媒体地址」拦下;不能跨站取流的播放器也放不出来。现在清单、密钥与媒体分片统一由本机代理,Cookie 严格按响应主机的 Domain / Path 限定,只发给对应 CDN 的对应路径,不会泄漏给其它主机;代理层回源改为逐跳手动跟随重定向(最多 3 跳),每一跳都重新过模块白名单、跳出即拒绝,固定请求头跨站跳转时自动剥掉 Cookie / Authorization;Bloomberg 三台补齐 fastly 与 akamaized 两套 CDN 域名。代价是 Love Nature 4K 等高码率频道现在会占用本机转发带宽,不再是 v4.6.0 说明里的「媒体直连 CDN」 - **纬来体育入口顺序调整**:`jrkan.com` 从候选末位提到主地址之后的第一顺位。四个国内镜像只放行国内 IP,`jrkan.com` 是海外可达的入口,此前排在第六位,而每轮最多只试 3 个入口,海外或走代理的部署一旦主站抓不到就整轮落空、永远轮不到它;国内部署不受影响(`jrkan.com` 在国内 DNS 被污染、连接失败会立即跳过换下一个),已缓存的地址也不会因调整顺序而重抓。该清单由运行中的实例直接从仓库拉取,不用升级镜像即已生效 - **文档**:去掉首页过时的「v4.3.0 已接入央视频」提示 ### v4.6.0 (2026-09-05) 本次为「**亚洲与国际直播接入**」版本:新增零配置的亚洲与国际直播模块,一次带来 43 个经验证的公开频道(TVB 新闻、YTN、NHK World、DW、Bloomberg、France 24、Reuters,以及体育、文旅、宠物、台湾、娱乐时尚等),内置精选列表同步去重整理;管理后台视觉刷新并支持在页面内直接播放;修复纬来体育等网页抓取源在内网「早已嗅到地址却因导航超时被整次丢弃」的问题;凤凰三台改为置顶不顶替,第三方同名条目保留作备用线路。升级镜像即可生效,现有订阅无需重新添加。 - **接入亚洲与国际直播模块**:把独立实验项目验证过的 43 个有效频道收编为主项目零配置模块,覆盖 TVB 新闻、YTN、NHK World、DW、Bloomberg、France 24、Reuters,以及体育、文旅、宠物、台湾和娱乐时尚内容;已断流的 NASA Legacy 不进入生产频道表。固定 HLS 与 TVB / YTN / NHK / NASA 动态接口统一在播放时解析,重定向、根清单及其子资源均受精确协议、端口和主机白名单限制;模块默认只中继实时清单、媒体由播放器直连 CDN,避免 Love Nature 4K 等高码率频道占满 NAS 带宽,需要时仍可用全代理订阅 - **管理后台视觉刷新 + 页面内播放**:保持浅色与原有配色,面板、卡片、频道行统一为更大的圆角与细边框,悬停只变边框色不再位移;普通按钮改为白底细边框、圆角统一,主色 / 成功 / 危险 / VLC / IINA 按钮保留各自填充色;各类小标签统一为胶囊形。新增页面内播放器:「我的频道」每行常显「▶ 播放」,频道详情弹窗也有「▶ 在页面里播放」,弹窗直接起播不再跳新窗口(HLS 用 hls.js 按需加载、FLV 用自带 mpegts.js、Safari 原生 HLS 兜底),可一键改为「新窗口打开」回到独立播放页;关闭 / Esc / 点遮罩都会释放播放器 - **修复纬来体育等网页抓取源「科学上网能抓、内网经常抓不到」**:抓取器此前要等页面完全空闲(networkidle2)才算加载成功,内网访问这类页面时常有某个跨境资源一直挂着,页面 30 秒都到不了空闲,导航超时后整次抓取按失败处理,把早在几秒内就已嗅探到的 m3u8 一并丢掉,换下一个入口再重蹈覆辙。现在导航与嗅探赛跑:嗅到清单立刻收工,不再陪页面把所有资源加载完;导航超时也不算失败,继续在已加载的内容里嗅探;站点根本不通(连接失败 / 零响应)则立即放弃,把时间留给下一个入口。兜底「触发播放」与页内找链接也改为遍历所有 frame,播放器在跨域 iframe 里(jrs 系页面即如此)时不再只查主页面。附带独立排查脚本 `scripts/probe-builtin-fetch.mjs`:不启动整个项目、只对一个源跑一遍完整链路,逐步给出 DNS / 入口页 / 播放器依赖 / 浏览器嗅探 / m3u8 校验的诊断,方便在内网与代理两种网络下对比。另实测纬来体育六个入口的地域可达性正好互补——四个备用入口只放行国内 IP(海外 403)、`jrkan.com` 在国内被 DNS 污染,入口顺序保持不变 - **凤凰三台改为「置顶不顶替」**:凤凰秀官方三台仍置顶复制到「亚太」,但亚太里其它来源(外部订阅、内置列表)的同名凤凰条目不再被顶掉,原样排在官方三台之后作备用线路,不合并;「香港」分组照旧。播放器按名聚合时官方源在前即为默认源 - **内置精选列表同步整理**:已并入亚洲与国际直播模块的国际新闻、体育、纪实、娱乐时尚等条目从内置 `IPTV.m3u` 移除,不再与模块重复;同时移除 Sky News、FashionTV、央视付费频道、美国影视等一批第三方转流条目;「体育」补充纬来体育,「台湾」补充纬来日本、纬来育乐。该列表由运行中的实例直接从仓库拉取,不用升级镜像即已生效 ### v4.5.0 (2026-09-03) 本次为「**凤凰卫视接入**」版本:新增凤凰卫视三台(登录本人凤凰秀账号即可 720p,无需付费会员)与大连三个正式电视频道;内置网页抓取源支持配置多个入口地址、主站打不开时自动换备用地址重试;并修复辽宁省台、上海频道、央视频三处播放问题与 LunaTV 漏导入频道的兼容问题。升级镜像即可生效,现有订阅无需重新添加。 - **新增凤凰卫视直播模块**:接入凤凰资讯、凤凰中文、凤凰香港三路电视直播,归入「香港」分组,同时置顶复制到「亚太」分组(找凤凰不必先想它算不算「香港」),两处都在。游客为 854×480;在「🌐 源管理 → 凤凰卫视」导入本人凤凰秀账号的 Token(支持粘贴 Token 值或包含它的整段 Cookie,也可用 `mFengshowsToken` 环境变量)后,三台均为 1280×720 / 25 fps,**普通账号即可,无需付费会员**;凭证随主项目配置持久保存,重启无需重填。只提供直播,不接入回看、点播与栏目目录;播放时实时向官方取新签名,Token 不发送到媒体 CDN、也不写入订阅。直播为 HTTP-FLV,本机只转发不转码——网页播放器已内置支持,外部播放器需自身支持 HTTP-FLV - **凤凰三台以官方源为准**:其它来源(内置精选列表、外部订阅)提供的同台条目自动让位,命名变体(如「凤凰卫视中文台」)一并覆盖,播放器的「源1 / 源2」里不会再混进画质不明、随时失效的第三方转流 - **新增大连云直播模块**:接入大连新闻综合、大连生活、大连文体三个正式电视频道,源管理里独立成「大连」卡片可单独开关,播放列表统一归入「辽宁」分组 - **内置抓取源支持多个入口地址**:网页抓取型内置源改为可配一份候选清单,主站打不开或抓不到时自动换下一个地址重试(每轮最多试 3 个),上一轮抓成功的地址下轮优先。纬来体育所在的 jrs 系站点常换域名或被墙,此前单一地址一失效整个源就失联,现已补上四个备用入口。入口清单走远程配置,站点变动时改仓库文件即生效,不用等升级镜像 - **修复辽宁省台无法播放**:北斗融媒的 CDN Referer 与拉流密钥会由平台轮换,模块此前把某次取得的值固定在代码里,过期后省台清单被 CDN 以 `403 denied by Referer ACL` 拒绝(沈阳台的 CDN 恰好不校验,因此表现为「沈阳能播、省台不能」)。现在按官方客户端的公开鉴权协议动态取得并定时刷新,失效自动换新(issue #112) - **修复上海频道取不到直播地址**:看看新闻已改为按当前正在播出的节目发放播放地址,频道详情接口不再直接下发;现在先查官网当前节目再取地址,并随节目结束时间自动换新。遇到节目因版权限制暂停网络直播时给出明确说明,不再沿用必然被 CDN 拒绝的旧地址 - **修复央视频偶发播放失败**:选线探测成功后立刻二次取清单,会被官方 CDN 按「短间隔重复请求」拒绝(403)。现在把探测时已取回的清单正文直接下发,缓存里只留官方主备入口、不再混入 CDN 重定向后的临时地址,主备全失败时提前换票 - **修复 LunaTV / MoonTV 漏导入央视频、虎牙、斗鱼频道**:部分版本只把 `#EXTINF` 紧接的下一行当播放地址,中间的 `#EXTVLCOPT:network-caching` 缓冲提示会让整个频道被丢弃。对外订阅已省略仅含缓冲提示的选项块(防盗链所需的 `Referer` / `User-Agent` 仍保留),升级后在 LunaTV 后台刷新直播源即可,订阅地址无需更换(issue #114) - **文档**:README 新增「凤凰卫视怎样开启 720p」「LunaTV 导入不到频道」两条 FAQ,首屏突出 Docker 部署入口;维护者发版流程加入创建 GitHub Release 的步骤,发布说明由 `bump-version.js release-notes` 从更新日志生成,与 README 同源 ### v4.4.0 (2026-09-02) 本次为「**低配机稳定**」版本:修复多个无头 Chromium 同时运行,把内存 ≤2G 的 NAS / 小主机拖进交换分区、表现为服务卡死与硬盘狂读写的问题——全进程共用浏览器启动器限制并发、抓取失败指数退避、网页抓取只嗅探不播放;新增 `mbrowserConcurrency` 环境变量。升级镜像即可生效,现有订阅无需重新添加。 - **无头浏览器并发上限**:新增全进程共用的浏览器启动器,同时存活的 Chromium 不超过 `mbrowserConcurrency`(默认 2,超出的排队;广东台 / 湖北台 / 央视景观的常驻会话空闲时主动让位,5 分钟无人取票整个关掉)。位子以浏览器进程真正退出为准归还,进程在登记前就崩溃也会立即释放,不会出现上限一路缩水到 0 的情况;统一启动参数(关 GPU / 磁盘缓存、静音、`--disable-dev-shm-usage`),候选二进制去重,启动超时直接失败、不再逐级换浏览器往过载的机器上加负载。内存 ≤2G 建议设 1;经常同时观看广东 / 湖北 / 央视景观多路频道且内存 ≥4G 可设 3 - **抓取失败指数退避**:网页抓取型内置源 / 外部源(如纬来体育)抓取失败后按 10 → 20 → 40 分钟退避(上限为该源自己的刷新间隔),成功即清零。此前每个 5 分钟检查都会重新起 Chromium 重抓,一个抓不到的源就足以把机器拖垮 - **网页抓取只嗅探地址**:拦掉视频分片、图片、字体请求,不再把直播真的播上几十秒;广东台 / 湖北台 / 央视景观的取票会话同样拦掉图片、字体(后两者连媒体请求一并拦掉)。取票后不把页面导航走——广东台官网会在页面卸载时作废刚发的票据,导致清单 403 - **修复漏进程与噪音日志**:广东台会话初始化半途失败时关闭浏览器,不再漏进程;央视景观取票 Promise 提前挂上 catch,消除「未处理的 Promise rejection」 - **本地验证工具**:新增 `scripts/verify-browser-launcher.mjs`,用真实 Chromium 跑并发上限 / 空闲让位 / 分片拦截 / 失败退避四项(需本机有 Chromium,不进 npm test);`msourceTickSeconds` / `mbackoffBaseMinutes` 两个测试用环境变量可压缩 5 分钟检查周期与退避基数(仅供测试);npm test 新增浏览器位子与退避两组单测 - **文档**:README 新增「服务卡死、硬盘不停读写」FAQ;央视频说明补全到频道覆盖、内容来源与 FAQ ### v4.3.0 (2026-09-01) 本次为「**央视频接入**」版本:新增央视频官方直播模块,**免登录、零配置、默认开启**,一次带来 63 个官方高清频道;配套修正代理层四处会拖垮播放的通用问题(所有走清单代理/中转的模块都受益),并新增「忽略源自带分组」等频道管理能力。升级镜像即可使用,现有订阅无需重新添加。 - **新增央视频直播模块**:接入央视频官方匿名接口,提供 63 个公开频道——央视全套、CGTN 多语种及各省级卫视,统一归入「央视频」分组(默认紧跟「央视」之后,旧配置档无需重新拖拽)。清晰度档逐频道校准(多数频道为 fhd 高码率档),播放时才实时生成官方短效地址并自动续签票据,主 CDN 异常自动切换备用;清单由本机中转(不跟随 302 跳转的播放器也能播),视频分片由播放器直连官方 CDN——实测平台按「谁来拉分片」判定异常流量,服务端代拉会被 403,播放器直连则与官方 App 行为一致。10 个需登录解锁的付费剧场频道不在收录范围 - **代理层四处修正**(排查央视频播放问题时发现,与央视频无关、所有清单代理/中转模块通用):直播清单不再缓存正文——缓存会让播放器在整个缓存期内反复拿到同一批分片、播十几秒即无片可放而卡死,改为每次实时取回、只缓存已验证可用的入口地址;选 CDN 时不再试拉分片——官方 CDN 对短间隔重复请求回 403,这一枪会把完全正常的主备线路全误判为不可用;播放器批量探活的清单 HEAD/OPTIONS 改为本地收口,不再逐频道触发上游解析链(实测打开订阅 2 秒内 HEAD 29 个频道,此前会瞬间打出上百个上游请求);清单取回失败后熔断 2 秒,播放器连环重试(实测 1 秒 9 次)不再逐次转发上游,避免把正在正常播放的频道一起拖垮 - **订阅源新增「忽略源自带分组」**:有些订阅自带的分组杂乱,以前会原样进入分组列表,而关键字自动分组规则又管不到它们(规则只对「未分组」生效)。现在在订阅源编辑里勾选「忽略源自带分组」,该源全部频道即按频道名走「设置 → 🗂️ 自动分组」的关键字规则归组,规则没命中的进该源「默认分组」;开关按源独立、不影响其它源,手动移动过的频道仍以手动设置优先(issue #110) - **全局规则对全新配置档也生效**:修复关键字自动分组、统一显示名在零个性化配置的配置档上不生效的问题——它们是全局配置,此前只有档内存在任意自定义时才会被应用(issue #69 / #56 的遗留缺口) - **播放列表新增系统公告频道**:首位固定提供项目自有的「欢迎使用 iPTV for iFansClub.com」公告频道,展示使用方式、版权提醒和侵权联系说明,不引用任何第三方节目素材;为确保每份对外分发的订阅都保留必要提示,该系统频道不支持隐藏、删除、移动、排序或重命名 ### v4.2.1 (2026-08-31) 本次为「**全代理诊断与加固**」版本(issue #98 排查配套):订阅地址格式不变,升级后无需重新添加订阅。 - **全代理链路全程可观测**:订阅拉取(含 `?relay=` 参数)、清单下发、分片请求与转发结果(状态码、字节数、耗时)、302 跳转下发全部在默认日志留痕,每行带来源 IP 与 UA——curl 自查与播放器请求一眼可分;分片 404、CDN 拒绝代取、网络失败从完全静默改为可见提示。播放异常时只需试播一次、截取一段日志,即可定位卡在哪一环 - **分片 HEAD 探测真实回源**:对播放器的 HEAD 探测向 CDN 发真实 HEAD 并带回 Content-Length / Accept-Ranges(与播放器直连 CDN 拿到的一致);上游不支持 HEAD、长度不可信或分片需平台变换时自动回退合成应答,GET 行为不变。relay/proxy 清单的 HEAD 也改为返回与 GET 一致的响应头(含准确 Content-Length) - **兼容性加固**:清单行尾与 BOM 归一化(CRLF 上游不再产出混合行尾清单);HTTP keep-alive 超时从 5 秒提高到 65 秒,避开直播清单 6 秒轮询节拍 - **修复**:畸形 relay/proxy 路径不再被误当账号段返回整份订阅(改为 404 并记日志);分片路由与清单路由的大小写匹配对齐;嵌套子清单取回失败改回 502,不再把未改写清单透传给播放器;代理地址表超上限时不再优先淘汰最活跃频道的地址 ### v4.2.0 (2026-08-30) 本次为「**省市台与景观直播扩容**」版本:新增 8 个省市广电模块与虎牙、斗鱼直播模块,接入央视网「直播中国」和上海松江慢直播,并为河北、福建补充景观与地市线路。新增内容全部**免登录、默认开启**,本版新增约 140 个官方频道与城市景观直播;连同 v4.1.0 的省级模块,官方广电与景观直播在各平台正常返回时合计可提供约 240+ 个频道,实际数量会随平台接口和直播状态动态变化。 - **新增 8 个省市广电直播模块**:海南网台(7 个,海南卫视 / 三沙卫视及五个地面频道)、深圳广电第一现场(7 个,含深圳卫视4K / 深圳卫视及五个地面频道)、河北冀时(6 个非购物频道 + 13 路「美丽河北」城市景观)、辽宁北斗融媒(辽宁省台与沈阳台,最多收录 13 个白名单频道,并按当前 `live` 状态动态筛选)、湖北长江云新闻(6 个,湖北卫视 / 经视 / 综合 / 影视 / 教育 / 垄上)、广州花城+(3 个:广州综合 / 新闻 / 南国都市4K)、南京牛咔视频(4 个电视频道 + 13 路 Live 南京城市景观,自动剔除重复电视流)、青岛蓝睛(五四广场 / 奥帆中心及三路主干道城市直播) - **新增官方景观直播**:央视网「直播中国」按官网目录动态收录当前在线信号(现有约 57 路、覆盖 20 个地区),播放时从官网播放器获取 HLS;无需登录,日志中的浏览器会话仅用于执行官网播放器鉴权。央视清单与分片自动全代理以补齐 CDN 防盗链请求头,只有实际观看时才占用服务端带宽;上海松江客户端加入「松江融媒慢直播」,按公开场景清单更新主画面并排除内部测试流 - **福建官方线路扩充**:省级六路改用官网直播页的短效签名接口,播放时自动续签;海博继续提供重点地市频道,另有不依赖海博的福州综合 / 生活 / 少儿,以及厦视一套 / 二套 / 三套官方直播。各平台独立工作,任一平台异常时仍保留其它线路 - **新增虎牙、斗鱼直播模块**:与 B 站直播同款玩法——按所选分类自动收录热门直播间(虎牙默认「赛事」、斗鱼默认「网游竞技」,各按人气取前 8 并带最低人气门槛),也可手填房间号 / 直播间地址;分类、每类数量、人气门槛与优先画质(默认超清,可选原画)均可在源管理调整。两个平台免登录、默认开启,频道分别归入「虎牙」「斗鱼」分组;播放时才实时生成官方短效地址,本机只中转清单并补齐防盗链请求头,视频分片由播放器直连官方 CDN - **B 站内容与配置改进**:热门榜最低人气改为可配置,默认从 10000 调低到 3000,填 0 可关闭过滤;默认分区改为「赛事 + 知识」,后台支持赛事、知识、生活、游戏等 12 个分区可视化多选;所有自动与手动频道统一归入「B站」分组 - **新增娱乐时尚与体育精选频道**:「娱乐时尚」新增 FashionTV Paris L'Original、Global Fashion Channel、Qello Concerts、Totalmusic Concerts;「体育」新增 Stadium、MTRSPT 1 - **短效签名与代理按平台自动处理**:广州按分钟刷新签名;深圳为每条 HLS 路径独立续签;河北按官网规则生成约两小时签名;福建省级六路播放时生成约 2 小时 47 分的地址;辽宁生成短效签名并携带租户防盗链;湖北复用匿名 Chromium 会话补齐 `client-id` 与防盗链;央视景观按需读取官网播放器鉴权结果;松江按公开场景清单更新长效地址。辽宁 / 湖北 / 深圳 / 厦门 / 央视景观清单与分片全代理,河北 / 福建省级 / 松江只中转清单,其余福建地市、广州 / 南京 / 青岛基本直连 - **容器数据目录迁移**:默认数据目录从 `/migu/data` 调整为 `/iptv/data`;旧匿名卷与旧版 `./data:/migu/data` 挂载会自动识别并继续沿用,无需手动迁移 - **省市频道归类**:普通省市电视分组与源管理卡片统一只显示地区名,去掉「频道」「电视台」「地市台」等后缀;景观直播作为特殊类型仍保留「景观」后缀;广州、深圳频道与广东省台统一归入「广东」 - **省市模块命名**:源管理中的省市广电卡片统一只显示地区名(如「辽宁」「广东」),不再把北斗融媒、荔枝网等平台品牌写入标题 - **默认分组顺序**:新建配置档默认按「体育 → 昨天 / 今天 / 明天赛事 → 央视 → 卫视 → 亚太 → 国际 → 影视 → 少儿 → 教育 → 娱乐时尚 → 文旅 → B站 → 虎牙 → 斗鱼」置顶,之后连续排列地方台,景观分组统一置底;用户手动拖拽保存的顺序仍优先 - **咪咕地方频道精简**:不再输出与免登录地方官方模块重复、且高画质受账号 / VIP 限制的咪咕「地方」分组;仅保留上视东方影视并入上海、陕西四个频道并入陕西、财富天下并入江苏;咪咕「新闻」中的地方重复源、公共新闻频道和中国天气全部移除,空分组不再显示 - **国际频道归类**:项目自带的 Reuters、Sky News、NHK World、France24 从「新闻」调整到「国际」,默认紧跟在「亚太」之后 - **地方少儿频道归类**:各地官方模块的少儿、卡通及动漫频道在地方分组保持完整,同时归入「少儿」分组;遇到咪咕等来源的同名或平台长名重复项时,内容分组优先保留画质更高的地方官方线路 - **地方教育频道归类**:各地官方模块的教育、科教及教科频道在地方分组保持完整,同时归入「教育」分组;同台多源时内容分组优先地方官方线路,「少儿科教」类频道仍归「少儿」 - **地方体育频道归类**:各地官方模块的体育、体育休闲及文旅体育频道在地方分组保持完整,同时归入「体育」分组;同台多源时体育分组优先地方官方线路 - **咪咕综艺分组移除**:不再输出仅含「最强综艺趴」和重复江苏频道的咪咕「综艺」分组;地方综艺频道仍保留在各自省份分组 - **纪实分组精简**:「纪实」统一更名为「文旅」,删除咪咕专题轮播「新动力量创一流」,以及已有河南 / 海南官方模块替代的梨园、社会与法、海南文旅咪咕副本 - **CCTV5 双分组保留**:CCTV5 体育和 CCTV5+ 体育赛事在「体育」与「央视」中各保留一份;其余咪咕跨分组重复项仍照常去重 ### v4.1.0 (2026-08-29) 本次为「**省级台大扩容**」版本:一次性新增 9 个省级广电官方直播抓取模块(模块数 2 → 11),全部**零配置、免登录、默认开启**——升级后无需任何操作,约 106 个官方频道自动按省分组进入播放列表;另有「全代理版」订阅与源管理页改版。 - **新增 9 个省级广电直播模块**:广东荔枝网(17 个频道,含广东卫视 / 大湾区卫视 / 广东4K)、福建(官网短效接口提供 6 个省级台,海博提供 9 个地市台)、大象新闻河南(13 个,河南卫视 + 梨园 / 武术等特色频道)、看看新闻上海(13 个:东方卫视 / 五星体育等 8 个 SMG 频道 + 陆家嘴 / 外滩 / 北外滩等 5 路景观慢直播)、芒果TV(12 个,金鹰卡通 / 湖南经视等官网固定频道)、江苏网络台(10 个,含江苏卫视4K)、浙江新蓝网(9 个)、山东齐鲁网(9 个)、广西网络台(7 个)。短效地址续签、防盗链请求头、最高画质回落、购物频道剔除全部由服务端自动处理——模块卡片没有、也不需要任何配置项 - **模块默认开启,装好即出频道**:新装与从未动过模块开关的部署,升级后新模块(含哔哩哔哩直播)自动启用;明确关闭过的模块保持关闭,设过 `menableExtractors=false` 的空白部署也不会被突然打开。不想要哪个省,去「源管理」把对应卡片关掉即可 - **流的取回方式按平台特性各就各位**:广西官方流带平台自研加密,本机代理边下边解密,普通播放器直接可播;广东官网地址约 2 分钟过期,用项目既有的无头浏览器无感续签(Docker 镜像自带 Chromium 无需操心;裸机部署需装 Chrome 或用 `PUPPETEER_EXECUTABLE_PATH` / `mchromePath` 指定路径,没装只影响这一个模块);广西 / 江苏 / 芒果TV / 看看新闻清单与分片全代理(占用服务器带宽),浙江 / 广东 / 福建省级只中转清单、分片由播放器直连官方 CDN,河南 / 山东及福建地市基本直连 - **源管理页改版**:改为「自定义源 / 内置抓取模块 / 内置源」三个标签页切换,标签直接显示启用数 / 总数并记住上次停留位置;模块配置与运行详情改在居中弹窗打开(Esc / 点遮罩关闭,有未保存改动先确认),免配置模块入口显示「详情」;模块抓取失败但仍有上一轮数据时,卡片标注「沿用缓存 N 频道」,不再让人误以为一切正常 - **全代理版订阅(`?relay=2`)**:清单与视频分片全部由服务器同源下发,专治用了兼容版(`?relay=1`)仍然转圈的播放器(极空间「极影视」等取不动清单内跨主机地址的设备);后台三处订阅地址栏均新增「全代理版」一键复制。注意视频流会经服务器中转,能用兼容版就不要用它(issue #98) - **内置「精选频道」源大扫除**:133 → 121 个频道——探活脚本升级为深度探活(真实下载分片、rtmp 实测握手播放),识破一批「HTTP 200 但实为失效页」与死 rtmp 的伪活源并剔除,现存 121 个频道全部实测可播;湖南 / 东方 / 浙江卫视 4K 移至清单开头 - **依赖安全更新**:升级 basic-ftp(critical)与 ws / ip-address / js-yaml 等依赖修复已知漏洞,仅更新 lockfile、功能与配置无变化(issue #105) - **杂项**:B 站直播刷新间隔收紧为 45~90 分钟,越界旧值自动回落默认 45;网页播放器支持无 `.m3u8` 后缀的同源动态清单(新模块所需);本地裸跑建议 Node.js 20+(推荐 22 LTS);Dockerfile 跳过浏览器下载的变量改用 puppeteer 实际识别的 `PUPPETEER_SKIP_DOWNLOAD`,行为不变(issue #106) ### v4.0.1 (2026-08-23) 本次为「**源模块化**」大版本:咪咕从写死的内核收编为第一个「抓取模块」,新增哔哩哔哩直播模块,全部内容来源统一进顶层「源管理」。**升级完全向后兼容**——存量配置自动迁移、老环境变量继续生效,唯一可感知的变化是抓取频道的分组归一(见下)。 - **全新「源管理」与抓取模块架构**:抓取模块、内置源、精选频道、自定义源聚合为一页卡片网格,每张模块卡片自带**独立开关 + 配置 + 健康状态**;原「系统配置」里的平台账号 / 画质 / H.265 / HDR / 就近取流归位到模块卡片(**存量配置自动迁移,`muserId` / `mrateType` / `menableH265` 等环境变量继续生效**),「获取账号」书签工具随之搬家,后台顶部有搬家指路条 - **哔哩哔哩直播模块(一键开启即得正在打的比赛)**:在「源管理」打开开关即自动抓取所选分区(默认「赛事」)人气前 8 的直播间(带人气下限,挡掉同场比赛的多机位小号),也可手填房间号 / 直播间地址 / b23.tv 短链;SESSDATA 支持**扫码登录**(也有手动指引),不填「超清」、填了解锁「原画」;可选优先 HLS / 优先 H.264 与播放缓冲,环境变量 `mbiliSessdata` - **频道级播放选项(#EXTVLCOPT)全链路贯通**:按频道携带 Referer / UA / 缓冲参数——B 站这类需要请求头的直链源开箱能播,订阅导入的第三方源带的 #EXTVLCOPT 也不再丢失 - **抓取频道分组归一**:同一频道只出现在一个分组(「先出现者胜」),分组顺序沿用上游返回。**注意**:分组分布与旧版略有不同,做过个性化编排的用户升级后可进「我的频道」核对一遍 - **抓取核心稳定性大扫除**:token 自动续期改用墙钟时间戳(修「更新间隔不整除 720 小时时永不续期」)、不再被容器重启 / 后台保存反复触发;平台接口暂时不可达时改用上一轮缓存,已抓到的频道不再被静默清空;设了「启动时不更新」的用户重启后频道整批消失 / 体育赛事重复追加均已修复;播放请求异常返回明确错误,不再让播放器挂死转圈 - **后台修复一批**:改访问密码后不再卡 403;「保存并重启」正确执行重启并探活后跳转;已删除的内置订阅源不再复活;表单新增「未保存改动」标记与保存提示;凭据(token / SESSDATA)支持**一键清除**;模块表单只提交改过的字段——环境变量部署的用户点保存,不会再把 env 值固化成文件值 - **咪咕 token 不再被 /api/system-config 明文回显**:凭据只回「有没有值」(后台显示掩码),未设访问密码的部署不再能被同网段一个 GET 读走登录态 - **兼容版订阅再进一步**:多码率 master 清单拍平为媒体清单直出,去掉播放器侧嵌套跳转,老电视盒兼容性更好(issue #98) - **撤掉「启用抓取模块」总开关**:每张卡片的开关是唯一真相,原总开关状态升级时自动折进各模块,无感迁移;内置订阅源也不再混在「自定义源」列表里 v4.0.1 为 v4.0.0 发布当日的重打版本:并入 B 站扫码登录与后台登录态显示的收尾修复,其余内容同 v4.0.0。 ### v3.17.0 (2026-08-19) - **配置导出 / 导入(备份 · 换机迁移)**:后台「设置 → 系统配置 → 配置备份 / 迁移」一键把全部配置(系统配置、外部订阅源、我的频道与各配置档、EPG 源、频道别名 / 分组规则、用户令牌)导出为单个备份文件,换机 / 重装后导入即可恢复,多数配置即时生效(端口修改需重启)。导入前自动把当前配置快照到数据目录 `config-pre-import-backup.json`,导错可恢复;摸不到 Docker 数据卷目录的 NAS 用户(极空间 / 群晖等)从此不用再找卷路径。注意:导出文件包含咪咕账号与访问密码,请妥善保管;自定义台标 `logos/` 需单独拷贝(issue #99) - **兼容版订阅在极影视仍无法播放的修复**:兼容版(清单直出)频道地址现带 `.m3u8` 后缀(`/relay/<频道>.m3u8`)——极空间「极影视」等播放器按 URL 后缀识别流格式,无后缀会被判定不可播放;HEAD 探测也改为按 HLS 类型应答。v3.16.0 已添加的旧格式兼容版订阅继续可用,重新复制一次兼容版地址即可获得新格式(issue #98) - **咪咕接口不可达时干净失败**:服务器连不上 `play.miguvideo.com`(挂代理 / 海外部署 / DNS 异常最常见)时,此前日志会刷两大段错误堆栈;现在只打一行错误摘要,播放器会收到「咪咕接口请求失败:网络超时或不可达」的明确提示并自动短周期重试,排查方向一目了然 - **内置列表**:移除失效的 苏州4K ### v3.16.0 (2026-08-18) - **「兼容版订阅」清单直出:修复极空间极影视等播放器播放一直转圈**:少数播放器(极空间「极影视」、部分老电视盒)不跟随 302 跳转,表现为频道列表 / 台标正常、点开播放一直转圈然后失败。现提供**兼容版订阅**(原订阅地址加 `?relay=1`,后台「我的频道」订阅地址栏 / 配置档 / 用户令牌处均有「兼容版」一键复制):频道地址改为清单直出——服务器替播放器完成跳转、直接返回播放清单,播放器无需跟随任何跳转;视频流仍由播放器直连 CDN,不占服务器带宽,回看同样可用。能正常播放的播放器无需换用。README 新增「播放器适配一览表」与对应 FAQ 条目(issue #98) - **内置列表港台频道大更新**:港澳台(亚太)频道大幅更新补充,体育分组调整;凤凰系频道更名为通用短名(凤凰中文 / 凤凰资讯 / 凤凰香港),配合 v3.15.0 的凤凰系 EPG 归一,长短名均可正常匹配节目单与台标
### v3.15.0 (2026-08-16) - **咪咕「客户端就近取流」开关:解决跨运营商观看卡顿**:服务器和观看设备不在同一运营商网络时(如服务器接移动宽带、电视用联通网络),咪咕频道常见加载慢 / 播不了——因为播放地址由服务器解析,拿到的是服务器侧运营商的 CDN 节点。在「系统配置」勾选本开关(或环境变量 `menableClientDispatch=true`)后,播放地址改由**播放器所在网络**就近选择节点,跨网观看即可流畅。默认关闭,同网部署无需开启;保存即时生效、无需重启(issue #82) - **外部源失效检测**:「源管理」的订阅 / 直连源新增「检测失效」:并发探测该源全部频道的连通性(带超时与重试,只取响应状态、不下载流量),实时进度,完成后列出失效清单(超时 / HTTP 状态码分类)与存活频道首字节延迟参考,失效频道可**一键隐藏到当前配置档**(只隐藏不删除,可随时在「已隐藏」恢复)。rtmp/rtp/udp 组播无法 HTTP 探测会跳过保留;带防盗链的源可能误报,请以实际播放为准(issue #88) - **外部源支持排序(决定播放器里源1/源2 的顺序)**:源列表每个源新增 ▲/▼ 上移下移,列表顺序 = 播放列表输出顺序 = 播放器同名频道「源1/源2」顺序,把偏好的源排前面即成为默认源;调整后自动保存并重新生成播放列表。排序作用于自定义源之间(合并顺序仍为 咪咕 > 内置 > 自定义)(issue #94) - **频道显示所属订阅源**:「我的频道」每个频道名后新增所属源徽标(单源显示源名、多源显示数量、悬停看完整列表),频道详情弹窗也改为显示具体源名——多源管理一目了然。刻意不改输出给播放器的频道名,避免破坏同名聚合与 EPG / 台标匹配(issue #94) - **修复凤凰卫视频道匹配不上外部 EPG**:内置频道用长名(凤凰卫视中文台 / 资讯台),肥羊等外部 EPG 源用短名(凤凰中文 / 凤凰资讯),命名规则没打通导致节目单一直 0 命中;现繁简长短各种写法自动归一(实测凤凰中文 / 资讯分别命中 386 / 508 条节目),升级后无需改任何配置,等一次 EPG 刷新即可(issue #97) - **修复公网地址被强制补端口**:「系统配置 → 公网地址」填 `http(s)://` 完整地址时不再强行拼上服务端口——内网穿透 / 反向代理走 80/443 标准端口的场景此前会被改成 `域名:1905` 导致播放不了;只填裸 ip / 域名仍自动补全协议与端口,老配置不受影响 - **修复抓取模式被站点反爬拦截**:部分站点(如 vtvgo.vn)检测到自动化浏览器后整页白屏,导致「未能提取到m3u8链接」;抓取内核现已隐藏自动化特征、使用完整版 Chrome UA,并对需要点一次播放才开始拉流的页面自动尝试起播 - **修复外部源并发操作竞态**:订阅导入 / 网页抓取进行中调整源顺序,可能把抓取结果写进相邻的另一个源并持久化;现已加操作守卫,且服务端回写改为按源稳定 id 定位(源被删则放弃写入),多标签页、自动刷新并发等场景一并免疫 ### v3.14.0 (2026-07-11) - **批量把频道整块移到分组最前/最后**:进入「批量管理」勾选频道后,工具栏新增「移到最前 / 移到最后」,把选中的一批频道作为整块挪到当前分组的组首或组尾(其余频道保持原顺序)——整源频道一次排到分组前面/后面,不用再逐个拖拽调整。若该分组当前为「名称自动排序」,需先切回「手动」排序(issue #83) - **修复订阅源频道名/播放异常**:部分订阅把 `group-title` 写在 `#EXTINF` 逗号之后(如 `tvg-logo="…",group-title="央视",CCTV1综合`),旧解析按「第一个逗号之后」取名,会把 `group-title="央视"` 一并当成频道名;脏名字回填进 `tvg-id="…"` 后破坏整行 EXTINF 语法,导致该频道显示错乱、播放异常。改为取「最后一个属性引号之后的逗号」后的部分,名字不再吞属性。已加入的源刷新一次即修正(issue #84) - **修复网页提取源播放地址被写坏**:「网页提取」模式的源,若页面文本里的地址含 `×tamp=`、`¬in=` 这类参数,浏览器解析网页时会把 `×`、`¬` 等不带分号的旧式 HTML 实体误解成 `×`、`¬` 等字符,坏地址随后被保存导致一直播不了;现已自动还原。已坏的地址无需手动处理,下次刷新该源即修正。仅影响网页提取(填「网页地址」抓取)的源,订阅源不受影响(issue #84) - **后台「播放地址」显示修正**:频道详情弹窗里带 `×tamp=` 的地址此前会被浏览器渲染成 `×tamp=`(仅显示层,复制按钮与对外播放列表始终是正确地址);现已转义,显示与实际一致(issue #84) ### v3.13.0 (2026-07-05) - **按配置档选择源**:每套配置档可勾选「启用哪些源」(咪咕 / 各内置源 / 各自定义源)——档管理弹窗每档新增「源」按钮批量勾选;添加/编辑自定义源时也可直接选「在哪些配置档显示」。多源同频道只要有一个来源启用就保留;先按源粗筛、再细化隐藏,多源上千频道不用再逐个隐藏(issue #29 / #68) - **设置页拆二级标签**:原「系统配置」页更名「设置」,内部拆为 系统配置 / 频道别名 / 自动分组 / EPG 聚合 / 用户管理 五个二级标签,不再一页到底;系统配置新增「保存并重启」按钮,需重启的配置一步生效(issue #72) - **关键字分组规则支持上移/下移**:多条规则「首条命中胜」,现可直接调序改优先级,不用删了重加(issue #69) - **自动刷新间隔更准时**:外部源「自动刷新间隔」此前每小时才检查一次,导致设定的间隔不精确(如设 60 分钟最坏要近 2 小时才刷);改为每 5 分钟检查、到点即刷(间隔最小仍为 60 分钟)(issue #73) - **画质提示更清楚**:后台「咪咕账号 / 画质」提示改为明确说明——游客(不填账号)最高 540p、填免费咪咕账号可到 720p、蓝光 1080p 及以上需 VIP,避免「游客上不去 720p」的误解(issue #76) ### v3.12.0 (2026-06-29) - **关键字自动分组**:后台新增「关键字自动分组」规则——按频道名关键字(如 `央视 ← CCTV`)把「未分组」频道自动归到对应分组。自定义订阅源里没写分组、每次刷新又回到未分组的频道,配一次以后自动归位,不用再天天手动整理;只对「未分组」生效、不动源已分好的组,手动移动优先(issue #69) - **添加订阅源可设「默认分组」**:订阅源表单新增「默认分组」,订阅里没自带分组的频道整体归到这个分组(频道自带分组的保持不变),适合整源单主题的情况;与上面的关键字规则互补、按需选用(issue #69) - **设置布局优化**:把「频道别名」「关键字自动分组」两张规则卡片从系统配置最底上移、与「统一频道显示名」聚在一起,更好找 ### v3.11.0 (2026-06-28) - **频道列表显示「配对状态」+ 详情可直接设别名**:「我的频道」列表每个频道用两个小圆点显示节目单 / 台标是否匹配(绿=已匹配 / 红=未匹配,上方有常驻图例说明);没匹配上的点开「频道详情」可直接填规范名给它设别名(追加、不覆盖已有),保存即时重算、不用去配置页;详情台标预览也放大了(issue #62) - **订阅地址栏支持复制公网地址**:在「系统配置 → 公网地址」填好公网域名:端口后,订阅栏新增「复制公网订阅 / 公网 EPG」按钮——分享给外网用户时,m3u 里的节目单地址(`x-tvg-url`)也会是公网地址,不用再手动替换内网 IP(issue #62) - **频道别名支持「编辑」+ 归一支持繁体转简体**:别名规则可直接编辑(不必先删再重输)、规则多了列表可滚动不撑长页面;EPG / 台标归一时会把常见繁体频道名(鳳凰衛視 / 緯來體育 等)转成简体再匹配,繁体源也能对上(issue #56 / #62) - **修复 CCTV 4K / 8K 被错并进 CCTV4 / CCTV8**:CCTV-4K / CCTV-8K 是独立的超高清频道,之前归一时丢掉了数字后的「K」、导致和 CCTV-4 / CCTV-8 撞成同一台互相合并,现已正确区分(issue #56) - **内置「精选频道」增加本地兜底**:远程(GitHub raw + 各镜像)全部拉不到时,回退读镜像里自带的频道列表,保证「无外网、镜像也挂」的环境下精选频道仍能加载(能联网的照常拿最新) ### v3.10.0 (2026-06-27) - **内置「精选频道」新增一批频道**:体育(beIN SPORTS XTRA / ESPN / FIFA+ / NBC Sports NOW / NHL Network / Tennis Channel 等)、新闻(Reuters / Sky News / NHK World / France24)、纪实(National Geographic / Love Nature 4K)、影视(HBO / Cinemax / LMN 系列)、卫视(苏州4K)及央视付费频道等,开箱即用(「精选频道」为远程下发,已有部署无需重建镜像即可获得) - **「我的频道」列表显示优化**:频道名加宽页面与卡片后完整显示(不再被截断成两三个字);台标去掉背景框、非方形图自然显示、无台标则留空对齐;移除列表里不易懂的「节目单」配对图标,配对状态改到「频道详情」里以文字展示(issue #62) - **修复关闭 H.265 / HDR 后不生效**:咪咕流地址按频道缓存、且缓存键不含 H.265 / HDR,改了开关旧缓存仍发旧编码的流。现在后台「系统配置」保存后会即时清掉该缓存、无需等缓存过期或重启容器(issue #60) - **内置「纬来体育」切换播放源**:原 `jrkan.com` 走 Cloudflare、国内不翻墙打不开,切到国内可达的 `jrs03.com`(远程下发,已有部署自动切换、无需重建镜像) ### v3.9.0 (2026-06-27) - **统一频道显示名(按规则批量合并不同源同台命名)**:不同订阅源里同一个台的不同写法(`CCTV1` / `CCTV-1` / `CCTV1综合`)可按规则批量统一成同一个显示名,同名后播放器能自动并为多线路。开关 `enableDisplayNameUnify`(**默认关、opt-in**;环境变量 `menableDisplayNameUnify=true` 开启),后台「系统配置」可勾选、保存即时生效;**手动重命名优先、不会被覆盖**。另配套「频道别名」卡片,可视化维护 `channel-aliases.json`(规范名 ← 别名),补内置规则兜不住的写法(issue #56) - **后台直观看到每个频道的配对状态 + 内联订阅地址**:「我的频道」每个频道卡片现在显示台标缩略图(没台标的显示占位)和节目单徽章(绿=已匹配 / 灰=未匹配),不用再逐个点开详情核对;「频道详情」新增「配对状态」一行,已匹配会显示归一后的规范名(如「央视1套高清 → CCTV1综合」),消除「显示名特殊、看着像没匹配」的误解;顶部新增订阅地址栏,当前档的 m3u 与 EPG 地址一键复制,免点「编辑」(issue #38) - **修复特殊命名的常见频道匹配不到台标**:名字带信源 / 清晰度后缀的常见频道(如 `CCTV1高清(电信)`、`湖南卫视(电信)`)此前能匹配上节目单、却匹配不到台标——台标按「显示名」取图、EPG 按「归一名」匹配,两边口径不一致。现台标改为按归一名匹配(`CCTV1高清(电信)` → `CCTV1`、`湖南卫视(电信)` → `湖南卫视`),**频道显示名保持不变**(`(电信)` 等信源标识仍可见);同时频道名归一增加运营商 / 信源后缀剔除(电信 / 联通 / IPTV…),非 CCTV 频道的 EPG 匹配也一并受益(issue #40) - **放出「节目单更新间隔」配置项**:之前此项在「系统配置」里被隐藏,现在显示出来可调整,并加红色提示——不建议设太短(频繁请求咪咕可能触发风控),**填了咪咕 Token 时建议 ≥8 小时**,修改后需重启生效 - **修正 token 刷新请求的 Content-Type 拼写**:请求头误写成 `appsication/json`,改回标准 `application/json`,提升咪咕 token 刷新的可靠性 ### v3.8.0 (2026-06-25) - **用户访问令牌 / 一人一源(测试阶段)**:可在后台「系统配置 → 用户管理」给每个家人 / 朋友生成独立的源地址 `/u/<令牌>/m3u`,支持单独停用、重置令牌、绑定不同频道档(一人一内容),且**令牌只能拉源、进不了管理后台**——分享源地址不再连带暴露后台。泄露可追溯到具体某人、可单独吊销,其他人不受影响。**本功能仍在测试中**,建议先小范围试用、欢迎反馈;不新增用户则对现有部署与现有链接零影响。可用 `enableUserTokens=false`(或环境变量 `menableUserTokens=false`)关闭 - **修复外部 EPG「加了源一个都匹配不上」**:很多 EPG 源的频道 id 是数字 / 拼音代号、真实台名写在 `` 里,旧逻辑只按 id 比对导致 0 命中;现改为优先按 display-name 归一配对(并保留 id 兜底)。另注意:外部 EPG 只给咪咕没覆盖的频道补节目单,咪咕已有 EPG 的频道显示匹配 0 属正常(issue #53) - **自定义分组「隐藏分组」按钮加说明**:自定义分组本就只支持「删除分组」(不提供隐藏,因为它不随源刷新复活),现在鼠标悬停会提示「请用删除分组、或用批量管理隐藏其中频道」,避免误以为能整组隐藏(issue #42 追问) ### v3.7.0 (2026-06-24) - **EPG 聚合:多个第三方节目单源自动合并成一份**:后台「系统配置 → EPG 节目单源(聚合)」可添加多个 XMLTV/EPG 源(支持 `.xml` 与 `.xml.gz`),程序定时拉取、把各源频道名归一到本项目规范名后合并进 `/playback.xml`——某频道只要任一源里有就能补上节目单,咪咕已覆盖的频道始终优先、不被外部覆盖。默认开启、内置默认源、开箱即用,无需手动配;每个源可看抓取时间 / 频道数 / 已匹配数,可调刷新间隔与优先级,并支持「立即刷新」。即使关闭咪咕(`enableMigu=false`),外部 EPG 也能独立产出节目单。可用 `enableEpgAggregation`(或环境变量 `menableEpgAggregation=false`)关闭(issue #38) - **网页抓取源启动浏览器更稳**:抓取类源(如纬来体育)现在会优先使用系统已安装的 Google Chrome / Chromium / Edge,裸跑(非 Docker)只要装了 Chrome 就开箱即用,不必再手动 `npx puppeteer browsers install chrome` 或下载特定版本(该版本可能被部分系统的安全软件删除导致启动失败);也可用环境变量 `PUPPETEER_EXECUTABLE_PATH` 显式指定。Docker 部署不受影响(仍使用镜像内置 Chromium) - **频道详情布局优化**:把「播放地址」与拉起播放器(IINA / VLC / PotPlayer)的按钮移到靠上位置(紧跟频道 ID、在移动 / 重命名 / 复制 / 台标等管理操作之前),并放大详情弹窗,常用的复制地址 / 拉起播放器不再被挤到底部 - **修复纬来体育源抓取失败**:内置源「纬来体育」旧域名 `jrkan66.com` 已失效,切换到 `jrkan.com` 的同名页面(该配置为远程下发,部署端会自动更新、无需重建镜像) ### v3.6.0 (2026-06-23) - **频道可一键复制到多个分组**:「频道详情」新增「复制到分组」,可把自己的频道(外部 / 直连 / 订阅)同时放进多个分组(如把 TVB 复制到「亚太」和「香港」),每个分组里是独立的一份、隐藏 / 排序 / 删除互不影响;复制的是固定地址的独立频道、可在「外部源管理」删除(咪咕频道地址为服务端跳转、暂不支持)(issue #37) - **支持导入本地 .m3u/.txt 文件批量加源**:「添加自定义源 → 订阅模式」新增「本地文件 / 粘贴」,可选本地 m3u/m3u8/txt 文件、或直接粘贴内容批量导入,自动识别格式与 GBK/UTF-8 编码,全程不发起网络请求(issue #43) - **后台上传 / 预览频道台标**:「频道详情」可预览当前台标,并给没台标的频道直接上传图片(png/jpg/webp),存到 `data/logos/`、优先级最高、保存即生效,旁边可移除(issue #40) - **修复频道移动到其它分组后无法隐藏**:从原分组移动到新分组的频道,之前在新分组里点隐藏会「提示已隐藏但实际仍显示」,再次批量移动 / 移回原组也会失效(隐藏 / 移动用错了分组标识);现统一按频道真实原始分组处理,已修正(issue #42) ### v3.5.0 (2026-06-19) - **频道名称 / TVG 规整(EPG 别名归一)**:异构外部源里五花八门的频道名(`CCTV-1` / `CCTV1HD` / `CCTV-1综合` …)会自动把 `tvg-id`/`tvg-name` 归一到规范名(= 本项目 EPG `playback.xml` 里的频道名,即咪咕频道名),让外部源频道也能匹配上节目单(issue #39)。CCTV 系列规范名内置可用;卫视/港台等由运行时的 EPG 全集自动覆盖;可在数据目录放 `channel-aliases.json`(格式 `{"规范名": ["别名1","别名2"]}`)自定义补充。只改 tvg、不动频道显示名。可用 `enableTvgNormalize`(或环境变量 `menableTvgNormalize=false`)关闭 - **修复分组重命名/新建时误报「分组已存在」**:当某分组的频道被全部移动到别处、或该分组被隐藏/删除而在「我的频道」列表里已不可见时,它的名字之前仍被占用,导致把别的分组改名成它、或新建同名分组时报「分组已存在」却在列表里找不到它(issue #35);现改为只按「当前可见分组」判重——看不到的分组不再占名,但同名分组若当前可见仍会被拦截(防止误合并) ### v3.4.0 (2026-06-17) - **订阅源支持带账号密码的地址**:添加订阅源时可直接填 `http://用户名:密码@域名/x.m3u` 形式的地址,系统会自动转成 HTTP Basic 认证去拉取,不再因地址里带 `用户名:密码@` 而获取失败(注:仅认证「拉取播放列表」这一步;列表内各频道的流地址若也需认证,由播放器侧处理) - **后台默认给带 `.m3u` 后缀的订阅地址**:「我的频道」配置档里复制的订阅地址改为 `/interface.m3u`(内容与 `/m3u` 完全相同),更适配「按后缀校验订阅链接」的 App(飞牛影视等),不用再手动改地址;裸 `/m3u` 仍然有效,已配好的地址无需更换 - **修复飞牛影视等无法订阅播放列表**:`/m3u`、`/interface.m3u` 之前以媒体类型 `audio/x-mpegurl` 返回,会被飞牛订阅 / 浏览器当成「一个视频」去播放、而非当订阅文本解析,导致订阅失败;现改为 `text/plain` 返回(与 GitHub raw 一致),普通播放器不受影响 - **修复「分组内按名称排序」单独设置时不生效**:当某配置档只设了某分组「排序:名称」、且没有其它任何自定义(隐藏 / 分组 / 重命名等)时,该排序之前不会生效,现已修复 ### v3.3.0 (2026-06-14) 本次为「多套配置档(大分组)」大版本:一套服务可维护多套个性化播放列表,给家里不同电视(大厅老人 / 卧室年轻人 / 茶室)各用各的;同时补齐外部频道台标、修复多个 issue、优化若干体验。 - **多套配置档(大分组)**:「我的频道」可新建多套配置档,每套独立保存隐藏 / 分组 / 排序 / 重命名,通过 `/m3u?profile=<短名>`(如 `/m3u?profile=woshi`)访问、互不影响——不同电视填各自地址即可各看各的。底层频道 / EPG / 回看多档共享,新增电视不增加抓取成本。**完全向后兼容**:默认档就是原来的「我的频道」、地址仍是裸 `/m3u`,老用户与已配好的电视零感知、无需改地址、无数据迁移 - **配置档后台集中管理**:「我的频道」首屏只留「当前档:xx + 编辑」一个入口;点开弹窗统一切换 / 新建 / 改名 / 删除,每档显示各自访问地址可一键复制。新建即**复制当前档**(填中文显示名 + 选填英文地址短名),适合从一台派生另一台再微调。(「重置」按钮已从标题行移入此弹窗,且只重置当前档) - **分组内按名称自动排序**:「我的频道」每个分组可切「排序:手动 / 名称」;按名称时组内频道自动排序、新增台自动归位(中文按拼音、CCTV1/2/10 按数字),方便在电视上快速定位、找失效台 - **隐藏分组里单独/批量移动频道**:隐藏的整组可直接进「批量移动频道」,把个别或多个频道移到可见分组,不用再先恢复整组、移完再重新隐藏 - **外部/精选频道台标**:精选频道原本没图标,现按频道名自动补台标(默认用公共台标库 fanmingming,命中约 1/3);想补全的把 `<频道名>.png` 放进数据目录的 `logos/` 文件夹即可,优先级高于公共库。可用环境变量 `mexternalLogoBase` 改地址或留空关闭 - **新增 `/interface.m3u` 订阅地址**:内容与 `/m3u` 完全相同、仅多 `.m3u` 后缀——解决飞牛影视等按后缀校验订阅地址、填 `/m3u` 报「链接不正确」的问题 - **后台可调 H.265 +「只有声音」引导**:「系统配置」露出 H.265 开关并加说明——部分频道「只有声音、没画面」多因播放器/设备不支持 H.265(HEVC),关闭即回落到兼容性最好的 H.264(个别频道仍只有声音可再用 `menableHDR=false` 关 HDR/Vivid) - **修复自建分组名中文乱码**:保存「我的频道」配置时,中文名在网络分包边界可能被解码错(如「央视咪咕」→「央视??咕」),已改为按完整字节解码修复。 已经乱掉的分组名不会自动复原,升级后重新改名一次即可 - **修复「恢复所有频道」误报**:之前点该按钮会弹「恢复失败: channelIds is not defined」(其实已恢复成功),现正确提示「已恢复 N 个频道」 ### v3.2.0 (2026-06-07) - **「我的频道」显示总频道数**:管理后台「我的频道」标题后实时显示当前总频道数(共 X 个频道),随频道增删 / 移动自动更新 ### v3.1.0 (2026-06-07) - **内置源配置支持远程拉取**:`built-in-sources.json` 改为运行时优先从仓库 raw 链接拉取(GitHub 镜像 + 数据卷缓存 + 镜像内置 三重兜底,国内拉不到也和纯本地一样稳)。纬来体育等需网页抓取的源,其抓取网址 webUrl 现在 **push 即更新、无需重建镜像**(webUrl 变更会自动重抓);可用环境变量 `mbuiltInSourcesUrl` 改源地址或置空关闭 - **内置单频道源并入「精选频道」统一管理**:把 WildEarth / Red Bull / 4K 卫视等直链频道从 `built-in-sources.json` 移入 `IPTV.m3u`,`built-in-sources.json` 仅保留需网页抓取的纬来体育;以后这些频道改 `IPTV.m3u` push 即可。合并时按「同分组 名称+地址」去重,与未升级镜像并存也不会重复 ### v3.0.0 (2026-06-06) 本次将内置订阅源从依赖第三方链接切换为项目自维护,运行时不再依赖外部仓库的内容与可用性。 - **内置订阅源改为自维护**:移除第三方 YueChan 的「港澳地方频道 / 全球频道」两个内置订阅,替换为项目自带、可自行维护更新的「精选频道」(央视 / 港澳台 / 地方 / 国际,约 115 频道;源文件 `IPTV.m3u` 随仓库分发,走本仓库的 raw 链接定时刷新),不再依赖第三方仓库的内容与可用性 - **老用户自动清理「僵尸源」**:升级后启动时一次性移除已退役的旧 YueChan 订阅(含其缓存频道),避免「换源后旧源残留、且因不在内置列表里而连开关都关不掉」;只跑一次,尊重用户后续的手动增删 ### v2.2.1 (2026-06-05) - **核心内容开关独立成组**:管理后台「系统配置」中的「启用咪咕源 / 内置单频道源 / 内置订阅源」三项从常规配置里独立出来,做成醒目的「核心内容开关」卡片(红色描边、标注默认开启并提示谨慎关闭),与端口 / 密码等普通配置项形成 UI 区分,降低误关导致频道大幅减少甚至空白的概率 - **移除后台「一键空白」按钮**:该按钮仅是一次性勾掉上述三个开关、易误触,且与单独勾选重复,本版移除;需要空白部署仍可用环境变量 `mblank` 或手动关闭三个开关实现 ### v2.2.0 (2026-06-05) - **订阅源支持 txt 格式**:订阅模式现自动识别播放列表格式,除 m3u/m3u8 外也支持 txt(diyp/TVBox:`分组,#genre#` / `频道名,地址`,一个频道用 `#` 连多个备用源时取首个),无需额外设置;兼容 GBK/GB2312 编码 - **内容开关 / 空白部署**:新增 `mblank` 空白模式总开关 + `menableMigu` / `menableBuiltInSources` / `menableBuiltInSubscriptions` 三个细粒度开关(环境变量或管理后台「系统配置」勾选;细粒度优先于 `mblank`;**默认全开,老用户无感**)。一行 `mblank=true` 即得到纯频道管理的空白部署,或单独关掉自带的内置源 / 内置订阅源,避免与自建源同名分组撞车 - **后台「一键空白」**:系统配置页新增上述三个开关与一键空白按钮,保存后自动重新生成播放列表、无需重启即时生效 - **内置订阅源可彻底删除**:自带的「港澳地方频道 / 全球频道」订阅改为「只播种一次」,删除后重启不再自动复活(尊重用户删除);关闭内置订阅时抓取层与输出层一并跳过,不再无谓联网下载 - **修复 Docker 主版本标签**:发布镜像的主版本滚动标签此前一直错打成 `:1`(实际是 v2.x),现修正为 `:2`,并修 `bump-version.js` 使其今后自动更新该标签 ### v2.1.0 (2026-06-02) - **单频道重命名**:频道详情弹窗可给任意频道自定义显示名(清空或改回原名即恢复);只改显示名、不动 `tvg-name`,不影响 EPG 匹配。适合统一不同订阅源对同一频道的不同命名 - **批量移动到分组**:「我的频道」批量管理模式新增「移动选中到〈分组〉」,可一次把多个选中频道移到指定分组 - **空数据不覆盖播放列表**:某次刷新获取到 0 个频道时(通常是咪咕/网络不可达)保留上一次的好播放列表,不再用空文件覆盖,避免「我的频道」被清空且不自愈 - **管理页显示实际生效配置**:系统配置接口改为返回「环境变量 + 配置文件 + 默认值」合并后的实际生效值——修复用环境变量(`muserId`/`mtoken` 等)配置时,换电脑/无浏览器自动填充的情况下表单显示为空的问题 - **环境变量覆盖提示**:当某些配置由 docker-compose 环境变量设置时,系统配置页顶部醒目提示并列出受影响项(说明清空保存会回退到环境变量值、需改 compose) - **检查更新日志优化**:镜像逐个回退时的失败改为黄色警告,仅全部镜像失败才标红,避免成功的检查更新看起来像报错 ### v2.0.1 (2026-05-31) - **分组上移/下移后选中跟随**:之前移动分组后,左侧选中仍停在原位置(变成了被换上来的另一个分组),要重新点选才能继续移动;现在选中会**跟随被移动的分组**,可连续点上移/下移(例如把某分组一路移到最后) - **配置持久化(升级不再丢配置)**:运行时数据(咪咕账号、外部订阅源、我的频道分组顺序/隐藏/归类/排序等)改为集中存放,并支持 `mdataDir` 自定义目录。**镜像现默认写入 `/migu/data` 并声明为数据卷**,因此即使不改 compose,常规 `docker compose pull && up -d` 升级也会自动复用卷、不再丢配置;仍推荐用 `-v ./data:/migu/data` 绑定到宿主机便于备份。 从旧版(数据原在 `/migu`)**首次升级会迁移丢一次**,升级前请先用 `docker cp` 备份 `system-config.json` / `my-playlist-config.json` / `external-sources.json`(详见部署说明) - **README 配置说明优化**:拆分为「常用配置」(新手够用)+ 折叠的「完整配置表」;补全此前未文档化的环境变量(`madminPath` / `mrefreshToken` / `mdataDir` / `menableHDR` / `menableH265` / `mupdateInterval`);部署示例补上持久化卷与 `init` ### v2.0.0 (2026-05-30) 本次为**安全与稳定性大版本**,并新增多项管理功能(自 v1.8.2 起的全部改动)。 - **单频道单独归类**:频道详情弹窗新增「移动到分组」,可把任意单个频道移动到其它分组(选回原分组即取消归类);移出后即使原分组被删除,该频道仍保留在新分组 - **频道拖拽排序**:「我的频道」频道行支持鼠标拖拽排序(原生实现、不引第三方库),替代反复点「上移/下移」,且不再丢失焦点 - **管理页面路径可自定义**:可将后台地址 `/admin` 改成任意名字(如 `/console`)以增强隐蔽性,默认仍为 `admin`;改名后裸 `/admin` 失效,`api`/`player`/`favicon.ico` 为保留字,保存后自动跳转新地址 - **重构访问密码鉴权**:`/api/*` 由校验可伪造的 `Referer` 头改为与页面一致的**路径密码**校验(密码模式下经 `/<密码>/api/...` 访问);未授权统一返回 403、未知接口 404、非 GET/POST 405 - **移除全局请求串行锁**:旧实现用一个全局 `loading` 标志把所有 HTTP 请求逐个串行处理,一次慢抓取/拉取会阻塞包括频道跳转在内的全部请求;现各请求独立处理。POST 请求体读取加 try/catch,客户端中途断开连接返回 400 而非拖垮进程,并新增进程级异常兜底 - **更新流程加单飞锁**:定时刷新、启动初始化与后台保存外部源可能并发调用 `update()`,并发改写同一批临时文件会损坏 `interface.txt` / `playback.xml`;现串行化执行 - **修复 Chromium 僵尸进程**:网页抓取(`fetch` 模式)启动的 Chromium 在容器内不再堆积 `` 僵尸进程——镜像引入 `tini` 作为 init 进程回收孤儿子进程(`docker-compose.yml` 增加 `init: true`),`browser.close()` 增加超时与强杀进程组兜底(需**重建镜像/容器**后生效) - **修复订阅分组乱码**:订阅内容改为按原始字节解码,自动识别 GBK/GB2312(中文 IPTV 列表常见)、UTF-8 及 BOM,分组名与频道名不再乱码 - **修复 HDR / H265 无法关闭**:环境变量 `menableHDR=false` / `menableH265=false` 之前因布尔与字符串比较问题始终无效,现可正常关闭 - **系统配置热更新**:在管理后台保存系统配置后大部分项即时生效,无需重启(监听端口与节目更新间隔仍需重启) - **可关闭 token 刷新**:每月一次的咪咕 token 刷新(可能导致封号)现可通过 `refreshToken` 配置 / `mrefreshToken` 环境变量关闭 - **订阅导入报错优化**:所有镜像均失败时聚合显示每条线路的真实失败原因(不再是空白 `reason`)并给出排查提示;新增 `cdn.jsdelivr.net` 备用镜像 - **健壮性与清理**:配置文件改为**原子写入**(临时文件 + rename),避免并发/写入中断损坏 JSON;修复 `fileUtil` 同步函数误传回调的问题;分组内频道按「名称 + 地址」去重;修复 `androidURL.js` 中 `delay` 未引入导致 302 重试逻辑失效的隐藏问题;移除 `ddCalcuURL` 中无用的 WASM 死代码 ### v1.8.2 (2026-04-05) - 频道详情弹窗新增**一键调起本地播放器**按钮(VLC / IINA / PotPlayer),并按**当前浏览器所在平台**自动筛选可用按钮(Mac 显示 VLC+IINA,Windows 显示 VLC+PotPlayer,Linux 显示 VLC) - **播放器启动改为纯客户端实现**:v1.8.0 的后端 `open -a` 方案仅在 Node 与客户端同机时有效,Docker/NAS 等远程部署场景完全失效;改为浏览器直接调用 URL scheme(IINA / PotPlayer)或下载 `.m3u` 文件(VLC,通过系统文件关联启动),与服务端所在平台彻底解耦 - 频道详情弹窗补充 VLC 行为说明:VLC 桌面版未注册 URL scheme,点击后会先下载一个 `.m3u` 文件,需在浏览器下载栏手动点击打开,VLC 才会启动并播放 - 播放按钮改为品牌配色 + 内联 SVG 图标(VLC 橙 / IINA 紫 / PotPlayer 金),替换渲染不一致的 emoji - 新增内置订阅源「**全球频道**」(`Global.m3u`),与已有的「港澳地方频道」采用同一套处理方式;`BUILT_IN_SUBSCRIPTIONS` 常量化,新装默认写入,已有安装启动时自动补齐缺失内置源 - 修复内置订阅源展开出的频道在详情弹窗被错误标记为"外部源":内置订阅的 `subscriptionUrl` 通过 `/api/built-in-sources` 暴露给前端,按 URL 命中判定归属,确保「全球频道」「港澳地方频道」下所有频道统一显示为"内置源" - 管理后台"我的频道"新增点击可查看详情的提示:标题下方加入操作说明,频道名前增加 ⓘ 提示图标(hover 高亮),降低用户发现成本 - 移除失效的内置频道 `新加坡亚洲新闻(CNA)` 与 `Bloomberg TV` - README 重构:更名为 **iPTV-Docker**,将部署方式前置,新增 GitHub / Docker Hub 徽章与 Ko-fi / USDT 赞助入口 ### v1.7.2 (2026-03-25) - 修复频道数据缓存污染导致内置源/外部源频道重复累积的问题:`getAllChannels` 合并时使用浅拷贝,导致内置源和外部源频道被写入咪咕缓存,每次自动刷新触发 `regenerateOnly` 重新生成播放列表时重复叠加(如纬来体育出现多条) ### v1.7.1 (2026-03-23) - 修复 Docker 环境下内置抓取源(如纬来体育)无法抓取的问题:Alpine Linux 的 Chromium 路径为 `/usr/bin/chromium`,而非 `/usr/bin/chromium-browser`,导致 Puppeteer 找不到浏览器,抓取静默失败 - 修复安全问题:未授权访问 `/admin` 或 `/player` 时,响应中会明文暴露访问密码;现改为返回 403 并仅提示密码路径格式 - 修复设置访问密码后,使用 `/密码/admin` 路径无法访问管理后台的问题(路由匹配未覆盖带密码前缀的路径) ### v1.7.0 (2026-03-18) - 新增**手动分组**功能:可在「我的频道」中创建空分组,并在自定义源中直接使用这些分组 - 新增**手动分组删除**功能:删除后,该分组下的自定义直连/抓取频道会自动并入 `未分组` - 调整分组操作边界:内置咪咕分组、订阅源分组仅支持隐藏,`未分组` 不允许重命名、删除或隐藏 - 修复自定义频道与分组管理问题:避免直连频道 ID 冲突导致“我的频道”丢失频道,并阻止重命名到已存在分组名 ### v1.6.0 (2026-03-16) - 修复频道去重逻辑:将全局按频道名去重改为**分类内去重**,允许同一频道出现在不同分组中,与咪咕 App 行为一致 - 修复隐藏频道逻辑:`hiddenChannels` 改为**按分组独立隐藏**,避免跨分组误隐藏同名频道 - 频道详情弹窗优化:清理冗余播放按钮,保留复制地址功能 ### v1.5.0 (2026-03-11) - 检查更新支持 **GitHub 镜像回退**:依次尝试原始地址、ghfast.top、gh-proxy.com、gcore.jsdelivr.net,解决国内 Docker 环境无法访问 GitHub 的问题 - 修复 jsDelivr 镜像 URL 转换错误导致该镜像始终 404 的问题 - GitHub 镜像列表统一维护(`GITHUB_RAW_MIRRORS`),检查更新与订阅抓取共用,避免重复代码 - 修复管理页面版本号显示与实际版本不一致的问题 - 新增 `bump-version.js` 版本号统一更新脚本,一条命令同步更新所有文件 ### v1.4.3 (2026-03-11) - 新增**外网访问协议自动检测**:通过 NAS 转发(绿联、群晖、威联通等)或自定义域名访问时,自动使用 HTTPS 协议生成频道地址,解决外网无法播放的问题 - 内网/外网/自定义域名三条路径互不影响,内网访问不走外网,避免上行带宽浪费 - 根路径 `/` 默认返回 M3U 格式(`audio/x-mpegurl`),APTV 等客户端可直接用根地址导入 ### v1.4.1 (2026-03-11) - 新增**分组重命名**功能:可自定义分组名称,重命名后同名分组自动合并,支持重置恢复原名 - 新增**分组隐藏通配符**支持:在配置中使用 `体育-*` 可一次性隐藏所有体育赛事分组 - 新增**检查更新**功能:在「关于我们」页面可一键检查是否有新版本 - 重置功能改为弹窗选项式,支持分项重置(重命名 / 隐藏 / 排序),避免误操作 - 修复频道详情来源识别错误:正确区分咪咕源、内置源、外部源 - 修复编辑按钮在非外部源频道上错误显示的问题 - 修复订阅类型外部源编辑时无法定位到正确源的问题 - 修复 `/txt` 端点未应用用户配置过滤的问题 - 移除冗余的「保存配置」按钮(各操作已自动保存) ### v1.3.3 (2026-03-10) - 修复 Docker 环境下播放列表文件写入不完整的问题:生成 `interface.txt` 时使用了异步文件写入(fire-and-forget),导致文件重命名时部分分组尚未写入完成,造成港澳台地方频道(浙江、河南、广东、宁夏、广西、云南等)分组缺失;现已改为同步写入,确保文件完整性 - 优化日志输出:精简定时检查源更新、频道请求等高频日志,大幅减少 Docker 容器日志量 - 修复订阅源(如港澳台频道)首次获取失败后无重试机制,导致频道缺失的问题;现在启动 60 秒后自动重试 - 修复订阅源获取失败时不保留已有缓存数据的问题;失败时保留旧频道数据,引入指数退避重试机制 - 修复外部源每小时定时检查时无条件写入配置文件的问题;现在仅在有源被实际更新时才保存 - 启动时新增游客模式提示:未配置咪咕账号时提示最高画质为 720p - README 新增管理后台截图展示 ### v1.3.0 (2026-03-10) - 新增**订阅模式**(外部源第三种模式):支持导入 m3u/m3u8 播放列表 URL,一次性批量添加多个频道,支持自动定时刷新 - 新增内置**港澳台及地方频道**订阅源(港澳地方频道),默认启用,开箱即用 - 管理后台新增订阅模式 UI:支持填写订阅名称、m3u 地址、刷新间隔,一键导入并保存 - 更新 `external-sources.json.example` 示例文件,新增订阅模式配置示例 ### v1.2.8 (2026-03-05) - 版本号升级到 `1.2.8`,同步更新 `package.json`、`package-lock.json`、README 展示版本及 Docker workflow 镜像版本标签 - 新增 GPL-3.0 开源许可(`LICENSE`),并在文档中补充 License 说明 - 清理运行时缓存文件 `pe-cache.json` 出仓库,并加入 `.gitignore` 防止误提交 ### v1.2.7 (2026-02-28) - 修复内置抓取源 URL 刷新后重建播放列表(regenerateOnly 模式)会丢失体育-昨天/今天/明天频道的问题;现在 `updatePE` 运行时同步保存赛事缓存,快速模式下直接从缓存恢复,无需重新调用 API ### v1.2.6 (2026-02-27) - 修复内置抓取源(如纬来体育)URL 刷新后未重新生成播放列表,导致 APTV 等客户端拿到的仍是过期链接的问题;现在每次抓取到新 URL 后会立即以快速模式重建 `interface.txt` - 新增内置频道 Bloomberg TV(国际分组) - 新增内置频道 Eurosport 4K(体育分组) - 新增内置频道 Red Bull TV(体育分组) ### v1.2.5 (2026-02-27) - 修复内置抓取源(如纬来体育)因 m3u8 链接过期导致无法播放的问题,将自动刷新间隔从 240 分钟缩短为 60 分钟 - 修复内置抓取源抓取失败时不清除旧缓存的问题,抓取失败时现在会自动清除过期缓存,避免继续使用无效链接 ### v1.2.4 - 内置源管理功能 - Web 管理后台优化