Почему у меня разные ответы API от библиотеки Openweathermap JSON и PyOWM? - PullRequest
0 голосов
/ 08 марта 2020

Я использую два разных способа получения текущей погоды и получаю разные данные из двух API.

Я подозреваю, что PyOWM не будет работать должным образом, потому что, если я изменил город и запустил скрипт несколько раз, он зависает с теми же данными и показывает те же цифры независимо от того, какой город я ввожу в сценарии. Но, по крайней мере, pyowm показывает погоду, довольно близкую к реальной, если она запускается впервые. Webapi из https://openweathermap.org/ работает довольно точно, и у меня нет проблем с его JSON ответом. Но ответ PyOWM, кажется, показывает случайные данные. Конечно, я мог бы забыть о PyOWM и никогда не использовать его, но я новичок с таким расхождением ответов API и хотел бы знать, правильно ли я что-то делаю или не понимаю, где я облажался.

веб-API https://openweathermap.org/current

import json, requests

place = "London"
apikey = "e4784f34c74efe649018567223752b21"
lang = "en"

r = requests.get("http://api.openweathermap.org/data/2.5/weather?q=" + place + "&appid=" + apikey + "&lang=" + lang + "&units=metric", timeout=20)
api_answer = json.dumps(r.json())

weather_is = "Now in " + place + ": " + json.loads(api_answer)["weather"][0]["description"] + ".\n" 
t_txt = "Temperature:\n"
t_now = "now: " + str(json.loads(api_answer)["main"]["temp"]) + "\n"
t_max = "maximum: " + str(json.loads(api_answer)["main"]["temp_max"]) + "\n"
t_min = "minimum: " + str(json.loads(api_answer)["main"]["temp_min"])

final_txt = weather_is + t_txt + t_now + t_max + t_min

print(final_txt)

PyOWM API https://pyowm.readthedocs.io/en/latest/usage-examples-v2/weather-api-usage-examples.html

import pyowm
owm = pyowm.OWM('e4784f34c74efe649018567223752b21', language = "en")
place = "London"
observation = owm.weather_at_place('place')
w = observation.get_weather()
print("Now in " + place + ": " + w.get_detailed_status() + ".")
temperature_at_place_now = w.get_temperature('celsius')["temp"]
temperature_at_place_max = w.get_temperature('celsius')["temp_max"]
temperature_at_place_min = w.get_temperature('celsius')["temp_min"]

print ("Temperature:")
print ("now: " + str(temperature_at_place_now))
print ("maximum: " + str(temperature_at_place_max))
print ("minimum: " + str(temperature_at_place_min))

[вывод веб-API] 1 [вывод Pyowm API] 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...