UNPKG

epub-full-text-search

Version:
97 lines (69 loc) 2.69 kB
'use strict'; var _cheerio = require('cheerio'); var _cheerio2 = _interopRequireDefault(_cheerio); var _MetaDataParser = require('./MetaDataParser'); var _MetaDataParser2 = _interopRequireDefault(_MetaDataParser); var _Helper = require('./../Helper'); var _Helper2 = _interopRequireDefault(_Helper); var _Logger = require('./../Logger'); var _Logger2 = _interopRequireDefault(_Logger); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var Preparer = {}; /************** * public *************/ Preparer.normalize = function (urlToEPUBs) { _Logger2.default.log('info', 'URL of EPUB data: '.blue + urlToEPUBs.green); return _MetaDataParser2.default.getMetaDataFromUrl(urlToEPUBs).then(function (metaData) { return prepareEPUBDataForIndexing(metaData); }).catch(function (err) { _Logger2.default.log('error', 'normalize url' + urlToEPUBs + ' ' + err); }); }; // It is necessary to remove hyphens from uuid because search-index process it wrong with hyphens. // Otherwise search for uuid fails. Preparer.normalizeUUID = function (str) { return str.replace(/-/g, ''); }; /************** * private *************/ function prepareEPUBDataForIndexing(metaData) { if (!metaData.spineItems.length) return; var data = []; var arrayOfPromises = metaData.spineItems.map(function (spineItem) { var spineUri = metaData.url + 'EPUB/' + spineItem.href; return _Helper2.default.getContent(spineUri).then(function (body) { return _cheerio2.default.load(body); }); }); return Promise.all(arrayOfPromises).then(function (arrayOf$) { //doc.spineItemPath = spineUri; arrayOf$.forEach(function ($, i) { var doc = {}; $("title").each(function (i, e) { var title = $(e); doc.title = trim(title.text()); }); $("body").each(function (i, e) { var body = $(e); doc.body = trim(body.text()); }); setMetaData(doc, metaData, metaData.spineItems[i]); data.push(doc); }); return data; }).catch(function (err) { _Logger2.default.log('error', 'prepareEPUBDataForIndexing: ' + err); }); } function setMetaData(jsonDoc, meta, spineItemMeta) { jsonDoc.spineItemPath = meta.url + 'EPUB/' + spineItemMeta.href; jsonDoc.href = spineItemMeta.href; jsonDoc.baseCfi = spineItemMeta.baseCfi; jsonDoc.id = spineItemMeta.id + ':' + meta.title; } function trim(str) { return str.replace(/\W/g, ' ').replace(/\s+/g, ' '); } module.exports = Preparer;