【问题标题】:Title of icecast stream (without status.xsl)icecast 流的标题(没有 status.xsl)
【发布时间】:2025-11-23 13:00:01
【问题描述】:

我尝试为一些 icecast 流设置标题(艺术家 - 歌曲)。 这里有很多关于它的讨论,其中大多数只是检查 status.xsl(就像 Icecast Now Playing PHP 脚本一样)。
但是:
- 大量流不允许其他脚本读取此文件(例如
http://95.81.147.3/status.xsl?mount=/fip/all/fiphautdebit.mp3
- 正如 ePirat 所说的那样,像这样解析 html 是不安全的。但他只在我们可以访问服务器时才提出解决方案。

根据我阅读的内容:there is metadata in icecast stream itself 但该解决方案仅适用于广播。所以for this link.
我找到的最接近的东西是this code review,但虽然标题说是icecast,但我只是看到了带有Icy-MetaData 检查的shoutcast 代码。

这个very complete link 可能很有用(带外标准部分),但说明它仍然不起作用。

问题基本上是:为了获取艺术家 - 歌曲信息,如何读取 icecast 流的元数据,何时:
- 我不是服务器的管理员
- 我不想要/ 无法解析 status.xsl ?

感谢您的帮助

【问题讨论】:

  • 我在您链接到的问题中给出的答案适用于 SHOUTcast 和 Icecast 流。他们使用完全相同的元数据方法。如果您无法实现,我有一个 API 可以很好地以 JSON 格式返回元数据。你可以在这里访问它:audiopump.co/accounts/products/manage/api
  • 来自@Brad 的链接不再起作用。

标签: python django stream radio icecast


【解决方案1】:

从 Icecast 2.4 开始,获取有关通过服务器运行的流的机器可读元数据的首选方法是 status-json.xsl。此 JSON API 在所有安装中默认启用。

如果 status-json.xsl 返回 404,则服务器管理员有意识地选择禁用访问。在这种情况下,如果旧的 Icecast 安装 (2.3.x) 不会使用 JSON API 进行改造(管理员复制 status-json.xsl 和 xml2json.xslt 到 web 目录)尝试解析流本身以获取元数据的方法是一种丑陋但可能的方法。人们不得不怀疑管理员是否选择了禁止元数据访问,他们是否可以在一般情况下使用他们的流而不是简单地收听。

【讨论】:

  • 是的,如果文件不存在,该消息也会出现。在这种情况下,通过查看pub8.radiotunes.com/server_version.xsl 很容易确认 - 这表明这是 2.3.3-kh7。只有当有人手动将文件复制到 Icecast 的 webroot 时才会有这个。