编辑:让我们试着澄清这一切。
我正在编写一个 python 脚本,我想让它告诉我 Spotify 当前正在播放的歌曲。
我尝试寻找可以帮助我的库,但没有找到任何仍在维护和工作的库。 我还查看了 Spotify 的 Web API,但它没有提供任何获取该信息的方法。
我找到的唯一可能的解决方案是获取我的 Spotify(桌面应用程序)窗口的标题。但到目前为止我没能做到。
所以基本上,我想问的是是否有人知道:
如何在纯 Python 或使用中间 shell 脚本中应用我已经尝试使用的方法(从程序中获取窗口的标题)。
或
从 Spotify 的桌面应用程序或 Web 客户端提取该信息的任何其他方式。
原帖:
我正在摆弄用于 linux 环境的 python 状态栏的想法,没什么特别的,只是为我自己的使用量身定制的脚本。我现在要做的是显示 spotify 中当前正在播放的轨道(即艺术家和标题)。
在他们的官方网络 API 中似乎没有类似的东西。我还没有找到任何可以做到这一点的第三方图书馆。我发现的大多数库要么自 Spotify 发布其当前 API 以来已被弃用,要么基于上述 API 而无法满足我的要求。
我在这里也看到了一堆类似的问题,其中大部分都没有答案,或者是已弃用的解决方案。
我考虑过获取窗口标题,因为它确实显示了我需要的信息。但这不仅看起来真的很复杂,而且我也很难做到这一点。我试图通过在我的脚本中运行 linux 命令 xdotools 和 xprop 的组合来获得它。
值得一提的是,因为我已经在使用 psutil 库获取其他信息,所以我已经可以访问 spotify 的 PID。
知道我该怎么做吗?
如果我的方法是您唯一能想到的方法,您知道如何让它真正起作用吗?
我们将不胜感激。
最佳答案
Linux 上的 Spotify 客户端实现了一个称为 MPRIS - 媒体播放器远程接口(interface)规范的 D-Bus 接口(interface)。
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'])
关于python - 获取 spotify 当前正在播放的轨道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33883360/