使用Spotipy库

时间:2018-04-07 21:21:46

标签: python api spotify spotipy

我尝试使用Spotpyy Spotify python库来访问用户当前正在播放的音乐。

import json
import spotipy
import spotipy.util as util
from spotipy.oauth2 import SpotifyClientCredentials 

cid = "xxx"
csecret = "xxx"
redirectURI = "xxx"
username = "xxx"

client_credentials_manager = SpotifyClientCredentials(client_id=cid, client_secret=csecret) 
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)

scope = 'user-read-currently-playing'
token = util.prompt_for_user_token(username, scope, cid, csecret, redirectURI)

if token:
    sp = spotipy.Spotify(auth=token)
else:
    print("Can't get token for", username)

current_track = sp.current_user_playing_track()
print(json.dumps(current_track, sort_keys=False, indent=4))

我也尝试过使用sp.currently_playing()。我可以访问其他数据,例如sp.current_user_saved_tracks(limit=3, offset=0)。使用我目前拥有的东西,总是出错 AttributeError: 'Spotify' object has no attribute 'current_user_playing_track'。我已经探索过使用节点,但我真的很想坚持使用python。

2 个答案:

答案 0 :(得分:1)

您尝试使用最新发布的版本中没有的功能。

您可以看到on PyPI当前版本于2017年1月5日发布,但您可以看到on Github您要拨打的功能已于2017年5月13日添加。

Issue #270Issue #211都在询问何时将新版本推送到PyPI,(此外,版本编号存在一些奇怪的问题。)

无论如何,正如#211所说:

  

如果您仍然遇到问题,可以直接从github repo安装软件包。

pip install git+https://github.com/plamere/spotipy.git --upgrade

答案 1 :(得分:1)

因此,在网络上每个错误的答案出现3天后,我也一直尝试访问我的当前歌曲... 我正在使用https://spotipy.readthedocs.io/en/2.12.0/#client-credentials-flow处所说的Authorization Code Flow

只能访问不访问用户信息的端点

由于我无法设置环境变量,因此我使用了另一个脚本。

请注意,您应该在https://localhost:8000/中添加重定向链接,例如“ https://developer.spotify.com/dashboard/applications/


这是我的添加信用凭证的代码:

import os

class SetCreditentials:

    def __init__(self):
        self.CLIENT_SECRET = os.getenv('SPOTIPY_CLIENT_SECRET')
        self.CLIENT_ID = os.getenv('SPOTIPY_CLIENT_ID')
        self.REDIRECT_URI = os.getenv('SPOTIPY_REDIRECT_URI')
        os.environ['SPOTIPY_CLIENT_ID'] = ""
        os.environ['SPOTIPY_CLIENT_SECRET'] = ""
        os.environ['SPOTIPY_REDIRECT_URI'] = "http://localhost:8000/"

以下是访问任何数据的代码(此处为当前播放曲目):

import spotipy.util as util
import spotipy
import Creditentials

# Authorization Code Flow
user = "213tzif5o7rzyxtijuqdgtfuq"
scope = "user-read-currently-playing"

Creditentials.SetCreditentials()
token = util.prompt_for_user_token(user, scope)
track = spotipy.Spotify(token).current_user_playing_track()
print(track)