我目前正在尝试为IceCast电台设置一个主要的原始HTML5网络播放器。我以前使用ShoutCast并且能够从XML文件中提取数据。 IceCast只通过XSL文件提供数据,我不确定我是如何实际读取该文件以获取我想要的信息。
有问题的文件is here并包含此JSON内容:
{ "icestats":
"admin":"calhoun347@gmail.com",
"host":"gahgahshortme",
"location":"The Cloud",
"server_id":"Icecast 2.4.2",
"server_start":"Thu, 09 Feb 2017 12:00:50 -0500",
"server_start_iso8601":"2017-02-09T12:00:50-0500",
"dummy":null}
}
我想阅读标题元素,并在网页Reusable-Box.me上显示 - 当前时间 - 文字
这是进展中的工作文本
显示。
此外,我希望Reusable-Box.me上的页面每隔10秒左右刷新一次。
我想我知道如何做最后一部分,我之前用XML文件做过,同样的方法应该有用(我认为)。但我仍然在前两部分迷失了。
我不是说我希望有人为我做这项工作,但我在IceCast的任何文档中找不到任何示例 - 因为我正在做的事情似乎非常基本。
答案 0 :(得分:0)
看一下这个文档
http://icecast.org/docs/icecast-2.4.1/server-stats.html
Icecast在内部使用XML,因此您无法通过HTTP请求轻松获取它。 但是Icecast可以使用驻留在Icecat“web”目录中的XSL文件将其内部XML数据表示转换为您喜欢的任何格式。 当您在浏览器中打开Icecast状态页面时
您会看到HTML中内部XML数据的HTML表示形式,即status.xsl
XSL文件生成的默认行为。
当您向
提出请求时http://reusable-box.me:8000/status-json.xsl
您可以通过status-json.xsl
样式表获得JSON格式的Icecast数据。
如果您需要XML,可以将status-xml.xsl
文件放在以下内容中:
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0">
<xsl:output indent="yes" encoding="UTF-8" />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
在Icecast网站目录中并通过
请求http://reusable-box.me:8000/status-xml.xsl
你会得到XML。
但是你应该更好地使用JSON,因为使用Javascript解析起来要容易得多,创建一个脚本(例如jQuery),每10秒就会拉http://reusable-box.me:8000/status-json.xsl,因此你会得到一个Javascript从JSON自动创建的对象将包含所有数据。
希望这有帮助!