From d9c97a69ea4a67ebab9fcc8c0c51408b518ab8d0 Mon Sep 17 00:00:00 2001 From: taxmeifyoucan Date: Tue, 24 Sep 2024 22:44:39 +0200 Subject: [PATCH] Add python implementation --- mkbsd.py | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 mkbsd.py diff --git a/mkbsd.py b/mkbsd.py new file mode 100644 index 0000000..232fb74 --- /dev/null +++ b/mkbsd.py @@ -0,0 +1,76 @@ +// Licensed under the WTFPL License + +import os +import time +import aiohttp +import asyncio +from urllib.parse import urlparse +url = 'https://storage.googleapis.com/panels-api/data/20240916/media-1a-i-p~s' + +async def delay(ms): + await asyncio.sleep(ms / 1000) + +async def download_image(session, image_url, file_path): + try: + async with session.get(image_url) as response: + if response.status != 200: + raise Exception(f"Failed to download image: {response.status}") + content = await response.read() + with open(file_path, 'wb') as f: + f.write(content) + except Exception as e: + print(f"Error downloading image: {str(e)}") + +async def main(): + try: + async with aiohttp.ClientSession() as session: + async with session.get(url) as response: + if response.status != 200: + 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.') + + download_dir = os.path.join(os.getcwd(), 'downloads') + if not os.path.exists(download_dir): + os.makedirs(download_dir) + 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) + + await download_image(session, image_url, file_path) + print(f"🖼️ Saved image to {file_path}") + + file_index += 1 + await delay(250) + + except Exception as e: + print(f"Error: {str(e)}") + +def ascii_art(): + print(""" + /$$ /$$ /$$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$$ +| $$$ /$$$| $$ /$$/| $$__ $$ /$$__ $$| $$__ $$ +| $$$$ /$$$$| $$ /$$/ | $$ \\ $$| $$ \\__/| $$ \\ $$ +| $$ $$/$$ $$| $$$$$/ | $$$$$$$ | $$$$$$ | $$ | $$ +| $$ $$$| $$| $$ $$ | $$__ $$ \\____ $$| $$ | $$ +| $$\\ $ | $$| $$\\ $$ | $$ \\ $$ /$$ \\ $$| $$ | $$ +| $$ \\/ | $$| $$ \\ $$| $$$$$$$/| $$$$$$/| $$$$$$$/ +|__/ |__/|__/ \\__/|_______/ \\______/ |_______/""") + print("") + print("🤑 Starting downloads from your favorite sellout grifter's wallpaper app...") + +if __name__ == "__main__": + ascii_art() + time.sleep(5) + asyncio.run(main())