From ae00e83c9d13ed4fe3d2919bc1dc933e39466769 Mon Sep 17 00:00:00 2001 From: Ruud Date: Mon, 6 Oct 2014 08:52:48 +0200 Subject: [PATCH] Path helpers --- couchpotato/core/helpers/path.py | 51 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 couchpotato/core/helpers/path.py diff --git a/couchpotato/core/helpers/path.py b/couchpotato/core/helpers/path.py new file mode 100644 index 0000000..9ae1cf9 --- /dev/null +++ b/couchpotato/core/helpers/path.py @@ -0,0 +1,51 @@ +import os +from chardet import detect +from couchpotato import Env + +fs_enc = Env.get('fs_encoding') + + +def list_dir(path, full_path = True): + """ + List directory don't error when it doesn't exist + """ + + path = unicode_path(path) + + if os.path.isdir(path): + for f in os.listdir(path): + if full_path: + yield join(path, f) + else: + yield f + + +def join(*args): + """ + Join path, encode properly before joining + """ + + return os.path.join(*[safe(x) for x in args]) + + +def unicode_path(path): + """ + Convert back to unicode + :param path: path string + """ + + if isinstance(path, str): + detected = detect(path) + print detected + path = path.decode(detected.get('encoding')) + path = path.decode('unicode_escape') + + return path + + +def safe(path): + + if isinstance(path, unicode): + return path.encode('unicode_escape') + + return path