diff --git a/server/core/Reader/BookConverter/ConvertSites.js b/server/core/Reader/BookConverter/ConvertSites.js index 96e756cf..5b9a608d 100644 --- a/server/core/Reader/BookConverter/ConvertSites.js +++ b/server/core/Reader/BookConverter/ConvertSites.js @@ -12,7 +12,10 @@ const sitesFilter = { converter: 'cutter', begin: ``, end: ``, - } + }, + 'flibusta.is': { + converter: 'flibusta' + }, }; class ConvertSites extends ConvertHtml { @@ -54,11 +57,11 @@ class ConvertSites extends ConvertHtml { if (m) title = m[1]; - return `${title.trim()}`; + return title.trim(); } cutter(text, opts) { - const title = this.getTitle(text); + const title = `${this.getTitle(text)}`; const l = text.indexOf(opts.begin) + opts.begin.length; const r = text.indexOf(opts.end); if (l < 0 || r < 0 || r <= l) @@ -66,6 +69,42 @@ class ConvertSites extends ConvertHtml { return text.substring(l, r) + title; } + + flibusta(text) { + let author = ''; + let m = text.match(/- ([\s\S]*?)<\/a>/); + if (m) + author = m[1]; + + let book = this.getTitle(text); + book = book.replace(' (fb2) | Флибуста', ''); + + const title = `${author}${(author ? ' - ' : '')}${book}`; + + let begin = '

'; + if (text.indexOf(begin) <= 0) + begin = '

'; + + const end = '

') + .replace(/

/g, '

') + .replace(/
/g, '

') + .replace(/

/g, '

') + .replace(/
/g, '

') + .replace(/<\/h3>/g, '
') + .replace(/<\/h5>/g, '
') + .replace(/
/g, '
') + .replace(/
/g, '
') + + title; + } } module.exports = ConvertSites;