next-share: beautfication, support for speed limit
authorRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Mon, 20 Sep 2010 09:13:41 +0000 (11:13 +0200)
committerRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Mon, 20 Sep 2010 09:16:43 +0000 (11:16 +0200)
update BaseLib/Tools/cmdlinedl.py with upload and download speed
limit support arguments

instrumentation/next-share/BaseLib/Tools/cmdlinedl.py

index f78eb27..a6b8cc6 100644 (file)
@@ -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 <port>"
     print "\t-p <port>\t\tuse <port> to listen for connections"
     print "\t\t\t\t(default is random value)"
-    print "\t--output <output-dir>"
+    print "\t--output-dir <output-dir>"
     print "\t-o <output-dir>\t\tuse <output-dir> for storing downloaded data"
     print "\t\t\t\t(default is current directory)"
+    print "\t--download-limit <download-speed-limit>"
+    print "\t-d <download-speed-limit>\tdownload speed limitation in KB/s"
+    print "\t\t\t\t(default is no download limit)"
+    print "\t--upload-limit <upload-speed-limit>"
+    print "\t-u <upload-speed-limit>\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)
     #