我想获取有关当前在支持 MPRIS2 的 Linux 音乐播放器上播放音乐的元数据。 Python 有一个库为此提供了高级 API,但 JavaScript 没有。
我尝试寻找 JS MRPIS2 库,但无济于事。我目前正在尝试使用
dbus-native
包以较低级别的方式访问它,但事实证明这有点困难。这只是我在人工智能的帮助下拼凑而成的东西(尽管不是完全复制自它):
import * as dbus from "@homebridge/dbus-native";
var sessionBus = dbus.sessionBus();
var player = await sessionBus.getService("org.mpris.MediaPlayer2.AudioTube").getInterface("/org/mpris/MediaPlayer2", "org.mpris.MediaPlayer2.Player");
player.Metadata((err, metadata) => {
if (err) {
console.error(err);
} else {
console.log(metadata);
}
});
但看起来
Metadata
实际上并不是一种方法。我可以在阅读元数据时使用一些帮助。谢谢!
Metadata
是一个 属性。我在此模块中找不到对此属性的任何明确支持,因此您需要以手动方式阅读它们:通过调用 org.freedesktop.DBus.Properties
接口上的方法。
首先为该接口创建代理:
.getInterface("/org/mpris/MediaPlayer2", "org.freedesktop.DBus.Properties");
使用标准方法之一访问属性
Get(iface, name)
或 GetAll(iface)
:
.Get("org.mpris.MediaPlayer2.Player", "Metadata")
.GetAll("org.mpris.MediaPlayer2.Player")
我假设在 JS 中它们需要格式化为:
obj.Get("org.mpris.MediaPlayer2.Player", "Metadata", (err, metadata) => {
if (err) {
console.error(err);
} else {
console.log(metadata);
}
});
或者类似的东西。