diff --git a/router/artist_list.js b/router/artist_list.js index 0c90a61..ba0a1bb 100644 --- a/router/artist_list.js +++ b/router/artist_list.js @@ -22,11 +22,14 @@ module.exports = (req, res, createWebAPIRequest, request) => { // 其他女歌手 4002 // 其他组合/乐队 4003 + // initial 取值a-z/A-Z + const data = { categoryCode: req.query.cat || "1001", offset: req.query.offset || 0, total: req.query.total ? "true" : "false", - limit: req.query.limit || 30 + limit: req.query.limit || 30, + initial: (req.query.initial || "").toUpperCase().charCodeAt() || "" }; createWebAPIRequest( "music.163.com", diff --git a/router/related_playlist.js b/router/related_playlist.js new file mode 100644 index 0000000..d855122 --- /dev/null +++ b/router/related_playlist.js @@ -0,0 +1,37 @@ +//related ,相关歌单 +module.exports = (req, res, createWebAPIRequest, request) => { + const options = { + url: "http://music.163.com/playlist?id=" + req.query.id, + method: "GET", + headers: { + Referer: "http://music.163.com", + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3380.0 Safari/537.36" + } + }; + request(options, (error, response, body) => { + if (error) { + res.status(502).send("fetch error"); + } else { + try { + const pattern = /
[\s\S]*?[\s\S]*?]*>([^<]+?)<\/a>[\s\S]*?]*>([^<]+?)<\/a>/g; + const data = {playlists:[],code:200}; + let result; + while ((result = pattern.exec(body)) != null) { + data.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) + }); + } + res.send(JSON.stringify(data)); + } catch (error) { + res.status(502).send("fetch error"); + } + } + }); +}; diff --git a/util/util.js b/util/util.js index cc1454e..1c67585 100644 --- a/util/util.js +++ b/util/util.js @@ -40,7 +40,7 @@ function createWebAPIRequest( errorcallback ) { // console.log(cookie); - if (cookie.match(/_csrf=[^(;|$)]+;/g)) + if (cookie.match(/_csrf=[^(;|$)]+/g)) data.csrf_token = cookie.match(/_csrf=[^(;|$)]+/g)[0].slice(6); else data.csrf_token = ""; const proxy = cookie.split("__proxy__")[1];