Piękna tapeta przydatny conky to coś czego pragnie wielu. Możemy wzbogacić nasz pulpit także prognozą pogody jeśli ktoś sobie zażyczy. Wystarczy chwilę pomyśleć albo przeczytać ten artykuł :).
Aby skrypt mógł działać trzeba zainstalować dwa programy sed i lynx. Dzięki lynx pobierzemy sobie do pliku stronę z pogodą aby za pomocą seda wyciągnąć linijki np z temperaturą. Według mnie najlepszą prognozę podaje strona mojapogoda.com . Lynx to przeglądarka plików więc nie łamiemy prawa tylko zapisujemy stronę do pliku 🙂 Skrypt nie został zabezpieczony przed brakiem internetu stąd w nazwie pisze część 1 możemy później sobie dodać zamiast samych napisów obrazki np że pada deszcz albo animowany termometr.
Musimy w ustawieniach zmienić sobie gdzie będziemy zapisywać stronę i utworzyć taki plik oraz podać adres do strony na której ta pogoda wisi. Możemy zmienić też nagłówek. Skyptowi trzeba nadać prawa do uruchomienia czyli:
chmod +x skrypt.sh
można także przetestować sobie go w terminalu.
Pliki do pobrania: skrypt pogody i conky pogoda
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
#!/bin/bash ############################### ## Pobranie pogody ze strony ## ## mojapogoda.com ## ## Tomasz Pachołek ## ## elektronik666@o2.pl ## ############################### #ustawienia skryptu plik_strony="~/.pogoda_conky/strona.txt" adres_strony="http://www.mojapogoda.com/pogoda-na-swiecie/pogoda-lokalna/miasto/48X685/tomaszow-lubelski/dzis.html" naglowek="Pogoda Tomaszów" #pobranie strony do pliku lynx $adres_strony -dump > $plik_strony #wyłuskanie linijki z datą dzien=`sed -n 86p $plik_strony` #wyłuskanie linijki z temperaturą z pliku i przypisanie do zmiennej itd temp_rano=`sed -n 101p $plik_strony` temp_poludnie=`sed -n 105p $plik_strony` temp_wieczor=`sed -n 109p $plik_strony` #wyłuskanie stanu pogody - deszcz, pochmurnie, itd stan_rano=`sed -n 103p $plik_strony` stan_poludnie=`sed -n 107p $plik_strony` stan_wieczor=`sed -n 111p $plik_strony` #usunięcie spacji z początku stringu temp_rano="${temp_rano#"${temp_rano%%[![:space:]]*}"}" temp_poludnie="${temp_poludnie#"${temp_poludnie%%[![:space:]]*}"}" temp_wieczor="${temp_wieczor#"${temp_wieczor%%[![:space:]]*}"}" stan_rano="${stan_rano#"${stan_rano%%[![:space:]]*}"}" stan_poludnie="${stan_poludnie#"${stan_poludnie%%[![:space:]]*}"}" stan_wieczor="${stan_wieczor#"${stan_wieczor%%[![:space:]]*}"}" #usunięcie spacji z końcu stringu temp_rano="${temp_rano%"${temp_rano##*[![:space:]]}"}" temp_poludnie="${temp_poludnie%"${temp_poludnie##*[![:space:]]}"}" temp_wieczor="${temp_wieczor%"${temp_wieczor##*[![:space:]]}"}" stan_rano="${stan_rano%"${stan_rano##*[![:space:]]}"}" stan_poludnie="${stan_poludnie%"${stan_poludnie##*[![:space:]]}"}" stan_wieczor="${stan_wieczor%"${stan_wieczor##*[![:space:]]}"}" echo $naglowek echo $dzien echo " -------------------- " echo "Temperatura" echo "Rano: $temp_rano" echo "Południe: $temp_poludnie" echo "Wieczór: $temp_wieczor" echo " -------------------- " echo "Warunki pogodowe" echo "Rano: $stan_rano" echo "Południe: $stan_poludnie" echo "Wieczór: $stan_wieczor" echo " -------------------- " Pozostaje jeszcze dodanie tego do conky. Przykładowy config: background yes # y-szerokość x-wysokość punktu zazczęcia rysowania conky gap_x 260 gap_y 500 # maksymalna szerokość maximum_width 190 # wyrównywanie punktu rozpoczęcia alignment top_right # marinesy #border_margin 8 #border_width 8 #Sprawia że conky działa cały czas total_run_times 0 # co ile sekund będzie odświerzany update_interval 2.0 #Ustawienia okna own_window yes own_window_type normal own_window_transparent yes own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager # domyślne kolory default_color white default_shade_color black default_outline_color black # kodowanie znaków override_utf8_locale yes #podwójne buforowanie double_buffer yes # Wyświetlanie cieni draw_shades yes draw_outline no # Używać Xft use_xft yes # Domyślna czcionka Xft jeśli ten jest aktywny xftfont DejaVu Sans Mono:size=7.5 # Przeźroczystość tekstu Xft (0-1) xftalpha 0.8 TEXT ${image /home/tomek/.conky/tlo.png -p -4,-4 -s 500x1000} Pogoda ${hr 3} ${execi 60 ~/.conky_pogoda/skrypt.sh} |
witam chciałbym dodać kilka drobnostek semantycznych
skrypt jest zadeklarowany że jest napisany w bash to czemu ma końcówkę .sh (bash to nie sh to coś więcej)
“plik_strony=”~/.pogoda_conky/strona.txt” — w skrypcie powinno się podawać pełną ścieszkę
skrypt jest fajny bo jest porosty pozdrawiam
Skrypty z góry biorąc im prostsze tym lepsze 🙂
jako część pierwsza z góry oznacza że będzie poprawiana dlatego na przykład była podana niepełna ścieżka – ale: jeśli mamy kilku użytkowników odniesienie typu:
~/.pogoda_conky/strona.txt
odnosi się do urzytkownika na którego jesteśmy zalogowanie czyli jego folder /home/nazwa_urzytkownika
Końcówka .sh oznacza że jest to skrypt shelowy – dzięki temu mozemy powiązać z nimi program który je wykonuje – np. terminal xterm
Można powiedzieć że pozwala nam to od razu określić – “to jest skrypt i może być wykonywany w powłoce linuxa” nie jest to zatem do końca potrzebne, i bez tego będzie działało ale z zasady tak jest lepiej
mówisz że z zasady jest lepiej ale pytanie jakiej zasady???? (widzę że nie wiesz co ci chce przekazać)
to jeszcze raz dla opornych
skrypt shelowy
deklaracja #!/bin/sh >>>> zapis z końcówką .sh
skrypt bash
deklaracja #!/bin/bash >>> niema końcówki
pozdrawiam
ps. jak będziesz pisała zaawansowany skrypt a on nie zadziała to ~ w Ścieszce powie co masz źle (bo coś do wszystkiego jest porostu do niczego)
Tutaj się z Tobą zgodzę, dzięki za wytłumaczenie i ukazanie mojego błędu, poprawię to 🙂