Jelajahi Sumber

自定义 filetype 优先级高于回调函数自动解析 filetype

dongzhaorui 1 tahun lalu
induk
melakukan
f5ebdd187f
1 mengubah file dengan 15 tambahan dan 7 penghapusan
  1. 15 7
      FworkSpider/untils/attachment_res.py

+ 15 - 7
FworkSpider/untils/attachment_res.py

@@ -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)