当前位置: 首页 > 知识库问答 >
问题:

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

叶声
2023-03-14

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

我正在编写一个python脚本,希望它告诉我Spotify当前正在播放的歌曲。

我试着寻找可以帮助我的库,但没有找到任何仍在维护和工作的库。我还浏览了Spotify的web API,但它没有提供任何获取这些信息的方法。

我找到的唯一潜在解决方案是抓住我的Spotify(桌面应用)窗口的标题。但是到目前为止我还没有做到。

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

>

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

    或者

    从Spotify的桌面html" target="_blank">应用程序或web客户端提取该信息的任何其他方法。

    原职:

    我正在摆弄一个linux环境的python状态栏的想法,没有什么花哨的,只是一个根据我自己的使用量身定制的脚本。我现在想做的是显示Spotify当前播放的曲目(即艺术家和标题)。

    他们的官方web API中似乎没有类似的内容。我也没有找到任何第三方库可以这样做。我发现的大多数库要么在spotify发布其当前API后被弃用,要么它们基于所述API,而该API并不是我想要的。

    我在这里也读过一堆类似的问题,其中大多数没有答案,或者是一个不推荐的解决方案。

    我想抓住窗口标题,因为它确实显示了我需要的信息。但这不仅看起来很复杂,我也很难做到这一点。我试图通过在我的脚本中运行linux命令xdools和xprop的组合来获得它。

    值得一提的是,由于我已经在使用psutil库获取其他信息,我已经可以访问spotify的PID。

    知道我怎么做到的吗?

    万一我的方法是你唯一能想到的方法,你知道如何让它发挥作用吗?

    谢谢你的帮助。

  • 共有2个答案

    上官高翰
    2023-03-14

    对于窗口:

    可以在github上找到该库:https://github.com/XanderMJ/spotilib. 请记住,这项工作仍在进行中。

    只需复制文件并将其放在Python/Lib目录中。

    import spotilib
    spotilib.artist() #returns the artist of the current playing song
    spotilib.song() #returns the song title of the current playing song
    

    spotilib.artist()只返回第一个艺术家。我开始在另一个库spotimeta.py解决这个问题。然而,这还不是100%工作。

    import spotimeta
    spotimeta.artists() #returns a list of all the collaborating artists of the track
    

    如果发生错误,spotimeta.artists()将仅返回第一个艺术家(使用spotilib.artist()找到)

    贝杜吟
    2023-03-14

    Linux上的Spotify客户端实现了一个名为MPRIS-Media Player远程接口规范的D总线接口。

    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']
    
    
     类似资料:
    • 我正在尝试集成web API来获取当前正在播放/最近播放的歌曲。但是,我无法生成具有范围(user-read-one-play,user-read-report-state)的令牌。 我关注这个链接是为了引用Spotify。https://developer.spotify.com/web-api/authorization-guide/ 我得到了超文本标记语言响应。 请帮忙。非常感谢。

    • 我正在开发一个移动应用程序,可以检测iPhone和Android上各种媒体播放器播放的歌曲。我们目前支持多个应用程序在这两个平台。我们的应用程序的工作方式与Last.fm检测和自动删除播放的方式类似。 假设我对要收集其历史记录的每个用户都有spotify凭据。 谢谢

    • 我将LastFM API中的艺术家、曲目和专辑存储在一个小部件中。我想在用户单击play时播放Spotify歌曲的30秒片段。有可能这样做吗?我正在努力寻找一种方法。。尤其是在没有用户身份验证/权限的情况下。 Spotify应用程序API:播放专辑中的特定曲目 这看起来很有希望,但我不确定这是否是我所说的。。。 如果有人能给我指出正确的方向(使用什么样的API调用),那就太好了!我可以从那里找到剩

    • 我是一个非常noob的用户,我正在尝试在我的Android应用程序中播放Spotify的一些曲目。目前我正在使用kaaes API:https://github.com/kaaes/spotify-web-api-android 我正在努力从一个非常特定的播放列表和一个非常特定的用户ID中检索曲目。似乎我做不到,我找到的例子都是老的,对我没有帮助。以下是我尝试过的: 从寻呼机对象访问播放列表 它会

    • 我正在实现一个与获取当前音乐曲目信息相关的应用程序。

    • 有没有办法通过Spotify Web API将歌曲排入用户在其活动设备上的队列? 我不想播放网页上的歌曲。我想通过一个网页/服务器应用程序,使用用户凭据调用Spotify web API,向他们的队列添加一个曲目,该曲目将在他们的活动Spotify设备上播放。