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.php
DIYP&百川
接口: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 方便管理数据库