diff --git a/src/calibre/ebooks/htmlz/input.py b/src/calibre/ebooks/htmlz/input.py
index d083fcc4ab..743d8e53eb 100644
--- a/src/calibre/ebooks/htmlz/input.py
+++ b/src/calibre/ebooks/htmlz/input.py
@@ -7,7 +7,6 @@ __copyright__ = '2011, John Schember '
__docformat__ = 'restructuredtext en'
import os
-import posixpath
from calibre import guess_type, walk
from calibre.customize.conversion import InputFormatPlugin
@@ -74,22 +73,23 @@ class HTMLZInput(InputFormatPlugin):
meta_info_to_oeb_metadata(mi, oeb.metadata, log)
# Get the cover path from the OPF.
- cover_href = None
+ cover_path = None
opf = None
for x in walk('.'):
if os.path.splitext(x)[1].lower() in ('.opf'):
opf = x
break
if opf:
- opf = OPF(opf)
- cover_href = posixpath.relpath(opf.cover, os.path.dirname(stream.name))
+ opf = OPF(opf, basedir=os.getcwd())
+ cover_path = opf.raster_cover
# Set the cover.
- if cover_href:
+ if cover_path:
cdata = None
- with open(cover_href, 'rb') as cf:
+ with open(os.path.join(os.getcwd(), cover_path), 'rb') as cf:
cdata = cf.read()
- id, href = oeb.manifest.generate('cover', cover_href)
- oeb.manifest.add(id, href, guess_type(cover_href)[0], data=cdata)
+ cover_name = os.path.basename(cover_path)
+ id, href = oeb.manifest.generate('cover', cover_name)
+ oeb.manifest.add(id, href, guess_type(cover_name)[0], data=cdata)
oeb.guide.add('cover', 'Cover', href)
return oeb
diff --git a/src/calibre/ebooks/metadata/extz.py b/src/calibre/ebooks/metadata/extz.py
index 021450fca5..f3725027a9 100644
--- a/src/calibre/ebooks/metadata/extz.py
+++ b/src/calibre/ebooks/metadata/extz.py
@@ -8,12 +8,11 @@ Read meta information from extZ (TXTZ, HTMLZ...) files.
'''
import os
-import posixpath
from cStringIO import StringIO
from calibre.ebooks.metadata import MetaInformation
-from calibre.ebooks.metadata.opf2 import OPF, metadata_to_opf
+from calibre.ebooks.metadata.opf2 import OPF
from calibre.ptempfile import PersistentTemporaryFile
from calibre.utils.zipfile import ZipFile, safe_replace
@@ -31,9 +30,9 @@ def get_metadata(stream, extract_cover=True):
opf = OPF(opf_stream)
mi = opf.to_book_metadata()
if extract_cover:
- cover_href = posixpath.relpath(opf.cover, os.path.dirname(stream.name))
+ cover_href = opf.raster_cover
if cover_href:
- mi.cover_data = ('jpg', zf.read(cover_href))
+ mi.cover_data = (os.path.splitext(cover_href)[1], zf.read(cover_href))
except:
return mi
return mi
@@ -59,18 +58,15 @@ def set_metadata(stream, mi):
except:
pass
if new_cdata:
- cover = opf.cover
- if not cover:
- cover = 'cover.jpg'
- cpath = posixpath.join(posixpath.dirname(opf_path), cover)
+ cpath = opf.raster_cover
+ if not cpath:
+ cpath = 'cover.jpg'
new_cover = _write_new_cover(new_cdata, cpath)
replacements[cpath] = open(new_cover.name, 'rb')
- mi.cover = cover
+ mi.cover = cpath
# Update the metadata.
- old_mi = opf.to_book_metadata()
- old_mi.smart_update(mi)
- opf.smart_update(metadata_to_opf(old_mi), replace_metadata=True)
+ opf.smart_update(mi, replace_metadata=True)
newopf = StringIO(opf.render())
safe_replace(stream, opf_path, newopf, extra_replacements=replacements, add_missing=True)