From a25a236f324291ae94ea50c58f7a7cf37b93e0d0 Mon Sep 17 00:00:00 2001 From: John Schember Date: Tue, 15 Feb 2011 18:39:00 -0500 Subject: [PATCH] TXTZ Import: Add metadata.opf file to archive when importing if present or create it if not present. --- src/calibre/customize/builtins.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/calibre/customize/builtins.py b/src/calibre/customize/builtins.py index 87c83eff52..7358b4ccda 100644 --- a/src/calibre/customize/builtins.py +++ b/src/calibre/customize/builtins.py @@ -8,6 +8,7 @@ from calibre.customize import FileTypePlugin, MetadataReaderPlugin, \ MetadataWriterPlugin, PreferencesPlugin, InterfaceActionBase from calibre.constants import numeric_version from calibre.ebooks.metadata.archive import ArchiveExtract, get_cbz_metadata +from calibre.ebooks.metadata.opf2 import metadata_to_opf from calibre.ebooks.oeb.base import OEB_IMAGES # To archive plugins {{{ @@ -134,7 +135,18 @@ class TXT2TXTZ(FileTypePlugin): import zipfile of = self.temporary_file('_plugin_txt2txtz.txtz') txtz = zipfile.ZipFile(of.name, 'w') + # Add selected TXT file to archive. txtz.write(path_to_ebook, os.path.basename(path_to_ebook), zipfile.ZIP_DEFLATED) + # metadat.opf + if os.path.exists(os.path.join(base_dir, 'metadata.opf')): + txtz.write(os.path.join(base_dir, 'metadata.opf'), 'metadata.opf', zipfile.ZIP_DEFLATED) + else: + from calibre.ebooks.metadata.txt import get_metadata + with open(path_to_ebook, 'rb') as ebf: + mi = get_metadata(ebf) + opf = metadata_to_opf(mi) + txtz.writestr('metadata.opf', opf, zipfile.ZIP_DEFLATED) + # images for image in images: txtz.write(os.path.join(base_dir, image), image) txtz.close()