Allow passwords inside nzb name
This commit is contained in:
1 parent
5b279a48cb
commit
7af1d00ea2
2 files changed
+22
-2
No files matched your search
@@ -295,3 +295,14 @@ def dictIsSubset(a, b):
|
|||||||
def isSubFolder(sub_folder, base_folder):
|
def isSubFolder(sub_folder, base_folder):
|
||||||
# Returns True if sub_folder is the same as or inside 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)
|
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()
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
from couchpotato.core.event import fireEvent, addEvent
|
from couchpotato.core.event import fireEvent, addEvent
|
||||||
from couchpotato.core.helpers.encoding import ss, toSafeString, \
|
from couchpotato.core.helpers.encoding import ss, toSafeString, \
|
||||||
toUnicode, sp
|
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.core.logger import CPLog
|
||||||
from couchpotato.environment import Env
|
from couchpotato.environment import Env
|
||||||
import requests
|
import requests
|
||||||
@@ -283,8 +283,17 @@ class Plugin(object):
|
|||||||
return value
|
return value
|
||||||
|
|
||||||
def createNzbName(self, data, media):
|
def createNzbName(self, data, media):
|
||||||
|
release_name = data.get('name')
|
||||||
tag = self.cpTag(media)
|
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):
|
def createFileName(self, data, filedata, media):
|
||||||
name = sp(os.path.join(self.createNzbName(data, media)))
|
name = sp(os.path.join(self.createNzbName(data, media)))
|
||||||
|
|||||||
Reference in new issue
Block a user