forked from qier222/YesPlayMusic
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplaylist.js
More file actions
229 lines (219 loc) · 6.2 KB
/
playlist.js
File metadata and controls
229 lines (219 loc) · 6.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
import request from '@/utils/request';
import { mapTrackPlayableStatus } from '@/utils/common';
/**
* 推荐歌单
* 说明 : 调用此接口 , 可获取推荐歌单
* - limit: 取出数量 , 默认为 30 (不支持 offset)
* - 调用例子 : /personalized?limit=1
* @param {Object} params
* @param {number=} params.limit
*/
export function recommendPlaylist(params) {
return request({
url: '/personalized',
method: 'get',
params,
});
}
/**
* 获取每日推荐歌单
* 说明 : 调用此接口 , 可获得每日推荐歌单 ( 需要登录 )
* @param {Object} params
* @param {number=} params.limit
*/
export function dailyRecommendPlaylist(params) {
return request({
url: '/recommend/resource',
method: 'get',
params: {
params,
timestamp: Date.now(),
},
});
}
/**
* 获取歌单详情
* 说明 : 歌单能看到歌单名字, 但看不到具体歌单内容 , 调用此接口 , 传入歌单 id, 可以获取对应歌单内的所有的音乐(未登录状态只能获取不完整的歌单,登录后是完整的),
* 但是返回的trackIds是完整的,tracks 则是不完整的,可拿全部 trackIds 请求一次 song/detail 接口
* 获取所有歌曲的详情 (https://github.com/Binaryify/NeteaseCloudMusicApi/issues/452)
* - id : 歌单 id
* - s : 歌单最近的 s 个收藏者, 默认为8
* @param {number} id
* @param {boolean=} noCache
*/
export function getPlaylistDetail(id, noCache = false) {
let params = { id };
if (noCache) params.timestamp = new Date().getTime();
return request({
url: '/playlist/detail',
method: 'get',
params,
}).then(data => {
if (data.playlist) {
data.playlist.tracks = mapTrackPlayableStatus(
data.playlist.tracks,
data.privileges || []
);
}
return data;
});
}
/**
* 获取精品歌单
* 说明 : 调用此接口 , 可获取精品歌单
* - cat: tag, 比如 " 华语 "、" 古风 " 、" 欧美 "、" 流行 ", 默认为 "全部", 可从精品歌单标签列表接口获取(/playlist/highquality/tags)
* - limit: 取出歌单数量 , 默认为 20
* - before: 分页参数,取上一页最后一个歌单的 updateTime 获取下一页数据
* @param {Object} params
* @param {string} params.cat
* @param {number=} params.limit
* @param {number} params.before
*/
export function highQualityPlaylist(params) {
return request({
url: '/top/playlist/highquality',
method: 'get',
params,
});
}
/**
* 歌单 ( 网友精选碟 )
* 说明 : 调用此接口 , 可获取网友精选碟歌单
* - order: 可选值为 'new' 和 'hot', 分别对应最新和最热 , 默认为 'hot'
* - cat: tag, 比如 " 华语 "、" 古风 " 、" 欧美 "、" 流行 ", 默认为 "全部",可从歌单分类接口获取(/playlist/catlist)
* - limit: 取出歌单数量 , 默认为 50
* @param {Object} params
* @param {string} params.order
* @param {string} params.cat
* @param {number=} params.limit
*/
export function topPlaylist(params) {
return request({
url: '/top/playlist',
method: 'get',
params,
});
}
/**
* 歌单分类
* 说明 : 调用此接口,可获取歌单分类,包含 category 信息
*/
export function playlistCatlist() {
return request({
url: '/playlist/catlist',
method: 'get',
});
}
/**
* 所有榜单
* 说明 : 调用此接口,可获取所有榜单 接口地址 : /toplist
*/
export function toplists() {
return request({
url: '/toplist',
method: 'get',
});
}
/**
* 收藏/取消收藏歌单
* 说明 : 调用此接口, 传入类型和歌单 id 可收藏歌单或者取消收藏歌单
* - t : 类型,1:收藏,2:取消收藏
* - id : 歌单 id
* @param {Object} params
* @param {number} params.t
* @param {number} params.id
*/
export function subscribePlaylist(params) {
params.timestamp = new Date().getTime();
return request({
url: '/playlist/subscribe',
method: 'post',
params,
});
}
/**
* 删除歌单
* 说明 : 调用此接口 , 传入歌单id可删除歌单
* - id : 歌单id,可多个,用逗号隔开
* * @param {number} id
*/
export function deletePlaylist(id) {
return request({
url: '/playlist/delete',
method: 'post',
params: { id },
});
}
/**
* 新建歌单
* 说明 : 调用此接口 , 传入歌单名字可新建歌单
* - name : 歌单名
* - privacy : 是否设置为隐私歌单,默认否,传'10'则设置成隐私歌单
* - type : 歌单类型,默认'NORMAL',传 'VIDEO'则为视频歌单
* @param {Object} params
* @param {string} params.name
* @param {number} params.privacy
* @param {string} params.type
*/
export function createPlaylist(params) {
params.timestamp = new Date().getTime();
return request({
url: '/playlist/create',
method: 'post',
params,
});
}
/**
* 对歌单添加或删除歌曲
* 说明 : 调用此接口 , 可以添加歌曲到歌单或者从歌单删除某首歌曲 ( 需要登录 )
* - op: 从歌单增加单曲为 add, 删除为 del
* - pid: 歌单 id tracks: 歌曲 id,可多个,用逗号隔开
* @param {Object} params
* @param {string} params.op
* @param {string} params.pid
*/
export function addOrRemoveTrackFromPlaylist(params) {
params.timestamp = new Date().getTime();
return request({
url: '/playlist/tracks',
method: 'post',
params,
});
}
/**
* 每日推荐歌曲
* 说明 : 调用此接口 , 可获得每日推荐歌曲 ( 需要登录 )
* @param {Object} params
* @param {string} params.op
* @param {string} params.pid
*/
export function dailyRecommendTracks() {
return request({
url: '/recommend/songs',
method: 'get',
params: { timestamp: new Date().getTime() },
}).then(result => {
result.data.dailySongs = mapTrackPlayableStatus(
result.data.dailySongs,
result.data.privileges
);
return result;
});
}
/**
* 心动模式/智能播放
* 说明 : 登录后调用此接口 , 可获取心动模式/智能播放列表 必选参数 : id : 歌曲 id
* - id : 歌曲 id
* - pid : 歌单 id
* - sid : 要开始播放的歌曲的 id (可选参数)
* @param {Object} params
* @param {number=} params.id
* @param {number=} params.pid
*/
export function intelligencePlaylist(params) {
return request({
url: '/playmode/intelligence/list',
method: 'get',
params,
});
}