From dcbcfecc0775e1edccd11807dbc96c25e9a3fb7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B8=8C=E6=96=AF=E4=BA=9A=E6=89=98=E8=8E=89?= <122478771+HisAtri@users.noreply.github.com> Date: Fri, 14 Jul 2023 12:19:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=5F=5Fname=5F=5F=20=3D=3D?= =?UTF-8?q?=20'=5F=5Fmain=5F=5F'=20=E7=9A=84=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Python/downloader.py | 42 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/src/Python/downloader.py b/src/Python/downloader.py index 8b35064bb0..66e0912078 100644 --- a/src/Python/downloader.py +++ b/src/Python/downloader.py @@ -1,5 +1,6 @@ import os import shutil +import json import tempfile from concurrent.futures import ThreadPoolExecutor from threading import Lock @@ -98,7 +99,40 @@ def file_download(urlist, filepath, proxies=None): return downloader.download_file(total_size, filepath) if __name__ == '__main__': - urlist = [r"https://mirror.eh.cx/KataGo/katago/pack/2023-06-15/2023-06-15-Macosx(amd64)+Linux(amd64)(无引擎).zip",r"https://ota.eh.cx/KataGo/katago/pack/2023-06-15/2023-06-15-Macosx(amd64)+Linux(amd64)(无引擎).zip",r"https://fake.eh.cx/a"] - # 其中前两个是有效的url,第三个是无效的url - path = r"F:\programs\credit\req\2023-06-15-Macosx(amd64)+Linux(amd64)(无引擎).zip" - file_download(urlist,path) + while True: + json_string = input("请输入下载指令:") + # 解析JSON字符串 + """ + Example: + { + "urlist":["https://mirror1.example.com/file.zip","https://mirror2.example.com/file.zip","https://mirror3.example.com/file.zip"], + "filepath":"C:\Download\File.zip" + "proxies":"http://127.0.0.1:7890" + } + """ + try: + data = json.loads(json_string) + if isinstance(data, dict): + # 这两个参数是必须的 + urlist = data.get("urlist", None) + filepath = data.get("filepath", None) + # 这个参数是可选的 + proxies = data.get("proxies", None) + + # 对于变量的类型进行检查 + if not isinstance(urlist, list) or not all(isinstance(url, str) for url in urlist): + print("urlist类型错误") + continue + if not isinstance(filepath, str): + print("filepath类型错误") + continue + if proxies is not None and not isinstance(proxies, str): + print("proxies类型错误") + continue + + # 启动下载 + file_download(urlist=urlist, filepath=filepath, proxies=proxies) + else: + print("Json结构错误") + except json.JSONDecodeError: + print("无法解析JSON。")