Skip to content
Extraits de code Groupes Projets
Valider d30ca128 rédigé par Loïc Wikle DUBARD's avatar Loïc Wikle DUBARD
Parcourir les fichiers

meteo prévisions dans n heures + sons compris/pascompris plus intuitifs

parent 93fd2d48
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
# CHANGELOG:
## 17 aout 2019
**Ajouts:**
- meteo : on peut demander des prévisions dans n heures
---
## 16 aout 2019
**Ajout:**
- nouveau système de TTS plus rapide par une simple requete http vers google translate
......
......@@ -22,23 +22,6 @@ def tts_custom(text, file, lang='fr-CA'): # plus rapide que gtts mais meme resu
f.write(r.content)
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 get_speech(message="entrée"):
if voix:
print('[-] %s (voix) : ' % message)
......@@ -49,12 +32,14 @@ def get_speech(message="entrée"):
r.adjust_for_ambient_noise(source, duration=2)
audio = r.listen(source, timeout=1)
print('[speech_detected]')
os.system('mpg321 sounds/compris.mp3 2>/dev/null')
entre = r.recognize_google(audio, language="fr")
understand = True
print(entre)
os.system('mpg321 sounds/compris.mp3 2>/dev/null')
except:
print("[!] impossible de comprendre votre charabia [!]")
os.system('mpg321 sounds/pascompris.mp3 2>/dev/null')
entre = ''
else:
entre = input('[-] %s (clavier) :' % message)
......@@ -215,19 +200,31 @@ def location(entre):
def meteo(entre):
'''donne la meteo de l'endroit demandé'''
dans_n_heures = None
try:
if all(word in entre for word in [' dans ', ' heure']):
dans_n_heures = int(entre.split(' dans ')[-1].split(' heure')[0])
elif all(word in entre for word in [' dans ', 'h']):
dans_n_heures = int(entre.split(' dans ')[-1].split('h')[0])
except:
pass
if "meteo de" in entre:
entre1 = entre.replace("meteo de ", "")
if "donne moi la" in entre:
entre1 = entre.replace("donne moi la ", "")
if "donne la" in entre:
entre1 = entre.replace("donne la ", "")
entre1 = entre.split('meteo de ')[-1].split(' dans')[0]
entre1 = entre1.split(" ")
villes = entre1[0]
villes = villes + entre1[1] if len(entre1) == 3 else villes
pay = entre1[1] if len(entre1) == 2 else entre1[2]
parle(usefull.meteo_de(villes, pay.upper()[:2], all_data=False))
pays = entre1[-1] if len(entre1) > 1 else ''
parle('je vais donner la météo {} de {} {}.'.format('dans %dh' % dans_n_heures if dans_n_heures is not None else 'actuelle', villes, pays), False)
try:
parle(usefull.meteo_de(villes, pays.upper()[:2], all_data=False, dans_n_heures=dans_n_heures), False)
except Exception as e:
parle(random.choice(truc_cassé) + str(e) + 'Vous avez donné le bon pays ?')
elif "meteo" in entre:
parle(usefull.meteo_de(all_data=False))
parle('je vais donner la météo {} de {} {}.'.format('dans %dh' % dans_n_heures if dans_n_heures is not None else 'actuelle', ville_actuelle, pays_actuel), False)
try:
parle(usefull.meteo_de(ville_actuelle, pays_actuel.upper()[:2], all_data=False, dans_n_heures=dans_n_heures), False)
except Exception as e:
parle(random.choice(truc_cassé) + str(e))
def dire_un_truc_en_mode_random(verbosity):
......@@ -261,7 +258,6 @@ def tests(entre):
# meteo
if "meteo" in entre:
parle('Une petite minute.')
meteo(entre)
# verrouillage jarvis
......@@ -283,7 +279,7 @@ def tests(entre):
# répond à merci si on lui a demandé quelquechose avant
if ("merci" in entre or "Merci" in entre) and comprispreced == 1 and ("et vous" not in entre and "et toi" not in entre):
merci = 1
parle(random.choice(("A votre service.", "De rien", "Il n'y a pas de quoi !", 't\'inquiètes, je suis payé pour ça')))
parle(random.choice(("A votre service.", "De rien", "Il n'y a pas de quoi !", 't\'inquiètes, je suis paysé pour ça')))
# fait une recherche sur wikipédia
if "cherche" in entre and "sur wiki" in entre:
......
Aucun aperçu pour ce type de fichier
......@@ -30,4 +30,15 @@ Bonjour !
|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.
|je vais donner la météo de meteode saint-leu
|Houston, on a un problème !
|je vais donner la météo de saint-leu .
|Houston, on a un problème !Vous avez donné le bon pays ?
|je vais donner la météo de saint-leu reunion.
|je vais donner la météo de saint-leu heures.
|Ousp j'ai glissé chef !Vous avez donné le bon pays ?
|je vais donner la météo 24 de saint-leu reunion.
|je vais donner la météo actuelle de saint-leu reunion.
|Ousp j'ai glissé chef !name 'pays' is not defined
|Houston, on a un problème !'int' object is not callable
|
\ No newline at end of file
......@@ -55,6 +55,8 @@ pygame.mixer.init(frequency=24000)
# engine.setProperty('voice', voice.id)
url = "https://translate.google.com/translate_tts"
topics = []
ville_actuelle = 'petite-ile'
pays_actuel = 'reunion'
r = sr.Recognizer()
r.dynamic_energy_threshold = True
r.pause_threshold = 0.5
......
Fichier ajouté
Fichier ajouté
Fichier ajouté
Fichier ajouté
Fichier ajouté
Fichier ajouté
Fichier ajouté
Fichier ajouté
Fichier ajouté
Fichier ajouté
Fichier ajouté
Fichier ajouté
Aucun aperçu pour ce type de fichier
......@@ -20,12 +20,14 @@ def printv(var):
return str(var_name(var).replace("_", " ") + ' : ' + var)
def meteo_de(villes="petite-ile", pay="RE", all_data=True):
def meteo_de(villes="petite-ile", pay="RE", all_data=True, dans_n_heures=None):
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
if dans_n_heures is not None:
return forecast(villes, pay, all_data, dans_n_heures=dans_n_heures)
pay = pay.upper()[:2]
api = "c23d0a0ffe081307fb6fbba06125aef3"
......@@ -80,9 +82,9 @@ def meteo_de(villes="petite-ile", pay="RE", all_data=True):
result = ", ".join([printv(i) for i in liste])
if a1:
result += printv(volume_pluie_des_3_dernière_heures)
result += ' ' + printv(volume_pluie_des_3_dernière_heures)
if a2:
result += printv(volume_neige_des_3_dernière_heures)
result += ' ' + printv(volume_neige_des_3_dernière_heures)
return result + '.'
......@@ -150,15 +152,15 @@ def forecast(villes="petite-ile", pay="RE", all_data=True, dans_n_heures=None):
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)
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)
result_dans_n_heure += ' ' + printv(volume_pluie_des_3_dernière_heures)
if a2:
result += printv(volume_neige_des_3_dernière_heures)
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_dans_n_heure += ' ' + printv(volume_neige_des_3_dernière_heures)
result += '\n\n'
if dans_n_heures != None:
if dans_n_heures is not None:
return result_dans_n_heure
return result
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter