歌单播放数量多语言支持

This commit is contained in:
Folltoshe 2023-04-27 21:47:45 +08:00
parent b5d99ef934
commit 48de940acb
10 changed files with 56 additions and 83 deletions

View File

@ -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",

View File

@ -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": "确认",

View File

@ -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": "確認",

View File

@ -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' }
}
/**
*
*/

View File

@ -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,

View File

@ -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

View File

@ -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,

View File

@ -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,

View File

@ -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>