Google 云端硬盘缩略图链接返回 404

这种获取 Google 云端硬盘文件缩略图的方法对我一直有效,但最近似乎已停止。


我可以在网上找到的所有答案都表明这是因为 thumbnailLink 需要授权(例如)。但是,我正在使用授权访问令牌访问缩略图。我可以使用带有这些访问令牌的Drive API“Files:get”获取文件信息,但 thumbnailLink 返回 404。


print(http)

# <google_auth_httplib2.AuthorizedHttp object at 0x11561d0f0>

# An instance of google_auth_httplib2.AuthorizedHttp


url = 'https://www.googleapis.com/drive/v3/files/%s?fields=thumbnailLink' % file_id

response, content = http.request(url)

data = json.loads(content)

print(data['thumbnailLink'])

# https://docs.google.com/u//feeds/vt?gd=true&id=***fileID***&v=203&s=***&sz=s220

# Works ✓


response, content = http.request(data['thumbnailLink'])

print(response['status'])

# 404

# :(

还给出了 404 错误:

  • thumbnailLink + "&access_token=" + YOURTOKEN;这里所建议的。

  • 在浏览器中打开thumbnailLink(以文件所有者身份登录到 Google)。

  • thumbnailLink在浏览器中打开修改后的内容- 替换/u///u/0//u/1//u/2/(当我以该用户身份打开驱动器时,URL 为https://drive.google.com/drive/u/1/my-drive

有谁知道获取 Google 云端硬盘缩略图文件的可靠方法?


ibeautiful
浏览 205回答 1
1回答

慕容森

我相信你的目标如下。您想从 Drive API 中的“files.get”方法检索到的缩略图链接中检索缩略图。从示例缩略图链接中,您想从 Google 文档(文档、电子表格等)中检索缩略图。问题和解决方法:目前阶段,从缩略图看的情况似乎404是bug。这已经报告给了谷歌问题跟踪器。Ref谷歌方面似乎已经为人所知。不幸的是,我认为这是当前的直接答案。而且,我相信这个问题会在未来的更新中得到解决。在这里,作为当前的解决方法,将其转换为 PDF 文件并检索缩略图如何?在这种情况下,可以使用缩略图链接。此解决方法的流程如下。将 Google 文档转换为 PDF 文件。PDF 文件创建到与 Google 文档相同的文件夹中。从创建的 PDF 文件中检索缩略图链接。将上面的流程转换成python脚本后,就变成了下面这样。示例脚本:在使用此脚本之前,请设置访问令牌和文件 ID。在这种情况下,为了用multipart/form-data简单的脚本请求,我使用了requests库。import jsonimport httplib2import requestsimport timehttp = httplib2.Http()access_token = '###'  # Please set the access token.file_id = '###'  # Please set the file ID.headers = {"Authorization": "Bearer " + access_token}# 1. Retrieve filename and parent ID.url1 = "https://www.googleapis.com/drive/v3/files/" + file_id + "?fields=*"res, res1 = http.request(url1, 'GET', headers=headers)d = json.loads(res1.decode('utf-8'))# 2. Retrieve PDF data by converting from the Google Docs.url2 = "https://www.googleapis.com/drive/v3/files/" + file_id + "/export?mimeType=application%2Fpdf"res, res2 = http.request(url2, 'GET', headers=headers)# 3. Upload PDF data as a file to the same folder of Google Docs.para = {'name': d['name'] + '.pdf', 'parents': d['parents']}files = {    'data': ('metadata', json.dumps(para), 'application/json; charset=UTF-8'),    'file': res2}res3 = requests.post(    "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart",    headers=headers,    files=files)obj = res3.json()# It seems that this is required to use by creating the thumbnail link from the uploaded file.time.sleep(5)# 4. Retrieve thumbnail link of the uploaded PDF file.url3 = "https://www.googleapis.com/drive/v3/files/" + obj['id'] + "?fields=thumbnailLink"res, res4 = http.request(url3, 'GET', headers=headers)data = json.loads(res4.decode('utf-8'))  # or data = json.loads(res4)print(data['thumbnailLink'])# 5. Retrieve thumbnail.response, content = http.request(data['thumbnailLink'])print(response['status'])print(content)运行此脚本时,Google Docs 文件将导出为 PDF 数据,PDF 数据将上传到 Google Drive 并检索缩略图链接。笔记:在这种情况下,请将范围包括https://www.googleapis.com/auth/drive到您的访问令牌的范围内。因为文件上传了。为了检索文件元数据和导出 PDF 文件并上传数据,需要使用访问令牌。但是当从缩略图链接中检索到缩略图时,不需要使用访问令牌。2020年1月之后,access token不能与查询参数一起使用access_token=###,请在请求头中使用access token。解决上述问题后,我认为您可以使用您的脚本。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python