Не получается указать русский язык и вывести погоду в pyowm
Решил написать простецкий код для погоды и позже перенести в бота, но возникла пробелема ещё в написании основной части. Когда пытаюсь указать русский язык, пишет " _ init _() got an unexpected keyword argument 'language'". Если же убрать его, то есть ещё одна проблема в "print("В городе " + place + " сейчас " + w.get_detailed_status())". Пишет " 'Weather' object has no attribute 'get_detailed_status'". Если же без "get", то вот "'str' object is not callable"
import pyowm
owm = pyowm.OWM('MyToken', language = 'ru')
place = input("В каком городе вы хотите узнать погоду?: ")
mgr = owm.weather_manager()
observation = mgr.weather_at_place(place)
w = observation.weather
temp = w.temperature('celsius')["temp"]
print("В городе " + place + " сейчас " + w.get_detailed_status())
print("Температура в городе " + str(temp) )
print (w)
if temp < 10:
print("Сейчас холодно. Оденься, как танк!")
elif temp < 20:
print("Сейчас холодно. Оденься")
else:
print("Сегодня тепло. Одевайся полегче")
https://i.stack.imgur.com/yBQvk.png
Ответы (3 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
import pyowm
#owm = pyowm.OWM('MyToken', language = 'ru')
owm = pyowm.OWM('7c6d5748acf9.......17c86eMyToken')
place = input("В каком городе вы хотите узнать погоду?: ")
#mgr = owm.weather_manager()
#observation = mgr.weather_at_place(place)
observation = owm.weather_at_place(place)
#w = observation.weather
w = observation.get_weather()
#temp = w.temperature('celsius')["temp"]
temp = w.get_temperature('celsius')["temp"]
print(f"В городе {place} сейчас {temp}") #w.get_detailed_status())
#print("Температура в городе " + str(temp) )
#print (w)
if temp < 10:
print("Сейчас холодно. Оденься, как танк!")
elif temp < 20:
print("Сейчас холодно. Оденься")
else:
print("Сегодня тепло. Одевайся полегче")
Автор решения: nomnoms12
→ Ссылка
Указать язык можно через словарь конфигурации, который передаётся вторым аргументом в OWM.
Пример:
from pyowm.owm import OWM
from pyowm.utils.config import get_default_config
config_dict = get_default_config()
config_dict['language'] = 'ru'
owm = OWM('MyToken', config_dict)
place = 'Москва' # input('В каком городе вы хотите узнать погоду?: ')
mgr = owm.weather_manager()
observation = mgr.weather_at_place(place)
weather = observation.weather
temp = weather.temperature('celsius')['temp']
status = weather.detailed_status
print(f'В городе {place} сейчас {status}')
print(f'Температура в городе {temp}')
if temp < 10:
print('Сейчас холодно. Оденься, как танк!')
elif temp < 20:
print('Сейчас холодно. Оденься')
else:
print('Сегодня тепло. Одевайся полегче')
Автор решения: Митя Гирсанов
→ Ссылка
15/05/2021 - Работающий способ вывода информации на русском языке!!!
from pyowm import OWM
from pyowm.utils.config import get_default_config
place = input(" Введите город/страну: ")
config_dict = get_default_config()
config_dict['language'] = 'ru'
owm = OWM( 'a99967bc9ee70d5b4bd387902982f400', config_dict )
mgr = owm.weather_manager()
observation = mgr.weather_at_place(place)
w = observation.weather
reg = owm.city_id_registry()
list_of_locations = reg.locations_for('moscow', country='RU')
moscow = list_of_locations[0]
lat = moscow.lat # 55.75222
lon = moscow.lon # 37.615555
temp = w.temperature('celsius')["temp"]
status = w.detailed_status
print("В городе " + place + " сейчас " + str(status))
print("Температура сейчас в районе " + str(temp))
if temp < 10:
print("\n\nСейчас ппц как холодно, одевайся как танк!")
elif temp < 20:
print("\n\nСейчас холодно, одевайся потеплее.")
else:
print("\n\nТемпература норм, одевай что угодно.")
print()

