UNPKG

9.21 kBSource Map (JSON)View Raw
1{"version":3,"file":"opds2-create-cli.js","sourceRoot":"","sources":["../../../../src/http/opds2-create-cli.ts"],"names":[],"mappings":"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","sourcesContent":["// ==LICENSE-BEGIN==\n// Copyright 2017 European Digital Reading Lab. All rights reserved.\n// Licensed to the Readium Foundation under one or more contributor license agreements.\n// Use of this source code is governed by a BSD-style license\n// that can be found in the LICENSE file exposed on Github (readium) in the project repository.\n// ==LICENSE-END==\n\nimport * as fs from \"fs\";\nimport * as moment from \"moment\";\n\nimport { TaJsonDeserialize, TaJsonSerialize } from \"@r2-lcp-js/serializable\";\nimport { initGlobalConverters_OPDS } from \"@r2-opds-js/opds/init-globals\";\nimport { OPDSFeed } from \"@r2-opds-js/opds/opds2/opds2\";\nimport { OPDSLink } from \"@r2-opds-js/opds/opds2/opds2-link\";\nimport { OPDSMetadata } from \"@r2-opds-js/opds/opds2/opds2-metadata\";\nimport { OPDSPublication } from \"@r2-opds-js/opds/opds2/opds2-publication\";\nimport {\n initGlobalConverters_GENERIC, initGlobalConverters_SHARED,\n} from \"@r2-shared-js/init-globals\";\nimport { Metadata } from \"@r2-shared-js/models/metadata\";\nimport { Publication } from \"@r2-shared-js/models/publication\";\nimport { PublicationParsePromise } from \"@r2-shared-js/parser/publication-parser\";\nimport { isHTTP } from \"@r2-utils-js/_utils/http/UrlUtils\";\n\ninitGlobalConverters_OPDS();\ninitGlobalConverters_SHARED();\ninitGlobalConverters_GENERIC();\n\n// import * as debug_ from \"debug\";\n// const debug = debug_(\"r2:streamer#http/opds2-create-cli\");\n\nconsole.log(`process.cwd(): ${process.cwd()}`);\nconsole.log(`__dirname: ${__dirname}`);\n\nlet args = process.argv.slice(2);\n// console.log(\"process.argv.slice(2): %o\", args);\n\nif (!args.length) {\n console.log(\"FILEPATH ARGUMENTS ARE MISSING.\");\n process.exit(1);\n}\nconst opdsJsonFilePath = args[0];\nargs = args.slice(1);\nif (fs.existsSync(opdsJsonFilePath)) {\n console.log(\"OPDS2 JSON file already exists.\");\n process.exit(1);\n}\n\n// tslint:disable-next-line:no-floating-promises\n(async () => {\n const feed = new OPDSFeed();\n\n // TODO: what is the JSON-LD context URL?\n // https://drafts.opds.io/opds-2.0\n // https://github.com/opds-community/test-catalog/tree/master/2.0\n // JSON SCHEMA:\n // \"@context\": {\n // \"type\": [\"string\", \"array\"],\n // \"items\": {\n // \"type\": \"string\"\n // },\n // \"uniqueItems\": true\n // },\n // feed.Context = [\"http://opds-spec.org/opds.jsonld\"];\n\n feed.Metadata = new OPDSMetadata();\n feed.Metadata.RDFType = \"http://schema.org/DataFeed\";\n feed.Metadata.Title = \"Readium 2 OPDS 2.0 Feed\";\n feed.Metadata.Modified = moment(Date.now()).toDate();\n\n feed.Publications = [];\n\n let nPubs = 0;\n for (const pathBase64 of args) {\n const pathBase64Str = Buffer.from(decodeURIComponent(pathBase64), \"base64\").toString(\"utf8\");\n\n if (isHTTP(pathBase64Str)) {\n continue;\n }\n\n // const fileName = path.basename(pathBase64Str);\n // const ext = path.extname(fileName).toLowerCase();\n\n console.log(`OPDS parsing: ${pathBase64Str}`);\n let publication: Publication;\n try {\n publication = await PublicationParsePromise(pathBase64Str);\n } catch (err) {\n console.log(err);\n continue;\n }\n\n nPubs++;\n\n const publi = new OPDSPublication();\n\n publi.Links = [];\n const linkSelf = new OPDSLink();\n linkSelf.Href = pathBase64 + \"/manifest.json\";\n linkSelf.TypeLink =\n (publication.Metadata && publication.Metadata.RDFType &&\n /http[s]?:\\/\\/schema\\.org\\/Audiobook$/.test(publication.Metadata.RDFType)) ?\n \"application/audiobook+json\" : ((publication.Metadata && publication.Metadata.RDFType &&\n (/http[s]?:\\/\\/schema\\.org\\/ComicStory$/.test(publication.Metadata.RDFType) ||\n /http[s]?:\\/\\/schema\\.org\\/VisualNarrative$/.test(publication.Metadata.RDFType))) ? \"application/divina+json\" :\n \"application/webpub+json\");\n linkSelf.AddRel(\"http://opds-spec.org/acquisition\");\n publi.Links.push(linkSelf);\n\n feed.Publications.push(publi);\n\n publi.Images = [];\n const coverLink = publication.GetCover();\n if (coverLink) {\n const linkCover = new OPDSLink();\n linkCover.Href = pathBase64 + \"/\" + coverLink.Href;\n linkCover.TypeLink = coverLink.TypeLink;\n // linkCover.Rel = [];\n // linkCover.Rel.push(\"cover\");\n\n if (coverLink.Width && coverLink.Height) {\n linkCover.Width = coverLink.Width;\n linkCover.Height = coverLink.Height;\n\n }\n publi.Images.push(linkCover);\n } else {\n console.log(\"NO COVER IMAGE?\");\n }\n\n if (publication.Metadata) {\n try {\n const publicationMetadataJson = TaJsonSerialize(publication.Metadata);\n publi.Metadata = TaJsonDeserialize<Metadata>(publicationMetadataJson, Metadata);\n } catch (err) {\n console.log(err);\n continue;\n }\n }\n }\n\n feed.Metadata.NumberOfItems = nPubs;\n\n const jsonObj = TaJsonSerialize(feed);\n const jsonStr = global.JSON.stringify(jsonObj, null, \"\");\n fs.writeFileSync(opdsJsonFilePath, jsonStr, { encoding: \"utf8\" });\n\n console.log(\"DONE! :)\");\n console.log(opdsJsonFilePath);\n})();\n"]}
\No newline at end of file