first commit
commit
459ed3850e
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,83 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import csv
|
||||||
|
import random
|
||||||
|
import requests
|
||||||
|
import os
|
||||||
|
|
||||||
|
weather_api_site="https://api.open-meteo.com/v1/forecast?latitude={lat}&longitude={long}&timezone=auto&daily=weathercode,temperature_2m_max,temperature_2m_min,sunrise,sunset&forecast_days=1"
|
||||||
|
|
||||||
|
cityfile="geonames.csv"
|
||||||
|
|
||||||
|
weather_codes = {0:"sereno",
|
||||||
|
1:"prevalentemente sereno",
|
||||||
|
2:"parzialmente nuvoloso",
|
||||||
|
3:"nuvoloso",
|
||||||
|
45:"nebbioso",
|
||||||
|
48:"nebbioso",
|
||||||
|
51:"lieve pioggerella",
|
||||||
|
53:"moderata pioggerella",
|
||||||
|
55:"intensa pioggerella",
|
||||||
|
56:"lieve pioggerella",
|
||||||
|
57:"intensa pioggerella",
|
||||||
|
61:"lievi precipitazioni",
|
||||||
|
63:"moderate precipitazioni",
|
||||||
|
65:"intense precipitazioni",
|
||||||
|
66:"lievi precipitazioni",
|
||||||
|
67:"intense precipitazioni",
|
||||||
|
71:"lievi nevicate",
|
||||||
|
73:"moderate nevicate",
|
||||||
|
75:"intense nevicate",
|
||||||
|
77:"grandinate",
|
||||||
|
80:"lievi acquazzoni",
|
||||||
|
81:"moderati acquazzoni",
|
||||||
|
82:"violenti acquazzoni",
|
||||||
|
85:"lievi nevicate",
|
||||||
|
86:"intensei nevicate" ,
|
||||||
|
95:"temporali",
|
||||||
|
96:"temporali con lievi grandinate",
|
||||||
|
99:"temporali con forti grandinate"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
def select_random_city():
|
||||||
|
with open(cityfile) as csvfile:
|
||||||
|
reader = csv.DictReader(csvfile)
|
||||||
|
line = random.choice(list(reader))
|
||||||
|
return line
|
||||||
|
|
||||||
|
|
||||||
|
def format_tts(city, country, weather_code, max_temperature, min_temperature):
|
||||||
|
weather_condition = weather_codes[weather_code]
|
||||||
|
text_to_speech = f"""Oggi a {city}, {country} il meteo sarà {weather_condition},
|
||||||
|
la temperatura minima sarà di {min_temperature} gradi e la massima di {max_temperature} gradi"""
|
||||||
|
return text_to_speech
|
||||||
|
|
||||||
|
|
||||||
|
def get_audio_file(text_to_speech):
|
||||||
|
print(text_to_speech)
|
||||||
|
# os.system("espeak-ng '{tts}' -v mb-it1 -w random_weather_forecast.wav".format(tts=text_to_speech))
|
||||||
|
os.system("spd-say -l it-IT '{tts}'".format(tts=text_to_speech))
|
||||||
|
|
||||||
|
|
||||||
|
def retrieve_forecast():
|
||||||
|
city_dict = select_random_city()
|
||||||
|
try:
|
||||||
|
api_string = weather_api_site.format(lat = city_dict['Latitude'], long = city_dict['Longitude'])
|
||||||
|
city_forecast = requests.get(api_string).json()
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
daily_forecast = city_forecast['daily']
|
||||||
|
tts = format_tts(
|
||||||
|
city_dict['Name'],
|
||||||
|
city_dict['Country'],
|
||||||
|
daily_forecast['weathercode'][0],
|
||||||
|
daily_forecast['temperature_2m_max'][0],
|
||||||
|
daily_forecast['temperature_2m_min'][0]
|
||||||
|
)
|
||||||
|
|
||||||
|
get_audio_file(tts)
|
||||||
|
|
||||||
|
retrieve_forecast()
|
Loading…
Reference in New Issue