Я использую django и мне нужно получить фотографии из Google Street View.Я прочитал почти все об этом из документации Google, но даже их примеры кода на Python не работают для меня.
Я знаю, что Google не предоставляет статические ссылки на их изображения, но даже с сгенерированной ссылкой(с помощью токенов API) Я не могу получить доступ к файлу, почему это так?
Несколько раз он работал для меня, когда генерировался в браузере из их документов, но, кажется, доступен только один раз.
есть мой код, но ничего особенного:
import hashlib
import hmac
import base64
import imghdr
from urllib.parse import urlparse
import requests
def sign_url(input_url=None, secret=None):
if not input_url or not secret:
raise Exception("Both input_url and secret are required")
url = urlparse(input_url)
# We only need to sign the path+query part of the string
url_to_sign = url.path + "?" + query
# Decode the private key into its binary format
# We need to decode the URL-encoded private key
decoded_key = base64.urlsafe_b64decode(secret)
# Create a signature using the private key and the URL-encoded
# string using HMAC SHA1. This signature will be binary.
signature = hmac.new(decoded_key, url_to_sign.encode('utf-8'), hashlib.sha1)
# Encode the binary signature into base64 for use within a URL
encoded_signature = base64.urlsafe_b64encode(signature.digest())
original_url = url.scheme + "://" + url.netloc + url.path + "?" + query
# Return signed URL
return original_url + "&signature=" + encoded_signature.decode('utf-8')
if __name__ == "__main__":
input_url = “” # URL, you can find one from google docs because I cannot provide my api token
secret = “” # SAME WITH SECRET TOKEN
url = sign_url(input_url, secret)
req = requests.post(url=url)
photo_type = imghdr.what("", req.content)
query = "file"
photo_name = (query + "." + photo_type).replace(" ", "_")
with open(photo_name, "wb") as photo:
photo.write(req.content)
он просто генерирует URL и пытается загрузить файл
ссылку на Google Docs, если вы не знаете, что яя говорю о https://developers.google.com/maps/documentation/streetview/intro