diff --git a/src/api/playlist.js b/src/api/playlist.js index 58f6b98..08177ea 100644 --- a/src/api/playlist.js +++ b/src/api/playlist.js @@ -26,7 +26,10 @@ export function dailyRecommendPlaylist(params) { return request({ url: '/recommend/resource', method: 'get', - params, + params: { + params, + timestamp: Date.now(), + }, }); } /** diff --git a/src/utils/playList.js b/src/utils/playList.js index f476f28..d135fc3 100644 --- a/src/utils/playList.js +++ b/src/utils/playList.js @@ -1,5 +1,11 @@ import router from '../router'; import state from '../store/state'; +import { + recommendPlaylist, + dailyRecommendPlaylist, + getPlaylistDetail, +} from '@/api/playlist'; +import { isAccountLoggedIn } from '@/utils/auth'; export function hasListSource() { return !state.player.isPersonalFM && state.player.playlistSource.id !== 0; @@ -20,3 +26,36 @@ export function getListSourcePath() { return `/${state.player.playlistSource.type}/${state.player.playlistSource.id}`; } } + +export async function getRecommendPlayList(limit, removePrivateRecommand) { + if (isAccountLoggedIn()) { + const playlists = await Promise.all([ + dailyRecommendPlaylist(), + recommendPlaylist({ limit }), + ]); + let recommend = playlists[0].recommend ?? []; + if (recommend.length) { + if (removePrivateRecommand) recommend = recommend.slice(1); + await replaceRecommendResult(recommend); + } + return recommend.concat(playlists[1].result).slice(0, limit); + } else { + const response = await recommendPlaylist({ limit }); + return response.result; + } +} + +async function replaceRecommendResult(recommend) { + for (let r of recommend) { + if (specialPlaylist.indexOf(r.id) > -1) { + const data = await getPlaylistDetail(r.id, true); + const playlist = data.playlist; + if (playlist) { + r.name = playlist.name; + r.picUrl = playlist.coverImgUrl; + } + } + } +} + +const specialPlaylist = [3136952023, 2829883282, 2829816518, 2829896389]; diff --git a/src/views/explore.vue b/src/views/explore.vue index 2e5057b..ef190df 100644 --- a/src/views/explore.vue +++ b/src/views/explore.vue @@ -66,13 +66,9 @@