PHP 实现的 EPG(电子节目指南)服务端, Docker
部署,自带设置界面、台标管理,支持 DIYP & 百川 、 超级直播 以及 xmltv 格式。
- 支持返回
DIYP & 百川
、超级直播
以及xmltv
格式 📡 - 提供
amd64
跟arm64
、armv7
架构镜像,支持 电视盒子 等设备 🐳 - 基镜像采用
alpine
,压缩后大小仅 20 MB 📦 - 采用 先构建再存数据库 策略,减少数据冗余,提高读取速度 🚀
- 支持
SQLite
及MySQL
数据库 🗃️ - 支持
Memcached
,可设置缓存时间 ⏱️ - 支持 台标管理 ,台标模糊匹配 🖼️
- 支持 繁体中文 频道匹配 🌐
- 支持 双向模糊匹配 ✍🏻
- 支持 频道别名 ,可用 正则表达式 🔄
- 支持 频道指定 EPG 源 🈯
- 内置 定时任务 ⏳
- 支持生成 指定频道节目单 📝
- 支持生成 匹配 M3U 的
xmltv
格式文件 💯 - 支持查看 频道匹配 结果 🪢
- 兼容多种
xmltv
格式 🗂️ - 包含网页设置页面 🌐
- 支持多个 EPG 源 📡
- 可配置数据保存天数 📅
- 内置
phpLiteAdmin
方便管理数据库 🛠️
内置正则表达式说明:
- 包含
regex:
- 示例:
CCTV$1 => regex:/^CCTV[-\s]*(\d+(\s*P(LUS)?|[K\+])?)(?![\s-]*(美洲|欧洲)).*/i
:将CCTV 1综合
、CCTV-4K频道
、CCTV - 5+频道
、CCTV - 5PLUS频道
等替换成CCTV1
、CCTV4K
、CCTV5+
、CCTV5PLUS
(排除CCTV4美洲
和CCTV4欧洲
)
- 修复:导入文件大于2M时异常
- 优化:台标上传路径
- 优化:频道别名台标匹配逻辑
- 优化:内置台标列表
- 新增:同时显示无节目表的内置台标
- 优化:台标转存逻辑
- 优化:频道模糊匹配
- 新增:无节目表频道的台标模糊匹配
- 优化:默认台标列表
- 优化:新建自定义台标提示
- 优化:转存台标提示,转存进度显示
- 优化:更改台标
CDN
源,并替换为裁切版本 - 修复:导入数据路径错误
- 修复:定时任务误删本地台标
- 修复:超级直播返回字段
- 新增:上传任意频道台标
- 新增:一键上传所有
CDN
台标到服务器 - 新增:无节目表频道的台标匹配
- 优化:更新时清理未使用台标文件
- 新增:台标管理,支持
URL
及上传
,模糊匹配,返回DIYP
、超级直播
及xmltv
格式(感谢fanmingming/live、wanglindl/TVlogo) - 修复:超级直播时间戳、
showTime
字段错误
历史更新记录见CHANGELOG.md
- 支持返回超级直播格式
- 整合更轻量的
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
(可选)同时部署 MySQL 、 phpMyAdmin 及 php-epg
-
方法1: 新建
docker-compose.yml
文件后,在同目录执行docker-compose up -d
-
方法2: 依次执行以下指令:
docker run -d \ --name mysql \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=root_password \ -e MYSQL_DATABASE=phpepg \ -e MYSQL_USER=phpepg \ -e MYSQL_PASSWORD=phpepg \ --restart always \ mysql:8.0
docker run -d \ --name phpmyadmin \ -p 8080:80 \ -e PMA_HOST=mysql \ -e PMA_PORT=3306 \ --link mysql:mysql \ --restart always \ phpmyadmin/phpmyadmin:latest
docker run -d \ --name php-epg \ -v ./data:/htdocs/epg/data \ -p 5678:80 \ --restart always \ --link mysql:mysql \ --link phpmyadmin:phpmyadmin \ taksss/php-epg:latest
-
在浏览器中打开
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