Closed xmexg closed 8 months ago
https://github.com/Night-stars-1/LiteLoaderQQNT-Plugin-QQPromote/blob/74b191a35fdf385ecd0fd0d170d1c9a02c618434/src/main/link_preview.js#L17 content-type不一定携带charset 并且所有请求都使用iconv解码会拖慢整体处理速度,这在包体较大时尤为明显
该项目去除open-graph-scraper的原因这个
好,那就先utf8获取,读head,看head里的charset,如果非utf8,再获取一次,我再改改
好,那就先utf8获取,读head,看head里的charset,如果非utf8,再获取一次,我再改改
👌
好,那就先utf8获取,读head,看head里的charset,如果非utf8,再获取一次,我再改改
👌
@Night-stars-1 修好了 性能方面应该还行 @xmexg 没测试 你自己测测了
async function getHtml(url) {
const response = await axios.get(url, { responseType: 'arraybuffer' });
let u8Array = ["utf8", "UTF8", "utf-8", "UTF-8"];
let charType = 'utf-8';
let htmlData = response.data.toString();
let headContent = htmlData.match(/<head([\s\S]*?)\/head>/i)[0];
if (response.headers['content-type'].includes('charset')) {
charType = response.headers['content-type'].match(/charset=(.*)/i)[1];
} else if (headContent.includes('charset=')) {
charType = headContent.match(/charset="(.*)"/i)[1];
}
if (charType !== "utf-8" && u8Array.indexOf(charType) == -1 && iconv.encodingExists(charType)) {
headContent = iconv.decode(response.data, charType).match(/<head([\s\S]*?)\/head>/i)[0];
}
return headContent;
}
@MliKiowa 事实上,我在等着另一个pr
@MliKiowa 事实上,我在等着另一个pr
事实这么写有一个问题 编码值设置UTF8大写或者UTF-8会走向错误分支 并不优雅 同时await配then展开有点不好看
事实这么写有一个问题 编码值设置UTF8大写或者UTF-8会走向错误分支 并不优雅 同时await配then展开有点不好看
用你的了
https://github.com/Night-stars-1/LiteLoaderQQNT-Plugin-QQPromote/issues/57
新引入了iconv-lite用于转换编码。创建了testScript文件夹用于存放测试用例(可删)。