Skip to content

Commit b975122

Browse files
committed
fix: improve HTML decoding in LetrasMusMeaning and streamline imports
1 parent e430be0 commit b975122

File tree

1 file changed

+21
-10
lines changed

1 file changed

+21
-10
lines changed

src/meanings/letrasmus.js

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
import { translateMany, translateText } from '../modules/googleTranslate.js'
2-
import {
3-
getBestMatch,
4-
http1makeRequest,
5-
logger
6-
} from '../utils.js'
2+
import { getBestMatch, http1makeRequest, logger } from '../utils.js'
73

84
const SOLR_ENDPOINT = 'https://solr.sscdn.co/letras/m1/'
95

@@ -112,13 +108,28 @@ const parseJsonp = (body) => {
112108

113109
const decodeHtml = (text) => {
114110
if (!text) return text
115-
return text
111+
112+
let out = text
116113
.replace(/&/g, '&')
117114
.replace(/"/g, '"')
118115
.replace(/'/g, "'")
119-
.replace(/'/g, "'")
116+
.replace(/'/gi, "'")
120117
.replace(/&lt;/g, '<')
121118
.replace(/&gt;/g, '>')
119+
120+
out = out.replace(/&#(\d+);/g, (_, dec) => {
121+
const code = Number(dec)
122+
if (!Number.isFinite(code)) return _
123+
return String.fromCodePoint(code)
124+
})
125+
126+
out = out.replace(/&#x([0-9a-f]+);/gi, (_, hex) => {
127+
const code = parseInt(hex, 16)
128+
if (!Number.isFinite(code)) return _
129+
return String.fromCodePoint(code)
130+
})
131+
132+
return out
122133
}
123134

124135
const extractMeta = (html, property) => {
@@ -302,15 +313,15 @@ export default class LetrasMusMeaning {
302313
const sourceLang = 'pt'
303314
try {
304315
const translatedParagraphs = await translateMany(
305-
meaning.body,
316+
meaning.body.map(decodeHtml),
306317
sourceLang,
307318
language
308319
)
309320
const translatedTitle = meaning.title
310-
? await translateText(meaning.title, sourceLang, language)
321+
? await translateText(decodeHtml(meaning.title), sourceLang, language)
311322
: null
312323
const translatedDescription = ogDescription
313-
? await translateText(ogDescription, sourceLang, language)
324+
? await translateText(decodeHtml(ogDescription), sourceLang, language)
314325
: null
315326
translated = {
316327
language: {

0 commit comments

Comments
 (0)