Script d’annonce de la météo et de l’heure en python

Projet: Faire un script qui annonce la météo que l’on peut mettre dans la crontab.

1.Installer les paquets nécessaires:

sudo apt-get install sox python-bs4 libttspico-utils python-lxml

2.Créer le script:

sudo mkdir /etc/rfr
sudo nano /etc/rfr/meteo.py
sudo chmod 755 /etc/rfr/meteo.py

Ajouter:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from __future__ import unicode_literals

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

import os
import urllib
from bs4 import BeautifulSoup
import cStringIO
StringIO = cStringIO
from datetime import datetime


#********Variables à adapter**************

metar="LFST"
start_wav = "" #fichier wav de début
start_mess = "o o o o o o o o o o o o Relais France Radio Météo." #message en text de début
end_wav = "" #fichier wav de fin
alsadevice = "dmix:CARD=GWloop,DEV=0"
dire_time = datetime.now().strftime('%H:%M')

#****************************************

def find_between( s, first, last ):
    try:
        start = s.index( first ) + len( first )
        end = s.index( last, start )
        return s[(start - len(first)):end]
    except ValueError:
        return ""
		
def play_line_pico(text):
	text = text.replace('km/h', 'kilomètre par heure')
	text = text.replace(',', 'et')
	text = text.replace('/', ' ')
	text = text.replace('-', ' ')
	if dire_time != "":
		text = str(dire_time + '\n\n' + text)
	if start_mess != "":
		text = str(start_mess + '\n\n' + text)
	os.system("pico2wave -l fr-FR -w /dev/shm/test.wav '" + text + "';")
        if os.path.isfile(start_wav):
                os.system("play "+start_wav)
	os.system("sox /dev/shm/test.wav -G -b 16 -e signed-integer -c 1 -r 48k -t raw - gain +2 dither | aplay -B 500000 -q -N -f S16_LE -r 48000 -c 1 -D "+alsadevice+" - ")
	#os.system("aplay --device="+alsadevice+" /dev/shm/test.wav ")
	if os.path.isfile(end_wav):
		os.system("play "+end_wav)

url = "http://fr.allmetsat.com/metar-taf/france.php?icao="+metar

data = urllib.urlencode({'vent' : 'kmh',
						'tempe'  : 'C',
						'nuage'  : 'm',
						'press'  : 'hpa',
						'visi'  : 'km',
                         'preci'  : 'mm',
						 'alti'  : 'm'})
						 
html = urllib.urlopen(url, data).read()
html = html.replace('<b>', ' ')
html = html.replace('</b>', ' ')
html = html.replace('</div>', '.\n</div>')

soup = BeautifulSoup(html, "lxml")
thediv = soup.find("div", {"class": "c1b"})

meteostring = thediv.get_text()



meteostring = find_between( meteostring, "Vent", "Changer" ).encode('utf8')
print(meteostring)
play_line_pico(meteostring)

N’oubliez pas le :

chmod 755 /etc/rfr/meteo.py

3.Configurer le code

Il y a des variables que vous pouvez/devez modifier:

metar= »LFST »

=>voir sur le site http://fr.allmetsat.com/metar-taf/france.php?icao=LFST
start_wav = « /etc/rfr/meteo.wav »

=>fichier wav de début
start_mess = « o o o o o o o o o o o o Relais France Radio Météo. »

=>message en text de début
end_wav = « /etc/rfr/cw_beep.wav »

=>fichier wav de fin
alsadevice = « plughw:0,0 »

=>Voir aplay -L

4.Ajouter le dans la crontable d’un utilisateur:

crontab -e

Ajouter:

Toutes les 10 minutes

*/10 * * * * /etc/rfr/meteo.py &

Toutes les 30 minutes

*/30 * * * * /etc/rfr/meteo.py &

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.