From dfa1034c0f3ba88adc650ad9a856b9bae86cdd63 Mon Sep 17 00:00:00 2001 From: lyswhut Date: Wed, 15 Mar 2023 17:32:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/utils/musicSdk/kg/leaderboard.js | 48 +++++++++++-------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/src/renderer/utils/musicSdk/kg/leaderboard.js b/src/renderer/utils/musicSdk/kg/leaderboard.js index da1d3173..6f4f851c 100644 --- a/src/renderer/utils/musicSdk/kg/leaderboard.js +++ b/src/renderer/utils/musicSdk/kg/leaderboard.js @@ -4,6 +4,7 @@ import { decodeName, formatPlayTime, sizeFormate } from '../../index' let boardList = [{ id: 'kg__8888', name: '酷狗TOP500', bangid: '8888' }, { id: 'kg__6666', name: '酷狗飙升榜', bangid: '6666' }, { id: 'kg__37361', name: '酷狗雷达榜', bangid: '37361' }, { id: 'kg__23784', name: '网络红歌榜', bangid: '23784' }, { id: 'kg__24971', name: 'DJ热歌榜', bangid: '24971' }, { id: 'kg__35811', name: '会员专享热歌榜', bangid: '35811' }, { id: 'kg__31308', name: '华语新歌榜', bangid: '31308' }, { id: 'kg__31310', name: '欧美新歌榜', bangid: '31310' }, { id: 'kg__31311', name: '韩国新歌榜', bangid: '31311' }, { id: 'kg__31312', name: '日本新歌榜', bangid: '31312' }, { id: 'kg__31313', name: '粤语新歌榜', bangid: '31313' }, { id: 'kg__33162', name: 'ACG新歌榜', bangid: '33162' }, { id: 'kg__21101', name: '酷狗分享榜', bangid: '21101' }, { id: 'kg__30972', name: '腾讯音乐人原创榜', bangid: '30972' }, { id: 'kg__22603', name: '5sing音乐榜', bangid: '22603' }, { id: 'kg__33160', name: '电音热歌榜', bangid: '33160' }, { id: 'kg__21335', name: '繁星音乐榜', bangid: '21335' }, { id: 'kg__33161', name: '古风新歌榜', bangid: '33161' }, { id: 'kg__33163', name: '影视金曲榜', bangid: '33163' }, { id: 'kg__33166', name: '欧美金曲榜', bangid: '33166' }, { id: 'kg__33165', name: '粤语金曲榜', bangid: '33165' }, { id: 'kg__36107', name: '小语种热歌榜', bangid: '36107' }, { id: 'kg__4681', name: '美国BillBoard榜', bangid: '4681' }, { id: 'kg__4680', name: '英国单曲榜', bangid: '4680' }, { id: 'kg__4673', name: '日本公信榜', bangid: '4673' }, { id: 'kg__38623', name: '韩国Melon音乐榜', bangid: '38623' }, { id: 'kg__42807', name: 'joox本地热歌榜', bangid: '42807' }, { id: 'kg__42808', name: '台湾KKBOX风云榜', bangid: '42808' }] export default { + listDetailLimit: 100, list: [ { id: 'kgtop500', @@ -61,8 +62,8 @@ export default { bangid: '31308', }, ], - getUrl(p, id, limit = 100) { - return `http://mobilecdnbj.kugou.com/api/v3/rank/song?version=9108&ranktype=1&plat=0&pagesize=${limit}&area_code=1&page=${p}&rankid=${id}&with_res_tag=1&show_portrait_mv=1` + getUrl(p, id, limit) { + return `http://mobilecdnbj.kugou.com/api/v3/rank/song?version=9108&ranktype=1&plat=0&pagesize=${limit}&area_code=1&page=${p}&rankid=${id}&with_res_tag=0&show_portrait_mv=1` }, regExps: { total: /total: '(\d+)',/, @@ -80,6 +81,13 @@ export default { const requestDataObj = httpFetch(url) return requestDataObj.promise }, + getSinger(singers) { + let arr = [] + singers.forEach(singer => { + arr.push(singer.author_name) + }) + return arr.join('、') + }, filterData(rawList) { // console.log(rawList) return rawList.map(item => { @@ -118,7 +126,7 @@ export default { } } return { - singer: decodeName(item.authors.map(e => e.author_name).toString()), + singer: decodeName(this.getSinger(item.authors)), name: decodeName(item.songname), albumName: decodeName(item.remark), albumId: item.album_id, @@ -172,23 +180,23 @@ export default { source: 'kg', } }, - getList(bangid, page) { - return this.getData(this.getUrl(page, bangid)).then(({ body }) => { - // console.log(body) - let jsondata = JSON.parse(body.substring(23, body.length - 21)) - let total = jsondata.data.total - let limit = 100 - let page = Math.ceil(jsondata.data.total / limit) || 1 - let listData = this.filterData(jsondata.data.info) - console.log(listData, 1) - return { - total, - list: listData, - limit, - page, - source: 'kg', - } - }) + async getList(bangid, page, retryNum = 0) { + if (++retryNum > 3) throw new Error('try max num') + const { body } = await this.getData(this.getUrl(page, bangid, this.listDetailLimit)) + + if (body.errcode != 0) return this.getList(bangid, page, retryNum) + + // console.log(body) + let total = body.data.total + let limit = 100 + let listData = this.filterData(body.data.info) + return { + total, + list: listData, + limit, + page, + source: 'kg', + } }, getDetailPageUrl(id) { if (typeof id == 'string') id = id.replace('kg__', '')