【发布时间】:2022-11-10 14:05:12
【问题描述】:
我需要下载附加到 Google 课堂提交的 Google Drive 文件。
从谷歌类“提交”我得到了一些信息不是包括 mime 类型:
{
"driveFile":{
"id":"10NDXAyz8gkWzkXPS[removed]",
"title":"git bash.PNG",
"alternateLink":"https://drive.google.com/file/d/10NDXAyz8gkWzkX[removed]/view?usp=drive_web",
"thumbnailUrl":"https://lh3.googleusercontent.com/nf4i[removed]=s200"
}
}
如果我理解正确,则需要 mime 类型来知道哪个是调用下载的正确方法,即。
service.files().export_media(fileId=file_id, mimeType=export_mime_type
相对
service.files().get_media(fileId=file_id))
到目前为止,我发现只有一种非常尴尬的方式来获取 mime 类型(底部的代码)。
这是问是否有使用API,一种不太尴尬的方式,我搜索但找不到它。
在我的代码中,将 ...thing 拆分为 2 个函数是有意的,尴尬之处在于必须按名称查询,然后他们检查 id。
我想知道是否有比 files.list() 更合适的“方法”来调用。
如果没有是否可以用它通过id查询。我在文档中没有找到,无论如何都尝试过,但它没有用
def get_file_from_id_name(file_id, file_name, gdrive_service):
"""it seems I can only query by name, not by id"""
page_token = None
while True:
query = "name='{}'".format(file_name)
response = gdrive_service.files().list(spaces='drive', q = query,
fields='nextPageToken, files({})'.format(ALL_FILE_FIELDS),
pageToken=page_token).execute()
for file in response.get('files', []):
if file.get('id') == file_id:
return file
page_token = response.get('nextPageToken', None)
if page_token is None:
break
log.info("breakpoint")
return None
def get_mime_type_from_id_name(file_id, file_name, gdrive_service):
file_d = get_file_from_id_name(file_id, file_name, gdrive_service)
mime_type = file_d.get("mimeType")
return mime_type
抱歉,问题很长,尽量简明扼要
【问题讨论】:
标签: python google-drive-api google-classroom