This commit is contained in:
Kovid Goyal 2013-04-22 17:38:21 +05:30
parent 5ff3b9e811
commit 68959f7652

View File

@ -148,7 +148,6 @@ class OEBReader(object):
if not has_aut: if not has_aut:
m.add('creator', self.oeb.translate(__('Unknown')), role='aut') m.add('creator', self.oeb.translate(__('Unknown')), role='aut')
def _manifest_prune_invalid(self): def _manifest_prune_invalid(self):
''' '''
Remove items from manifest that contain invalid data. This prevents Remove items from manifest that contain invalid data. This prevents
@ -293,7 +292,7 @@ class OEBReader(object):
continue continue
try: try:
href = item.abshref(urlnormalize(href)) href = item.abshref(urlnormalize(href))
except ValueError: # Malformed URL except ValueError: # Malformed URL
continue continue
if href not in manifest.hrefs: if href not in manifest.hrefs:
continue continue
@ -394,9 +393,9 @@ class OEBReader(object):
authorElement = xpath(child, authorElement = xpath(child,
'descendant::calibre:meta[@name = "author"]') 'descendant::calibre:meta[@name = "author"]')
if authorElement : if authorElement:
author = authorElement[0].text author = authorElement[0].text
else : else:
author = None author = None
descriptionElement = xpath(child, descriptionElement = xpath(child,
@ -406,7 +405,7 @@ class OEBReader(object):
method='text', encoding=unicode).strip() method='text', encoding=unicode).strip()
if not description: if not description:
description = None description = None
else : else:
description = None description = None
index_image = xpath(child, index_image = xpath(child,
@ -497,7 +496,8 @@ class OEBReader(object):
titles = [] titles = []
headers = [] headers = []
for item in self.oeb.spine: for item in self.oeb.spine:
if not item.linear: continue if not item.linear:
continue
html = item.data html = item.data
title = ''.join(xpath(html, '/h:html/h:head/h:title/text()')) title = ''.join(xpath(html, '/h:html/h:head/h:title/text()'))
title = COLLAPSE_RE.sub(' ', title.strip()) title = COLLAPSE_RE.sub(' ', title.strip())
@ -515,17 +515,21 @@ class OEBReader(object):
if len(titles) > len(set(titles)): if len(titles) > len(set(titles)):
use = headers use = headers
for title, item in izip(use, self.oeb.spine): for title, item in izip(use, self.oeb.spine):
if not item.linear: continue if not item.linear:
continue
toc.add(title, item.href) toc.add(title, item.href)
return True return True
def _toc_from_opf(self, opf, item): def _toc_from_opf(self, opf, item):
self.oeb.auto_generated_toc = False self.oeb.auto_generated_toc = False
if self._toc_from_ncx(item): return if self._toc_from_ncx(item):
return
# Prefer HTML to tour based TOC, since several LIT files # Prefer HTML to tour based TOC, since several LIT files
# have good HTML TOCs but bad tour based TOCs # have good HTML TOCs but bad tour based TOCs
if self._toc_from_html(opf): return if self._toc_from_html(opf):
if self._toc_from_tour(opf): return return
if self._toc_from_tour(opf):
return
self._toc_from_spine(opf) self._toc_from_spine(opf)
self.oeb.auto_generated_toc = True self.oeb.auto_generated_toc = True
@ -589,8 +593,10 @@ class OEBReader(object):
return True return True
def _pages_from_opf(self, opf, item): def _pages_from_opf(self, opf, item):
if self._pages_from_ncx(opf, item): return if self._pages_from_ncx(opf, item):
if self._pages_from_page_map(opf): return return
if self._pages_from_page_map(opf):
return
return return
def _cover_from_html(self, hcover): def _cover_from_html(self, hcover):