diff --git a/index.js b/index.js index 73fda9401c..a539f17957 100644 --- a/index.js +++ b/index.js @@ -15,7 +15,10 @@ app.get('/bilibili/user/dynamic/:uid', require('./routes/bilibili/dynamic')); app.get('/bilibili/partion/:tid', require('./routes/bilibili/partion')); app.get('/bilibili/bangumi/:seasonid', require('./routes/bilibili/bangumi')); -// weibo +// Weibo app.get('/weibo/user/:uid', require('./routes/weibo/user')); +// NetEaseCloudMusic +app.get('/ncm/playlist/:id', require('./routes/ncm/playlist')); + app.listen(1200); \ No newline at end of file diff --git a/routes/ncm/playlist.js b/routes/ncm/playlist.js new file mode 100644 index 0000000000..5094c027db --- /dev/null +++ b/routes/ncm/playlist.js @@ -0,0 +1,51 @@ +const request = require('request'); +const art = require('art-template'); +const path = require('path'); +const base = require('../base'); +const mix = require('../../utils/mix'); + +module.exports = (req, res) => { + const id = req.params.id; + + base({ + req: req, + res: res, + getHTML: (callback) => { + request.post({ + url: 'https://music.163.com/api/v3/playlist/detail', + headers: { + 'User-Agent': mix.ua, + 'Referer': 'https://music.163.com/' + }, + form: { + id: id + } + }, (err, httpResponse, body) => { + let data; + try { + data = JSON.parse(body); + } + catch (e) { + data = {}; + } + const result = data.playlist || {}; + + const html = art(path.resolve(__dirname, '../../views/rss.art'), { + title: result.name, + link: `https://music.163.com/#/playlist?id=${id}`, + description: `网易云音乐歌单 - ${result.name}`, + lastBuildDate: new Date().toUTCString(), + item: result.tracks && result.tracks.map((item) => { + const singer = item.ar.length === 1 ? item.ar[0].name : item.ar.reduce((prev, cur) => (prev.name || prev) + '/' + cur.name); + return { + title: `${item.name} - ${singer}`, + description: `歌手:${singer}
专辑:${item.al.name}
日期:${new Date(item.publishTime).toLocaleDateString()}
`, + link: `https://music.163.com/#/song?id=${item.id}` + }; + }), + }); + callback(html); + }); + } + }); +}; \ No newline at end of file