From 2783c6be26708a24fa35ddd8af7bdbe73a04d53c Mon Sep 17 00:00:00 2001 From: Remy Date: Sun, 21 Aug 2011 14:46:03 -0700 Subject: [PATCH] Fixed unicode error when no track metadata available - also fixed track renaming if no metadata available --- headphones/helpers.py | 11 +++++++++++ headphones/postprocessor.py | 30 +++++++++++++++++------------- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/headphones/helpers.py b/headphones/helpers.py index 9428f319..73054bdb 100644 --- a/headphones/helpers.py +++ b/headphones/helpers.py @@ -121,6 +121,17 @@ def cleanName(string): return out_string +def cleanTitle(title): + + title = re.sub('[\.\-\/\_]', ' ', title).lower() + + # Strip out extra whitespace + title = ' '.join(title.split()) + + title = title.title() + + return title + def extract_data(s): from headphones import logger diff --git a/headphones/postprocessor.py b/headphones/postprocessor.py index f600dc4a..b1f57b38 100644 --- a/headphones/postprocessor.py +++ b/headphones/postprocessor.py @@ -432,21 +432,27 @@ def renameFiles(albumpath, downloaded_track_list, release): tracknumber = '%02d' % f.track if not f.title: - basename = os.path.basename(downloaded_track) + + basename = unicode(os.path.basename(downloaded_track), headphones.SYS_ENCODING, errors='replace') title = os.path.splitext(basename)[0] + ext = os.path.splitext(basename)[1] + + new_file_name = helpers.cleanTitle(title) + ext + else: title = f.title - values = { 'tracknumber': tracknumber, - 'title': title, - 'artist': release['ArtistName'], - 'album': release['AlbumTitle'], - 'year': year - } - - ext = os.path.splitext(downloaded_track)[1] + values = { 'tracknumber': tracknumber, + 'title': title, + 'artist': release['ArtistName'], + 'album': release['AlbumTitle'], + 'year': year + } + + ext = os.path.splitext(downloaded_track)[1] + + new_file_name = helpers.replace_all(headphones.FILE_FORMAT, values).replace('/','_') + ext - new_file_name = helpers.replace_all(headphones.FILE_FORMAT, values).replace('/','_') + ext new_file_name = new_file_name.replace('?','_').replace(':', '_').encode(headphones.SYS_ENCODING) @@ -550,6 +556,4 @@ def forcePostProcess(): logger.error('Can not get release information for this album') continue if rgid: - verify(rgid, albumpath) - - \ No newline at end of file + verify(rgid, albumpath) \ No newline at end of file