| 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)
|
|---|