from couchpotato.core.logger import CPLog from string import ascii_letters, digits import os import re import unicodedata log = CPLog(__name__) def toSafeString(original): valid_chars = "-_.() %s%s" % (ascii_letters, digits) cleanedFilename = unicodedata.normalize('NFKD', toUnicode(original)).encode('ASCII', 'ignore') return ''.join(c for c in cleanedFilename if c in valid_chars) def simplifyString(original): string = toSafeString(' '.join(re.split('\W+', original.lower()))) split = re.split('\W+', string.lower()) return toUnicode(' '.join(split)) def toUnicode(original, *args): try: if type(original) == str: try: from couchpotato.environment import Env return original.decode(Env.get('encoding')) except UnicodeDecodeError: raise elif type(original) is unicode: return original else: return unicode(original, *args) except UnicodeDecodeError: log.error('Unable to decode value: %s... ' % repr(original)[:20]) ascii_text = str(original).encode('string_escape') return unicode(ascii_text) def isInt(value): try: int(value) return True except ValueError: return False