查找曲目并管理收藏夹
学习如何查找歌曲并更新用户的收藏歌曲。
在本课程中,我们将使用三种不同的 HTTP 请求:GET、POST 和 DELETE。我们将通过这些请求来查找歌曲、将歌曲添加到用户的播放列表或收藏夹,以及从用户的播放列表或收藏夹中删除歌曲。
在 Deezer 上查找歌曲
我们可以使用此接口查找 Deezer 平台上任意可用的歌曲。要使当前用户能够读取该歌曲,需要提供一个访问令牌。
该接口的基础 URL 为:
1https://api.deezer.com/track/id
上述 URL 中的路径参数 id 需替换为歌曲的 ID。
请求参数
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| access_token | 字符串 | 是 | 你的访问令牌 |
| id | 整数 | 是 | 歌曲的 ID(此参数作为路径参数传递) |
在下表中,“Harder, Better, Faster, Stronger”这首歌的歌曲 ID 为 3135556。我们可以使用这个 id 通过该接口获取歌曲信息。
歌曲 ID 列表
| 歌曲名称 | 歌曲 ID |
|---|---|
| Harder, Better, Faster, Stronger | 3135556 |
| Closer | 129310248 |
| Lose Yourself | 1109731 |
| Levitating | 1124841682 |
点击“运行”按钮查看调用该接口返回的响应:
1// 导入所需库 2import fetch from "node-fetch" 3 4// 定义接口地址 5const endpointUrl = new URL("https://api.deezer.com/track/3135556"); 6 7const headerParameters = { 8 contentType: "application/json", 9}; 10 11// 定义查询参数 12const queryParameters = new URLSearchParams({ 13 access_token: '{{ACCESS_TOKEN}}' 14}); 15 16// 设置 API 调用选项 17const options = { 18 method: "GET", 19 headers: headerParameters, 20}; 21 22// 发起 API 请求的函数 23async function fetchTrack() { 24 try { 25 endpointUrl.search = queryParameters; 26 const response = await fetch(endpointUrl, options); 27 28 // 输出响应结果 29 printResponse(response); 30 } catch (error) { 31 // 输出错误信息 32 printError(error); 33 } 34} 35 36// 调用函数发起请求 37fetchTrack();
在上述代码中:
- 第 5 行:将接口地址定义在
endpointUrl变量中。 - 第 12–14 行:将
access_token添加到queryParameters中。 - 第 26 行:使用
fetch函数发起 API 请求。
响应字段
| 字段名 | 类型 | 描述 |
|---|---|---|
| id | 整数 | 歌曲的 ID |
| readable | 布尔值 | 用户是否可以收听该歌曲,是则为 true,否则为 false |
| name | 字符串 | 歌曲名称 |
| link | URL | 歌曲在 Deezer 上的链接 |
| share | URL | 分享该歌曲的链接 |
| duration | 整数 | 歌曲时长(秒) |
| rank | 整数 | 歌曲在 Deezer 上的排名 |
| release_date | 字符串 | 歌曲发行日期 |
| explicit_lyrics | 布尔值 | 歌曲是否包含脏话歌词,是则为 true,否则为 false |
| bpm | 浮点数 | 歌曲的每分钟节拍数 |
| gain | 浮点数 | 歌曲的信号强度 |
| available_countries | 字符串数组 | 该歌曲可播放的国家列表 |
| artist | 对象 | 包含艺术家 ID、名称、头像和链接的对象 |
| album | 对象 | 包含专辑 ID、标题、封面图和链接的对象 |
将歌曲添加到用户的收藏夹
当你听到新歌时,有些歌曲会特别喜欢。你可以将这些歌曲保存到收藏夹,以便日后收听。
我们可以通过此 API 接口将歌曲添加到用户的收藏夹中。本接口使用 POST 类型的 HTTP 请求。
该接口的基础 URL 为:
1https://api.deezer.com/user/me/tracks
该接口接收以下请求参数:
请求参数
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| track_id | 整数 | 是 | 歌曲的 ID |
| access_token | 字符串 | 是 | 应用认证后获得的令牌 |
| request_method | 字符串 | 是 | 若想将歌曲添加到收藏夹,需设置为 POST |
注意:如果将
request_method参数改为DELETE,则可使用相同的基地址和请求参数,从用户的收藏夹中删除歌曲。
点击下方代码模块中的“运行”按钮查看响应结果:
1// 导入所需库 2import fetch from "node-fetch" 3 4// 定义接口地址 5const endpointUrl = new URL('https://api.deezer.com/user/me/tracks'); 6 7const headerParameters = { 8 contentType: "application/json", 9}; 10 11// 定义查询参数 12const queryParameters = new URLSearchParams({ 13 access_token: '{{ACCESS_TOKEN}}', 14 track_id: 3135556, 15 request_method: 'POST' 16}); 17 18// 设置 API 调用选项 19const options = { 20 method: "GET", 21 headers: headerParameters, 22}; 23 24// 发起 API 请求的函数 25async function addTrackToFavorites() { 26 try { 27 endpointUrl.search = queryParameters; 28 const response = await fetch(endpointUrl, options); 29 30 // 输出响应结果 31 printResponse(response); 32 } catch (error) { 33 // 输出错误信息 34 printError(error); 35 } 36} 37 38// 调用函数发起请求 39addTrackToFavorites();
在上述代码中:
- 第 12–16 行:将
access_token、track_id和request_method添加到queryParameters变量中。
注意:如果响应为
true,表示歌曲已成功添加至收藏夹;若为false,则添加失败。
检查用户的收藏歌曲
通过此接口,我们可以获取并返回用户收藏的歌曲列表。
该 API 的基础 URL 为:
1https://api.deezer.com/user/me/tracks
注意:该接口的基地址与上一个相同,但仅需在请求参数中提供
access_token。
点击下方代码模块中的“运行”按钮查看响应结果:
1// 导入所需库 2import fetch from "node-fetch" 3 4// 定义接口地址 5const endpointUrl = new URL('https://api.deezer.com/user/me/tracks'); 6 7const headerParameters = { 8 contentType: "application/json", 9}; 10 11// 定义查询参数 12const queryParameters = new URLSearchParams({ 13 access_token: '{{ACCESS_TOKEN}}', 14}); 15 16// 设置 API 调用选项 17const options = { 18 method: "GET", 19 headers: headerParameters, 20}; 21 22// 发起 API 请求的函数 23async function checkUserFavorites() { 24 try { 25 endpointUrl.search = queryParameters; 26 const response = await fetch(endpointUrl, options); 27 28 // 输出响应结果 29 printResponse(response); 30 } catch (error) { 31 // 输出错误信息 32 printError(error); 33 } 34} 35 36// 调用函数发起请求 37checkUserFavorites();
在上述代码中:
- 第 12–14 行:将
access_token添加到queryParameters变量中。
注意:在响应结果中,你可以找到之前代码模块执行时添加的那首歌曲。