本文档提供了IPTV存储库结构的详细概述,解释了代码库的组织方式以及每个目录和文件的用途。这些信息旨在帮助开发人员理解整体架构并高效地浏览存储库。有关如何使用播放列表的信息,请参阅用户指南。
IPTV存储库分为几个关键目录,每个目录在系统中都有特定用途。
存储库具有以下主要目录和文件:
| 目录/文件 | 目的 |
|---|---|
streams/ | 包含所有按广播国家/地区组织的M3U播放列表 |
scripts/ | 包含维护任务的自动化脚本 |
.github/ | 包含GitHub工作流程和问题模板 |
.readme/ | 包含用于生成主README.md的文件 |
tests/ | 包含用于验证脚本的测试 |
CONTRIBUTING.md | 贡献项目的指南 |
README.md | 主文档,由.readme/template.md生成 |
streams/目录是存储库的核心,包含所有按国家/地区组织的IPTV频道流。每个国家/地区都有自己的M3U文件(例如,美国的us.m3u,英国的uk.m3u)。
这些内部播放列表是生成用户访问的公共播放列表的源数据。
来源:CONTRIBUTING.md154 CONTRIBUTING.md102-140
从源streams/目录,系统会生成几种类型的有组织的播放列表,这些播放列表会发布给用户。
scripts/目录包含维护存储库的自动化脚本。这些脚本处理各种任务,例如格式化播放列表、验证播放列表、生成公共播放列表和更新文档。
| 脚本类别 | 目的 | 示例命令 |
|---|---|---|
| 播放列表格式化 | 格式化内部播放列表,规范化URL,删除重复项 | playlist:format |
| 播放列表验证 | 检查播放列表错误,验证流ID和URL | playlist:validate,playlist:lint |
| 播放列表生成 | 从源文件生成公共播放列表 | playlist:generate |
| 播放列表测试 | 测试流链接的可用性 | playlist:test |
| API 集成 | 生成IPTV API的数据并与之交互 | api:generate,api:load |
| 文档 | 使用当前播放列表信息更新README | readme:update |
存储库使用GitHub Actions工作流程进行自动化。这些工作流程响应特定事件运行上述脚本。
三个主要工作流程是:
存储库中的所有流必须遵循特定格式:
#EXTINF:-1 tvg-id="STREAM_ID",CHANNEL_NAME (QUALITY) [LABEL]
STREAM_URL
其中
| 属性 | 描述 | 示例 |
|---|---|---|
STREAM_ID | 频道的唯一标识符 | CNN.us |
CHANNEL_NAME | 频道的全名 | CNN |
QUALITY | 最高流质量 | 720p |
LABEL | 可用性标签(如果需要) | [非24/7] |
STREAM_URL | 流的URL | https://example.com/stream.m3u8 |
如果需要访问某些流,可以通过属性或#EXTVLCOPT标签指定附加的HTTP头。
.readme/目录包含用于生成主README.md的文件。
| 文件 | 目的 |
|---|---|
template.md | README模板,包含占位符 |
supported-categories.md | 所有支持的类别及其描述列表 |
config.json | Markdown编译器的配置 |
preview.png | 在README中显示的图像 |
README使用readme:update脚本自动生成,该脚本用关于播放列表的当前数据填充模板。
来源:CONTRIBUTING.md148-152 .readme/template.md1-158 .readme/supported-categories.md1-32
.github/目录包含:
这些文件有助于维护存储库的秩序并自动化例行维护任务。
此图显示了数据如何通过IPTV系统流动,从贡献到最终用户访问。
来源:README.md1-35 CONTRIBUTING.md9-31
通过这种架构,IPTV存储库维护了一个经过验证、处理和以各种格式发布的流集合,供最终用户通过其媒体播放器访问。