Эх сурвалжийг харах

Оптимизации проверок типа файла

Book Pauk 4 жил өмнө
parent
commit
b174ae452b

+ 1 - 1
server/core/Reader/BookConverter/ConvertBase.js

@@ -104,7 +104,7 @@ class ConvertBase {
     }
 
     isDataXml(data) {
-        const str = data.toString().trim();
+        const str = data.slice(0, 100).toString().trim();
         return (str.indexOf('<?xml version="1.0"') == 0 || str.indexOf('<?xml version=\'1.0\'') == 0 );
     }
 

+ 9 - 2
server/core/Reader/BookConverter/ConvertFb2.js

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

+ 1 - 1
server/core/Reader/BookConverter/ConvertHtml.js

@@ -16,7 +16,7 @@ class ConvertHtml extends ConvertBase {
         }
 
         //из буфера обмена?
-        if (data.toString().indexOf('<buffer>') == 0) {
+        if (data.slice(0, 50).toString().indexOf('<buffer>') == 0) {
             return {isText: false};
         }