- Ignore duplicate <manifest/> entries and attempt to continue.
This commit is contained in:
Marshall T. Vandegrift 2009-01-19 20:54:34 -05:00
parent 15de9783e6
commit 0f56822a07

View File

@ -803,12 +803,20 @@ class OEBBook(object):
def _manifest_from_opf(self, opf): def _manifest_from_opf(self, opf):
self.manifest = manifest = Manifest(self) self.manifest = manifest = Manifest(self)
for elem in xpath(opf, '/o2:package/o2:manifest/o2:item'): for elem in xpath(opf, '/o2:package/o2:manifest/o2:item'):
id = elem.get('id')
href = elem.get('href') href = elem.get('href')
media_type = elem.get('media-type')
fallback = elem.get('fallback')
if href in manifest.hrefs:
self.logger.warn(u'Duplicate manifest entry for %r.' % href)
continue
if not self.container.exists(href): if not self.container.exists(href):
self.logger.warn(u'Manifest item %r not found.' % href) self.logger.warn(u'Manifest item %r not found.' % href)
continue continue
manifest.add(elem.get('id'), href, elem.get('media-type'), if id in manifest.ids:
elem.get('fallback')) self.logger.warn(u'Duplicate manifest id %r.' % id)
id, href = manifest.generate(id, href)
manifest.add(id, href, media_type, fallback)
def _spine_from_opf(self, opf): def _spine_from_opf(self, opf):
self.spine = spine = Spine(self) self.spine = spine = Spine(self)