diff --git a/comictaggerlib/fileselectionlist.py b/comictaggerlib/fileselectionlist.py index d39c441..6bb3b7f 100644 --- a/comictaggerlib/fileselectionlist.py +++ b/comictaggerlib/fileselectionlist.py @@ -159,20 +159,8 @@ class FileSelectionList(QWidget): self.listCleared.emit() def addPathList( self, pathlist ): - filelist = [] - for p in pathlist: - # if path is a folder, walk it recursivly, and all files underneath - if type(p) == str: - #make sure string is unicode - filename_encoding = sys.getfilesystemencoding() - p = p.decode(filename_encoding, 'replace') - - if os.path.isdir( unicode(p)): - for root,dirs,files in os.walk( unicode(p) ): - for f in files: - filelist.append(os.path.join(root,unicode(f))) - else: - filelist.append(unicode(p)) + + filelist = utils.get_recursive_filelist( pathlist ) # we now have a list of files to add diff --git a/comictaggerlib/main.py b/comictaggerlib/main.py index 8b9e061..72b1920 100755 --- a/comictaggerlib/main.py +++ b/comictaggerlib/main.py @@ -23,8 +23,6 @@ import signal import os import traceback import platform -import locale -import codecs import utils import cli @@ -40,13 +38,7 @@ except ImportError as e: #--------------------------------------- def ctmain(): - # try to make stdout encodings happy for unicode - if platform.system() == "Darwin": - preferred_encoding = "utf-8" - else: - preferred_encoding = locale.getpreferredencoding() - sys.stdout = codecs.getwriter(preferred_encoding)(sys.stdout) - sys.stderr = codecs.getwriter(preferred_encoding)(sys.stderr) + utils.fix_output_encoding() opts = Options() opts.parseCmdLineArgs() diff --git a/comictaggerlib/utils.py b/comictaggerlib/utils.py index 40da7e8..2eaabf1 100644 --- a/comictaggerlib/utils.py +++ b/comictaggerlib/utils.py @@ -19,10 +19,45 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ - +import sys import os import re +import platform +import locale +import codecs +def fix_output_encoding( ): + + # try to make stdout/stderr encodings happy for unicode printing + if platform.system() == "Darwin": + preferred_encoding = "utf-8" + else: + preferred_encoding = locale.getpreferredencoding() + sys.stdout = codecs.getwriter(preferred_encoding)(sys.stdout) + sys.stderr = codecs.getwriter(preferred_encoding)(sys.stderr) + +def get_recursive_filelist( pathlist ): + """ + Get a recursive list of of all files under all path items in the list + """ + + filelist = [] + for p in pathlist: + # if path is a folder, walk it recursivly, and all files underneath + if type(p) == str: + #make sure string is unicode + filename_encoding = sys.getfilesystemencoding() + p = p.decode(filename_encoding, 'replace') + + if os.path.isdir( unicode(p)): + for root,dirs,files in os.walk( unicode(p) ): + for f in files: + filelist.append(os.path.join(root,unicode(f))) + else: + filelist.append(unicode(p)) + + return filelist + def listToString( l ): string = "" if l is not None: