【发布时间】:2012-02-21 22:44:02
【问题描述】:
要在 Spotify 中播放当前歌曲(使用 DBus),我使用以下命令:
dbus-send --print-reply --session --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:'org.mpris.MediaPlayer2.Player' string:'Metadata'
现在,下面命令的输出是这样的:(为了清楚起见,删掉了)
变体数组 [ 字典条目( 字符串“xesam:艺术家” 变体数组 [ 字符串“黑键” ] ) 字典条目( 字符串“xesam:标题” 变体字符串“放弃你的心” ) ]输出有点长,我想从中解析特定的值,如标题、艺术家等。
谷歌搜索说variant 是组件对象模型中使用的一种流行数据类型,所以我知道有一个比使用 sed/awk 获取值的更好的方法。那么,我该怎么做呢?
【问题讨论】:
-
与其自己尝试解析,不如使用 dbus 客户端库,例如 python 中的
dbus模块。 -
我觉得这样做有点矫枉过正,因为我只想知道当前正在播放的歌曲。
-
@AbhijeetRastogi 使用与您交谈的协议而不是使用文本破解的库几乎永远不会过大。如果你做错了,它就会坏掉。