mirror of
https://github.com/GiriNeko/YesPlayMusic.git
synced 2025-12-16 13:17:46 +00:00
parent
1496a8a0d0
commit
2a2ac5a37d
5 changed files with 56 additions and 15 deletions
|
|
@ -26,7 +26,10 @@ export function dailyRecommendPlaylist(params) {
|
||||||
return request({
|
return request({
|
||||||
url: '/recommend/resource',
|
url: '/recommend/resource',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params,
|
params: {
|
||||||
|
params,
|
||||||
|
timestamp: Date.now(),
|
||||||
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,11 @@
|
||||||
import router from '../router';
|
import router from '../router';
|
||||||
import state from '../store/state';
|
import state from '../store/state';
|
||||||
|
import {
|
||||||
|
recommendPlaylist,
|
||||||
|
dailyRecommendPlaylist,
|
||||||
|
getPlaylistDetail,
|
||||||
|
} from '@/api/playlist';
|
||||||
|
import { isAccountLoggedIn } from '@/utils/auth';
|
||||||
|
|
||||||
export function hasListSource() {
|
export function hasListSource() {
|
||||||
return !state.player.isPersonalFM && state.player.playlistSource.id !== 0;
|
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}`;
|
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];
|
||||||
|
|
|
||||||
|
|
@ -66,13 +66,9 @@
|
||||||
<script>
|
<script>
|
||||||
import { mapState, mapMutations } from 'vuex';
|
import { mapState, mapMutations } from 'vuex';
|
||||||
import NProgress from 'nprogress';
|
import NProgress from 'nprogress';
|
||||||
import {
|
import { topPlaylist, highQualityPlaylist, toplists } from '@/api/playlist';
|
||||||
topPlaylist,
|
|
||||||
highQualityPlaylist,
|
|
||||||
recommendPlaylist,
|
|
||||||
toplists,
|
|
||||||
} from '@/api/playlist';
|
|
||||||
import { playlistCategories } from '@/utils/staticData';
|
import { playlistCategories } from '@/utils/staticData';
|
||||||
|
import { getRecommendPlayList } from '@/utils/playList';
|
||||||
|
|
||||||
import ButtonTwoTone from '@/components/ButtonTwoTone.vue';
|
import ButtonTwoTone from '@/components/ButtonTwoTone.vue';
|
||||||
import CoverRow from '@/components/CoverRow.vue';
|
import CoverRow from '@/components/CoverRow.vue';
|
||||||
|
|
@ -155,9 +151,9 @@ export default {
|
||||||
return this.getTopPlayList();
|
return this.getTopPlayList();
|
||||||
},
|
},
|
||||||
getRecommendPlayList() {
|
getRecommendPlayList() {
|
||||||
recommendPlaylist({ limit: 100 }).then(data => {
|
getRecommendPlayList(100, true).then(list => {
|
||||||
this.playlists = [];
|
this.playlists = [];
|
||||||
this.updatePlaylist(data.result);
|
this.updatePlaylist(list);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
getHighQualityPlaylist() {
|
getHighQualityPlaylist() {
|
||||||
|
|
|
||||||
|
|
@ -69,10 +69,11 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { toplists, recommendPlaylist } from '@/api/playlist';
|
import { toplists } from '@/api/playlist';
|
||||||
import { toplistOfArtists } from '@/api/artist';
|
import { toplistOfArtists } from '@/api/artist';
|
||||||
import { byAppleMusic } from '@/utils/staticData';
|
|
||||||
import { newAlbums } from '@/api/album';
|
import { newAlbums } from '@/api/album';
|
||||||
|
import { byAppleMusic } from '@/utils/staticData';
|
||||||
|
import { getRecommendPlayList } from '@/utils/playList';
|
||||||
import NProgress from 'nprogress';
|
import NProgress from 'nprogress';
|
||||||
import { mapState } from 'vuex';
|
import { mapState } from 'vuex';
|
||||||
import CoverRow from '@/components/CoverRow.vue';
|
import CoverRow from '@/components/CoverRow.vue';
|
||||||
|
|
@ -112,10 +113,8 @@ export default {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
if (!this.show) NProgress.start();
|
if (!this.show) NProgress.start();
|
||||||
}, 1000);
|
}, 1000);
|
||||||
recommendPlaylist({
|
getRecommendPlayList(10, false).then(items => {
|
||||||
limit: 10,
|
this.recommendPlaylist.items = items;
|
||||||
}).then(data => {
|
|
||||||
this.recommendPlaylist.items = data.result;
|
|
||||||
NProgress.done();
|
NProgress.done();
|
||||||
this.show = true;
|
this.show = true;
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -318,6 +318,10 @@ const specialPlaylist = {
|
||||||
name: '一周原创发现',
|
name: '一周原创发现',
|
||||||
gradient: 'gradient-blue-purple',
|
gradient: 'gradient-blue-purple',
|
||||||
},
|
},
|
||||||
|
2829883282: {
|
||||||
|
name: '华语私人雷达',
|
||||||
|
gradient: 'gradient-yellow-red',
|
||||||
|
},
|
||||||
3136952023: {
|
3136952023: {
|
||||||
name: '私人雷达',
|
name: '私人雷达',
|
||||||
gradient: 'gradient-radar',
|
gradient: 'gradient-radar',
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue