From 4ea70981d1d2b4ef794ddb9ffb62256fb5dfd889 Mon Sep 17 00:00:00 2001 From: facat Date: Mon, 17 Jun 2019 22:45:50 +0800 Subject: [PATCH] =?UTF-8?q?1.=E8=AF=BB=E5=85=A5json=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + config.py | 37 +++++++++++++++++++++++++++++++++++++ downloader.py | 24 ++++++++++++++++++------ main.py | 10 +++------- 4 files changed, 59 insertions(+), 13 deletions(-) create mode 100644 config.py diff --git a/.gitignore b/.gitignore index 092942f..30baab3 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ bin/ include/ lib/ .idea +config.json diff --git a/config.py b/config.py new file mode 100644 index 0000000..1cdb92b --- /dev/null +++ b/config.py @@ -0,0 +1,37 @@ +import argparse +import json +import sys + +g_args = None + + +def read_json(): + global g_args + json_path = g_args.config + if json_path is None: + print("specify json path") + sys.exit() + with open(json_path, "r", encoding="utf-8") as json_f: + js = json.load(json_f) + return js + + +def get_config(): + global g_args + return g_args + + +def init_config(): + global g_args + if g_args is not None: + return g_args + parser = argparse.ArgumentParser(description="Help") + parser.add_argument("-config", type=str) + _args = parser.parse_args() + g_args = _args + return _args + + +if __name__ == "__main__": + args = init_config() + print(args.config) diff --git a/downloader.py b/downloader.py index 68c869d..9def8c0 100644 --- a/downloader.py +++ b/downloader.py @@ -1,19 +1,31 @@ import requests import datetime import model +import config + + +def get_servers(): + js = config.read_json() + _servers = js["servers"] + servers_dic = {} + for s in _servers: + servers_dic[s] = {} + servers_dic[s]["name"] = s + servers_dic[s]["url"] = _servers[s]["url"] + return servers_dic + # file_size if byte # longest_time seconds - - -def download_file( - servers, chunk_size=4 * 1024, file_size=100 * 1024 * 1024, longest_time=60 -): - for server in servers: +def download_file(chunk_size=4 * 1024, file_size=100 * 1024 * 1024, longest_time=60): + servers = get_servers() + for server_name in servers: + server = servers[server_name] url = server["url"] server_name = server["name"] chunk_read = 0 s_time = datetime.datetime.now() + duration = longest_time try: with requests.get(url, stream=True, timeout=longest_time) as r: for chunk in r.iter_content(chunk_size): diff --git a/main.py b/main.py index 6bc54ca..349e376 100644 --- a/main.py +++ b/main.py @@ -2,14 +2,10 @@ import datetime import downloader - +import config if __name__ == "__main__": + config.init_config() print(datetime.datetime.now()) - servers = [ - {"url": "http://67.209.190.15/1000M.bin", "name": "bwg"}, - {"url": "http://185.255.130.87:10010/1000M.bin", "name": "hosteons"}, - {"url": "http://192.168.1.130:10010/1000MB.bin", "name": "local"}, - ] - downloader.download_file(servers) + downloader.download_file() print("Finished.")