From e769c5e595ea380bdbaa9efa8ee37a357c2d6ce1 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 11 Feb 2012 21:52:31 +0100 Subject: [PATCH] Unicode os.walk as backup --- couchpotato/core/plugins/scanner/main.py | 26 +++++++++++++++++++------- couchpotato/core/settings/__init__.py | 4 ++-- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/couchpotato/core/plugins/scanner/main.py b/couchpotato/core/plugins/scanner/main.py index 40d24b7..f40a8d1 100644 --- a/couchpotato/core/plugins/scanner/main.py +++ b/couchpotato/core/plugins/scanner/main.py @@ -5,6 +5,7 @@ from couchpotato.core.helpers.variable import getExt, getImdb, tryInt from couchpotato.core.logger import CPLog from couchpotato.core.plugins.base import Plugin from couchpotato.core.settings.model import File +from couchpotato.environment import Env from enzyme.exceptions import NoParserError, ParseError import enzyme import logging @@ -143,10 +144,21 @@ class Scanner(Plugin): # Scan all files of the folder if no files are set if len(files) == 0: - files = [] - for root, dirs, walk_files in os.walk(toUnicode(folder)): - for filename in walk_files: - files.append(os.path.join(root, filename)) + try: + files = [] + for root, dirs, walk_files in os.walk(toUnicode(folder)): + for filename in walk_files: + files.append(os.path.join(root, filename)) + except: + try: + files = [] + folder = toUnicode(folder).encode(Env.get('encoding')) + log.info('Trying to convert unicode to str path: %s, %s' % (folder, type(folder))) + for root, dirs, walk_files in os.walk(folder): + for filename in walk_files: + files.append(os.path.join(root, filename)) + except: + log.error('Failed getting files from %s: %s' % (folder, traceback.format_exc())) for file_path in files: @@ -287,9 +299,9 @@ class Scanner(Plugin): break # Leftover "sorted" files - for type in group['files']: - if not type is 'leftover': - group['files']['leftover'] -= set(group['files'][type]) + for file_type in group['files']: + if not file_type is 'leftover': + group['files']['leftover'] -= set(group['files'][file_type]) # Delete the unsorted list del group['unsorted_files'] diff --git a/couchpotato/core/settings/__init__.py b/couchpotato/core/settings/__init__.py index 5ef0452..6bed3dd 100644 --- a/couchpotato/core/settings/__init__.py +++ b/couchpotato/core/settings/__init__.py @@ -91,7 +91,7 @@ class Settings(object): return tryInt(self.p.get(section, option)) def getUnicode(self, section, option): - value = self.p.get(section, option) + value = self.p.get(section, option).decode('unicode_escape') return toUnicode(value).strip() def getValues(self): @@ -153,7 +153,7 @@ class Settings(object): # See if a value handler is attached, use that as value new_value = fireEvent('setting.save.%s.%s' % (section, option), value, single = True) - self.set(section, option, new_value if new_value else value) + self.set(section, option, (new_value if new_value else value).encode('unicode_escape')) self.save() return jsonified({