diff --git a/src/calibre/devices/cybookg3/driver.py b/src/calibre/devices/cybookg3/driver.py index 547029630c..eebd28ebee 100644 --- a/src/calibre/devices/cybookg3/driver.py +++ b/src/calibre/devices/cybookg3/driver.py @@ -4,9 +4,11 @@ __copyright__ = '2009, John Schember ' Device driver for Bookeen's Cybook Gen 3 ''' -import os, shutil +import os +import shutil from itertools import cycle +from calibre import sanitize_file_name as sanitize from calibre.devices.errors import DeviceError, FreeSpaceError from calibre.devices.usbms.driver import USBMS import calibre.devices.cybookg3.t2b as t2b @@ -57,22 +59,21 @@ class CYBOOKG3(USBMS): for tag in mdata['tags']: 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', '')) + newpath = os.path.join(newpath, sanitize(mdata.get('title', ''))) + newpath = os.path.join(newpath, sanitize(mdata.get('timestamp', ''))) elif tag.startswith('/'): newpath += tag newpath = os.path.normpath(newpath) break if newpath == path: - newpath = os.path.join(newpath, mdata.get('authors', _('Unknown'))) - newpath = os.path.join(newpath, mdata.get('title', _('Unknown'))) + newpath = os.path.join(newpath, sanitize(mdata.get('authors', _('Unknown')))) + newpath = os.path.join(newpath, sanitize(mdata.get('title', _('Unknown')))) - newpath = self._sanitize_path(newpath) if not os.path.exists(newpath): os.makedirs(newpath) - filepath = self._sanitize_path(os.path.join(newpath, names.next())) + filepath = os.path.join(newpath, sanitize(names.next())) paths.append(filepath) if hasattr(infile, 'read'): diff --git a/src/calibre/devices/jetbook/driver.py b/src/calibre/devices/jetbook/driver.py index d66fcf03f7..2af1b03bf7 100644 --- a/src/calibre/devices/jetbook/driver.py +++ b/src/calibre/devices/jetbook/driver.py @@ -78,11 +78,10 @@ class JETBOOK(USBMS): if newpath == path: newpath = os.path.join(newpath, author, title) - newpath = self._sanitize_path(newpath) if not os.path.exists(newpath): os.makedirs(newpath) - filepath = self._sanitize_path(os.path.join(newpath, fname)) + filepath = os.path.join(newpath, fname) paths.append(filepath) if hasattr(infile, 'read'): diff --git a/src/calibre/devices/prs505/driver.py b/src/calibre/devices/prs505/driver.py index 05da6f0cdf..165dd324ad 100644 --- a/src/calibre/devices/prs505/driver.py +++ b/src/calibre/devices/prs505/driver.py @@ -5,10 +5,10 @@ __copyright__ = '2008, Kovid Goyal ' \ Device driver for the SONY PRS-505 ''' import os -import re import time from itertools import cycle +from calibre import sanitize_file_name as sanitize from calibre.devices.usbms.cli import CLI from calibre.devices.usbms.device import Device from calibre.devices.errors import DeviceError, FreeSpaceError @@ -101,11 +101,6 @@ class PRS505(CLI, Device): self.report_progress(1.0, _('Getting list of books on device...')) return bl - def _sanitize_path(self, path): - path = re.sub('[?<>:*|\^]+', '', path) - path = re.sub('[\.\s]+$', '', path) - return path - def upload_books(self, files, names, on_card=None, end_session=True, metadata=None): if on_card == 'carda' and not self._card_a_prefix: @@ -157,8 +152,8 @@ class PRS505(CLI, Device): for tag in mdata['tags']: 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', '')) + newpath = os.path.join(newpath, sanitize(mdata.get('title', ''))) + newpath = os.path.join(newpath, sanitize(mdata.get('timestamp', ''))) elif tag.startswith('/'): newpath = path newpath += tag @@ -166,14 +161,13 @@ class PRS505(CLI, Device): break if newpath == path: - newpath = os.path.join(newpath, mdata.get('authors', _('Unknown'))) - newpath = os.path.join(newpath, mdata.get('title', _('Unknown'))) + newpath = os.path.join(newpath, sanitize(mdata.get('authors', _('Unknown')))) + newpath = os.path.join(newpath, sanitize(mdata.get('title', _('Unknown')))) - newpath = self._sanitize_path(newpath) if not os.path.exists(newpath): os.makedirs(newpath) - filepath = self._sanitize_path(os.path.join(newpath, names.next())) + filepath = os.path.join(newpath, sanitize(names.next())) paths.append(filepath) self.put_file(infile, paths[-1], replace_file=True) diff --git a/src/calibre/devices/usbms/driver.py b/src/calibre/devices/usbms/driver.py index 317d699262..ae5504fc71 100644 --- a/src/calibre/devices/usbms/driver.py +++ b/src/calibre/devices/usbms/driver.py @@ -10,9 +10,9 @@ for a particular device. import os import fnmatch import shutil -import re from itertools import cycle +from calibre import sanitize_file_name as sanitize from calibre.ebooks.metadata import authors_to_string from calibre.devices.usbms.cli import CLI from calibre.devices.usbms.device import Device @@ -116,11 +116,6 @@ class USBMS(CLI, Device): raise FreeSpaceError(_("There is insufficient free space on the storage card")) return path - def _sanitize_path(self, path): - path = re.sub('[?<>:*|\^]+', '', path) - path = re.sub('[\.\s]+$', '', path) - return path - def upload_books(self, files, names, on_card=None, end_session=True, metadata=None): @@ -140,8 +135,8 @@ class USBMS(CLI, Device): for tag in mdata['tags']: 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', '')) + newpath = os.path.join(newpath, sanitize(mdata.get('title', ''))) + newpath = os.path.join(newpath, sanitize(mdata.get('timestamp', ''))) break elif tag.startswith('/'): newpath += tag @@ -150,14 +145,13 @@ class USBMS(CLI, Device): if newpath == path: newpath = os.path.join(newpath, - mdata.get('authors', _('Unknown')), - mdata.get('title', _('Unknown'))) + sanitize(mdata.get('authors', _('Unknown'))), + sanitize(mdata.get('title', _('Unknown')))) - newpath = self._sanitize_path(newpath) if not os.path.exists(newpath): os.makedirs(newpath) - filepath = self._sanitize_path(os.path.join(newpath, names.next())) + filepath = os.path.join(newpath, sanitize(names.next())) paths.append(filepath) if hasattr(infile, 'read'):