|
|
发表于 2022-11-10 19:24:58
|
显示全部楼层
上一篇文章初步介绍了使用Spotify Api进行数据分析,这篇文章将教会你玩转Spotify Api接口。
一、关于Spotify Api
Spotfiy Api是一个由Spotify提供的开放网络接口,我们能从中Spotify的数据库里获取包含艺人、专辑和曲目的Json元数据。
Api 还提供对Spotify用户相关数据的访问功能,例如用户保存在音乐库中的歌单和曲目。这种访问是由用户通过选择性授权来实现的,有了授权,Api还能实现编辑修改用户数据的功能,例如创建或删除歌单、关注或取关艺人。
Api的授权模式比较复杂,这里我们直接跳过官网的具体操作流程,利用Python中的第三方package:spotipy模块来做到快速获取token完成授权。
二、创建App以获得授权参数
在获取token之前,用户要先在Spotify开发者网址创建一个自己的app,这样就可以得到 app 的client ID与client secret。没有Spotify账户的需要先行注册,注册方式就不详细赘述,需要注意的是不要用香港节点(会被检测出使用代理,无法完成注册)。
1. 创建app
登录后点击create a client id,生成一个专用的client_id和client_secret
接着需要设置重定向URL,这一步很重要
2. Scopes 权限选择
在进行授权申请之前,要先确定你需要哪些权限,确定好了再到授权过程中通过参数进行声明。
Spotify对权限进行了详细的分类,全部的权限如下:
只读型的常用权限有:
- user-library-read (用以访问Spotify公共资源,最常用的一种)
- user-follow-read
- user-top-read
- user-read-private
- playlist-read-private
- user-read-playback-state
修改型的常用权限有:
- user-follow-modify
- user-library-modify
- playlist-modify-public
- playlist-modify-private
三、利用Python第三方package完成授权
1. 准备运行环境
- Python(3.0以上版本)
- PyCharm(建议安装)
2. 安装spotipy模块
打开PyCharm终端窗口,输入以下代码
pip install spotipy #spotipy需要用到reqeuests模块,如果没有也要安装
3. 准备授权参数
在使用spotipy完成授权前,准备好所需参数
SPOTIFY_USERNAME = '你的spotify用户名'SPOTIFY_CLIENT_ID = '你的client-id'SPOTIFY_CLIENT_SECRET = '你的client-secret'SPOTIFY_REDIRECT_URI = 'http://localhost:8888/' #无需特定网址,但必须和app设置里保持一致SPOTIFY_SCOPE = 'playlist-modify-public'SPOTIFY_USERID = '你的spotify用户id' #在spotify账户里,后续编辑数据时需用到
4. 开始授权
导入spotipy模块,根据你要进行的操作输入相应的参数。
import spotipyfrom spotipy import SpotifyOAuthauth_manager = SpotifyOAuth(client_id=SPOTIFY_CLIENT_ID, client_secret=SPOTIFY_CLIENT_SECRET, scope=SPOTIFY_SCOPE, username=SPOTIFY_USERNAME, redirect_uri=SPOTIFY_REDIRECT_URI)sp = spotipy.Spotify(auth_manager=auth_manager) #完成这步后就可以开始使用Api了
四、spotipy的使用
1. 访问spotify资源
在访问前我们要熟悉以下参数:
在Spotify Api Reference中你可以看到所有种类的资源访问和修改示例,上面给出了每种操作所需的参数以及响应内容:
以访问曲目信息为例,下面是spotipy的操作代码和输出结果:
SPOTIFY_SCOPE = 'user-library-read'auth_manager = SpotifyOAuth(client_id=SPOTIFY_CLIENT_ID, client_secret=SPOTIFY_CLIENT_SECRET, scope=SPOTIFY_SCOPE, username=SPOTIFY_USERNAME, redirect_uri=SPOTIFY_REDIRECT_URI)#获得授权sp = spotipy.Spotify(auth_manager=auth_manager) id = '28kWx8D4bkmmpyCWJTZeyu' #曲目的Spotify IDinfo = sp.track(track_id=id) #还可以指定分国家的市场参数 market=#返回的是一个字典print(info.keys()) #结果很长,我只放字典的键 dict_keys(['album', 'artists', 'available_markets', 'disc_number', 'duration_ms', 'explicit', 'external_ids', 'external_urls', 'href', 'id', 'is_local', 'name', 'popularity', 'preview_url', 'track_number', 'type', 'uri'])
从输出结果可以看到,Api给我们返回的数据是很丰富的,我们能拿到曲目的所属专辑和艺人(包含uri)、曲目的可用市场、时长和流行度以及唱片封面等信息,而通过这些专辑和艺人的信息我们又可以拿到更多的相关数据,大家可以自己去尝试其他类型的资源访问操作。
2. 编辑Spotify数据
通过Api接口我们不但能访问Spotify的资源,还能够编辑其中的数据(一般仅限于你的Spotify账户下的数据)。下面就来教大家如何创建一张新歌单并将曲目添加到其中:
SPOTIFY_USERID = '你的spotify用户id' #注意不是用户名SPOTIFY_SCOPE = 'user-library-read,playlist-modify-public,playlist-modify-private'auth_manager = SpotifyOAuth(client_id=SPOTIFY_CLIENT_ID, client_secret=SPOTIFY_CLIENT_SECRET, scope=SPOTIFY_SCOPE, username=SPOTIFY_USERID, redirect_uri=SPOTIFY_REDIRECT_URI)sp = spotipy.Spotify(auth_manager=auth_manager) resp = sp.user_playlist_create(SPOTIFY_USERID, '歌单名称', public=True, #是否公开歌单 collaborative=False, #是否允许他人编辑 description='歌单描述')id = resp['uri'].split(':')[2] #拿到id后去看看有没有创建成功#将曲目以uri列表的格式添加到新创建的歌单中 item=['spotify:track:28kWx8D4bkmmpyCWJTZeyu', 'spotify:track:4dEw10ZZ1iwTMSECN3knON']#可以添加的指定位置,如果不指定则会默认按照列表中的索引顺序添加sp.playlist_add_items(playlist_id=id, items=item,position=None)
3. 检索Spotify资源
在访问Spotify资源时,很多时候我们没有特定的uri参数去访问,这个时候就可以用Api的检索功能search来获取我们所需的uri参数。
SPOTIFY_SCOPE = 'user-library-read'auth_manager = SpotifyOAuth(client_id=SPOTIFY_CLIENT_ID, client_secret=SPOTIFY_CLIENT_SECRET, scope=SPOTIFY_SCOPE, username=SPOTIFY_USERNAME, redirect_uri=SPOTIFY_REDIRECT_URI)sp = spotipy.Spotify(auth_manager=auth_manager) resp = sp.search(q='你要检索的关键字', type='track', #检索内容的类型,如artist,playlist limit=5) #返回的结果数量
这篇文章就分享到这里,接下来作者将会分享如何结合使用Billboard的榜单和Spotify Api的曲目特征数据来实现数据的可视化分析。 |
|