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