|
1 | 1 | 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' |
7 | 3 |
|
8 | 4 | const SOLR_ENDPOINT = 'https://solr.sscdn.co/letras/m1/' |
9 | 5 |
|
@@ -112,13 +108,28 @@ const parseJsonp = (body) => { |
112 | 108 |
|
113 | 109 | const decodeHtml = (text) => { |
114 | 110 | if (!text) return text |
115 | | - return text |
| 111 | + |
| 112 | + let out = text |
116 | 113 | .replace(/&/g, '&') |
117 | 114 | .replace(/"/g, '"') |
118 | 115 | .replace(/'/g, "'") |
119 | | - .replace(/'/g, "'") |
| 116 | + .replace(/'/gi, "'") |
120 | 117 | .replace(/</g, '<') |
121 | 118 | .replace(/>/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 |
122 | 133 | } |
123 | 134 |
|
124 | 135 | const extractMeta = (html, property) => { |
@@ -302,15 +313,15 @@ export default class LetrasMusMeaning { |
302 | 313 | const sourceLang = 'pt' |
303 | 314 | try { |
304 | 315 | const translatedParagraphs = await translateMany( |
305 | | - meaning.body, |
| 316 | + meaning.body.map(decodeHtml), |
306 | 317 | sourceLang, |
307 | 318 | language |
308 | 319 | ) |
309 | 320 | const translatedTitle = meaning.title |
310 | | - ? await translateText(meaning.title, sourceLang, language) |
| 321 | + ? await translateText(decodeHtml(meaning.title), sourceLang, language) |
311 | 322 | : null |
312 | 323 | const translatedDescription = ogDescription |
313 | | - ? await translateText(ogDescription, sourceLang, language) |
| 324 | + ? await translateText(decodeHtml(ogDescription), sourceLang, language) |
314 | 325 | : null |
315 | 326 | translated = { |
316 | 327 | language: { |
|
0 commit comments