2016-10-04 3 views
0

Извините, я так учусь, простите меня, если это глупый вопрос. я получил этот метод (обновлено):Этот метод возвращает URL-адрес?

def get_photo(self, photo_reference): 
    print(self.photourl) 
    print(photo_reference) 
    resp = requests.get(
     url='{}{}'.format(self.photourl, photo_reference), 
     params={'key': self.api_key} 
    ) 
    try: 
     return resp.json() 
    except ValueError: 
     print('Invalid JSON') 

Я построил requests.get с Google Places API - Place Photo. В моем __init__(self):

self.place_detail_url = 'https://maps.googleapis.com/maps/api/place/' 
self.ref = 'photo?maxwidth=200&photoreference=' 
self.photourl = self.place_detail_url + self.ref 

Я хочу, чтобы получить фото с Google API места, но я пробовал и возвращает None. Интересно, что возвращает метод get_photo, и если он не является URL-адресом. Как я могу закодировать его в URL?

+0

Если вы возвращаете что-то из 'get_photo()'? .. – alecxe

+0

Этот метод не имеет в нем никакого оператора 'return', поэтому он будет возвращать значение по умолчанию' None'. Я подозреваю, что вы должны назначить значение, возвращаемое вызовом 'request.get', и вернуть его, что должно быть объектом, содержащим нужные вам фотоданные (в нем также содержатся другие полезные материалы). –

+0

Вы пытаетесь скачать картину? request.get (url) .content. Вам нужно сгруппировать это с помощью команды open для сохранения файла: 'open (файл, 'wb') в качестве файла: file.write (request.get (url) .content) ' – Lost

ответ

1

Я получил мой ответ, resp является объектом и в соответствии со статусом 200 HTTP, мой URL хорошо. Поэтому мне просто нужно сделать return resp.url, чтобы получить правильную ссылку URL. Это небольшая проблема, но я сделал ее большой. Извините и благодарю вас за ваш ответ!

0

Может попробовать это (на основе вашего, казалось бы предпочтительным подходом выше построения URL самостоятельно):

def get_photo(self, photo_reference): 
    request_url = (self.place_detail_url + self.ref + photo_reference + '&key=' + self.api_key) 
    output_file = (/path/to/image/here/file.png) 
    with open(output_file, 'wb') as output: 
     output.write(requests.get(request_url).content) 
+0

На самом деле я хочу, чтобы он возвращал строку (https-ссылка). Потому что я хочу поместить его в 'image_url' в параметрах и отправить его обратно в Facebook messenger API [link] (https://developers.facebook.com/docs/messenger-platform/send-api-reference/generic-template) , Есть ли у вас какие-либо идеи? Я знаю, как получить ценность от json, но эта фотография Google Places возвращает что-то другое. Я знаю, что он не вернет ответ json. –

+0

Я попробовал 'печать (ул (соответственно))' и я получаю это обратно 'https: //maps.googleapis.com/maps/api/place/photo MaxWidth = 200 & photoreference =' & 'CoQBcwAAAKoYnKhY40-G1p55pNqMnQrKGKpzD9_9abee8YUMO72VoWfl5CCAyI5iL3mU1BoUIXtlM1vOCar7ZpIRZAOjui5ByS70Ha7VN1z9Y8446xUxu_8PSgb5VaoxtlzXxTO63fC6dFZzEeX8R5Aos1ucVn0-yUbZxuLYgx6uLOopj1jWEhAZ9e6FBFOvWcXTQ51qp_LxGhRbJT1D6CCmaTIlpZvABh5QhXn8dQ'?. Длиной строкой является photo_reference, я проверил ее в браузере и возвратил 'https: //lh3.googleusercontent.ком/-es-54JIkYqQ/VvcJjK4fJbI/AAAAAAASeZE/T4whpXc9rDsjsk1tjOG3nmLqYATo2zcVw/S1600-W200/' –

Смежные вопросы