From f9a84917f03b5bbf3e33321a331d2922f240b0de Mon Sep 17 00:00:00 2001 From: Martin Prokoph Date: Sat, 26 Jul 2025 20:04:26 +0200 Subject: [PATCH] feat: download packs from any link before compiling --- gen_pack.py | 4 ++-- src/download_helper.py | 16 +++++++++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/gen_pack.py b/gen_pack.py index faf367e..4e93767 100644 --- a/gen_pack.py +++ b/gen_pack.py @@ -10,7 +10,7 @@ import time # Local imports from src.generator import autoGen -from src.download_helper import downloadFromModrinth +from src.download_helper import downloadPack from src.zip_utils import makeZip import src.json_utils @@ -43,7 +43,7 @@ if __name__ == '__main__': print("https://github.com/TeamMidnightDust/BetterLeavesLite") print() if args.minify: src.json_utils.minify = True - if args.download != None: downloadFromModrinth(args.download) + if args.download != None: downloadPack(args.download) # Loads overrides from the json file f = open('./input/overrides.json') diff --git a/src/download_helper.py b/src/download_helper.py index 3703d37..f730f7e 100644 --- a/src/download_helper.py +++ b/src/download_helper.py @@ -1,18 +1,28 @@ from os import path from tqdm import tqdm import requests +import re + +def downloadPack(input: str): + if re.search("(http://*)|(https://*)", input) != None and input.endswith(".zip"): + downloadZip(input) + else: + downloadFromModrinth(input) def downloadFromModrinth(project_slug): response = requests.get(f'https://api.modrinth.com/v2/project/{project_slug}/version') latestFile = response.json()[0]['files'][0] latestFileURL = latestFile['url'] if len(latestFileURL) < 1: raise Exception(f'Could not get the latest version URL for {project_slug}') + downloadZip(latestFileURL, file_name=latestFile['filename'], pack_name=project_slug) - download_stream = requests.get(latestFileURL, stream=True) - file_name = latestFile['filename'] +def downloadZip(url, file_name="", pack_name=""): + download_stream = requests.get(url, stream=True) + if file_name == "": file_name = url.split("/")[-1] + if pack_name == "": pack_name = url file_path = 'input/texturepacks' - print(f'Downloading texturepack: {project_slug} (Latest version: {file_name})') + print(f'Downloading texturepack: {pack_name} (Latest version: {file_name})') location = path.join(file_path, file_name) total = int(download_stream.headers.get('content-length', 0)) with open(location, "wb") as handle, tqdm(