新增桌面歌词
This commit is contained in:
+16
-46
@@ -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'],
|
||||
},
|
||||
},
|
||||
]
|
||||
@@ -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
|
||||
|
||||
@@ -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: [
|
||||
|
||||
@@ -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: [
|
||||
|
||||
@@ -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,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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user