我想在16x2液晶显示器上显示Spotify中当前的播放歌曲。 我正在考虑将LCD连接到我的Arduino,然后制作一个Python脚本,将Spotify的当前播放歌曲发送到Arduino。
为了达到目的,我正在寻找一种方法来获取Spotify目前在Python中播放的歌曲。 (我使用的是Windows 8.)我发现了一些像dbus这样的方法,但它们不管是Linux还是Mac。
提前致谢! (抱歉英语语法不好。)
答案 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