商汇粹外网资源平台

搜索
查看: 1863|回复: 1

第三方 App 可以怎样调用 Spotify 的 API 和音乐资源?

[复制链接]

该用户从未签到

4

主题

10

帖子

58

积分

注册会员

Rank: 2

积分
58
发表于 2022-11-10 17:34:58 | 显示全部楼层 |阅读模式
你可以在 http://developer.spotify.com/en/spotify-apps-api/resources/ 找到官方提供的接口和上架需要。目前提供的文档还非常简陋,但是看了一下 JSDoc,开发者只需用 HTML + JS 就可以打造一个全功能的第三方 app 了。
回复

使用道具 举报

该用户从未签到

0

主题

2

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 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 IDclient secret。没有Spotify账户的需要先行注册,注册方式就不详细赘述,需要注意的是不要用香港节点(会被检测出使用代理,无法完成注册)。
1. 创建app


登录后点击create a client id,生成一个专用的client_idclient_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的曲目特征数据来实现数据的可视化分析。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表