Skip to content

Commit 6d935d8

Browse files
committed
更换下载库
1 parent 9670933 commit 6d935d8

11 files changed

Lines changed: 439 additions & 147 deletions

File tree

package-lock.json

Lines changed: 7 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@
147147
"chalk": "^3.0.0",
148148
"changelog-parser": "^2.8.0",
149149
"copy-webpack-plugin": "^5.0.5",
150-
"core-js": "^3.4.0",
150+
"core-js": "^3.4.1",
151151
"cos-nodejs-sdk-v5": "^2.5.14",
152152
"cross-env": "^6.0.3",
153153
"css-loader": "^3.2.0",
@@ -203,13 +203,12 @@
203203
"flac-metadata": "^0.1.1",
204204
"js-htmlencode": "^0.3.0",
205205
"lrc-file-parser": "^0.1.14",
206-
"node-downloader-helper": "^1.0.10",
207206
"node-id3": "^0.1.12",
208207
"request": "^2.88.0",
209208
"vue": "^2.6.10",
210209
"vue-electron": "^1.0.6",
211210
"vue-router": "^3.1.3",
212-
"vuex": "^3.1.1",
211+
"vuex": "^3.1.2",
213212
"vuex-electron": "^1.0.3",
214213
"vuex-router-sync": "^5.0.0"
215214
}

publish/changeLog.md

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
1+
由于新下载库仍然没有完成,但下载功能已经可用,so 移除之前使用的第三方下载库,暂时把新下载库的下载模块直接加入本程序,若出现下载问题欢迎反馈!
2+
13
### 新增
24

3-
- 新增歌曲缓冲定时器,尝试用于解决网络正常但是歌曲缓冲过久的问题
4-
- 新增下载管理的任务状态分类
5-
- 添加**杀毒软件提示有病毒或恶意行为**的说明,可到**常见问题**拉到最后查看(常见问题可在开源地址找到)
5+
- 新增下载功能对代理设置的支持,现在若在软件设置了代理服务器,下载功能也将会走代理网络了
66

77
### 优化
88

9-
- 优化更新弹窗机制及其内容描述,对于可以自动更新的版本,现在可以看到软件的下载进度了
9+
- 新下载模块将对恢复下载的任务进行字节校验,用于解决下载进度超过100%后仍然下载的问题
10+
- 注意:目前仍然无法暂停处于**链接获取**状态中的任务
11+
12+
### 修复
13+
14+
- 修复下载列表歌曲状态分类列表操作Bug
15+
- 修复歌曲封面下载失败时仍然执行嵌入封面操作导致报错的问题
16+
- 跳过重复添加**相同歌曲名与扩展名的歌曲**,例如你之前下载了A歌曲的128k音质,现在想要下载它的320k音质,但由于两者都是MP3格式,会因为重名导致之前的128k音质被覆盖但列表中仍然显示两种音质的问题(但实际上都是指向后面的320k音质)

src/renderer/store/modules/download.js

Lines changed: 48 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ const getExt = type => {
5353
}
5454
}
5555

56-
const checkList = (list, musicInfo, type) => list.some(s => s.musicInfo.songmid === musicInfo.songmid && s.type === type)
56+
const checkList = (list, musicInfo, type, ext) => list.some(s => s.musicInfo.songmid === musicInfo.songmid && (s.type === type || s.ext === ext))
5757

5858
const getStartTask = (list, downloadStatus, maxDownloadNum) => {
5959
let downloadCount = 0
@@ -121,11 +121,24 @@ const downloadLyric = (downloadInfo, filePath) => {
121121
})
122122
}
123123

124+
const refreshUrl = function(commit, downloadInfo) {
125+
commit('setStatusText', { downloadInfo, text: '链接失效,正在刷新链接' })
126+
getUrl(downloadInfo, true).then(result => {
127+
commit('updateUrl', { downloadInfo, url: result.url })
128+
commit('setStatusText', { downloadInfo, text: '链接刷新成功' })
129+
dls[downloadInfo.key].refreshUrl(result.url)
130+
dls[downloadInfo.key].start()
131+
}).catch(err => {
132+
console.log(err)
133+
this.dispatch('download/startTask')
134+
})
135+
}
136+
124137
// actions
125138
const actions = {
126139
createDownload({ state, rootState, commit }, { musicInfo, type }) {
127-
if (checkList(state.list, musicInfo, type)) return
128140
let ext = getExt(type)
141+
if (checkList(state.list, musicInfo, type, ext)) return
129142
const downloadInfo = {
130143
isComplate: false,
131144
status: state.downloadStatus.WAITING,
@@ -146,6 +159,11 @@ const actions = {
146159
}
147160
downloadInfo.filePath = path.join(rootState.setting.download.savePath, downloadInfo.fileName)
148161
commit('addTask', downloadInfo)
162+
try { // 删除同路径下的同名文件
163+
fs.unlinkSync(downloadInfo.filePath)
164+
} catch (err) {
165+
if (err.code !== 'ENOENT') return commit('setStatusText', { downloadInfo, text: '文件删除失败' })
166+
}
149167
if (dls[downloadInfo.key]) {
150168
dls[downloadInfo.key].stop().finally(() => {
151169
delete dls[downloadInfo.key]
@@ -167,7 +185,7 @@ const actions = {
167185
if (!downloadInfo) downloadInfo = result
168186

169187
// 开始任务
170-
commit('onDownload', downloadInfo)
188+
commit('onStart', downloadInfo)
171189
commit('setStatusText', { downloadInfo, text: '任务初始化中' })
172190
let msg = checkPath(rootState.setting.download.savePath)
173191
if (msg) return commit('setStatusText', '检查下载目录出错: ' + msg)
@@ -178,12 +196,12 @@ const actions = {
178196
fileName: downloadInfo.fileName,
179197
method: 'get',
180198
override: true,
181-
onEnd() {
182-
if (downloadInfo.progress.progress != '100.00') {
183-
delete dls[downloadInfo.key]
184-
return this.dispatch('download/startTask', downloadInfo)
185-
}
186-
commit('onEnd', downloadInfo)
199+
onCompleted() {
200+
// if (downloadInfo.progress.progress != '100.00') {
201+
// delete dls[downloadInfo.key]
202+
// return this.dispatch('download/startTask', downloadInfo)
203+
// }
204+
commit('onCompleted', downloadInfo)
187205
_this.dispatch('download/startTask')
188206
const filePath = path.join(options.path, options.fileName)
189207

@@ -199,54 +217,40 @@ const actions = {
199217
_this.dispatch('download/startTask')
200218
return
201219
}
202-
let code
203-
if (err.message.includes('Response status was')) {
204-
code = err.message.replace(/Response status was (\d+)$/, '$1')
205-
} else if (err.code === 'ETIMEDOUT' || err.code == 'ENOTFOUND') {
206-
code = err.code
220+
if (err.code == 'ENOTFOUND') {
221+
refreshUrl.call(_this, commit, downloadInfo)
207222
} else {
208223
console.log('Download failed, Attempting Retry')
209-
dls[downloadInfo.key].resume()
224+
dls[downloadInfo.key].start()
210225
commit('setStatusText', { downloadInfo, text: '正在重试' })
226+
}
227+
},
228+
onFail(response) {
229+
commit('onError', downloadInfo)
230+
231+
if (++tryNum[downloadInfo.key] > 2) {
232+
_this.dispatch('download/startTask')
211233
return
212234
}
213-
switch (code) {
214-
case '401':
215-
case '403':
216-
case '410':
217-
case 'ETIMEDOUT':
218-
case 'ENOTFOUND':
219-
commit('setStatusText', { downloadInfo, text: '链接失效,正在刷新链接' })
220-
getUrl(downloadInfo, true).then(result => {
221-
commit('updateUrl', { downloadInfo, url: result.url })
222-
commit('setStatusText', { downloadInfo, text: '链接刷新成功' })
223-
dls[downloadInfo.key].url = dls[downloadInfo.key].requestURL = result.url
224-
dls[downloadInfo.key].__initProtocol(result.url)
225-
dls[downloadInfo.key].resume()
226-
}).catch(err => {
227-
console.log(err)
228-
_this.dispatch('download/startTask')
229-
})
235+
switch (response.statusCode) {
236+
case 401:
237+
case 403:
238+
case 410:
239+
refreshUrl.call(_this, commit, downloadInfo)
230240
}
231241
},
232-
// onStateChanged(state) {
233-
// console.log(state)
234-
// },
235-
onDownload() {
236-
commit('onDownload', downloadInfo)
237-
console.log('on download')
242+
onStart() {
243+
commit('onStart', downloadInfo)
244+
console.log('on start')
238245
},
239246
onProgress(status) {
240247
commit('onProgress', { downloadInfo, status })
241248
console.log(status)
242249
},
243-
onPause() {
250+
onStop() {
244251
commit('pauseTask', downloadInfo)
245252
_this.dispatch('download/startTask')
246253
},
247-
onResume() {
248-
commit('resumeTask', downloadInfo)
249-
},
250254
}
251255
commit('setStatusText', { downloadInfo, text: '获取URL中...' })
252256
let p = options.url ? Promise.resolve() : getUrl(downloadInfo).then(result => {
@@ -315,9 +319,6 @@ const mutations = {
315319
downloadInfo.status = state.downloadStatus.PAUSE
316320
downloadInfo.statusText = '暂停下载'
317321
},
318-
resumeTask(state, downloadInfo) {
319-
downloadInfo.statusText = '开始下载'
320-
},
321322
setStatusText(state, { downloadInfo, index, text }) { // 设置状态文本
322323
if (downloadInfo) {
323324
downloadInfo.statusText = text
@@ -352,7 +353,7 @@ const mutations = {
352353
state.list[index].status = status
353354
}
354355
},
355-
onEnd(state, downloadInfo) {
356+
onCompleted(state, downloadInfo) {
356357
downloadInfo.isComplate = true
357358
downloadInfo.status = state.downloadStatus.COMPLETED
358359
downloadInfo.statusText = '下载完成'
@@ -361,7 +362,7 @@ const mutations = {
361362
downloadInfo.status = state.downloadStatus.ERROR
362363
downloadInfo.statusText = '任务出错'
363364
},
364-
onDownload(state, downloadInfo) {
365+
onStart(state, downloadInfo) {
365366
downloadInfo.status = state.downloadStatus.RUN
366367
downloadInfo.statusText = '正在下载'
367368
},

0 commit comments

Comments
 (0)