Pogoda - skrypt (bash)
: 30 czerwca 2009, 01:36
0. Changelog:
Napisałem skrypt sprawdzający pogodę (maksymalną i minimalną temperaturę, prędkość wiatru, ilość opadów - deszcz i śnieg, ciśnienie, godzina wschodu i zachodu słońca) dla dowolnego miasta na świecie; osobiście używam go w conky'm.
Skrypt wykorzystuje serwis http://pogoda.money.pl/, który udostępnia dane pogodowe dla ponad 200 polskich miast i wielu innych, zagranicznych miejscowości.
Manual znajduje się w samym skrypcie.
Zauważone błędy proszę zgłaszać w tym temacie lub poprzez wysłanie prywatnej wiadomości (preferuję drugą możliwość).
2. Backup:
Tymczasowo brak.
3. Skrypt:
4. Przykładowy wynik użycia:
- • 15 lipca 2009: Ze względu na wakcje, okres kilku dni przedłuża się jednak w czasie; wkrótce skończę.
• 8 lipca 2009: W ciągu kilku dni poprawię skrypt (głównie pod względem zewnętrznym) oraz zmienię używane oprogramowanie (przeglądarkę, na wgeta lub curl-a).
• 8 lipca 2009: Poprawiony bug, wskazany przez użytkownika Wieloryb.
• 30 czerwca 2009: Utworzenie pierwszej wersji skryptu.
Napisałem skrypt sprawdzający pogodę (maksymalną i minimalną temperaturę, prędkość wiatru, ilość opadów - deszcz i śnieg, ciśnienie, godzina wschodu i zachodu słońca) dla dowolnego miasta na świecie; osobiście używam go w conky'm.
Skrypt wykorzystuje serwis http://pogoda.money.pl/, który udostępnia dane pogodowe dla ponad 200 polskich miast i wielu innych, zagranicznych miejscowości.
Manual znajduje się w samym skrypcie.
Zauważone błędy proszę zgłaszać w tym temacie lub poprzez wysłanie prywatnej wiadomości (preferuję drugą możliwość).
2. Backup:
Tymczasowo brak.
3. Skrypt:
Kod: Zaznacz cały
#!/bin/bash
# Autor: sigo.
# Licencja: GNU GPL v3.
# Informacje.
# Skrypt sprawdzający dane pogodowe na bieżący i następny dzień, wykorzystujący
# serwis [url]http://pogoda.money.pl/[/url].
# Do użycia skryptu, wymagana jest przeglądarka tekstowa. Testowane były 'w3m'
# oraz 'elinks'. Inne, które powinny działać to: 'lynx', 'links' oraz 'links2'.
# Użycie.
# By móc używać skryptu, należy wskazać dla jakiego miasta będzie sprawdzana
# pogoda.
# 1. Wchodzimy na stronę [url]http://pogoda.money.pl/[/url]
# 2. Wybieramy dowolne miasto; oczywiście nie musi być to polska miejscowość.
# 3. Kopiujemy z adresu url, ciąg znaków po slashu (bez końcówki .html).
# Przykładowo, dla Warszawy, adres url wygląda tak:
# [url]http://pogoda.money.pl/warszawa,miasto,178.html[/url]
# kopiujemy ciąg znaków 'warszawa,miasto,178' i wklejamy go do zmiennej
# $city.
# 4. Po modyfikacji, zapisujemy plik.
# Przed uruchomieniem skryptu należy pamiętać o nadaniu prawa wykonywalności.
# Działanie.
# Skrypt, za pomocą tekstowej przeglądarki, (domyślnie 'w3m') odwiedza stronę
# z pogodą. Następnie pobiera potrzebne dane i zapisuje je w dwóch plikach:
# 'today' oraz 'tomorrow', które umieszcza w katalogu określonym w
# $tmpdir (domyślnie '/tmp/weather').
# Po zakończeniu działania, skrypt usuwa utworzony przez siebie katalog.
# Konfiguracja.
city="warszawa,miasto,178"
browser="w3m"
tmpdir=/tmp/weather
# Skrypt.
# Utworzenie tymczasowego katalogu.
mkdir ${tmpdir}
# Odwiedzenie strony z pogodą.
${browser} -dump "http://pogoda.money.pl/${city}.html" | grep -iA9 'dziś' | \
tail -n8 > ${tmpdir}/today
${browser} -dump "http://pogoda.money.pl/${city}.html" | grep -iB9 'jutro' | \
head -n8 > ${tmpdir}/tomorrow
# Przypisanie danych pogodowych do zmiennych.
todMax=`grep -i max ${tmpdir}/today | awk '{print $3}'`
todMin=`grep -i min ${tmpdir}/today | awk '{print $3}'`
todWind=`grep -i wiatr ${tmpdir}/today | awk '{print $3}'`
todRain=`grep -i deszcz ${tmpdir}/today | awk '{print $2" "$3}'`
todSnow=`grep -i śnieg ${tmpdir}/today | awk '{print $2" "$3}'`
todPressure=`grep -i ciśnienie ${tmpdir}/today | awk '{print $2}'`
todSunrise=`grep -i wsch ${tmpdir}/today | awk '{print $3}'`
todSunset=`grep -i zach ${tmpdir}/today | awk '{print $3}'`
tomMax=`grep -i max ${tmpdir}/tomorrow | awk '{print $3}'`
tomMin=`grep -i min ${tmpdir}/tomorrow | awk '{print $3}'`
tomWind=`grep -i wiatr ${tmpdir}/tomorrow | awk '{print $3}'`
tomRain=`grep -i deszcz ${tmpdir}/tomorrow | awk '{print $2" "$3}'`
tomSnow=`grep -i śnieg ${tmpdir}/tomorrow | awk '{print $2" "$3}'`
tomPressure=`grep -i ciśnienie ${tmpdir}/tomorrow | awk '{print $2}'`
tomSunrise=`grep -i wsch ${tmpdir}/tomorrow | awk '{print $3}'`
tomSunset=`grep -i zach ${tmpdir}/tomorrow | awk '{print $3}'`
# Wyświetlenie danych pogodowych.
echo "Dziś:"
echo "Temperatura: ${todMin}°C - ${todMax}°C"
echo "Wiatr: ${todWind}km/h"
echo "Deszcz: ${todRain}"
echo "¦nieg: ${todSnow}"
echo "Ciśnienie: ${todPressure}hPa"
echo "Wschód słońca: ${todSunrise}"
echo "Zachód słońca: ${todSunset}"
echo
echo "Jutro:"
echo "Temperatura: ${tomMin}°C - ${tomMax}°C"
echo "Wiatr: ${tomWind}km/h"
echo "Deszcz: ${tomRain}"
echo "¦nieg: ${tomSnow}"
echo "Ciśnienie: ${tomPressure}hPa"
echo "Wschód słońca: ${tomSunrise}"
echo "Zachód słońca: ${tomSunset}"
# Usunięcie utworzonego katalogu.
rm -rf ${tmpdir}
Kod: Zaznacz cały
Dziś:
Temperatura: 18°C - 27°C
Wiatr: 7km/h
Deszcz: brak
¦nieg: brak
Ciśnienie: 1016.6hPa
Wschód słońca: 04:18
Zachód słońca: 21:00
Jutro:
Temperatura: 17°C - 27°C
Wiatr: 13km/h
Deszcz: 1.3 mm
¦nieg: brak
Ciśnienie: 1018.8hPa
Wschód słońca: 04:18
Zachód słońca: 21:00