菜单

播放列表组织

相关源文件

本文档介绍了IPTV存储库如何将数千个流媒体频道组织到一个结构化的播放列表系统中。它解释了按不同标准(类别、语言、国家和地区)分层的播放列表组织方式以及支持此组织的技术实现。

概述

IPTV存储库通过多种方式提供对相同内容的访问,并根据不同的分类方案进行组织,以满足各种用户需求。这是通过具有聚合和专用播放列表文件的分层播放列表结构来实现的。

来源: README.md25-293 .readme/template.md26-112

主播放列表

主播放列表(index.m3u)包含存储库中所有可用的频道。它作为所有其他专用播放列表的来源,是内容的全面集合。

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

此播放列表在播放列表生成过程中由IndexGenerator生成,该生成器选择所有通过内容验证标准的流。

来源: README.md29-35 scripts/commands/playlist/generate.ts144-145

按类别划分的组织

频道按内容类别(例如,体育、新闻、电影)进行组织,并设有主类别索引和各个类别播放列表。

类别索引

类别索引(index.category.m3u)按内容类别组织所有频道,每个频道都出现在其各自的类别组下。

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

来源: README.md37-47 scripts/commands/playlist/generate.ts147-148

单独的类别播放列表

每个类别都有其自己的专用播放列表文件,其中只包含该类别的频道

类别描述播放列表
动画主要是 2D 或 3D 动画categories/animation.m3u
商业与商业相关的节目categories/business.m3u
新闻新闻广播categories/news.m3u
体育体育节目categories/sports.m3u
.........

支持的类别及其定义的完整列表维护在.readme/supported-categories.md 文件中。

来源: README.md48-87 .readme/supported-categories.md1-32 scripts/commands/playlist/generate.ts124-125

按语言划分的组织

频道按广播语言组织,方便用户查找特定语言的内容。

语言索引

语言索引(index.language.m3u)按广播语言组织所有频道

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

来源: README.md91-101 scripts/commands/playlist/generate.ts156-157

单独的语言播放列表

每种语言都有其自己的专用播放列表,其中只包含广播该语言的频道

语言通道播放列表
英语2112+languages/eng.m3u
西班牙语2071+languages/spa.m3u
阿拉伯语393+languages/ara.m3u
.........

来源: README.md102-291 scripts/commands/playlist/generate.ts134-135

按国家划分的组织

频道按其广播国家进行组织,使用户能够找到本地内容。

国家索引

国家索引(index.country.m3u)按目标广播国家组织所有频道

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

来源: README.md295-305 scripts/commands/playlist/generate.ts150-154

单独的国家播放列表

每个国家都有其自己的专用播放列表,其中包含广播到该国家的频道

国家通道播放列表
🇺🇸 美国1800+countries/us.m3u
🇬🇧 英国300+countries/uk.m3u
.........

某些国家还有针对国家内特定地区的细分播放列表(例如,州、省)。

来源: README.md306-345 scripts/commands/playlist/generate.ts127-132

按地区划分的组织

频道按地理区域组织,方便用户查找更广泛区域的内容。

地区索引

地区索引(index.region.m3u)按目标广播地区组织所有频道

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

来源: README.md94-111 scripts/commands/playlist/generate.ts158-160

单独的地区播放列表

每个地区都有其自己的专用播放列表,其中包含广播到该地区的频道

区域播放列表
非洲regions/africa.m3u
美洲regions/americas.m3u
亚洲regions/asia.m3u
欧洲regions/europe.m3u
大洋洲regions/oceania.m3u

此外,还有一个用于全球可用频道的“国际”组。

来源: scripts/generators/indexRegionGenerator.ts1-63 scripts/commands/playlist/generate.ts138-142

技术实现

播放列表的组织由复杂的模型和生成系统提供支持。下图说明了所涉及的关键组件

来源: scripts/commands/playlist/generate.ts1-164 scripts/models/stream.ts1-390 scripts/core/playlistParser.ts1-49

直播流处理模型

Stream 类是播放列表组织的核心,代表一个具有所有元数据的单独频道直播流。

每个 Stream 都与一个 Channel(提供类别等元数据)和一个 Feed(提供广播区域和语言信息)相关联。这些关系使得系统能够按各种标准对直播流进行组织。

来源: scripts/models/stream.ts5-333

广播区域确定

Feed 类管理着决定直播流出现在哪个国家/地区播放列表中的广播区域信息。

广播区域使用三种格式的代码指定:

  • c/XX - 国家代码(例如,美国是 c/US
  • r/XXX - 区域代码(例如,欧洲是 r/EUR
  • s/XX-XXX - 子区域代码(例如,纽约州是 s/US-NY

特殊代码 r/INT 指定了国际可用的频道。

来源: scripts/models/feed.ts1-201

播放列表生成流程

播放列表生成流程遵循以下步骤:

  1. streams/ 目录中的文件加载原始直播流数据。
  2. PlaylistParser 将这些文件解析为 Stream 对象。
  3. 每个 Stream 都与来自 Channel 和 Feed 对象的元数据相关联。
  4. 根据各种标准对直播流进行过滤、排序和分组。
  5. 专门的生成器根据这些分组创建不同的播放列表文件。

playlist:generate 命令协调整个流程,生成所有经过组织整理的播放列表文件。

来源: scripts/commands/playlist/generate.ts28-161 scripts/core/playlistParser.ts1-48

结论

播放列表组织系统通过多种分类方案为 IPTV 频道提供灵活的访问。这使用户能够根据他们的特定兴趣、首选语言或地理位置来查找内容。

技术实现利用了一个健壮的数据模型,该模型捕获了直播流、频道、类别、语言和地理实体之间复杂的关联,从而能够自动生成组织良好的播放列表。

有关特定国家播放列表及其结构的信息,请参阅 国家特定播放列表