diff --git a/mkbsd.py b/mkbsd.py index 4b8977e..0b7f927 100644 --- a/mkbsd.py +++ b/mkbsd.py @@ -2,9 +2,11 @@ import os import time import aiohttp import asyncio +import json from urllib.parse import urlparse -url = 'https://storage.googleapis.com/panels-api/data/20240916/media-1a-i-p~s' +# Load the local JSON file +json_file_path = 'images.json' async def delay(ms): await asyncio.sleep(ms / 1000) @@ -22,38 +24,37 @@ async def download_image(session, image_url, file_path): async def main(): try: + # Load JSON data from the local file + with open(json_file_path, 'r') as json_file: + json_data = json.load(json_file) + + data = json_data.get('data') + + if not data: + raise Exception('โ›” JSON does not have a "data" property at its root.') + 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.') + for key, subproperty in data.items(): + if subproperty and subproperty.get('dhd'): + image_url = subproperty['dhd'] + print(f"๐Ÿ” Found image URL!") + + # Extract artist name from the URL + artist_name = image_url.split('a~')[1].split('_')[0] + artist_dir = os.path.join(os.getcwd(), 'downloads', artist_name) - for key, subproperty in data.items(): - if subproperty and subproperty.get('dhd'): - image_url = subproperty['dhd'] - print(f"๐Ÿ” Found image URL!") - - # Extrahiere den Kรผnstlernamen vor dem Unterstrich - parsed_url = urlparse(image_url) - artist_name = image_url.split('a~')[1].split('_')[0] - artist_dir = os.path.join(os.getcwd(), 'downloads', artist_name) + if not os.path.exists(artist_dir): + os.makedirs(artist_dir) + print(f"๐Ÿ“ Created directory: {artist_dir}") - if not os.path.exists(artist_dir): - os.makedirs(artist_dir) - print(f"๐Ÿ“ Created directory: {artist_dir}") + # Extract filename from the URL + filename = os.path.basename(urlparse(image_url).path) # Name including extension + file_path = os.path.join(artist_dir, filename) - # Extrahiere den Dateinamen und die Endung - filename = os.path.basename(parsed_url.path) # Name inklusive Endung - file_path = os.path.join(artist_dir, filename) - - await download_image(session, image_url, file_path) - print(f"๐Ÿ–ผ๏ธ Saved image to {file_path}") - - await delay(250) + await download_image(session, image_url, file_path) + print(f"๐Ÿ–ผ๏ธ Saved image to {file_path}") + + await delay(250) except Exception as e: print(f"Error: {str(e)}") @@ -74,4 +75,4 @@ def ascii_art(): if __name__ == "__main__": ascii_art() time.sleep(5) - asyncio.run(main()) + asyncio.run(main()) \ No newline at end of file