From f6b5faff11c20a2e1549ae6dc843e12689d865dd Mon Sep 17 00:00:00 2001 From: lyswhut Date: Sat, 20 Nov 2021 22:35:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9B=A0kw=E6=BA=90=E6=AD=8C?= =?UTF-8?q?=E8=AF=8D=E6=8E=A5=E5=8F=A3=E5=81=9C=E7=94=A8=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E8=AF=A5=E6=BA=90=E6=AD=8C=E8=AF=8D=E8=8E=B7=E5=8F=96=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- publish/changeLog.md | 4 ++++ src/utils/music/kw/lyric.js | 47 +++++++++++++++++++++++++++++++++---- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/publish/changeLog.md b/publish/changeLog.md index 37feef1..a60cdd1 100644 --- a/publish/changeLog.md +++ b/publish/changeLog.md @@ -2,6 +2,10 @@ - 添加应用初始化出错时的错误捕获输出 +### 修复 + +- 修复因kw源歌词接口停用导致该源歌词获取失败的问题 + ### 其他 - 更新react-native到v0.66.2 diff --git a/src/utils/music/kw/lyric.js b/src/utils/music/kw/lyric.js index 8c424f1..f3fef8a 100644 --- a/src/utils/music/kw/lyric.js +++ b/src/utils/music/kw/lyric.js @@ -1,19 +1,56 @@ import { httpFetch } from '../../request' +import { decodeName } from '../../index' export default { formatTime(time) { - const m = parseInt(time / 60) - const s = (time % 60).toFixed(2) + let m = parseInt(time / 60) + let s = (time % 60).toFixed(2) return (m < 10 ? '0' + m : m) + ':' + (s < 10 ? '0' + s : s) }, - transformLrc({ songinfo, lrclist }) { + 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 }) => { - if (body.status != 200) return Promise.reject(new Error('请求失败')) - return { lyric: this.transformLrc(body.data), tlyric: '', lxlyric: null } + // 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 },