mirror of
https://github.com/GiriNeko/YesPlayMusic.git
synced 2025-12-16 05:08:04 +00:00
Compare commits
5 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 71817baad0 | |||
| f6735c9c26 | |||
| 708a1a8eb8 | |||
|
|
70ab357799 | ||
|
|
c7e69158d2 |
7 changed files with 13 additions and 17 deletions
|
|
@ -8,7 +8,7 @@
|
||||||
<p align="center">
|
<p align="center">
|
||||||
高颜值的第三方网易云播放器
|
高颜值的第三方网易云播放器
|
||||||
<br />
|
<br />
|
||||||
<a href="https://music.qier222.com" target="blank"><strong>🌎 访问DEMO</strong></a> |
|
<a href="https://music.ineko.cc" target="blank"><strong>🌎 访问DEMO</strong></a> |
|
||||||
<a href="#%EF%B8%8F-安装" target="blank"><strong>📦️ 下载安装包</strong></a> |
|
<a href="#%EF%B8%8F-安装" target="blank"><strong>📦️ 下载安装包</strong></a> |
|
||||||
<a href="https://t.me/yesplaymusic" target="blank"><strong>💬 加入交流群</strong></a>
|
<a href="https://t.me/yesplaymusic" target="blank"><strong>💬 加入交流群</strong></a>
|
||||||
<br />
|
<br />
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
</p>
|
</p>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
[![Library][library-screenshot]](https://music.qier222.com)
|
[![Library][library-screenshot]](https://music.ineko.cc)
|
||||||
|
|
||||||
|
|
||||||
## 全新版本
|
## 全新版本
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "yesplaymusic",
|
"name": "yesplaymusic",
|
||||||
"version": "0.4.8",
|
"version": "0.4.9",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "A third party music player for Netease Music",
|
"description": "A third party music player for Netease Music",
|
||||||
"author": "qier222<qier222@outlook.com>",
|
"author": "qier222<qier222@outlook.com>",
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ import i18n from '@/locale';
|
||||||
import '@/assets/icons';
|
import '@/assets/icons';
|
||||||
import '@/utils/filters';
|
import '@/utils/filters';
|
||||||
import './registerServiceWorker';
|
import './registerServiceWorker';
|
||||||
import { dailyTask } from '@/utils/common';
|
|
||||||
import '@/assets/css/global.scss';
|
import '@/assets/css/global.scss';
|
||||||
import NProgress from 'nprogress';
|
import NProgress from 'nprogress';
|
||||||
import '@/assets/css/nprogress.css';
|
import '@/assets/css/nprogress.css';
|
||||||
|
|
@ -38,7 +37,6 @@ Vue.use(
|
||||||
Vue.config.productionTip = false;
|
Vue.config.productionTip = false;
|
||||||
|
|
||||||
NProgress.configure({ showSpinner: false, trickleSpeed: 100 });
|
NProgress.configure({ showSpinner: false, trickleSpeed: 100 });
|
||||||
dailyTask();
|
|
||||||
|
|
||||||
new Vue({
|
new Vue({
|
||||||
i18n,
|
i18n,
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import { getArtist } from '@/api/artist';
|
||||||
import { trackScrobble, trackUpdateNowPlaying } from '@/api/lastfm';
|
import { trackScrobble, trackUpdateNowPlaying } from '@/api/lastfm';
|
||||||
import { fmTrash, personalFM } from '@/api/others';
|
import { fmTrash, personalFM } from '@/api/others';
|
||||||
import { getPlaylistDetail, intelligencePlaylist } from '@/api/playlist';
|
import { getPlaylistDetail, intelligencePlaylist } from '@/api/playlist';
|
||||||
import { getLyric, getMP3, getTrackDetail, scrobble } from '@/api/track';
|
import { getLyric, getMP3, getTrackDetail } from '@/api/track';
|
||||||
import store from '@/store';
|
import store from '@/store';
|
||||||
import { isAccountLoggedIn } from '@/utils/auth';
|
import { isAccountLoggedIn } from '@/utils/auth';
|
||||||
import { cacheTrackSource, getTrackSource } from '@/utils/db';
|
import { cacheTrackSource, getTrackSource } from '@/utils/db';
|
||||||
|
|
@ -130,6 +130,8 @@ export default class {
|
||||||
if (shuffle) {
|
if (shuffle) {
|
||||||
this._shuffleTheList();
|
this._shuffleTheList();
|
||||||
}
|
}
|
||||||
|
// 同步当前歌曲在列表中的下标
|
||||||
|
this.current = this.list.indexOf(this.currentTrackID);
|
||||||
}
|
}
|
||||||
get reversed() {
|
get reversed() {
|
||||||
return this._reversed;
|
return this._reversed;
|
||||||
|
|
@ -307,11 +309,6 @@ export default class {
|
||||||
);
|
);
|
||||||
const trackDuration = ~~(track.dt / 1000);
|
const trackDuration = ~~(track.dt / 1000);
|
||||||
time = completed ? trackDuration : ~~time;
|
time = completed ? trackDuration : ~~time;
|
||||||
scrobble({
|
|
||||||
id: track.id,
|
|
||||||
sourceid: this.playlistSource.id,
|
|
||||||
time,
|
|
||||||
});
|
|
||||||
if (
|
if (
|
||||||
store.state.lastfm.key !== undefined &&
|
store.state.lastfm.key !== undefined &&
|
||||||
(time >= trackDuration / 2 || time >= 240)
|
(time >= trackDuration / 2 || time >= 240)
|
||||||
|
|
@ -892,7 +889,7 @@ export default class {
|
||||||
if (autoPlayTrackID === 'first') {
|
if (autoPlayTrackID === 'first') {
|
||||||
this._replaceCurrentTrack(this.list[0]);
|
this._replaceCurrentTrack(this.list[0]);
|
||||||
} else {
|
} else {
|
||||||
this.current = trackIDs.indexOf(autoPlayTrackID);
|
this.current = this.list.indexOf(autoPlayTrackID);
|
||||||
this._replaceCurrentTrack(autoPlayTrackID);
|
this._replaceCurrentTrack(autoPlayTrackID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -215,7 +215,7 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapActions, mapMutations, mapState } from 'vuex';
|
import { mapActions, mapMutations, mapState } from 'vuex';
|
||||||
import { randomNum, dailyTask } from '@/utils/common';
|
import { randomNum } from '@/utils/common';
|
||||||
import { isAccountLoggedIn } from '@/utils/auth';
|
import { isAccountLoggedIn } from '@/utils/auth';
|
||||||
import { uploadSong } from '@/api/user';
|
import { uploadSong } from '@/api/user';
|
||||||
import { getLyric } from '@/api/track';
|
import { getLyric } from '@/api/track';
|
||||||
|
|
@ -310,7 +310,6 @@ export default {
|
||||||
activated() {
|
activated() {
|
||||||
this.$parent.$refs.scrollbar.restorePosition();
|
this.$parent.$refs.scrollbar.restorePosition();
|
||||||
this.loadData();
|
this.loadData();
|
||||||
dailyTask();
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapActions(['showToast']),
|
...mapActions(['showToast']),
|
||||||
|
|
|
||||||
|
|
@ -90,14 +90,14 @@
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="other-login">
|
<div class="other-login">
|
||||||
<a v-show="mode !== 'email'" @click="changeMode('email')">{{
|
<!-- <a v-show="mode !== 'email'" @click="changeMode('email')">{{
|
||||||
$t('login.loginWithEmail')
|
$t('login.loginWithEmail')
|
||||||
}}</a>
|
}}</a>
|
||||||
<span v-show="mode === 'qrCode'">|</span>
|
<span v-show="mode === 'qrCode'">|</span>
|
||||||
<a v-show="mode !== 'phone'" @click="changeMode('phone')">{{
|
<a v-show="mode !== 'phone'" @click="changeMode('phone')">{{
|
||||||
$t('login.loginWithPhone')
|
$t('login.loginWithPhone')
|
||||||
}}</a>
|
}}</a>
|
||||||
<span v-show="mode !== 'qrCode'">|</span>
|
<span v-show="mode !== 'qrCode'">|</span> -->
|
||||||
<a v-show="mode !== 'qrCode'" @click="changeMode('qrCode')">
|
<a v-show="mode !== 'qrCode'" @click="changeMode('qrCode')">
|
||||||
二维码登录
|
二维码登录
|
||||||
</a>
|
</a>
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,9 @@ export default {
|
||||||
this.player.current + 1,
|
this.player.current + 1,
|
||||||
this.player.current + 100
|
this.player.current + 100
|
||||||
);
|
);
|
||||||
return this.tracks.filter(t => trackIDs.includes(t.id));
|
return trackIDs
|
||||||
|
.map(tid => this.tracks.find(t => t.id === tid))
|
||||||
|
.filter(t => t);
|
||||||
},
|
},
|
||||||
playNextList() {
|
playNextList() {
|
||||||
return this.player.playNextList;
|
return this.player.playNextList;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue