Fix #1275 (converting opf to epub)

This commit is contained in:
Kovid Goyal 2008-11-17 16:59:37 -08:00
parent a4efa9b305
commit e6d872c317
2 changed files with 8 additions and 7 deletions

View File

@ -30,7 +30,7 @@ def detect(aBuf):
# Added by Kovid # Added by Kovid
ENCODING_PATS = [ ENCODING_PATS = [
re.compile(r'<[^<>]+encoding=[\'"](.*?)[\'"][^<>]*>', re.IGNORECASE), re.compile(r'<\?[^<>]+encoding=[\'"](.*?)[\'"][^<>]*>', re.IGNORECASE),
re.compile(r'<meta.*?content=[\'"].*?charset=([^\s\'"]+).*?[\'"].*?>', re.IGNORECASE) re.compile(r'<meta.*?content=[\'"].*?charset=([^\s\'"]+).*?[\'"].*?>', re.IGNORECASE)
] ]
ENTITY_PATTERN = re.compile(r'&(\S+?);') ENTITY_PATTERN = re.compile(r'&(\S+?);')

View File

@ -273,10 +273,11 @@ class Spine(ResourceCollection):
for itemref in itemrefs: for itemref in itemrefs:
idref = itemref.get('idref', None) idref = itemref.get('idref', None)
if idref is not None: if idref is not None:
r = Spine.Item(s.manifest.id_for_path, path = s.manifest.path_for_id(idref)
s.manifest.path_for_id(idref), is_path=True) if path:
r.is_linear = itemref.get('linear', 'yes') == 'yes' r = Spine.Item(s.manifest.id_for_path, path, is_path=True)
s.append(r) r.is_linear = itemref.get('linear', 'yes') == 'yes'
s.append(r)
return s return s
@staticmethod @staticmethod
@ -439,7 +440,7 @@ class OPF(object):
stream = open(stream, 'rb') stream = open(stream, 'rb')
self.basedir = self.base_dir = basedir self.basedir = self.base_dir = basedir
raw, self.encoding = xml_to_unicode(stream.read(), strip_encoding_pats=True, resolve_entities=True) raw, self.encoding = xml_to_unicode(stream.read(), strip_encoding_pats=True, resolve_entities=True)
raw = raw[raw.find('<'):]
self.root = etree.fromstring(raw, self.PARSER) self.root = etree.fromstring(raw, self.PARSER)
self.metadata = self.metadata_path(self.root) self.metadata = self.metadata_path(self.root)
if not self.metadata: if not self.metadata: