Ticket #382: deluge_config.py
+| + File deluge_config.py, 3.8 kB + (added by garett@zy.ca, 2 days ago) + |
|---|
+
+
+
+
+
+| Line | |
|---|---|
| 1 | +#!/usr/bin/python | +
| 2 | +# | +
| 3 | +# This software is in the public domain, furnished "as is", without technical | +
| 4 | +# support, and with no warranty, express or implied, as to its usefulness for | +
| 5 | +# any purpose. | +
| 6 | +# | +
| 7 | +# deluge_config.py | +
| 8 | +# This code (at least in theory) allows one to alter configuration settings | +
| 9 | +# on a deluge backend. At the moment, though, it only alters the parameters | +
| 10 | +# that I've found useful to change. | +
| 11 | +# | +
| 12 | +# Authour: Garett Harnish | +
| 13 | ++ |
| 14 | +from sys import argv, exit, stderr | +
| 15 | +from optparse import OptionParser | +
| 16 | ++ |
| 17 | +import logging | +
| 18 | ++ |
| 19 | +def isFloatDigit (string): | +
| 20 | +if string.isdigit(): | +
| 21 | +return True | +
| 22 | +else: | +
| 23 | +try: | +
| 24 | +tmp = float(string) | +
| 25 | +return True | +
| 26 | +except: return False; | +
| 27 | ++ |
| 28 | +# set up command-line options | +
| 29 | +parser = OptionParser() | +
| 30 | +parser.add_option("--port", help="port for deluge backend host (default: 58846)", default="58846", dest="port") | +
| 31 | +parser.add_option("--host", help="hostname of deluge backend to connect to (default: localhost)", default="localhost", dest="host") | +
| 32 | +parser.add_option("--max_active_limit", help="sets the absolute maximum number of active torrents on the deluge backend", dest="max_active_limit") | +
| 33 | +parser.add_option("--max_active_downloading", help="sets the maximum number of active downloading torrents on the deluge backend", dest="max_active_downloading") | +
| 34 | +parser.add_option("--max_active_seeding", help="sets the maximum number of active seeding torrents on the deluge backend", dest="max_active_seeding") | +
| 35 | +parser.add_option("--max_download_speed", help="sets the maximum global download speed on the deluge backend", dest="max_download_speed") | +
| 36 | +parser.add_option("--max_upload_speed", help="sets the maximum global upload speed on the deluge backend", dest="max_upload_speed") | +
| 37 | +parser.add_option("--debug", help="outputs debug information to the console", default=False, action="store_true", dest="debug") | +
| 38 | ++ |
| 39 | +# grab command-line options | +
| 40 | +(options, args) = parser.parse_args() | +
| 41 | ++ |
| 42 | +if not options.debug: | +
| 43 | +logging.disable(logging.ERROR) | +
| 44 | ++ |
| 45 | +settings = {} | +
| 46 | ++ |
| 47 | +# set values if set and valid | +
| 48 | +if options.max_active_limit: | +
| 49 | +if options.max_active_limit.isdigit() and int(options.max_active_limit) >= 0: | +
| 50 | +settings['max_active_limit'] = int(options.max_active_limit) | +
| 51 | +else: | +
| 52 | +stderr.write ("ERROR: Invalid max_active_limit parameter!\n") | +
| 53 | +exit (-1) | +
| 54 | ++ |
| 55 | +if options.max_active_downloading: | +
| 56 | +if options.max_active_downloading.isdigit() and int(options.max_active_downloading) >= 0: | +
| 57 | +settings['max_active_downloading'] = int(options.max_active_downloading) | +
| 58 | +else: | +
| 59 | +stderr.write ("ERROR: Invalid max_active_downloading parameter!\n") | +
| 60 | +exit (-1) | +
| 61 | ++ |
| 62 | +if options.max_active_seeding: | +
| 63 | +if options.max_active_seeding.isdigit() and int(options.max_active_seeding) >= 0: | +
| 64 | +settings['max_active_seeding'] = int(options.max_active_seeding) | +
| 65 | +else: | +
| 66 | +stderr.write ("ERROR: Invalid max_active_seeding parameter!\n") | +
| 67 | +exit (-1) | +
| 68 | ++ |
| 69 | +if options.max_download_speed: | +
| 70 | +if isFloatDigit(options.max_download_speed) and (float(options.max_download_speed) >= 0.0 or float(options.max_download_speed) == -1.0): | +
| 71 | +settings['max_download_speed'] = float(options.max_download_speed) | +
| 72 | +else: | +
| 73 | +stderr.write ("ERROR: Invalid max_download_speed parameter!\n") | +
| 74 | +exit (-1) | +
| 75 | ++ |
| 76 | +if options.max_upload_speed: | +
| 77 | +if isFloatDigit(options.max_upload_speed) and (float(options.max_upload_speed) >= 0.0 or float(options.max_upload_speed) == -1.0): | +
| 78 | +settings['max_upload_speed'] = float(options.max_upload_speed) | +
| 79 | +else: | +
| 80 | +stderr.write ("ERROR: Invalid max_upload_speed parameter!\n") | +
| 81 | +exit (-1) | +
| 82 | ++ |
| 83 | +# If there is something to do ... | +
| 84 | +if settings: | +
| 85 | +# create connection to daemon | +
| 86 | +from deluge.ui.client import sclient as client | +
| 87 | +client.set_core_uri("http://" + options.host + ":" + options.port) | +
| 88 | ++ |
| 89 | +# commit configurations changes | +
| 90 | +client.set_config(settings) | +
