You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.2 KiB
39 lines
1.2 KiB
4 years ago
|
// 相关歌单
|
||
|
|
||
|
module.exports = (query, request) => {
|
||
|
return request(
|
||
|
'GET',
|
||
|
`https://music.163.com/playlist?id=${query.id}`,
|
||
|
{},
|
||
|
{
|
||
|
ua: 'pc',
|
||
|
cookie: query.cookie,
|
||
|
proxy: query.proxy,
|
||
|
realIP: query.realIP,
|
||
|
},
|
||
|
).then((response) => {
|
||
|
try {
|
||
|
const pattern = /<div class="cver u-cover u-cover-3">[\s\S]*?<img src="([^"]+)">[\s\S]*?<a class="sname f-fs1 s-fc0" href="([^"]+)"[^>]*>([^<]+?)<\/a>[\s\S]*?<a class="nm nm f-thide s-fc3" href="([^"]+)"[^>]*>([^<]+?)<\/a>/g;
|
||
|
let result,
|
||
|
playlists = [];
|
||
|
while ((result = pattern.exec(response.body)) != null) {
|
||
|
playlists.push({
|
||
|
creator: {
|
||
|
userId: result[4].slice('/user/home?id='.length),
|
||
|
nickname: result[5],
|
||
|
},
|
||
|
coverImgUrl: result[1].slice(0, -'?param=50y50'.length),
|
||
|
name: result[3],
|
||
|
id: result[2].slice('/playlist?id='.length),
|
||
|
});
|
||
|
}
|
||
|
response.body = { code: 200, playlists: playlists };
|
||
|
return response;
|
||
|
} catch (err) {
|
||
|
response.status = 500;
|
||
|
response.body = { code: 500, msg: err.stack };
|
||
|
return Promise.reject(response);
|
||
|
}
|
||
|
});
|
||
|
};
|