Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
from .chrome import get_default_search_engine, get_cookie_data, get_bookmarks, get_open_tabs_info, get_pdf_from_url, \
|
||||
get_shortcuts_on_desktop, get_history, get_enabled_experiments, get_chrome_language, get_chrome_font_size, \
|
||||
get_profile_name, get_number_of_search_results, get_googledrive_file
|
||||
get_profile_name, get_number_of_search_results, get_googledrive_file, get_active_tab_info
|
||||
from .file import get_cloud_file, get_vm_file, get_cache_file
|
||||
from .general import get_vm_command_line
|
||||
from .impress import get_audio_in_slide
|
||||
|
||||
@@ -466,44 +466,36 @@ def get_number_of_search_results(env, config: Dict[str, str]):
|
||||
|
||||
def get_googledrive_file(env, config: Dict[str, Any]) -> str:
|
||||
""" Get the desired file from Google Drive based on config, return the downloaded local filepath.
|
||||
To retrieve the file, we provide two options in config dict:
|
||||
1. query: a list of queries to search the file, each query is a string that follows the format of Google Drive search query
|
||||
2. path: a list of path to the file, 'folder/subfolder/filename' -> ['folder', 'subfolder', 'filename']
|
||||
Return the downloaded filepath locally.
|
||||
"""
|
||||
settings_file = config.get('settings_file', 'evaluation_examples/settings/googledrive/settings.json')
|
||||
auth = GoogleAuth(settings_file=settings_file)
|
||||
drive = GoogleDrive(auth)
|
||||
|
||||
q = config['query']
|
||||
filelist: GoogleDriveFileList = drive.ListFile({'q': q}).GetList()
|
||||
if len(filelist) == 0: # target file not found
|
||||
return None
|
||||
|
||||
file: GoogleDriveFile = filelist[0] # HACK: if multiple candidates, just download the first one
|
||||
_path = os.path.join(env.cache_dir, config['dest'])
|
||||
|
||||
try:
|
||||
file.GetContentFile(_path, mimetype=file.metadata['mimeType'])
|
||||
except:
|
||||
logger.info('[ERROR]: Failed to download the file from Google Drive')
|
||||
return None
|
||||
return _path
|
||||
|
||||
|
||||
def get_googledrive_file(env, config: Dict[str, Any]) -> str:
|
||||
""" Get the desired file from Google Drive based on config, return the downloaded local filepath.
|
||||
"""
|
||||
settings_file = config.get('settings_file', 'evaluation_examples/settings/googledrive/settings.json')
|
||||
auth = GoogleAuth(settings_file=settings_file)
|
||||
drive = GoogleDrive(auth)
|
||||
|
||||
q = config['query']
|
||||
filelist: GoogleDriveFileList = drive.ListFile({'q': q}).GetList()
|
||||
if len(filelist) == 0: # target file not found
|
||||
return None
|
||||
|
||||
file: GoogleDriveFile = filelist[0] # HACK: if multiple candidates, just download the first one
|
||||
_path = os.path.join(env.cache_dir, config['dest'])
|
||||
if 'query' in config:
|
||||
query = config['query']
|
||||
if type(query) != list: query = [query]
|
||||
else:
|
||||
paths = config['path']
|
||||
if type(paths) != list: paths = [paths]
|
||||
query = [f"title = {fp} and mimeType = 'application/vnd.google-apps.folder' and trashed = false" if idx < len(paths) - 1
|
||||
else f'title = {fp} and trashed = false' for idx, fp in enumerate(paths)]
|
||||
parent_id = 'root'
|
||||
|
||||
try:
|
||||
file.GetContentFile(_path, mimetype=file.metadata['mimeType'])
|
||||
for q in query:
|
||||
search = f'( {q} ) and "{parent_id}" in parents'
|
||||
filelist: GoogleDriveFileList = drive.ListFile({'q': search}).GetList()
|
||||
if len(filelist) == 0: # target file not found
|
||||
return None
|
||||
file: GoogleDriveFile = filelist[0] # HACK: if multiple candidates, just use the first one
|
||||
parent_id = file['id']
|
||||
|
||||
file.GetContentFile(_path, mimetype=file['mimeType'])
|
||||
except:
|
||||
logger.info('[ERROR]: Failed to download the file from Google Drive')
|
||||
return None
|
||||
|
||||
Reference in New Issue
Block a user