Google 云端硬盘 uc?id= 不再有效

问题描述 投票:0回答:3

我正在尝试编写代码来获取公共 Google Drive 文件夹中图像的直接 url 并将其嵌入。直到几分钟前,一切都正常工作并使用 uc?技巧给出了原始图像,以便我可以嵌入它。然而现在它正在发送下载,即使我使用 &export=view。

这是我的代码:

key = "supersecretgooglecloudconsolekey"

import re
import requests

def get_raw_image_links(folder_link):
    # Extract folder id
    folder_id = re.findall(r"/folders/([^\s/]+)", folder_link)[0]

    # Google cloud console request to get links
    api_url = f"https://www.googleapis.com/drive/v3/files?q='{folder_id}'+in+parents+and+mimeType+contains+'image/'&key={key}"
    response = requests.get(api_url).json()

    raw_image_links = []

    # Iterate over the files and retrieve raw image links
    for file in response['files']:
        raw_link = f"https://drive.google.com/uc?id={file['id']}"
        print(raw_link)
        raw_image_links.append(f'<a href="{raw_link}"> <img src="{raw_link}" /> </a>')

    return ''.join(raw_image_links)


folder_link = "https://drive.google.com/drive/u/0/folders/**********"
image_links = get_raw_image_links(folder_link)



例如,这有效:https://drive.google.com/uc?id=15bwLlBuPc4O8LXwxjsBJe_ctyPl8Tll2

但由于某种原因,这不会,而是发送下载:https://drive.google.com/uc?id=1Gz4YrH2tefSVxKRvv6gnqnY3tk0Obm0T

我该如何解决这个问题?另外,如果有人知道如何从图像本身的查看页面中抓取原始图像链接,这将会很有帮助https://drive.google.com/file/d/15bwLlBuPc4O8LXwxjsBJe_ctyPl8Tll2/view

谢谢!

python python-3.x google-drive-api
3个回答
3
投票

根据您的情况,更改端点怎么样?当您的显示脚本修改时,请修改

raw_link
如下。

来自:

raw_link = f"https://drive.google.com/uc?id={file['id']}"

致:

raw_link = f"https://drive.google.com/thumbnail?id={file['id']}&sz=w1000" # Please modify w1000 to your actual situation.
  • 通过此更改,图像文件将转换为 PNG 格式。我认为这可能是几种解决方案之一。
  • 根据您的问题和显示脚本,我猜测您的
    folder_link = "https://drive.google.com/drive/u/0/folders/**********"
    文件夹可能会被公开共享。既然如此,我想上面的修改也许可以用。

参考:


1
投票

无法预览https://drive.google.com/uc?id=1Gz4YrH2tefSVxKRvv6gnqnY3tk0Obm0T的原因与

HEIC
格式有关,我们可以将
HEIC
文件存储在Google Drive中,但遗憾的是我们无法预览它们该功能尚未包括在内。

以下是您可以预览的图像文件列表: 图像文件(.JPEG、.PNG、.GIF、.BMP、.TIFF、.SVG)。我们没有预览

HEIC
图像文件的选项,如果您有时间,请考虑提交功能创意以进一步增强Google Drive。

参考:


0
投票

我有同样的问题,但对于视频,我想使用 Google Drive API 重新创建 YouTube,但 Google Drive 播放器无法使用 uc?id 功能,在它可以正常工作之前,但现在不可能。我认为这是通过Google Drive 团队自愿不要滥用 API,因为在此之前它可以完美运行。

我有一个名为 Goopicks 的工具供您使用,它比 Google Drive 处理图像和照片的速度更快。

© www.soinside.com 2019 - 2024. All rights reserved.