Files
WPIQ/wo/core/download.py

48 lines
1.9 KiB
Python
Raw Normal View History

2018-11-13 21:55:59 +01:00
"""WordOps download core classes."""
import os
2019-09-04 20:36:15 +02:00
import urllib.error
import urllib.request
2018-11-13 21:55:59 +01:00
from wo.core.logging import Log
class WODownload():
"""Method to download using urllib"""
def __init__():
pass
def download(self, packages):
"""Download packages, packges must be list in format of
[url, path, package name]"""
for package in packages:
url = package[0]
filename = package[1]
pkg_name = package[2]
try:
directory = os.path.dirname(filename)
if not os.path.exists(directory):
os.makedirs(directory)
Log.info(self, "Downloading {0:20}".format(pkg_name), end=' ')
2019-04-25 01:25:13 +02:00
req = urllib.request.Request(
url, headers={'User-Agent': 'Mozilla/5.0'})
2018-11-13 21:55:59 +01:00
with urllib.request.urlopen(req) as response, open(filename, 'wb') as out_file:
out_file.write(response.read())
Log.info(self, "{0}".format("[" + Log.ENDC + "Done"
+ Log.OKBLUE + "]"))
except urllib.error.URLError as e:
Log.debug(self, "[{err}]".format(err=str(e.reason)))
Log.error(self, "Unable to download file, {0}"
.format(filename))
return False
2019-07-30 13:38:41 +02:00
except urllib.HTTPError.error as e:
2018-11-13 21:55:59 +01:00
Log.error(self, "Package download failed. {0}"
.format(pkg_name))
Log.debug(self, "[{err}]".format(err=str(e.reason)))
return False
2019-07-30 13:38:41 +02:00
except urllib.ContentTooShortError.error as e:
2018-11-13 21:55:59 +01:00
Log.debug(self, "{0}{1}".format(e.errno, e.strerror))
Log.error(self, "Package download failed. The amount of the"
" downloaded data is less than "
"the expected amount \{0} ".format(pkg_name))
return False