From e15178150b02685b3d832ab47040f3ef19421795 Mon Sep 17 00:00:00 2001 From: lyswhut Date: Sun, 8 Aug 2021 12:16:22 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/store/modules/player.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/store/modules/player.js b/src/renderer/store/modules/player.js index 91e708f6..ebc2ad0b 100644 --- a/src/renderer/store/modules/player.js +++ b/src/renderer/store/modules/player.js @@ -363,7 +363,7 @@ const actions = { } let currentIndex = filteredList.findIndex(m => m.songmid == currentMusic.songmid) let nextIndex = currentIndex - console.log(currentIndex) + switch (rootState.setting.player.togglePlayMethod) { case 'listLoop': nextIndex = currentIndex === filteredList.length - 1 ? 0 : currentIndex + 1 From 1f85492690b81771772f409ee5a13c78e44e0615 Mon Sep 17 00:00:00 2001 From: lyswhut Date: Wed, 11 Aug 2021 09:59:47 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=92=AD=E6=94=BE?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=88=97=E8=A1=A8=E7=9A=84=E6=AD=8C=E6=9B=B2?= =?UTF-8?q?=E6=97=B6=E5=88=87=E6=AD=8C=E3=80=81=E6=AD=8C=E8=AF=8D=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- publish/changeLog.md | 3 +- src/renderer/components/core/Player.vue | 8 +- src/renderer/store/modules/download.js | 6 +- src/renderer/store/modules/player.js | 99 +++++++++++++++---------- src/renderer/views/Download.vue | 18 ++--- 5 files changed, 78 insertions(+), 56 deletions(-) diff --git a/publish/changeLog.md b/publish/changeLog.md index 585fe1c3..f7a35d89 100644 --- a/publish/changeLog.md +++ b/publish/changeLog.md @@ -1,3 +1,4 @@ ### 修复 -- 修复随机播放下无法切歌的问题 +- 修复播放下载列表的歌曲时切歌的问题 +- 修复播放下载列表的歌曲时歌词无法显示的问题 diff --git a/src/renderer/components/core/Player.vue b/src/renderer/components/core/Player.vue index 678a2888..2f4c3d75 100644 --- a/src/renderer/components/core/Player.vue +++ b/src/renderer/components/core/Player.vue @@ -268,7 +268,7 @@ export default { 'setting.player.togglePlayMethod'(n) { audio.loop = n === 'singleLoop' if (this.playedList.length) this.clearPlayedList() - if (n == 'random') this.setPlayedList(this.playMusicInfo) + if (n == 'random' && !this.playMusicInfo.isTempPlay) this.setPlayedList(this.playMusicInfo) }, 'setting.player.isMute'(n) { audio.muted = n @@ -487,7 +487,7 @@ export default { const targetSong = this.targetSong - if (this.setting.player.togglePlayMethod == 'random') this.setPlayedList(this.playMusicInfo) + if (this.setting.player.togglePlayMethod == 'random' && !this.playMusicInfo.isTempPlay) this.setPlayedList(this.playMusicInfo) this.retryNum = 0 this.restorePlayTime = 0 @@ -646,7 +646,7 @@ export default { if (!this.musicInfo.img) { this.getPic(targetSong).then(() => { - if (targetSong !== this.targetSong) return + if (targetSong.songmid !== this.musicInfo.songmid) return this.musicInfo.img = targetSong.img this.updateMediaSessionInfo() }) @@ -654,7 +654,7 @@ export default { }, setLrc(targetSong) { this.getLrc(targetSong).then(({ lyric, tlyric, lxlyric }) => { - if (targetSong !== this.targetSong) return + if (targetSong.songmid !== this.musicInfo.songmid) return this.musicInfo.lrc = lyric this.musicInfo.tlrc = tlyric this.musicInfo.lxlrc = lxlyric diff --git a/src/renderer/store/modules/download.js b/src/renderer/store/modules/download.js index 572d2d26..f18ddc1a 100644 --- a/src/renderer/store/modules/download.js +++ b/src/renderer/store/modules/download.js @@ -13,9 +13,10 @@ import { assertApiSupport, } from '../../utils' +window.downloadList = [] // state const state = { - list: [], + list: window.downloadList, waitingList: [], downloadStatus: { RUN: 'run', @@ -369,6 +370,7 @@ const actions = { status: state.downloadStatus.WAITING, statusText: '待下载', url: null, + // songmid: musicInfo.songmid, fileName: `${rootState.setting.download.fileName .replace('歌名', musicInfo.name) .replace('歌手', musicInfo.singer)}.${ext}`.replace(filterFileName, ''), @@ -667,7 +669,7 @@ const mutations = { downloadInfo.order = order }, updateDownloadList(state, list) { - state.list = list + state.list = window.downloadList = list }, updateUrl(state, { downloadInfo, url }) { downloadInfo.url = url diff --git a/src/renderer/store/modules/player.js b/src/renderer/store/modules/player.js index ebc2ad0b..12fa73c5 100644 --- a/src/renderer/store/modules/player.js +++ b/src/renderer/store/modules/player.js @@ -40,7 +40,7 @@ const filterList = async({ playedList, listInfo, savePath, commit }) => { canPlayList.push(item) // 排除已播放音乐 - let index = filteredPlayedList.indexOf(item) + let index = filteredPlayedList.findIndex(m => (m.songmid || m.musicInfo.songmid) == item.musicInfo.songmid) if (index > -1) { filteredPlayedList.splice(index, 1) continue @@ -52,7 +52,7 @@ const filterList = async({ playedList, listInfo, savePath, commit }) => { // if (!assertApiSupport(s.source)) return false canPlayList.push(s) - let index = filteredPlayedList.indexOf(s) + let index = filteredPlayedList.findIndex(m => (m.songmid || m.musicInfo.songmid) == s.songmid) if (index > -1) { filteredPlayedList.splice(index, 1) return false @@ -141,12 +141,12 @@ const getLyric = function(musicInfo, retryedSource = [], originMusic) { }) } -let prevPlayIndex +let prevListPlayIndex // getters const getters = { list: state => state.listInfo.list, changePlay: satte => satte.changePlay, - playInfo(state) { + playInfo(state, getters) { if (state.playMusicInfo == null) return { listId: null, playIndex: -1, playListId: null, listPlayIndex: -1, isPlayList: false, musicInfo: null } const playListId = state.listInfo.id let listId = state.playMusicInfo.listId @@ -156,15 +156,28 @@ const getters = { let listPlayIndex = state.playIndex if (listId != '__temp__') { + const currentSongmid = state.playMusicInfo.musicInfo.songmid || state.playMusicInfo.musicInfo.musicInfo.songmid if (isPlayList) { - playIndex = state.listInfo.list.findIndex(m => m.songmid == state.playMusicInfo.musicInfo.songmid) + playIndex = state.listInfo.list.findIndex(m => (m.songmid || m.musicInfo.songmid) == currentSongmid) if (!isTempPlay) listPlayIndex = playIndex + } else if (listId == 'download') { + playIndex = window.downloadList.findIndex(m => m.musicInfo.songmid == currentSongmid) } else { let list = window.allList[listId] - if (list) playIndex = list.list.findIndex(m => m.songmid == state.playMusicInfo.musicInfo.songmid) + if (list) playIndex = list.list.findIndex(m => m.songmid == currentSongmid) } } - if (listPlayIndex > -1) prevPlayIndex = listPlayIndex + if (listPlayIndex >= 0) prevListPlayIndex = listPlayIndex + // if (listPlayIndex < 0) { + // let length = state.listInfo.list.length + // if (length) { + // let index = Math.min(prevListPlayIndex, 0) + // if (index > length - 1) index = length - 1 + // listPlayIndex = prevListPlayIndex = index + // } + // } else { + // prevListPlayIndex = listPlayIndex + // } // console.log({ // listId, // playIndex, @@ -249,12 +262,21 @@ const actions = { async playPrev({ state, rootState, commit, getters }) { const currentListId = state.listInfo.id const currentList = state.listInfo.list + const playInfo = getters.playInfo if (state.playedList.length) { + let currentSongmid + if (state.playMusicInfo.isTempPlay) { + const musicInfo = playInfo.list[playInfo.listPlayIndex] + if (musicInfo) currentSongmid = musicInfo.songmid || musicInfo.musicInfo.songmid + } else { + currentSongmid = state.playMusicInfo.musicInfo.songmid || state.playMusicInfo.musicInfo.musicInfo.songmid + } // 从已播放列表移除播放列表已删除的歌曲 let index - for (index = state.playedList.findIndex(m => m.musicInfo.songmid === state.playMusicInfo.musicInfo.songmid) - 1; index > -1; index--) { + for (index = state.playedList.findIndex(m => (m.musicInfo.songmid || m.musicInfo.musicInfo.songmid) === currentSongmid) - 1; index > -1; index--) { const playMusicInfo = state.playedList[index] - if (playMusicInfo.listId == currentListId && !currentList.some(m => m.songmid === playMusicInfo.musicInfo.songmid)) { + const currentSongmid = playMusicInfo.musicInfo.songmid || playMusicInfo.musicInfo.musicInfo.songmid + if (playMusicInfo.listId == currentListId && !currentList.some(m => (m.songmid || m.musicInfo.songmid) === currentSongmid)) { commit('removePlayedList', index) continue } @@ -274,21 +296,14 @@ const actions = { commit, }) if (!filteredList.length) return commit('setPlayMusicInfo', null) - const playInfo = getters.playInfo - let currentMusic - if (playInfo.listPlayIndex < 0) { - let index = prevPlayIndex - if (index > currentList.length - 1) index = 0 - while (index > -1) { - currentMusic = currentList[index] - if (currentMusic) break - index-- - } - } else { - currentMusic = currentList[playInfo.listPlayIndex] + + let listPlayIndex = playInfo.listPlayIndex + const currentListLength = state.listInfo.list.length - 1 + if (listPlayIndex == -1 && currentListLength) { + listPlayIndex = prevListPlayIndex >= currentListLength ? 0 : prevListPlayIndex + 1 } - let currentIndex = filteredList.findIndex(m => m.songmid == currentMusic.songmid) - if (currentIndex == -1) currentIndex = 0 + let currentIndex = listPlayIndex + if (currentIndex < 0) currentIndex = 0 let nextIndex = currentIndex if (!playInfo.isTempPlay) { switch (rootState.setting.player.togglePlayMethod) { @@ -322,13 +337,22 @@ const actions = { } const currentListId = state.listInfo.id const currentList = state.listInfo.list - console.log(currentListId) + const playInfo = getters.playInfo + if (state.playedList.length) { + let currentSongmid + if (state.playMusicInfo.isTempPlay) { + const musicInfo = currentList[playInfo.listPlayIndex] + if (musicInfo) currentSongmid = musicInfo.songmid || musicInfo.musicInfo.songmid + } else { + currentSongmid = state.playMusicInfo.musicInfo.songmid || state.playMusicInfo.musicInfo.musicInfo.songmid + } // 从已播放列表移除播放列表已删除的歌曲 let index - for (index = state.playedList.findIndex(m => m.musicInfo.songmid === state.playMusicInfo.musicInfo.songmid) + 1; index < state.playedList.length; index++) { + for (index = state.playedList.findIndex(m => (m.musicInfo.songmid || m.musicInfo.musicInfo.songmid) === currentSongmid) + 1; index < state.playedList.length; index++) { const playMusicInfo = state.playedList[index] - if (playMusicInfo.listId == currentListId && !currentList.some(m => m.songmid === playMusicInfo.musicInfo.songmid)) { + const currentSongmid = playMusicInfo.musicInfo.songmid || playMusicInfo.musicInfo.musicInfo.songmid + if (playMusicInfo.listId == currentListId && !currentList.some(m => (m.songmid || m.musicInfo.songmid) === currentSongmid)) { commit('removePlayedList', index) continue } @@ -348,20 +372,12 @@ const actions = { }) if (!filteredList.length) return commit('setPlayMusicInfo', null) - const playInfo = getters.playInfo - let currentMusic - if (playInfo.listPlayIndex < 0) { - let index = prevPlayIndex - 1 - if (index < 0) index = currentList.length - 1 - while (index > -1) { - currentMusic = currentList[index] - if (currentMusic) break - index-- - } - } else { - currentMusic = currentList[playInfo.listPlayIndex] + let listPlayIndex = playInfo.listPlayIndex + const currentListLength = state.listInfo.list.length - 1 + if (listPlayIndex == -1 && currentListLength) { + listPlayIndex = prevListPlayIndex > currentListLength ? currentListLength : prevListPlayIndex - 1 } - let currentIndex = filteredList.findIndex(m => m.songmid == currentMusic.songmid) + const currentIndex = listPlayIndex let nextIndex = currentIndex switch (rootState.setting.player.togglePlayMethod) { @@ -461,7 +477,10 @@ const mutations = { playIndex = -1 } else { let listId = playMusicInfo.listId - if (listId != '__temp__' && !playMusicInfo.isTempPlay && listId === state.listInfo.id) playIndex = state.listInfo.list.findIndex(m => m.songmid == playMusicInfo.musicInfo.songmid) + if (listId != '__temp__' && !playMusicInfo.isTempPlay && listId === state.listInfo.id) { + const currentSongmid = playMusicInfo.musicInfo.songmid || playMusicInfo.musicInfo.musicInfo.songmid + playIndex = state.listInfo.list.findIndex(m => (m.songmid || m.musicInfo.songmid) == currentSongmid) + } } state.playMusicInfo = playMusicInfo diff --git a/src/renderer/views/Download.vue b/src/renderer/views/Download.vue index 4dd190cc..d530c150 100644 --- a/src/renderer/views/Download.vue +++ b/src/renderer/views/Download.vue @@ -182,7 +182,7 @@ export default { }, methods: { ...mapActions('download', ['removeTask', 'removeTasks', 'startTask', 'startTasks', 'pauseTask', 'pauseTasks']), - ...mapMutations('player', ['setList']), + ...mapMutations('player', ['setList', 'setTempPlayList']), listenEvent() { window.eventHub.$on('key_shift_down', this.handle_key_shift_down) window.eventHub.$on('key_shift_up', this.handle_key_shift_up) @@ -312,14 +312,6 @@ export default { case 'remove': this.removeTask(item) break - case 'playLater': - if (this.selectedData.length) { - this.setTempPlayList(this.selectedData.map(s => ({ listId: 'download', musicInfo: s }))) - this.removeAllSelect() - } else { - this.setTempPlayList([{ listId: 'download', musicInfo: item }]) - } - break case 'file': this.handleOpenFolder(item.filePath) break @@ -472,6 +464,14 @@ export default { }) } break + case 'playLater': + if (this.selectedData.length) { + this.setTempPlayList(this.selectedData.map(s => ({ listId: 'download', musicInfo: s }))) + this.removeAllSelect() + } else { + this.setTempPlayList([{ listId: 'download', musicInfo: this.showList[index] }]) + } + break case 'sourceDetail': item = this.showList[index].musicInfo url = musicSdk[item.source].getMusicDetailPageUrl(item) From 8196e8a84db14cbbdb0b2268daee2f47e76d33c4 Mon Sep 17 00:00:00 2001 From: lyswhut Date: Wed, 11 Aug 2021 10:00:04 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .ncurc.js | 7 + build-config/css-loader.config.js | 1 + package-lock.json | 233 +++++++++++++-------- package.json | 12 +- src/main/modules/tray.js | 104 ++++----- src/main/modules/userApi/main.js | 1 + src/renderer/store/modules/download.js | 48 ++--- src/renderer/utils/music/kg/comment.js | 24 ++- src/renderer/utils/music/kw/comment.js | 26 +-- src/renderer/utils/music/mg/musicSearch.js | 10 +- src/renderer/utils/music/tx/comment.js | 28 +-- src/renderer/utils/music/tx/songList.js | 32 +-- src/renderer/utils/music/wy/comment.js | 26 +-- 13 files changed, 319 insertions(+), 233 deletions(-) create mode 100644 .ncurc.js diff --git a/.ncurc.js b/.ncurc.js new file mode 100644 index 00000000..6ef18123 --- /dev/null +++ b/.ncurc.js @@ -0,0 +1,7 @@ +module.exports = { + upgrade: true, + reject: [ + 'vue-loader' + // 'eslint-config-standard' + ] +} diff --git a/build-config/css-loader.config.js b/build-config/css-loader.config.js index 12a82200..05dfd1c2 100644 --- a/build-config/css-loader.config.js +++ b/build-config/css-loader.config.js @@ -5,4 +5,5 @@ module.exports = { localIdentName: isDev ? '[path][name]__[local]--[hash:base64:5]' : '[hash:base64:5]', exportLocalsConvention: 'camelCase', }, + sourceMap: isDev, } diff --git a/package-lock.json b/package-lock.json index 1e0399b1..41292d15 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "lx-music-desktop", - "version": "1.12.0", + "version": "1.12.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -3329,12 +3329,6 @@ "integrity": "sha1-9MfsQ+gbMZqYFRFQMXCfJph4kfA=", "dev": true }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", - "dev": true - }, "@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npm.taobao.org/@types/minimatch/download/@types/minimatch-3.0.3.tgz?cache=0&sync_timestamp=1605054612683&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fminimatch%2Fdownload%2F%40types%2Fminimatch-3.0.3.tgz", @@ -5849,9 +5843,9 @@ } }, "core-js": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.16.0.tgz", - "integrity": "sha512-5+5VxRFmSf97nM8Jr2wzOwLqRo6zphH2aX+7KsAUONObyzakDNq2G/bgbhinxB4PoV9L3aXQYhiDKyIKWd2c8g==", + "version": "3.16.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.16.1.tgz", + "integrity": "sha512-AAkP8i35EbefU+JddyWi12AWE9f2N/qr/pwnDtWz4nyUIBGMJPX99ANFFRSw6FefM374lDujdtLDyhN2A/btHw==", "dev": true }, "core-js-compat": { @@ -6673,9 +6667,9 @@ } }, "electron": { - "version": "13.1.8", - "resolved": "https://registry.npmjs.org/electron/-/electron-13.1.8.tgz", - "integrity": "sha512-ei2ZyyG81zUOlvm5Zxri668TdH5GNLY0wF+XrC2FRCqa8AABAPjJIWTRkhFEr/H6PDVPNZjMPvSs3XhHyVVk2g==", + "version": "13.1.9", + "resolved": "https://registry.npmjs.org/electron/-/electron-13.1.9.tgz", + "integrity": "sha512-By4Zb72XNQLrPb70BXdIW3NtEHFwybP5DIQjohnCxOYONq5vojuHjNcTuWnBgMvwQ2qwykk6Tw5EwF2Pt0CWjA==", "dev": true, "requires": { "@electron/get": "^1.0.1", @@ -6918,9 +6912,9 @@ } }, "electron-to-chromium": { - "version": "1.3.796", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.796.tgz", - "integrity": "sha512-agwJFgM0FUC1UPPbQ4aII3HamaaJ09fqWGAWYHmzxDWqdmTleCHyyA0kt3fJlTd5M440IaeuBfzXzXzCotnZcQ==", + "version": "1.3.801", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.801.tgz", + "integrity": "sha512-xapG8ekC+IAHtJrGBMQSImNuN+dm+zl7UP1YbhvTkwQn8zf/yYuoxfTSAEiJ9VDD+kjvXaAhNDPSxJ+VImtAJA==", "dev": true }, "electron-updater": { @@ -7126,9 +7120,9 @@ } }, "es-abstract": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", - "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", + "version": "1.18.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz", + "integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -7137,11 +7131,12 @@ "get-intrinsic": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", "is-callable": "^1.2.3", "is-negative-zero": "^2.0.1", "is-regex": "^1.1.3", "is-string": "^1.0.6", - "object-inspect": "^1.10.3", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", @@ -7167,13 +7162,13 @@ "dev": true }, "is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" + "has-tostringtag": "^1.0.0" } } } @@ -7390,9 +7385,9 @@ } }, "eslint-config-standard": { - "version": "14.1.1", - "resolved": "https://registry.npm.taobao.org/eslint-config-standard/download/eslint-config-standard-14.1.1.tgz?cache=0&sync_timestamp=1605664520005&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-config-standard%2Fdownload%2Feslint-config-standard-14.1.1.tgz", - "integrity": "sha1-gwqOROeu995nRkl5rQa0BgJsVuo=", + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz", + "integrity": "sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==", "dev": true }, "eslint-formatter-friendly": { @@ -7446,29 +7441,33 @@ } }, "eslint-import-resolver-node": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", - "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.5.tgz", + "integrity": "sha512-XMoPKjSpXbkeJ7ZZ9icLnJMTY5Mc1kZbCakHquaFsXPpyWOwK0TK6CODO+0ca54UoM9LKOxyUNnoVZRl8TeaAg==", "dev": true, "requires": { - "debug": "^2.6.9", - "resolve": "^1.13.1" + "debug": "^3.2.7", + "resolve": "^1.20.0" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } } } }, @@ -7553,9 +7552,9 @@ } }, "eslint-module-utils": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz", - "integrity": "sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz", + "integrity": "sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==", "dev": true, "requires": { "debug": "^3.2.7", @@ -7719,17 +7718,17 @@ } }, "eslint-plugin-import": { - "version": "2.23.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz", - "integrity": "sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ==", + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.0.tgz", + "integrity": "sha512-Kc6xqT9hiYi2cgybOc0I2vC9OgAYga5o/rAFinam/yF/t5uBqxQbauNPMC6fgb640T/89P0gFoO27FOilJ/Cqg==", "dev": true, "requires": { "array-includes": "^3.1.3", "array.prototype.flat": "^1.2.4", "debug": "^2.6.9", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.4", - "eslint-module-utils": "^2.6.1", + "eslint-import-resolver-node": "^0.3.5", + "eslint-module-utils": "^2.6.2", "find-up": "^2.0.0", "has": "^1.0.3", "is-core-module": "^2.4.0", @@ -8965,6 +8964,23 @@ "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + } + } + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -9459,6 +9475,30 @@ "ipaddr.js": "^1.9.0" } }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "dependencies": { + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + } + } + }, "interpret": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", @@ -9514,18 +9554,19 @@ "dev": true }, "is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.3.tgz", + "integrity": "sha512-ZU538ajmYJmzysE5yU4Y7uIrPQ2j704u+hXFiIPQExpqzzUbpe5jCPdTfmz7jXRxZdvjY3KZ3ZNenoXQovX+Dg==", "dev": true }, "is-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "requires": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-buffer": { @@ -9535,9 +9576,9 @@ "dev": true }, "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, "is-ci": { @@ -9577,9 +9618,9 @@ } }, "is-core-module": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", - "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz", + "integrity": "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==", "dev": true, "requires": { "has": "^1.0.3" @@ -9696,10 +9737,13 @@ } }, "is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", - "dev": true + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-obj": { "version": "2.0.0", @@ -9775,10 +9819,13 @@ "dev": true }, "is-string": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", - "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", - "dev": true + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-symbol": { "version": "1.0.4", @@ -11089,9 +11136,9 @@ "dev": true }, "object-inspect": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", - "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true }, "object-is": { @@ -13088,6 +13135,17 @@ "integrity": "sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=", "dev": true }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", @@ -13428,9 +13486,9 @@ } }, "spdx-license-ids": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", - "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", + "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", "dev": true }, "spdy": { @@ -14267,24 +14325,23 @@ } }, "tsconfig-paths": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", - "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.10.1.tgz", + "integrity": "sha512-rETidPDgCpltxF7MjBZlAFPUHv5aHH2MymyPvh+vEyWAED4Eb/WeMbsnD/JDr4OKPOA1TssDHgIcpTN5Kh0p6Q==", "dev": true, "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", + "json5": "^2.2.0", "minimist": "^1.2.0", "strip-bom": "^3.0.0" }, "dependencies": { "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "dev": true, "requires": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" } } } @@ -14857,9 +14914,9 @@ } }, "webpack": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.49.0.tgz", - "integrity": "sha512-XarsANVf28A7Q3KPxSnX80EkCcuOer5hTOEJWJNvbskOZ+EK3pobHarGHceyUZMxpsTHBHhlV7hiQyLZzGosYw==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.50.0.tgz", + "integrity": "sha512-hqxI7t/KVygs0WRv/kTgUW8Kl3YC81uyWQSo/7WUs5LsuRw0htH/fCwbVBGCuiX/t4s7qzjXFcf41O8Reiypag==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", diff --git a/package.json b/package.json index 7d49b222..e14ea917 100644 --- a/package.json +++ b/package.json @@ -178,22 +178,22 @@ "chalk": "^4.1.2", "changelog-parser": "^2.8.0", "copy-webpack-plugin": "^9.0.1", - "core-js": "^3.16.0", + "core-js": "^3.16.1", "cross-env": "^7.0.3", "css-loader": "^6.2.0", "css-minimizer-webpack-plugin": "^3.0.2", "del": "^6.0.0", - "electron": "^13.1.8", + "electron": "^13.1.9", "electron-builder": "^22.11.7", "electron-debug": "^3.2.0", "electron-devtools-installer": "^3.2.0", - "electron-to-chromium": "^1.3.796", + "electron-to-chromium": "^1.3.801", "eslint": "^7.32.0", - "eslint-config-standard": "^14.1.1", + "eslint-config-standard": "^16.0.3", "eslint-formatter-friendly": "^7.0.0", "eslint-loader": "^4.0.2", "eslint-plugin-html": "^6.1.2", - "eslint-plugin-import": "^2.23.4", + "eslint-plugin-import": "^2.24.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^5.1.0", "eslint-plugin-standard": "^4.1.0", @@ -220,7 +220,7 @@ "url-loader": "^4.1.1", "vue-loader": "^15.9.8", "vue-template-compiler": "^2.6.14", - "webpack": "^5.49.0", + "webpack": "^5.50.0", "webpack-cli": "^4.7.2", "webpack-dev-server": "^3.11.2", "webpack-hot-middleware": "^2.25.0", diff --git a/src/main/modules/tray.js b/src/main/modules/tray.js index b2b990ad..57827b03 100644 --- a/src/main/modules/tray.js +++ b/src/main/modules/tray.js @@ -70,55 +70,63 @@ const destroyTray = () => { const createMenu = tray => { if (!global.modules.tray) return let menu = [] - global.modules.mainWindow && menu.push(global.modules.mainWindow.isVisible() ? { - label: '隐藏主界面', - click() { - global.modules.mainWindow.hide() - }, - } : { - label: '显示主界面', - click() { - if (!global.modules.mainWindow) return - if (!global.modules.mainWindow.isVisible()) { - global.modules.mainWindow.show() + global.modules.mainWindow && menu.push(global.modules.mainWindow.isVisible() + ? { + label: '隐藏主界面', + click() { + global.modules.mainWindow.hide() + }, } - global.modules.mainWindow.restore() - global.modules.mainWindow.focus() - }, - }) - menu.push(global.appSetting.desktopLyric.enable ? { - label: '关闭桌面歌词', - click() { - global.lx_core.setAppConfig({ desktopLyric: { enable: false } }, TRAY_EVENT_NAME.name) - }, - } : { - label: '开启桌面歌词', - click() { - global.lx_core.setAppConfig({ desktopLyric: { enable: true } }, TRAY_EVENT_NAME.name) - }, - }) - menu.push(global.appSetting.desktopLyric.isLock ? { - label: '解锁桌面歌词', - click() { - global.lx_core.setAppConfig({ desktopLyric: { isLock: false } }, TRAY_EVENT_NAME.name) - }, - } : { - label: '锁定桌面歌词', - click() { - global.lx_core.setAppConfig({ desktopLyric: { isLock: true } }, TRAY_EVENT_NAME.name) - }, - }) - menu.push(global.appSetting.desktopLyric.isAlwaysOnTop ? { - label: '取消置顶', - click() { - global.lx_core.setAppConfig({ desktopLyric: { isAlwaysOnTop: false } }, TRAY_EVENT_NAME.name) - }, - } : { - label: '置顶歌词', - click() { - global.lx_core.setAppConfig({ desktopLyric: { isAlwaysOnTop: true } }, TRAY_EVENT_NAME.name) - }, - }) + : { + label: '显示主界面', + click() { + if (!global.modules.mainWindow) return + if (!global.modules.mainWindow.isVisible()) { + global.modules.mainWindow.show() + } + global.modules.mainWindow.restore() + global.modules.mainWindow.focus() + }, + }) + menu.push(global.appSetting.desktopLyric.enable + ? { + label: '关闭桌面歌词', + click() { + global.lx_core.setAppConfig({ desktopLyric: { enable: false } }, TRAY_EVENT_NAME.name) + }, + } + : { + label: '开启桌面歌词', + click() { + global.lx_core.setAppConfig({ desktopLyric: { enable: true } }, TRAY_EVENT_NAME.name) + }, + }) + menu.push(global.appSetting.desktopLyric.isLock + ? { + label: '解锁桌面歌词', + click() { + global.lx_core.setAppConfig({ desktopLyric: { isLock: false } }, TRAY_EVENT_NAME.name) + }, + } + : { + label: '锁定桌面歌词', + click() { + global.lx_core.setAppConfig({ desktopLyric: { isLock: true } }, TRAY_EVENT_NAME.name) + }, + }) + menu.push(global.appSetting.desktopLyric.isAlwaysOnTop + ? { + label: '取消置顶', + click() { + global.lx_core.setAppConfig({ desktopLyric: { isAlwaysOnTop: false } }, TRAY_EVENT_NAME.name) + }, + } + : { + label: '置顶歌词', + click() { + global.lx_core.setAppConfig({ desktopLyric: { isAlwaysOnTop: true } }, TRAY_EVENT_NAME.name) + }, + }) menu.push({ label: '退出', click() { diff --git a/src/main/modules/userApi/main.js b/src/main/modules/userApi/main.js index 01960bf4..2203f74c 100644 --- a/src/main/modules/userApi/main.js +++ b/src/main/modules/userApi/main.js @@ -59,6 +59,7 @@ exports.createWindow = async userApi => { }) } global.modules.userApiWindow.webContents.session.setPermissionRequestHandler((webContents, permission, callback) => { + // eslint-disable-next-line node/no-callback-literal callback(false) }) diff --git a/src/renderer/store/modules/download.js b/src/renderer/store/modules/download.js index f18ddc1a..54aa2dac 100644 --- a/src/renderer/store/modules/download.js +++ b/src/renderer/store/modules/download.js @@ -192,13 +192,13 @@ const getMusicUrl = async function(downloadInfo, isUseOtherSource, isRefresh) { return cachedUrl && !isRefresh ? cachedUrl : ( - isUseOtherSource - ? handleGetMusicUrl.call(this, downloadInfo.musicInfo, downloadInfo.type) - : music[downloadInfo.musicInfo.source].getMusicUrl(downloadInfo.musicInfo, downloadInfo.type).promise - ).then(({ url }) => { - setMusicUrl(downloadInfo.musicInfo, downloadInfo.type, url) - return url - }) + isUseOtherSource + ? handleGetMusicUrl.call(this, downloadInfo.musicInfo, downloadInfo.type) + : music[downloadInfo.musicInfo.source].getMusicUrl(downloadInfo.musicInfo, downloadInfo.type).promise + ).then(({ url }) => { + setMusicUrl(downloadInfo.musicInfo, downloadInfo.type, url) + return url + }) } const getPic = function(musicInfo, retryedSource = [], originMusic) { // console.log(musicInfo.source) @@ -264,29 +264,29 @@ const saveMeta = function(downloadInfo, filePath, isUseOtherSource, isEmbedPic, ? downloadInfo.musicInfo.img ? Promise.resolve(downloadInfo.musicInfo.img) : ( - isUseOtherSource - ? getPic.call(this, downloadInfo.musicInfo) - : music[downloadInfo.musicInfo.source].getPic(downloadInfo.musicInfo).promise - ).catch(err => { - console.log(err) - return null - }) + isUseOtherSource + ? getPic.call(this, downloadInfo.musicInfo) + : music[downloadInfo.musicInfo.source].getPic(downloadInfo.musicInfo).promise + ).catch(err => { + console.log(err) + return null + }) : Promise.resolve(), isEmbedLyric ? getLyricFromStorage(downloadInfo.musicInfo).then(lrcInfo => { return lrcInfo.lyric ? Promise.resolve({ lyric: lrcInfo.lyric, tlyric: lrcInfo.tlyric || '' }) : ( - isUseOtherSource - ? getLyric.call(this, downloadInfo.musicInfo) - : music[downloadInfo.musicInfo.source].getLyric(downloadInfo.musicInfo).promise - ).then(({ lyric, tlyric, lxlyric }) => { - setLyric(downloadInfo.musicInfo, { lyric, tlyric, lxlyric }) - return { lyric, tlyric, lxlyric } - }).catch(err => { - console.log(err) - return null - }) + isUseOtherSource + ? getLyric.call(this, downloadInfo.musicInfo) + : music[downloadInfo.musicInfo.source].getLyric(downloadInfo.musicInfo).promise + ).then(({ lyric, tlyric, lxlyric }) => { + setLyric(downloadInfo.musicInfo, { lyric, tlyric, lxlyric }) + return { lyric, tlyric, lxlyric } + }).catch(err => { + console.log(err) + return null + }) }) : Promise.resolve(), ] diff --git a/src/renderer/utils/music/kg/comment.js b/src/renderer/utils/music/kg/comment.js index cffd7aa8..5e4adf85 100644 --- a/src/renderer/utils/music/kg/comment.js +++ b/src/renderer/utils/music/kg/comment.js @@ -63,17 +63,19 @@ export default { reply: [], } - return item.pcontent ? { - id: item.id, - text: decodeName(item.pcontent).split('\n'), - time: null, - userName: item.puser, - avatar: null, - userId: item.puser_id, - likedCount: null, - replyNum: null, - reply: [data], - } : data + return item.pcontent + ? { + id: item.id, + text: decodeName(item.pcontent).split('\n'), + time: null, + userName: item.puser, + avatar: null, + userId: item.puser_id, + likedCount: null, + replyNum: null, + reply: [data], + } + : data }) }, } diff --git a/src/renderer/utils/music/kw/comment.js b/src/renderer/utils/music/kw/comment.js index 99f160b4..7c6a7cfe 100644 --- a/src/renderer/utils/music/kw/comment.js +++ b/src/renderer/utils/music/kw/comment.js @@ -44,18 +44,20 @@ export default { likedCount: item.like_num, reply: [], } - return item.reply ? { - id: item.id, - rootId: item.reply.id, - text: item.reply.msg.split('\n'), - time: item.reply.time, - timeStr: dateFormat2(new Date(item.reply.time).getTime()), - userName: decodeURIComponent(item.reply.u_name), - avatar: item.reply.u_pic, - userId: item.reply.u_id, - likedCount: item.reply.like_num, - reply: [data], - } : data + return item.reply + ? { + id: item.id, + rootId: item.reply.id, + text: item.reply.msg.split('\n'), + time: item.reply.time, + timeStr: dateFormat2(new Date(item.reply.time).getTime()), + userName: decodeURIComponent(item.reply.u_name), + avatar: item.reply.u_pic, + userId: item.reply.u_id, + likedCount: item.reply.like_num, + reply: [data], + } + : data }) }, } diff --git a/src/renderer/utils/music/mg/musicSearch.js b/src/renderer/utils/music/mg/musicSearch.js index 585d154b..64e548ab 100644 --- a/src/renderer/utils/music/mg/musicSearch.js +++ b/src/renderer/utils/music/mg/musicSearch.js @@ -72,10 +72,12 @@ export default { } }) - const albumNInfo = item.albums && item.albums.length ? { - id: item.albums[0].id, - name: item.albums[0].name, - } : {} + const albumNInfo = item.albums && item.albums.length + ? { + id: item.albums[0].id, + name: item.albums[0].name, + } + : {} list.push({ singer: this.getSinger(item.singers), diff --git a/src/renderer/utils/music/tx/comment.js b/src/renderer/utils/music/tx/comment.js index 1367df36..fee8c0ff 100644 --- a/src/renderer/utils/music/tx/comment.js +++ b/src/renderer/utils/music/tx/comment.js @@ -168,19 +168,21 @@ export default { avatar: item.avatarurl, userId: item.encrypt_rootcommentuin, likedCount: item.praisenum, - reply: item.middlecommentcontent ? item.middlecommentcontent.map(c => { - let index = c.subcommentid.lastIndexOf('_') - return { - id: c.subcommentid, - text: this.replaceEmoji(c.subcommentcontent).replace(/\\n/g, '\n').split('\n'), - time: parseInt(c.subcommentid.substring(index + 1) + '000'), - timeStr: dateFormat2(parseInt(c.subcommentid.substring(index + 1) + '000')), - userName: c.replynick.substring(1), - avatar: c.avatarurl, - userId: c.encrypt_replyuin, - likedCount: c.praisenum, - } - }) : [], + reply: item.middlecommentcontent + ? item.middlecommentcontent.map(c => { + let index = c.subcommentid.lastIndexOf('_') + return { + id: c.subcommentid, + text: this.replaceEmoji(c.subcommentcontent).replace(/\\n/g, '\n').split('\n'), + time: parseInt(c.subcommentid.substring(index + 1) + '000'), + timeStr: dateFormat2(parseInt(c.subcommentid.substring(index + 1) + '000')), + userName: c.replynick.substring(1), + avatar: c.avatarurl, + userId: c.encrypt_replyuin, + likedCount: c.praisenum, + } + }) + : [], } }) }, diff --git a/src/renderer/utils/music/tx/songList.js b/src/renderer/utils/music/tx/songList.js index b8cea173..a3fa4563 100644 --- a/src/renderer/utils/music/tx/songList.js +++ b/src/renderer/utils/music/tx/songList.js @@ -32,21 +32,23 @@ export default { tagsUrl: 'https://u.y.qq.com/cgi-bin/musicu.fcg?loginUin=0&hostUin=0&format=json&inCharset=utf-8&outCharset=utf-8¬ice=0&platform=wk_v15.json&needNewCode=0&data=%7B%22tags%22%3A%7B%22method%22%3A%22get_all_categories%22%2C%22param%22%3A%7B%22qq%22%3A%22%22%7D%2C%22module%22%3A%22playlist.PlaylistAllCategoriesServer%22%7D%7D', hotTagUrl: 'https://c.y.qq.com/node/pc/wk_v15/category_playlist.html', getListUrl(sortId, id, page) { - return id ? `https://u.y.qq.com/cgi-bin/musicu.fcg?loginUin=0&hostUin=0&format=json&inCharset=utf-8&outCharset=utf-8¬ice=0&platform=wk_v15.json&needNewCode=0&data=${encodeURIComponent(JSON.stringify({ - comm: { cv: 1602, ct: 20 }, - playlist: { - method: 'get_category_content', - param: { - titleid: id, - caller: '0', - category_id: id, - size: this.limit_list, - page: page - 1, - use_page: 1, - }, - module: 'playlist.PlayListCategoryServer', - }, - }))}` : `https://u.y.qq.com/cgi-bin/musicu.fcg?loginUin=0&hostUin=0&format=json&inCharset=utf-8&outCharset=utf-8¬ice=0&platform=wk_v15.json&needNewCode=0&data=${encodeURIComponent(JSON.stringify({ + return id + ? `https://u.y.qq.com/cgi-bin/musicu.fcg?loginUin=0&hostUin=0&format=json&inCharset=utf-8&outCharset=utf-8¬ice=0&platform=wk_v15.json&needNewCode=0&data=${encodeURIComponent(JSON.stringify({ + comm: { cv: 1602, ct: 20 }, + playlist: { + method: 'get_category_content', + param: { + titleid: id, + caller: '0', + category_id: id, + size: this.limit_list, + page: page - 1, + use_page: 1, + }, + module: 'playlist.PlayListCategoryServer', + }, + }))}` + : `https://u.y.qq.com/cgi-bin/musicu.fcg?loginUin=0&hostUin=0&format=json&inCharset=utf-8&outCharset=utf-8¬ice=0&platform=wk_v15.json&needNewCode=0&data=${encodeURIComponent(JSON.stringify({ comm: { cv: 1602, ct: 20 }, playlist: { method: 'get_playlist_by_tag', diff --git a/src/renderer/utils/music/wy/comment.js b/src/renderer/utils/music/wy/comment.js index 0847a44c..5597b894 100644 --- a/src/renderer/utils/music/wy/comment.js +++ b/src/renderer/utils/music/wy/comment.js @@ -121,18 +121,20 @@ export default { } let replyData = item.beReplied && item.beReplied[0] - return replyData ? { - id: item.commentId, - rootId: replyData.beRepliedCommentId, - text: replyData.content ? replyData.content.split('\n') : '', - time: item.time, - timeStr: null, - userName: replyData.user.nickname, - avatar: replyData.user.avatarUrl, - userId: replyData.user.userId, - likedCount: null, - reply: [data], - } : data + return replyData + ? { + id: item.commentId, + rootId: replyData.beRepliedCommentId, + text: replyData.content ? replyData.content.split('\n') : '', + time: item.time, + timeStr: null, + userName: replyData.user.nickname, + avatar: replyData.user.avatarUrl, + userId: replyData.user.userId, + likedCount: null, + reply: [data], + } + : data }) }, } From 04be42a4d6a03a354e34892a85e27b54b34df4c2 Mon Sep 17 00:00:00 2001 From: lyswhut Date: Wed, 11 Aug 2021 10:22:15 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintrc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.eslintrc b/.eslintrc index aa750a50..1e8ebba0 100644 --- a/.eslintrc +++ b/.eslintrc @@ -17,7 +17,8 @@ "comma-dangle": [2, "always-multiline"], "standard/no-callback-literal": "off", "prefer-const": "off", - "no-labels": "off" + "no-labels": "off", + "node/no-callback-literal": "off" }, "settings": { "html/html-extensions": [".html", ".vue"] From e85709a34115ebc95bd7f57d213f4b3e5208eac0 Mon Sep 17 00:00:00 2001 From: lyswhut Date: Wed, 11 Aug 2021 11:57:41 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=A8=8D=E5=90=8E?= =?UTF-8?q?=E6=92=AD=E6=94=BE=E5=88=87=E6=AD=8C=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/store/modules/player.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/renderer/store/modules/player.js b/src/renderer/store/modules/player.js index 12fa73c5..72bc7d19 100644 --- a/src/renderer/store/modules/player.js +++ b/src/renderer/store/modules/player.js @@ -146,14 +146,14 @@ let prevListPlayIndex const getters = { list: state => state.listInfo.list, changePlay: satte => satte.changePlay, - playInfo(state, getters) { + playInfo(state) { if (state.playMusicInfo == null) return { listId: null, playIndex: -1, playListId: null, listPlayIndex: -1, isPlayList: false, musicInfo: null } const playListId = state.listInfo.id let listId = state.playMusicInfo.listId const isTempPlay = !!state.playMusicInfo.isTempPlay const isPlayList = listId === playListId let playIndex = -1 - let listPlayIndex = state.playIndex + let listPlayIndex = Math.min(state.playIndex, state.listInfo.list.length - 1) if (listId != '__temp__') { const currentSongmid = state.playMusicInfo.musicInfo.songmid || state.playMusicInfo.musicInfo.musicInfo.songmid From 21c3b3ab578452c7385f53b51f19875da24a24f4 Mon Sep 17 00:00:00 2001 From: lyswhut Date: Wed, 11 Aug 2021 13:28:51 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=8A=E4=B8=80?= =?UTF-8?q?=E6=9B=B2=E5=88=87=E6=8D=A2=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/store/modules/player.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/store/modules/player.js b/src/renderer/store/modules/player.js index 72bc7d19..55a1a7df 100644 --- a/src/renderer/store/modules/player.js +++ b/src/renderer/store/modules/player.js @@ -266,7 +266,7 @@ const actions = { if (state.playedList.length) { let currentSongmid if (state.playMusicInfo.isTempPlay) { - const musicInfo = playInfo.list[playInfo.listPlayIndex] + const musicInfo = currentList[playInfo.listPlayIndex] if (musicInfo) currentSongmid = musicInfo.songmid || musicInfo.musicInfo.songmid } else { currentSongmid = state.playMusicInfo.musicInfo.songmid || state.playMusicInfo.musicInfo.musicInfo.songmid From b0b0403d9aeafdca1445388162993b5f88d8dbb4 Mon Sep 17 00:00:00 2001 From: lyswhut Date: Wed, 11 Aug 2021 15:23:20 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FAQ.md | 117 ++++++++++++--------------------------------------------- 1 file changed, 24 insertions(+), 93 deletions(-) diff --git a/FAQ.md b/FAQ.md index 45a1091f..f07e97ca 100644 --- a/FAQ.md +++ b/FAQ.md @@ -64,6 +64,30 @@ 注:网易源的“我喜欢”歌单无法在未登录的情况下打开,所以你需要手动创建一个歌单后将“我喜欢”里的歌曲移动到该歌单打开 +## 更新已收藏的在线歌单 + +该功能仅对直接从歌单详情页点“收藏”按钮收藏的歌单有效,可右击已收藏的列表名从弹出的菜单中选择“更新”使用该功能, + +需要注意的是:这将会覆盖本地的目标列表,歌曲将被替换成最新的在线列表。 + + +## 同步功能的使用(实验性,首次使用前建议先备份一次列表) + +**注意:由于同步传输时的数据是明文传输,请在受信任的网络下使用此功能!**
+此功能需要配合移动端使用,PC端与移动端处在同一个局域网(路由器的网络)下时,可以多端实时同步歌曲列表,使用方法: + +1. 在PC端的设置-数据同步开启同步功能(这时如果出现安全软件、防火墙等提示网络连接弹窗时需要点击允许) +2. 在移动端的设置-同步-同步服务器地址输入PC端显示的同步服务器地址(如果显示可以多个,则输入与**移动端上显示的本机地址**最相似的那个),端口号与PC端的同步端口一致(**输入完毕后需要按一下键盘上的回车键使输入的内容生效**) +3. 输入完这两项后点击“启动同步” +4. 若连接成功,对于首次同步时,若两边的设备的列表不为空,则PC端会弹出选择列表同步方式的弹窗,同步方式的说明弹窗下面有介绍 + +对于连接同步服务失败的可能原因: + +- 此功能需要PC端与移动端都连接在同一个路由器下的网络才能使用 +- 路由器若开启了AP隔离,则此功能无法使用 +- 检查防火墙是否拦截了PC端的服务端口 + + ## 界面异常(界面显示不完整) ### Windows 7 下界面异常 @@ -78,99 +102,6 @@ 对于一些完全无法正常显示界面、开启了AERO后问题仍未解决的情况,请阅读下面的 **软件启动后,界面无法显示** 解决。 - -# lx-music-mobile 常见问题 - -在阅读本常见问题后,仍然无法解决你的问题,请提交issue或者加企鹅群`830125506`反馈(无事勿加,入群先看群公告),反馈时请**注明**已阅读常见问题! - -## 歌曲无法试听与下载 - -### 所有歌曲都提示 `请求异常😮,可以多试几次,若还是不行就换一首吧。。。` - -尝试更换网络,如切换到移动网络,若移动网络还是不行则尝试开关下手机的飞行模式后再试,
-若使用家庭网络的话,可尝试将光猫断电5分钟左右再通电联网后播放。 - -### 其他情况 - -尝试在在浏览器打开这个地址`http://ts.tempmusic.tk`,浏览器显示404是正常的,如果不是404那就证明所在网络无法访问接口服务器,对于此类情况请尝试切换其他网络。 - -### 通用解决方法 - -尝试按以下顺序解决: - -1. 尝试更新到最新版本 -2. 尝试切换其他歌曲(或直接搜索该歌曲),若全部歌曲都无法试听与下载则进行下一步 -3. 尝试到 设置-音乐来源 切换到其他接口 -4. 尝试切换网络,比如用手机开热点(所有歌曲都提示请求异常时可通过此方法解决,或等一两天后再试) -5. 若还不行请到这个链接查看详情: -6. 若没有在第5条链接中的第一条评论中看到接口无法使用的说明,则应该是你网络无法访问接口服务器的问题,如果接口有问题我会在那里说明。 - -想要知道是不是自己网络的问题可以看看`http://ts.tempmusic.tk`能不能在浏览器打开,浏览器显示404是正常的,如果不是404那就证明所在网络无法访问接口服务器。 -若网页无法打开或打来不是404,则应该是DNS的问题,可以尝试以下办法: - -1. 将DNS改成自动获取试试 -2. 手动把DNS改一下,不要用360的DNS,可以把DNS改成`114.114.114.114`、`8.8.8.8` - -## 列表多选 - -长按列表将会进入多选模式。 - -- 例子一:想要选中1-5项,进入多选模式后,取消所有选中的内容,切换到区间,点击第一项,再点击第五项即可完成选择; -- 例子二:想要选中1项与第3项,进入多选模式后,点击第一项,再点击第三项即可完成选择; -- 例子三:想要选中当前列表的全部内容,进入多选模式后,点击全选即可完成选择(注:由于**在线列表**使用分页加载,全选只会选择目前已加载的内容,若要完整选择整个在线列表的内容则需要往下滑动将列表加载完毕再进行全选)。 - -注:选完后可用歌曲列表三个点的菜单操作已选的内容 - -## 无法打开外部歌单 - -不支持垮源打开歌单,请**确认**你需要打开的歌单平台是否与软件标签所写的**歌单源**对应(不一样的话请通过右上角切换歌单源);
-对于分享出来的歌单,若打开失败,可尝试先在浏览器中打开后,再从浏览器地址栏复制URL地址到软件打开;
-或者如果你知道歌单 id 也可以直接输入歌单 id 打开。
- -注:网易源的“我喜欢”歌单无法在未登录的情况下打开,所以你需要手动创建一个歌单后将“我喜欢”里的歌曲移动到该歌单打开 - -## 播放整个歌单或排行榜 - -播放在线列表内的歌曲需要将它们都添加到我的列表才能播放,你可以全选列表内的歌曲然后添加到现有列表或者新创建的列表,然后去播放该列表内的歌曲。 - -## 无法打开外部歌单 - -不支持垮源打开歌单,请**确认**你需要打开的歌单平台是否与软件标签所写的**歌单源**对应(不一样的话请通过右上角切换歌单源);
-对于分享出来的歌单,若打开失败,可尝试先在浏览器中打开后,再从浏览器地址栏复制URL地址到软件打开;
-或者如果你知道歌单 id 也可以直接输入歌单 id 打开。
- - -## 同步功能的使用(实验性,首次使用前建议先备份一次列表) - -**注意:由于同步传输时的数据是明文传输,请在受信任的网络下使用此功能!**
-此功能需要配合PC端使用,移动端与PC端处在同一个局域网(路由器的网络)下时,可以多端实时同步歌曲列表,使用方法: - -1. 在PC端的设置-数据同步开启同步功能(这时如果出现安全软件、防火墙等提示网络连接弹窗时需要点击允许) -2. 在移动端的设置-同步-同步服务器地址输入PC端显示的同步服务器地址(如果显示可以多个,则输入与**移动端上显示的本机地址**最相似的那个),端口号与PC端的同步端口一致(**输入完毕后需要按一下键盘上的回车键使输入的内容生效**) -3. 输入完这两项后点击“启动同步” -4. 若连接成功,对于首次同步时,若两边的设备的列表不为空,则PC端会弹出选择列表同步方式的弹窗,同步方式的说明弹窗下面有介绍 - -对于连接同步服务失败的可能原因: - -- 此功能需要PC端与移动端都连接在同一个路由器下的网络才能使用 -- 路由器若开启了AP隔离,则此功能无法使用 -- 检查防火墙是否拦截了PC端的服务端口 - -## 更新已收藏的在线歌单 - -该功能仅对直接从歌单详情页点“收藏”按钮收藏的歌单有效,可右击已收藏的列表名从弹出的菜单中选择“更新”使用该功能, - -需要注意的是:这将会覆盖本地的目标列表,歌曲将被替换成最新的在线列表。 - -## 杀毒软件提示有病毒或恶意行为 - -本人只能保证我写的代码不包含任何**恶意代码**、**收集用户信息**的行为,并且软件代码已开源,请自行查阅,软件安装包也是由CI拉取源代码构建,构建日志:[GitHub Actions](https://github.com/lyswhut/lx-music-mobile/actions)
-尽管如此,但这不意味着软件是100%安全的,由于软件使用了第三方依赖,当这些依赖存在恶意行为时([供应链攻击](https://docs.microsoft.com/zh-cn/windows/security/threat-protection/intelligence/supply-chain-malware)),软件也将会受到牵连,所以我只能尽量选择使用较多人用、信任度较高的依赖。
-当然,以上说明建立的前提是在你所用的安装包是从**本项目主页上写的链接**下载的,或者有相关能力者还可以下载源代码自己构建安装包。 - -最后,若出现杀毒软件报毒、存在恶意行为,请自行判断选择是否继续使用本软件! - - ### Linux 下界面异常 根据Electron里issue的[解决方案](https://github.com/electron/electron/issues/2170#issuecomment-736223269),
From ff53900ea3c3e2a5e6a488c2a42b7536d90772e1 Mon Sep 17 00:00:00 2001 From: lyswhut Date: Wed, 11 Aug 2021 16:39:33 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=99=A8=E5=90=AF=E5=8A=A8=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=85=B3=E9=97=AD=E5=90=8C=E6=AD=A5=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E4=B8=8D=E4=BC=9A=E6=B8=85=E7=A9=BA=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- publish/changeLog.md | 2 ++ src/main/modules/sync/server/server.js | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/publish/changeLog.md b/publish/changeLog.md index f7a35d89..00e049cc 100644 --- a/publish/changeLog.md +++ b/publish/changeLog.md @@ -2,3 +2,5 @@ - 修复播放下载列表的歌曲时切歌的问题 - 修复播放下载列表的歌曲时歌词无法显示的问题 +- 修复下载列表稍后播放功能无效的问题 +- 修复同步服务器启动失败时,关闭同步服务不会清空失败信息的问题 diff --git a/src/main/modules/sync/server/server.js b/src/main/modules/sync/server/server.js index bcb521ee..aed2d2c3 100644 --- a/src/main/modules/sync/server/server.js +++ b/src/main/modules/sync/server/server.js @@ -120,7 +120,14 @@ const handleStopServer = async() => { } exports.stopServer = async() => { - if (!status.status) return + if (!status.status) { + status.status = false + status.message = '' + status.address = [] + status.code = '' + global.lx_event.sync.status(status) + return + } console.log('stoping sync server...') return handleStopServer().then(() => { console.log('sync server stoped') From 5b113c5c22825264b3f64c4896437d370931a194 Mon Sep 17 00:00:00 2001 From: lyswhut Date: Wed, 11 Aug 2021 17:06:18 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E5=8F=91=E5=B8=83v1.12.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 9 +++++++++ package.json | 2 +- publish/version.json | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd960b24..481edabd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,15 @@ Project versioning adheres to [Semantic Versioning](http://semver.org/). Commit convention is based on [Conventional Commits](http://conventionalcommits.org). Change log format is based on [Keep a Changelog](http://keepachangelog.com/). +## [1.12.2](https://github.com/lyswhut/lx-music-desktop/compare/v1.12.1...v1.12.2) - 2021-08-11 + +### 修复 + +- 修复播放下载列表的歌曲时切歌的问题 +- 修复播放下载列表的歌曲时歌词无法显示的问题 +- 修复下载列表稍后播放功能无效的问题 +- 修复同步服务器启动失败时,关闭同步服务不会清空失败信息的问题 + ## [1.12.1](https://github.com/lyswhut/lx-music-desktop/compare/v1.12.0...v1.12.1) - 2021-08-08 ### 修复 diff --git a/package.json b/package.json index e14ea917..e52c9dcf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lx-music-desktop", - "version": "1.12.1", + "version": "1.12.2", "description": "一个免费的音乐查找助手", "main": "./dist/electron/main.js", "productName": "lx-music-desktop", diff --git a/publish/version.json b/publish/version.json index e3b6aeb4..66c5224b 100644 --- a/publish/version.json +++ b/publish/version.json @@ -1 +1 @@ -{"version":"1.12.1","desc":"修复\n- 修复随机播放下无法切歌的问题","history":[{"version":"1.12.0","desc":"新增\n- 新增局域网同步功能(实验性,首次使用前建议先备份一次列表),此功能需要配合PC端使用,移动端与PC端处在同一个局域网(路由器的网络)下时,可以多端实时同步歌曲列表,使用问题请看\"常见问题\"。\n\n优化\n- 添加播放器对系统媒体控制与显示的兼容处理,现在在windows下的锁屏界面可以正确显示当前播放的音乐信息及切换歌曲了\n\n修复\n- 修复导入kg歌单最多只能加载100、500首歌曲的问题。注:现在可以加载1000+首歌曲的歌单,但出于未知原因会导致部分歌曲无法加载(可能是无版权导致的),目前酷狗码仍然最多只能加载500首歌\n- 修复某些情况下所显示的歌词、封面图片与当前正在播放的歌曲不一致的问题"},{"version":"1.11.0","desc":"新增\n- 添加 win arm64 架构的安装包构建\n- 新增“添加歌曲到列表时的位置”设置,可选项为列表的“顶部”与“底部”\n\n优化\n- 优化网络请求,尝试去解决无法连接服务器的问题\n- 优化mg源打开歌单的链接兼容\n\n修复\n- 修复mg源搜索失效的问题\n\n移除\n- 因wy源的歌单列表已没有“最新”排序的选项,所以现跟随移除wy源歌单列表按“最新”排序的按钮\n\n变更\n- 添加歌曲到列表时从原来的底部改为顶部,若你想要将你的列表歌曲顺序反转以适应这一变更,可先按住`shift`键的情况下点击列表的最后一首歌,然后再点击列表的第一首歌,完成倒序选中,最后随便右击列表的任意一首歌,在弹出的菜单中选择调整顺序,在弹出框输入1后确定即可反转列表。\n若你想要恢复原来的行为则可以去更改“添加歌曲到列表时的位置”设置项。\n\n其他\n- 更新electron到v13.1.7"},{"version":"1.10.2","desc":"修复\n- 修复企鹅音乐搜索歌曲没有结果的问题"},{"version":"1.10.1","desc":"修复\n- 修复企鹅音乐搜索歌曲没有结果的问题\n- 修复播放在空的歌单列表点击播放全部时报错的问题"},{"version":"1.10.0","desc":"lx music移动端已经发布了,使用习惯仍跟桌面版一样,不过功能、界面仍比较简单,有兴趣的可以去体检一下,项目地址:\nhttps://github.com/lyswhut/lx-music-mobile#readme\n\n新增\n- 排行榜界面添加播放、收藏整个排行榜功能,可以右击排行榜名字后,在弹出的右键菜单中使用。注:收藏、播放存在分页的排行榜时需等待操作完成后才能切换排行榜,不然会导致操作中断。\n- 新增Mac arm64位dmg包的构建\n\n修复\n- 修复全局快捷键对桌面歌词无效的问题\n- 修复快捷键设置框内的提示问题\n- 修复在当前正常播放的列表中使用稍后播放功能时,播放完后稍后播放的歌曲后不会恢复原来播放位置播放的问题\n- 修复kw部分歌单无法打开的问题\n- 修复wy源的歌曲音质匹配问题\n- 修复mg源歌单标签、排行榜歌曲列表无法加载的问题\n- 修复了一个歌曲下载失败时不会跳过任务的问题\n\n其他\n- 更新 Electron 到 12.0.8"},{"version":"1.9.0","desc":"新增\n- 新增启动参数`-dhmkh`,此参数将禁用Chromium的Hardware Media Key Handling特性,用于解决漫步者部分型号耳机与本程序冲突导致耳机意外关机的问题\n- 新增Windows arm64位免安装版的构建\n- 新增黑色皮肤“黑灯瞎火”,有关于皮肤配色的建议欢迎反馈\n- 新增自动换源下载功能,默认关闭,当无法从歌曲的原始源下载时,将尝试切换到其他源下载,注:此功能不100%保证换源后的歌曲版本与原版一致\n\n优化\n- 程序启动时对数据文件做读取校验,数据出现损坏时自动备份损坏的数据,若出现数据读取错误的弹窗并出现我的列表丢失时可到GitHub或加群反馈\n- 当设置-代理启用,但主机地址为空的时,将不再使用代理配置进行网络连接,并且在离开设置界面时自动禁用代理\n- 优化歌曲自动换源匹配\n- 分离歌词与歌曲列表信息的保存,以减小列表列表文件损坏的几率\n- 兼容打开咪咕移动端分享的歌单链接,添加打开歌单的信息显示\n\n修复\n- 修复备份与恢复功能在恢复数据时某些设置不立即生效的问题\n- 修正设置页“搜索设置”部分内容的缩进显示问题\n- 修复正在播放“稍后播放”的歌曲时,对“稍后播放”前播放的列表进行添加、删除操作会导致切歌的问题"},{"version":"1.8.2","desc":"### 修复\r\n\r\n- 修复歌曲ID存储变更导致酷狗图片获取失败的问题\n- 修复收藏的在线列表id迁移保存出错的问题"},{"version":"1.8.1","desc":"修复\n- 修复歌词翻译的主题颜色适配问题"},{"version":"1.8.0","desc":"新增\n- 新增设置-其他-列表缓存信息清理功能,注:此功能一般情况下不要使用\n- 新增启动参数`-play`,可以在启动软件时播放指定歌单,使用方法看Readme.md的\"启动参数\"部分\n- 新增逐字歌词播放,默认开启,可到设置界面关闭,注:本功能目前仅对酷狗源的歌曲有效\n- 新增自定义源功能,源编写规则可以去常见问题查看\n\n优化\n- 允许播放除了搜索列表以外的所有歌曲,即原来没有播放按钮或者灰色的歌曲都可以去尝试点击播放。注:该功能的原理是尝试自动切换到其他源播放,所以不一定会播放成功,特别是对于那些独家的资源\n- 优化单首歌曲的“添加到列表”弹窗歌曲列表状态的显示;现在在收藏单首歌曲时,若列表存在本歌曲则列表名字将变成灰色不可点击状态。总的来说,在添加单首歌曲时若列表名是灰色,则证明当前歌曲已在那个列表中\n- 将歌词翻译放到原文的下方,同时新增当前播放翻译的高亮功能\n\n移除\n- 移除虾米源。注:虽然已移除该源,但仍可尝试去播放之前添加的歌曲,虽然不一定会成功\n\n修复\n- 修复音乐搜索列表的稍后播放功能无效的问题\n- 修复搜索列表双击不支持播放的源时会导致切歌的问题\n- 修复歌单列表加载失败时无法进入歌单打开界面的问题\n- 修复mg源歌单列表无法加载的问题\n- 修复kg跳转到官方歌曲详情页的歌曲无法播放的问题\n- 修复我的列表的歌曲添加到其他列表时不排除当前列表的问题\n- 修复在下载列表右击未下载完成的歌曲弹出的右击菜单中没有开始下载选项的问题\n\n变更\n- 歌词翻译显示功能修改为默认关闭,注:此变更仅影响首次安装软件的用户\n\n其他\n- 更新electron到v9.4.4"},{"version":"1.7.1","desc":"修复\n- 修复非透明模式下右侧滚动条无法拖动的问题\n- 修复MAC下xm音乐滑块验证问题"},{"version":"1.7.0","desc":"

新增

\n
    \n
  • 搜索界面新增搜索状态的提示
  • \n
  • 新增“稍后播放”功能,可在歌曲列表右键菜单使用
  • \n
  • 新增“记住播放进度”功能的控制,该功能默认不再开启,可到播放设置-记住播放进度开启
  • \n
\n

优化

\n
    \n
  • 优化播放歌曲换源匹配
  • \n
  • 优化设置界面设置项的展示
  • \n
\n

修复

\n
    \n
  • 修复快速切换歌曲时, 会出现播放的歌曲和界面展示的歌曲不一致的问题
  • \n
  • 修复了一个由版本更新日志显示导致的潜在远程代码执行攻击漏洞,该漏洞影响v1.6.1及之前的所有版本,请务必更新到最新版本
  • \n
  • 修复xm搜索源验证问题
  • \n
\n

其他

\n
    \n
  • 更新electron到9.4.2
  • \n
\n"},{"version":"1.6.1","desc":"

优化

\n
    \n
  • 改进自动换源时的歌曲匹配
  • \n
\n

修复

\n
    \n
  • 修复某些情况下自动换源的时间过长时会终止换源自动切歌的问题
  • \n
  • 修复自动换源导致的搜索列表每页变成10条数据的问题
  • \n
  • 降级electron到9.3.3修复部分系统没有声音的问题
  • \n
\n"},{"version":"1.6.0","desc":"

新增

\n
    \n
  • 我的列表右键菜单新增列表排序功能,可调整单曲、多选后的歌曲的顺序。注意:多选排序还将会按照选中歌曲时的顺序排序
  • \n
  • 添加鼠标提示的自动关闭功能,鼠标长时间(目前是10秒)不动时鼠标提示将会自动关闭
  • \n
  • 添加鼠标指向歌曲封面的提示(对于进度条左边的歌曲封面,你可能不知道的操作->右击在“我的列表”定位当前播放的歌曲)
  • \n
  • 隐藏播放详情页按钮添加快速隐藏详情页提示(你可能不知道的操作->在播放详情页内的任意非窗口可拖动区域右键双击可以快速隐藏详情页)
  • \n
  • 添加桌面歌词字体、透明度调整按钮微调提示(你可能不知道的操作->对于字体、透明度可右击微调)
  • \n
  • 我的列表右键菜单添加搜索当前歌曲功能
  • \n
  • 新增-dha参数,添加此启动参数将禁用硬件加速启动(Disable Hardware Acceleration),窗口显示有问题时可以尝试添加此参数启动,Linux系统的界面显示有问题时可尝试添加此参数启动,若不行可尝试添加-dt参数启动
  • \n
  • 新增播放自动换源功能~
  • \n
\n

变更

\n
    \n
  • -nt参数更名为-dt(Disable Transparent),目前原来的-nt参数仍然可用,但将在后续的版本中移除
  • \n
\n

修复

\n
    \n
  • 修复恢复上次播放的歌曲时在随机播放模式下不把恢复播放的歌曲放入已播放队列的问题(该问题会导致随机模式下会导致未播放完整个列表前就会再次随机到该歌曲,以及无法通过上一曲切回该歌曲)
  • \n
  • 修复音乐嵌入的封面在 Mac 系统无法显示的问题
  • \n
  • 修复-dt(原来的-nt)启动参数不真正生效的问题
  • \n
\n"},{"version":"1.5.0","desc":"

新增

\n
    \n
  • 直接从歌单详情收藏的列表新增同步功能。注意:这将会覆盖本地的目标列表,歌曲将被替换成最新的在线列表
  • \n
\n

优化

\n
    \n
  • 优化软件启动时恢复上一次播放的歌曲进度功能
  • \n
\n

修复

\n
    \n
  • 修复MAC平台上下载歌曲封面嵌入无法显示的问题
  • \n
  • 修复MAC平台首次运行软件最小化、关闭控制按钮默认在右边的问题
  • \n
  • 修复酷狗源的某些歌曲没有专辑字段导致的列表加载失败问题
  • \n
  • 修复某些酷狗源歌单链接无法打开的问题
  • \n
\n"},{"version":"1.4.1","desc":"

修复

\n
    \n
  • 修复有歌词翻译与无歌词的音乐间切换会导致歌词翻译残留显示的问题
  • \n
  • 修复歌曲URL过期时,等待刷新URL的自动切换歌曲时间间隔太短的问题
  • \n
  • 修复某些电脑上的某些歌曲没有声音的问题(升级Electron9.3.4导致的,现降级到9.3.3)
  • \n
\n"},{"version":"1.4.0","desc":"

新增

\n
    \n
  • 托盘菜单新增显示、隐藏主界面选项,为Linux、MAC版添加托盘菜单
  • \n
  • 新增播放进度信息保存
  • \n
\n

优化

\n
    \n
  • 移除kg源的歌词文件开头的空白字符串
  • \n
\n

修复

\n
    \n
  • 修复专辑图片无法嵌入的问题
  • \n
  • 修复播放状态栏切换“上一首”歌曲按钮提示错误的问题
  • \n
  • 修复移动单首歌曲时,如果目标列表存在该歌曲,会导致将源列表与目标列表里的目标歌曲移除
  • \n
  • 修复kg源歌曲信息带有单引号等特殊字符被转义的问题
  • \n
\n"},{"version":"1.3.0","desc":"

新增

\n
    \n
  • 播放详情页新增歌曲评论加载显示(某些平台暂不支持显示子评论)
  • \n
\n

优化

\n
    \n
  • 修改播放详情页的歌曲图片的显示效果
  • \n
\n

修复

\n
    \n
  • 修复小芸源音乐搜索结果最多只有20条搜索结果的问题
  • \n
\n"},{"version":"1.2.2","desc":"

修复

\n
    \n
  • 降级 Electron 到 9.x.x 版本修复 Linux 版桌面歌词窗口变白的问题
  • \n
\n"},{"version":"1.2.1","desc":"

优化

\n
    \n
  • Linux版的软件界面默认使用圆角与阴影,顺便修复了桌面歌词窗口变白的问题,已在Ubuntu 18.10测试正常,若显示异常可尝试添加-nt参数启动
  • \n
\n

修复

\n
    \n
  • 修复聚合搜索的分页问题
  • \n
  • 修复代理输入框输入的内容不生效的问题
  • \n
\n"},{"version":"1.2.0","desc":"

提前祝大家中秋&国庆快乐~

\n

新增

\n
    \n
  • 播放控制栏开启/关闭桌面歌词按钮 新增右击按钮时锁定/解锁桌面歌词功能
  • \n
\n

优化

\n
    \n
  • 优化我的列表滚动条位置的保存逻辑
  • \n
  • 更新设置-备份与恢复功能的描述
  • \n
  • 优化软件内鼠标悬停的提示界面
  • \n
\n

修复

\n
    \n
  • 修复桌面歌词窗口不允许拖出桌面之外的位置计算偏移Bug
  • \n
  • 修复网易云KTV嗨榜无法加载的问题
  • \n
  • 修复初始化搜索历史列表功能
  • \n
  • 修复重启软件后试听列表与收藏列表无法恢复上次的滚动位置的问题
  • \n
  • 修复歌曲封面无法嵌入的Bug
  • \n
  • 修复酷狗歌词格式问题
  • \n
  • 修复关闭切换动画时从搜索候选列表点击内容无效的问题
  • \n
\n

其他

\n
    \n
  • 更新 Electron 到 v10.1.3
  • \n
\n"},{"version":"1.1.1","desc":"

修复

\n
    \n
  • 修复某些情况下桌面歌词不会播放的问题
  • \n
\n"},{"version":"1.1.0","desc":"

新增

\n
    \n
  • 在歌单详情界面新增播放当前歌单按钮、收藏歌单按钮,注:播放歌单不会将歌曲添加到试听列表
  • \n
  • 新增不允许将歌词窗口拖出主屏幕之外的设置项,默认开启,在连接多个屏幕时想要拖动到其他屏幕时可关闭此设置
  • \n
  • 新增大部分平台的歌词翻译,感谢 @InoriHimea 提供的krc解码算法
  • \n
  • 新增显示歌词翻译设置,默认开启,仅支持某些平台,注:无论该设置是否开启,嵌入或下载歌词时都不会带上翻译
  • \n
  • 新增显示切换动画设置,默认开启,关闭时将基本禁用软件内的所有切换动画
  • \n
  • 播放状态栏新增桌面歌词的开关、播放模式的切换、歌曲的收藏按钮,Thanks to @andylow for the icon!
  • \n
\n

修复

\n
    \n
  • 修复使用全局快捷键还原窗口时,窗口没有获取焦点的问题
  • \n
  • 修复我的列表搜索对最后一个字符的匹配问题
  • \n
  • 修复窗口在较小模式下最小化/关闭按钮不居中的问题
  • \n
\n

优化

\n
    \n
  • 桌面歌词当前播放行改为上下居中
  • \n
  • 为区分静音状态,静音时音量条会变淡,调整音量条时将会取消静音
  • \n
  • 优化随机播放机制,现在通过下一曲切换歌曲时,直到播放完整个列表之前将不会再随机到之前播放过的歌曲,并且通过上一曲可以正确播放上一首歌曲
  • \n
  • 当下载目录没有写入权限时将显示没有写入权限的提示
  • \n
\n

移除

\n
    \n
  • 移除默认的全局声音媒体快捷键接管
  • \n
  • 移除对百度音乐的支持,因百度音乐原有的大部分API失效,而且该平台相对其他平台来说音乐太少了,可有可无,以后再看情况恢复
  • \n
\n

其他

\n
    \n
  • 更新electron到 10.1.2
  • \n
\n"},{"version":"1.0.1","desc":"

优化

\n
    \n
  • 对我的列表歌曲搜索结果进行相似度排序
  • \n
\n

修复

\n
    \n
  • 修复在 Windows 系统下缩放比非100%时,拖动桌面歌词会自动加大桌面歌词窗口的问题
  • \n
\n"},{"version":"1.0.0","desc":"

新增

\n
    \n
  • 新增rpmpacman包的构建(未测试可用性)
  • \n
  • 新增因系统音频设备列表改变导致的当前音频输出设备改变时是否暂停播放的设置,默认关闭
  • \n
  • 新增歌曲列表右击菜单
  • \n
  • 新增自定义列表,创建列表的按钮在表头#左侧,鼠标移上去才会显示;编辑列表名字时,按ESC键可快速取消编辑,按回车键或使输入框失去焦点即可保存列表名字,右击列表可编辑已创建的列表,“试听列表”与“我的收藏”两个列表固定不可编辑
  • \n
  • 改变排行榜布局,新增更多排行榜
  • \n
  • 新增我的列表右键菜单复制歌曲名选项
  • \n
  • 新增桌面歌词,默认关闭,可到设置或者托盘菜单开启(建议使用全局快捷键控制);调整字体大小、透明度时,鼠标左击按钮正常调整,右击微调;Windows 7未开启Aero效果时桌面歌词会有问题,详情看常见问题解决;Linux版桌面歌词有问题,以后再尝试优化;
  • \n
  • 新增“清热板蓝”皮肤
  • \n
  • 新增软件最小化、关闭按钮位置设置,MAC版默认为左边,非MAC为右边,不想用默认的可到设置修改
  • \n
  • 新增快捷键设置,软件内快捷键默认开启,全局快捷键默认关闭(注:若想开启蓝牙耳机切歌需开启全局快捷键,当快捷键被中划线划掉时,表示当前快捷键被其他程序占用导致注册失败)
  • \n
  • 新增首次运行时自动根据当前系统使用的语言设置软件显示的语言
  • \n
  • 新增歌词区域的触摸板、鼠标滚轮等对歌词滚动的支持
  • \n
  • 为了方便支持正版资源,歌曲列表右击菜单新增跳转到当前歌曲源官方详情页菜单(注意:在本版本之前添加的虾米源歌曲无法跳转详情页,需要移除后重新搜索添加)
  • \n
  • 新增我的列表内歌曲搜索,在我的列表按ctrl+f将显示搜索框;鼠标滑过或键盘上下方向键选择搜索结果;鼠标点击或按回车键定位选中的歌曲;按ctrl键的情况下鼠标点击或按回车键确认定位歌曲时,将会在定位歌曲结束后播放该歌曲(搜索框激活的情况下按esc可快速清空搜索框/关闭搜索框)
  • \n
  • 新增托盘图标样式设置,可到设置-其他切换
  • \n
  • 新增开关下载功能控制,默认关闭,可到设置-下载设置开启
  • \n
  • 新增将歌词嵌入音频文件中,默认关闭,可到设置-下载设置开启
  • \n
  • 新增当列表文件损坏时对损坏文件的备份,若出现该情况可打开%HOMEPATH%\\AppData\\Roaming\\lx-music-desktop找到playList.json.bak尝试手动修复列表文件,列表文件以JSON格式存储
  • \n
  • 新增在歌单详情列表按退格(Backspace)键可快速返回歌单列表
  • \n
\n

优化

\n
    \n
  • 改进歌曲切换时的歌词滚动效果
  • \n
  • 优化批量添加、删除播放列表的歌曲操作逻辑,大幅提升批量添加、删除列表歌曲的流畅度
  • \n
  • 改进歌单列表展示
  • \n
  • 改进聚合搜索的搜索结果排序,修复当某些源搜索失败时导致其他源无法显示结果的问题,现在聚合搜索已达到最初的理想效果,为了使排序更精确,建议同时输入 歌曲名 歌手名 搜索(歌曲名在前歌手名在后),欢迎体验~!
  • \n
  • 压缩备份数据文件大小
  • \n
\n

修复

\n
    \n
  • 修复按住Ctrl等键触发多选机制时不松开按键的情况下切换到其他窗口后再松开按键,这时切回软件不按按键都处在多选模式的问题
  • \n
  • 修复Linux版开启托盘无法退出的问题
  • \n
  • 修复某些情况下可能导致的音源输出问题
  • \n
  • 修复某些情况下无法开始下载任务的问题
  • \n
  • 修复 tab 组件边框溢出问题
  • \n
  • 修复错误更新试听列表外的歌曲时间的问题
  • \n
  • 修复网易音乐源歌单、排行榜歌曲列表加载显示的数量与实际不对的问题,同时支持加载大于1000首歌的歌单(歌曲大于1000首会分页),注意:目前软件一下子显示太多歌曲时会卡顿,不建议在同一列表内添加太多歌曲
  • \n
  • 修复歌曲图片链接没有扩展名的情况下无法嵌入图片的问题
  • \n
  • 修复无法检测最新版本时弹窗提示的显示
  • \n
  • 修复某些情况下从托盘还原窗口后无法操作的问题
  • \n
  • 修复Linux下无法ctrl+a全选的问题
  • \n
  • 修复主题背景图片覆盖不全的问题
  • \n
  • 修复聚合搜索音源标签的皮肤配色问题
  • \n
\n

更变

\n
    \n
  • 修改设置-列表-是否显示歌曲源的默认设置为选中(该变更不影响之前的设置)
  • \n
  • 移除浮动按钮,现在在多选完成后可鼠标右击随意一项在弹出的右键菜单中进行原来悬浮按钮的操作
  • \n
  • 为了避免出现误会,现在下载弹窗中不可用的音质将直接隐藏
  • \n
  • 更改初始设置的搜索设置为聚合搜索(该变更不影响之前的设置)
  • \n
\n

其他

\n
    \n
  • 更新 Electron 到 9.1.1
  • \n
\n"},{"version":"0.18.2","desc":"

修复

\n
    \n
  • 修复开启托盘时,可能导致无法自动更新的问题
  • \n
\n"},{"version":"0.18.1","desc":"

优化

\n
    \n
  • win下的托盘图标使用更大的图片
  • \n
  • 加长软件协议的强制停留时间
  • \n
\n

修复

\n
    \n
  • 修复导入设置某些设置未立即生效的问题
  • \n
\n"},{"version":"0.18.0","desc":"

新增

\n
    \n
  • 新增FLAC格式音乐标签信息写入与封面嵌入(因128k以外的音质已失效,目前该功能用不上了)
  • \n
  • 添加软件启动时是否自动聚焦搜索框的设置
  • \n
  • 新增托盘设置,默认关闭,可到设置开启,感谢 @LasyIsLazy 提交的PR
  • \n
  • 新增打开酷狗源用户歌单
  • \n
  • 新增使用协议
  • \n
  • 新增虾米音源
  • \n
  • 新增新皮肤“粉妆玉琢”、“青出于黑”,可去体验下~
  • \n
  • 新增“超大”、“巨大”窗口尺寸
  • \n
  • 新增播放详情页(退出详情页可点击右上角退出按钮或者在播放详情页任意地方鼠标快速右击两次
  • \n
\n

优化

\n
    \n
  • 略微加深音量条底色
  • \n
  • 优化其他界面细节
  • \n
  • 优化英语翻译,感谢 @CPCer
  • \n
  • 优化程序的流畅度
  • \n
\n

更变

\n
    \n
  • 下载列表的歌曲下载、播放将随设置中的保存路径改变而改变,不再固定指向其初始位置
  • \n
  • 移除列表多选框,现在多选需要键盘配合,想要多选前需按下ShiftCtrl键然后再鼠标点击想要选中的内容即可触发多选机制,其中Shift键用于连续选择,Ctrl键用于不连续选择,Ctrl+a用于快速全选。例子一:想要选中1-5项,则先按下Shift键后,鼠标点击第一项,再点击第五项即可完成选择;例子二:想要选中1项与第3项,则先按下Ctrl键后,鼠标点击第一项,再点击第三项即可完成选择;例子三:想要选中当前列表的全部内容,键盘先按下Ctrl键不放,然后按a键,即可完成选择。用ShiftCtrl选择时,鼠标点击未选中的内容会将其选中,点击已选择的内容会将其取消选择,若想全部取消选择,在不按ShiftAlt键的情况下,随意点击列表里的一项内容即可全部取消选择。(P.S:Ctrl键对应Mac OS上的Command键)
  • \n
  • 现在进度条的封面图左击改为打开播放详情页,在列表定位歌曲改为右击
  • \n
\n

修复

\n
    \n
  • 修复网易源某些歌曲提示没有可播放的音质的问题
  • \n
  • 修复下载管理刷新URL失败时不标记任务下载失败的问题
  • \n
  • 修复列表导出的文字描述,感谢 @CPCer
  • \n
  • 修复歌曲切换方式无法取消勾选的问题
  • \n
  • 修复打开歌单详情的情况下切到其他界面再切回来报错的问题
  • \n
  • 修正播放列表浮动按钮错误的文字提示
  • \n
\n

移除

\n
    \n
  • 因128k以外的音质失效,So 禁止所有128k外的音质下载
  • \n
\n

其他

\n

更新 Electron 到 8.2.5

\n"},{"version":"0.17.0","desc":"

新增

\n
    \n
  • 新增多语言设置,目前软件内置了简体中文、繁体中文、英语三种语言,欢迎提交PR翻译更多语言!
  • \n
  • 新增无法打开外部歌单FAQ
  • \n
  • 新增启动参数search,使用例子:.\\lx-music-desktop.exe -search="突然的自我 - 伍佰"
  • \n
  • 新增音频输出设置
  • \n
  • 新增软件内的包括字体在内的界面内容大小调整,现在当窗口大小切换到“较小/大/较大”时,软件内的元素将会适当减小或加大,窗口大小的“小”与“中”内的元素将保持之前的大小暂不做改变
  • \n
  • 新增音源别名,默认将显示别名,想要显示回原名可到设置切换(免责声明:别名仅是本软件用于描述各音源的标签,其名字归版权方所有)
  • \n
  • 新增发现新版本更新失败弹窗的忽略提醒按钮,忽略提醒后,以后同一个版本再失败时将不会弹窗提醒,但仍可到设置-版本更新手动点开更新弹窗查看或恢复提醒
  • \n
  • 新增热搜词,默认关闭,可到设置开启
  • \n
  • 新增历史搜索记录,默认关闭,可到设置开启(右击单个历史记录标签可移除所点击的记录)
  • \n
\n

优化

\n
    \n
  • 优化月里嫦娥皮肤侧栏鼠标悬浮颜色
  • \n
  • 优化播放进度条的动画效果
  • \n
  • 现在添加下载任务时,后面添加的任务会在列表顶部插入
  • \n
  • 优化歌单打开机制,现在歌单加载失败时会提示加载失败了,并且支持直接打开企鹅、酷我手机分享出来的歌单了
  • \n
  • 优化右上角最小化/关闭按钮布局
  • \n
\n

修复

\n
    \n
  • 修复歌单详情处于加载状态时无法返回的问题
  • \n
  • 修复鼠标右击复制列表内容时会复制音质标签的问题
  • \n
  • 修复0.6.2及以前的版本导出的“所有数据”内的歌曲列表无法导入的问题
  • \n
  • 修复下载列表在某些情况下无法取消全选的问题
  • \n
\n

其他

\n
    \n
  • 更新Electron到 8.1.1
  • \n
\n"},{"version":"0.16.0","desc":"

新增

\n
    \n
  • 允许选中列表内歌曲名、歌手名、专辑名内的文字,选中后可使用键盘快捷键进行复制
  • \n
  • 新增在列表可选内容区域鼠标右击时自动复制列表已选文字的功能
  • \n
  • 新增在搜索框鼠标右击时自动粘贴剪贴板的文本到搜索框中
  • \n
  • 任务下载失败时将显示搜索按钮,方便在其他源搜索该歌曲
  • \n
\n

优化

\n
    \n
  • 优化木叶之村主题翻页器背景颜色
  • \n
  • 优化各个主题音质标签颜色
  • \n
  • 优化其他一些界面细节及用户交互效果
  • \n
\n

修复

\n
    \n
  • 修复启用透明窗口鼠标不穿透的bug
  • \n
  • 修复大窗口时设置的音乐来源选项不换行的问题
  • \n
  • 修复某些情况下暂停任务会自动开始任务的问题
  • \n
  • 修复移除暂停、错误的任务时不删除未下载完成的文件的问题
  • \n
  • 修复酷狗源歌单热门标签歌单列表无法加载问题
  • \n
  • 修复QQ源歌单热门标签歌单列表无法加载问题
  • \n
\n

其他

\n
    \n
  • 更新electron到 8.0.1
  • \n
\n"},{"version":"0.15.0","desc":"

洛雪提前祝大家新年快乐、身体健康、阖家幸福!

\n

修复

\n
    \n
  • 修复歌曲下载列表无法加载的问题
  • \n
  • 修复歌曲下载任务数大于最大下载任务数的问题
  • \n
  • 修复某些情况下歌曲下载错误的问题
  • \n
  • 修复下载列表数据没有被迁移直接被丢弃的问题
  • \n
\n"},{"version":"0.14.1","desc":"

洛雪提前祝大家新年快乐、身体健康、阖家幸福!

\n

修复

\n
    \n
  • 修复由于旧版配置文件迁移出错导致的软件界面无法显示的问题
  • \n
\n"},{"version":"0.14.0","desc":"

洛雪提前祝大家新年快乐、身体健康、阖家幸福!

\n

新增

\n
    \n
  • 新增各大平台歌单热门标签显示(显示在歌单界面的第一个下拉标签菜单中)
  • \n
  • 恢复QQ音乐源128k音质试听
  • \n
  • 新增不强制win7开启透明效果即可使用,但要配置运行参数-nt,例如:.\\lx-music-desktop.exe -nt,添加方法可自行百度“给快捷方式加参数”
  • \n
  • 新增“新年快乐”主题,可自行切换体验
  • \n
\n

优化

\n
    \n
  • 减淡各个主题的歌曲列表分隔线颜色
  • \n
  • 在线音乐列表音质标签优化,当歌曲有无损音质时隐藏高品质标签
  • \n
  • 更新改进的歌词播放插件,现在歌词的播放显示将更准确
  • \n
\n

修复

\n
    \n
  • 修复咪咕源无法搜索的问题
  • \n
  • 修复更新弹窗底部文字颜色没有适配当前主题颜色的问题
  • \n
  • 修复导入设置窗口大小、代理设置不立即生效的问题
  • \n
  • 修复在线音乐列表获取失败时无限循环请求的问题
  • \n
\n

其他

\n
    \n
  • 将软件设置与播放列表分离存储成两个文件
  • \n
  • 更新 Electron 到 7.1.9
  • \n
\n"},{"version":"0.13.1","desc":"

修复

\n
    \n
  • 修复全局更新弹窗无法遮盖搜索框的问题
  • \n
\n

其他

\n
    \n
  • 由于electron 7.1.3 - 7.1.5 的自动更新功能存在Bug,现降级到7.1.2
  • \n
\n"},{"version":"0.13.0","desc":"

新增

\n
    \n
  • 新增搜索框搜索建议键盘上下方向键选择功能
  • \n
  • 聚合搜索新增音源显示
  • \n
  • 新增“离开搜索界面时清空搜索列表”设置选项,默认关闭,可到设置-强迫症设置开启
  • \n
\n

优化

\n
    \n
  • 优化“信口雌黄”皮肤配色
  • \n
\n

修复

\n
    \n
  • 修复存在弹出层时,搜索建议列表被弹出层覆盖的问题
  • \n
  • 修复搜索、排行榜、歌单列表多选框从不定状态到选中的Bug
  • \n
\n

移除

\n
    \n
  • 因Q音接口失效,移除Q音源的试听与下载
  • \n
\n

其他

\n
    \n
  • 更新electron到7.1.5
  • \n
  • 更新vue到2.6.11
  • \n
\n"},{"version":"0.12.1","desc":"

优化

\n
    \n
  • 优化定位歌曲时的列表滚动机制
  • \n
  • 优化链接点击效果
  • \n
\n

修复

\n
    \n
  • 修复使用酷我源下载歌曲时,当歌曲无封面时下载报错的问题
  • \n
  • 修复酷我源排行榜、歌单详情列表里的歌曲音质匹配问题(原来无论歌曲有无高品、无损都会显示有)
  • \n
  • 禁止外部链接在软件内打开,将所有外部链接从默认浏览器打开
  • \n
\n

其他

\n
    \n
  • 更新electron到7.1.2
  • \n
\n"},{"version":"0.12.0","desc":"

由于新下载库仍然没有完成,但下载功能已经可用,so 移除之前使用的第三方下载库,暂时把新下载库的下载模块直接加入本程序,若出现下载问题欢迎反馈!

\n

新增

\n
    \n
  • 新增下载功能对代理设置的支持,现在若在软件设置了代理服务器,下载功能也将会走代理网络了
  • \n
\n

优化

\n
    \n
  • 新下载模块将对恢复下载的任务进行字节校验,用于解决下载进度超过100%后仍然下载的问题
  • \n
  • 注意:目前仍然无法暂停处于链接获取状态中的任务
  • \n
\n

修复

\n
    \n
  • 修复Linux deb版本.desktop桌面文件缺少图标的问题,新增中文名称显示、软件分类,感谢@lowy的反馈!
  • \n
  • 修复下载列表歌曲状态分类列表操作Bug
  • \n
  • 修复歌曲封面下载失败时仍然执行嵌入封面操作导致报错的问题
  • \n
  • 跳过重复添加相同歌曲名与扩展名的歌曲,例如你之前下载了A歌曲的128k音质,现在想要下载它的320k音质,但由于两者都是MP3格式,会因为重名导致之前的128k音质被覆盖但列表中仍然显示两种音质的问题(但实际上都是指向后面的320k音质)
  • \n
\n"},{"version":"0.11.0","desc":"

新增

\n
    \n
  • 新增歌曲缓冲定时器,尝试用于解决网络正常但是歌曲缓冲过久的问题
  • \n
  • 新增下载管理的任务状态分类
  • \n
  • 添加杀毒软件提示有病毒或恶意行为的说明,可到常见问题拉到最后查看(常见问题可在开源地址找到)
  • \n
\n

优化

\n
    \n
  • 优化更新弹窗机制及其内容描述,对于可以自动更新的版本,现在可以看到软件的下载进度了
  • \n
\n"},{"version":"0.10.0","desc":"

优化

\n
    \n
  • 大幅减少程序播放时对CPU与GPU的使用,经测试CPU使用减少60%以上,GPU使用减少90%以上,这应该能解决MAC系统上的温度上涨的问题
  • \n
\n

修复

\n
    \n
  • 修复酷我源搜索提示排行榜无法获取的问题
  • \n
  • 修复咪咕源无法播放的问题
  • \n
\n"},{"version":"0.9.1","desc":"

修复

\n
    \n
  • 修复没有配置文件时程序启动出错的问题
  • \n
\n"},{"version":"0.9.0","desc":"

新增

\n
    \n
  • 新增窗口大小设置,若觉得软件窗口小可以到设置页调大点
  • \n
  • 新增定位当前播放歌曲,点击播放栏左侧的歌曲图片可在播放列表定位当前播放的歌曲(该功能对播放下载列表的歌曲无效)
  • \n
\n

修复

\n
    \n
  • 修复搜索提示失效的问题
  • \n
  • 修复从歌单或列表点击搜索按钮搜索目标歌曲时,搜索框未聚焦仍然弹出候选搜索列表的问题
  • \n
\n"},{"version":"0.8.2","desc":"

修复

\n
    \n
  • 兼容旧版酷我源搜索列表过滤128k音质的bug(注:0.8.1版本仅修复了酷我源的歌曲过滤问题,该修复仅对以后添加的歌曲有效,如果是之前添加的歌曲仍会出现这个问题,现修复对之前旧列表数据的兼容处理)
  • \n
\n"},{"version":"0.8.1","desc":"

修复

\n
    \n
  • 修复酷我源搜索歌曲结果未添加128k音质导致播放128k音质时显示“该歌曲没有可播放的音频”的问题
  • \n
\n"},{"version":"0.8.0","desc":"

新增

\n
    \n
  • 新增网易云源歌曲搜索
  • \n
  • 新增网易云源歌单
  • \n
  • 新增各平台通过输入歌单链接或歌单ID打开歌单详情列表,目前只适配了网页版歌单链接,其他方式的歌单链接可能无法解析,但你可想办法获取歌单ID后输入打开。注:各平台歌单ID均为纯数字,若遇到链接里存在歌单ID但无法解析的歌单链接,可以到GitHub提交issue或发送邮件或加群830125506反馈!
  • \n
  • 新增音量调整滑动功能,现在支持鼠标左右拖动调整音量了
  • \n
\n

优化

\n
    \n
  • 优化搜索框搜索体验
  • \n
  • 优化音量条交互视觉效果
  • \n
  • 缓存歌单详情列表数据
  • \n
\n

修复

\n
    \n
  • 修复QQ源歌单无法翻页Bug
  • \n
  • 修复默认列表没有创建时无法显示收藏列表的Bug
  • \n
  • 修复网易云128k直接试听
  • \n
  • 修复歌曲音质不存在时仍然播放或下载的Bug
  • \n
  • 修复调整音量时,调整的位置与鼠标点击的位置不一致的问题
  • \n
\n"},{"version":"0.7.0","desc":"

新增

\n
    \n
  • 新增“我的收藏”本地播放列表
  • \n
  • 新增缓存清理功能,可到设置-其他查看与清理软件缓存
  • \n
  • 新增QQ音乐源搜索
  • \n
  • 新增咪咕源搜索
  • \n
  • 新增咪咕源歌单
  • \n
  • 新增咪咕源排行榜
  • \n
  • 新增我的音乐列表歌曲源显示,默认关闭,可到设置-列表设置开启
  • \n
\n

优化

\n
    \n
  • 优化选择框动画效果
  • \n
  • 尝试优化选我的音乐列表内容很多时多选的卡顿问题
  • \n
\n

修复

\n
    \n
  • 修复列表延迟显示的Bug
  • \n
  • 修复QQ音源128k音质试听
  • \n
\n"},{"version":"0.6.2","desc":"

祝贺祖国成立70周年~!

\n

新增

\n
    \n
  • 新增QQ音乐源歌单
  • \n
\n

修复

\n
    \n
  • 修正火影皮肤名字
  • \n
  • 修复当试听列表为空时,无法切到其他界面的Bug
  • \n
  • 修复百度源搜索结果为空时的接口处理Bug
  • \n
  • 恢复酷狗其他音质播放
  • \n
\n"},{"version":"0.6.1","desc":"

新增

\n
    \n
  • 新增试听列表滚动条位置恢复设置(可自动恢复到上次离开时的列表滚动位置),本功能默认开启,若不需要可到设置-列表设置将其关闭
  • \n
  • 新增 《海贼王》 皮肤,喜欢个性化的可以试试~
  • \n
\n

优化

\n
    \n
  • 新增DNS解析缓存,加快请求速度
  • \n
  • 优化代码逻辑,减少软件对系统资源的占用
  • \n
  • 优化新版本信息检测,尽量减少弹出版本获取失败弹窗弹出的概率
  • \n
  • 优化下拉列表动画效果
  • \n
\n

修复

\n
    \n
  • 修复请求超时的逻辑处理Bug,尝试修复请求无法取消导致的正在播放的歌曲与界面显示的信息不一致的问题
  • \n
  • 修复其他一些小Bug
  • \n
\n

移除

\n
    \n
  • 移除 192k 音质
  • \n
  • 移除酷我音源 ape 音质,无损推荐 flac 格式
  • \n
\n"},{"version":"0.6.0","desc":"

新增

\n
    \n
  • 新增音乐聚合搜索,目前支持酷我、酷狗、百度源搜索
  • \n
  • 新增代理功能
  • \n
\n

优化

\n
    \n
  • 优化从《梦里嫦娥》皮肤切换到其他皮肤时侧栏动画的切换效果
  • \n
\n

修复

\n
    \n
  • 修复试听列表没有歌曲时会显示列表加载中的Bug
  • \n
  • 修复切换歌单列表详情时的UI Bug
  • \n
\n"},{"version":"0.5.5","desc":"

新增

\n
    \n
  • 月是故乡明,祝大家中秋快乐🥮~~新增个性皮肤**《月里嫦娥》**,时间仓促,皮肤还不是很完善,可以试试喜不喜欢~😉
  • \n
  • 新增 MAC 版本退出快捷键支持
  • \n
  • 新增点击播放器中的歌曲标题可以复制标题的功能(遇到好听的歌曲方便分享)
  • \n
\n

修复

\n
    \n
  • 修复 MAC 系统下软件关闭时再次从 dock 打开时报错的Bug
  • \n
  • 修复下载的歌曲文件名中包含命名规则不允许的符号时下载失败的问题(若歌曲名包含这些符号会自动将其移除)
  • \n
  • 修复 MAC 版本不能复制粘贴的问题
  • \n
\n"},{"version":"0.5.4","desc":"

移除

\n
    \n
  • 下载的FLAC文件在修改歌曲信息后,软件无法播放,但使用本地播放器可以播放
  • \n
  • 为了稳妥起见,暂时移除FLAC格式的meta信息修改
  • \n
  • MP3格式无此问题
  • \n
\n"},{"version":"0.5.3","desc":"

优化

\n
    \n
  • 更新所有依赖包到最新
  • \n
\n

修复

\n
    \n
  • 修复试听酷狗源的音乐仍然获取320k音质导致获取失败的Bug
  • \n
\n"},{"version":"0.5.2","desc":"

新增

\n
    \n
  • 新增强迫症设置-离开搜索界面时是否清空搜索框
  • \n
  • 设置-关于板块新增常见问题链接
  • \n
  • 歌单左上角的分类按钮添加一个向下图标,方便识别该按钮为下拉框(该按钮可选择歌单类型,请自行尝试)
  • \n
\n

优化

\n
    \n
  • 略微优化最小化按钮字符
  • \n
  • 优化试听列表的加载体验,当歌曲数过多时列表将延迟加载
  • \n
\n

修复

\n
    \n
  • 修复下载管理的一些Bug
  • \n
\n

移除

\n
    \n
  • 因接口失效,移除网易云音源,酷狗音源仅支持播放128k音质
  • \n
\n"},{"version":"0.5.1","desc":"

新增

\n
    \n
  • 新增右上角最小化/关闭按钮鼠标滑过符号
  • \n
  • 新增下载列表定位文件按钮
  • \n
\n

修复

\n
    \n
  • 修复百度源歌单全部分类无法加载的问题
  • \n
  • 修复更新弹窗无法弹出的问题
  • \n
\n"},{"version":"0.5.0","desc":"

新增

\n
    \n
  • 新增封面嵌入(默认开启,可到设置-下载设置关闭)
  • \n
  • 新增歌词下载(默认关闭,可到设置-下载设置开启)
  • \n
  • 新增单例应用功能(实现软件单开功能,禁止软件多开)
  • \n
\n

优化

\n
    \n
  • 优化歌单列表动画
  • \n
\n

修复

\n
    \n
  • 修复歌单无法翻页的问题
  • \n
  • 修复在某些情况下,添加下载歌曲导致下载列表崩溃的问题
  • \n
  • 修复版本更新弹窗Bug
  • \n
  • 修复酷狗歌单推荐歌单出现在其他分类中的Bug
  • \n
\n"},{"version":"0.4.0","desc":"

新增

\n
    \n
  • 新增歌单功能,目前支持酷我、酷狗、百度源歌单
  • \n
  • 在设置界面-关于洛雪音乐说明部分新增最新版网盘下载地址打赏地址
  • \n
  • 新增酷狗 电音热歌榜、DJ热歌榜
  • \n
  • 新增版本更新超时功能,对于部分无法访问GitHub的用户做更新超时提醒
  • \n
\n

移除

\n
    \n
  • 注意:0.4.0以前的版本即将失效,请更新到0.4.0版本
  • \n
\n"},{"version":"0.3.5","desc":"

新增

\n
    \n
  • 新增测试接口,该接口同样速度较慢,但软件的大部分功能可用,请自行切换到该接口,找接口辛苦,且用且珍惜!
  • \n
\n

优化

\n
    \n
  • 取消需要刷新URL时windows任务栏进度显示错误状态(现显示为暂停状态)
  • \n
\n

修复

\n
    \n
  • 修复使用临时接口时在试听列表双击灰色歌曲仍然会进行播放的Bug
  • \n
  • 修复歌词加载Bug
  • \n
\n"},{"version":"0.3.4","desc":"

优化

\n
    \n
  • 减少接口不稳定带来的影响,适当增加请求等待时间
  • \n
\n

修复

\n
    \n
  • 修复播放过程中URL过期不会刷新URL的问题
  • \n
\n"},{"version":"0.3.3","desc":"

修复

\n
    \n
  • messoer的接口已经关闭,暂时切换到临时接口使用,部分功能受限。。。
  • \n
  • 修复设置界面更新出错时仍然显示更新下载中的问题
  • \n
  • 修复手动定位播放进度条时存在偏差的问题
  • \n
  • 屏蔽播放器中没有歌曲时对进度条的点击
  • \n
\n"},{"version":"0.3.2","desc":"

新增

\n
    \n
  • 新增酷狗排行榜其他音质下载
  • \n
\n"},{"version":"0.3.1","desc":"

修复

\n
    \n
  • 修复音量条主题适配
  • \n
\n"},{"version":"0.3.0","desc":"

新增

\n
    \n
  • 新增MACLinux版本(需要的可自行下载)
  • \n
  • 新增音量调整
  • \n
  • 新增任务栏播放进度条控制选项(现在可在设置界面关闭在任务栏显示的播放进度)
  • \n
  • 新增更新出错时的弹窗提示
  • \n
  • 从该版本起,非安装版也会有更新弹窗提醒了,但仍然需要手动下载新版本更新,版本信息可到设置页面查看
  • \n
\n

修复

\n
    \n
  • 强制把临时接口设置回 messoer 接口
  • \n
\n"},{"version":"0.2.3","desc":"

新增

\n
    \n
  • 新增任务栏程序标题改变功能(播放歌曲时任务栏标题将显示当前播放的歌曲)
  • \n
\n

修复

\n
    \n
  • 使用临时接口时,试听列表中的下载按钮仍然能点击的Bug
  • \n
  • 修复某些情况下歌曲链接未能缓存的问题
  • \n
\n

移除

\n
    \n
  • 移除临时接口(因服务器被攻击,本接口已关闭)
  • \n
  • 移除列表栏设置的隐藏专辑栏选项(感觉这个设置并没有什么luan用,并且还会打破布局)
  • \n
\n"},{"version":"0.2.2","desc":"

修复

\n
    \n
  • 修复下载过程中出错重试5次都失败后不会自动开始下一个任务的Bug
  • \n
  • 修复播放到一半URL过期时不会刷新URL直接播放下一首的问题
  • \n
\n"},{"version":"0.2.1","desc":"

优化

\n
    \n
  • 新增歌曲URL存储,当URL无效时才重新获取,以减少接口不稳定的影响
  • \n
\n

修复

\n
    \n
  • 修复歌曲加载无法加载时自动切换混乱的Bug
  • \n
  • 修复移除列表最后一首歌曲时播放器不停止播放的问题
  • \n
\n"},{"version":"0.2.0","desc":"

新增

\n
    \n
  • 新增百度音乐排行榜及其音乐直接试听与下载
  • \n
  • 新增网易云排行榜音乐直接试听与下载(目前仅支持128k音质)
  • \n
  • 新增酷狗排行榜音乐直接试听与下载(目前仅支持128k音质)
  • \n
\n

修复

\n
    \n
  • 修复更新弹窗历史版本描述多余的换行问题
  • \n
  • 修复歌曲无法播放的情况下歌词仍会播放的问题
  • \n
\n"},{"version":"0.1.6","desc":"

修复

\n
    \n
  • 修复列表多选音源限制Bug
  • \n
\n"},{"version":"0.1.5","desc":"

新增

\n
    \n
  • 新增搜索列表批量试听与下载功能
  • \n
  • 新增排行榜列表批量试听与下载功能
  • \n
  • 新增试听列表批量移除与下载功能
  • \n
  • 新增下载列表批量开始、暂停与移除功能
  • \n
\n

优化

\n
    \n
  • 优化歌曲切换机制
  • \n
\n"},{"version":"0.1.4","desc":"

新增

\n
    \n
  • 新增音乐来源切换,可到设置页面-基本设置 look look !
  • \n
  • 为搜索结果列表添加多选功能。
    \nP.S:暂时没想好多选后的操作按钮放哪…
  • \n
\n

优化

\n
    \n
  • 重构与改进checkbox组件,使其支持不定选中状态
  • \n
  • 完善上一个版本的http请求封装并切换部分请求到该方法上
  • \n
  • 优化其他一些细节
  • \n
\n"},{"version":"0.1.3","desc":"

新增

\n
    \n
  • 新增win32应用构建
  • \n
\n

修复

\n
    \n
  • 修复安装包许可协议乱码问题
  • \n
  • messoer 提供的接口已挂,暂时切换到临时接口!
  • \n
\n

移除

\n
    \n
  • 由于messoer接口无法使用,QQ音乐排行榜直接播放/下载功能暂时关闭
  • \n
\n"},{"version":"0.1.2","desc":"

修复

\n
    \n
  • 修复更新弹窗的内容显示问题
  • \n
\n"},{"version":"0.1.1","desc":"

新增

\n
    \n
  • QQ音乐排行榜直接试听与下载(该接口貌似不太稳定,且用且珍惜!)
  • \n
\n

优化

\n
    \n
  • 优化http请求机制
  • \n
  • 更新关于本软件说明
  • \n
\n

修复

\n
    \n
  • 修复当上一个歌曲链接正在获取时切换歌曲请求不会取消的问题
  • \n
  • 修复切换歌曲时仍然播放上一首歌曲的问题
  • \n
\n"},{"version":"0.1.0","desc":"0.1.0版本发布"}]} +{"version":"1.12.2","desc":"修复\n- 修复播放下载列表的歌曲时切歌的问题\n- 修复播放下载列表的歌曲时歌词无法显示的问题\n- 修复下载列表稍后播放功能无效的问题\n- 修复同步服务器启动失败时,关闭同步服务不会清空失败信息的问题","history":[{"version":"1.12.1","desc":"修复\n- 修复随机播放下无法切歌的问题"},{"version":"1.12.0","desc":"新增\n- 新增局域网同步功能(实验性,首次使用前建议先备份一次列表),此功能需要配合PC端使用,移动端与PC端处在同一个局域网(路由器的网络)下时,可以多端实时同步歌曲列表,使用问题请看\"常见问题\"。\n\n优化\n- 添加播放器对系统媒体控制与显示的兼容处理,现在在windows下的锁屏界面可以正确显示当前播放的音乐信息及切换歌曲了\n\n修复\n- 修复导入kg歌单最多只能加载100、500首歌曲的问题。注:现在可以加载1000+首歌曲的歌单,但出于未知原因会导致部分歌曲无法加载(可能是无版权导致的),目前酷狗码仍然最多只能加载500首歌\n- 修复某些情况下所显示的歌词、封面图片与当前正在播放的歌曲不一致的问题"},{"version":"1.11.0","desc":"新增\n- 添加 win arm64 架构的安装包构建\n- 新增“添加歌曲到列表时的位置”设置,可选项为列表的“顶部”与“底部”\n\n优化\n- 优化网络请求,尝试去解决无法连接服务器的问题\n- 优化mg源打开歌单的链接兼容\n\n修复\n- 修复mg源搜索失效的问题\n\n移除\n- 因wy源的歌单列表已没有“最新”排序的选项,所以现跟随移除wy源歌单列表按“最新”排序的按钮\n\n变更\n- 添加歌曲到列表时从原来的底部改为顶部,若你想要将你的列表歌曲顺序反转以适应这一变更,可先按住`shift`键的情况下点击列表的最后一首歌,然后再点击列表的第一首歌,完成倒序选中,最后随便右击列表的任意一首歌,在弹出的菜单中选择调整顺序,在弹出框输入1后确定即可反转列表。\n若你想要恢复原来的行为则可以去更改“添加歌曲到列表时的位置”设置项。\n\n其他\n- 更新electron到v13.1.7"},{"version":"1.10.2","desc":"修复\n- 修复企鹅音乐搜索歌曲没有结果的问题"},{"version":"1.10.1","desc":"修复\n- 修复企鹅音乐搜索歌曲没有结果的问题\n- 修复播放在空的歌单列表点击播放全部时报错的问题"},{"version":"1.10.0","desc":"lx music移动端已经发布了,使用习惯仍跟桌面版一样,不过功能、界面仍比较简单,有兴趣的可以去体检一下,项目地址:\nhttps://github.com/lyswhut/lx-music-mobile#readme\n\n新增\n- 排行榜界面添加播放、收藏整个排行榜功能,可以右击排行榜名字后,在弹出的右键菜单中使用。注:收藏、播放存在分页的排行榜时需等待操作完成后才能切换排行榜,不然会导致操作中断。\n- 新增Mac arm64位dmg包的构建\n\n修复\n- 修复全局快捷键对桌面歌词无效的问题\n- 修复快捷键设置框内的提示问题\n- 修复在当前正常播放的列表中使用稍后播放功能时,播放完后稍后播放的歌曲后不会恢复原来播放位置播放的问题\n- 修复kw部分歌单无法打开的问题\n- 修复wy源的歌曲音质匹配问题\n- 修复mg源歌单标签、排行榜歌曲列表无法加载的问题\n- 修复了一个歌曲下载失败时不会跳过任务的问题\n\n其他\n- 更新 Electron 到 12.0.8"},{"version":"1.9.0","desc":"新增\n- 新增启动参数`-dhmkh`,此参数将禁用Chromium的Hardware Media Key Handling特性,用于解决漫步者部分型号耳机与本程序冲突导致耳机意外关机的问题\n- 新增Windows arm64位免安装版的构建\n- 新增黑色皮肤“黑灯瞎火”,有关于皮肤配色的建议欢迎反馈\n- 新增自动换源下载功能,默认关闭,当无法从歌曲的原始源下载时,将尝试切换到其他源下载,注:此功能不100%保证换源后的歌曲版本与原版一致\n\n优化\n- 程序启动时对数据文件做读取校验,数据出现损坏时自动备份损坏的数据,若出现数据读取错误的弹窗并出现我的列表丢失时可到GitHub或加群反馈\n- 当设置-代理启用,但主机地址为空的时,将不再使用代理配置进行网络连接,并且在离开设置界面时自动禁用代理\n- 优化歌曲自动换源匹配\n- 分离歌词与歌曲列表信息的保存,以减小列表列表文件损坏的几率\n- 兼容打开咪咕移动端分享的歌单链接,添加打开歌单的信息显示\n\n修复\n- 修复备份与恢复功能在恢复数据时某些设置不立即生效的问题\n- 修正设置页“搜索设置”部分内容的缩进显示问题\n- 修复正在播放“稍后播放”的歌曲时,对“稍后播放”前播放的列表进行添加、删除操作会导致切歌的问题"},{"version":"1.8.2","desc":"### 修复\r\n\r\n- 修复歌曲ID存储变更导致酷狗图片获取失败的问题\n- 修复收藏的在线列表id迁移保存出错的问题"},{"version":"1.8.1","desc":"修复\n- 修复歌词翻译的主题颜色适配问题"},{"version":"1.8.0","desc":"新增\n- 新增设置-其他-列表缓存信息清理功能,注:此功能一般情况下不要使用\n- 新增启动参数`-play`,可以在启动软件时播放指定歌单,使用方法看Readme.md的\"启动参数\"部分\n- 新增逐字歌词播放,默认开启,可到设置界面关闭,注:本功能目前仅对酷狗源的歌曲有效\n- 新增自定义源功能,源编写规则可以去常见问题查看\n\n优化\n- 允许播放除了搜索列表以外的所有歌曲,即原来没有播放按钮或者灰色的歌曲都可以去尝试点击播放。注:该功能的原理是尝试自动切换到其他源播放,所以不一定会播放成功,特别是对于那些独家的资源\n- 优化单首歌曲的“添加到列表”弹窗歌曲列表状态的显示;现在在收藏单首歌曲时,若列表存在本歌曲则列表名字将变成灰色不可点击状态。总的来说,在添加单首歌曲时若列表名是灰色,则证明当前歌曲已在那个列表中\n- 将歌词翻译放到原文的下方,同时新增当前播放翻译的高亮功能\n\n移除\n- 移除虾米源。注:虽然已移除该源,但仍可尝试去播放之前添加的歌曲,虽然不一定会成功\n\n修复\n- 修复音乐搜索列表的稍后播放功能无效的问题\n- 修复搜索列表双击不支持播放的源时会导致切歌的问题\n- 修复歌单列表加载失败时无法进入歌单打开界面的问题\n- 修复mg源歌单列表无法加载的问题\n- 修复kg跳转到官方歌曲详情页的歌曲无法播放的问题\n- 修复我的列表的歌曲添加到其他列表时不排除当前列表的问题\n- 修复在下载列表右击未下载完成的歌曲弹出的右击菜单中没有开始下载选项的问题\n\n变更\n- 歌词翻译显示功能修改为默认关闭,注:此变更仅影响首次安装软件的用户\n\n其他\n- 更新electron到v9.4.4"},{"version":"1.7.1","desc":"修复\n- 修复非透明模式下右侧滚动条无法拖动的问题\n- 修复MAC下xm音乐滑块验证问题"},{"version":"1.7.0","desc":"

新增

\n
    \n
  • 搜索界面新增搜索状态的提示
  • \n
  • 新增“稍后播放”功能,可在歌曲列表右键菜单使用
  • \n
  • 新增“记住播放进度”功能的控制,该功能默认不再开启,可到播放设置-记住播放进度开启
  • \n
\n

优化

\n
    \n
  • 优化播放歌曲换源匹配
  • \n
  • 优化设置界面设置项的展示
  • \n
\n

修复

\n
    \n
  • 修复快速切换歌曲时, 会出现播放的歌曲和界面展示的歌曲不一致的问题
  • \n
  • 修复了一个由版本更新日志显示导致的潜在远程代码执行攻击漏洞,该漏洞影响v1.6.1及之前的所有版本,请务必更新到最新版本
  • \n
  • 修复xm搜索源验证问题
  • \n
\n

其他

\n
    \n
  • 更新electron到9.4.2
  • \n
\n"},{"version":"1.6.1","desc":"

优化

\n
    \n
  • 改进自动换源时的歌曲匹配
  • \n
\n

修复

\n
    \n
  • 修复某些情况下自动换源的时间过长时会终止换源自动切歌的问题
  • \n
  • 修复自动换源导致的搜索列表每页变成10条数据的问题
  • \n
  • 降级electron到9.3.3修复部分系统没有声音的问题
  • \n
\n"},{"version":"1.6.0","desc":"

新增

\n
    \n
  • 我的列表右键菜单新增列表排序功能,可调整单曲、多选后的歌曲的顺序。注意:多选排序还将会按照选中歌曲时的顺序排序
  • \n
  • 添加鼠标提示的自动关闭功能,鼠标长时间(目前是10秒)不动时鼠标提示将会自动关闭
  • \n
  • 添加鼠标指向歌曲封面的提示(对于进度条左边的歌曲封面,你可能不知道的操作->右击在“我的列表”定位当前播放的歌曲)
  • \n
  • 隐藏播放详情页按钮添加快速隐藏详情页提示(你可能不知道的操作->在播放详情页内的任意非窗口可拖动区域右键双击可以快速隐藏详情页)
  • \n
  • 添加桌面歌词字体、透明度调整按钮微调提示(你可能不知道的操作->对于字体、透明度可右击微调)
  • \n
  • 我的列表右键菜单添加搜索当前歌曲功能
  • \n
  • 新增-dha参数,添加此启动参数将禁用硬件加速启动(Disable Hardware Acceleration),窗口显示有问题时可以尝试添加此参数启动,Linux系统的界面显示有问题时可尝试添加此参数启动,若不行可尝试添加-dt参数启动
  • \n
  • 新增播放自动换源功能~
  • \n
\n

变更

\n
    \n
  • -nt参数更名为-dt(Disable Transparent),目前原来的-nt参数仍然可用,但将在后续的版本中移除
  • \n
\n

修复

\n
    \n
  • 修复恢复上次播放的歌曲时在随机播放模式下不把恢复播放的歌曲放入已播放队列的问题(该问题会导致随机模式下会导致未播放完整个列表前就会再次随机到该歌曲,以及无法通过上一曲切回该歌曲)
  • \n
  • 修复音乐嵌入的封面在 Mac 系统无法显示的问题
  • \n
  • 修复-dt(原来的-nt)启动参数不真正生效的问题
  • \n
\n"},{"version":"1.5.0","desc":"

新增

\n
    \n
  • 直接从歌单详情收藏的列表新增同步功能。注意:这将会覆盖本地的目标列表,歌曲将被替换成最新的在线列表
  • \n
\n

优化

\n
    \n
  • 优化软件启动时恢复上一次播放的歌曲进度功能
  • \n
\n

修复

\n
    \n
  • 修复MAC平台上下载歌曲封面嵌入无法显示的问题
  • \n
  • 修复MAC平台首次运行软件最小化、关闭控制按钮默认在右边的问题
  • \n
  • 修复酷狗源的某些歌曲没有专辑字段导致的列表加载失败问题
  • \n
  • 修复某些酷狗源歌单链接无法打开的问题
  • \n
\n"},{"version":"1.4.1","desc":"

修复

\n
    \n
  • 修复有歌词翻译与无歌词的音乐间切换会导致歌词翻译残留显示的问题
  • \n
  • 修复歌曲URL过期时,等待刷新URL的自动切换歌曲时间间隔太短的问题
  • \n
  • 修复某些电脑上的某些歌曲没有声音的问题(升级Electron9.3.4导致的,现降级到9.3.3)
  • \n
\n"},{"version":"1.4.0","desc":"

新增

\n
    \n
  • 托盘菜单新增显示、隐藏主界面选项,为Linux、MAC版添加托盘菜单
  • \n
  • 新增播放进度信息保存
  • \n
\n

优化

\n
    \n
  • 移除kg源的歌词文件开头的空白字符串
  • \n
\n

修复

\n
    \n
  • 修复专辑图片无法嵌入的问题
  • \n
  • 修复播放状态栏切换“上一首”歌曲按钮提示错误的问题
  • \n
  • 修复移动单首歌曲时,如果目标列表存在该歌曲,会导致将源列表与目标列表里的目标歌曲移除
  • \n
  • 修复kg源歌曲信息带有单引号等特殊字符被转义的问题
  • \n
\n"},{"version":"1.3.0","desc":"

新增

\n
    \n
  • 播放详情页新增歌曲评论加载显示(某些平台暂不支持显示子评论)
  • \n
\n

优化

\n
    \n
  • 修改播放详情页的歌曲图片的显示效果
  • \n
\n

修复

\n
    \n
  • 修复小芸源音乐搜索结果最多只有20条搜索结果的问题
  • \n
\n"},{"version":"1.2.2","desc":"

修复

\n
    \n
  • 降级 Electron 到 9.x.x 版本修复 Linux 版桌面歌词窗口变白的问题
  • \n
\n"},{"version":"1.2.1","desc":"

优化

\n
    \n
  • Linux版的软件界面默认使用圆角与阴影,顺便修复了桌面歌词窗口变白的问题,已在Ubuntu 18.10测试正常,若显示异常可尝试添加-nt参数启动
  • \n
\n

修复

\n
    \n
  • 修复聚合搜索的分页问题
  • \n
  • 修复代理输入框输入的内容不生效的问题
  • \n
\n"},{"version":"1.2.0","desc":"

提前祝大家中秋&国庆快乐~

\n

新增

\n
    \n
  • 播放控制栏开启/关闭桌面歌词按钮 新增右击按钮时锁定/解锁桌面歌词功能
  • \n
\n

优化

\n
    \n
  • 优化我的列表滚动条位置的保存逻辑
  • \n
  • 更新设置-备份与恢复功能的描述
  • \n
  • 优化软件内鼠标悬停的提示界面
  • \n
\n

修复

\n
    \n
  • 修复桌面歌词窗口不允许拖出桌面之外的位置计算偏移Bug
  • \n
  • 修复网易云KTV嗨榜无法加载的问题
  • \n
  • 修复初始化搜索历史列表功能
  • \n
  • 修复重启软件后试听列表与收藏列表无法恢复上次的滚动位置的问题
  • \n
  • 修复歌曲封面无法嵌入的Bug
  • \n
  • 修复酷狗歌词格式问题
  • \n
  • 修复关闭切换动画时从搜索候选列表点击内容无效的问题
  • \n
\n

其他

\n
    \n
  • 更新 Electron 到 v10.1.3
  • \n
\n"},{"version":"1.1.1","desc":"

修复

\n
    \n
  • 修复某些情况下桌面歌词不会播放的问题
  • \n
\n"},{"version":"1.1.0","desc":"

新增

\n
    \n
  • 在歌单详情界面新增播放当前歌单按钮、收藏歌单按钮,注:播放歌单不会将歌曲添加到试听列表
  • \n
  • 新增不允许将歌词窗口拖出主屏幕之外的设置项,默认开启,在连接多个屏幕时想要拖动到其他屏幕时可关闭此设置
  • \n
  • 新增大部分平台的歌词翻译,感谢 @InoriHimea 提供的krc解码算法
  • \n
  • 新增显示歌词翻译设置,默认开启,仅支持某些平台,注:无论该设置是否开启,嵌入或下载歌词时都不会带上翻译
  • \n
  • 新增显示切换动画设置,默认开启,关闭时将基本禁用软件内的所有切换动画
  • \n
  • 播放状态栏新增桌面歌词的开关、播放模式的切换、歌曲的收藏按钮,Thanks to @andylow for the icon!
  • \n
\n

修复

\n
    \n
  • 修复使用全局快捷键还原窗口时,窗口没有获取焦点的问题
  • \n
  • 修复我的列表搜索对最后一个字符的匹配问题
  • \n
  • 修复窗口在较小模式下最小化/关闭按钮不居中的问题
  • \n
\n

优化

\n
    \n
  • 桌面歌词当前播放行改为上下居中
  • \n
  • 为区分静音状态,静音时音量条会变淡,调整音量条时将会取消静音
  • \n
  • 优化随机播放机制,现在通过下一曲切换歌曲时,直到播放完整个列表之前将不会再随机到之前播放过的歌曲,并且通过上一曲可以正确播放上一首歌曲
  • \n
  • 当下载目录没有写入权限时将显示没有写入权限的提示
  • \n
\n

移除

\n
    \n
  • 移除默认的全局声音媒体快捷键接管
  • \n
  • 移除对百度音乐的支持,因百度音乐原有的大部分API失效,而且该平台相对其他平台来说音乐太少了,可有可无,以后再看情况恢复
  • \n
\n

其他

\n
    \n
  • 更新electron到 10.1.2
  • \n
\n"},{"version":"1.0.1","desc":"

优化

\n
    \n
  • 对我的列表歌曲搜索结果进行相似度排序
  • \n
\n

修复

\n
    \n
  • 修复在 Windows 系统下缩放比非100%时,拖动桌面歌词会自动加大桌面歌词窗口的问题
  • \n
\n"},{"version":"1.0.0","desc":"

新增

\n
    \n
  • 新增rpmpacman包的构建(未测试可用性)
  • \n
  • 新增因系统音频设备列表改变导致的当前音频输出设备改变时是否暂停播放的设置,默认关闭
  • \n
  • 新增歌曲列表右击菜单
  • \n
  • 新增自定义列表,创建列表的按钮在表头#左侧,鼠标移上去才会显示;编辑列表名字时,按ESC键可快速取消编辑,按回车键或使输入框失去焦点即可保存列表名字,右击列表可编辑已创建的列表,“试听列表”与“我的收藏”两个列表固定不可编辑
  • \n
  • 改变排行榜布局,新增更多排行榜
  • \n
  • 新增我的列表右键菜单复制歌曲名选项
  • \n
  • 新增桌面歌词,默认关闭,可到设置或者托盘菜单开启(建议使用全局快捷键控制);调整字体大小、透明度时,鼠标左击按钮正常调整,右击微调;Windows 7未开启Aero效果时桌面歌词会有问题,详情看常见问题解决;Linux版桌面歌词有问题,以后再尝试优化;
  • \n
  • 新增“清热板蓝”皮肤
  • \n
  • 新增软件最小化、关闭按钮位置设置,MAC版默认为左边,非MAC为右边,不想用默认的可到设置修改
  • \n
  • 新增快捷键设置,软件内快捷键默认开启,全局快捷键默认关闭(注:若想开启蓝牙耳机切歌需开启全局快捷键,当快捷键被中划线划掉时,表示当前快捷键被其他程序占用导致注册失败)
  • \n
  • 新增首次运行时自动根据当前系统使用的语言设置软件显示的语言
  • \n
  • 新增歌词区域的触摸板、鼠标滚轮等对歌词滚动的支持
  • \n
  • 为了方便支持正版资源,歌曲列表右击菜单新增跳转到当前歌曲源官方详情页菜单(注意:在本版本之前添加的虾米源歌曲无法跳转详情页,需要移除后重新搜索添加)
  • \n
  • 新增我的列表内歌曲搜索,在我的列表按ctrl+f将显示搜索框;鼠标滑过或键盘上下方向键选择搜索结果;鼠标点击或按回车键定位选中的歌曲;按ctrl键的情况下鼠标点击或按回车键确认定位歌曲时,将会在定位歌曲结束后播放该歌曲(搜索框激活的情况下按esc可快速清空搜索框/关闭搜索框)
  • \n
  • 新增托盘图标样式设置,可到设置-其他切换
  • \n
  • 新增开关下载功能控制,默认关闭,可到设置-下载设置开启
  • \n
  • 新增将歌词嵌入音频文件中,默认关闭,可到设置-下载设置开启
  • \n
  • 新增当列表文件损坏时对损坏文件的备份,若出现该情况可打开%HOMEPATH%\\AppData\\Roaming\\lx-music-desktop找到playList.json.bak尝试手动修复列表文件,列表文件以JSON格式存储
  • \n
  • 新增在歌单详情列表按退格(Backspace)键可快速返回歌单列表
  • \n
\n

优化

\n
    \n
  • 改进歌曲切换时的歌词滚动效果
  • \n
  • 优化批量添加、删除播放列表的歌曲操作逻辑,大幅提升批量添加、删除列表歌曲的流畅度
  • \n
  • 改进歌单列表展示
  • \n
  • 改进聚合搜索的搜索结果排序,修复当某些源搜索失败时导致其他源无法显示结果的问题,现在聚合搜索已达到最初的理想效果,为了使排序更精确,建议同时输入 歌曲名 歌手名 搜索(歌曲名在前歌手名在后),欢迎体验~!
  • \n
  • 压缩备份数据文件大小
  • \n
\n

修复

\n
    \n
  • 修复按住Ctrl等键触发多选机制时不松开按键的情况下切换到其他窗口后再松开按键,这时切回软件不按按键都处在多选模式的问题
  • \n
  • 修复Linux版开启托盘无法退出的问题
  • \n
  • 修复某些情况下可能导致的音源输出问题
  • \n
  • 修复某些情况下无法开始下载任务的问题
  • \n
  • 修复 tab 组件边框溢出问题
  • \n
  • 修复错误更新试听列表外的歌曲时间的问题
  • \n
  • 修复网易音乐源歌单、排行榜歌曲列表加载显示的数量与实际不对的问题,同时支持加载大于1000首歌的歌单(歌曲大于1000首会分页),注意:目前软件一下子显示太多歌曲时会卡顿,不建议在同一列表内添加太多歌曲
  • \n
  • 修复歌曲图片链接没有扩展名的情况下无法嵌入图片的问题
  • \n
  • 修复无法检测最新版本时弹窗提示的显示
  • \n
  • 修复某些情况下从托盘还原窗口后无法操作的问题
  • \n
  • 修复Linux下无法ctrl+a全选的问题
  • \n
  • 修复主题背景图片覆盖不全的问题
  • \n
  • 修复聚合搜索音源标签的皮肤配色问题
  • \n
\n

更变

\n
    \n
  • 修改设置-列表-是否显示歌曲源的默认设置为选中(该变更不影响之前的设置)
  • \n
  • 移除浮动按钮,现在在多选完成后可鼠标右击随意一项在弹出的右键菜单中进行原来悬浮按钮的操作
  • \n
  • 为了避免出现误会,现在下载弹窗中不可用的音质将直接隐藏
  • \n
  • 更改初始设置的搜索设置为聚合搜索(该变更不影响之前的设置)
  • \n
\n

其他

\n
    \n
  • 更新 Electron 到 9.1.1
  • \n
\n"},{"version":"0.18.2","desc":"

修复

\n
    \n
  • 修复开启托盘时,可能导致无法自动更新的问题
  • \n
\n"},{"version":"0.18.1","desc":"

优化

\n
    \n
  • win下的托盘图标使用更大的图片
  • \n
  • 加长软件协议的强制停留时间
  • \n
\n

修复

\n
    \n
  • 修复导入设置某些设置未立即生效的问题
  • \n
\n"},{"version":"0.18.0","desc":"

新增

\n
    \n
  • 新增FLAC格式音乐标签信息写入与封面嵌入(因128k以外的音质已失效,目前该功能用不上了)
  • \n
  • 添加软件启动时是否自动聚焦搜索框的设置
  • \n
  • 新增托盘设置,默认关闭,可到设置开启,感谢 @LasyIsLazy 提交的PR
  • \n
  • 新增打开酷狗源用户歌单
  • \n
  • 新增使用协议
  • \n
  • 新增虾米音源
  • \n
  • 新增新皮肤“粉妆玉琢”、“青出于黑”,可去体验下~
  • \n
  • 新增“超大”、“巨大”窗口尺寸
  • \n
  • 新增播放详情页(退出详情页可点击右上角退出按钮或者在播放详情页任意地方鼠标快速右击两次
  • \n
\n

优化

\n
    \n
  • 略微加深音量条底色
  • \n
  • 优化其他界面细节
  • \n
  • 优化英语翻译,感谢 @CPCer
  • \n
  • 优化程序的流畅度
  • \n
\n

更变

\n
    \n
  • 下载列表的歌曲下载、播放将随设置中的保存路径改变而改变,不再固定指向其初始位置
  • \n
  • 移除列表多选框,现在多选需要键盘配合,想要多选前需按下ShiftCtrl键然后再鼠标点击想要选中的内容即可触发多选机制,其中Shift键用于连续选择,Ctrl键用于不连续选择,Ctrl+a用于快速全选。例子一:想要选中1-5项,则先按下Shift键后,鼠标点击第一项,再点击第五项即可完成选择;例子二:想要选中1项与第3项,则先按下Ctrl键后,鼠标点击第一项,再点击第三项即可完成选择;例子三:想要选中当前列表的全部内容,键盘先按下Ctrl键不放,然后按a键,即可完成选择。用ShiftCtrl选择时,鼠标点击未选中的内容会将其选中,点击已选择的内容会将其取消选择,若想全部取消选择,在不按ShiftAlt键的情况下,随意点击列表里的一项内容即可全部取消选择。(P.S:Ctrl键对应Mac OS上的Command键)
  • \n
  • 现在进度条的封面图左击改为打开播放详情页,在列表定位歌曲改为右击
  • \n
\n

修复

\n
    \n
  • 修复网易源某些歌曲提示没有可播放的音质的问题
  • \n
  • 修复下载管理刷新URL失败时不标记任务下载失败的问题
  • \n
  • 修复列表导出的文字描述,感谢 @CPCer
  • \n
  • 修复歌曲切换方式无法取消勾选的问题
  • \n
  • 修复打开歌单详情的情况下切到其他界面再切回来报错的问题
  • \n
  • 修正播放列表浮动按钮错误的文字提示
  • \n
\n

移除

\n
    \n
  • 因128k以外的音质失效,So 禁止所有128k外的音质下载
  • \n
\n

其他

\n

更新 Electron 到 8.2.5

\n"},{"version":"0.17.0","desc":"

新增

\n
    \n
  • 新增多语言设置,目前软件内置了简体中文、繁体中文、英语三种语言,欢迎提交PR翻译更多语言!
  • \n
  • 新增无法打开外部歌单FAQ
  • \n
  • 新增启动参数search,使用例子:.\\lx-music-desktop.exe -search="突然的自我 - 伍佰"
  • \n
  • 新增音频输出设置
  • \n
  • 新增软件内的包括字体在内的界面内容大小调整,现在当窗口大小切换到“较小/大/较大”时,软件内的元素将会适当减小或加大,窗口大小的“小”与“中”内的元素将保持之前的大小暂不做改变
  • \n
  • 新增音源别名,默认将显示别名,想要显示回原名可到设置切换(免责声明:别名仅是本软件用于描述各音源的标签,其名字归版权方所有)
  • \n
  • 新增发现新版本更新失败弹窗的忽略提醒按钮,忽略提醒后,以后同一个版本再失败时将不会弹窗提醒,但仍可到设置-版本更新手动点开更新弹窗查看或恢复提醒
  • \n
  • 新增热搜词,默认关闭,可到设置开启
  • \n
  • 新增历史搜索记录,默认关闭,可到设置开启(右击单个历史记录标签可移除所点击的记录)
  • \n
\n

优化

\n
    \n
  • 优化月里嫦娥皮肤侧栏鼠标悬浮颜色
  • \n
  • 优化播放进度条的动画效果
  • \n
  • 现在添加下载任务时,后面添加的任务会在列表顶部插入
  • \n
  • 优化歌单打开机制,现在歌单加载失败时会提示加载失败了,并且支持直接打开企鹅、酷我手机分享出来的歌单了
  • \n
  • 优化右上角最小化/关闭按钮布局
  • \n
\n

修复

\n
    \n
  • 修复歌单详情处于加载状态时无法返回的问题
  • \n
  • 修复鼠标右击复制列表内容时会复制音质标签的问题
  • \n
  • 修复0.6.2及以前的版本导出的“所有数据”内的歌曲列表无法导入的问题
  • \n
  • 修复下载列表在某些情况下无法取消全选的问题
  • \n
\n

其他

\n
    \n
  • 更新Electron到 8.1.1
  • \n
\n"},{"version":"0.16.0","desc":"

新增

\n
    \n
  • 允许选中列表内歌曲名、歌手名、专辑名内的文字,选中后可使用键盘快捷键进行复制
  • \n
  • 新增在列表可选内容区域鼠标右击时自动复制列表已选文字的功能
  • \n
  • 新增在搜索框鼠标右击时自动粘贴剪贴板的文本到搜索框中
  • \n
  • 任务下载失败时将显示搜索按钮,方便在其他源搜索该歌曲
  • \n
\n

优化

\n
    \n
  • 优化木叶之村主题翻页器背景颜色
  • \n
  • 优化各个主题音质标签颜色
  • \n
  • 优化其他一些界面细节及用户交互效果
  • \n
\n

修复

\n
    \n
  • 修复启用透明窗口鼠标不穿透的bug
  • \n
  • 修复大窗口时设置的音乐来源选项不换行的问题
  • \n
  • 修复某些情况下暂停任务会自动开始任务的问题
  • \n
  • 修复移除暂停、错误的任务时不删除未下载完成的文件的问题
  • \n
  • 修复酷狗源歌单热门标签歌单列表无法加载问题
  • \n
  • 修复QQ源歌单热门标签歌单列表无法加载问题
  • \n
\n

其他

\n
    \n
  • 更新electron到 8.0.1
  • \n
\n"},{"version":"0.15.0","desc":"

洛雪提前祝大家新年快乐、身体健康、阖家幸福!

\n

修复

\n
    \n
  • 修复歌曲下载列表无法加载的问题
  • \n
  • 修复歌曲下载任务数大于最大下载任务数的问题
  • \n
  • 修复某些情况下歌曲下载错误的问题
  • \n
  • 修复下载列表数据没有被迁移直接被丢弃的问题
  • \n
\n"},{"version":"0.14.1","desc":"

洛雪提前祝大家新年快乐、身体健康、阖家幸福!

\n

修复

\n
    \n
  • 修复由于旧版配置文件迁移出错导致的软件界面无法显示的问题
  • \n
\n"},{"version":"0.14.0","desc":"

洛雪提前祝大家新年快乐、身体健康、阖家幸福!

\n

新增

\n
    \n
  • 新增各大平台歌单热门标签显示(显示在歌单界面的第一个下拉标签菜单中)
  • \n
  • 恢复QQ音乐源128k音质试听
  • \n
  • 新增不强制win7开启透明效果即可使用,但要配置运行参数-nt,例如:.\\lx-music-desktop.exe -nt,添加方法可自行百度“给快捷方式加参数”
  • \n
  • 新增“新年快乐”主题,可自行切换体验
  • \n
\n

优化

\n
    \n
  • 减淡各个主题的歌曲列表分隔线颜色
  • \n
  • 在线音乐列表音质标签优化,当歌曲有无损音质时隐藏高品质标签
  • \n
  • 更新改进的歌词播放插件,现在歌词的播放显示将更准确
  • \n
\n

修复

\n
    \n
  • 修复咪咕源无法搜索的问题
  • \n
  • 修复更新弹窗底部文字颜色没有适配当前主题颜色的问题
  • \n
  • 修复导入设置窗口大小、代理设置不立即生效的问题
  • \n
  • 修复在线音乐列表获取失败时无限循环请求的问题
  • \n
\n

其他

\n
    \n
  • 将软件设置与播放列表分离存储成两个文件
  • \n
  • 更新 Electron 到 7.1.9
  • \n
\n"},{"version":"0.13.1","desc":"

修复

\n
    \n
  • 修复全局更新弹窗无法遮盖搜索框的问题
  • \n
\n

其他

\n
    \n
  • 由于electron 7.1.3 - 7.1.5 的自动更新功能存在Bug,现降级到7.1.2
  • \n
\n"},{"version":"0.13.0","desc":"

新增

\n
    \n
  • 新增搜索框搜索建议键盘上下方向键选择功能
  • \n
  • 聚合搜索新增音源显示
  • \n
  • 新增“离开搜索界面时清空搜索列表”设置选项,默认关闭,可到设置-强迫症设置开启
  • \n
\n

优化

\n
    \n
  • 优化“信口雌黄”皮肤配色
  • \n
\n

修复

\n
    \n
  • 修复存在弹出层时,搜索建议列表被弹出层覆盖的问题
  • \n
  • 修复搜索、排行榜、歌单列表多选框从不定状态到选中的Bug
  • \n
\n

移除

\n
    \n
  • 因Q音接口失效,移除Q音源的试听与下载
  • \n
\n

其他

\n
    \n
  • 更新electron到7.1.5
  • \n
  • 更新vue到2.6.11
  • \n
\n"},{"version":"0.12.1","desc":"

优化

\n
    \n
  • 优化定位歌曲时的列表滚动机制
  • \n
  • 优化链接点击效果
  • \n
\n

修复

\n
    \n
  • 修复使用酷我源下载歌曲时,当歌曲无封面时下载报错的问题
  • \n
  • 修复酷我源排行榜、歌单详情列表里的歌曲音质匹配问题(原来无论歌曲有无高品、无损都会显示有)
  • \n
  • 禁止外部链接在软件内打开,将所有外部链接从默认浏览器打开
  • \n
\n

其他

\n
    \n
  • 更新electron到7.1.2
  • \n
\n"},{"version":"0.12.0","desc":"

由于新下载库仍然没有完成,但下载功能已经可用,so 移除之前使用的第三方下载库,暂时把新下载库的下载模块直接加入本程序,若出现下载问题欢迎反馈!

\n

新增

\n
    \n
  • 新增下载功能对代理设置的支持,现在若在软件设置了代理服务器,下载功能也将会走代理网络了
  • \n
\n

优化

\n
    \n
  • 新下载模块将对恢复下载的任务进行字节校验,用于解决下载进度超过100%后仍然下载的问题
  • \n
  • 注意:目前仍然无法暂停处于链接获取状态中的任务
  • \n
\n

修复

\n
    \n
  • 修复Linux deb版本.desktop桌面文件缺少图标的问题,新增中文名称显示、软件分类,感谢@lowy的反馈!
  • \n
  • 修复下载列表歌曲状态分类列表操作Bug
  • \n
  • 修复歌曲封面下载失败时仍然执行嵌入封面操作导致报错的问题
  • \n
  • 跳过重复添加相同歌曲名与扩展名的歌曲,例如你之前下载了A歌曲的128k音质,现在想要下载它的320k音质,但由于两者都是MP3格式,会因为重名导致之前的128k音质被覆盖但列表中仍然显示两种音质的问题(但实际上都是指向后面的320k音质)
  • \n
\n"},{"version":"0.11.0","desc":"

新增

\n
    \n
  • 新增歌曲缓冲定时器,尝试用于解决网络正常但是歌曲缓冲过久的问题
  • \n
  • 新增下载管理的任务状态分类
  • \n
  • 添加杀毒软件提示有病毒或恶意行为的说明,可到常见问题拉到最后查看(常见问题可在开源地址找到)
  • \n
\n

优化

\n
    \n
  • 优化更新弹窗机制及其内容描述,对于可以自动更新的版本,现在可以看到软件的下载进度了
  • \n
\n"},{"version":"0.10.0","desc":"

优化

\n
    \n
  • 大幅减少程序播放时对CPU与GPU的使用,经测试CPU使用减少60%以上,GPU使用减少90%以上,这应该能解决MAC系统上的温度上涨的问题
  • \n
\n

修复

\n
    \n
  • 修复酷我源搜索提示排行榜无法获取的问题
  • \n
  • 修复咪咕源无法播放的问题
  • \n
\n"},{"version":"0.9.1","desc":"

修复

\n
    \n
  • 修复没有配置文件时程序启动出错的问题
  • \n
\n"},{"version":"0.9.0","desc":"

新增

\n
    \n
  • 新增窗口大小设置,若觉得软件窗口小可以到设置页调大点
  • \n
  • 新增定位当前播放歌曲,点击播放栏左侧的歌曲图片可在播放列表定位当前播放的歌曲(该功能对播放下载列表的歌曲无效)
  • \n
\n

修复

\n
    \n
  • 修复搜索提示失效的问题
  • \n
  • 修复从歌单或列表点击搜索按钮搜索目标歌曲时,搜索框未聚焦仍然弹出候选搜索列表的问题
  • \n
\n"},{"version":"0.8.2","desc":"

修复

\n
    \n
  • 兼容旧版酷我源搜索列表过滤128k音质的bug(注:0.8.1版本仅修复了酷我源的歌曲过滤问题,该修复仅对以后添加的歌曲有效,如果是之前添加的歌曲仍会出现这个问题,现修复对之前旧列表数据的兼容处理)
  • \n
\n"},{"version":"0.8.1","desc":"

修复

\n
    \n
  • 修复酷我源搜索歌曲结果未添加128k音质导致播放128k音质时显示“该歌曲没有可播放的音频”的问题
  • \n
\n"},{"version":"0.8.0","desc":"

新增

\n
    \n
  • 新增网易云源歌曲搜索
  • \n
  • 新增网易云源歌单
  • \n
  • 新增各平台通过输入歌单链接或歌单ID打开歌单详情列表,目前只适配了网页版歌单链接,其他方式的歌单链接可能无法解析,但你可想办法获取歌单ID后输入打开。注:各平台歌单ID均为纯数字,若遇到链接里存在歌单ID但无法解析的歌单链接,可以到GitHub提交issue或发送邮件或加群830125506反馈!
  • \n
  • 新增音量调整滑动功能,现在支持鼠标左右拖动调整音量了
  • \n
\n

优化

\n
    \n
  • 优化搜索框搜索体验
  • \n
  • 优化音量条交互视觉效果
  • \n
  • 缓存歌单详情列表数据
  • \n
\n

修复

\n
    \n
  • 修复QQ源歌单无法翻页Bug
  • \n
  • 修复默认列表没有创建时无法显示收藏列表的Bug
  • \n
  • 修复网易云128k直接试听
  • \n
  • 修复歌曲音质不存在时仍然播放或下载的Bug
  • \n
  • 修复调整音量时,调整的位置与鼠标点击的位置不一致的问题
  • \n
\n"},{"version":"0.7.0","desc":"

新增

\n
    \n
  • 新增“我的收藏”本地播放列表
  • \n
  • 新增缓存清理功能,可到设置-其他查看与清理软件缓存
  • \n
  • 新增QQ音乐源搜索
  • \n
  • 新增咪咕源搜索
  • \n
  • 新增咪咕源歌单
  • \n
  • 新增咪咕源排行榜
  • \n
  • 新增我的音乐列表歌曲源显示,默认关闭,可到设置-列表设置开启
  • \n
\n

优化

\n
    \n
  • 优化选择框动画效果
  • \n
  • 尝试优化选我的音乐列表内容很多时多选的卡顿问题
  • \n
\n

修复

\n
    \n
  • 修复列表延迟显示的Bug
  • \n
  • 修复QQ音源128k音质试听
  • \n
\n"},{"version":"0.6.2","desc":"

祝贺祖国成立70周年~!

\n

新增

\n
    \n
  • 新增QQ音乐源歌单
  • \n
\n

修复

\n
    \n
  • 修正火影皮肤名字
  • \n
  • 修复当试听列表为空时,无法切到其他界面的Bug
  • \n
  • 修复百度源搜索结果为空时的接口处理Bug
  • \n
  • 恢复酷狗其他音质播放
  • \n
\n"},{"version":"0.6.1","desc":"

新增

\n
    \n
  • 新增试听列表滚动条位置恢复设置(可自动恢复到上次离开时的列表滚动位置),本功能默认开启,若不需要可到设置-列表设置将其关闭
  • \n
  • 新增 《海贼王》 皮肤,喜欢个性化的可以试试~
  • \n
\n

优化

\n
    \n
  • 新增DNS解析缓存,加快请求速度
  • \n
  • 优化代码逻辑,减少软件对系统资源的占用
  • \n
  • 优化新版本信息检测,尽量减少弹出版本获取失败弹窗弹出的概率
  • \n
  • 优化下拉列表动画效果
  • \n
\n

修复

\n
    \n
  • 修复请求超时的逻辑处理Bug,尝试修复请求无法取消导致的正在播放的歌曲与界面显示的信息不一致的问题
  • \n
  • 修复其他一些小Bug
  • \n
\n

移除

\n
    \n
  • 移除 192k 音质
  • \n
  • 移除酷我音源 ape 音质,无损推荐 flac 格式
  • \n
\n"},{"version":"0.6.0","desc":"

新增

\n
    \n
  • 新增音乐聚合搜索,目前支持酷我、酷狗、百度源搜索
  • \n
  • 新增代理功能
  • \n
\n

优化

\n
    \n
  • 优化从《梦里嫦娥》皮肤切换到其他皮肤时侧栏动画的切换效果
  • \n
\n

修复

\n
    \n
  • 修复试听列表没有歌曲时会显示列表加载中的Bug
  • \n
  • 修复切换歌单列表详情时的UI Bug
  • \n
\n"},{"version":"0.5.5","desc":"

新增

\n
    \n
  • 月是故乡明,祝大家中秋快乐🥮~~新增个性皮肤**《月里嫦娥》**,时间仓促,皮肤还不是很完善,可以试试喜不喜欢~😉
  • \n
  • 新增 MAC 版本退出快捷键支持
  • \n
  • 新增点击播放器中的歌曲标题可以复制标题的功能(遇到好听的歌曲方便分享)
  • \n
\n

修复

\n
    \n
  • 修复 MAC 系统下软件关闭时再次从 dock 打开时报错的Bug
  • \n
  • 修复下载的歌曲文件名中包含命名规则不允许的符号时下载失败的问题(若歌曲名包含这些符号会自动将其移除)
  • \n
  • 修复 MAC 版本不能复制粘贴的问题
  • \n
\n"},{"version":"0.5.4","desc":"

移除

\n
    \n
  • 下载的FLAC文件在修改歌曲信息后,软件无法播放,但使用本地播放器可以播放
  • \n
  • 为了稳妥起见,暂时移除FLAC格式的meta信息修改
  • \n
  • MP3格式无此问题
  • \n
\n"},{"version":"0.5.3","desc":"

优化

\n
    \n
  • 更新所有依赖包到最新
  • \n
\n

修复

\n
    \n
  • 修复试听酷狗源的音乐仍然获取320k音质导致获取失败的Bug
  • \n
\n"},{"version":"0.5.2","desc":"

新增

\n
    \n
  • 新增强迫症设置-离开搜索界面时是否清空搜索框
  • \n
  • 设置-关于板块新增常见问题链接
  • \n
  • 歌单左上角的分类按钮添加一个向下图标,方便识别该按钮为下拉框(该按钮可选择歌单类型,请自行尝试)
  • \n
\n

优化

\n
    \n
  • 略微优化最小化按钮字符
  • \n
  • 优化试听列表的加载体验,当歌曲数过多时列表将延迟加载
  • \n
\n

修复

\n
    \n
  • 修复下载管理的一些Bug
  • \n
\n

移除

\n
    \n
  • 因接口失效,移除网易云音源,酷狗音源仅支持播放128k音质
  • \n
\n"},{"version":"0.5.1","desc":"

新增

\n
    \n
  • 新增右上角最小化/关闭按钮鼠标滑过符号
  • \n
  • 新增下载列表定位文件按钮
  • \n
\n

修复

\n
    \n
  • 修复百度源歌单全部分类无法加载的问题
  • \n
  • 修复更新弹窗无法弹出的问题
  • \n
\n"},{"version":"0.5.0","desc":"

新增

\n
    \n
  • 新增封面嵌入(默认开启,可到设置-下载设置关闭)
  • \n
  • 新增歌词下载(默认关闭,可到设置-下载设置开启)
  • \n
  • 新增单例应用功能(实现软件单开功能,禁止软件多开)
  • \n
\n

优化

\n
    \n
  • 优化歌单列表动画
  • \n
\n

修复

\n
    \n
  • 修复歌单无法翻页的问题
  • \n
  • 修复在某些情况下,添加下载歌曲导致下载列表崩溃的问题
  • \n
  • 修复版本更新弹窗Bug
  • \n
  • 修复酷狗歌单推荐歌单出现在其他分类中的Bug
  • \n
\n"},{"version":"0.4.0","desc":"

新增

\n
    \n
  • 新增歌单功能,目前支持酷我、酷狗、百度源歌单
  • \n
  • 在设置界面-关于洛雪音乐说明部分新增最新版网盘下载地址打赏地址
  • \n
  • 新增酷狗 电音热歌榜、DJ热歌榜
  • \n
  • 新增版本更新超时功能,对于部分无法访问GitHub的用户做更新超时提醒
  • \n
\n

移除

\n
    \n
  • 注意:0.4.0以前的版本即将失效,请更新到0.4.0版本
  • \n
\n"},{"version":"0.3.5","desc":"

新增

\n
    \n
  • 新增测试接口,该接口同样速度较慢,但软件的大部分功能可用,请自行切换到该接口,找接口辛苦,且用且珍惜!
  • \n
\n

优化

\n
    \n
  • 取消需要刷新URL时windows任务栏进度显示错误状态(现显示为暂停状态)
  • \n
\n

修复

\n
    \n
  • 修复使用临时接口时在试听列表双击灰色歌曲仍然会进行播放的Bug
  • \n
  • 修复歌词加载Bug
  • \n
\n"},{"version":"0.3.4","desc":"

优化

\n
    \n
  • 减少接口不稳定带来的影响,适当增加请求等待时间
  • \n
\n

修复

\n
    \n
  • 修复播放过程中URL过期不会刷新URL的问题
  • \n
\n"},{"version":"0.3.3","desc":"

修复

\n
    \n
  • messoer的接口已经关闭,暂时切换到临时接口使用,部分功能受限。。。
  • \n
  • 修复设置界面更新出错时仍然显示更新下载中的问题
  • \n
  • 修复手动定位播放进度条时存在偏差的问题
  • \n
  • 屏蔽播放器中没有歌曲时对进度条的点击
  • \n
\n"},{"version":"0.3.2","desc":"

新增

\n
    \n
  • 新增酷狗排行榜其他音质下载
  • \n
\n"},{"version":"0.3.1","desc":"

修复

\n
    \n
  • 修复音量条主题适配
  • \n
\n"},{"version":"0.3.0","desc":"

新增

\n
    \n
  • 新增MACLinux版本(需要的可自行下载)
  • \n
  • 新增音量调整
  • \n
  • 新增任务栏播放进度条控制选项(现在可在设置界面关闭在任务栏显示的播放进度)
  • \n
  • 新增更新出错时的弹窗提示
  • \n
  • 从该版本起,非安装版也会有更新弹窗提醒了,但仍然需要手动下载新版本更新,版本信息可到设置页面查看
  • \n
\n

修复

\n
    \n
  • 强制把临时接口设置回 messoer 接口
  • \n
\n"},{"version":"0.2.3","desc":"

新增

\n
    \n
  • 新增任务栏程序标题改变功能(播放歌曲时任务栏标题将显示当前播放的歌曲)
  • \n
\n

修复

\n
    \n
  • 使用临时接口时,试听列表中的下载按钮仍然能点击的Bug
  • \n
  • 修复某些情况下歌曲链接未能缓存的问题
  • \n
\n

移除

\n
    \n
  • 移除临时接口(因服务器被攻击,本接口已关闭)
  • \n
  • 移除列表栏设置的隐藏专辑栏选项(感觉这个设置并没有什么luan用,并且还会打破布局)
  • \n
\n"},{"version":"0.2.2","desc":"

修复

\n
    \n
  • 修复下载过程中出错重试5次都失败后不会自动开始下一个任务的Bug
  • \n
  • 修复播放到一半URL过期时不会刷新URL直接播放下一首的问题
  • \n
\n"},{"version":"0.2.1","desc":"

优化

\n
    \n
  • 新增歌曲URL存储,当URL无效时才重新获取,以减少接口不稳定的影响
  • \n
\n

修复

\n
    \n
  • 修复歌曲加载无法加载时自动切换混乱的Bug
  • \n
  • 修复移除列表最后一首歌曲时播放器不停止播放的问题
  • \n
\n"},{"version":"0.2.0","desc":"

新增

\n
    \n
  • 新增百度音乐排行榜及其音乐直接试听与下载
  • \n
  • 新增网易云排行榜音乐直接试听与下载(目前仅支持128k音质)
  • \n
  • 新增酷狗排行榜音乐直接试听与下载(目前仅支持128k音质)
  • \n
\n

修复

\n
    \n
  • 修复更新弹窗历史版本描述多余的换行问题
  • \n
  • 修复歌曲无法播放的情况下歌词仍会播放的问题
  • \n
\n"},{"version":"0.1.6","desc":"

修复

\n
    \n
  • 修复列表多选音源限制Bug
  • \n
\n"},{"version":"0.1.5","desc":"

新增

\n
    \n
  • 新增搜索列表批量试听与下载功能
  • \n
  • 新增排行榜列表批量试听与下载功能
  • \n
  • 新增试听列表批量移除与下载功能
  • \n
  • 新增下载列表批量开始、暂停与移除功能
  • \n
\n

优化

\n
    \n
  • 优化歌曲切换机制
  • \n
\n"},{"version":"0.1.4","desc":"

新增

\n
    \n
  • 新增音乐来源切换,可到设置页面-基本设置 look look !
  • \n
  • 为搜索结果列表添加多选功能。
    \nP.S:暂时没想好多选后的操作按钮放哪…
  • \n
\n

优化

\n
    \n
  • 重构与改进checkbox组件,使其支持不定选中状态
  • \n
  • 完善上一个版本的http请求封装并切换部分请求到该方法上
  • \n
  • 优化其他一些细节
  • \n
\n"},{"version":"0.1.3","desc":"

新增

\n
    \n
  • 新增win32应用构建
  • \n
\n

修复

\n
    \n
  • 修复安装包许可协议乱码问题
  • \n
  • messoer 提供的接口已挂,暂时切换到临时接口!
  • \n
\n

移除

\n
    \n
  • 由于messoer接口无法使用,QQ音乐排行榜直接播放/下载功能暂时关闭
  • \n
\n"},{"version":"0.1.2","desc":"

修复

\n
    \n
  • 修复更新弹窗的内容显示问题
  • \n
\n"},{"version":"0.1.1","desc":"

新增

\n
    \n
  • QQ音乐排行榜直接试听与下载(该接口貌似不太稳定,且用且珍惜!)
  • \n
\n

优化

\n
    \n
  • 优化http请求机制
  • \n
  • 更新关于本软件说明
  • \n
\n

修复

\n
    \n
  • 修复当上一个歌曲链接正在获取时切换歌曲请求不会取消的问题
  • \n
  • 修复切换歌曲时仍然播放上一首歌曲的问题
  • \n
\n"},{"version":"0.1.0","desc":"0.1.0版本发布"}]}