修复因kw源歌词接口停用导致该源歌词获取失败的问题
parent
fe95b45820
commit
976be6d96f
|
@ -3,3 +3,4 @@
|
|||
- 修复设置-控制按钮位置选项与下载歌词编码格式选项命名冲突导致选项显示异常的问题
|
||||
- 修复播放下载列表时存在失效的歌曲会导致切歌不准确的问题
|
||||
- 修复潜在的音乐加载超时不会切歌的问题
|
||||
- 修复因kw源歌词接口停用导致该源歌词获取失败的问题
|
||||
|
|
|
@ -35,7 +35,7 @@ const names = {
|
|||
|
||||
lang_s2t: 'lang_s2t',
|
||||
|
||||
handle_kw_decode_lyric: 'handle_kw_decode_lyric',
|
||||
// handle_kw_decode_lyric: 'handle_kw_decode_lyric',
|
||||
get_lyric_info: 'get_lyric_info',
|
||||
set_lyric_info: 'set_lyric_info',
|
||||
set_config: 'set_config',
|
||||
|
|
|
@ -21,7 +21,7 @@ require('./lyric')
|
|||
require('./musicUrl')
|
||||
require('./systemFonts')
|
||||
|
||||
require('./kw_decodeLyric')
|
||||
// require('./kw_decodeLyric')
|
||||
|
||||
require('./userApi')
|
||||
require('./sync')
|
||||
|
|
|
@ -1,7 +1,63 @@
|
|||
import { httpFetch } from '../../request'
|
||||
import { decodeLyric } from './util'
|
||||
import { decodeName } from '../../index'
|
||||
|
||||
export default {
|
||||
formatTime(time) {
|
||||
let m = parseInt(time / 60)
|
||||
let s = (time % 60).toFixed(2)
|
||||
return (m < 10 ? '0' + m : m) + ':' + (s < 10 ? '0' + s : s)
|
||||
},
|
||||
sortLrcArr(arr) {
|
||||
const lrcSet = new Set()
|
||||
let lrc = []
|
||||
let lrcT = []
|
||||
|
||||
for (const item of arr) {
|
||||
if (lrcSet.has(item.time)) {
|
||||
lrc.push(item)
|
||||
} else {
|
||||
lrcT.push(item)
|
||||
lrcSet.add(item.time)
|
||||
}
|
||||
}
|
||||
if (lrc.length) {
|
||||
lrc.unshift(lrcT.shift())
|
||||
} else {
|
||||
lrc = lrcT
|
||||
lrcT = []
|
||||
}
|
||||
|
||||
return {
|
||||
lrc,
|
||||
lrcT,
|
||||
}
|
||||
},
|
||||
transformLrc(songinfo, lrclist) {
|
||||
return `[ti:${songinfo.songName}]\n[ar:${songinfo.artist}]\n[al:${songinfo.album}]\n[by:]\n[offset:0]\n${lrclist ? lrclist.map(l => `[${this.formatTime(l.time)}]${l.lineLyric}\n`).join('') : '暂无歌词'}`
|
||||
},
|
||||
getLyric(songId) {
|
||||
const requestObj = httpFetch(`http://m.kuwo.cn/newh5/singles/songinfoandlrc?musicId=${songId}`)
|
||||
requestObj.promise = requestObj.promise.then(({ body }) => {
|
||||
// console.log(body)
|
||||
if (!body.data?.lrclist?.length) return Promise.reject(new Error('Get lyric failed'))
|
||||
const { lrc, lrcT } = this.sortLrcArr(body.data.lrclist)
|
||||
// console.log(body.data.lrclist)
|
||||
// console.log(lrc, lrcT)
|
||||
// console.log({
|
||||
// lyric: decodeName(this.transformLrc(body.data.songinfo, lrc)),
|
||||
// tlyric: decodeName(this.transformLrc(body.data.songinfo, lrcT)),
|
||||
// })
|
||||
return {
|
||||
lyric: decodeName(this.transformLrc(body.data.songinfo, lrc)),
|
||||
tlyric: lrcT.length ? decodeName(this.transformLrc(body.data.songinfo, lrcT)) : '',
|
||||
}
|
||||
})
|
||||
return requestObj
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
/* export default {
|
||||
lrcInfoRxp: /<lyric>(.+?)<\/lyric>[\s\S]+<lyric_zz>(.+?)<\/lyric_zz>/,
|
||||
parseLyricInfo(str) {
|
||||
let result = str.match(this.lrcInfoRxp)
|
||||
|
@ -10,6 +66,7 @@ export default {
|
|||
getLyric(songId, isGetLyricx = false) {
|
||||
const requestObj = httpFetch(`http://player.kuwo.cn/webmusic/st/getNewMuiseByRid?rid=MUSIC_${songId}`)
|
||||
requestObj.promise = requestObj.promise.then(({ statusCode, body }) => {
|
||||
console.log(body)
|
||||
if (statusCode != 200) return Promise.reject(new Error(JSON.stringify(body)))
|
||||
let info = this.parseLyricInfo(body)
|
||||
if (!info) return Promise.reject(new Error(JSON.stringify(body)))
|
||||
|
@ -27,3 +84,4 @@ export default {
|
|||
return requestObj
|
||||
},
|
||||
}
|
||||
*/
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { httpGet, httpFetch } from '../../request'
|
||||
import { rendererInvoke, NAMES } from '../../../../common/ipc'
|
||||
// import { rendererInvoke, NAMES } from '../../../../common/ipc'
|
||||
|
||||
const kw_token = {
|
||||
token: null,
|
||||
|
@ -54,7 +54,7 @@ export const getToken = (retryNum = 0) => new Promise((resolve, reject) => {
|
|||
})
|
||||
})
|
||||
|
||||
export const decodeLyric = base64Data => rendererInvoke(NAMES.mainWindow.handle_kw_decode_lyric, base64Data)
|
||||
// export const decodeLyric = base64Data => rendererInvoke(NAMES.mainWindow.handle_kw_decode_lyric, base64Data)
|
||||
|
||||
export const tokenRequest = async(url, options = {}) => {
|
||||
let token = kw_token.token
|
||||
|
|
Loading…
Reference in New Issue