import sys sys.path.append('/home/lena/Documents/python/PolitScanner/util') from pathlib import Path from os.path import join from requests import get from shutil import copyfile MODELS = { 'DeepSeek-R1-0528-Qwen3-8B-Q5_K_L.gguf': 'https://huggingface.co/bartowski/deepseek-ai_DeepSeek-R1-0528-Qwen3-8B-GGUF/resolve/main/deepseek-ai_DeepSeek-R1-0528-Qwen3-8B-Q5_K_L.gguf', 'Ministral-8B-Instruct-2410-Q4_K_S.gguf': 'https://huggingface.co/bartowski/Ministral-8B-Instruct-2410-GGUF/resolve/main/Ministral-8B-Instruct-2410-Q4_K_S.gguf', 'Qwen3-30B-A3B-Q5_K_M.gguf': 'https://huggingface.co/bartowski/Qwen_Qwen3-30B-A3B-GGUF/resolve/main/Qwen_Qwen3-30B-A3B-Q5_K_M.gguf', 'Qwen3-8B-Q5_K_M.gguf': 'https://huggingface.co/bartowski/Qwen_Qwen3-8B-GGUF/resolve/main/Qwen_Qwen3-8B-Q5_K_M.gguf', 'Qwen3-32B-Q4_K_S.gguf': 'https://huggingface.co/unsloth/Qwen3-32B-GGUF/resolve/main/Qwen3-32B-Q4_K_S.gguf', } def download_file(url: str, directory: str, filename: str = None): Path(directory).mkdir(parents=True, exist_ok=True) if filename is None: filename = url.split('/')[-1].split('?')[0] filepath = join(directory, filename) with get(url, stream=True) as r: r.raise_for_status() with open(filepath, 'wb') as f: for chunk in r.iter_content(chunk_size=4 * 1024 * 1024): f.write(chunk) return filepath def main() -> None: Path('/opt/llms').mkdir(exist_ok=True, parents=True) question = 'Which of these following models do you want to download?' for i, model in enumerate(MODELS.keys()): question += f"\n[{i + 1}] {model}" response = input(question).replace(' ', '').replace(';', ',') parsed = [int(x) for x in response.split(',')] if len(parsed) > 0: copyfile('./index.json', '/opt/llms/index.json') for i in parsed: model = list(MODELS.keys())[i - 1] url = MODELS[model] print(f"Downloading {model}") download_file(url, '/opt/llms/', model) print(f"Downloaded {model}") print('Done') if __name__ == '__main__': main()