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