music.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. import axios from '@/utils/axiosMusic'
  2. import { defaultLimit } from '@/config'
  3. import { formatTopSongs } from '@/utils/song'
  4. axios.defaults.baseURL = process.env.VUE_APP_BASE_API_URL
  5. // 排行榜列表
  6. export function getToplistDetail() {
  7. return axios.get('/toplist/detail')
  8. }
  9. // 推荐歌单
  10. export function getPersonalized() {
  11. return axios.get('/personalized')
  12. }
  13. // 歌单详情
  14. export function getPlaylistDetail(id) {
  15. return new Promise((resolve, reject) => {
  16. axios
  17. .get('/playlist/detail', {
  18. params: { id }
  19. })
  20. .then(({ playlist }) => playlist)
  21. .then(playlist => {
  22. const { trackIds, tracks } = playlist
  23. // 过滤完整歌单 如排行榜
  24. if (tracks.length === trackIds.length) {
  25. playlist.tracks = formatTopSongs(playlist.tracks)
  26. resolve(playlist)
  27. return
  28. }
  29. // 限制歌单详情最大 500
  30. const ids = trackIds
  31. .slice(0, 500)
  32. .map(v => v.id)
  33. .toString()
  34. getMusicDetail(ids).then(({ songs }) => {
  35. playlist.tracks = formatTopSongs(songs)
  36. resolve(playlist)
  37. })
  38. })
  39. })
  40. }
  41. // 搜索
  42. export function search(keywords, page = 0, limit = defaultLimit) {
  43. return axios.get('/search', {
  44. params: {
  45. offset: page * limit,
  46. limit: limit,
  47. keywords
  48. }
  49. })
  50. }
  51. // 热搜
  52. export function searchHot() {
  53. return axios.get('/search/hot')
  54. }
  55. // 获取用户歌单详情
  56. export function getUserPlaylist(uid) {
  57. return axios.get('/user/playlist', {
  58. params: {
  59. uid
  60. }
  61. })
  62. }
  63. // 获取歌曲详情
  64. export function getMusicDetail(ids) {
  65. return axios.get('/song/detail', {
  66. params: {
  67. ids
  68. }
  69. })
  70. }
  71. // 获取音乐是否可以用
  72. export function getCheckMusic(id) {
  73. return axios.get('/check/music', {
  74. params: {
  75. id
  76. }
  77. })
  78. }
  79. // 获取音乐地址
  80. export function getMusicUrl(id) {
  81. return axios.get('/song/url', {
  82. params: {
  83. id
  84. }
  85. })
  86. }
  87. // 获取歌词
  88. export function getLyric(id) {
  89. const url = '/lyric'
  90. return axios.get(url, {
  91. params: {
  92. id
  93. }
  94. })
  95. }
  96. // 获取音乐评论
  97. export function getComment(id, page, limit = defaultLimit) {
  98. return axios.get('/comment/music', {
  99. params: {
  100. offset: page * limit,
  101. limit: limit,
  102. id
  103. }
  104. })
  105. }