Почему возникает ошибка forbidden при попытке запроса к Yandex Weather?
Я хочу получить ответ на запрос от Яндекс Погоды.
Я написал запрос в соответствии с документацией API Яндекс Погоды: https://yandex.ru/dev/weather/doc/ru/concepts/forecast-info#req-ex
Я получил ключ временного доступа на том же сайте API Яндекс Погоды, он до сих пор активен.
Я получаю координаты города, используя библиотеку geopy. Эти координаты я передаю через f строку в get запрос, также в запросе использую заголовок, который взял с сайта API.
Не понимаю почему в итоге я получаю:
{"message":"forbidden"}
from geopy.geocoders import Nominatim
import requests
access_key = 'd4253969-73e2-4ef8-9932-631053b02222'
city = input('Введите название города (латиницей), в котором вы хотите узнать погоду: ')
headers = {"X-Yandex-Weather-Key":"d4253969-73e2-4ef8-9932-631053b02222"}
def get_coordinates(city_name):
loc = Nominatim(user_agent="GetLoc")
getLoc = loc.geocode(city_name)
return [getLoc.latitude, getLoc.longitude]
coordinates = get_coordinates(city)
print(f'Координаты: {coordinates}')
url = f'https://api.weather.yandex.ru/v2/informers?lat={coordinates[0]}&lon={coordinates[1]}'
response = requests.get(url, headers=headers)
print(response.text)
Ответы (1 шт):
Автор решения: iglebov
→ Ссылка
Если я правильно понял, то Тариф «Погода на вашем сайте» — архивный.
То есть больше не используется.
Изменил url в Вашем коде на Тариф «Оптимальный (REST)»:
url = f'https://api.weather.yandex.ru/v2/forecast?lat={coordinates[0]}&lon={coordinates[1]}'
И всё заработало.