UNPKG

r2-streamer-js

Version:

Readium 2 'streamer' for NodeJS (TypeScript)

102 lines 4.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const fs = require("fs"); const moment = require("moment"); const serializable_1 = require("r2-lcp-js/dist/es7-es2016/src/serializable"); const init_globals_1 = require("r2-opds-js/dist/es7-es2016/src/opds/init-globals"); const opds2_1 = require("r2-opds-js/dist/es7-es2016/src/opds/opds2/opds2"); const opds2_link_1 = require("r2-opds-js/dist/es7-es2016/src/opds/opds2/opds2-link"); const opds2_metadata_1 = require("r2-opds-js/dist/es7-es2016/src/opds/opds2/opds2-metadata"); const opds2_publication_1 = require("r2-opds-js/dist/es7-es2016/src/opds/opds2/opds2-publication"); const init_globals_2 = require("r2-shared-js/dist/es7-es2016/src/init-globals"); const metadata_1 = require("r2-shared-js/dist/es7-es2016/src/models/metadata"); const publication_parser_1 = require("r2-shared-js/dist/es7-es2016/src/parser/publication-parser"); const UrlUtils_1 = require("r2-utils-js/dist/es7-es2016/src/_utils/http/UrlUtils"); (0, init_globals_1.initGlobalConverters_OPDS)(); (0, init_globals_2.initGlobalConverters_SHARED)(); (0, init_globals_2.initGlobalConverters_GENERIC)(); console.log(`process.cwd(): ${process.cwd()}`); console.log(`__dirname: ${__dirname}`); let args = process.argv.slice(2); if (!args.length) { console.log("FILEPATH ARGUMENTS ARE MISSING."); process.exit(1); } const opdsJsonFilePath = args[0]; args = args.slice(1); if (fs.existsSync(opdsJsonFilePath)) { console.log("OPDS2 JSON file already exists."); process.exit(1); } (() => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const feed = new opds2_1.OPDSFeed(); feed.Metadata = new opds2_metadata_1.OPDSMetadata(); feed.Metadata.RDFType = "http://schema.org/DataFeed"; feed.Metadata.Title = "Readium 2 OPDS 2.0 Feed"; feed.Metadata.Modified = moment(Date.now()).toDate(); feed.Publications = []; let nPubs = 0; for (const pathBase64 of args) { const pathBase64Str = Buffer.from(decodeURIComponent(pathBase64), "base64").toString("utf8"); if ((0, UrlUtils_1.isHTTP)(pathBase64Str)) { continue; } console.log(`OPDS parsing: ${pathBase64Str}`); let publication; try { publication = yield (0, publication_parser_1.PublicationParsePromise)(pathBase64Str); } catch (err) { console.log(err); continue; } nPubs++; const publi = new opds2_publication_1.OPDSPublication(); publi.Links = []; const linkSelf = new opds2_link_1.OPDSLink(); linkSelf.Href = pathBase64 + "/manifest.json"; linkSelf.TypeLink = (publication.Metadata && publication.Metadata.RDFType && /https?:\/\/schema\.org\/Audiobook$/.test(publication.Metadata.RDFType)) ? "application/audiobook+json" : ((publication.Metadata && publication.Metadata.RDFType && (/https?:\/\/schema\.org\/ComicStory$/.test(publication.Metadata.RDFType) || /https?:\/\/schema\.org\/VisualNarrative$/.test(publication.Metadata.RDFType))) ? "application/divina+json" : "application/webpub+json"); linkSelf.AddRel("http://opds-spec.org/acquisition"); publi.Links.push(linkSelf); feed.Publications.push(publi); publi.Images = []; const coverLink = publication.GetCover(); if (coverLink) { const linkCover = new opds2_link_1.OPDSLink(); linkCover.Href = pathBase64 + "/" + coverLink.Href; linkCover.TypeLink = coverLink.TypeLink; if (coverLink.Width && coverLink.Height) { linkCover.Width = coverLink.Width; linkCover.Height = coverLink.Height; } publi.Images.push(linkCover); } else { console.log("NO COVER IMAGE?"); } if (publication.Metadata) { try { const publicationMetadataJson = (0, serializable_1.TaJsonSerialize)(publication.Metadata); publi.Metadata = (0, serializable_1.TaJsonDeserialize)(publicationMetadataJson, metadata_1.Metadata); } catch (err) { console.log(err); continue; } } } feed.Metadata.NumberOfItems = nPubs; const jsonObj = (0, serializable_1.TaJsonSerialize)(feed); const jsonStr = global.JSON.stringify(jsonObj, null, ""); fs.writeFileSync(opdsJsonFilePath, jsonStr, { encoding: "utf8" }); console.log("DONE! :)"); console.log(opdsJsonFilePath); }))(); //# sourceMappingURL=opds2-create-cli.js.map