如何从 JavaScript 访问 MPRIS2 元数据?

问题描述 投票:0回答:1

我想获取有关当前在支持 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
实际上并不是一种方法。我可以在阅读元数据时使用一些帮助。谢谢!

javascript node.js dbus audio-player
1个回答
0
投票

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);
    }
});

或者类似的东西。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.