You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
1.8 KiB

14 years ago
import hashlib
import os.path
import platform
14 years ago
import re
14 years ago
def getDataDir():
dir = os.path.expanduser("~")
# Windows
if os.name == 'nt':
return os.path.join(dir, 'CouchPotato')
# OSX
if 'darwin' in platform.platform().lower():
return os.path.join(dir, 'Library', 'Application Support', 'CouchPotato')
# Linux
return os.path.join(dir, '.couchpotato')
def isDict(object):
14 years ago
return isinstance(object, dict)
def mergeDicts(a, b):
assert isDict(a), isDict(b)
14 years ago
dst = a.copy()
stack = [(dst, b)]
while stack:
current_dst, current_src = stack.pop()
for key in current_src:
if key not in current_dst:
current_dst[key] = current_src[key]
else:
if isDict(current_src[key]) and isDict(current_dst[key]):
14 years ago
stack.append((current_dst[key], current_src[key]))
else:
current_dst[key] = current_src[key]
return dst
def flattenList(l):
if isinstance(l, list):
return sum(map(flattenList, l))
else:
return l
14 years ago
def md5(text):
return hashlib.md5(text).hexdigest()
def getExt(filename):
return os.path.splitext(filename)[1][1:]
def cleanHost(host):
if not host.startswith(('http://', 'https://')):
host = 'http://' + host
if not host.endswith('/'):
host += '/'
return host
14 years ago
def getImdb(txt):
if os.path.isfile(txt):
output = open(txt, 'r')
txt = output.read()
output.close()
try:
14 years ago
id = re.findall('(tt\d{7})', txt)[0]
return id
except IndexError:
pass
return False
14 years ago
def tryInt(s):
try: return int(s)
except: return s
def natsortKey(s):
return map(tryInt, re.findall(r'(\d+|\D+)', s))
def natcmp(a, b):
return cmp(natsortKey(a), natsortKey(b))