获取spotify当前正在播放的曲目

kRY*_*OoX 6 python linux spotify

编辑:让我们试着澄清这一切.

我正在写一个python脚本,我想让它告诉我Spotify目前正在播放的歌曲.

我一直在寻找可以帮助我的图书馆,但没有找到任何仍然维护和工作的图书馆.我还查看了Spotify的Web API,但它没有提供任何获取该信息的方法.

我找到的唯一可能的解决方案是获取我的Spotify(桌面应用程序)窗口的标题.但到目前为止我还没有成功.

所以基本上,我问的是,是否有人知道:

  • 如何应用我已经尝试使用的方法(从程序中获取窗口的标题),无论是纯python还是使用中间shell脚本.

    要么

  • 从Spotify的桌面应用程序或Web客户端提取该信息的任何其他方式.


原帖:

我正在摆弄一个Linux环境的python状态栏的想法,没什么特别的,只是根据我自己的用法量身定制的脚本.我现在要做的就是从spotify(即艺术家和标题)显示当前播放的曲目.

在他们的官方Web API中似乎没有类似的东西.我还没有找到任何可以做到这一点的第三方库.我找到的大多数库都被弃用了,因为spotify发布了他们当前的API,或者他们是基于所谓的API而不是我想要的.

我在这里也阅读了一堆类似的问题,其中大多数都没有答案,或者是一个不赞成使用的解决方案.

我想抓住窗口标题,因为它确实显示了我需要的信息.但这不仅令人费解,我也难以实现这一点.我试图通过在我的脚本中运行linux命令xdotools和xprop的组合来获得它.

值得一提的是,由于我已经将psutil lib用于其他信息,因此我已经可以访问spotify的PID.

知道我怎么能这样做吗?

如果我的方法是你能想到的唯一的方法,任何想法如何实际使它工作?

我们将不胜感激.

joo*_*oon 19

Linux上的Spotify客户端实现了一个名为MPRIS的D-Bus接口 - 媒体播放器远程接口规范.

http://specifications.freedesktop.org/mpris-spec/latest/index.html

您可以从python访问标题(和其他元数据),如下所示:


import dbus
session_bus = dbus.SessionBus()
spotify_bus = session_bus.get_object("org.mpris.MediaPlayer2.spotify",
                                     "/org/mpris/MediaPlayer2")
spotify_properties = dbus.Interface(spotify_bus,
                                    "org.freedesktop.DBus.Properties")
metadata = spotify_properties.Get("org.mpris.MediaPlayer2.Player", "Metadata")

# The property Metadata behaves like a python dict
for key, value in metadata.items():
    print key, value

# To just print the title
print metadata['xesam:title']