6 Commits

4 changed files with 13 additions and 9 deletions

2
.gitignore vendored
View File

@@ -1,3 +1,5 @@
deluge_cli.log
# Byte-compiled / optimized / DLL files # Byte-compiled / optimized / DLL files
__pycache__/ __pycache__/
*.py[cod] *.py[cod]

View File

@@ -9,7 +9,7 @@ Usage:
deluge_cli ls [--downloading | --seeding | --paused] deluge_cli ls [--downloading | --seeding | --paused]
deluge_cli toggle TORRENT deluge_cli toggle TORRENT
deluge_cli progress deluge_cli progress
deluge_cli rm NAME [--debug | --warning | --error] deluge_cli rm NAME [--destroy] [--debug | --warning | --error]
deluge_cli (-h | --help) deluge_cli (-h | --help)
deluge_cli --version deluge_cli --version
@@ -42,7 +42,7 @@ from pprint import pprint
from deluge_client import DelugeRPCClient from deluge_client import DelugeRPCClient
from sshtunnel import SSHTunnelForwarder from sshtunnel import SSHTunnelForwarder
from docopt import docopt from docopt import docopt
from .utils import ColorizeFilter, convert from utils import ColorizeFilter, convert
BASE_DIR = os.path.dirname(os.path.abspath(__file__)) BASE_DIR = os.path.dirname(os.path.abspath(__file__))
@@ -150,7 +150,7 @@ class Deluge(object):
print('Response:', response) print('Response:', response)
def remove(self, name): def remove(self, name, destroy=False):
matches = list(filter(lambda t: t.name == name, self.get_all())) matches = list(filter(lambda t: t.name == name, self.get_all()))
logger.info('Matches for {}: {}'.format(name, matches)) logger.info('Matches for {}: {}'.format(name, matches))
@@ -158,7 +158,7 @@ class Deluge(object):
raise ValueError('Multiple files found matching key. Unable to remove.') raise ValueError('Multiple files found matching key. Unable to remove.')
elif (len(matches) == 1): elif (len(matches) == 1):
torrent = matches[0] torrent = matches[0]
response = self.client.call('core.remove_torrent', torrent.key, False) response = self.client.call('core.remove_torrent', torrent.key, destroy)
logger.info('Response: {}'.format(str(response))) logger.info('Response: {}'.format(str(response)))
if (response == False): if (response == False):
@@ -298,8 +298,11 @@ def main():
deluge.togglePaused(_id) deluge.togglePaused(_id)
elif arguments['rm']: elif arguments['rm']:
logger.info('Remove by name: {}'.format(name)) destroy = arguments['--destroy']
deluge.remove(name) logger.info('Remove by name: {}.'.format(name))
if destroy:
logger.info('Destroy set, removing files')
deluge.remove(name, destroy)
if __name__ == '__main__': if __name__ == '__main__':
main() main()

View File

@@ -2,11 +2,10 @@ asn1crypto==0.24.0
bcrypt==3.1.4 bcrypt==3.1.4
cffi==1.11.5 cffi==1.11.5
colored==1.3.5 colored==1.3.5
cryptography==2.3 cryptography==2.5
deluge-client==1.6.0 deluge-client==1.6.0
docopt==0.6.2 docopt==0.6.2
idna==2.7 idna==2.7
paramiko==2.4.1
pyasn1==0.4.4 pyasn1==0.4.4
pycparser==2.18 pycparser==2.18
PyNaCl==1.2.1 PyNaCl==1.2.1

View File

@@ -35,7 +35,7 @@ class ColorizeFilter(logging.Filter):
return True return True
def convert(data): def convert(data):
if isinstance(data, bytes): return data.decode('ascii') if isinstance(data, bytes): return data.decode('utf-8')
if isinstance(data, dict): return dict(map(convert, data.items())) if isinstance(data, dict): return dict(map(convert, data.items()))
if isinstance(data, tuple): return map(convert, data) if isinstance(data, tuple): return map(convert, data)
json_data = json.dumps(data) json_data = json.dumps(data)