33 lines
1.1 KiB
JavaScript
33 lines
1.1 KiB
JavaScript
import { httpGet, cancelHttp } from '../../request'
|
|
import { b64DecodeUnicode } from '../../index'
|
|
|
|
export default {
|
|
_musicLrcRequestObj: null,
|
|
_musicLrcPromiseCancelFn: null,
|
|
regexps: {
|
|
matchLrc: /.+"lyric":"([\w=+/]*)".+/,
|
|
},
|
|
getLyric(songmid) {
|
|
if (this._musicLrcRequestObj != null) {
|
|
cancelHttp(this._musicLrcRequestObj)
|
|
this._musicLrcPromiseCancelFn(new Error('取消http请求'))
|
|
}
|
|
return new Promise((resolve, reject) => {
|
|
this._musicLrcPromiseCancelFn = reject
|
|
this._musicLrcRequestObj = httpGet(`https://c.y.qq.com/lyric/fcgi-bin/fcg_query_lyric_new.fcg?songmid=${songmid}&g_tk=2001461048&loginUin=0&hostUin=0&format=jsonp&inCharset=utf8&outCharset=utf-8&platform=yqq`, {
|
|
headers: {
|
|
Referer: 'https://y.qq.com/portal/player.html',
|
|
},
|
|
}, (err, resp, body) => {
|
|
this._musicLrcRequestObj = null
|
|
this._musicLrcPromiseCancelFn = null
|
|
if (err) {
|
|
console.log(err)
|
|
reject(err)
|
|
}
|
|
resolve(b64DecodeUnicode(body.replace(this.regexps.matchLrc, '$1')))
|
|
})
|
|
})
|
|
},
|
|
}
|