Jelajahi Sumber

Добавлен конвертер для Mobi

Book Pauk 6 tahun lalu
induk
melakukan
91c331e5f3

+ 37 - 0
server/core/BookConverter/ConvertMobi.js

@@ -0,0 +1,37 @@
+const fs = require('fs-extra');
+const path = require('path');
+
+const ConvertBase = require('./ConvertBase');
+
+class ConvertMobi extends ConvertBase {
+    async check(data, opts) {
+        const {inputFiles} = opts;
+
+        return (this.config.useExternalBookConverter && 
+            inputFiles.sourceFileType && inputFiles.sourceFileType.ext == 'mobi');
+    }
+
+    async run(data, opts) {
+        if (!await this.check(data, opts))
+            return false;
+        await this.checkExternalConverterPresent();
+
+        const {inputFiles, callback} = opts;
+
+        const outFile = `${inputFiles.filesDir}/${path.basename(inputFiles.sourceFile)}`;
+        const mobiFile = `${outFile}.mobi`;
+        const fb2File = `${outFile}.fb2`;
+
+        await fs.copy(inputFiles.sourceFile, mobiFile);
+
+        let perc = 0;
+        await this.execConverter(this.calibrePath, [mobiFile, fb2File], () => {
+            perc = (perc < 100 ? perc + 5 : 50);
+            callback(perc);
+        });
+
+        return await fs.readFile(fb2File);
+    }
+}
+
+module.exports = ConvertMobi;

+ 1 - 0
server/core/BookConverter/index.js

@@ -8,6 +8,7 @@ const convertClassFactory = [
     require('./ConvertRtf'),
     require('./ConvertRtf'),
     require('./ConvertDocX'),
     require('./ConvertDocX'),
     require('./ConvertDoc'),
     require('./ConvertDoc'),
+    require('./ConvertMobi'),
     require('./ConvertFb2'),
     require('./ConvertFb2'),
     require('./ConvertSamlib'),
     require('./ConvertSamlib'),
     require('./ConvertHtml'),
     require('./ConvertHtml'),

+ 9 - 0
server/core/FileDetector/signatures.json

@@ -711,6 +711,15 @@
       ]
       ]
       }
       }
     ]
     ]
+  },
+
+  {
+    "type": "mobi",
+    "ext": "mobi",
+    "mime": "application/x-mobipocket-ebook",
+    "rules": [
+      { "type": "equal", "start": 64, "end": 68, "bytes": "4d4f4249" }
+    ]
   }
   }
 
 
 ]
 ]