diff --git a/modules/download.py b/modules/download.py deleted file mode 100644 index a7dbeb3..0000000 --- a/modules/download.py +++ /dev/null @@ -1,66 +0,0 @@ -# Idea from rich examples -# https://github.com/Textualize/rich/blob/master/examples/downloader.py - -import os.path -from concurrent.futures import ThreadPoolExecutor -import signal -from functools import partial -from threading import Event -from urllib.request import urlopen -from urllib.parse import unquote - -from rich.progress import ( - BarColumn, - DownloadColumn, - Progress, - TaskID, - TextColumn, - TimeRemainingColumn, - TransferSpeedColumn, -) - -progress = Progress( - TextColumn("[bold blue]{task.fields[filename]}", justify="right"), - BarColumn(bar_width=None), - "[progress.percentage]{task.percentage:>3.1f}%", - "•", - DownloadColumn(), - "•", - TransferSpeedColumn(), - "•", - TimeRemainingColumn(), -) - - -done_event = Event() - - -def handle_sigint(signum, frame): - done_event.set() - - -signal.signal(signal.SIGINT, handle_sigint) - - -def copy_url(task_id: TaskID, url: str, path: str) -> None: - progress.console.log(f"Requesting {url}") - response = urlopen(url) - progress.update(task_id, total=int(response.info()["Content-length"])) - with open(path, "wb") as dest_file: - progress.start_task(task_id) - for data in iter(partial(response.read, 32768), b""): - dest_file.write(data) - progress.update(task_id, advance=len(data)) - if done_event.is_set(): - return - progress.console.log(f"Downloaded {path}") - - -def dl(urls, dest_dir: str): - with progress: - with ThreadPoolExecutor(max_workers=len(urls)) as pool: - for url in urls: - filename = unquote(url.split("/")[-1]) - dest_path = os.path.join(dest_dir, filename) - task_id = progress.add_task("download", filename=filename, start=False) - pool.submit(copy_url, task_id, url, dest_path) diff --git a/modules/manager.py b/modules/manager.py index a7a3b05..61d5623 100644 --- a/modules/manager.py +++ b/modules/manager.py @@ -7,7 +7,7 @@ import os import zipfile from modules.virustotal import scan_to_cli from modules.http_status import handle -from modules.download import dl +from ezzdl import dl def install(package): diff --git a/requirements.txt b/requirements.txt index 86b8c64..094c81d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,4 +6,5 @@ tqdm algoliasearch PyQt5 easygui -winshell \ No newline at end of file +winshell +ezzdl \ No newline at end of file