如何在Python(Windows)中获得Spotify当前播放的歌曲?

时间:2015-03-15 15:22:20

标签: python python-3.x arduino spotify

我想在16x2液晶显示器上显示Spotify中当前的播放歌曲。 我正在考虑将LCD连接到我的Arduino,然后制作一个Python脚本,将Spotify的当前播放歌曲发送到Arduino。

为了达到目的,我正在寻找一种方法来获取Spotify目前在Python中播放的歌曲。 (我使用的是Windows 8.)我发现了一些像dbus这样的方法,但它们不管是Linux还是Mac。

提前致谢! (抱歉英语语法不好。)

3 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,所以我写了一个库来解决这个问题。该库可以在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()

希望这会对你有帮助(如果还需要的话)!

答案 1 :(得分:1)

最简单的方法可能是将Spotify客户端当前正在播放的曲目scrobble到last.fm帐户,然后使用python从那里获取它。

Last.fm允许您通过user.getRecentTracks的api获取scrobbled曲目,如果正在播放歌曲,则会提供nowplaying="true"属性。它还为外部显示提供了一些其他有用的东西,例如专辑封面的链接和歌曲的last.fm页面。

这是一个快速示例,它将用户名和api密钥作为cmd行参数,并使用请求库获取当前为该用户播放的内容。

from time import sleep
import requests
import json
from pprint import pprint
import sys    

def get_playing():
    base_url = 'http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user='
    user = sys.argv[1]
    key = sys.argv[2]
    r = requests.get(base_url+user+'&api_key='+key+'&format=json')
    data = json.loads(r.text)
    latest_track = data['recenttracks']['track'][0]
    try:
        if latest_track['@attr']['nowplaying'] == 'true':
            artist = latest_track['artist']['#text']
            song = latest_track['name']
            album = latest_track['album']['#text']
            print "\nNow Playing: {0} - {1}, from the album {2}.\n".format(artist, song, album)
    except KeyError:
        print '\nNothing playing...\n'    

def main():
    if len(sys.argv)<3:
        print "\nError: Please provide a username and api key in the format of: 'scrobble.py username api_key\n"
    else:
        get_playing()    

if __name__ == '__main__':
    main()

在快速测试中,似乎需要一分钟左右的时间才能意识到暂停或退出Spotify客户端后该曲目不再播放。

答案 2 :(得分:0)

是否有多个pytify? 这对我有用,直到今天: https://code.google.com/p/pytify/

Spotify已更新,现在歌曲不再显示在Windows标题中了。

他们将带来&#34;功能&#34;背部: https://community.spotify.com/t5/ideas/v2/ideapage/blog-id/ideaexchange/article-id/73238/page/2#comments