|
Pogoda - skrypt (bash)
sigo - 30-06-2009 01:36
0. Changelog:l• 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.l
1. Informacje: 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: #!/bin/bash
# Autor: sigo. # Licencja: GNU GPL v3.
# Informacje. # Skrypt sprawdzający dane pogodowe na bieżący i następny dzień, wykorzystujący # serwis http://pogoda.money.pl/. # 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ę http://pogoda.money.pl/ # 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: # http://pogoda.money.pl/warszawa,miasto,178.html # 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}
4. Przykładowy wynik użycia: 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
PhockouS - 04-07-2009 10:34
Taki skrypt istnieje od bardzo dawna i nazywa się pogodynka :P
yantar - 04-07-2009 13:05
Taki skrypt istnieje od bardzo dawna i nazywa się pogodynka :P
Pogodynka nie zadziała dla każdego maista.
Wieloryb - 04-07-2009 19:01
Zmień wyświetlanie jutrzejszej maksymalnej temperatury, bo jest zła nazwa zmiennej :)
Na pewno skorzystam, dziiękuję.
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|