播放列表
播放列表是顺序的歌曲列表,用户可以通过播放列表对零散的歌曲进行整理。
播放列表相关的功能有获取、创建、修改、删除。
错误一览
错误代码 | 详情 |
---|---|
103000 | 用户播放列表数已达上限 |
103001 | 播放列表中歌曲数量已达上限 |
103002 | 播放列表不存在 |
103003 | 修改类型非法 |
103003 | 歌曲 ID 非法 |
获取播放列表
获取指定播放列表
Endpoint
GET /api/playlist
请求
请求参数
参数名 | 类型 | 详情 |
---|---|---|
id | string | 播放列表标识符 |
返回
请求成功时,返回播放列表的全部信息。
返回参数
参数名 | 类型 | 详情 |
---|---|---|
id | string | 播放列表标识符 |
name | string | 播放列表名称 |
description | string | 播放列表说明 |
owner | string | 播放列表拥有者 ID |
is_public | boolean | 是否公开 |
items | (PlaylistItem & Id)[] | 播放列表中的内容 |
cover | PlaylistCover | 播放列表封面,为 null 时客户端应使用该 Playlist 的第一个 Track 封面 |
last_modified | number | 播放列表最后修改时间戳(秒) |
PlaylistItem
可以为 PlaylistItemTrack
、PlaylistItemDummyTrack
或 PlaylistItemAlbum
,分别表示歌曲、占位歌曲和专辑,详见下方类型定义。
每种 PlaylistItem
类型均含有:
参数名 | 类型 | 详情 |
---|---|---|
description | string | 对歌曲的说明文本 可为空 |
info | T | 该类型的附加数据 |
PlaylistItem & Id
类型在各 PlaylistItem
的基础上增加了:
参数名 | 类型 | 详情 |
---|---|---|
id | string | 歌曲在歌单中的 id ,歌单内唯一。 |
示例
{
"id": "3",
"name": "测试",
"description": "测试",
"owner": "3",
"is_public": true,
"cover": {
"album_id": "cfbde6ad-e365-4435-bfda-5a475899fb6b",
"disc_id": 1
},
"items": [
{
"id": "3",
"type": "normal",
"description": "interesting",
"info": {
"album_id": "cfbde6ad-e365-4435-bfda-5a475899fb6b",
"disc_id": 1,
"track_id": 1,
"title": "ハルノヘッドフォン",
"artist": "春日部ハル(篠田みなみ)",
"album_title": "t7s Longing for summer"
}
}
],
"last_modified": 1145141919810
}
参数表示
interface PlaylistInfo {
// 播放列表 ID
id: string;
// 播放列表标题
name: string;
// 播放列表说明
description?: string;
// 播放列表创建者
owner: string;
// 是否公开
is_public: boolean;
// 封面
cover: PlaylistCover;
}
type PlaylistCover = DiscIdentifier | null; // 专辑/光盘封面
// 表示无封面的结构
type EmptyPlaylistCover = { album_id?: "" };
interface BasePlaylistItem<Info> {
// 内容类型
type: string;
// 内容说明
description?: string;
// 内容附加信息
info: Info;
}
// 普通音轨
interface PlaylistItemTrack extends BasePlaylistItem<TrackInfoWithAlbum> {
type: "normal";
}
// 普通音轨(无元数据)
export interface PlaylistItemPlainTrack
extends BasePlaylistItem<TrackIdentifier> {
type: "normal";
}
// 占位音轨
interface PlaylistItemDummyTrack extends BasePlaylistItem<Required<TrackInfo>> {
type: "dummy";
}
// 普通专辑
interface PlaylistItemAlbum extends BasePlaylistItem<AlbumIdentifier> {
type: "album";
}
type PlaylistItem =
| PlaylistItemDummyTrack
| PlaylistItemTrack
| PlaylistItemAlbum;
type PlaylistPatchItem =
| PlaylistItemDummyTrack
| PlaylistItemPlainTrack
| PlaylistItemAlbum;
错误列表
错误代码 | 详情 |
---|---|
103002 | 播放列表不存在 |
902001 | 禁止访问私有播放列表 |
获取指定用户播放列表
Endpoint
GET /api/playlists
请求参数
参数名 | 类型 | 详情 |
---|---|---|
user_id | string | 用户 ID,缺省为当前用户 |
返回
若指定用户为自己,则返回所有播放列表。否则仅返回公开的播放列表。
返回 PlaylistInfo[]
。
创建播放列表
Endpoint
PUT /api/playlist
请求
请求参数
参数名 | 类型 | 详情 |
---|---|---|
name | string | 播放列表名称 |
description | string | 播放列表说明 |
is_public | boolean | 是否公开 |
cover | PlaylistCover | 播放列表封面 |
items | PlaylistPatchItem[] | 初始加入播放列表的内容 |
返回
处理完成后,返回新创建的播放列表信息(Playlist
)。
参数表示
interface CreatePlaylistBody extends Omit<PlaylistInfo, "id" | "owner"> {
items: PlaylistPatchItem[];
}
错误列表
错误代码 | 详情 |
---|---|
103000 | 用户播放列表数已达上限 |
103001 | 播放列表中歌曲数量已达上限 |
修改播放列表
Endpoint
PATCH /api/playlist
请求
对播放列表的修改分为三个部分:增加歌曲、删除歌曲和排列歌曲。
请求参数
参数名 | 类型 | 详情 |
---|---|---|
id | string | 增加歌曲的播放列表 |
command | string | 表示修改的类型,可选项为 info 、append 、remove 、reorder 或 replace |
payload | 见参数表示 |
返回
修改成功后,返回修改后的播放列表信息(Playlist
)。
参数表示
export type PatchPlaylistRequestBody =
| PatchPlaylistInfoBody
| AppendPlaylistBody
| RemovePlaylistItemBody
| ReorderPlaylistBody
| ReplacePlaylistItemBody;
// 修改 Playlist 本身信息
export type PatchPlaylistInfoBody = PatchPlaylistBodyType<
"info",
PatchedPlaylistInfo
>;
// 在 Playlist 末尾增加音乐
export type AppendPlaylistBody = PatchPlaylistBodyType<
"append",
PlaylistPatchItem[]
>;
// 通过 ID 从 Playlist 中删除音乐
export type RemovePlaylistItemBody = PatchPlaylistBodyType<"remove", string[]>;
// 通过 ID 对 Playlist 重排序
export type ReorderPlaylistBody = PatchPlaylistBodyType<"reorder", string[]>;
// 修改 Playlist 中部分内容
export type ReplacePlaylistItemBody = PatchPlaylistBodyType<
"replace",
(PlaylistPatchItem & Id)[]
>;
type PatchPlaylistBodyType<K, P> = Id & {
command: K;
payload: P;
};
type PatchedPlaylistInfo = Partial<Omit<PlaylistInfo, "id" | "owner">>;
错误列表
错误代码 | 详情 |
---|---|
103002 | 播放列表不存在 |
103003 | 修改类型非法 |
103003 | 歌曲 ID 非法 |
删除播放列表
Endpoint
DELETE /api/playlist
请求
请求参数
参数名 | 类型 | 详情 |
---|---|---|
id | string | 播放列表标识符 |
错误列表
错误代码 | 详情 |
---|---|
103002 | 播放列表不存在 |
103003 | 非法修改类型 |