diff --git a/server/core/Reader/BookConverter/ConvertDocX.js b/server/core/Reader/BookConverter/ConvertDocX.js index 11ab67f7..d8c85b78 100644 --- a/server/core/Reader/BookConverter/ConvertDocX.js +++ b/server/core/Reader/BookConverter/ConvertDocX.js @@ -4,14 +4,15 @@ const path = require('path'); const ConvertBase = require('./ConvertBase'); class ConvertDocX extends ConvertBase { - check(data, opts) { + async check(data, opts) { const {inputFiles} = opts; if (this.config.useExternalBookConverter && inputFiles.sourceFileType && inputFiles.sourceFileType.ext == 'zip') { //ищем файл '[Content_Types].xml' for (const file of inputFiles.files) { if (file.path == '[Content_Types].xml') { - return true; + const contentTypes = await fs.readFile(`${inputFiles.filesDir}/${file.path}`, 'utf8'); + return contentTypes.indexOf('/word/document.xml') >= 0; } } } @@ -30,7 +31,7 @@ class ConvertDocX extends ConvertBase { } async run(data, opts) { - if (!this.check(data, opts)) + if (!(await this.check(data, opts))) return false; await this.checkExternalConverterPresent(); diff --git a/server/core/Reader/BookConverter/ConvertFb3.js b/server/core/Reader/BookConverter/ConvertFb3.js new file mode 100644 index 00000000..ef2123d6 --- /dev/null +++ b/server/core/Reader/BookConverter/ConvertFb3.js @@ -0,0 +1,52 @@ +const fs = require('fs-extra'); + +const ConvertHtml = require('./ConvertHtml'); + +class ConvertDocX extends ConvertHtml { + async check(data, opts) { + const {inputFiles} = opts; + if (this.config.useExternalBookConverter && + inputFiles.sourceFileType && inputFiles.sourceFileType.ext == 'zip') { + //ищем файл '[Content_Types].xml' + for (const file of inputFiles.files) { + if (file.path == '[Content_Types].xml') { + const contentTypes = await fs.readFile(`${inputFiles.filesDir}/${file.path}`, 'utf8'); + return contentTypes.indexOf('/fb3/body.xml') >= 0; + } + } + } + + return false; + } + + getTitle(text) { + let title = ''; + const m = text.match(/