-# 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
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"
# 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()], \
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)
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)
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)
#