Strona Krysi i Rafała Fitt

Program do wysyłania SMS-ami 3-dniowej prognozy pogody dla dowolnego obszaru Europy

Skrypt przesyła SMS-ami morskie prognozy pogody dla obszarów Europy. W tej wersji skryptu wysyłane są 3 SMS-y z prognozami na kolejne dni.

Wymagania:
  1. moje skrypty
  2. program wget
  3. program awk
  4. program sendmail (jeżeli inny, to należy zmienić skrypt go)
Stąd można ściągnąć poniższe skrypty. Po rozpakowaniu archiwum, należy oznaczyć skrypt go jako wykonywalny (czyli wykonać chmod u+x go). Należy pamiętać o zmianie numerów telefonów w skrypcie go, skrypt wysyła tekst prognozy na adres emailowy bramki Plusa. Jeżeli posiadasz telefon w innej sieci, to musisz zmienić skrypt go. Proponuję uruchamiać skrypt go raz dziennie, np. przy pomocy demona cron (patrz plik /etc/crontab).
Prognozy są pobierane z http://wap.weatheronline.co.uk. Przy pomocy tego WAP emulatora można sobie ustalić, który obszar nas interesuje i odpowiednio zmodyfikować w skrypcie go adres strony pobieranej przez wget.

Wygląd przykładowego SMS-a z prognozą na 1 dzień:
FCST Westteil Mar 23 TEMP:-4C/-1C morning SW 4B noon N 3-4B overnight N 3-4B a.m. various clouds p.m. mostly sunny END

Zawartość pliku go:

#!/bin/sh
export TERM=xterm
export LYNX_TEMP_SPACE=/tmp
cd /gdziesnadysku/meteo

wget -O temp.txt -o /dev/null "http://wap.weatheronline.co.uk/wap/sail?L=en50011900"

echo From: s@a.pl > sms
echo To: +4860xxxxxxx@text.plusgsm.pl >> sms
awk -f a.awk temp.txt >> sms
echo >> sms
echo END >> sms

/usr/sbin/sendmail -t < sms

# ---------------- jutro

wget -O temp.txt -o /dev/null "http://wap.weatheronline.co.uk/wap/sail?L=en50011901"

echo From: s@a.pl > sms
echo To: +4860xxxxxxx@text.plusgsm.pl >> sms
awk -f a.awk temp.txt >> sms
echo >> sms
echo END >> sms

sleep 3s

/usr/sbin/sendmail -t < sms

# -------------- pojutrze

wget -O temp.txt -o /dev/null "http://wap.weatheronline.co.uk/wap/sail?L=en50011902"

echo From: s@a.pl > sms
echo To: +4860xxxxxxx@text.plusgsm.pl >> sms
awk -f a.awk temp.txt >> sms
echo >> sms
echo END >> sms

sleep 3s

/usr/sbin/sendmail -t < sms

rm -f sms
rm -f temp.txt

Zawartość pliku a.awk:

BEGIN { RS=""; ORS=""; OFS=""; }
{
    # usuwamy zbedny koniec
    gsub(/<a href=.*$/,"");

    # usuwamy wszystkie tagi
    gsub(/<[^>]*>/, " ");
    gsub(/ /, " ");

    # znaczek stopnia
    gsub(/°/, "");

    gsub(/Forecast/, "FCST");

    # usuwamy dzien tygodnia
    gsub(/[A-Za-z]*day/, "");

    # skracamy Bft
    gsub(/ *\(Bft\)/, "B");

    # usuwamy temp w F i zbedne opisy
    gsub(/Min: /,"TEMP:");
    gsub(/ \/ .*F Max: /, "/");
    gsub(/ \/ .*F /, " ");

    # ogolne skracanie wiadomosci
    gsub(/  +/, " ");
    gsub(/\r/, "");
    gsub(/\n/, "");
    gsub(/  +/, " ");
    gsub(/^ /, "");
    gsub(/ $/, "");

    if ($0=="")
        next;

    print "Subject: " $0 "\n";

    exit;
}
© Rafał Fitt. Jeżeli kopiujesz, to przynajmniej napisz kto to wymyślił i gdzie to znalazłeś ;-)
© Krystyna & Rafał Fitt