GitHub 上的 IPTV 存储库 (iptv-org/iptv) 是一个广泛收集全球公开 IPTV (网络协议电视) 频道的集合。本文档提供了该存储库的架构、组织和核心组件的概览。
有关为存储库做出贡献的详细信息,请参阅 开发与贡献。有关技术实现细节,请参阅 技术架构。
IPTV 系统由几个相互连接的组件组成,它们协同工作以收集、验证、组织和分发 IPTV 频道流到最终用户。
来源: README.md1-35 package.json1-26
该系统架构围绕包含流媒体内容引用的 M3U 播放列表文件构建。原始流数据存储在 streams 目录中特定国家的 M3U 文件里。自动化脚本处理这些文件,以生成按各种标准组织的、用户可访问的播放列表。GitHub Actions 负责验证、格式化和将播放列表部署到 GitHub Pages,最终用户可以通过视频播放器访问它们。
| 组件 | 描述 | 实现 |
|---|---|---|
| 流文件 | 存储在特定国家文件中的原始流 URL | streams/*.m3u |
| 播放列表 | 按类别、语言、国家或地区组织的生成的 M3U 文件 | 各种索引文件和子目录 |
| 脚本 | 处理、验证和生成播放列表的自动化工具 | scripts/commands/* |
| GitHub Actions | 按计划或由事件触发运行脚本的 CI/CD 工作流 | .github/workflows/*.yml |
| GitHub Pages | 生成的播放列表的托管平台 | 从存储库部署 |
来源: README.md19-113 package.json10-18
来源: package.json3-26 m3u-linter.json1-18
该仓库使用三个主要的GitHub Actions工作流:
playlist:validate 和 playlist:lint 来验证拉取请求,以确保新的流提交满足质量标准。playlist:format 来格式化播放列表,以保持一致性。playlist:generate 生成播放列表,使用 api:generate 创建 API 数据,并使用 readme:update 更新 README。该系统通过几个阶段处理流数据。
来源: README.md19-35 package.json3-26
check.yml 工作流验证提交内容。streams 目录中特定国家的 M3U 文件里。format.yml 工作流会规范化流 URL。update.yml 工作流会生成公共播放列表和 API 数据。该存储库以分层结构组织播放列表。
来源: README.md29-111
主播放列表 (index.m3u) 包含所有频道,而专门的索引文件按以下方式对频道进行分组:
每个分组也有针对特定类别、语言、国家和地区的单独播放列表文件。
该存储库将频道归类为预定义的类型。
| 类别 | 描述 |
|---|---|
| 动画 | 节目内容大部分是二维或三维动画。 |
| 汽车 | 与汽车、摩托车和机动车相关的节目。 |
| 商业 | 与商业相关的节目。 |
| 娱乐 | 包含各种娱乐节目的频道。 |
| 新闻 | 节目内容大部分是新闻。 |
| 体育 | 节目内容是体育。 |
| 等等... | 请参阅 支持的类别文档 |
来源: .readme/supported-categories.md1-32
IPTV 组织维护了几个与此主存储库协同工作的相关存储库。
来源: README.md113-123
最终用户可以通过将相关的播放列表 URL 插入任何支持直播的视频播放器来访问播放列表。
https://iptv-org.github.io/iptv/index.m3u
对于特定的播放列表,用户可以访问特定类别、特定语言、特定国家或特定地区的播放列表 URL。
来源: README.md19-111