Automatic weather announcement
  • Hi I've made a small script to generate weather forecast for my Chilean community radio.
    It's a work in progress because I'll need to handle all the different case possible for all the times of day, but  it can be applied every where in the world. Don't forget to change the locale for the date string and the tl=es to tl=en in the google translate address if you want to generate English language reading.
    Basically, it fetch my local weather on http://espanol.weather.com, scap the needed text data, make some strings transformation and feed it to the google translate text-to-speak api to generate the mp3s

      #!/bin/bash

        date=$(LANG=es_ES date +'El tiempo par el %A %d de %B dos mil quinze en Maitencillo')
        date=$(echo "$date" | iconv --from-code=ISO-8859-15 --to-code=utf-8 | sed -e "s/í/i/g;" | sed -e "s/á/a/g;" | sed -e "s/é/e/g;"| sed -e "s/ó/o/g;" | sed -e "s/ñ/ni/g;"| sed -e "s/ú/u/g;")
        wget -q -U Mozilla "http://translate.google.com/translate_tts?tl=es&q='$date ' " -O date.mp3
            
            wget -q -U Mozilla http://espanol.weather.com/weather/today/Quintero+VS+Chile+CIXX0381:1:CI -O tiempo.html
            TIEMPO1a=$(cat tiempo.html | grep "<h3>" | tail -n 3 | head -n 1 | cut -d ">" -f 2 | sed -e "s/í/i/g;" | sed -e "s/á/a/g;" | sed -e "s/ó/o/g;")
            TIEMPO1b=$(cat tiempo.html | grep wx-narrative | head -n 1 | cut -d '>' -f 2 | cut -d '<' -f 1 | sed -e 's/ C./ Grado./g' | sed -e 's/O/Oeste /g' |sed -e 's/N/Norte /g' |sed -e 's/S/Sur /g' |sed -e 's/E/Este /g'| sed -e "s/í/i/g;" | sed -e "s/á/a/g;" | sed -e "s/ó/o/g;")
        wget -q -U Mozilla "http://translate.google.com/translate_tts?tl=es&q='$TIEMPO1a' " -O tiempo1a.mp3
        wget -q -U Mozilla "http://translate.google.com/translate_tts?tl=es&q='$TIEMPO1a, $TIEMPO1b' " -O tiempo1b.mp3
        echo $ $date
       
        TIEMPO2a=$(cat tiempo.html | grep "<h3>" | tail -n 2 | head -n 1 | cut -d ">" -f 2 | sed -e "s/í/i/g;" | sed -e "s/á/a/g;" | sed -e "s/ó/o/g;")
        TIEMPO2b=$(cat tiempo.html | grep wx-narrative | tail -n 1 | cut -d '>' -f 2 | cut -d '<' -f 1 | sed -e 's/ C./ Grado./g' | sed -e 's/O/Oeste /g' |sed -e 's/N/Norte /g' |sed -e 's/S/Sur /g' |sed -e 's/E/Este /g'| sed -e "s/í/i/g;" | sed -e "s/á/a/g;" | sed -e "s/ó/o/g;")
        wget -q -U Mozilla "http://translate.google.com/translate_tts?tl=es&q='Y para el $TIEMPO2a de maniana..' " -O tiempo2a.mp3
        wget -q -U Mozilla "http://translate.google.com/translate_tts?tl=es&q='$TIEMPO2b' " -O tiempo2b.mp3
        cat date.mp3 tiempo1b.mp3 tiempo2a.mp3 tiempo2b.mp3 > tiempo.mp3
        play tiempo.mp3
        #cp tiempo.mp3 /home/philippe/AirTimeWatchFolder/tiempo.mp3


    Post edited by Philippe Demartin at 2015-03-18 09:11:47
  • 1 Comment sorted by
  • nice work!