From 97ffaabcc12b3dea84f68f14acb6df1b1ad3e54a Mon Sep 17 00:00:00 2001 From: Om Lanke <92863779+OmLanke@users.noreply.github.com> Date: Sat, 28 Sep 2024 01:10:36 +0530 Subject: [PATCH] correct use of asyncio --- mkbsd.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/mkbsd.py b/mkbsd.py index 2b33310..5051b27 100644 --- a/mkbsd.py +++ b/mkbsd.py @@ -21,6 +21,8 @@ async def download_image(session, image_url, file_path): except Exception as e: print(f"Error downloading image: {str(e)}") + print(f"🖼️ Saved image to {file_path}") + async def main(): try: async with aiohttp.ClientSession() as session: @@ -29,7 +31,7 @@ async def main(): raise Exception(f"⛔ Failed to fetch JSON file: {response.status}") json_data = await response.json() data = json_data.get('data') - + if not data: raise Exception('⛔ JSON does not have a "data" property at its root.') @@ -39,20 +41,19 @@ async def main(): print(f"📁 Created directory: {download_dir}") file_index = 1 - for key, subproperty in data.items(): - if subproperty and subproperty.get('dhd'): - image_url = subproperty['dhd'] - print(f"🔍 Found image URL!") - parsed_url = urlparse(image_url) - ext = os.path.splitext(parsed_url.path)[-1] or '.jpg' - filename = f"{file_index}{ext}" - file_path = os.path.join(download_dir, filename) + async with asyncio.TaskGroup() as group: + for key, subproperty in data.items(): + if subproperty and subproperty.get('dhd'): + image_url = subproperty['dhd'] + print(f"🔍 Found image URL!") + parsed_url = urlparse(image_url) + ext = os.path.splitext(parsed_url.path)[-1] or '.jpg' + filename = f"{file_index}{ext}" + file_path = os.path.join(download_dir, filename) - await download_image(session, image_url, file_path) - print(f"🖼️ Saved image to {file_path}") + group.create_task(download_image(session, image_url, file_path)) - file_index += 1 - await delay(250) + file_index += 1 except Exception as e: print(f"Error: {str(e)}")