Get series info from opf

This commit is contained in:
Igor Kaldowski 2021-12-04 21:07:31 +00:00
parent 9423727f89
commit 6e621ecce1
2 changed files with 19 additions and 1 deletions

View File

@ -56,6 +56,12 @@ const xmlToJSON = (xml) => {
Logger.error(`[xmlToJSON] Error`, err)
resolve(null)
} else {
if (typeof results.package.metadata[0].meta != "undefined") {
results.package.metadata[0].meta = {}
for(var match of xml.matchAll(/<meta name="(?<name>.+)" content="(?<content>.+)"\/>/g)) {
results.package.metadata[0].meta[match.groups['name']] = [match.groups['content']]
}
}
resolve(results)
}
})

View File

@ -69,6 +69,16 @@ function fetchLanguage(metadata) {
return fetchTagString(metadata, 'dc:language')
}
function fetchSeries(metadata) {
if(typeof metadata.meta == "undefined") return null
return fetchTagString(metadata.meta, "calibre:series")
}
function fetchVolumeNumber(metadata) {
if(typeof metadata.meta == "undefined") return null
return fetchTagString(metadata.meta, "calibre:series_index")
}
module.exports.parseOpfMetadataXML = async (xml) => {
var json = await xmlToJSON(xml)
if (!json || !json.package || !json.package.metadata) return null
@ -89,7 +99,9 @@ module.exports.parseOpfMetadataXML = async (xml) => {
isbn: fetchISBN(metadata),
description: fetchDescription(metadata),
genres: fetchGenres(metadata),
language: fetchLanguage(metadata)
language: fetchLanguage(metadata),
series: fetchSeries(metadata),
volumeNumber: fetchVolumeNumber(metadata)
}
return data
}