|
@@ -183,8 +183,8 @@ class AttachmentDownloader(AliYunService):
|
|
|
|
|
|
@staticmethod
|
|
|
def fetch_data(
|
|
|
- callback,
|
|
|
url: str,
|
|
|
+ callback=None,
|
|
|
proxies=None,
|
|
|
show_error_log=False,
|
|
|
**kwargs
|
|
@@ -192,22 +192,28 @@ class AttachmentDownloader(AliYunService):
|
|
|
"""
|
|
|
下载数据
|
|
|
|
|
|
- @param callback: 回调函数 可以是函数 也可是函数名
|
|
|
@param url: 文件下载地址
|
|
|
+ @param callback: 回调函数 可以是函数 也可是函数名
|
|
|
@param proxies: 代理 {"http":"http://xxx", "https":"https://xxx"}
|
|
|
@param show_error_log: 展示错误堆栈信息日志
|
|
|
"""
|
|
|
+ method = kwargs.pop("method", "get")
|
|
|
+
|
|
|
request_params = {}
|
|
|
request_params.setdefault("proxies", proxies)
|
|
|
request_params.setdefault("headers", kwargs.get("headers") or headers)
|
|
|
- request_params.setdefault("timeout", kwargs.get("timeout") or 60)
|
|
|
- request_params.setdefault("stream", kwargs.get("stream") or True)
|
|
|
- request_params.setdefault("verify", kwargs.get("verify") or False)
|
|
|
+ request_params.setdefault("timeout", kwargs.pop("timeout", 60))
|
|
|
+ request_params.setdefault("params", kwargs.pop("params", None))
|
|
|
+ request_params.setdefault("data", kwargs.pop("data", None))
|
|
|
+ request_params.setdefault("json", kwargs.pop("json", None))
|
|
|
+ request_params.setdefault("cookies", kwargs.pop("cookies", None))
|
|
|
+ request_params.setdefault("verify", kwargs.pop("verify", False))
|
|
|
+ request_params.setdefault("stream", kwargs.pop("stream", True))
|
|
|
|
|
|
retries = 0
|
|
|
while retries < 3:
|
|
|
try:
|
|
|
- with requests.get(url, **request_params) as response:
|
|
|
+ with requests.request(method, url, **request_params) as response:
|
|
|
if response.status_code == 200:
|
|
|
stream = response.content
|
|
|
filetype_lst = [] # 文件类型列表
|
|
@@ -230,7 +236,8 @@ class AttachmentDownloader(AliYunService):
|
|
|
self,
|
|
|
file_name: str,
|
|
|
download_url: str,
|
|
|
- callback,
|
|
|
+ file_type=None,
|
|
|
+ callback=None,
|
|
|
**kwargs
|
|
|
):
|
|
|
if not file_name or not download_url:
|
|
@@ -238,6 +245,7 @@ class AttachmentDownloader(AliYunService):
|
|
|
|
|
|
file_kwargs = dict(callback=callback, url=download_url, **kwargs)
|
|
|
filestream, filetype = self.fetch_data(**file_kwargs)
|
|
|
+ filetype = file_type or filetype
|
|
|
filename = clear_file_type_suffix(file_name, filetype)
|
|
|
download_url = judge_file_url(download_url)
|
|
|
|