mirror of
https://github.com/qier222/YesPlayMusic.git
synced 2025-02-04 21:41:45 +08:00
Merge branch 'master' of github.com:qier222/YesPlayMusic
This commit is contained in:
commit
9a007bcd97
|
@ -144,7 +144,7 @@ export default {
|
|||
.hover-play-button {
|
||||
&:hover {
|
||||
.play-button {
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
transform: unset;
|
||||
}
|
||||
}
|
||||
|
@ -165,7 +165,7 @@ export default {
|
|||
height: 208px;
|
||||
}
|
||||
.play-button {
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
import { updateMediaSessionMetaData } from "@/utils/mediaSession";
|
||||
import { getTrackDetail, scrobble } from "@/api/track";
|
||||
import { getTrackDetail, scrobble, getMP3 } from "@/api/track";
|
||||
import { isLoggedIn } from "@/utils/auth";
|
||||
|
||||
export default {
|
||||
switchTrack({ state, dispatch, commit }, basicTrack) {
|
||||
getTrackDetail(basicTrack.id).then((data) => {
|
||||
getTrackDetail(basicTrack.id).then(data => {
|
||||
let track = data.songs[0];
|
||||
track.sort = basicTrack.sort;
|
||||
|
||||
|
@ -11,9 +12,7 @@ export default {
|
|||
scrobble({
|
||||
id: state.player.currentTrack.id,
|
||||
sourceid: state.player.listInfo.id,
|
||||
time: time === 0 ? 180 : time,
|
||||
}).then((data) => {
|
||||
console.log("scrobble", data);
|
||||
time: time === 0 ? 180 : time
|
||||
});
|
||||
|
||||
commit("updateCurrentTrack", track);
|
||||
|
@ -25,36 +24,43 @@ export default {
|
|||
return;
|
||||
}
|
||||
|
||||
commit(
|
||||
"replaceMP3",
|
||||
`https://music.163.com/song/media/outer/url?id=${track.id}`
|
||||
);
|
||||
function commitMP3(mp3) {
|
||||
commit("replaceMP3", mp3);
|
||||
state.howler.once("end", () => {
|
||||
dispatch("nextTrack");
|
||||
});
|
||||
}
|
||||
|
||||
if (isLoggedIn) {
|
||||
getMP3(track.id).then(data => {
|
||||
commitMP3(data.data[0].url);
|
||||
});
|
||||
} else {
|
||||
commitMP3(`https://music.163.com/song/media/outer/url?id=${track.id}`);
|
||||
}
|
||||
});
|
||||
},
|
||||
playFirstTrackOnList({ state, dispatch }) {
|
||||
dispatch(
|
||||
"switchTrack",
|
||||
state.player.list.find((t) => t.sort === 0)
|
||||
state.player.list.find(t => t.sort === 0)
|
||||
);
|
||||
},
|
||||
playTrackOnListByID({ state, commit, dispatch }, trackID) {
|
||||
let track = state.player.list.find((t) => t.id === trackID);
|
||||
let track = state.player.list.find(t => t.id === trackID);
|
||||
dispatch("switchTrack", track);
|
||||
if (state.player.shuffle) {
|
||||
// 当随机模式开启时,双击列表的一首歌进行播放,此时要把这首歌的sort调到第一(0),这样用户就能随机播放完整的歌单
|
||||
let otherTrack = state.player.list.find((t) => t.sort === 0);
|
||||
let otherTrack = state.player.list.find(t => t.sort === 0);
|
||||
commit("switchSortBetweenTwoTracks", {
|
||||
trackID1: track.id,
|
||||
trackID2: otherTrack.id,
|
||||
trackID2: otherTrack.id
|
||||
});
|
||||
}
|
||||
},
|
||||
nextTrack({ state, dispatch }, realNext = false) {
|
||||
let nextTrack = state.player.list.find(
|
||||
(track) => track.sort === state.player.currentTrack.sort + 1
|
||||
track => track.sort === state.player.currentTrack.sort + 1
|
||||
);
|
||||
|
||||
if (state.player.repeat === "one" && realNext === false) {
|
||||
|
@ -63,7 +69,7 @@ export default {
|
|||
|
||||
if (nextTrack === undefined) {
|
||||
if (state.player.repeat !== "off") {
|
||||
nextTrack = state.player.list.find((t) => t.sort === 0);
|
||||
nextTrack = state.player.list.find(t => t.sort === 0);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
@ -73,13 +79,13 @@ export default {
|
|||
},
|
||||
previousTrack({ state, dispatch }) {
|
||||
let previousTrack = state.player.list.find(
|
||||
(track) => track.sort === state.player.currentTrack.sort - 1
|
||||
track => track.sort === state.player.currentTrack.sort - 1
|
||||
);
|
||||
if (previousTrack == undefined) {
|
||||
if (state.player.repeat !== "off") {
|
||||
previousTrack = state.player.list.reduce((x, y) => (x > y ? x : y));
|
||||
} else {
|
||||
previousTrack = state.player.list.find((t) => t.sort === 0);
|
||||
previousTrack = state.player.list.find(t => t.sort === 0);
|
||||
}
|
||||
}
|
||||
dispatch("switchTrack", previousTrack);
|
||||
|
@ -88,5 +94,5 @@ export default {
|
|||
state.howler.once("end", () => {
|
||||
dispatch("nextTrack");
|
||||
});
|
||||
},
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,11 +1,18 @@
|
|||
import { isLoggedIn } from "./auth";
|
||||
import store from "@/store";
|
||||
|
||||
export function isTrackPlayable(track) {
|
||||
let result = {
|
||||
playable: true,
|
||||
reason: "",
|
||||
reason: ""
|
||||
};
|
||||
if (track.fee === 1 || track.privilege?.fee === 1) {
|
||||
if (isLoggedIn && store.state.settings.user.vipType === 11) {
|
||||
result.playable = true;
|
||||
} else {
|
||||
result.playable = false;
|
||||
result.reason = "VIP Only";
|
||||
}
|
||||
} else if (track.fee === 4 || track.privilege?.fee === 4) {
|
||||
result.playable = false;
|
||||
result.reason = "Paid Album";
|
||||
|
@ -20,7 +27,7 @@ export function isTrackPlayable(track) {
|
|||
}
|
||||
|
||||
export function mapTrackPlayableStatus(tracks) {
|
||||
return tracks.map((t) => {
|
||||
return tracks.map(t => {
|
||||
let result = isTrackPlayable(t);
|
||||
t.playable = result.playable;
|
||||
t.reason = result.reason;
|
||||
|
@ -40,13 +47,13 @@ export function randomNum(minNum, maxNum) {
|
|||
}
|
||||
|
||||
export function shuffleAList(list) {
|
||||
let sortsList = list.map((t) => t.sort);
|
||||
let sortsList = list.map(t => t.sort);
|
||||
for (let i = 1; i < sortsList.length; i++) {
|
||||
const random = Math.floor(Math.random() * (i + 1));
|
||||
[sortsList[i], sortsList[random]] = [sortsList[random], sortsList[i]];
|
||||
}
|
||||
let newSorts = {};
|
||||
list.map((track) => {
|
||||
list.map(track => {
|
||||
newSorts[track.id] = sortsList.pop();
|
||||
});
|
||||
return newSorts;
|
||||
|
|
Loading…
Reference in New Issue
Block a user