歌单播放数量多语言支持
This commit is contained in:
parent
b5d99ef934
commit
48de940acb
@ -189,6 +189,9 @@
|
||||
"pagination__next": "Next page",
|
||||
"pagination__page": "Page {num}",
|
||||
"pagination__prev": "Previous page",
|
||||
"play_count_million": "{num} Million",
|
||||
"play_count_billion": "{num} Billion",
|
||||
"play_count_none": "{num}",
|
||||
"play_timeout": "Timed pause",
|
||||
"play_timeout_close": "Close",
|
||||
"play_timeout_confirm": "Confirm",
|
||||
|
||||
@ -189,6 +189,9 @@
|
||||
"pagination__next": "下一页",
|
||||
"pagination__page": "第 {num} 页",
|
||||
"pagination__prev": "上一页",
|
||||
"play_count_million": "{num} 万",
|
||||
"play_count_billion": "{num} 亿",
|
||||
"play_count_none": "{num}",
|
||||
"play_timeout": "定时暂停",
|
||||
"play_timeout_close": "关闭",
|
||||
"play_timeout_confirm": "确认",
|
||||
|
||||
@ -189,6 +189,9 @@
|
||||
"pagination__next": "下一頁",
|
||||
"pagination__page": "第 {num} 頁",
|
||||
"pagination__prev": "上一頁",
|
||||
"play_count_million": "{num} 萬",
|
||||
"play_count_billion": "{num} 億",
|
||||
"play_count_none": "{num}",
|
||||
"play_timeout": "定時暫停",
|
||||
"play_timeout_close": "關閉",
|
||||
"play_timeout_confirm": "確認",
|
||||
|
||||
@ -5,6 +5,18 @@ export * from '@common/utils/nodejs'
|
||||
export * from '@common/utils/common'
|
||||
export * from '@common/utils/tools'
|
||||
|
||||
|
||||
/**
|
||||
* 格式化播放数量
|
||||
* @param {*} num 数字
|
||||
*/
|
||||
export const formatPlayCount = (num: number): { count: number, language: string } => {
|
||||
if (num > 100000000) return {count: parseInt((num / 10000000).toString()) / 10,language: 'play_count_billion'}
|
||||
if (num > 10000) return {count: parseInt((num / 1000).toString()) / 10,language: 'play_count_million'}
|
||||
return { count: num, language: 'play_count_none' }
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 时间格式化
|
||||
*/
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { httpFetch } from '../../request'
|
||||
import { formatSingerName } from '../utils'
|
||||
import { decodeName, formatPlayTime, sizeFormate, dateFormat } from '../../index'
|
||||
import { decodeName, formatPlayTime, sizeFormate, dateFormat, formatPlayCount } from '../../index'
|
||||
import { signatureParams, createHttpFetch } from './util'
|
||||
import { getMusicInfosByList } from './musicInfo'
|
||||
import album from './album'
|
||||
@ -122,7 +122,7 @@ export default {
|
||||
img: pic,
|
||||
desc,
|
||||
// author: body.result.info.userinfo.username,
|
||||
// play_count: this.formatPlayCount(body.result.listen_num),
|
||||
// playCountInfo: formatPlayCount(body.result.listen_num),
|
||||
},
|
||||
}
|
||||
},
|
||||
@ -171,15 +171,6 @@ export default {
|
||||
return `http://www2.kugou.kugou.com/yueku/v9/special/single/${id}-5-9999.html`
|
||||
},
|
||||
|
||||
/**
|
||||
* 格式化播放数量
|
||||
* @param {*} num
|
||||
*/
|
||||
formatPlayCount(num) {
|
||||
if (num > 100000000) return parseInt(num / 10000000) / 10 + '亿'
|
||||
if (num > 10000) return parseInt(num / 1000) / 10 + '万'
|
||||
return num
|
||||
},
|
||||
filterInfoHotTag(rawData) {
|
||||
const result = []
|
||||
if (rawData.status !== 1) return result
|
||||
@ -212,7 +203,7 @@ export default {
|
||||
},
|
||||
filterSongList(rawData) {
|
||||
return rawData.map(item => ({
|
||||
play_count: item.total_play_count || this.formatPlayCount(item.play_count),
|
||||
playCountInfo: item.total_playCountInfo || formatPlayCount(item.playCountInfo),
|
||||
id: 'id_' + item.specialid,
|
||||
author: item.nickname,
|
||||
name: item.specialname,
|
||||
@ -327,7 +318,7 @@ export default {
|
||||
// img: listInfo.image,
|
||||
// desc: listInfo.desc,
|
||||
// // author: listInfo.userName,
|
||||
// // play_count: this.formatPlayCount(listInfo.playCount),
|
||||
// // playCountInfo: formatPlayCount(listInfo.playCount),
|
||||
// },
|
||||
// }
|
||||
// })
|
||||
@ -360,7 +351,7 @@ export default {
|
||||
img: listInfo.imageUrl && listInfo.imageUrl.replace('{size}', 240),
|
||||
desc: listInfo.desc,
|
||||
author: listInfo.userName,
|
||||
play_count: this.formatPlayCount(listInfo.playCount),
|
||||
playCountInfo: formatPlayCount(listInfo.playCount),
|
||||
},
|
||||
}
|
||||
})
|
||||
@ -483,7 +474,7 @@ export default {
|
||||
img: (codeInfo.img_size && codeInfo.img_size.replace('{size}', 240)) || codeInfo.img,
|
||||
// desc: body.result.info.list_desc,
|
||||
author: codeInfo.username,
|
||||
// play_count: this.formatPlayCount(info.count),
|
||||
// playCountInfo: formatPlayCount(info.count),
|
||||
},
|
||||
}
|
||||
}
|
||||
@ -512,7 +503,7 @@ export default {
|
||||
img: songInfo.info.img,
|
||||
// desc: body.result.info.list_desc,
|
||||
author: songInfo.info.username,
|
||||
// play_count: this.formatPlayCount(info.count),
|
||||
// playCountInfo: formatPlayCount(info.count),
|
||||
},
|
||||
}
|
||||
},
|
||||
@ -547,7 +538,7 @@ export default {
|
||||
img: listInfo.pic && listInfo.pic.replace('{size}', 240),
|
||||
// desc: body.result.info.list_desc,
|
||||
author: listInfo.list_create_username,
|
||||
// play_count: this.formatPlayCount(listInfo.count),
|
||||
// playCountInfo: formatPlayCount(listInfo.count),
|
||||
},
|
||||
}
|
||||
},
|
||||
@ -598,7 +589,7 @@ export default {
|
||||
img: info.imgurl && info.imgurl.replace('{size}', 240),
|
||||
desc: info.intro,
|
||||
author: info.nickname,
|
||||
play_count: this.formatPlayCount(info.playcount),
|
||||
playCountInfo: formatPlayCount(info.playcount),
|
||||
},
|
||||
}
|
||||
},
|
||||
@ -650,7 +641,7 @@ export default {
|
||||
img: listInfo.imgurl && listInfo.imgurl.replace('{size}', 240),
|
||||
// desc: body.result.info.list_desc,
|
||||
author: listInfo.nickname,
|
||||
// play_count: this.formatPlayCount(info.count),
|
||||
// playCountInfo: formatPlayCount(info.count),
|
||||
},
|
||||
}
|
||||
},
|
||||
@ -671,7 +662,7 @@ export default {
|
||||
img: listInfo.imgurl && listInfo.imgurl.replace('{size}', 240),
|
||||
// desc: body.result.info.list_desc,
|
||||
author: listInfo.nickname,
|
||||
// play_count: this.formatPlayCount(info.count),
|
||||
// playCountInfo: formatPlayCount(info.count),
|
||||
},
|
||||
}
|
||||
},
|
||||
@ -786,7 +777,7 @@ export default {
|
||||
return {
|
||||
list: body.lists.map(item => {
|
||||
return {
|
||||
play_count: this.formatPlayCount(item.total_play_count),
|
||||
playCountInfo: formatPlayCount(item.total_playCountInfo),
|
||||
id: item.gid ? `gid_${item.gid}` : `id_${item.specialid}`,
|
||||
author: item.nickname,
|
||||
name: item.specialname,
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { httpFetch } from '../../request'
|
||||
import { formatPlayTime, decodeName } from '../../index'
|
||||
import { formatPlayTime, decodeName, formatPlayCount } from '../../index'
|
||||
import { formatSinger, objStr2JSON } from './util'
|
||||
import album from './album'
|
||||
|
||||
@ -120,19 +120,9 @@ export default {
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* 格式化播放数量
|
||||
* @param {*} num
|
||||
*/
|
||||
formatPlayCount(num) {
|
||||
if (num > 100000000) return parseInt(num / 10000000) / 10 + '亿'
|
||||
if (num > 10000) return parseInt(num / 1000) / 10 + '万'
|
||||
return num
|
||||
},
|
||||
filterList(rawData) {
|
||||
return rawData.map(item => ({
|
||||
play_count: this.formatPlayCount(item.listencnt),
|
||||
playCountInfo: formatPlayCount(item.listencnt),
|
||||
id: `digest-${item.digest}__${item.id}`,
|
||||
author: item.uname,
|
||||
name: item.name,
|
||||
@ -150,7 +140,7 @@ export default {
|
||||
rawData.forEach(item => {
|
||||
if (!item.label) return
|
||||
list.push(...item.list.map(item => ({
|
||||
play_count: item.play_count && this.formatPlayCount(item.listencnt),
|
||||
playCountInfo: item.playCountInfo && formatPlayCount(item.listencnt),
|
||||
id: `digest-${item.digest}__${item.id}`,
|
||||
author: item.uname,
|
||||
name: item.name,
|
||||
@ -182,7 +172,7 @@ export default {
|
||||
img: body.pic,
|
||||
desc: body.info,
|
||||
author: body.uname,
|
||||
play_count: this.formatPlayCount(body.playnum),
|
||||
playCountInfo: formatPlayCount(body.playnum),
|
||||
},
|
||||
}
|
||||
})
|
||||
@ -213,7 +203,7 @@ export default {
|
||||
img: body.pic,
|
||||
desc: body.info,
|
||||
author: body.uname,
|
||||
play_count: this.formatPlayCount(body.playnum),
|
||||
playCountInfo: formatPlayCount(body.playnum),
|
||||
},
|
||||
}
|
||||
})
|
||||
@ -298,7 +288,7 @@ export default {
|
||||
img: infoData.data.pic,
|
||||
desc: infoData.data.description,
|
||||
author: infoData.data.creatorName,
|
||||
play_count: infoData.data.playNum,
|
||||
playCountInfo: infoData.data.playNum,
|
||||
}
|
||||
},
|
||||
async getListDetailMusicListByBDUserPub(id) {
|
||||
@ -317,7 +307,7 @@ export default {
|
||||
img: infoData.data.userInfo.headImg,
|
||||
desc: '',
|
||||
author: infoData.data.userInfo.nickname,
|
||||
play_count: '',
|
||||
playCountInfo: '',
|
||||
}
|
||||
},
|
||||
async getListDetailMusicListByBDList(id, source, page, tryNum = 0) {
|
||||
@ -362,7 +352,7 @@ export default {
|
||||
img: '',
|
||||
desc: '',
|
||||
author: '',
|
||||
play_count: '',
|
||||
playCountInfo: '',
|
||||
}
|
||||
// console.log(listData)
|
||||
return listData
|
||||
@ -466,7 +456,7 @@ export default {
|
||||
return {
|
||||
list: body.abslist.map(item => {
|
||||
return {
|
||||
play_count: this.formatPlayCount(item.playcnt),
|
||||
playCountInfo: formatPlayCount(item.playcnt),
|
||||
id: item.playlistid,
|
||||
author: decodeName(item.nickname),
|
||||
name: decodeName(item.name),
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
import { httpFetch } from '../../request'
|
||||
import { decodeName, formatPlayTime, sizeFormate, dateFormat } from '../../index'
|
||||
import { decodeName, formatPlayTime, sizeFormate, dateFormat, formatPlayCount } from '../../index'
|
||||
import { formatSingerName } from '../utils'
|
||||
|
||||
export default {
|
||||
@ -126,20 +126,10 @@ export default {
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* 格式化播放数量
|
||||
* @param {*} num
|
||||
*/
|
||||
formatPlayCount(num) {
|
||||
if (num > 100000000) return parseInt(num / 10000000) / 10 + '亿'
|
||||
if (num > 10000) return parseInt(num / 1000) / 10 + '万'
|
||||
return num
|
||||
},
|
||||
filterList(data, page) {
|
||||
return {
|
||||
list: data.v_playlist.map(item => ({
|
||||
play_count: this.formatPlayCount(item.access_num),
|
||||
playCountInfo: formatPlayCount(item.access_num),
|
||||
id: item.tid,
|
||||
author: item.creator_info.nick,
|
||||
name: item.title,
|
||||
@ -160,7 +150,7 @@ export default {
|
||||
// console.log(content.v_item)
|
||||
return {
|
||||
list: content.v_item.map(({ basic }) => ({
|
||||
play_count: this.formatPlayCount(basic.play_cnt),
|
||||
playCountInfo: formatPlayCount(basic.play_cnt),
|
||||
id: basic.tid,
|
||||
author: basic.creator.nick,
|
||||
name: basic.title,
|
||||
@ -229,7 +219,7 @@ export default {
|
||||
img: cdlist.logo,
|
||||
desc: decodeName(cdlist.desc).replace(/<br>/g, '\n'),
|
||||
author: cdlist.nickname,
|
||||
play_count: this.formatPlayCount(cdlist.visitnum),
|
||||
playCountInfo: formatPlayCount(cdlist.visitnum),
|
||||
},
|
||||
}
|
||||
},
|
||||
@ -313,7 +303,7 @@ export default {
|
||||
return {
|
||||
list: body.data.list.map(item => {
|
||||
return {
|
||||
play_count: this.formatPlayCount(item.listennum),
|
||||
playCountInfo: formatPlayCount(item.listennum),
|
||||
id: item.dissid,
|
||||
author: item.creator.name,
|
||||
name: item.dissname,
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
|
||||
import { weapi, linuxapi } from './utils/crypto'
|
||||
import { httpFetch } from '../../request'
|
||||
import { formatPlayTime, sizeFormate, dateFormat } from '../../index'
|
||||
import { formatPlayTime, sizeFormate, dateFormat, formatPlayCount } from '../../index'
|
||||
import musicDetailApi from './musicDetail'
|
||||
import { eapiRequest } from './utils/index'
|
||||
import { formatSingerName } from '../utils'
|
||||
@ -32,15 +32,6 @@ export default {
|
||||
listDetailLink: /^.+(?:\?|&)id=(\d+)(?:&.*$|#.*$|$)/,
|
||||
listDetailLink2: /^.+\/playlist\/(\d+)\/\d+\/.+$/,
|
||||
},
|
||||
/**
|
||||
* 格式化播放数量
|
||||
* @param {*} num
|
||||
*/
|
||||
formatPlayCount(num) {
|
||||
if (num > 100000000) return parseInt(num / 10000000) / 10 + '亿'
|
||||
if (num > 10000) return parseInt(num / 1000) / 10 + '万'
|
||||
return num
|
||||
},
|
||||
|
||||
async handleParseId(link, retryNum = 0) {
|
||||
if (retryNum > 2) throw new Error('link try max num')
|
||||
@ -124,7 +115,7 @@ export default {
|
||||
total: body.playlist.trackIds.length,
|
||||
source: 'wy',
|
||||
info: {
|
||||
play_count: this.formatPlayCount(body.playlist.playCount),
|
||||
playCountInfo: formatPlayCount(body.playlist.playCount),
|
||||
name: body.playlist.name,
|
||||
img: body.playlist.coverImgUrl,
|
||||
desc: body.playlist.description,
|
||||
@ -240,7 +231,7 @@ export default {
|
||||
filterList(rawData) {
|
||||
// console.log(rawData)
|
||||
return rawData.map(item => ({
|
||||
play_count: this.formatPlayCount(item.playCount),
|
||||
playCountInfo: formatPlayCount(item.playCount),
|
||||
id: item.id,
|
||||
author: item.creator.nickname,
|
||||
name: item.name,
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
<p v-if="item.time" :class="$style.time">{{ item.time }}</p>
|
||||
<div :class="$style.songlist_info">
|
||||
<span v-if="item.total != null"><svg-icon name="music" />{{ item.total }}</span>
|
||||
<span v-if="item.play_count != null"><svg-icon name="headphones" />{{ item.play_count }}</span>
|
||||
<span v-if="item.playCountInfo != null"><svg-icon name="headphones" />{{ $t(item.playCountInfo.language, { num: item.playCountInfo.count }) }}</span>
|
||||
<span v-if="visibleSource">{{ item.source }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user