|
@@ -13,22 +13,29 @@ class ConvertFb2 extends ConvertBase {
|
|
}
|
|
}
|
|
|
|
|
|
async run(data, opts) {
|
|
async run(data, opts) {
|
|
- let newData = data;
|
|
|
|
|
|
+ let newData = data.slice(0, 1024);
|
|
|
|
|
|
- //Корректируем кодировку, 16-битные кодировки должны стать utf-8
|
|
|
|
|
|
+ //Корректируем кодировку для проверки, 16-битные кодировки должны стать utf-8
|
|
const encoding = textUtils.getEncoding(newData);
|
|
const encoding = textUtils.getEncoding(newData);
|
|
if (encoding.indexOf('UTF-16') == 0) {
|
|
if (encoding.indexOf('UTF-16') == 0) {
|
|
newData = Buffer.from(iconv.decode(newData, encoding));
|
|
newData = Buffer.from(iconv.decode(newData, encoding));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //Проверяем
|
|
if (!this.check(newData, opts))
|
|
if (!this.check(newData, opts))
|
|
return false;
|
|
return false;
|
|
|
|
|
|
|
|
+ //Корректируем кодировку всего объема
|
|
|
|
+ if (encoding.indexOf('UTF-16') == 0) {
|
|
|
|
+ newData = Buffer.from(iconv.decode(data, encoding));
|
|
|
|
+ }
|
|
|
|
+
|
|
//Корректируем пробелы, всякие файлы попадаются :(
|
|
//Корректируем пробелы, всякие файлы попадаются :(
|
|
if (newData[0] == 32) {
|
|
if (newData[0] == 32) {
|
|
newData = Buffer.from(newData.toString().trim());
|
|
newData = Buffer.from(newData.toString().trim());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //Окончательно корректируем кодировку
|
|
return this.checkEncoding(newData);
|
|
return this.checkEncoding(newData);
|
|
}
|
|
}
|
|
|
|
|