diff --git a/couchpotato/core/downloaders/base.py b/couchpotato/core/downloaders/base.py index 39ee6129..5c4e1020 100644 --- a/couchpotato/core/downloaders/base.py +++ b/couchpotato/core/downloaders/base.py @@ -40,3 +40,9 @@ class Downloader(Plugin): log.debug("Downloader doesn't support this type") return is_correct + + def isDisabled(self, manual): + return not self.isEnabled(manual) + + def isEnabled(self, manual): + return super(Downloader, self).isEnabled(), ((self.conf('manual', default = False) and manual) or manual is True) diff --git a/couchpotato/core/downloaders/blackhole/__init__.py b/couchpotato/core/downloaders/blackhole/__init__.py index 3231c48d..b9796051 100644 --- a/couchpotato/core/downloaders/blackhole/__init__.py +++ b/couchpotato/core/downloaders/blackhole/__init__.py @@ -32,6 +32,13 @@ config = [{ 'type': 'dropdown', 'values': [('nzbs & torrents', 'both'), ('nzb', 'nzb'), ('torrent', 'torrent')], }, + { + 'name': 'manual', + 'default': 0, + 'type': 'bool', + 'advanced': True, + 'description': 'Disable this downloader for automated searches, but use it when I manually send a release.', + }, ], } ], diff --git a/couchpotato/core/downloaders/blackhole/main.py b/couchpotato/core/downloaders/blackhole/main.py index 9408de18..a24e71b1 100644 --- a/couchpotato/core/downloaders/blackhole/main.py +++ b/couchpotato/core/downloaders/blackhole/main.py @@ -10,8 +10,8 @@ class Blackhole(Downloader): type = ['nzb', 'torrent'] - def download(self, data = {}, movie = {}): - if self.isDisabled() or (not self.isCorrectType(data.get('type')) or (not self.conf('use_for') in ['both', data.get('type')])): + def download(self, data = {}, movie = {}, manual = False): + if self.isDisabled(manual) or (not self.isCorrectType(data.get('type')) or (not self.conf('use_for') in ['both', data.get('type')])): return directory = self.conf('directory') diff --git a/couchpotato/core/downloaders/nzbget/__init__.py b/couchpotato/core/downloaders/nzbget/__init__.py index 00fa3f0f..5015437e 100644 --- a/couchpotato/core/downloaders/nzbget/__init__.py +++ b/couchpotato/core/downloaders/nzbget/__init__.py @@ -33,6 +33,13 @@ config = [{ 'default': 'Movies', 'description': 'The category CP places the nzb in. Like movies or couchpotato', }, + { + 'name': 'manual', + 'default': 0, + 'type': 'bool', + 'advanced': True, + 'description': 'Disable this downloader for automated searches, but use it when I manually send a release.', + }, ], } ], diff --git a/couchpotato/core/downloaders/nzbget/main.py b/couchpotato/core/downloaders/nzbget/main.py index b65e2511..15243ca4 100644 --- a/couchpotato/core/downloaders/nzbget/main.py +++ b/couchpotato/core/downloaders/nzbget/main.py @@ -14,9 +14,9 @@ class NZBGet(Downloader): url = 'http://nzbget:%(password)s@%(host)s/xmlrpc' - def download(self, data = {}, movie = {}): + def download(self, data = {}, movie = {}, manual = False): - if self.isDisabled() or not self.isCorrectType(data.get('type')): + if self.isDisabled(manual) or not self.isCorrectType(data.get('type')): return log.info('Sending "%s" to NZBGet.' % data.get('name')) diff --git a/couchpotato/core/downloaders/sabnzbd/__init__.py b/couchpotato/core/downloaders/sabnzbd/__init__.py index 20af743b..23918fe2 100644 --- a/couchpotato/core/downloaders/sabnzbd/__init__.py +++ b/couchpotato/core/downloaders/sabnzbd/__init__.py @@ -39,6 +39,13 @@ config = [{ 'type': 'directory', 'description': 'Your Post-Processing Script directory, set in Sabnzbd > Config > Directories.', }, + { + 'name': 'manual', + 'default': 0, + 'type': 'bool', + 'advanced': True, + 'description': 'Disable this downloader for automated searches, but use it when I manually send a release.', + }, ], } ], diff --git a/couchpotato/core/downloaders/sabnzbd/main.py b/couchpotato/core/downloaders/sabnzbd/main.py index 0319f68d..837ab063 100644 --- a/couchpotato/core/downloaders/sabnzbd/main.py +++ b/couchpotato/core/downloaders/sabnzbd/main.py @@ -15,9 +15,9 @@ class Sabnzbd(Downloader): type = ['nzb'] - def download(self, data = {}, movie = {}): + def download(self, data = {}, movie = {}, manual = False): - if self.isDisabled() or not self.isCorrectType(data.get('type')): + if self.isDisabled(manual) or not self.isCorrectType(data.get('type')): return log.info("Sending '%s' to SABnzbd." % data.get('name')) diff --git a/couchpotato/core/downloaders/transmission/__init__.py b/couchpotato/core/downloaders/transmission/__init__.py index 34bd3c8f..f72dea6b 100644 --- a/couchpotato/core/downloaders/transmission/__init__.py +++ b/couchpotato/core/downloaders/transmission/__init__.py @@ -48,6 +48,13 @@ config = [{ 'advanced': True, 'description': 'Stop transfer when reaching ratio', }, + { + 'name': 'manual', + 'default': 0, + 'type': 'bool', + 'advanced': True, + 'description': 'Disable this downloader for automated searches, but use it when I manually send a release.', + }, ], } ], diff --git a/couchpotato/core/downloaders/transmission/main.py b/couchpotato/core/downloaders/transmission/main.py index 7677ad02..4ed3e583 100644 --- a/couchpotato/core/downloaders/transmission/main.py +++ b/couchpotato/core/downloaders/transmission/main.py @@ -11,9 +11,9 @@ class Transmission(Downloader): type = ['torrent'] - def download(self, data = {}, movie = {}): + def download(self, data = {}, movie = {}, manual = False): - if self.isDisabled() or not self.isCorrectType(data.get('type')): + if self.isDisabled(manual) or not self.isCorrectType(data.get('type')): return log.info('Sending "%s" to Transmission.' % data.get('name')) diff --git a/couchpotato/core/plugins/release/main.py b/couchpotato/core/plugins/release/main.py index f83b322f..3a0f2047 100644 --- a/couchpotato/core/plugins/release/main.py +++ b/couchpotato/core/plugins/release/main.py @@ -147,7 +147,7 @@ class Release(Plugin): 'releases': {'status': {}, 'quality': {}}, 'library': {'titles': {}, 'files':{}}, 'files': {} - })) + }), manual = True) return jsonified({ 'success': True diff --git a/couchpotato/core/plugins/searcher/main.py b/couchpotato/core/plugins/searcher/main.py index 0159744a..72350d81 100644 --- a/couchpotato/core/plugins/searcher/main.py +++ b/couchpotato/core/plugins/searcher/main.py @@ -135,10 +135,10 @@ class Searcher(Plugin): return False - def download(self, data, movie): + def download(self, data, movie, manual = False): snatched_status = fireEvent('status.get', 'snatched', single = True) - successful = fireEvent('download', data = data, movie = movie, single = True) + successful = fireEvent('download', data = data, movie = movie, manual = manual, single = True) if successful: