使用Spotipy的Spotify API
Spotify是一款出色的音乐流媒体应用,具有强大的API功能。该API既对初学者友好,又提供广泛的端点。这使得Spotify API成为有兴趣参与网络API甚至数据科学的初级程序员,或希望对播放列表有更多控制权的高级程序员入门的好方法。
简介
Spotipy是一个流行的Spotify API的包装器。它启用并支持Spotify API的所有功能,但允许它们在Python中设计和运行。这使得它具有可扩展性,当我们开始处理大量的数据时,它也会派上用场。
目标
这是关于Spotipy及其应用的三部分系列教程的第一部分。到最后,你应该能够设计和实现各种算法,以创建独特的播放列表,搜索推荐的音乐,并分析有关你的音乐选择的元数据。
要实现这些崇高的目标,需要一个强大的基础。这就是本系列第一部分的目标。到最后,你应该明白如何建立一个spotipy项目,认证过程,最后我们将开始使用一些spotipy的端点。
前提条件
-
你需要一个Spotify账户。它不一定是Spotify的高级账户,免费账户也可以。
-
我试图使我的教程尽可能简单,所以即使你是一个初学者,你也可以跟随并取得一些你引以为豪的成果。也就是说,在开始之前你应该有一些Python的基本知识。如果你知道如何使用enumerate()函数,如何导入模块,以及如何使用pip3,你应该能够完成本教程的这一部分。如果你对这些技能还没有信心,那也没关系!你可以点击所提供的链接,当你开始学习的时候,你就会发现你已经学会了。点击所提供的链接,当你觉得有信心时,再回到文章中来。
-
你应该了解如何使用终端。
第1步:设置开发者账户
第一步是创建一个Spotify开发者账户。点击链接,登录你的Spotify账户,并按照说明创建一个开发者账户。
创建开发者账户后,点击创建一个应用程序按钮,为你的Spotify应用程序命名,并给它一个描述。它可以是你想要的任何东西。一旦你进入你的Spotify应用仪表板,进入编辑设置并添加一个重定向网址。你可以将其他字段留空,滚动到底部并点击保存。
对于重定向网址,强烈建议使用http://localhost:9000 或你选择的本地主机端口。
我曾尝试使用不同的网站,但通常会产生错误,所以我是根据经验说的,在大多数情况下,localhost是重定向链接的最佳选择。
你将需要保存你的客户ID和客户秘密,用于认证过程。
第2步:创建一个Python环境
一个好的开发者实践是拥有一个有组织的文件系统。如果这是你的第一个 Python 项目,可以考虑建立一个叫做 PythonScripts 的目录 (你可以随心所欲地命名它)。在这个目录中创建一个叫做 spotipy_tutorial 的文件夹。
现在运行下面的命令来重新创建一个虚拟环境。不要跳过这个步骤。如果你已经安装了virtualenv,运行该行。
~/PythonScripts/spotipy_tutorial >> virtualenv venv
如果你以前从来没有安装过虚拟环境,或者上面的命令不起作用,请执行以下步骤。
~/PythonScripts/spotipy_tutorial >> python3 -m pip3 install --user virtualenv
~/PythonScripts/spotipy_tutorial >> virtualenv venv
为什么要创建venv?
创建一个虚拟环境通常被初级程序员所忽视,然而这可能是一个糟糕的错误。Python 的新版本几乎每年都会发布,当你想回到一个项目时,这可能会造成问题。模块开始与新版本的Python不兼容,你的代码开始中断。
在你的程序崩溃后,要修复它就更难了(尤其是在6个多月没有阅读你的代码之后)。此外,一些模块可能有错误,会对你的系统做一些讨厌的事情。通过创建一个独立的目录,你可以避免压力和担忧。
注意:Spotipy是一个很好的模块,并且有一个活跃的团队支持开发,所以你不必担心灾难性的bug,但还是要养成为你的项目创建虚拟环境的习惯。
venv创建后,运行这个命令来启动你的虚拟环境。
~/PythonScripts/spotipy_tutorial >> source venv/bin/activate
并停用运行。
~/PythonScripts/spotipy_tutorial >> deactivate
现在你已经建立了一个 Python 环境,你应该安装 spotipy。
在你的终端窗口中,在活动的虚拟环境中运行以下命令。
~/PythonScripts/spotipy_tutorial >> pip install spotipy
第3步:认证和运行
在这一部分,你将需要客户ID、客户秘密和重定向网址。你可以把这些值设置为环境变量。
export SPOTIPY_CLIENT_ID='your-spotify-client-id'
export SPOTIPY_CLIENT_SECRET='your-spotify-client-secret'
export SPOTIPY_REDIRECT_URI='your-spotify-redirect-url'
我建议你创建一个名为cred.py的文件,并在其中存储你的值。不言而喻,这个文件不应该被提交到版本库。
创建一个cred.py文件,并把下面的内容放在你的文件中。
client_ID='your-spotify-client-id'
client_SECRET='your-spotify-client-secret'
redirect_url='your-spotify-redirect-url'
现在创建一个文件main.py并添加以下模板代码。
import spotipy
from spotipy.oauth2 import SpotifyOAuth
import cred
在进一步讨论之前,你应该对作用域有一个概念。Spotify使用作用域来确保程序只有在你指定的情况下才有权限做。你可以在这里阅读可用的作用域列表。你总是需要指定你要使用的作用域。
对于本教程的第一部分,你应该使用以下范围。
scope = "user-read-recently-played"
现在是认证。就像我在开始时说的,Spotipy使它变得简单!
sp = spotipy.Spotify(auth_manager=SpotifyOAuth(client_id=cred.client_id, client_secret= cred.client_secret, redirect_uri=cred.redirect_url, scope=scope))
现在你有了你的认证的spotipy对象,你现在可以从你的spotify客户端请求数据。让我们得到我们最近的50首歌曲并把它们列出来。
results = sp.current_user_recently_played()
for idx, item in enumerate(results['items']):
track = item['track']
print(idx, track['artists'][0]['name'], " – ", track['name'])
如果一切顺利,你的代码应该看起来像这样。
import spotipy
from spotipy.oauth2 import SpotifyOAuth
import cred
scope = "user-read-recently-played"
sp = spotipy.Spotify(auth_manager=SpotifyOAuth(client_id=cred.client_id, client_secret= cred.client_secret, redirect_uri=cred.redirect_url, scope=scope))
results = sp.current_user_recently_played()
for idx, item in enumerate(results['items']):
track = item['track']
print(idx, track['artists'][0]['name'], " – ", track['name'])
总结
在下一个教程中,我们将开始分析我们的数据,为了做到这一点,我们必须打败Spotify的数据限制,即限制API可以调用的项目数量。现在,先玩玩其他的spotipy函数,这样你就能适应API了。