related_playlist.js 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. // 相关歌单
  2. const { default: axios } = require('axios')
  3. const createOption = require('../util/option.js')
  4. module.exports = async (query, request) => {
  5. const res = await axios({
  6. method: 'GET',
  7. url: `https://music.163.com/playlist?id=${query.id}`,
  8. })
  9. try {
  10. const pattern =
  11. /<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
  12. let result,
  13. playlists = []
  14. while ((result = pattern.exec(res.data)) != null) {
  15. playlists.push({
  16. creator: {
  17. userId: result[4].slice('/user/home?id='.length),
  18. nickname: result[5],
  19. },
  20. coverImgUrl: result[1].slice(0, -'?param=50y50'.length),
  21. name: result[3],
  22. id: result[2].slice('/playlist?id='.length),
  23. })
  24. }
  25. res.body = { code: 200, playlists: playlists }
  26. return res
  27. } catch (err) {
  28. res.status = 500
  29. res.body = { code: 500, msg: err.stack }
  30. return Promise.reject(res)
  31. }
  32. }