python - 获取 spotify 当前正在播放的轨道

标签 python linux spotify

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

我正在编写一个 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/

相关文章:

c++ - 将 opengl 窗口转换为 std::size_t 并在 Linux 中再次工作,但在 OS X 中不工作

python - 为什么这种(​​可能更有效)动态算法的性能优于朴素递归版本?

linux - 如何在 Linux Debian 中使用 Cuda-Aware MPI 安装 Open MPI

python - 使用 vim 打开新的 python 文件时自动 header

linux - nginx 设置为反向代理的目录重定向问题

ios - ios 应用程序中 Spotify 轨道的音频混合

javascript - 为什么使用此 JSON 解析 JSON 响应时出现错误?

ios - 在 Spotify iOS 应用程序中创建播放列表

python - 如何在 python shell 中检查 matplotlib 的默认字体?

python - Gimp Python 插件 gimp.Image 作为 numpy 数组