diff --git a/CHANGELOG.md b/CHANGELOG.md index 05dce84603451083f5f71f6e5b5f0ee039e82118..172188b36efa7c479ff314043832a43e1f36e6f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,7 +17,7 @@ - jouer du pipo - envoie balader les gens qui lui font des compliments d'amour -**Bug fixes: +**Bug fixes:** - quand la voix est activée, ne répondre je n'ai pas compris que si la ou la requete précédente comprends le nom de l'ia --- diff --git a/Jarvis.py b/Jarvis.py index 0d1389b2869139ed96f35c22557f3493b5d7ffaf..d7474e6b77cb0be644a3de0da251175edc7361a9 100755 --- a/Jarvis.py +++ b/Jarvis.py @@ -100,60 +100,6 @@ def parle(texte, save=True, lang='fr-CA'): pygame.mixer.music.set_endevent() -def meteo_de(villes="petite-ile", pay="RE"): - global compris, ville, pays, lattitude, longitude, température,\ - température_minimum, température_max, humidité, pression,\ - vitesse_du_vent, direction_du_vent, pourcentage_de_nuages, \ - description, volume_pluie_des_3_dernière_heures, \ - volume_neige_des_3_dernière_heures - - api = "c23d0a0ffe081307fb6fbba06125aef3" - adresseid = "http://api.openweathermap.org/data/2.5/weather?q=" - requette = requests.get("{}{},{}&appid={}".format(adresseid, "%20".join(villes.split(" ")), pay, api)).json() - - try: - vitesse_du_vent = str(requette["wind"]["speed"]) + " mètres par secondes" - température = str(int(requette["main"]["temp"]) - 273) + "°" - température_max = "%d °Celsius" % (int(requette["main"]["temp_max"]) - 273) - humidité = str(requette["main"]["humidity"]) + "%" - température_minimum = "%d °Celsius" % (int(requette["main"]["temp_min"] - 273)) - direction_du_vent = str(requette["wind"]["deg"]) + "°" - longitude = str(requette["coord"]["lon"]) - lattitude = str(requette["coord"]["lat"]) - pression = str(requette["main"]["pressure"]) + "hPa" - pays = str(requette["sys"]["country"]) - ville = str(requette["name"]) - pourcentage_de_nuages = str(requette["clouds"]["all"]) + "%" - description = str(requette["weather"][0]["description"]) - except: - parle(random.choice(truc_cassé)) - return None - - try: - volume_pluie_des_3_dernière_heures = str(requette["rain"]["3h"]) - a1 = True - except: - a1 = False - try: - volume_neige_des_3_dernière_heures = str(requette["snow"]["3h"]) - a2 = True - except: - a2 = False - liste = [pays, - ville, - # lattitude, longitude, - température, - # température_minimum, température_max, - humidité, pression, vitesse_du_vent, - # direction_du_vent, - pourcentage_de_nuages, description] - parle(", ".join([printv(i) for i in liste]), False) - if a1: - parle(printv(volume_pluie_des_3_dernière_heures), False) - if a2: - parle(printv(volume_neige_des_3_dernière_heures), False) - - def deverouillage(entre): global jarvis, compris if jarvis or (mdp in entre and ("pass" in entre or "deverouillage" in entre)): @@ -279,9 +225,9 @@ def meteo(entre): villes = entre1[0] villes = villes + entre1[1] if len(entre1) == 3 else villes pay = entre1[1] if len(entre1) == 2 else entre1[2] - meteo_de(villes, pay.upper()[:2]) + parle(usefull.meteo_de(villes, pay.upper()[:2], all_data=False)) elif "meteo" in entre: - meteo_de() + parle(usefull.meteo_de(all_data=False)) def dire_un_truc_en_mode_random(verbosity): diff --git a/README.md b/README.md index 8ff3c3baef5df11f0b0ff055456ad44bbbe7f80c..1b54181e4faa7e34ae8265e3552b23ef76bb1d99 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ Mon Jarvis pour windows et linux (peut-être un truc sur android aussi :°°) ## ALSA lib pcm.c:7843:(snd_pcm_recover) underrun occurred Dans /etc/pulse/daemon.conf décommenter et modifier ces lignes : + > * `default-fragments = 5` > * `default-fragment-size-msec = 2` diff --git a/__pycache__/myimports.cpython-37.pyc b/__pycache__/myimports.cpython-37.pyc index 2d11510bc55cdd6488361ac531e913d766618e09..543d09bb9213e4a6cb518d49c1be418705aa97c1 100644 Binary files a/__pycache__/myimports.cpython-37.pyc and b/__pycache__/myimports.cpython-37.pyc differ diff --git a/clip.mp3 b/clip.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..8ef1cebcbea496abe75453a24b3e2a9f46f730e4 Binary files /dev/null and b/clip.mp3 differ diff --git a/clip2.mp3 b/clip2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..daf833cdc51c5c4e7d79144d2cdd49d10a23e58a Binary files /dev/null and b/clip2.mp3 differ diff --git a/database.txt b/database.txt index 0f075d1dd5b1d8ea0ecc4b561f5be7d60e6d78c6..e084b91d805f041f176a7a8fbd59d49291e2b148 100644 --- a/database.txt +++ b/database.txt @@ -26,4 +26,8 @@ Bonjour ! |Je vais très bien et vous ? |J'avoue que je me suis déjà senti en meilleur forme. et vous ? |je vais chercher : paris paris +|pays : RE, ville : Petite-Ile, lattitude : -21.35, longitude : 55.57, température : 22°, température minimum : 17 °Celsius, température max : 25 °Celsius, humidité : 57%, pression : 1020hPa, vitesse du vent : 8.7 mètres par secondes, direction du vent : 130°, pourcentage de nuages : 0%, description : clear sky +|pays : RE, ville : Petite-Ile, lattitude : -21.35, longitude : 55.57, température : 22°, température minimum : 17 °Celsius, température max : 25 °Celsius, humidité : 57%, pression : 1020hPa, vitesse du vent : 8.7 mètres par secondes, direction du vent : 130°, pourcentage de nuages : 0%, description : clear sky. +|pays : RE, ville : Petite-Ile, lattitude : -21.35, longitude : 55.57, température : 22°, humidité : 57%, pression : 1020hPa, vitesse du vent : 8.7 m/s, pourcentage de nuages : 0%, description : clear sky. +|pays : RE, ville : Petite-Ile, température : 22°, humidité : 57%, pression : 1020hPa, vitesse du vent : 8.7 m/s, pourcentage de nuages : 0%, description : clear sky. | \ No newline at end of file diff --git a/myimports.py b/myimports.py index bc15bc15a5c1a421a504de8ba13f0bdc7a1bb519..78781802eaa1a82f5fec77ac25b069db4c734849 100644 --- a/myimports.py +++ b/myimports.py @@ -57,7 +57,7 @@ url = "https://translate.google.com/translate_tts" topics = [] r = sr.Recognizer() r.dynamic_energy_threshold = True -r.pause_threshold = 0.3 +r.pause_threshold = 0.5 mic = sr.Microphone() jarvis = True # défini si jarvis commence vérouillé ou pas mdp = "oracle02" # défini le mdp de déverouillage de jarvis diff --git a/saved_voice/28.mp3 b/saved_voice/28.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/saved_voice/29.mp3 b/saved_voice/29.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/saved_voice/30.mp3 b/saved_voice/30.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/saved_voice/31.mp3 b/saved_voice/31.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..41ddcb36f6f20933f6ef0f5ca1f9084ede988a3d Binary files /dev/null and b/saved_voice/31.mp3 differ diff --git a/usefull/__init__.py b/usefull/__init__.py index 8b556a262c2123d20593f95a80df0cf9edad9599..3a08a638c3c9e60a1ebcc920ca0014963844f990 100644 --- a/usefull/__init__.py +++ b/usefull/__init__.py @@ -1,3 +1,4 @@ # __init__.py -from .wiki import * \ No newline at end of file +from .wiki import * +from .meteo import * \ No newline at end of file diff --git a/usefull/__pycache__/__init__.cpython-37.pyc b/usefull/__pycache__/__init__.cpython-37.pyc index 251920414995ef2edc92307148ed559033c123c4..8928d63a8a3341374d48bcba1d2fef0bf75221bd 100644 Binary files a/usefull/__pycache__/__init__.cpython-37.pyc and b/usefull/__pycache__/__init__.cpython-37.pyc differ diff --git a/usefull/__pycache__/meteo.cpython-37.pyc b/usefull/__pycache__/meteo.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8f2ca460dd58c22c31b22d47a98cdab530b15c25 Binary files /dev/null and b/usefull/__pycache__/meteo.cpython-37.pyc differ diff --git a/usefull/meteo.py b/usefull/meteo.py new file mode 100755 index 0000000000000000000000000000000000000000..fb95561980b85bcfb9438e5512f5d8cd9cba9b6b --- /dev/null +++ b/usefull/meteo.py @@ -0,0 +1,172 @@ +#!/usr/bin/python3 +# donne la meteo +import requests + + +def var_name(var): + """return the name of the variable var""" + for name, value in globals().items(): + if value is var and name != "i": + return name + return '?????' + + +def printv(var): + ''' + return the name of the variable var associated with the value of the var itself + exemple: + toto_is_toto = 'tata';printv(toto) returns the string : 'toto is toto : tata' + ''' + return str(var_name(var).replace("_", " ") + ' : ' + var) + + +def meteo_de(villes="petite-ile", pay="RE", all_data=True): + global compris, ville, pays, lattitude, longitude, température,\ + température_minimum, température_max, humidité, pression,\ + vitesse_du_vent, direction_du_vent, nuages, \ + description, volume_pluie_des_3_dernière_heures, \ + volume_neige_des_3_dernière_heures + + pay = pay.upper()[:2] + api = "c23d0a0ffe081307fb6fbba06125aef3" + adresseid = "http://api.openweathermap.org/data/2.5/weather?q=" + requette = requests.get("{}{},{}&appid={}".format(adresseid, "%20".join(villes.split(" ")), pay, api)).json() + try: + vitesse_du_vent = str(requette["wind"]["speed"]) + " m/s" + température = str(int(requette["main"]["temp"]) - 273) + "°" + température_max = "%d °C" % (int(requette["main"]["temp_max"]) - 273) + humidité = str(requette["main"]["humidity"]) + "%" + température_minimum = "%d °C" % (int(requette["main"]["temp_min"] - 273)) + direction_du_vent = str(requette["wind"]["deg"]) + "°" + longitude = str(requette["coord"]["lon"]) + lattitude = str(requette["coord"]["lat"]) + pression = str(requette["main"]["pressure"]) + "hPa" + pays = str(requette["sys"]["country"]) + ville = str(requette["name"]) + nuages = str(requette["clouds"]["all"]) + "%" + description = str(requette["weather"][0]["description"]) + except Exception as e: + return e + + try: + volume_pluie_des_3_dernière_heures = str(requette["rain"]["3h"]) + a1 = True + except: + a1 = False + try: + volume_neige_des_3_dernière_heures = str(requette["snow"]["3h"]) + a2 = True + except: + a2 = False + + if all_data: + liste = [pays, + ville, + lattitude, longitude, + température, + température_minimum, température_max, + humidité, pression, vitesse_du_vent, + direction_du_vent, + nuages, description] + else: + liste = [pays, + ville, + # lattitude, longitude, + température, + # température_minimum, température_max, + humidité, pression, vitesse_du_vent, + # direction_du_vent, + nuages, description] + + result = ", ".join([printv(i) for i in liste]) + if a1: + result += printv(volume_pluie_des_3_dernière_heures) + if a2: + result += printv(volume_neige_des_3_dernière_heures) + return result + '.' + + +def forecast(villes="petite-ile", pay="RE", all_data=True, dans_n_heures=None): + global compris, ville, pays, lattitude, longitude, température,\ + temp_min, temp_max, humidité, pression,\ + vent, direction, nuages, \ + description, volume_pluie_des_3_dernière_heures, \ + volume_neige_des_3_dernière_heures, date + + pay = pay.upper()[:2] + api = "c23d0a0ffe081307fb6fbba06125aef3" + adresseid = "http://api.openweathermap.org/data/2.5/forecast?q=" + requette = requests.get("{}{},{}&appid={}".format(adresseid, "%20".join(villes.split(" ")), pay, api)).json() + result = '' + result_dans_n_heure = '' + try: + pays = str(requette["city"]["country"]) + ville = str(requette['city']["name"]) + longitude = str(requette['city']["coord"]["lon"]) + lattitude = str(requette['city']["coord"]["lat"]) + except Exception as e: + return e + + for i in range(len(requette['list'])): + try: + vent = str(requette['list'][i]["wind"]["speed"]) + " m/s" + température = str(int(requette['list'][i]['main']["temp"]) - 273) + "°" + temp_max = "%d °C" % (int(requette['list'][i]["main"]["temp_max"]) - 273) + humidité = str(requette['list'][i]["main"]["humidity"]) + "%" + temp_min = "%d °C" % (int(requette['list'][i]["main"]["temp_min"] - 273)) + direction = str(requette['list'][i]["wind"]["deg"]) + "°" + pression = str(requette['list'][i]["main"]["pressure"]) + "hPa" + nuages = str(requette['list'][i]["clouds"]["all"]) + "%" + description = str(requette['list'][i]["weather"][0]["description"]) + date = str(requette['list'][i]["dt_txt"]) + except Exception as e: + return e + + try: + volume_pluie_des_3_dernière_heures = str(requette['list'][i]["rain"]["3h"]) + a1 = True + except: + a1 = False + try: + volume_neige_des_3_dernière_heures = str(requette['list'][i]["snow"]["3h"]) + a2 = True + except: + a2 = False + + if all_data: + liste = [date, température, + temp_min, temp_max, + humidité, pression, vent, + direction, + nuages, description] + else: + liste = [date, température, + # temp_min, temp_max, + humidité, pression, vent, + # direction, + nuages, description] + + result += ", ".join([printv(i) for i in liste]) + if dans_n_heures // 3 == i: + result_dans_n_heure = ", ".join([printv(i) for i in liste]) + if a1: + result += printv(volume_pluie_des_3_dernière_heures) + if dans_n_heures // 3 == i: + result_dans_n_heure += printv(volume_pluie_des_3_dernière_heures) + if a2: + result += printv(volume_neige_des_3_dernière_heures) + if dans_n_heures // 3 == i: + result_dans_n_heure += printv(volume_neige_des_3_dernière_heures) + result += '\n\n' + if dans_n_heures != None: + return result_dans_n_heure + return result + + +if __name__ == '__main__': + import sys + if len(sys.argv) == 3: + print(meteo_de(sys.argv[1], sys.argv[2])) + else: + print(meteo_de()) + print(forecast(dans_n_heures=24))