PHP-EPG-Docker-Server
PHP-EPG-Docker-Server copied to clipboard
用 php 实现的 EPG 服务端, Docker🐳 部署,带设置界面、台标管理,支持 DIYP & 百川 、 超级直播 以及 xmltv 格式。
📺 EPG-Server
PHP 实现的 EPG(电子节目指南)服务端, Docker 部署,自带设置界面、台标管理、直播源管理,支持 DIYP & 百川 、 超级直播 以及 xmltv 格式。
💻 主要功能
📡 多直播格式:支持返回 DIYP & 百川、超级直播以及 xmltv 格式文件。
🐳 多架构支持:提供适用于 amd64、arm64 和 armv7 架构的 Docker 镜像,兼容电视盒子等设备使用。
📦 小体积镜像:基于 Alpine 构建,压缩后仅 20 MB。
🗃️ 数据库管理:采用先构建后存数据库的策略,减少冗余、提升读取速度。支持 SQLite 和 MySQL 数据库,内置 phpLiteAdmin 管理工具。
🖼️ 台标管理:支持台标模糊匹配,便于匹配台标资源。
➰ 直播源管理:支持聚合 TXT/M3U 直播源,并定时更新。
🔒 访问权限控制:支持设置 TOKEN ,限制访问 EPG 服务及直播源。
⏱️ 缓存支持:集成 Memcached,可自定义缓存时间。
🔄 频道匹配:支持繁体中文频道匹配,可进行双向模糊匹配;支持频道别名(可使用正则表达式)和指定 EPG 源。
⏳ 定时任务:支持定时更新数据。
📝 节目单生成:支持生成指定频道节目单并匹配 M3U 的 xmltv 格式文件。
🗂️ 兼容多种格式:支持不同标准格式的 XMLTV 文件。
🛠️ 文件管理:集成 tinyfilemanager 以便于文件管理。
🌐 界面设置:包含简单易用的网页设置页面,便于操作和管理。
[!TIP]
xmltv用户搭配 【一键生成】匹配 M3U 文件的 XML 节目单 使用。
内置正则表达式说明:
- 包含
regex:- 示例:
CCTV$1 => regex:/^CCTV[-\s]*(\d{1,2}(\s*P(LUS)?|[K\+])?)(?![\s-]*(美洲|欧洲)).*/i:将CCTV 1综合、CCTV-4K频道、CCTV - 5+频道、CCTV - 5PLUS频道等替换成CCTV1、CCTV4K、CCTV5+、CCTV5PLUS(排除CCTV4美洲和CCTV4欧洲)
📝 更新日志
CHANGELOG.md
TODO:
- [x] 支持返回超级直播格式
- [x] 整合更轻量的
alpine-apache-php容器 - [x] 整合生成
xml文件 - [x] 支持多对一频道映射
- [x] 支持繁体频道匹配
- [x] 仅保存指定频道列表节目单
- [x] 导入/导出配置
- [x] 频道指定
EPG源 - [x] 生成台标信息
- [x] 直播源管理
🚀 部署步骤
-
配置
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,根据需要自行修改(注意端口占用)可选参数:
-e PHP_MEMORY_LIMIT=512M,设置 PHP 内存限制,默认512M无法正常拉取镜像的,可使用同步更新的
腾讯云容器镜像(ccr.ccs.tencentyun.com/taksss/php-epg:latest)
(可选)数据持久化
- 执行以下指令,
./data可根据自己需要更改docker run -d \ --name php-epg \ -v ./data:/htdocs/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.0docker run -d \ --name phpmyadmin \ -p 8080:80 \ -e PMA_HOST=mysql \ -e PMA_PORT=3306 \ --link mysql:mysql \ --restart always \ phpmyadmin/phpmyadmin:latestdocker run -d \ --name php-epg \ -v ./data:/htdocs/data \ -p 5678:80 \ --restart always \ --link mysql:mysql \ --link phpmyadmin:phpmyadmin \ taksss/php-epg:latest
🛠️ 使用步骤
-
在浏览器中打开
http://{服务器IP地址}:5678/manage.php -
默认密码为空,根据需要自行设置
-
添加
EPG 源地址, GitHub 源确保能够访问,点击更新配置保存 -
点击
更新数据库拉取数据,点击数据库更新日志查看日志,点击查看数据库查看具体条目 -
设置
定时任务,点击更新配置保存,点击定时任务日志查看定时任务时间表建议从
凌晨1点左右开始抓,很多源00:00 ~ 00:30都是无数据。 隔6 ~ 12小时抓一次即可。 -
点击
更多设置,选择是否生成xml文件、生成方式,设置限定频道节目单 -
用浏览器测试各个接口的返回结果是否正确:
xmltv接口:http://{服务器IP地址}:5678/index.phpDIYP&百川接口:http://{服务器IP地址}:5678/index.php?ch=CCTV1超级直播接口:http://{服务器IP地址}:5678/index.php?channel=CCTV1
- 将
http://{服务器IP地址}:5678/index.php填入DIYP、TiviMate等软件的EPG 地址栏
- ⚠️ 直接使用
docker run运行的话,可以将:5678/index.php替换为:5678/。 - ⚠️ 部分软件不支持跳转解析
xmltv文件,可直接使用:5678/t.xml.gz或:5678/t.xml访问。
快捷键:
Ctrl + S:保存设置Ctrl + /:对选中 EPG 地址设置(取消)注释
☕ Buy Me a Coffee