Обычно вы делаете запрос HEAD и проверяете Content-Type в ответе.Для изображений тип содержимого начинается с image/
.
import requests
def is_image(uri):
resp = requests.head(uri)
return resp.headers.get('content-type', '').startswith('image/')
. Вы хотите сделать запрос HEAD, а не запрос GET, потому что вы не хотите загружать изображение.Вам просто нужны метаданные.Вот для чего HEAD.
Это не относится к S3, но работает с любым HTTP URI, который является общедоступным.