From 3dc42b5302f6fec969f4996115f3dda071013903 Mon Sep 17 00:00:00 2001 From: John Schember Date: Sun, 1 Mar 2009 10:23:25 -0500 Subject: [PATCH 1/3] Add close at end of get_file --- src/calibre/devices/usbms/driver.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/calibre/devices/usbms/driver.py b/src/calibre/devices/usbms/driver.py index cadc61e584..3b9e8c0715 100644 --- a/src/calibre/devices/usbms/driver.py +++ b/src/calibre/devices/usbms/driver.py @@ -167,6 +167,7 @@ class USBMS(Device): path = self.munge_path(path) src = open(path, 'rb') shutil.copyfileobj(src, outfile, 10*1024*1024) + src.close() def put_file(self, infile, path, replace_file=False, end_session=True): path = self.munge_path(path) From 8119b9e86870b4e2206aa7339db8f6e485ce552d Mon Sep 17 00:00:00 2001 From: John Schember Date: Sun, 1 Mar 2009 18:10:14 -0500 Subject: [PATCH 2/3] Fix open files with PDF metadata reader --- src/calibre/ebooks/metadata/meta.py | 14 +++++++------- src/calibre/ebooks/metadata/pdf.py | 6 ++++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/calibre/ebooks/metadata/meta.py b/src/calibre/ebooks/metadata/meta.py index 1241238f26..43053a43b9 100644 --- a/src/calibre/ebooks/metadata/meta.py +++ b/src/calibre/ebooks/metadata/meta.py @@ -39,13 +39,13 @@ def metadata_from_formats(formats): return mi2 for path, ext in zip(formats, extensions): - stream = open(path, 'rb') - try: - mi.smart_update(get_metadata(stream, stream_type=ext, use_libprs_metadata=True)) - except: - continue - if getattr(mi, 'application_id', None) is not None: - return mi + with open(path, 'rb') as stream: + try: + mi.smart_update(get_metadata(stream, stream_type=ext, use_libprs_metadata=True)) + except: + continue + if getattr(mi, 'application_id', None) is not None: + return mi if not mi.title: mi.title = _('Unknown') diff --git a/src/calibre/ebooks/metadata/pdf.py b/src/calibre/ebooks/metadata/pdf.py index 8ff652c01b..8f73e04050 100644 --- a/src/calibre/ebooks/metadata/pdf.py +++ b/src/calibre/ebooks/metadata/pdf.py @@ -67,6 +67,8 @@ def set_metadata(stream, mi): stream.seek(0) def get_cover(stream): + data = StringIO.StringIO() + try: pdf = PdfFileReader(stream) output = PdfFileWriter() @@ -88,12 +90,12 @@ def get_cover(stream): img = Image.open('%s.jpg' % cover_path) - data = StringIO.StringIO() img.save(data, 'JPEG') - return data.getvalue() except: import traceback traceback.print_exc() + + return data.getvalue() def option_parser(): p = get_parser('pdf') From e7270d2db88f36e4e921316e7f50b9e1bcef49b9 Mon Sep 17 00:00:00 2001 From: John Schember Date: Tue, 3 Mar 2009 20:00:11 -0500 Subject: [PATCH 3/3] USBMS: Devices that support subdirs use a similar layout as Calibre on the computer --- src/calibre/devices/cybookg3/driver.py | 13 +++++++++++-- src/calibre/devices/usbms/driver.py | 18 +++++++++++------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/calibre/devices/cybookg3/driver.py b/src/calibre/devices/cybookg3/driver.py index eef32594eb..6a77c09479 100644 --- a/src/calibre/devices/cybookg3/driver.py +++ b/src/calibre/devices/cybookg3/driver.py @@ -69,14 +69,23 @@ class CYBOOKG3(USBMS): for infile in files: newpath = path mdata = metadata.next() - + if self.SUPPORTS_SUB_DIRS: if 'tags' in mdata.keys(): for tag in mdata['tags']: - if tag.startswith('/'): + if tag.startswith('News'): + newpath = os.path.join(newpath, 'news') + newpath = os.path.join(newpath, mdata.get('title', '')) + newpath = os.path.join(newpath, mdata.get('timestamp', '')) + elif tag.startswith('/'): + newpath = path newpath += tag newpath = os.path.normpath(newpath) break + + if newpath == path: + newpath = os.path.join(newpath, mdata.get('authors', '')) + newpath = os.path.join(newpath, mdata.get('title', '')) if not os.path.exists(newpath): os.makedirs(newpath) diff --git a/src/calibre/devices/usbms/driver.py b/src/calibre/devices/usbms/driver.py index abdf2f0d81..a088bf1a32 100644 --- a/src/calibre/devices/usbms/driver.py +++ b/src/calibre/devices/usbms/driver.py @@ -103,10 +103,20 @@ class USBMS(Device): if 'tags' in mdata.keys(): for tag in mdata['tags']: - if tag.startswith('/'): + if tag.startswith('News'): + newpath = os.path.join(newpath, 'news') + newpath = os.path.join(newpath, mdata.get('title', '')) + newpath = os.path.join(newpath, mdata.get('timestamp', '')) + break + elif tag.startswith('/'): + newpath = path newpath += tag newpath = os.path.normpath(newpath) break + + if newpath == path: + newpath = os.path.join(newpath, mdata.get('authors', '')) + newpath = os.path.join(newpath, mdata.get('title', '')) if not os.path.exists(newpath): os.makedirs(newpath) @@ -166,14 +176,8 @@ class USBMS(Device): def get_file(self, path, outfile, end_session=True): path = self.munge_path(path) -<<<<<<< TREE - src = open(path, 'rb') - shutil.copyfileobj(src, outfile, 10*1024*1024) - src.close() -======= with open(path, 'rb') as src: shutil.copyfileobj(src, outfile, 10*1024*1024) ->>>>>>> MERGE-SOURCE def put_file(self, infile, path, replace_file=False, end_session=True): path = self.munge_path(path)