菜单

项目结构

相关源文件

本文档提供了IPTV存储库结构的详细概述,解释了代码库的组织方式以及每个目录和文件的用途。这些信息旨在帮助开发人员理解整体架构并高效地浏览存储库。有关如何使用播放列表的信息,请参阅用户指南

存储库概览

IPTV存储库分为几个关键目录,每个目录在系统中都有特定用途。

来源:CONTRIBUTING.md142-158

目录结构

存储库具有以下主要目录和文件:

目录/文件目的
streams/包含所有按广播国家/地区组织的M3U播放列表
scripts/包含维护任务的自动化脚本
.github/包含GitHub工作流程和问题模板
.readme/包含用于生成主README.md的文件
tests/包含用于验证脚本的测试
CONTRIBUTING.md贡献项目的指南
README.md主文档,由.readme/template.md生成

来源:CONTRIBUTING.md142-158

流目录

streams/目录是存储库的核心,包含所有按国家/地区组织的IPTV频道流。每个国家/地区都有自己的M3U文件(例如,美国的us.m3u,英国的uk.m3u)。

这些内部播放列表是生成用户访问的公共播放列表的源数据。

来源:CONTRIBUTING.md154 CONTRIBUTING.md102-140

生成的播放列表

从源streams/目录,系统会生成几种类型的有组织的播放列表,这些播放列表会发布给用户。

来源:README.md25-112

脚本目录

scripts/目录包含维护存储库的自动化脚本。这些脚本处理各种任务,例如格式化播放列表、验证播放列表、生成公共播放列表和更新文档。

关键脚本类别

脚本类别目的示例命令
播放列表格式化格式化内部播放列表,规范化URL,删除重复项playlist:format
播放列表验证检查播放列表错误,验证流ID和URLplaylist:validateplaylist:lint
播放列表生成从源文件生成公共播放列表playlist:generate
播放列表测试测试流链接的可用性playlist:test
API 集成生成IPTV API的数据并与之交互api:generateapi:load
文档使用当前播放列表信息更新READMEreadme:update

来源:CONTRIBUTING.md159-188

自动化工作流

存储库使用GitHub Actions工作流程进行自动化。这些工作流程响应特定事件运行上述脚本。

三个主要工作流程是:

  1. check:当创建新的拉取请求时运行,以验证更改不会引入错误。
  2. format:可以手动运行以格式化所有播放列表。
  3. update:每天运行以更新播放列表、生成新的播放列表并进行部署。

来源:CONTRIBUTING.md189-198

流描述格式

存储库中的所有流必须遵循特定格式:

#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流的URLhttps://example.com/stream.m3u8

如果需要访问某些流,可以通过属性或#EXTVLCOPT标签指定附加的HTTP头。

来源:CONTRIBUTING.md102-140

文档文件

.readme/目录包含用于生成主README.md的文件。

文件目的
template.mdREADME模板,包含占位符
supported-categories.md所有支持的类别及其描述列表
config.jsonMarkdown编译器的配置
preview.png在README中显示的图像

README使用readme:update脚本自动生成,该脚本用关于播放列表的当前数据填充模板。

来源:CONTRIBUTING.md148-152 .readme/template.md1-158 .readme/supported-categories.md1-32

GitHub配置

.github/目录包含:

  1. 问题模板:用于报告流中断、请求添加流或请求删除流的标准格式。
  2. 工作流程定义:YAML文件,定义用于自动化存储库维护的GitHub Actions工作流程。
  3. 行为准则:社区互动指南。

这些文件有助于维护存储库的秩序并自动化例行维护任务。

来源:CONTRIBUTING.md144-147

数据流架构

此图显示了数据如何通过IPTV系统流动,从贡献到最终用户访问。

来源:README.md1-35 CONTRIBUTING.md9-31

通过这种架构,IPTV存储库维护了一个经过验证、处理和以各种格式发布的流集合,供最终用户通过其媒体播放器访问。