diff --git a/server/utils/parsers/parseDaisyMetadata.js b/server/utils/parsers/parseDaisyMetadata.js index decb06186..6ede05d36 100644 --- a/server/utils/parsers/parseDaisyMetadata.js +++ b/server/utils/parsers/parseDaisyMetadata.js @@ -65,7 +65,8 @@ function parseIdentifier(metaTags, identifierType) { const identifierValues = [ ...getValues(metaTags, 'dc:identifier'), - ...getValues(metaTags, 'ncc:identifier') + ...getValues(metaTags, 'ncc:identifier'), + ...(identifierType === 'isbn' ? getValues(metaTags, 'dc:source') : []) ] for (const identifier of identifierValues) { if (identifierType === 'isbn' && /isbn/i.test(identifier)) { diff --git a/test/server/utils/parsers/parseDaisyMetadata.test.js b/test/server/utils/parsers/parseDaisyMetadata.test.js index 2367a9555..8a18ce5e6 100644 --- a/test/server/utils/parsers/parseDaisyMetadata.test.js +++ b/test/server/utils/parsers/parseDaisyMetadata.test.js @@ -52,6 +52,19 @@ describe('parseDaisyMetadata', () => { expect(result.title).to.equal('Title From Head') }) + it('parses isbn from dc:source in DAISY ncc.html', () => { + const nccHtml = ` + + + + + + ` + + const result = parseDaisyMetadata(nccHtml) + expect(result.isbn).to.equal('978-0-553-38016-3') + }) + it('parses chapter names from heading entries in ncc.html', () => { const nccHtml = `