PHP 实现的 EPG(电子节目指南)服务端, Docker 部署,自带设置界面,支持 DIYP & 百川 、 超级直播 以及 xmltv 格式。
- 支持返回
DIYP & 百川、超级直播以及xmltv格式 📡 - 提供
amd64跟arm64、armv7架构Docker镜像,支持电视盒子等设备 🐳 - 基镜像采用
alpine-apache-php,压缩后大小仅20M📦 - 采用先构建再存数据库的策略,减少数据冗余,提高读取速度 🚀
- 支持繁体中文频道匹配 🌐
- 支持双向模糊匹配 ✍🏻
- 支持多对一频道映射,支持正则表达式 🔄
- 支持设置频道忽略字符表 🔇
- 支持生成指定频道节目单 📝
- 内置定时任务,支持设置定时拉取数据 ⏳
- 支持生成匹配
M3U的xmltv格式文件 💯 - 支持查看频道匹配结果 🪢
- 支持频道指定
EPG源 🈯 - 兼容多种
xmltv格式 🗂️ - 使用
SQLite数据库存储 🗃️ - 包含网页设置页面 🌐
- 支持多个 EPG 源 📡
- 可配置数据保存天数 📅
- 内置
phpLiteAdmin方便管理数据库 🛠️
内置正则表达式说明:
- 以
regex:作为前缀- 示例:
regex:/^CCTV[-\s]*(\d+(\s*P(LUS)?|[K\+])?)(?![\s-]*(美洲|欧洲)).*/i => CCTV$1:将CCTV 1综合、CCTV-4K频道、CCTV - 5+频道、CCTV - 5PLUS频道等替换成CCTV1、CCTV4K、CCTV5+、CCTV5PLUS(排除CCTV4美洲和CCTV4欧洲)
- 新增:
armv7镜像 - 优化:频道指定
EPG源逻辑
- 新增:频道指定
EPG源 - 新增:管理页面预加载数据,减少等待时间
- 新增:非
UTC+8时区转换
- 优化:过滤全天只有一个节目的数据
- 修复:生成
xmltv时,频道匹配错误 - 修复:频道映射为空时,显示
=>
- 新增:数据导入导出(包括
config.json跟data.db文件)
- 新增:反向模糊匹配(如
湖南茶频道能匹配茶频道)可能出现错误匹配:如数据库中只有
CGTN跟CGTN西语,请求CGTN西班牙语会返回CGTN,需自行添加频道映射 - 优化:频道匹配顺序
优先精准匹配,其次正向模糊匹配(
超级体育 => NewTV超级体育),最后反向模糊匹配(湖南茶频道 => 茶频道) - 优化:去掉绝大部分
频道忽略字符串跟频道映射 - 优化:跨天数据处理逻辑
其他见历史更新日志
- 支持返回超级直播格式
- 整合更轻量的
alpine-apache-php容器 - 整合生成
xml文件 - 支持多对一频道映射
- 支持繁体频道匹配
- 仅保存指定频道列表节目单
- 导入/导出配置
- 频道指定
EPG源
-
配置
Docker环境 -
若已安装过,先删除旧版本并拉取新版本(注意备份数据)
docker rm php-epg -f && docker pull taksss/php-epg:latest -
拉取镜像并运行:
docker run -d \ --name php-epg \ -p 5678:80 \ --restart always \ taksss/php-epg:latest
默认端口为
5678,根据需要自行修改。 无法正常拉取镜像的,可使用同步更新的腾讯云容器镜像(ccr.ccs.tencentyun.com/taksss/php-epg:latest)
-
直接使用以下命令,
./data可根据自己需要更改docker run -d \ --name php-epg \ -v ./data:/htdocs/epg/data \ -p 5678:80 \ --restart always \ taksss/php-epg:latest
-
新建
docker-compose.yml文件后,在同目录执行docker-compose up -d
-
在浏览器中打开
http://{服务器IP地址}:5678/epg/manage.php -
默认密码为空,根据需要自行设置
-
添加
EPG 源地址, GitHub 源确保能够访问,点击更新配置保存 -
点击
更新数据库拉取数据,点击数据库更新日志查看日志,点击查看数据库查看具体条目 -
设置
定时任务,点击更新配置保存,点击定时任务日志查看定时任务时间表建议从
凌晨1点左右开始抓,很多源00:00 ~ 00:30都是无数据。 隔6 ~ 12小时抓一次即可。 -
点击
更多设置,选择是否生成xml文件、生成方式,设置限定频道节目单 -
用浏览器测试各个接口的返回结果是否正确:
xmltv接口:http://{服务器IP地址}:5678/epg/index.phpDIYP&百川接口:http://{服务器IP地址}:5678/epg/index.php?ch=CCTV1超级直播接口:http://{服务器IP地址}:5678/epg/index.php?channel=CCTV1
-
将
http://{服务器IP地址}:5678/epg/index.php填入DIYP、TiviMate等软件的EPG 地址栏⚠️ 直接使用docker run运行的话,可以将:5678/epg/index.php替换为:5678/epg。⚠️ 部分软件不支持跳转解析xmltv文件,可直接使用:5678/epg/t.xml.gz或:5678/epg/t.xml访问。
快捷键:
Ctrl + S:保存设置Ctrl + /:对选中 EPG 地址设置(取消)注释
DIYP
TiviMate
设置定时任务
定时任务日志
更新日志
搜索频道、编辑映射
频道指定 EPG 源
更多设置
phpLiteAdmin
- 新增:从频道列表新建映射关系(
频道映射->点击编辑) - 优化:定时任务
pid获取方式 - 优化:解析后预加载频道匹配结果
- 新增:查看频道匹配结果(
更多设置->解析->查看匹配) - 优化:非
Docker用户体验 - 优化:频道忽略字符串替换顺序
- 优化:数据重复时的更新逻辑(越前面,优先级越高)
- 优化:频道映射规则(针对
51zmt的CCTV4EUO跟CCTV4AME命名) - 优化:频道映射界面改回之前的版本(新版本直观,但在修改规则时效率太低)
- 新增:改用
XMLWriter生成xmltv文件,加快生成速度,降低内存占用(生成全量数据,100M以内即可) - 新增:“限定频道列表”可直接从
M3U、TXT地址获取 - 新增:设置“限定频道列表”后,生成
xmltv的频道名以列表的为准(可生成匹配M3U的EPG文件) - 新增:
NewTV、SiTV、iHOT、CHC系列频道映射规则 - 优化:将数据文件统一放到
data文件夹,方便进行数据持久化(⚠️ 注意更新) - 优化:节目匹配时,优先采用精确匹配结果
- 优化:部分
EPG条目跨天时,生成 2 条数据 - 优化:
desc字段的生成逻辑 - 优化:删除部分冗余选项
⚠️ 该版本改动较多,建议直接更新
- 新增:退出按钮(感谢mxdabc)
- 修复:语法错误(感谢mxdabc)
- 新增:使用
GitHub Actions生成、推送镜像到DockerHub及腾讯云容器镜像站 - 修复:点击退出按钮后再次登录,无法查看日志
- 新增:同步提供
腾讯云容器镜像,无法正常拉取镜像的用户可使用 - 新增:默认返回“精彩节目”选项
- 新增:更新前检查 EPG 文件,无变化则跳过
- 优化:分批插入数据,降低内存占用
- 优化:配置文件从
config.php改为config.json - 修复:频道映射每次只能更新一条的问题
- 优化:频道映射显示方式
- 新增:同时生成
.xml.gz及.xml选项
- 新增:
xmltv文件格式选项(.xml.gz或.xml) - 优化:频道映射忽略空格(如
CGTN英语 => CGTN可对CGTN 英语进行映射) - 优化:正则表达式,增加
CCTV 5P频道匹配
- 修改部分
opencc及update.php代码,兼容PHP 7.0以上版本 - 新增
入库前处理频道名选项(DIYP跟超级直播用户保持默认是即可) - 更新
manage.php,打开设置页面时检查定时任务运行情况 - 优化正则表达式,增加
CCTV 5PLUS频道匹配 - 新增
docker-compose.yml,可持久化adata.db跟config.json文件
- 部分用户反馈
phpLiteAdmin-ng在php7.x上打开较慢,已换回之前的phpLiteAdmin 1.9.71 - 修复
phpLiteAdmin 1.9.71部分节目不显示的问题:- 将部分
substr、strlen替换为mb_substr、mb_strlen
- 将部分
- 修复未进入“更多设置”页面,
Ctrl+S会清空限定频道列表的问题
- 支持繁体中文频道匹配(感谢 overtrue/php-opencc )
- 支持生成指定频道节目单(可通过
.txt或.m3u节目源导入) - 调整页面布局,将部分设置放至“更多设置”页面中
- 生成 .xml.gz 时,默认只包含预告数据(可在设置中更改)
- 修改频道忽略字符串逻辑,将忽略空格设为可选(默认开启)
- EPG 地址列表支持
Ctrl + /设置(取消)注释 - 重构部分代码,加快数据生成速度,降低内存占用
- 改用 phpLiteAdmin-ng ,修复节目显示不完全的问题
- 修复频道包含
&字符,报Warning的问题 - 修复 cron.php 首次执行在特定情况下异常的问题
功能基本完善,没大改动的话会比较少更新了。
- 自定义频道名支持多对一映射
- 支持整合 xmltv,并生成 .xml.gz 文件,降低硬盘占用
- 支持查看、搜索数据库频道列表,方便填写映射
- 修复 cron.php 在第三天失效的问题
- 删除 epg_lovetv 表,超级直播数据直接从对应 DIYP 中生成,减少数据冗余
- 优化更新当天数据的逻辑,避免更新时无法获取节目表
- 支持
超级直播格式 - 重构代码,基镜像改为
alpine-apache-php,镜像大小从 155M 下降到 23M - 支持解析 M3U4U 等非 .xml/.gz 结尾 EPG 地址
- 数据分批插入,降低内存占用
- 修复部分界面显示异常问题
- 修复设置页面刷新,提示“是否重新提交表单”问题
- 增加接口测试说明
- 提供 Docker🐳 镜像(基于 php:7.4-apache ,支持 x86-64 跟 arm64 )
- 支持定时更新数据库
- EPG 源支持添加注释
- 支持更改登录密码 【默认为空!!!】
- 支持查看定时任务日志
- 支持查看数据库更新日志
- 配置页面支持 Ctrl+S 保存
- 更新部署流程
- 改用 Docker Compose🐳 部署
- 更新部署流程
- 优化自带正则表达式
- 更新默认返回数据,供回放使用
- 增加 TiviMate 示例图片
- 支持标准 xmltv 和 DIYP&百川 格式
- 包含网页设置页面
- 支持多个 EPG 源
- 可配置数据保存天数
- 支持设置频道忽略字符串
- 支持频道映射,支持正则表达式
- 内置 phpLiteAdmin 方便管理数据库











