From 33acac66095f15711d7e3c1e12f42a0136325adb Mon Sep 17 00:00:00 2001 From: Peter Taylor Date: Mon, 9 May 2022 17:05:03 +0100 Subject: [PATCH] Added Progress Output (#52) * Added Progress Option * VSCode adding unwanted imports * linting * Forgot to increment the Download total * fixed issues with counter * Added Mutex for safety * reorder imports --- itchiodl/library.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/itchiodl/library.py b/itchiodl/library.py index a401025..6503c37 100644 --- a/itchiodl/library.py +++ b/itchiodl/library.py @@ -1,5 +1,7 @@ import json from concurrent.futures import ThreadPoolExecutor +import functools +import threading import requests from itchiodl.game import Game @@ -38,9 +40,17 @@ class Library: def download_library(self, platform=None): """Download all games in the library""" + with ThreadPoolExecutor(max_workers=self.jobs) as executor: + i = [0] + l = len(self.games) + lock = threading.RLock() - def dl(g): - return g.download(self.login, platform) + def dl(i, g): + x = g.download(self.login, platform) + with lock: + i[0] += 1 + print(f"Downloaded {g.name} ({i[0]} of {l})") + return x - executor.map(dl, self.games) + executor.map(functools.partial(dl, i), self.games)