1
1
"""..."""
2
2
import os
3
- from typing import List , overload
3
+ from typing import List , overload , Callable
4
4
5
5
from aligo .core import *
6
6
from aligo .request import *
@@ -64,12 +64,14 @@ def batch_download_url(self,
64
64
result = self ._core_batch_download_url (body )
65
65
return list (result )
66
66
67
- def download_folder (self , folder_file_id : str , local_folder : str = '.' , drive_id : str = None ) -> str :
67
+ def download_folder (self , folder_file_id : str , local_folder : str = '.' , drive_id : str = None ,
68
+ file_filter : Callable [[BaseFile ], bool ] = lambda x : False ) -> str :
68
69
"""
69
70
下载文件夹
70
71
:param folder_file_id: [str] 文件夹 id
71
72
:param local_folder: [str] 本地文件夹路径, 默认为当前目录, 即下载到哪里
72
73
:param drive_id: [str] 文件夹所在的网盘 id
74
+ :param file_filter: 文件过滤函数
73
75
:return: [str] 本地文件夹路径
74
76
75
77
用法示例:
@@ -81,14 +83,17 @@ def download_folder(self, folder_file_id: str, local_folder: str = '.', drive_id
81
83
if folder_file_id != 'root' :
82
84
folder = self ._core_get_file (GetFileRequest (file_id = folder_file_id , drive_id = drive_id ))
83
85
local_folder = os .path .join (local_folder , self ._del_special_symbol (folder .name ))
84
- return self .__download_folder (folder_file_id , local_folder , drive_id )
86
+ return self .__download_folder (folder_file_id , local_folder , drive_id , file_filter = file_filter )
85
87
86
- def __download_folder (self , folder_file_id : str , local_folder : str = '.' , drive_id : str = None ) -> str :
88
+ def __download_folder (self , folder_file_id : str , local_folder : str = '.' , drive_id : str = None ,
89
+ file_filter : Callable [[BaseFile ], bool ] = lambda x : False ) -> str :
87
90
"""下载文件夹"""
88
91
# 创建文件夹, 即使文件夹为空
89
92
os .makedirs (local_folder , exist_ok = True )
90
93
files = []
91
94
for file in self ._core_get_file_list (GetFileListRequest (parent_file_id = folder_file_id , drive_id = drive_id )):
95
+ if file_filter (file ):
96
+ continue
92
97
if file .type == 'folder' :
93
98
self .__download_folder (folder_file_id = file .file_id ,
94
99
local_folder = os .path .join (local_folder , self ._del_special_symbol (file .name )))
0 commit comments