我想用相同的脚本创建一些 Liquidsoap 源,但有一些变量,例如站名。
例如,我已经看到我可以包含一个 config.liq,但是如果我可以从与语言无关的东西(例如 JSON)中读取我的配置参数,那就太好了。Liquidsoap 有一个of_json
功能,但我不清楚如何从 JSON 文件而不是 JSON 字符串中读取。
我可以做些什么来拥有一个不绑定到脚本语言的配置文件?
我想用相同的脚本创建一些 Liquidsoap 源,但有一些变量,例如站名。
例如,我已经看到我可以包含一个 config.liq,但是如果我可以从与语言无关的东西(例如 JSON)中读取我的配置参数,那就太好了。Liquidsoap 有一个of_json
功能,但我不清楚如何从 JSON 文件而不是 JSON 字符串中读取。
我可以做些什么来拥有一个不绑定到脚本语言的配置文件?
我不确定该设施何时添加到 Liquidsoap(我这里有 1.2.1),但假设您有 foo.json,例如:
[
{
station_name : "Some Station",
station_url : "http://example.com/"
},
{
station_name : "Some Other Station",
station_url : "http://other.example.com/"
}
]
然后您应该能够使用以下内容读取和解析它:
m = file.contents("config.json")
print(of_json(default=[[("error", "badfile")]], m));
给予
[[("station_name","Some Station"), ("station_url","http://example.com/")], [("station_name","Some Other Station"), ("station_url","http://other.example.com/")]]
如果您的 JSON 格式不同,则需要将默认模板调整为of_json
希望有帮助。
好问题。我没有确切的代码给你,但我实际上已经能够通过使用 cURL 来读取 HTTP。(然后,我找到了 HTTP 请求的内置函数,但我认为这些不适用于您的情况。)
如果找不到直接读取文件的命令,只需system()
调用cat
to 转储文件即可。
我也找不到任何直接从liquidsoap 读取文件的命令。
你总是可以使用环境变量:
station_name = getenv("STATION_NAME")