菜单

概述

相关源文件

GitHub 上的 IPTV 存储库 (iptv-org/iptv) 是一个广泛收集全球公开 IPTV (网络协议电视) 频道的集合。本文档提供了该存储库的架构、组织和核心组件的概览。

有关为存储库做出贡献的详细信息,请参阅 开发与贡献。有关技术实现细节,请参阅 技术架构

系统架构

IPTV 系统由几个相互连接的组件组成,它们协同工作以收集、验证、组织和分发 IPTV 频道流到最终用户。

高层架构

来源: README.md1-35 package.json1-26

该系统架构围绕包含流媒体内容引用的 M3U 播放列表文件构建。原始流数据存储在 streams 目录中特定国家的 M3U 文件里。自动化脚本处理这些文件,以生成按各种标准组织的、用户可访问的播放列表。GitHub Actions 负责验证、格式化和将播放列表部署到 GitHub Pages,最终用户可以通过视频播放器访问它们。

核心组件

组件描述实现
流文件存储在特定国家文件中的原始流 URLstreams/*.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工作流:

  1. check.yml:通过运行 playlist:validateplaylist:lint 来验证拉取请求,以确保新的流提交满足质量标准。
  2. format.yml:使用 playlist:format 来格式化播放列表,以保持一致性。
  3. update.yml:使用 playlist:generate 生成播放列表,使用 api:generate 创建 API 数据,并使用 readme:update 更新 README。

数据流

该系统通过几个阶段处理流数据。

来源: README.md19-35 package.json3-26

  1. 贡献者通过拉取请求提交原始流 URL
  2. check.yml 工作流验证提交内容。
  3. 已验证的流存储在 streams 目录中特定国家的 M3U 文件里。
  4. format.yml 工作流会规范化流 URL。
  5. update.yml 工作流会生成公共播放列表和 API 数据。
  6. 生成的内​​容将部署到 GitHub Pages 以供用户访问。

播放列表组织

该存储库以分层结构组织播放列表。

来源: README.md29-111

主播放列表 (index.m3u) 包含所有频道,而专门的索引文件按以下方式对频道进行分组:

  1. 类别:按内容类型(体育、新闻、娱乐等)分组的频道。
  2. 语言:按广播语言(英语、西班牙语、阿拉伯语等)分组的频道。
  3. 国家:按广播国家(美国、英国、加拿大等)分组的频道。
  4. 地区:按地理区域(亚洲、欧洲、美洲等)分组的频道。

每个分组也有针对特定类别、语言、国家和地区的单独播放列表文件。

支持的类别

该存储库将频道归类为预定义的类型。

类别描述
动画节目内容大部分是二维或三维动画。
汽车与汽车、摩托车和机动车相关的节目。
商业与商业相关的节目。
娱乐包含各种娱乐节目的频道。
新闻节目内容大部分是新闻。
体育节目内容是体育。
等等...请参阅 支持的类别文档

来源: .readme/supported-categories.md1-32

IPTV 组织维护了几个与此主存储库协同工作的相关存储库。

  1. iptv-org/database:提供频道元数据和信息。
  2. iptv-org/epg:电子节目指南,用于频道列表。
  3. iptv-org/api:用于以编程方式访问频道数据的 API。

来源: README.md113-123

访问方法

最终用户可以通过将相关的播放列表 URL 插入任何支持直播的视频播放器来访问播放列表。

https://iptv-org.github.io/iptv/index.m3u

对于特定的播放列表,用户可以访问特定类别、特定语言、特定国家或特定地区的播放列表 URL。

来源: README.md19-111