conky i rozklad jazdy

Ogólne pytania dotyczące systemu
cichy
Posty: 51
Rejestracja: 04 marca 2008, 23:27
Lokalizacja: Szczecin

conky i rozklad jazdy

Post autor: cichy »

Mam pytanie:
Czy da sie zrobic taki skrypt i uruchomic go w conky, by wykazywal rozklad jazdy danej lini autobusowej? np. najblizsze 3 godziny odjazdu?
cos w stylu MicroBus'a na telefony komorkowe

Ktos juz probowal czegos takiego?
Awatar użytkownika
grze_S
Beginner
Posty: 133
Rejestracja: 02 grudnia 2007, 12:30

Post autor: grze_S »

Musisz napisać sobie skrypt (ew. program) który będzie pobierał (albo przechowywał i wyświetlał odpowiednie informacje) a potem w conky uruchomić go przez funkcję exec ${exec nazwa_polecenia}
cichy
Posty: 51
Rejestracja: 04 marca 2008, 23:27
Lokalizacja: Szczecin

Post autor: cichy »

No dobra. Teraz pytanie "zielonego"- jak napisac taki programik? :) moze ktos zna jakas strone na ktorej jest wszystko jasno powiedziane?
Jesli chodzi o mnie to by wystarczyl programik, ktory by powieral wpisane w nim dane, i wyswietlal ich fragment, przy zaleznosci "jezeli X to Y ....". Chodzi mi o cos prostego;]
Awatar użytkownika
grze_S
Beginner
Posty: 133
Rejestracja: 02 grudnia 2007, 12:30

Post autor: grze_S »

No cóż z czymś gotowym to chyba ciężko by było... Będziesz musiał chyba poczytać o programowaniu w bashu i napisać samemu...
skynet
Beginner
Posty: 224
Rejestracja: 06 stycznia 2008, 16:32

Post autor: skynet »

jedyny problem to:
Rozkłady jazdy z uwzględnieniem zmian do 11.04.2008.
Rozkłady jazdy w dniach 12-13.04.2008.
Rozkłady jazdy z uwzględnieniem zmian od 14.04.2008.
Zmiany w rozkładach jazdy
Oznaczenia tras używane w rozkładach jazdy
Rozkład jazdy SKM z uwzględnieniem zmian od 1.04.2008.
Elektroniczny Rozkład Jazdy Pociągów
Metro
trzeba by wymyśleć jakiś skrypt który by wybierał najbardzej aktualny rozkład hmm...
cichy
Posty: 51
Rejestracja: 04 marca 2008, 23:27
Lokalizacja: Szczecin

Post autor: cichy »

mysle ze ten skrypt na najbardziej aktualny rozklad niekoniecznie bylby potrzebny. Moznaby to sprawdzac recznie przciez. Rozklady az tak szybko sie nie zmieniaja :)
Wystarczy skrypt, ktory wyswietla 3 najblizsze informacje z danego zbioru. -ktos umie to zrobic?
olka
Posty: 65
Rejestracja: 20 października 2007, 12:52
Lokalizacja: Gdynia

Post autor: olka »

W ogólności nie jest to jakoś specjalne trudne - wszystko zależy jednak od tego, jak zamieszczone są informacje na stronie z rozkładem: jeśli np wyświetlenie rozkładu wymaga interakcji z użytkownikiem nie opartej na metodzie GET to może być duży problem.

Proponuję zapoznać się z dostępnymi w necie skryptami do wyświetlania informacji np o pogodzie czy newsów rss (minimum ostatnia z tych funkcji jest już wkompilowana w conky, ale skrypty jeszcze funkcjonują)
skynet
Beginner
Posty: 224
Rejestracja: 06 stycznia 2008, 16:32

Post autor: skynet »

najpierw trzeba zainstalować w3m

szukasz linii np. tutaj http://www.ztm.waw.pl/baza/20080416/LINIE.HTM
później wybierasz w którą stronę i przystanek, kopiujesz link np. taki http://www.ztm.waw.pl/baza/20080416/7/103001.HTM

pomijając to że rozkład zmienia się co jakieś kilka dni to masz :

Kod: Zaznacz cały

w3m -dump [url]http://www.ztm.waw.pl/baza/20080416/7/103001.HTM[/url] | grep '| '
co daje efekt

Kod: Zaznacz cały

skynet@debian:~$ w3m -dump [url]http://www.ztm.waw.pl/baza/20080416/7/103001.HTM[/url] | grep '| '
|  4 | 50                           |  4 | 50                 |
|  5 | 10   30   50                 |  5 | 10   30   50       |
|  6 | 10  [31]  47   59            |  6 |[10]  30   50       |
|  7 | 11   23   35   47   59       |  7 | 10   30   48       |
|  8 | 11   25  [40]  55            |  8 | 03  [18]  33   48  |
|  9 | 02w  10   25   40   55       |  9 | 03   18   33   48  |
| 10 | 10   25   40  [55]           | 10 | 03  [18]  33   48  |
| 11 | 10   25   40   55            | 11 | 03   18   33   48  |
| 12 | 10   25   40   55            | 12 | 03  [18]  33   48  |
| 13 |[10]  25   40   55            | 13 | 03   18   33   48  |
| 14 | 10   23   35   47   59       | 14 | 03  [18]  33   48  |
| 15 | 11  [23]  35   47   59       | 15 | 03   18   33   48  |
| 16 | 11   23   35   47   59       | 16 | 03  [18]  33   48  |
| 17 | 11  [25]  40   55            | 17 | 03   18   33   48  |
| 18 | 10   16m  25   40   55       | 18 | 03  [18]  33   48  |
| 19 | 10   25  [40]  55            | 19 | 03   18   33   50  |
| 20 | 10   30   37m  50            | 20 | 10  [30]  50       |
| 21 | 10   30  [50]                | 21 | 00w  10   30   50  |
| 22 | 10   31   52                 | 22 | 10  [31]  52       |
| 23 | 12m                          | 23 | 12m                |
tyle że równe

A jeżeli zamienimy na

Kod: Zaznacz cały

skynet@debian:~$ w3m -dump [url]http://www.ztm.waw.pl/baza/20080416/7/103001.HTM[/url] | grep '| 15 |'
to otrzymamy

Kod: Zaznacz cały

| 15 | 11  [23]  35   47   59       | 15 | 03   18   33   48  |
to będzie tylko o 15

pisząc mały skrypt

Kod: Zaznacz cały

#!/bin/sh
a=$(w3m -dump [url]http://www.ztm.waw.pl/baza/20080416/7/103001.HTM[/url] | c= grep "| $1 |")
#echo $a

for x in "${a#*| $1 |}"
do b1="${x%.*}"
done
#echo $a
#echo $b
c1=${b1%\|*|*|}

for x in "${a#|*|*|*|}"
do b2="${x%.*}"
done
c2=${b2%\|}

#echo $c
echo "tramwaj linii 7 w dni powszednie będzie o godzinie $1" 'minut' $c1
echo "tramwaj linii 7 w święta i soboty będzie o godzinie $1" 'minut' $c2
otrzymujemy

Kod: Zaznacz cały

skynet@debian:~/Desktop$ sh 1.sh 11
tramwaj linii 7 w dni powszednie będzie o godzinie 11 minut 10 25 40 55
tramwaj linii 7 w święta i soboty będzie o godzinie 11 minut 03 18 33 48
dzięki

Kod: Zaznacz cały

echo `date +'%d.%m.%Y'`
echo `date +'%H.%M.%S'`
mamy

Kod: Zaznacz cały

14.04.2008
17.58.04
teraz można by jakoś użyć funkcji grep poprzez w3m żeby sam szukał linii i aktualny rozkład
i poprzez souce_html_code

Kod: Zaznacz cały

w3m -dump_source [url]http://www.ztm.waw.pl/rozklady.php[/url] | grep -i 'href="http://www.ztm.waw.pl' | grep -v -i 'komunikaty' | grep -v -i 'mdd' | grep -v -i 'SKM'
otrzymujemy

Kod: Zaznacz cały

skynet@debian:~$ w3m -dump_source [url]http://www.ztm.waw.pl/rozklady.php[/url] | grep -i 'href="http://www.ztm.waw.pl' | grep -v -i 'komunikaty' | grep -v -i 'mdd' | grep -v -i 'SKM'
[url=http://www.ztm.waw.pl/baza/20080414/LINIE.HTM]Rozk�ady jazdy z uwzgl�dnieniem zmian do 15.04.2008.[/url]
[url=http://www.ztm.waw.pl/baza/20080416/LINIE.HTM]Rozk�ady jazdy z uwzgl�dnieniem zmian od 16.04.2008.[/url]
teraz trzeba napisać skrypt który odróżni "zmian do" i "zmian od" oraz odróżni aktualną datę hmm...

wersja finalna

Kod: Zaznacz cały

#!/bin/sh
#-----------------------------
c=`w3m -dump_source [url]http://www.ztm.waw.pl/rozklady.php[/url] | grep 'href="http://www.ztm.waw.pl' | grep -v -i 'komunikaty' | grep -v -i 'mdd' | grep -v -i 'SKM'`
#echo $d
#-----------------------------
e1=`echo "$c" | grep ' do '`
e2=`echo "$c" | grep ' od '`
#-----------------------------
# echo $e1
# echo ''
# echo $e2
#-----------------------------
for x in "${e1#*href=?}"
do f1_a="${x%? class*}"
done
#------------
for x in "${e1#*do }"
do f2_a="${x%.<*}"
done
#-----------------------------
for x in "${e1#*href=?}"
do f1_b="${x%? class*}"
done
#------------
for x in "${e1#*do }"
do f2_b="${x%.<*}"
done
#-----------------------------
#echo $f1_a
#echo ''
#------------
#echo $f2_a
#echo ''
#-----------------------------
for x in "${f2_a}"
do date_1_a_d="${x%.*.*}"
done
#------
for x in "${f2_a#*.}"
do date_1_a_m="${x%.*}"
done
#------
for x in "${f2_a#*.*.}"
do date_1_a_y="${x%}"
done
#-----------------------------
for x in "${f2_a}"
do date_1_b_d="${x%.*.*}"
done
#------
for x in "${f2_a#*.}"
do date_1_b_m="${x%.*}"
done
#------
for x in "${f2_a#*.*.}"
do date_1_b_y="${x%}"
done
#-----------------------------
#echo $date_1_a_d
#echo $date_1_a_m
#echo $date_1_a_y
#-----------------------------
#echo ''
#-----------------------------
if [ "$date_1_a_y" -ge `date +'%Y'` ] ; then
	if [ "$date_1_a_m" -ge `date +'%m'` ] ; then
		if [ "$date_1_a_d" -ge `date +'%d'` ] ; then
			for x in "${f1_a}"
			do g="${x%/LINIE.HTM}"
			done
		fi
	fi
fi
#-----------------------------
if [ "$date_1_b_y" -le `date +'%Y'` ] ; then
	if [ "$date_1_b_m" -le `date +'%m'` ] ; then
		if [ "$date_1_b_d" -le `date +'%d'` ] ; then
			for x in "${f1_b}"
			do g="${x%/LINIE.HTM}"
			done
		fi
	fi
fi
#-----------------------------
h1=`date +'%H'`
#-----------------------------
if [ "$h1" -eq '23' ] ; then
h2='00'
h3='1'
elif [ "$h1" -eq '22' ] ; then
h2='23'
h3='00'
fi
#-----------------------------
a_1=`w3m -dump "$g/$1/$2.HTM" | c= grep "| $h1 |"`
#------
a_2=`w3m -dump "$g/$1/$2.HTM" | c= grep "| $h2 |"`
#------
a_3=`w3m -dump "$g/$1/$2.HTM" | c= grep "| $h3 |"`
#echo $a
#-----------------------------
for x in "${a_1#*| $h1 |}"
do b1_1="${x%\|*|*|}"
done
#------
for x in "${a_2#*| $h2 |}"
do b1_2="${x%\|*|*|}"
done
#------
for x in "${a_3#*| $h3 |}"
do b1_3="${x%\|*|*|}"
done
#------
#echo $a
#echo $b
#c1=${b1%\|*|*|}
#-----------------------------
for x in "${a_1#|*|*|*|}"
do b2_1="${x%\|}"
done
#------
for x in "${a_2#|*|*|*|}"
do b2_2="${x%\|}"
done
#------
for x in "${a_3#|*|*|*|}"
do b2_3="${x%\|}"
done
# ------
# c2=${b2%\|}
#-----------------------------
#echo $c

if [ `date +'%u'` -le 5 ] ; then
echo 'tramwaj linii' $1 'w dni powszednie przyjedze o godzinie' $h1 'minut' $b1_1
echo 'tramwaj linii' $1 'w dni powszednie przyjedze o godzinie' $h2 'minut' $b1_2
echo 'tramwaj linii' $1 'w dni powszednie przyjedze o godzinie' $h3 'minut' $b1_3
else
echo 'pojazd linii' $1 'w święta i soboty przyjedze o godzinie' $h1 'minut' $b2_1
echo 'pojazd linii' $1 'w święta i soboty przyjedze o godzinie' $h2 'minut' $b2_2
echo 'pojazd linii' $1 'w święta i soboty przyjedze o godzinie' $h3 'minut' $b2_3
fi

#echo `date +'%d.%m.%Y'`
#echo `date +'%H.%M.%S'`
i otrzymujemy

więc wchodzimy na ZTM[[url]http://www.ztm.waw.pl][/url] np. linia 7 przystanek wójnicka
sprawdzamy URL w naszej przeglądarce i otrzymamy pid przystanku
musimy tylko podać linię i pid przystanku jako argumenty a skrypt sam sobie to poznajduje

skynet@debian:~$ sh '/home/skynet/Desktop/1.sh' 7 103001
pojazd linii 7 w dni powszednie przyjedze o godzinie 22 minut 10 31 52
pojazd linii 7 w dni powszednie przyjedze o godzinie 23 minut 12m
pojazd linii 7 w dni powszednie przyjedze o godzinie 00 minut
O godzinie 00 pojazd nie przyjedzie Obrazek

jeszcze trzeba zrobić poprawkę do np.
Rozkłady jazdy z uwzględnieniem zmian w dniu 26.04.2008.
ale aktualnie nie ma tego więc nie mogę sprawdzić ścieżek

ale kolega jest ze szczecina więc korzysta chyba z http://www.zditm.szczecin.pl/
więc trzeba będzie troszkę poprawić, jakieś 7 linijek ale dzisiaj nie zdąże
ODPOWIEDZ