菜单

添加和修复流

相关源文件

本文档提供了有关向 IPTV 存储库添加新流或修复现有流的全面说明。它涵盖了流贡献的整个工作流程,从提交方法到处理它们的自动化流程。

有关播放列表系统整体组织的信息,请参阅 播放列表系统。有关流处理和验证的技术细节,请参阅 流处理

流贡献工作流程

IPTV 存储库主要通过两种方式接受流贡献:GitHub Issues 和 Pull Requests。所有贡献在添加到存储库之前都会经过验证和处理。

流贡献流程

来源:CONTRIBUTING.md10-61

添加新流

在添加新流之前,请确保您已完成以下准备步骤

  1. 通过在媒体播放器中测试来验证流是否稳定工作
  2. 检查流是否已存在于播放列表中
  3. iptv-org.github.io 上查找正确的频道 ID
  4. 确认频道未被屏蔽
  5. 确保流不来自 Xtream Codes 服务器

通过 GitHub Issues 添加

  1. 使用“streams:add”问题模板创建一个新问题
  2. 填写所有必需信息
    • 流 ID(格式为 channelIdchannelId@feedId
    • 流 URL
    • 质量(如果已知)
    • 标签(如果适用 - 例如,“地理限制”或“非 24/7”)
    • HTTP User-Agent 和 HTTP Referrer(如果流需要)
  3. 提交问题并等待批准

批准后,流将在下一个更新周期自动添加。

通过 Pull Requests 添加

  1. streams/ 目录中找到相应的国家/地区特定文件
  2. 按照流描述方案添加流
  3. 提交拉取请求
  4. 等待审查和合并

来源:CONTRIBUTING.md10-31 scripts/commands/playlist/update.ts153-222

流描述格式

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

#EXTINF:-1 tvg-id="STREAM_ID",CHANNEL_NAME (QUALITY) [LABEL]
STREAM_URL

其中

属性描述必填有效值
STREAM_ID流的 ID可选<channel_id><channel_id>@<feed_id>
CHANNEL_NAME频道的全名必填除了 ,[] 之外的任何字符
QUALITY最高流质量可选2160p1080p720p480p 等。
LABEL限制说明可选地理限制非 24/7
STREAM_URL流 URL必填有效 URL

适用于需要自定义 HTTP 标头的流

#EXTINF:-1 tvg-id="ExampleTV.us" http-referrer="http://example.com/" http-user-agent="Mozilla/5.0",Example TV
http://example.com/stream.m3u8

或者

#EXTINF:-1 tvg-id="ExampleTV.us",Example TV
#EXTVLCOPT:http-referrer=http://example.com/
#EXTVLCOPT:http-user-agent=Mozilla/5.0
http://example.com/stream.m3u8

来源:CONTRIBUTING.md102-141

修复流

存储库提供了多种修复现有流问题的方法。

修复流描述

如果流的元数据不正确

  1. 使用 iptv-org.github.io 验证正确的流 ID
  2. 使用“streams:edit”模板创建一个问题
  3. 提供流 URL 和更正后的信息
  4. 提交并等待批准

报告损坏的流

要报告损坏的流

  1. 验证流是否确实已损坏,而不仅仅是地理限制
  2. 使用“Broken Stream”模板创建一个问题
  3. 提供损坏的流 URL
  4. 提供有关问题的任何其他信息

来源:CONTRIBUTING.md32-61 scripts/commands/playlist/update.ts101-151

幕后:问题处理

当您提交用于添加或修复流的问题时,系统会在批准后处理这些请求。

问题加载和解析

该系统使用多个组件来处理与流相关的问题

  1. IssueLoader:从 GitHub API 获取问题
  2. IssueParser:将问题内容解析为结构化数据
  3. Issue Model:用标签和数据表示一个问题

流处理工作流程

根据问题类型,系统会执行不同的操作

  • 添加流:创建新的流对象并将其添加到相应的播放列表文件中
  • 编辑流:更新流属性(ID、质量、标签、HTTP 标头)
  • 移除流:将流标记为已删除,以便它们在生成的播放列表中被排除

实际处理由 playlist:update 命令处理,该命令通过 GitHub Actions 自动运行。

来源:scripts/core/issueLoader.ts1-36 scripts/core/issueParser.ts1-49 scripts/models/issue.ts1-20 scripts/commands/playlist/update.ts1-226

测试与验证

为了确保存储库中流的质量,在提交任何流之前进行彻底测试非常重要

流测试方法

  1. 手动测试:在 VLC 或其他媒体播放器中打开流,并观看至少一分钟
  2. 自动测试:使用提供的 NPM 脚本测试流的可用性

此命令会检查播放列表中的所有流并显示其状态。

常见问题与解决方案

  • 地理限制的流:可能显示为损坏,但只能在特定区域工作。使用 VPN 进行测试或使用 [Geo-blocked] 标签进行指示。
  • 间歇性流:有些流只在特定时间播出。用 [Not 24/7] 标记这些。
  • HTTP 标头:某些流需要特定的 HTTP User-Agent 或 Referrer 标头才能正常工作。

来源:CONTRIBUTING.md63-91

查找损坏的流

如果您想通过查找和报告损坏的流来提供帮助

  1. 使用 VLC 检查流(工具 -> 消息显示错误)
  2. 运行 playlist:test 脚本以自动检查流
  1. 使用问题模板报告您找到的任何损坏的流

该系统通过 report:create 命令维护潜在问题的报告,该命令用于识别无效或有问题的流。

来源:CONTRIBUTING.md63-91 scripts/commands/report/create.ts1-176