diff --git a/couchpotato/core/helpers/variable.py b/couchpotato/core/helpers/variable.py index a586ceff..64cdce29 100644 --- a/couchpotato/core/helpers/variable.py +++ b/couchpotato/core/helpers/variable.py @@ -295,3 +295,14 @@ def dictIsSubset(a, b): def isSubFolder(sub_folder, base_folder): # Returns True if sub_folder is the same as or inside base_folder return base_folder and sub_folder and ss(os.path.normpath(base_folder).rstrip(os.path.sep) + os.path.sep) in ss(os.path.normpath(sub_folder).rstrip(os.path.sep) + os.path.sep) + +# From SABNZBD +re_password = [re.compile(r'([^/\\]+)[/\\](.+)'), re.compile(r'(.+){{([^{}]+)}}$'), re.compile(r'(.+)\s+password\s*=\s*(.+)$', re.I)] +def scanForPassword(name): + m = None + for reg in re_password: + m = reg.search(name) + if m: break + + if m: + return m.group(1).strip('. '), m.group(2).strip() diff --git a/couchpotato/core/plugins/base.py b/couchpotato/core/plugins/base.py index 378ed50c..891e6b41 100644 --- a/couchpotato/core/plugins/base.py +++ b/couchpotato/core/plugins/base.py @@ -1,7 +1,7 @@ from couchpotato.core.event import fireEvent, addEvent from couchpotato.core.helpers.encoding import ss, toSafeString, \ toUnicode, sp -from couchpotato.core.helpers.variable import getExt, md5, isLocalIP +from couchpotato.core.helpers.variable import getExt, md5, isLocalIP, scanForPassword from couchpotato.core.logger import CPLog from couchpotato.environment import Env import requests @@ -283,8 +283,17 @@ class Plugin(object): return value def createNzbName(self, data, media): + release_name = data.get('name') tag = self.cpTag(media) - return '%s%s' % (toSafeString(toUnicode(data.get('name'))[:127 - len(tag)]), tag) + + # Check if password is filename + name_password = scanForPassword(data.get('name')) + if name_password: + release_name, password = name_password + tag += '{{%s}}' % password + + max_length = 127 - len(tag) # Some filesystems don't support 128+ long filenames + return '%s%s' % (toSafeString(toUnicode(release_name)[:max_length]), tag) def createFileName(self, data, filedata, media): name = sp(os.path.join(self.createNzbName(data, media)))