diff --git a/docs/multimedia.md b/docs/multimedia.md index 224a1564a..8104621a4 100644 --- a/docs/multimedia.md +++ b/docs/multimedia.md @@ -1644,7 +1644,11 @@ JavDB 有多个备用域名,本路由默认使用永久域名 + + +### 歌手歌曲 + + ### 电台节目 diff --git a/lib/v2/163/maintainer.js b/lib/v2/163/maintainer.js index d6fddf203..aec6260ff 100644 --- a/lib/v2/163/maintainer.js +++ b/lib/v2/163/maintainer.js @@ -5,6 +5,7 @@ module.exports = { '/dy2/:id': ['mjysci'], '/music/artist/:id': ['metowolf'], + '/music/artist/songs/:id': ['ZhongMingKun'], '/music/djradio/:id': ['magic-akari'], '/music/playlist/:id': ['DIYgod'], '/music/user/events/:id': ['Master-Hash'], diff --git a/lib/v2/163/music/artist-songs.js b/lib/v2/163/music/artist-songs.js new file mode 100644 index 000000000..d430f499d --- /dev/null +++ b/lib/v2/163/music/artist-songs.js @@ -0,0 +1,39 @@ +const got = require('@/utils/got'); +const { art } = require('@/utils/render'); +const path = require('path'); + +module.exports = async (ctx) => { + const { id } = ctx.params; + + const { data } = await got(`https://music.163.com/api/v1/artist/songs`, { + headers: { + Referer: 'https://music.163.com/', + }, + searchParams: { + id, + private_cloud: 'true', + work_type: 1, + order: 'time', + offset: 0, + limit: 100, + }, + }); + + const artist = data.songs.find(({ ar }) => ar[0].id === parseInt(id)).ar[0]; + const items = data.songs.map((song) => ({ + title: `${song.name} - ${song.ar.map(({ name }) => name).join(' / ')}`, + description: art(path.join(__dirname, '../templates/music/playlist.art'), { + singer: song.ar.map(({ name }) => name).join(' / '), + album: song.al.name, + picUrl: song.al.picUrl, + }), + link: `https://music.163.com/#/song?id=${song.id}`, + })); + + ctx.state.data = { + title: `${artist.name} - 歌手歌曲`, + link: `https://music.163.com/#/artist?id=${id}`, + description: `网易云音乐 - 歌手歌曲 - ${artist.name}`, + item: items, + }; +}; diff --git a/lib/v2/163/radar.js b/lib/v2/163/radar.js index d15e81017..df262e9e8 100644 --- a/lib/v2/163/radar.js +++ b/lib/v2/163/radar.js @@ -63,6 +63,15 @@ module.exports = { return id ? `/163/music/artist/${id}` : ''; }, }, + { + title: '云音乐 - 歌手歌曲', + docs: 'https://docs.rsshub.app/multimedia.html#wang-yi-yun-yin-yue', + source: '/', + target: (_params, url) => { + const id = new URL(url).hash.match(/artist\?id=(.*)/)[1]; + return id ? `/163/music/artist/songs/${id}` : ''; + }, + }, { title: '云音乐 - 电台节目', docs: 'https://docs.rsshub.app/multimedia.html#wang-yi-yun-yin-yue', @@ -117,7 +126,7 @@ module.exports = { title: '云音乐 - 用户歌单', docs: 'https://docs.rsshub.app/multimedia.html#wang-yi-yun-yin-yue', source: '/m/user', - target: (params, url) => `/163/music/playlist/${new URL(url).searchParams.get('id')}`, + target: (params, url) => `/163/music/user/playlist/${new URL(url).searchParams.get('id')}`, }, { title: '云音乐 - 歌单歌曲', @@ -129,13 +138,13 @@ module.exports = { title: '云音乐 - 歌手专辑', docs: 'https://docs.rsshub.app/multimedia.html#wang-yi-yun-yin-yue', source: '/m/album', - target: (params, url) => `/163/music/playlist/${new URL(url).searchParams.get('id')}`, + target: (params, url) => `/163/music/artist/${new URL(url).searchParams.get('id')}`, }, { - title: '云音乐 - 播单声音', + title: '云音乐 - 电台节目', docs: 'https://docs.rsshub.app/multimedia.html#wang-yi-yun-yin-yue', source: ['/m/radio', '/m/djradio'], - target: (params, url) => `/163/music/playlist/${new URL(url).searchParams.get('id')}`, + target: (params, url) => `/163/music/djradio/${new URL(url).searchParams.get('id')}`, }, { title: '用户动态', diff --git a/lib/v2/163/router.js b/lib/v2/163/router.js index bc3e92afb..ded33c730 100644 --- a/lib/v2/163/router.js +++ b/lib/v2/163/router.js @@ -5,6 +5,7 @@ module.exports = function (router) { router.get('/dy2/:id', require('./dy2')); router.get('/music/artist/:id', require('./music/artist')); + router.get('/music/artist/songs/:id', require('./music/artist-songs')); router.get('/music/djradio/:id', require('./music/djradio')); router.get('/music/playlist/:id', require('./music/playlist')); router.get('/music/user/events/:id', require('./music/userevents')); diff --git a/lib/v2/163/templates/music/playlist.art b/lib/v2/163/templates/music/playlist.art index c846e49ce..f99b72696 100644 --- a/lib/v2/163/templates/music/playlist.art +++ b/lib/v2/163/templates/music/playlist.art @@ -1,4 +1,4 @@ 歌手:{{ singer }}
专辑:{{ album }}
-发行日期:{{ date }}
+{{ if date }}发行日期:{{ date }}
{{ /if }}