更新到v0.2.3版本

pull/96/head v0.2.3
lyswhut 2019-08-22 23:02:59 +08:00
parent 893d20b4e9
commit 2b3aab2faf
19 changed files with 128 additions and 49 deletions

View File

@ -6,6 +6,38 @@ Project versioning adheres to [Semantic Versioning](http://semver.org/).
Commit convention is based on [Conventional Commits](http://conventionalcommits.org). Commit convention is based on [Conventional Commits](http://conventionalcommits.org).
Change log format is based on [Keep a Changelog](http://keepachangelog.com/). Change log format is based on [Keep a Changelog](http://keepachangelog.com/).
## [0.2.3](https://github.com/lyswhut/lx-music-desktop/compare/v0.2.2...v0.2.3) - 2019-08-22
### 新增
- 新增任务栏程序标题改变功能(播放歌曲时任务栏标题将显示当前播放的歌曲)
### 修复
- 使用临时接口时试听列表中的下载按钮仍然能点击的Bug
- 修复某些情况下歌曲链接未能缓存的问题
### 移除
- 移除临时接口(因服务器被攻击,本接口已关闭)
- 移除列表栏设置的隐藏专辑栏选项感觉这个设置并没有什么luan用并且还会打破布局
## [0.2.2](https://github.com/lyswhut/lx-music-desktop/compare/v0.2.2...v0.2.2) - 2019-08-22
### 新增
- 新增任务栏程序标题改变功能(播放歌曲时任务栏标题将显示当前播放的歌曲)
### 修复
- 使用临时接口时试听列表中的下载按钮仍然能点击的Bug
- 修复某些情况下歌曲链接未能缓存的问题
### 移除
- 移除临时接口(因服务器被攻击,本接口已关闭)
- 移除列表栏设置的隐藏专辑栏选项感觉这个设置并没有什么luan用并且还会打破布局
## [0.2.2](https://github.com/lyswhut/lx-music-desktop/compare/v0.2.1...v0.2.2) - 2019-08-21 ## [0.2.2](https://github.com/lyswhut/lx-music-desktop/compare/v0.2.1...v0.2.2) - 2019-08-21
### 修复 ### 修复

View File

@ -38,15 +38,17 @@
- Vue 2.x - Vue 2.x
软件变化请查看:[更新日志](https://github.com/lyswhut/lx-music-desktop/blob/master/CHANGELOG.md)<br> 软件变化请查看:[更新日志](https://github.com/lyswhut/lx-music-desktop/blob/master/CHANGELOG.md)<br>
软件下载请转到:[发布页面](https://github.com/lyswhut/lx-music-desktop/releases) 软件下载请转到:[发布页面](https://github.com/lyswhut/lx-music-desktop/releases)<br>
或者到网盘下载:<br>
其他说明TODO `https://www.lanzous.com/b906260/`<br>
`密码:glqw`
#### 关于软件更新 #### 关于软件更新
软件启动时若发现新版本时会自动从本仓库下载安装包,下载完毕会弹窗提示更新。<br> 软件启动时若发现新版本时会自动从本仓库下载安装包,下载完毕会弹窗提示更新。<br>
若下载未完成时软件被关闭,下次启动软件会再次自动下载。<br> 若下载未完成时软件被关闭,下次启动软件会再次自动下载。<br>
目前暂未添加跳过更新某个版本的功能。<br> 目前暂未添加跳过更新某个版本的功能。<br>
**注意:**绿色版的软件更新功能不可用!
### 源码使用方法 ### 源码使用方法

View File

@ -4,14 +4,14 @@ platform:
cache: cache:
- node_modules - node_modules
- '%APPDATA%\npm-cache' - '%APPDATA%\npm-cache'
# - '%USERPROFILE%\.electron' - '%LOCALAPPDATA%\electron\Cache'
install: install:
- ps: Install-Product node 12 x64 - ps: Install-Product node 12 x64
- npm install - npm install
build_script: build_script:
- npm run pub:gh - npm run publish:gh
test: off test: off

View File

@ -7,11 +7,6 @@ module.exports = {
libraryTarget: 'commonjs2', libraryTarget: 'commonjs2',
path: path.join(__dirname, '../../dist/electron'), path: path.join(__dirname, '../../dist/electron'),
}, },
externals: [
// suppress electron-debug warning
// see https://github.com/SimulatedGREG/electron-vue/issues/498
{ 'electron-debug': 'electron-debug' },
],
resolve: { resolve: {
alias: { alias: {
common: path.join(__dirname, '../../src/common'), common: path.join(__dirname, '../../src/common'),

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "lx-music-desktop", "name": "lx-music-desktop",
"version": "0.1.4", "version": "0.2.3",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View File

@ -1,12 +1,31 @@
{ {
"name": "lx-music-desktop", "name": "lx-music-desktop",
"version": "0.2.2", "version": "0.2.3",
"description": "一个免费的音乐下载助手", "description": "一个免费的音乐下载助手",
"main": "./dist/electron/main.js", "main": "./dist/electron/main.js",
"productName": "lx-music-desktop",
"scripts": { "scripts": {
"pack": "node build-config/pack.js && npm run pack:win:setup",
"pack:win": "npm run pack:win:setup && npm run pack:win:7z",
"pack:win:setup": "cross-env TARGET=Setup ARCH=x64_x86 electron-builder -w=nsis",
"pack:win:portable": "npm run pack:win:portable:x64_x86 && npm run pack:win:portable:x64 && npm run pack:win:portable:x86",
"pack:win:portable:x64_x86": "cross-env TARGET=便携版 ARCH=x64_x86 electron-builder -w=portable --x64 --ia32",
"pack:win:portable:x64": "cross-env TARGET=便携版 ARCH=x64 electron-builder -w=portable --x64",
"pack:win:portable:x86": "cross-env TARGET=便携版 ARCH=x86 electron-builder -w=portable --ia32",
"pack:win:7z": "npm run pack:win:7z:x64 && npm run pack:win:7z:x86",
"pack:win:7z:x64": "cross-env TARGET=绿色版 ARCH=x64 electron-builder -w=7z --x64",
"pack:win:7z:x86": "cross-env TARGET=绿色版 ARCH=x86 electron-builder -w=7z --ia32",
"publish": "node publish", "publish": "node publish",
"pub:gh": "node build-config/pack.js && electron-builder --win -p always", "publish:gh": "node build-config/pack.js && npm run publish:win",
"pack": "node build-config/pack.js && electron-builder -w", "publish:win": "npm run publish:win:setup && npm run publish:win:7z",
"publish:win:setup": "cross-env TARGET=Setup ARCH=x64_x86 electron-builder -w=nsis --x64 --ia32 -p always",
"publish:win:portable": "npm run publish:win:portable:x64_x86 && npm run publish:win:portable:x64 && npm run publish:win:portable:x86",
"publish:win:portable:x64_x86": "cross-env TARGET=portable ARCH=x64_x86 electron-builder -w=portable --x64 --ia32 -p onTagOrDraft",
"publish:win:portable:x64": "cross-env TARGET=portable ARCH=x64 electron-builder -w=portable --x64 -p onTagOrDraft",
"publish:win:portable:x86": "cross-env TARGET=portable ARCH=x86 electron-builder -w=portable --ia32 -p onTagOrDraft",
"publish:win:7z": "npm run publish:win:7z:x64 && npm run publish:win:7z:x86",
"publish:win:7z:x64": "cross-env TARGET=green ARCH=x64 electron-builder -w=7z --x64 -p onTagOrDraft",
"publish:win:7z:x86": "cross-env TARGET=green ARCH=x86 electron-builder -w=7z --ia32 -p onTagOrDraft",
"pack:linux": "node build-config/pack.js && electron-builder -l", "pack:linux": "node build-config/pack.js && electron-builder -l",
"pack:dir": "node build-config/pack.js && electron-builder --dir", "pack:dir": "node build-config/pack.js && electron-builder --dir",
"dev": "node build-config/runner-dev.js", "dev": "node build-config/runner-dev.js",
@ -37,15 +56,7 @@
"win": { "win": {
"icon": "src/static/icons/lunch.ico", "icon": "src/static/icons/lunch.ico",
"legalTrademarks": "lyswhut", "legalTrademarks": "lyswhut",
"target": [ "artifactName": "${productName} v${version} ${env.ARCH} ${env.TARGET}.${ext}"
{
"arch": [
"ia32",
"x64"
],
"target": "nsis"
}
]
}, },
"linux": { "linux": {
"target": [ "target": [
@ -76,7 +87,8 @@
"language": "2052", "language": "2052",
"allowToChangeInstallationDirectory": true, "allowToChangeInstallationDirectory": true,
"differentialPackage": true, "differentialPackage": true,
"license": "./license.rtf" "license": "./license.rtf",
"shortcutName": "lx-music"
}, },
"publish": [ "publish": [
{ {
@ -90,8 +102,15 @@
"type": "git", "type": "git",
"url": "git+https://github.com/lyswhut/lx-music-desktop.git" "url": "git+https://github.com/lyswhut/lx-music-desktop.git"
}, },
"keywords": [], "keywords": [
"author": "lyswhut", "music-player",
"electron-app",
"vuejs2"
],
"author": {
"name": "lyswhut",
"email": "lyswuhut@qq.com"
},
"license": "Apache-2.0", "license": "Apache-2.0",
"bugs": { "bugs": {
"url": "https://github.com/lyswhut/lx-music-desktop/issues" "url": "https://github.com/lyswhut/lx-music-desktop/issues"

View File

@ -1,7 +1,13 @@
### 新增
- 新增任务栏程序标题改变功能(播放歌曲时任务栏标题将显示当前播放的歌曲)
### 修复 ### 修复
- 使用临时接口时试听列表中的下载按钮仍然能点击的Bug - 使用临时接口时试听列表中的下载按钮仍然能点击的Bug
- 修复某些情况下歌曲链接未能缓存的问题
### 移除 ### 移除
- 移除临时接口(因服务器被攻击,本接口已关闭)
- 移除列表栏设置的隐藏专辑栏选项感觉这个设置并没有什么luan用并且还会打破布局 - 移除列表栏设置的隐藏专辑栏选项感觉这个设置并没有什么luan用并且还会打破布局

View File

@ -1,7 +1,11 @@
{
"version": "0.2.3",
"desc": "<h3>新增</h3>\n<ul>\n<li>新增任务栏程序标题改变功能(播放歌曲时任务栏标题将显示当前播放的歌曲)</li>\n</ul>\n<h3>修复</h3>\n<ul>\n<li>使用临时接口时试听列表中的下载按钮仍然能点击的Bug</li>\n<li>修复某些情况下歌曲链接未能缓存的问题</li>\n</ul>\n<h3>移除</h3>\n<ul>\n<li>移除临时接口(因服务器被攻击,本接口已关闭)</li>\n<li>移除列表栏设置的隐藏专辑栏选项感觉这个设置并没有什么luan用并且还会打破布局</li>\n</ul>\n",
"history": [
{ {
"version": "0.2.2", "version": "0.2.2",
"desc": "<h3>修复</h3>\n<ul>\n<li>修复下载过程中出错重试5次都失败后不会自动开始下一个任务的Bug</li>\n<li>修复播放到一半URL过期时不会刷新URL直接播放下一首的问题</li>\n</ul>\n", "desc": "<h3>修复</h3>\n<ul>\n<li>修复下载过程中出错重试5次都失败后不会自动开始下一个任务的Bug</li>\n<li>修复播放到一半URL过期时不会刷新URL直接播放下一首的问题</li>\n</ul>\n"
"history": [ },
{ {
"version": "0.2.1", "version": "0.2.1",
"desc": "<h3>优化</h3>\n<ul>\n<li>新增歌曲URL存储当URL无效时才重新获取以减少接口不稳定的影响</li>\n</ul>\n<h3>修复</h3>\n<ul>\n<li>修复歌曲加载无法加载时自动切换混乱的Bug</li>\n<li>修复移除列表最后一首歌曲时播放器不停止播放的问题</li>\n</ul>\n" "desc": "<h3>优化</h3>\n<ul>\n<li>新增歌曲URL存储当URL无效时才重新获取以减少接口不稳定的影响</li>\n</ul>\n<h3>修复</h3>\n<ul>\n<li>修复歌曲加载无法加载时自动切换混乱的Bug</li>\n<li>修复移除列表最后一首歌曲时播放器不停止播放的问题</li>\n</ul>\n"

View File

@ -3,7 +3,7 @@ html(lang="cn")
meta(charset="UTF-8") meta(charset="UTF-8")
meta(name="viewport" content="width=device-width, initial-scale=1.0") meta(name="viewport" content="width=device-width, initial-scale=1.0")
meta(http-equiv="X-UA-Compatible" content="ie=edge") meta(http-equiv="X-UA-Compatible" content="ie=edge")
title= require('../package.json').name title 洛雪音乐助手
body body
#root #root

View File

@ -3,6 +3,7 @@ const { autoUpdater } = require('electron-updater')
const { mainOn } = require('../../common/icp') const { mainOn } = require('../../common/icp')
autoUpdater.logger = log autoUpdater.logger = log
// autoUpdater.autoDownload = false
autoUpdater.logger.transports.file.level = 'info' autoUpdater.logger.transports.file.level = 'info'
log.info('App starting...') log.info('App starting...')
@ -62,12 +63,14 @@ module.exports = win => {
}) })
autoUpdater.on('update-available', (ev, info) => { autoUpdater.on('update-available', (ev, info) => {
sendStatusToWindow('Update available.') sendStatusToWindow('Update available.')
// win.webContents.send('update-available')
}) })
autoUpdater.on('update-not-available', (ev, info) => { autoUpdater.on('update-not-available', (ev, info) => {
sendStatusToWindow('Update not available.') sendStatusToWindow('Update not available.')
}) })
autoUpdater.on('error', (ev, err) => { autoUpdater.on('error', (ev, err) => {
sendStatusToWindow('Error in auto-updater.') sendStatusToWindow('Error in auto-updater.')
// win.webContents.send('update-error')
}) })
autoUpdater.on('download-progress', (ev, progressObj) => { autoUpdater.on('download-progress', (ev, progressObj) => {
sendStatusToWindow('Download progress...') sendStatusToWindow('Download progress...')

View File

@ -87,7 +87,7 @@ export default {
this.getVersionInfo().then(body => { this.getVersionInfo().then(body => {
this.setNewVersion(body) this.setNewVersion(body)
this.$nextTick(() => { this.$nextTick(() => {
this.setVersionVisible(true) this.setVersionVisible({ isShow: true })
}) })
}) })
}) })

View File

@ -41,7 +41,7 @@ div(:class="$style.player")
<script> <script>
import Lyric from 'lrc-file-parser' import Lyric from 'lrc-file-parser'
import { rendererSend } from '../../../common/icp' import { rendererSend } from '../../../common/icp'
import { formatPlayTime2, getRandom, checkPath } from '../../utils' import { formatPlayTime2, getRandom, checkPath, setTitle } from '../../utils'
import { mapGetters, mapActions, mapMutations } from 'vuex' import { mapGetters, mapActions, mapMutations } from 'vuex'
import { requestMsg } from '../../utils/message' import { requestMsg } from '../../utils/message'
@ -334,14 +334,14 @@ export default {
startPlay() { startPlay() {
this.isPlay = true this.isPlay = true
if (this.musicInfo.lrc) this.lyric.lrc.play(this.audio.currentTime * 1000) if (this.musicInfo.lrc) this.lyric.lrc.play(this.audio.currentTime * 1000)
this.setAppName() this.setAppTitle()
this.sendProgressEvent(this.progress, 'normal') this.sendProgressEvent(this.progress, 'normal')
}, },
stopPlay() { stopPlay() {
this.isPlay = false this.isPlay = false
this.lyric.lrc.pause() this.lyric.lrc.pause()
this.sendProgressEvent(this.progress, 'paused') this.sendProgressEvent(this.progress, 'paused')
this.clearAppName() this.clearAppTitle()
}, },
setProgess(e) { setProgess(e) {
this.audio.currentTime = this.audio.currentTime =
@ -432,13 +432,11 @@ export default {
mode: mode || 'normal', mode: mode || 'normal',
}) })
}, },
setAppName() { setAppTitle() {
// rendererSend('appName', { setTitle(`${this.musicInfo.name} - ${this.musicInfo.singer}`)
// name: `${this.musicInfo.name} - ${this.musicInfo.singer}`,
// })
}, },
clearAppName() { clearAppTitle() {
// rendererSend('appName') setTitle()
}, },
}, },
} }

View File

@ -1,6 +1,6 @@
<template lang="pug"> <template lang="pug">
div(:class="$style.checkbox") div(:class="$style.checkbox")
input(:type="need ? 'radio' : 'checkbox'" :id="id" :value="value" :name="name" @change="change" v-model="bool") input(:type="need ? 'radio' : 'checkbox'" :id="id" :disabled="disabled" :value="value" :name="name" @change="change" v-model="bool")
label(:for="id" :class="$style.content") label(:for="id" :class="$style.content")
div(v-if="indeterminate") div(v-if="indeterminate")
svg(v-show="indeterminate" version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' width="100%" viewBox='0 32 448 448' space='preserve') svg(v-show="indeterminate" version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' width="100%" viewBox='0 32 448 448' space='preserve')
@ -34,6 +34,10 @@ export default {
default: false, default: false,
}, },
label: {}, label: {},
disabled: {
type: Boolean,
default: false,
},
indeterminate: { indeterminate: {
type: Boolean, type: Boolean,
default: false, default: false,
@ -111,6 +115,11 @@ export default {
> input { > input {
display: none; display: none;
&[disabled] {
+ .content {
opacity: .5;
}
}
&:checked { &:checked {
+ .content { + .content {
> div { > div {

View File

@ -5,7 +5,7 @@ import { author, name } from '../../../package.json'
export default { export default {
getVersionInfo() { getVersionInfo() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
httpGet(`https://raw.githubusercontent.com/${author}/${name}/master/publish/version.json`, (err, resp, body) => { httpGet(`https://raw.githubusercontent.com/${author.name}/${name}/master/publish/version.json`, (err, resp, body) => {
if (err) return reject(err) if (err) return reject(err)
resolve(body) resolve(body)
}) })

View File

@ -56,7 +56,7 @@ const actions = {
// mitations // mitations
const mutations = { const mutations = {
setUrl(state, datas) { setUrl(state, datas) {
datas.musicInfo.typeUrl[datas.type] = datas.url datas.musicInfo.typeUrl = Object.assign({}, datas.musicInfo.typeUrl, { [datas.type]: datas.url })
}, },
getPic(state, datas) { getPic(state, datas) {
datas.musicInfo.img = datas.url datas.musicInfo.img = datas.url

View File

@ -19,7 +19,7 @@ export default {
// val.desc = val.desc.replace(/\n/g, '<br>') // val.desc = val.desc.replace(/\n/g, '<br>')
state.version.newVersion = val state.version.newVersion = val
}, },
setVersionVisible(state, val) { setVersionVisible(state, { isShow }) {
state.version.showModal = val state.version.showModal = isShow
}, },
} }

View File

@ -49,6 +49,7 @@ export default {
version, version,
newVersion: null, newVersion: null,
showModal: false, showModal: false,
isError: false,
}, },
userInfo: null, userInfo: null,
setting, setting,

View File

@ -209,3 +209,10 @@ export const openUrl = url => {
shell.openExternal(url) shell.openExternal(url)
} }
/**
* 设置标题
*/
let dom_title = document.getElementsByTagName('title')[0]
export const setTitle = title => {
dom_title.innerText = title || '洛雪音乐助手'
}

View File

@ -19,7 +19,7 @@ div.scroll(:class="$style.setting")
h3 音乐来源 h3 音乐来源
div div
material-checkbox(v-for="item in apiSources" :id="`setting_api_source_${item.id}`" @change="handleAPISourceChange(item.id)" :class="$style.gapTop" material-checkbox(v-for="item in apiSources" :id="`setting_api_source_${item.id}`" @change="handleAPISourceChange(item.id)" :class="$style.gapTop"
need v-model="current_setting.apiSource" :value="item.id" :label="item.label" :key="item.id") need v-model="current_setting.apiSource" :disabled="item.disabled" :value="item.id" :label="item.label" :key="item.id")
dt 播放设置 dt 播放设置
dd(title="都不选时播放完当前歌曲就停止播放") dd(title="都不选时播放完当前歌曲就停止播放")
@ -87,9 +87,9 @@ div.scroll(:class="$style.setting")
| |
p.small 若有问题可 mail tolyswhut@qq.com 或到 github 提交 issue p.small 若有问题可 mail tolyswhut@qq.com 或到 github 提交 issue
p.small p.small
| 若觉得好用的话去GitHub点个 | 若觉得好用的话可以去GitHub点个
strong star strong star
| 支持作者~ | 支持作者~~🍻
p p
small By small By
| 落雪无痕 | 落雪无痕
@ -146,11 +146,14 @@ export default {
apiSources: [ apiSources: [
{ {
id: 'messoer', id: 'messoer',
label: '由 messoer 提供的接口(推荐,软件的所有功能都可用)<br><span style="line-height: 1.5;"><strong>注意:</strong>本接口10秒内请求数超过100次会封10小时的IP</span>', label: '由 messoer 提供的接口(推荐,软件的所有功能都可用)',
disabled: false,
}, },
{ {
id: 'temp', id: 'temp',
label: '临时接口软件的某些功能将不可用建议在messoer不可用时再切换到本选项', // label: 'messoer',
label: '临时接口(因服务器被攻击,本接口已关闭)',
disabled: true,
}, },
], ],
musicNames: [ musicNames: [