Рефакторинг, плюс небольшие изменения - подготовка к использованию внешних конвертеров

This commit is contained in:
Book Pauk
2019-02-27 19:30:04 +07:00
parent 61cfee222f
commit d3ff0edbff
6 changed files with 38 additions and 22 deletions

View File

@@ -3,9 +3,9 @@ const iconv = require('iconv-lite');
class ConvertFb2 extends ConvertBase {
check(data, opts) {
const {fileType} = opts;
const {dataType} = opts;
return (fileType && fileType.ext == 'xml' && data.toString().indexOf('<FictionBook') >= 0);
return (dataType && dataType.ext == 'xml' && data.toString().indexOf('<FictionBook') >= 0);
}
run(data, opts) {

View File

@@ -4,9 +4,9 @@ const textUtils = require('./textUtils');
class ConvertHtml extends ConvertBase {
check(data, opts) {
const {fileType} = opts;
const {dataType} = opts;
if (fileType && (fileType.ext == 'html' || fileType.ext == 'xml'))
if (dataType && (dataType.ext == 'html' || dataType.ext == 'xml'))
return {isText: false};
//может это чистый текст?

View File

@@ -6,12 +6,13 @@ const ConvertBase = require('./ConvertBase');
class ConvertSamlib extends ConvertBase {
check(data, opts) {
const {url} = opts;
const {url, dataType} = opts;
const parsedUrl = new URL(url);
if (parsedUrl.hostname == 'samlib.ru' ||
if (dataType && dataType.ext == 'html' &&
(parsedUrl.hostname == 'samlib.ru' ||
parsedUrl.hostname == 'budclub.ru' ||
parsedUrl.hostname == 'zhurnal.lib.ru') {
parsedUrl.hostname == 'zhurnal.lib.ru')) {
return {hostname: parsedUrl.hostname};
}

View File

@@ -19,13 +19,13 @@ class BookConverter {
}
}
async convertToFb2(inputFile, outputFile, url, callback) {
const fileType = await this.detector.detectFile(inputFile);
async convertToFb2(inputFiles, outputFile, url, callback) {
const selectedFileType = await this.detector.detectFile(inputFiles.selectedFile);
const data = await fs.readFile(inputFile);
const data = await fs.readFile(inputFiles.selectedFile);
let result = false;
for (const convert of this.convertFactory) {
result = convert.run(data, {inputFile, url, callback, fileType});
result = convert.run(data, {inputFiles, url, callback, dataType: selectedFileType});
if (result) {
await fs.writeFile(outputFile, result);
break;
@@ -33,8 +33,8 @@ class BookConverter {
}
if (!result) {
if (fileType)
throw new Error(`Этот формат файла не поддерживается: ${fileType.mime}`);
if (selectedFileType)
throw new Error(`Этот формат файла не поддерживается: ${selectedFileType.mime}`);
else {
throw new Error(`Не удалось определить формат файла: ${url}`);
}