Skip to content

用 php 实现的 EPG 服务端, Docker🐳 部署,带设置界面、台标管理,支持 DIYP & 百川 、 超级直播 以及 xmltv 格式。

License

Notifications You must be signed in to change notification settings

taksssss/EPG-Server

Repository files navigation

EPG-Server

📺 EPG-Server

Docker Pulls Image Size

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 以便于文件管理。

🌐 界面设置:包含简单易用的网页设置页面,便于操作和管理。

设置页面

内置正则表达式说明:

  • 包含 regex:
  • 示例:
    • CCTV$1 => regex:/^CCTV[-\s]*(\d{1,2}(\s*P(LUS)?|[K\+])?)(?![\s-]*(美洲|欧洲)).*/i :将 CCTV 1综合CCTV-4K频道CCTV - 5+频道CCTV - 5PLUS频道 等替换成 CCTV1CCTV4KCCTV5+CCTV5PLUS(排除 CCTV4美洲CCTV4欧洲

📝 更新日志

TODO:

  • 支持返回超级直播格式
  • 整合更轻量的 alpine-apache-php 容器
  • 整合生成 xml 文件
  • 支持多对一频道映射
  • 支持繁体频道匹配
  • 仅保存指定频道列表节目单
  • 导入/导出配置
  • 频道指定 EPG
  • 生成台标信息
  • 直播源管理

🚀 部署步骤

  1. 配置 Docker 环境

  2. 若已安装过,先删除旧版本并拉取新版本(⚠️注意备份数据:更多设置 -> 数据导出 / 数据导入

    docker rm php-epg -f && docker pull taksss/php-epg:latest
  3. 拉取镜像并运行:

    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.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/data \
      -p 5678:80 \
      --restart always \
      --link mysql:mysql \
      --link phpmyadmin:phpmyadmin \
      taksss/php-epg:latest

🛠️ 使用步骤

  1. 在浏览器中打开 http://{服务器IP地址}:5678/manage.php

  2. 默认密码为空,根据需要自行设置

  3. 添加 EPG 源地址, GitHub 源确保能够访问,点击 更新配置 保存

  4. 点击 更新数据库 拉取数据,点击 数据库更新日志 查看日志,点击 查看数据库 查看具体条目

  5. 设置 定时任务 ,点击 更新配置 保存,点击 定时任务日志 查看定时任务时间表

    建议从 凌晨1点 左右开始抓,很多源 00:00 ~ 00:30 都是无数据。 隔 6 ~ 12 小时抓一次即可。

  6. 点击 更多设置 ,选择是否 生成xml文件生成方式 ,设置 限定频道节目单

  7. 用浏览器测试各个接口的返回结果是否正确:

  • xmltv 接口: http://{服务器IP地址}:5678/index.php
  • DIYP&百川 接口: http://{服务器IP地址}:5678/index.php?ch=CCTV1
  • 超级直播 接口: http://{服务器IP地址}:5678/index.php?channel=CCTV1
  1. http://{服务器IP地址}:5678/index.php 填入 DIYPTiviMate 等软件的 EPG 地址栏
  • ⚠️ 直接使用 docker run 运行的话,可以将 :5678/index.php 替换为 :5678/
  • ⚠️ 部分软件不支持跳转解析 xmltv 文件,可直接使用 :5678/t.xml.gz:5678/t.xml 访问。

快捷键:

  • Ctrl + S:保存设置
  • Ctrl + /:对选中 EPG 地址设置(取消)注释

☕ Buy Me a Coffee

Buy Me a Coffee

⭐ Star History

Star History Chart

👍 特别鸣谢

About

用 php 实现的 EPG 服务端, Docker🐳 部署,带设置界面、台标管理,支持 DIYP & 百川 、 超级直播 以及 xmltv 格式。

Topics

Resources

License

Stars

Watchers

Forks