фотографировать с улицы Google - PullRequest
0 голосов
/ 09 октября 2018

Я использую 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

...