diff --git a/src/calibre/customize/builtins.py b/src/calibre/customize/builtins.py index 04e880b714..b56d015e54 100644 --- a/src/calibre/customize/builtins.py +++ b/src/calibre/customize/builtins.py @@ -423,6 +423,17 @@ class TOPAZMetadataWriter(MetadataWriterPlugin): from calibre.ebooks.metadata.topaz import set_metadata set_metadata(stream, mi) +class TXTZMetadataWriter(MetadataWriterPlugin): + + name = 'Set TXTZ metadata' + file_types = set(['txtz']) + description = _('Set metadata from %s files') % 'TXTZ' + author = 'John Schember' + + def set_metadata(self, stream, mi, type): + from calibre.ebooks.metadata.txtz import set_metadata + set_metadata(stream, mi) + # }}} from calibre.ebooks.comic.input import ComicInput diff --git a/src/calibre/ebooks/metadata/txtz.py b/src/calibre/ebooks/metadata/txtz.py index b9d607c63b..ba0078328e 100644 --- a/src/calibre/ebooks/metadata/txtz.py +++ b/src/calibre/ebooks/metadata/txtz.py @@ -9,9 +9,12 @@ Read meta information from TXT files import os +from cStringIO import StringIO + from calibre.ebooks.metadata import MetaInformation +from calibre.ebooks.metadata.opf2 import OPF, metadata_to_opf from calibre.ptempfile import TemporaryDirectory -from calibre.utils.zipfile import ZipFile +from calibre.utils.zipfile import ZipFile, safe_replace def get_metadata(stream, extract_cover=True): ''' @@ -24,11 +27,13 @@ def get_metadata(stream, extract_cover=True): try: zf = ZipFile(stream) zf.extract('metadata.opf', tdir) - - from calibre.ebooks.metadata.opf2 import OPF with open(os.path.join(tdir, 'metadata.opf'), 'rb') as opff: mi = OPF(opff).to_book_metadata() except: return mi - return mi + +def set_metadata(stream, mi): + stream.seek(0) + opf = StringIO(metadata_to_opf(mi)) + safe_replace(stream, 'metadata.opf', opf)