I am trying to write code to get the direct urls of images in a public Google Drive folder and embed them. Until a few minutes ago everything has been working and using the uc? trick gives the raw image so I can embed it. However now it is sending a download, even when I use &export=view.
Here is my code:
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)
For example, this works: https://drive.google.com/uc?id=15bwLlBuPc4O8LXwxjsBJe_ctyPl8Tll2
But this doesn't for some reason and instead sends a download: https://drive.google.com/uc?id=1Gz4YrH2tefSVxKRvv6gnqnY3tk0Obm0T
How do I fix this? Also, it would be helpful if anyone knows how to scrape the raw image link from the viewing page of the image itself https://drive.google.com/file/d/15bwLlBuPc4O8LXwxjsBJe_ctyPl8Tll2/view
Thank you!
In your situation, how about changing the endpoint? When your showing script is modified, please modify raw_link
as follows.
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.
folder_link = "https://drive.google.com/drive/u/0/folders/**********"
might be publicly shared. In that case, I thought that the above modification might be able to be used.