import { httpFetch } from '../../request' import { decodeName } from '../../index' import { formatSinger, objStr2JSON } from './util' // let requestObj_list export default { limit_list: 36, limit_song: 1000, filterListDetail(rawList, albumName, albumId) { // console.log(rawList) // console.log(rawList.length, rawList2.length) return rawList.map((item, inedx) => { let formats = item.formats.split('|') let types = [] let _types = {} if (formats.includes('MP3128')) { types.push({ type: '128k', size: null }) _types['128k'] = { size: null, } } // if (formats.includes('MP3192')) { // types.push({ type: '192k', size: null }) // _types['192k'] = { // size: null, // } // } if (formats.includes('MP3H')) { types.push({ type: '320k', size: null }) _types['320k'] = { size: null, } } // if (formats.includes('AL')) { // types.push({ type: 'ape', size: null }) // _types.ape = { // size: null, // } // } if (formats.includes('ALFLAC')) { types.push({ type: 'flac', size: null }) _types.flac = { size: null, } } if (formats.includes('HIRFLAC')) { types.push({ type: 'flac32bit', size: null }) _types.flac32bit = { size: null, } } // types.reverse() return { singer: formatSinger(decodeName(item.artist)), name: decodeName(item.name), albumName, albumId, songmid: item.id, source: 'kw', interval: null, img: item.pic, lrc: null, otherSource: null, types, _types, typeUrl: {}, } }) }, /** * 格式化播放数量 * @param {*} num */ formatPlayCount(num) { if (num > 100000000) return parseInt(num / 10000000) / 10 + '亿' if (num > 10000) return parseInt(num / 1000) / 10 + '万' return num }, getAlbumListDetail(id, page, retryNum = 0) { if (retryNum > 2) return Promise.reject(new Error('try max num')) const requestObj_listDetail = httpFetch(`http://search.kuwo.cn/r.s?pn=${page - 1}&rn=${this.limit_song}&stype=albuminfo&albumid=${id}&show_copyright_off=0&encoding=utf&vipver=MUSIC_9.1.0`) return requestObj_listDetail.promise.then(({ statusCode, body }) => { if (statusCode !== 200) return this.getAlbumListDetail(id, page, ++retryNum) body = objStr2JSON(body) // console.log(body) if (!body.musiclist) return this.getAlbumListDetail(id, page, ++retryNum) return { list: this.filterListDetail(body.musiclist, body.name, body.albumid), page, limit: this.limit_song, total: parseInt(body.songnum), source: 'kw', info: { name: body.name, img: body.img || body.hts_img, desc: body.info, author: body.artist, // play_count: this.formatPlayCount(body.playnum), }, } }) }, }