新增桌面歌词

This commit is contained in:
lyswhut
2020-06-11 21:16:59 +08:00
parent 25fc0226aa
commit 2a81d41c2c
107 changed files with 6935 additions and 1543 deletions
+16 -46
View File
@@ -1,9 +1,7 @@
import fs from 'fs'
import { shell, clipboard } from 'electron'
import crypto from 'crypto'
import { rendererSend, rendererInvoke } from '../../common/ipc'
import { defaultSetting, overwriteSetting } from '../config/defaultSetting'
import apiSource from '../config/api-source'
import { rendererSend, rendererInvoke, NAMES } from '../../common/ipc'
/**
* 获取两个数之间的随机整数,大于等于min,小于max
@@ -133,13 +131,13 @@ export const checkPath = (path) => new Promise(resolve => {
* 选择路径
* @param {*} 选项
*/
export const selectDir = options => rendererInvoke('selectDir', options)
export const selectDir = options => rendererInvoke(NAMES.mainWindow.select_dir, options)
/**
* 打开保存对话框
* @param {*} 选项
*/
export const openSaveDir = options => rendererInvoke('showSaveDialog', options)
export const openSaveDir = options => rendererInvoke(NAMES.mainWindow.show_save_dialog, options)
/**
* 在资源管理器中打开目录
@@ -176,20 +174,21 @@ export const isObject = item => item && typeof item === 'object' && !Array.isArr
/**
* 对象深度合并
* 注意:循环引用的对象会出现死循环
* @param {} target 要合并源对象
* @param {} source 要合并目标对象
*/
export const objectDeepMerge = (target, source) => {
export const objectDeepMerge = (target, source, mergedObj) => {
if (!mergedObj) {
mergedObj = new Set()
mergedObj.add(target)
}
let base = {}
Object.keys(source).forEach(item => {
if (Array.isArray(source[item])) {
let arr = Array.isArray(target[item]) ? target[item] : []
target[item] = arr.concat(source[item])
return
} else if (isObject(source[item])) {
if (isObject(source[item])) {
if (mergedObj.has(source[item])) return
if (!isObject(target[item])) target[item] = {}
objectDeepMerge(target[item], source[item])
mergedObj.add(source[item])
objectDeepMerge(target[item], source[item], mergedObj)
return
}
base[item] = source[item]
@@ -197,35 +196,6 @@ export const objectDeepMerge = (target, source) => {
Object.assign(target, base)
}
/**
* 升级设置
* @param {*} setting
*/
export const updateSetting = (setting, version) => {
const defaultVersion = defaultSetting.version
if (!version) {
if (setting) {
version = setting.version
delete setting.version
}
}
if (!setting) {
setting = defaultSetting
} else if (checkVersion(version, defaultVersion)) {
objectDeepMerge(defaultSetting, setting)
objectDeepMerge(defaultSetting, overwriteSetting)
setting = defaultSetting
}
if (!apiSource.some(api => api.id === setting.apiSource && !api.disabled)) {
let api = apiSource.find(api => !api.disabled)
if (api) setting.apiSource = api.id
}
return { setting, version: defaultVersion }
}
/**
* 在浏览器打开URL
* @param {*} url
@@ -267,7 +237,7 @@ export const clipboardReadText = str => clipboard.readText()
* @param {*} meta
*/
export const setMeta = (filePath, meta) => {
rendererSend('setMusicMeta', { filePath, meta })
rendererSend(NAMES.mainWindow.set_music_meta, { filePath, meta })
}
/**
@@ -357,19 +327,19 @@ export const findParentNode = (target, tagName) => target.tagName == tagName ? t
/**
* 获取缓存大小
*/
export const getCacheSize = () => rendererInvoke('getCacheSize')
export const getCacheSize = () => rendererInvoke(NAMES.mainWindow.get_cache_size)
/**
* 清除缓存
*/
export const clearCache = () => rendererInvoke('clearCache')
export const clearCache = () => rendererInvoke(NAMES.mainWindow.clear_cache)
/**
* 设置窗口大小
* @param {*} width
* @param {*} height
*/
export const setWindowSize = (width, height) => rendererSend('setWindowSize', { width, height })
export const setWindowSize = (width, height) => rendererSend(NAMES.mainWindow.set_window_size, { width, height })
export const getProxyInfo = () => window.globalObj.proxy.enable
@@ -0,0 +1,26 @@
// Support qualitys: 128k 320k flac wav
module.exports = [
{
id: 'test',
name: '测试接口',
disabled: false,
supportQualitys: {
kw: ['128k'],
kg: ['128k'],
tx: ['128k'],
wy: ['128k'],
mg: ['128k'],
xm: ['128k'],
bd: ['128k'],
},
},
{
id: 'temp',
name: '临时接口',
disabled: false,
supportQualitys: {
kw: ['128k'],
},
},
]
+2 -2
View File
@@ -1,9 +1,9 @@
import apiSource from '../../config/api-source'
import apiSourceInfo from './api-source-info'
const apiList = {}
const supportQuality = {}
for (const api of apiSource) {
for (const api of apiSourceInfo) {
supportQuality[api.id] = api.supportQualitys
for (const source of Object.keys(api.supportQualitys)) {
apiList[`${api.id}_api_${source}`] = require(`./${source}/api-${api.id}`).default
+1 -1
View File
@@ -7,7 +7,7 @@ export default {
_requestObj_list: null,
_requestObj_listRecommend: null,
_requestObj_listDetail: null,
limit_list: 20,
limit_list: 30,
limit_song: 10000,
successCode: 22000,
sortList: [
+1 -1
View File
@@ -7,7 +7,7 @@ export default {
_requestObj_hotTags: null,
_requestObj_list: null,
_requestObj_listDetail: null,
limit_list: 25,
limit_list: 36,
limit_song: 10000,
successCode: 200,
sortList: [
+2 -2
View File
@@ -1,5 +1,5 @@
import { httpGet } from '../../request'
import { rendererInvoke } from '../../../../common/ipc'
import { rendererInvoke, NAMES } from '../../../../common/ipc'
if (!window.kw_token) {
window.kw_token = {
@@ -34,4 +34,4 @@ export const getToken = () => new Promise((resolve, reject) => {
})
})
export const decodeLyric = base64Data => rendererInvoke('kw_decodeLyric', base64Data)
export const decodeLyric = base64Data => rendererInvoke(NAMES.mainWindow.handle_kw_decode_lyric, base64Data)
+1 -1
View File
@@ -1,6 +1,6 @@
import { httpFetch } from '../../request'
import { weapi } from './utils/crypto'
import { formatPlayTime, sizeFormate } from '../../.'
import { formatPlayTime, sizeFormate } from '../..'
// https://github.com/Binaryify/NeteaseCloudMusicApi/blob/master/module/song_detail.js
export default {
+3 -3
View File
@@ -1,7 +1,7 @@
import { httpGet, httpFetch } from '../../request'
import { toMD5 } from '../../index'
// import crateIsg from './isg'
import { rendererInvoke } from '../../../../common/ipc'
import { rendererInvoke, NAMES } from '../../../../common/ipc'
if (!window.xm_token) {
let data = window.localStorage.getItem('xm_token')
@@ -96,7 +96,7 @@ export const xmRequest = (path, params = '') => {
if (resp.body.code !== 'SUCCESS' && resp.body.rgv587_flag == 'sm') {
window.globalObj.xm.isShowVerify = true
return wait(300).then(() => {
return rendererInvoke('xm_verify_open', 'https:' + resp.body.url).then(x5sec => {
return rendererInvoke(NAMES.mainWindow.handle_xm_verify_open, 'https:' + resp.body.url).then(x5sec => {
handleSaveToken({ cookies: { x5sec } })
// console.log(x5sec)
window.globalObj.xm.isShowVerify = false
@@ -117,6 +117,6 @@ export const xmRequest = (path, params = '') => {
export const closeVerifyModal = async() => {
if (!window.globalObj.xm.isShowVerify) return
await rendererInvoke('xm_verify_close')
await rendererInvoke(NAMES.mainWindow.handle_xm_verify_close)
window.globalObj.xm.isShowVerify = false
}