neteasecloudmusicapi/router/playlistDetail.js

68 lines
1.4 KiB
JavaScript

const http = require('http')
const express = require("express")
const router = express()
const { createWebAPIRequest } = require("../util/util")
router.get("/", (req, res) => {
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
let detail, imgurl
const data = {
"id": req.query.id,
"offset": 0,
"total": true,
"limit": 1000,
"n": 1000,
"csrf_token": ""
}
createWebAPIRequest(
'music.163.com',
'/weapi/v3/playlist/detail',
'POST',
data,
cookie,
music_req=> {
console.log(music_req)
detail = music_req
mergeRes()
},
err =>{
res.status(502).send('fetch error')
}
)
// FIXME:i dont know the api to get coverimgurl
// so i get it by parsing html
const http_client = http.get({
hostname: 'music.163.com',
path: '/playlist?id=' + req.query.id,
headers: {
'Referer': 'http://music.163.com',
},
}, function (res) {
res.setEncoding('utf8')
let html = ''
res.on('data', function (chunk) {
html += chunk
})
res.on('end', function () {
console.log('end', html)
const regImgCover = /\<img src=\"(.*)\" class="j-img"/ig
imgurl = regImgCover.exec(html)[1]
mergeRes()
})
})
function mergeRes() {
if (imgurl != undefined && detail != undefined) {
detail = JSON.parse(detail)
detail.playlist.picUrl = imgurl
res.send(detail)
}
}
})
module.exports = router