Fix #1649 (any2mobi fails to convert "Die Zeit" News ePub Files) and #1650

This commit is contained in:
Kovid Goyal 2009-01-19 16:16:33 -08:00
commit 15de9783e6
4 changed files with 11 additions and 7 deletions

View File

@ -12,7 +12,7 @@ import copy
import re
from lxml import etree
from calibre.ebooks.oeb.base import namespace, barename
from calibre.ebooks.oeb.base import XHTML, XHTML_NS
from calibre.ebooks.oeb.base import XHTML, XHTML_NS, OEB_DOCS
from calibre.ebooks.oeb.stylizer import Stylizer
from calibre.ebooks.oeb.transforms.flatcss import KeyMapper
@ -96,8 +96,11 @@ class MobiMLizer(object):
href = oeb.guide['cover'].href
del oeb.guide['cover']
item = oeb.manifest.hrefs[href]
oeb.manifest.remove(item)
if item.spine_position is not None:
oeb.spine.remove(item)
if item.media_type in OEB_DOCS:
self.oeb.manifest.remove(item)
def mobimlize_spine(self):
for item in self.oeb.spine:
stylizer = Stylizer(item.data, item.href, self.oeb, self.profile)

View File

@ -180,7 +180,6 @@ class Serializer(object):
if not isinstance(elem.tag, basestring) \
or namespace(elem.tag) not in nsrmap:
return
hrefs = self.oeb.manifest.hrefs
tag = prefixname(elem.tag, nsrmap)
for attr in ('name', 'id'):
if attr in elem.attrib:
@ -203,7 +202,7 @@ class Serializer(object):
continue
elif attr == 'src':
href = item.abshref(val)
if href in hrefs:
if href in self.images:
index = self.images[href]
buffer.write('recindex="%05d"' % index)
continue

View File

@ -506,6 +506,7 @@ class Spine(object):
self.items.pop(index)
for i in xrange(index, len(self.items)):
self.items[i].spine_position = i
item.spine_position = None
def __iter__(self):
for item in self.items:

View File

@ -41,8 +41,9 @@ class ManifestTrimmer(object):
while unchecked:
new = set()
for item in unchecked:
if item.media_type in OEB_DOCS or \
item.media_type[-4:] in ('/xml', '+xml'):
if (item.media_type in OEB_DOCS or
item.media_type[-4:] in ('/xml', '+xml')) and \
item.data is not None:
hrefs = [sel(item.data) for sel in LINK_SELECTORS]
for href in chain(*hrefs):
href = item.abshref(href)