Code Examples¶
Here are code examples for the pySmartDL module:
Example 1: Downloading a file and running it¶
from pySmartDL import SmartDL
url = "https://github.com/iTaybb/pySmartDL/raw/master/test/7za920.zip"
dest = "C:\\Downloads\\" # or '~/Downloads/' on linux
obj = SmartDL(url, dest)
obj.start()
# [*] 0.23 / 0.37 MB @ 88.00KB/s [##########--------] [60%, 2s left]
path = obj.get_dest()
Example 2: Downloading a file to a temporarily location, not showing progress bar¶
from pySmartDL import SmartDL
url = "https://github.com/iTaybb/pySmartDL/raw/master/test/7za920.zip"
obj = SmartDL(url, progress_bar=False) # Because we didn't pass a destination path to the constructor, temporary path was chosen.
obj.start()
# Do something with obj.get_dest()
Example 3: Mirrors are also supported¶
from pySmartDL import SmartDL
urls = ["http://totally_fake_website/7za.zip" ,"https://github.com/iTaybb/pySmartDL/raw/master/test/7za920.zip"]
obj = SmartDL(urls, progress_bar=False)
obj.start()
print(obj.isSuccessful()) # Returns True, even though the first link is not working.
# Do something with obj.get_dest()
Example 4: Passing custom options to urllib.request.Request()¶
from pySmartDL import SmartDL
request_args = {"headers": {"User-Agent": "pySmartDL/1.3.2"}}
obj = SmartDL("http://httpbin.org/headers", request_args=request_args, progress_bar=False)
obj.start()
data = obj.get_json()
print(data)
Example 5: Fetch data to memory instead of reading it from a file¶
from pySmartDL import SmartDL
url = "http://wiki.python.org/moin/Python2orPython3" # it's also possible to pass unsafe and unicode characters in url
obj = SmartDL(url, progress_bar=False)
obj.start()
data = obj.get_data() # HTML tags!
# Do something with data
Example 6: Use the nonblocking flag and get information during the download process¶
import time
from pySmartDL import SmartDL
url_100mb_file = ['http://www.ovh.net/files/100Mio.dat']
obj = SmartDL(url_100mb_file, progress_bar=False)
obj.start(blocking=False)
while not obj.isFinished():
print("Speed: %s" % obj.get_speed(human=True))
print("Already downloaded: %s" % obj.get_dl_size(human=True))
print("Eta: %s" % obj.get_eta(human=True))
print("Progress: %d%%" % (obj.get_progress()*100))
print("Progress bar: %s" % obj.get_progress_bar())
print("Status: %s" % obj.get_status())
print("\n"*2+"="*50+"\n"*2)
time.sleep(0.2)
if obj.isSuccessful():
print("downloaded file to '%s'" % obj.get_dest())
print("download task took %ss" % obj.get_dl_time(human=True))
print("File hashes:")
print(" * MD5: %s" % obj.get_data_hash('md5'))
print(" * SHA1: %s" % obj.get_data_hash('sha1'))
print(" * SHA256: %s" % obj.get_data_hash('sha256'))
else:
print("There were some errors:")
for e in obj.get_errors():
print(str(e))
# Do something with obj.get_dest()
Example 7: Hash checking¶
Example with passing blocking=True to obj.start():
from pySmartDL import SmartDL, HashFailedException
urls = ["https://github.com/iTaybb/pySmartDL/raw/master/test/7za920.zip",
"http://www.bevc.net/dl/7za920.zip",
"http://ftp.jaist.ac.jp/pub/sourceforge/s/project/se/sevenzip/7-Zip/9.20/7za920.zip",
"http://www.mirrorservice.org/sites/downloads.sourceforge.net/s/se/sevenzip/7-Zip/9.20/7za920.zip"]
obj = SmartDL(urls, progress_bar=False) # use connect_default_logger=True if you'd like to get debugging info to the console
obj.add_hash_verification('sha256' ,'2a3afe19c180f8373fa02ff00254d5394fec0349f5804e0ad2f6067854ff28ac')
try:
obj.start()
# Do something with obj.get_dest()
except HashFailedException:
print("Hash check failed!")
Example with passing blocking=False to obj.start():
from pySmartDL import SmartDL
urls = ["https://github.com/iTaybb/pySmartDL/raw/master/test/7za920.zip",
"http://www.bevc.net/dl/7za920.zip",
"http://ftp.jaist.ac.jp/pub/sourceforge/s/project/se/sevenzip/7-Zip/9.20/7za920.zip",
"http://www.mirrorservice.org/sites/downloads.sourceforge.net/s/se/sevenzip/7-Zip/9.20/7za920.zip"]
obj = SmartDL(urls, progress_bar=False) # use connect_default_logger=True if you'd like to get debugging info to the console
obj.add_hash_verification('sha256' ,'2a3afe19c180f8373fa02ff00254d5394fec0349f5804e0ad2f6067854ff28ac')
obj.start(blocking=False)
while not obj.isFinished():
do_your_stuff()
if obj.isSuccessful():
print("Success!")
# Do something with obj.get_dest()
else:
print("Download failed with the following exceptions:")
for e in obj.get_errors():
print(unicode(e))
Example 8: No ssl verification¶
from pySmartDL import SmartDL
obj = SmartDL("https://github.com/iTaybb/pySmartDL/raw/master/test/7za920.zip", verify=False)
obj.start()
# Do something with obj.get_dest()