A few minor clean-ups to OEBBook bad OPF handling.

This commit is contained in:
Marshall T. Vandegrift 2009-02-03 12:46:40 -05:00
parent 8367902cb1
commit 0771c5f1c3

View File

@ -1116,6 +1116,7 @@ class OEBBook(object):
def _manifest_add_missing(self): def _manifest_add_missing(self):
manifest = self.manifest manifest = self.manifest
known = set(manifest.hrefs)
unchecked = set(manifest.values()) unchecked = set(manifest.values())
while unchecked: while unchecked:
new = set() new = set()
@ -1130,17 +1131,18 @@ class OEBBook(object):
continue continue
href = item.abshref(urlnormalize(href)) href = item.abshref(urlnormalize(href))
scheme = urlparse(href).scheme scheme = urlparse(href).scheme
if not scheme and href not in manifest.hrefs: if not scheme and href not in known:
new.add(href) new.add(href)
elif item.media_type == CSS_MIME: elif item.media_type in OEB_STYLES:
for match in CSSURL_RE.finditer(item.data): for match in CSSURL_RE.finditer(item.data):
href = match.group('url') href, _ = urldefrag(match.group('url'))
href = item.abshref(urlnormalize(href)) href = item.abshref(urlnormalize(href))
scheme = urlparse(href).scheme scheme = urlparse(href).scheme
if not scheme and href not in manifest.hrefs: if not scheme and href not in known:
new.add(href) new.add(href)
unchecked.clear() unchecked.clear()
for href in new: for href in new:
known.add(href)
if not self.container.exists(href): if not self.container.exists(href):
self.logger.warn('Referenced file %r not found' % href) self.logger.warn('Referenced file %r not found' % href)
continue continue
@ -1441,8 +1443,10 @@ class OEBBook(object):
if self.metadata.cover: if self.metadata.cover:
id = str(self.metadata.cover[0]) id = str(self.metadata.cover[0])
item = self.manifest.ids.get(id, None) item = self.manifest.ids.get(id, None)
if item is not None: if item is not None and item.media_type in OEB_IMAGES:
return item return item
else:
self.logger.warn('Invalid cover image @id %r' % id)
hcover = self.spine[0] hcover = self.spine[0]
if 'cover' in self.guide: if 'cover' in self.guide:
href = self.guide['cover'].href href = self.guide['cover'].href