From: Razvan Deaconescu Date: Mon, 20 Sep 2010 09:13:41 +0000 (+0200) Subject: next-share: beautfication, support for speed limit X-Git-Url: http://p2p-next.cs.pub.ro/gitweb/?a=commitdiff_plain;h=dc18192058095fb2736ad82f7f3b68d4819ab81b;p=cs-p2p-next.git next-share: beautfication, support for speed limit update BaseLib/Tools/cmdlinedl.py with upload and download speed limit support arguments --- diff --git a/instrumentation/next-share/BaseLib/Tools/cmdlinedl.py b/instrumentation/next-share/BaseLib/Tools/cmdlinedl.py index f78eb27..a6b8cc6 100644 --- a/instrumentation/next-share/BaseLib/Tools/cmdlinedl.py +++ b/instrumentation/next-share/BaseLib/Tools/cmdlinedl.py @@ -1,6 +1,11 @@ -# Written by Arno Bakker, George Milescu +# Written by Arno Bakker, George Milescu # see LICENSE.txt for license information # +# Razvan Deaconescu, 2010 +# * fix help message for output dir option +# (--output -> --output-dir) +# * add support for upload/download speed limitation +# # Razvan Deaconescu, 2008: # * corrected problem when running in background # * added usage and print_version functions @@ -25,9 +30,15 @@ def usage(): print "\t--port " print "\t-p \t\tuse to listen for connections" print "\t\t\t\t(default is random value)" - print "\t--output " + print "\t--output-dir " print "\t-o \t\tuse for storing downloaded data" print "\t\t\t\t(default is current directory)" + print "\t--download-limit " + print "\t-d \tdownload speed limitation in KB/s" + print "\t\t\t\t(default is no download limit)" + print "\t--upload-limit " + print "\t-u \tupload speed limitation in KB/s" + print "\t\t\t\t(default is no upload limit)" print "\t--version" print "\t-v\t\t\tprint version and exit" print "\t--help" @@ -42,7 +53,6 @@ def print_version(): # Print torrent statistics def state_callback(ds): d = ds.get_download() -# print >>sys.stderr,`d.get_def().get_name()`,dlstatus_strings[ds.get_status()],ds.get_progress(),"%",ds.get_error(),"up",ds.get_current_speed(UPLOAD),"down",ds.get_current_speed(DOWNLOAD) print >>sys.stderr, '%s %s %5.2f%% %s up %8.2fKB/s down %8.2fKB/s' % \ (d.get_def().get_name(), \ dlstatus_strings[ds.get_status()], \ @@ -57,13 +67,15 @@ def main(): try: # opts = a list of (option, value) pairs # args = the list of program arguments left after the option list was stripped - opts, args = getopt.getopt(sys.argv[1:], "hvo:p:", ["help", "version", "output-dir", "port"]) + opts, args = getopt.getopt(sys.argv[1:], "hvu:d:o:p:", ["help", "version", "upload-limit=", "download-limit=", "output-dir=", "port="]) except getopt.GetoptError, err: print str(err) usage() sys.exit(2) # init to default values + upload_limit = -1 + download_limit = -1 output_dir = os.getcwd() port = random.randint(10000, 65535) @@ -75,6 +87,10 @@ def main(): output_dir = a elif o in ("-p", "--port"): port = int(a) + elif o in ("-d", "--download-limit"): + download_limit = int(a) + elif o in ("-u", "--upload-limit"): + upload_limit = int(a) elif o in ("-v", "--version"): print_version() sys.exit(0) @@ -102,24 +118,25 @@ def main(): sscfg.set_overlay(False) sscfg.set_dialback(True) sscfg.set_internal_tracker(False) - + s = Session(sscfg) # setup and start download dscfg = DownloadStartupConfig() dscfg.set_dest_dir(output_dir); - #dscfg.set_max_speed( UPLOAD, 10 ) + dscfg.set_max_speed(DOWNLOAD, download_limit) + dscfg.set_max_speed(UPLOAD, upload_limit) if torrentfile_or_url.startswith("http") or torrentfile_or_url.startswith(P2PURL_SCHEME): tdef = TorrentDef.load_from_url(torrentfile_or_url) - else: + else: tdef = TorrentDef.load(torrentfile_or_url) if tdef.get_live(): raise ValueError("cmdlinedl does not support live torrents") - + d = s.start_download(tdef, dscfg) d.set_state_callback(state_callback, getpeerlist=False) - + # # loop while waiting for CTRL-C (or any other signal/interrupt) #