From d6ebd624ef6cb0e78bc00f43138872ba2e13269d Mon Sep 17 00:00:00 2001 From: facat Date: Sun, 16 Jun 2019 16:42:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=9F=BA=E6=9C=AC=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + downloader.py | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 .gitignore create mode 100644 downloader.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f5e96db --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +venv \ No newline at end of file diff --git a/downloader.py b/downloader.py new file mode 100644 index 0000000..d2a112e --- /dev/null +++ b/downloader.py @@ -0,0 +1,22 @@ +import requests +import datetime + +# file_size if byte + + +def download_file(url, chunk_size=64 * 1024, file_size=100 * 1024 * 1024): + chunk_read = 0 + s_time = datetime.datetime.now() + e_time = None + with requests.get(url, stream=True) as r: + for chunk in r.iter_content(chunk_size): + if chunk_read >= file_size: + e_time = datetime.datetime.now() + break + if chunk: + chunk_read += len(chunk) + duration = (e_time - s_time).total_seconds() + speed = chunk_read / duration / 1024 / 1024 * 8 # mega bit + # print("{} MB download".format(chunk_read / 1024 / 1024)) + # print("{} seconds".format(duration / 1)) + return speed