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)