{"id":25859618,"url":"https://github.com/taksssss/EPG-Server","last_synced_at":"2025-03-01T21:01:44.747Z","repository":{"id":247825246,"uuid":"826952784","full_name":"taksssss/EPG-Server","owner":"taksssss","description":"用 php 实现的 EPG 服务端， Docker🐳 部署，带设置界面、台标管理，支持 DIYP \u0026 百川 、 超级直播 以及 xmltv 格式。","archived":false,"fork":false,"pushed_at":"2025-02-28T11:44:48.000Z","size":26541,"stargazers_count":385,"open_issues_count":3,"forks_count":107,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-28T18:13:53.596Z","etag":null,"topics":["diyp","docker","docker-compose","epg","icon","iptv","logo","php","tv","xmltv-epg-data"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/taksss/php-epg/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/taksssss.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-10T17:57:53.000Z","updated_at":"2025-02-28T15:42:07.000Z","dependencies_parsed_at":"2024-11-08T11:35:57.989Z","dependency_job_id":"5735adc0-ca9f-4c10-acda-decd866e8323","html_url":"https://github.com/taksssss/EPG-Server","commit_stats":null,"previous_names":["takcc/php-epg-server","takcc/php-epg-docker-server","taksssss/php-epg-docker-server","taksssss/epg-server"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taksssss%2FEPG-Server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taksssss%2FEPG-Server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taksssss%2FEPG-Server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taksssss%2FEPG-Server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/taksssss","download_url":"https://codeload.github.com/taksssss/EPG-Server/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241424420,"owners_count":19960749,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["diyp","docker","docker-compose","epg","icon","iptv","logo","php","tv","xmltv-epg-data"],"created_at":"2025-03-01T21:01:42.209Z","updated_at":"2025-03-01T21:01:44.717Z","avatar_url":"https://github.com/taksssss.png","language":"PHP","funding_links":[],"categories":["PHP"],"sub_categories":[],"readme":"![EPG-Server](https://socialify.git.ci/taksssss/EPG-Server/image?description=1\u0026descriptionEditable=Docker%F0%9F%90%B3%E9%83%A8%E7%BD%B2%EF%BC%8C%E5%B8%A6%E8%AE%BE%E7%BD%AE%E7%95%8C%E9%9D%A2%E3%80%81%E5%8F%B0%E6%A0%87%E7%AE%A1%E7%90%86%EF%BC%8C%E6%94%AF%E6%8C%81DIYP%E3%80%81%E8%B6%85%E7%BA%A7%E7%9B%B4%E6%92%AD%E5%8F%8Axmltv%E3%80%82\u0026font=Inter\u0026forks=1\u0026issues=1\u0026language=1\u0026owner=1\u0026pattern=Circuit%20Board\u0026pulls=1\u0026stargazers=1\u0026theme=Auto)\n\n# 📺 EPG-Server\n![Docker Pulls](https://img.shields.io/docker/pulls/taksss/php-epg) ![Image Size](https://img.shields.io/docker/image-size/taksss/php-epg)\n\nPHP 实现的 EPG（电子节目指南）服务端， `Docker` 部署，自带设置界面、台标管理、直播源管理，支持 **DIYP \u0026 百川** 、 **超级直播** 以及 **xmltv** 格式。\n\n## 💻 主要功能\n\n📡 **多直播格式**：支持返回 DIYP \u0026 百川、超级直播以及 xmltv 格式文件。\n  \n🐳 **多架构支持**：提供适用于 amd64、arm64 和 armv7 架构的 Docker 镜像，兼容电视盒子等设备使用。\n\n📦 **小体积镜像**：基于 Alpine 构建，压缩后仅 20 MB。\n\n🗃️ **数据库管理**：采用先构建后存数据库的策略，减少冗余、提升读取速度。支持 SQLite 和 MySQL 数据库，内置 phpLiteAdmin 管理工具。\n\n🖼️ **台标管理**：支持台标模糊匹配，便于匹配台标资源。\n\n➰ **直播源管理**：支持聚合 TXT/M3U 直播源，并定时更新。\n\n🔒 **访问权限控制**：支持设置 TOKEN ，限制访问 EPG 服务及直播源。\n\n⏱️ **缓存支持**：集成 Memcached，可自定义缓存时间。\n\n🔄 **频道匹配**：支持繁体中文频道匹配，可进行双向模糊匹配；支持频道别名（可使用正则表达式）和指定 EPG 源。\n\n⏳ **定时任务**：支持定时更新数据。\n\n📝 **节目单生成**：支持生成指定频道节目单并匹配 M3U 的 xmltv 格式文件。\n\n🗂️ **兼容多种格式**：支持不同标准格式的 XMLTV 文件。\n\n🛠️ **文件管理**：集成 tinyfilemanager 以便于文件管理。\n\n🌐 **界面设置**：包含简单易用的网页设置页面，便于操作和管理。\n\n\u003e [!TIP]\n\u003e ⚠️ 使用前请仔细阅读「管理页面」底部的`「使用说明」`\n\u003e \n\u003e 原贴：[【Docker | 台标管理 | 直播源管理】自建DIYP、超级直播EPG节目单服务](https://www.right.com.cn/forum/thread-8386320-1-1.html)\n\u003e \n\u003e `xmltv` 用户使用方法：[【一键生成】匹配 M3U 文件的 XML 节目单](https://www.right.com.cn/forum/thread-8392662-1-1.html) \n\u003e\n\u003e `直播源管理` 使用方法：[【EPG-Server】直播源管理使用说明](https://www.right.com.cn/forum/thread-8417162-1-1.html) \n\n\u003cpicture\u003e\n  \u003csource\n    media=\"(prefers-color-scheme: dark)\"\n    srcset=\"/pic/management-dark.png\"\n  /\u003e\n  \u003csource\n    media=\"(prefers-color-scheme: light)\"\n    srcset=\"/pic/management.png\"\n  /\u003e\n  \u003cimg\n    alt=\"设置页面\"\n    src=\"/pic/management.png\"\n  /\u003e\n\u003c/picture\u003e\n\n\u003e **内置正则表达式说明：**\n\u003e - 包含 `regex:`\n\u003e - 示例：\n\u003e   - `CCTV$1 =\u003e 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欧洲`）\n\n## 📝 更新日志\n\n### [CHANGELOG.md](./CHANGELOG.md)\n\n## TODO：\n\n- [x] 支持返回超级直播格式\n- [x] 整合更轻量的 `alpine-apache-php` 容器\n- [x] 整合生成 `xml` 文件\n- [x] 支持多对一频道映射\n- [x] 支持繁体频道匹配\n- [x] 仅保存指定频道列表节目单\n- [x] 导入/导出配置\n- [x] 频道指定 `EPG` 源\n- [x] 生成台标信息\n- [x] 直播源管理\n\n## 🚀 部署步骤\n\n1. 配置 `Docker` 环境\n\n2. 若已安装过，先删除旧版本并拉取新版本（**⚠️注意备份数据：`更多设置` -\u003e `数据导出` / `数据导入`**）\n\n   ```bash\n   docker rm php-epg -f \u0026\u0026 docker pull taksss/php-epg:latest\n   ```\n\n3. 拉取镜像并运行：\n\n   ```bash\n   docker run -d \\\n     --name php-epg \\\n     -p 5678:80 \\\n     --restart always \\\n     taksss/php-epg:latest\n   ```\n\n    \u003e 默认端口为 `5678` ，根据需要自行修改（注意端口占用）\n    \u003e \n    \u003e 可选参数：`-e PHP_MEMORY_LIMIT=512M` ，设置 PHP 内存限制，默认 `512M`\n    \u003e \n    \u003e 无法正常拉取镜像的，可使用同步更新的 `腾讯云容器镜像`（`ccr.ccs.tencentyun.com/taksss/php-epg:latest`）\n\n\u003cdetails\u003e\n\n\u003csummary\u003e（可选）数据持久化\u003c/summary\u003e\n\n- 执行以下指令，`./data` 可根据自己需要更改\n    ```bash\n    docker run -d \\\n      --name php-epg \\\n      -v ./data:/htdocs/data \\\n      -p 5678:80 \\\n      --restart always \\\n      taksss/php-epg:latest\n    ```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\n\u003csummary\u003e（可选）同时部署 MySQL 、 phpMyAdmin 及 php-epg\u003c/summary\u003e\n\n- **方法1：** 新建 [`docker-compose.yml`](./docker-compose.yml) 文件后，在同目录执行 `docker-compose up -d`\n- **方法2：** 依次执行以下指令：\n    ```bash\n    docker run -d \\\n      --name mysql \\\n      -p 3306:3306 \\\n      -e MYSQL_ROOT_PASSWORD=root_password \\\n      -e MYSQL_DATABASE=phpepg \\\n      -e MYSQL_USER=phpepg \\\n      -e MYSQL_PASSWORD=phpepg \\\n      --restart always \\\n      mysql:8.0\n    ```\n    ```bash\n    docker run -d \\\n      --name phpmyadmin \\\n      -p 8080:80 \\\n      -e PMA_HOST=mysql \\\n      -e PMA_PORT=3306 \\\n      --link mysql:mysql \\\n      --restart always \\\n      phpmyadmin/phpmyadmin:latest\n    ```\n    ```bash\n    docker run -d \\\n      --name php-epg \\\n      -v ./data:/htdocs/data \\\n      -p 5678:80 \\\n      --restart always \\\n      --link mysql:mysql \\\n      --link phpmyadmin:phpmyadmin \\\n      taksss/php-epg:latest\n    ```\n \n\u003c/details\u003e\n\n## 🛠️ 使用步骤\n\n1. 在浏览器中打开 `http://{服务器IP地址}:5678/manage.php`\n2. **默认密码为空**，根据需要自行设置\n3. 添加 `EPG 源地址`， GitHub 源确保能够访问，点击 `更新配置` 保存\n4. 点击 `更新数据库` 拉取数据，点击 `数据库更新日志` 查看日志，点击 `查看数据库` 查看具体条目\n5. 设置 `定时任务` ，点击 `更新配置` 保存，点击 `定时任务日志` 查看定时任务时间表\n\n    \u003e 建议从 `凌晨1点` 左右开始抓，很多源 `00:00 ~ 00:30` 都是无数据。\n    \u003e 隔 `6 ~ 12` 小时抓一次即可。\n\n6. 点击 `更多设置` ，选择是否 `生成xml文件` 、`生成方式` ，设置 `限定频道节目单`\n7. 用浏览器测试各个接口的返回结果是否正确：\n\n- `xmltv` 接口： `http://{服务器IP地址}:5678/index.php`\n- `DIYP\u0026百川` 接口： `http://{服务器IP地址}:5678/index.php?ch=CCTV1`\n- `超级直播` 接口： `http://{服务器IP地址}:5678/index.php?channel=CCTV1`\n\n8. 将 **`http://{服务器IP地址}:5678/index.php`** 填入 `DIYP`、`TiviMate` 等软件的 `EPG 地址栏`\n\n- ⚠️ 直接使用 `docker run` 运行的话，可以将 `:5678/index.php` 替换为 **`:5678/`**。\n- ⚠️ 部分软件不支持跳转解析 `xmltv` 文件，可直接使用 **`:5678/t.xml.gz`** 或 **`:5678/t.xml`** 访问。\n\n\u003e **快捷键：**\n\u003e\n\u003e - `Ctrl + S`：保存设置\n\u003e - `Ctrl + /`：对选中 EPG 地址设置（取消）注释\n\n## ☕ Buy Me a Coffee\n\n\u003cpicture\u003e\n  \u003csource\n    media=\"(prefers-color-scheme: dark)\"\n    srcset=\"/pic/buymeacofee-dark.png\"\n  /\u003e\n  \u003csource\n    media=\"(prefers-color-scheme: light)\"\n    srcset=\"/pic/buymeacofee.png\"\n  /\u003e\n  \u003cimg\n    alt=\"Buy Me a Coffee\"\n    src=\"/pic/buymeacofee.png\"\n  /\u003e\n\u003c/picture\u003e\n\n## ⭐ Star History\n\n\u003cpicture\u003e\n  \u003csource\n    media=\"(prefers-color-scheme: dark)\"\n    srcset=\"https://api.star-history.com/svg?repos=taksssss/EPG-Server\u0026type=Date\u0026theme=dark\"\n  /\u003e\n  \u003csource\n    media=\"(prefers-color-scheme: light)\"\n    srcset=\"https://api.star-history.com/svg?repos=taksssss/EPG-Server\u0026type=Date\"\n  /\u003e\n  \u003cimg\n    alt=\"Star History Chart\"\n    src=\"https://api.star-history.com/svg?repos=taksssss/EPG-Server\u0026type=Date\"\n  /\u003e\n\u003c/picture\u003e\n\n## 👍 特别鸣谢\n- [ChatGPT](https://chatgpt.com/)\n- [celetor/epg](https://github.com/celetor/epg)\n- [sparkssssssssss/epg](https://github.com/sparkssssssssss/epg)\n- [Black_crow/xmlgz](https://gitee.com/Black_crow/xmlgz)\n- [112114](https://diyp.112114.xyz/)\n- [EPG 51zmt](http://epg.51zmt.top:8000/)\n- [fanmingming/live](https://github.com/fanmingming/live)\n- [wanglindl/TVlogo](https://github.com/wanglindl/TVlogo)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaksssss%2FEPG-Server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftaksssss%2FEPG-Server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaksssss%2FEPG-Server/lists"}