新增:封面嵌入、歌词下载;修复Bug

This commit is contained in:
lyswhut
2019-09-05 01:41:36 +08:00
parent 8a6ee68e58
commit 809be41e64
21 changed files with 193 additions and 21 deletions
+2 -2
View File
@@ -2,7 +2,7 @@
div(:class="$style.tagList")
div(:class="$style.label" ref="dom_btn" @click="handleShow") {{value.name}}
div.scroll(:class="$style.list" @click.stop ref="dom_list" :style="listStyle")
div(:class="$style.tag" @click="handleClick(null)") 全部
div(:class="$style.tag" @click="handleClick(null)") 默认
dl(v-for="type in list")
dt(:class="$style.type") {{type.name}}
dd(:class="$style.tag" v-for="tag in type.list" @click="handleClick(tag)") {{tag.name}}
@@ -66,7 +66,7 @@ export default {
handleClick(item) {
if (!item) {
item = {
name: '全部',
name: '默认',
id: null,
}
}
+1 -1
View File
@@ -6,7 +6,7 @@ export default {
getVersionInfo() {
return new Promise((resolve, reject) => {
httpGet(`https://raw.githubusercontent.com/${author.name}/${name}/master/publish/version.json`, (err, resp, body) => {
if (!err) {
if (err) {
return resolve({
version: '0.0.0',
desc: '<h3>版本信息获取失败</h3><ul><li>更新信息获取失败,可能是无法访问Github导致的,请手动检查更新!</li><li>检查方法:去设置-关于洛雪音乐打开<strong>开源地址</strong>或<strong>网盘地址</strong>查看<strong>版本号</strong>与当前版本对比是否最新</li></ul>',
+46
View File
@@ -3,6 +3,7 @@ import fs from 'fs'
import path from 'path'
import music from '../../utils/music'
import { getMusicType } from '../../utils/music/utils'
import { setMeta, saveLrc } from '../../utils'
// state
const state = {
@@ -75,6 +76,43 @@ const getUrl = (downloadInfo, isRefresh) => {
return url && !isRefresh ? Promise.resolve({ url }) : music[downloadInfo.musicInfo.source].getMusicUrl(downloadInfo.musicInfo, downloadInfo.type).promise
}
/**
* 设置歌曲meta信息
* @param {*} downloadInfo
* @param {*} filePath
* @param {*} isEmbedPic
*/
const saveMeta = (downloadInfo, filePath, isEmbedPic) => {
if (downloadInfo.type === 'ape') return
const promise = isEmbedPic
? downloadInfo.musicInfo.img
? Promise.resolve(downloadInfo.musicInfo.img)
: music[downloadInfo.musicInfo.source].getPic(downloadInfo.musicInfo).promise
: Promise.resolve()
promise.then(url => {
setMeta(filePath, {
title: downloadInfo.musicInfo.name,
artist: downloadInfo.musicInfo.singer,
album: downloadInfo.musicInfo.albumName,
APIC: url,
})
})
}
/**
* 保存歌词
* @param {*} downloadInfo
* @param {*} filePath
*/
const downloadLyric = (downloadInfo, filePath) => {
const promise = downloadInfo.musicInfo.lrc
? Promise.resolve(downloadInfo.musicInfo.lrc)
: music[downloadInfo.musicInfo.source].getLyric(downloadInfo.musicInfo).promise
promise.then(lrc => {
if (lrc) saveLrc(filePath.replace(/(mp3|flac|ape)$/, 'lrc'), lrc)
})
}
// actions
const actions = {
createDownload({ state, rootState, commit }, { musicInfo, type }) {
@@ -133,8 +171,16 @@ const actions = {
method: 'get',
override: true,
onEnd() {
if (downloadInfo.progress.progress != '100.00') {
delete dls[downloadInfo.key]
return this.dispatch('download/startTask', downloadInfo)
}
commit('onEnd', downloadInfo)
_this.dispatch('download/startTask')
const filePath = path.join(options.path, options.fileName)
saveMeta(downloadInfo, filePath, rootState.setting.download.isEmbedPic)
if (rootState.setting.download.isDownloadLrc) downloadLyric(downloadInfo, filePath)
console.log('on complate')
},
onError(err) {
-1
View File
@@ -97,7 +97,6 @@ const mutations = {
state.selectListInfo = info
},
clearListDetail(state) {
console.log('object')
state.listDetail.list = []
},
}
+25 -2
View File
@@ -3,6 +3,7 @@ import { shell, remote, clipboard } from 'electron'
import path from 'path'
import os from 'os'
import crypto from 'crypto'
import { rendererSend } from '../../common/icp'
/**
* 获取两个数之间的随机整数,大于等于min,小于max
@@ -162,7 +163,7 @@ export const isChildren = (parent, children) => {
* @param {*} setting
*/
export const updateSetting = setting => {
const defaultVersion = '1.0.5'
const defaultVersion = '1.0.6'
const defaultSetting = {
version: defaultVersion,
player: {
@@ -178,6 +179,8 @@ export const updateSetting = setting => {
savePath: path.join(os.homedir(), 'Desktop'),
fileName: '歌名 - 歌手',
maxDownloadNum: 3,
isDownloadLrc: false,
isEmbedPic: true,
},
leaderboard: {
source: 'kw',
@@ -187,7 +190,7 @@ export const updateSetting = setting => {
source: 'kg',
sortId: '5',
tagInfo: {
name: '全部',
name: '默认',
id: null,
},
},
@@ -242,3 +245,23 @@ export const toMD5 = str => crypto.createHash('md5').update(str).digest('hex')
* @param {*} str
*/
export const clipboardWriteText = str => clipboard.writeText(str)
/**
* 设置音频 meta 信息
* @param {*} filePath
* @param {*} meta
*/
export const setMeta = (filePath, meta) => {
rendererSend('setMusicMeta', { filePath, meta })
}
/**
* 保存歌词文件
* @param {*} filePath
* @param {*} lrc
*/
export const saveLrc = (filePath, lrc) => {
fs.writeFile(filePath, lrc, 'utf8', err => {
if (err) console.log(err)
})
}
+1 -1
View File
@@ -89,7 +89,7 @@ export default {
},
getListUrl(sortType, tagName, page) {
return this.createUrl({
channelname: tagName || '全部',
channelname: tagName || '默认',
from: 'qianqianmini',
offset: (page - 1) * this.limit_list,
order_type: sortType,
+1 -1
View File
@@ -231,7 +231,7 @@ export default {
return info
})
)
if (!tagId && page === 1) tasks.push(this.getSongListRecommend()) // 如果是所有类别,则顺便获取推荐列表
if (!tagId && page === 1 && sortId === this.sortList[0].id) tasks.push(this.getSongListRecommend()) // 如果是所有类别,则顺便获取推荐列表
return Promise.all(tasks).then(([list, info, recommendList]) => {
if (recommendList) list.unshift(...recommendList)
return {
-2
View File
@@ -23,7 +23,6 @@ export default {
tagsUrl: 'http://wapi.kuwo.cn/api/pc/classify/playlist/getTagList?cmd=rcm_keyword_playlist&user=0&prod=kwplayer_pc_9.0.5.0&vipver=9.0.5.0&source=kwplayer_pc_9.0.5.0&loginUid=0&loginSid=0&appUid=76039576',
hotTagUrl: 'http://wapi.kuwo.cn/api/pc/classify/playlist/getRcmTagList?loginUid=0&loginSid=0&appUid=76039576',
getListUrl({ sortId, id, type, page }) {
console.log(id, type)
if (!id) return `http://wapi.kuwo.cn/api/pc/classify/playlist/getRcmPlayList?loginUid=0&loginSid=0&appUid=76039576&&pn=${page}&rn=${this.limit_list}&order=${sortId}`
switch (type) {
case '10000': return `http://wapi.kuwo.cn/api/pc/classify/playlist/getTagPlayList?loginUid=0&loginSid=0&appUid=76039576&pn=${page}&id=${id}&rn=${this.limit_list}`
@@ -145,7 +144,6 @@ export default {
desc: item.desc,
})))
})
console.log(list)
return list
},
+1
View File
@@ -15,4 +15,5 @@ export const getMusicType = (info, type) => {
for (const type of rangeType) {
if (info._types[type]) return type
}
return '128k'
}
+1 -1
View File
@@ -41,8 +41,8 @@ const buildHttpPromose = (url, options) => {
const obj = {
promise: p,
cancelHttp() {
console.log('cancel')
if (!requestObj) return
console.log('cancel')
cancelHttp(requestObj)
cancelFn(new Error(requestMsg.cancelRequest))
requestObj = null
+1 -1
View File
@@ -23,7 +23,7 @@ div(:class="$style.download")
td.break(style="width: 28%;") {{item.musicInfo.name}} - {{item.musicInfo.singer}}
td.break(style="width: 22%;") {{item.progress.progress}}%
td.break(style="width: 15%;") {{item.statusText}}
td.break(style="width: 10%;") {{item.type.toUpperCase()}}
td.break(style="width: 10%;") {{item.type && item.type.toUpperCase()}}
td(style="width: 20%; padding-left: 0; padding-right: 0;")
material-list-buttons(:index="index" :download-btn="false" :start-btn="!item.isComplate && item.status != downloadStatus.WAITING && (item.status != downloadStatus.RUN)"
:pause-btn="!item.isComplate && (item.status == downloadStatus.RUN || item.status == downloadStatus.WAITING)"
+10
View File
@@ -49,6 +49,14 @@ div.scroll(:class="$style.setting")
div
material-checkbox(:id="`setting_download_musicName_${item.value}`" :class="$style.gapLeft" name="setting_download_musicName" :value="item.value" :key="item.value" need
v-model="current_setting.download.fileName" v-for="item in musicNames" :label="item.name")
dd(title='封面嵌入')
h3 是否将封面嵌入音频文件中(只支持MP3格式)
div
material-checkbox(id="setting_download_isEmbedPic" v-model="current_setting.download.isEmbedPic" label="是否启用")
dd(title='歌词下载')
h3 是否同时下载歌词文件
div
material-checkbox(id="setting_download_isDownloadLrc" v-model="current_setting.download.isDownloadLrc" label="是否启用")
//- dt 列表设置
//- dd(title='播放列表是否显示专辑栏')
h3 专辑栏
@@ -146,6 +154,8 @@ export default {
download: {
savePath: '',
fileName: '歌名 - 歌手',
isDownloadLrc: false,
isEmbedPic: true,
},
themeId: 0,
sourceId: 0,
+2 -2
View File
@@ -42,7 +42,7 @@ export default {
data() {
return {
tagInfo: {
name: '全部',
name: '默认',
id: null,
},
sortId: undefined,
@@ -103,7 +103,7 @@ export default {
if (o) {
this.isToggleSource = true
this.tagInfo = {
name: '全部',
name: '默认',
id: null,
}
this.sortId = this.sorts[0] && this.sorts[0].id