diff --git a/publish/changeLog.md b/publish/changeLog.md index b9211cb816..090fb449cd 100644 --- a/publish/changeLog.md +++ b/publish/changeLog.md @@ -1,3 +1,4 @@ ### 修复 - 修复 Windows 下桌面歌词最小高度设置问题(#2244) +- 修复 tx 歌单搜索名字、描述出现乱码的问题(#2250) diff --git a/src/common/utils/common.ts b/src/common/utils/common.ts index 146bbad518..6d296dbf19 100644 --- a/src/common/utils/common.ts +++ b/src/common/utils/common.ts @@ -71,19 +71,6 @@ export const formatPlayTime2 = (time: number) => { } -const encodeNames = { - ' ': ' ', - '&': '&', - '<': '<', - '>': '>', - '"': '"', - ''': "'", - ''': "'", -} as const -export const decodeName = (str: string | null = '') => { - return str?.replace(/(?:&|<|>|"|'|'| )/gm, (s: string) => encodeNames[s as keyof typeof encodeNames]) ?? '' -} - export const isUrl = (path: string) => /https?:\/\//.test(path) // 解析URL参数为对象 diff --git a/src/renderer/core/useApp/useDeeplink/useMusicAction.js b/src/renderer/core/useApp/useDeeplink/useMusicAction.js index 747e3af52c..8247fb11b8 100644 --- a/src/renderer/core/useApp/useDeeplink/useMusicAction.js +++ b/src/renderer/core/useApp/useDeeplink/useMusicAction.js @@ -1,6 +1,6 @@ import { markRaw } from '@common/utils/vueTools' import { useRouter } from '@common/utils/vueRouter' -import { decodeName } from '@common/utils/common' +import { decodeName } from '@renderer/utils' // import { allList, defaultList, loveList, userLists } from '@renderer/store/list' import { playMusicInfo, isShowPlayerDetail } from '@renderer/store/player/state' import { setShowPlayerDetail, addTempPlayList } from '@renderer/store/player/action' diff --git a/src/renderer/utils/index.ts b/src/renderer/utils/index.ts index 93513b200c..af707446bc 100644 --- a/src/renderer/utils/index.ts +++ b/src/renderer/utils/index.ts @@ -75,3 +75,8 @@ export const deduplicationList = (list: T[]): T[] export const langS2T = async(str: string) => { return window.lx.worker.main.langS2t(Buffer.from(str).toString('base64')).then(b64 => Buffer.from(b64, 'base64').toString()) } + +export const decodeName = (str: string | null = '') => { + if (!str) return '' + return new window.DOMParser().parseFromString(str, 'text/html').body.textContent +} diff --git a/src/renderer/utils/musicSdk/tx/songList.js b/src/renderer/utils/musicSdk/tx/songList.js index f462bb1787..356f694d32 100644 --- a/src/renderer/utils/musicSdk/tx/songList.js +++ b/src/renderer/utils/musicSdk/tx/songList.js @@ -137,7 +137,7 @@ export default { img: item.cover_url_medium, // grade: item.favorcnt / 10, total: item.song_ids?.length, - desc: item.desc, + desc: decodeName(item.desc).replace(/
/g, '\n'), source: 'tx', })), total: data.total, @@ -305,13 +305,13 @@ export default { return { play_count: formatPlayCount(item.listennum), id: String(item.dissid), - author: item.creator.name, - name: item.dissname, + author: decodeName(item.creator.name), + name: decodeName(item.dissname), time: dateFormat(item.createtime, 'Y-M-D'), img: item.imgurl, // grade: item.favorcnt / 10, total: item.song_count, - desc: item.introduction, + desc: decodeName(decodeName(item.introduction)).replace(/
/g, '\n'), source: 'tx', } }), diff --git a/src/renderer/utils/musicSdk/utils.js b/src/renderer/utils/musicSdk/utils.js index 0bbf6325d5..dc2a671b53 100644 --- a/src/renderer/utils/musicSdk/utils.js +++ b/src/renderer/utils/musicSdk/utils.js @@ -1,6 +1,6 @@ import crypto from 'crypto' import dns from 'dns' -import { decodeName } from '@common/utils/common' +import { decodeName } from '@renderer/utils' export const toMD5 = str => crypto.createHash('md5').update(str).digest('hex')