Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: mihatsu - 09.02.06 - klo:12.30

Otsikko: bussiaikataulut scripti
Kirjoitti: mihatsu - 09.02.06 - klo:12.30
Hei

Tuossa mietiskelin aamulla kun bussiaikautaulua taas katoin että monelta menee seuraava koululle että olisi kätevä tehdä scrpti joka kertos millon seuraava on menossa ja torsmo hakis sieltä tiedot näytölle vaikka 3 seuraavaa. Koulun koneella on sellainen että kun kirjoittaa bussit unix:ssa niin tulee tuloste

paju:(/)(54)% bussit

Bussit Linnanmaa - Keskusta

   aika   linja
   12:29   19
   12:29   5
   12:36   6
   12:43   24
   12:45   4
   12:49   19
   12:50   7
   12:59   5
   13:06   6
   13:09   19

Ajattelin että vähän tuohon malliin sen pitäs toimia. Aikataulu http://www.koskilinjat.fi/aikataulut_ja_reitit/paikallisliikenteen_linjat/talvi/yhdistelma_oyskes.html on tuolla ja sieltä Kajaanintien pysäkin kohdalta 4 5 6 bussit, tuohon aikataulun aikaan pitää lisätä 5min jokaiseen. Olen todella amatööri näissä hommissa joten mietin että hakisko scripta tuolta sen ajan vai teenkö käsin tiedostoon jokaisen ajan käsin? Tai miten tuo olisi toteutettavistta helpoiten.

Mika
Otsikko: Re: bussiaikataulut scripti
Kirjoitti: mgronber - 09.02.06 - klo:20.04
Olen todella amatööri näissä hommissa joten mietin että hakisko scripta tuolta sen ajan vai teenkö käsin tiedostoon jokaisen ajan käsin? Tai miten tuo olisi toteutettavistta helpoiten.

Ainakin minun silmiini tuo aikataulu näytti hieman ikävältä parsittavalta joten pitäisin tekstitiedostoon tallennettua aikataulua järkevänä lähtökohtana. Generoin liitteenä olevan aikataulutiedoston muutamalla sopivasti valitulla for-silmukalla.

Koodia: [Valitse]
$ for x in 0{6..9} {10..18}; do echo "$x:25 4" >>aikataulu-raw.txt; done
$ for x in 0{5..9} {10..18}; do echo "$x:55 4" >>aikataulu-raw.txt; done
$ for x in {19..21}; do echo "$x:35 4" >>aikataulu-raw.txt; done
$ for x in 0{7..9} {10..17}; do echo "$x:35 5" >>aikataulu-raw.txt; done
$ for x in 0{8..9} {10..17}; do echo "$x:05 5" >>aikataulu-raw.txt; done
$ for x in 0{7..9} {10..17}; do echo "$x:15 6" >>aikataulu-raw.txt; done
$ for x in 0{6..9} {10..22}; do echo "$x:45 6" >>aikataulu-raw.txt; done
$ sort aikataulu-raw.txt >~/aikataulu.txt
$ rm aikataulu-raw.txt

Tuosta aikataulusta voi sitten lukea kolme seuraavaa vuoroa esimerkiksi alla olevalla skriptillä.

Koodia: [Valitse]
#!/bin/bash

count=3
currenttime=$(date +%R)

printf "aika\tlinja\n"

exec < ~/aikataulu.txt
while read time rest; do
    if [[ $time > $currenttime ]]; then
        printf "%s\t%3d\n" $time $rest
        (( count-- ))
        [[ $count -gt 0 ]] || break
    fi
done

Skripti hakee aikataulua kotihakemistostasi nimellä aikataulu.txt. Muista myös antaa skriptille suoritusoikeudet.

En ota mitään vastuuta generoimieni aikataulujen oikeellisuudesta.


[ylläpito on poistanut liitteen]
Otsikko: Re: bussiaikataulut scripti
Kirjoitti: mihatsu - 09.02.06 - klo:22.25
Kiitoksia! Tämä toimii paremmin kuin ajattelin! Kiitoksia vielä vaivannäöstä!

Mika
Otsikko: Re: bussiaikataulut scripti
Kirjoitti: sakkeri - 19.02.06 - klo:00.04
Onnistuiskos sama Matkahuollon sivuilta. Jotenkin tyyliin:

Syötä lähtöpiste:
Syötä päätepiste:
Anna kellonaika:

Ja softa hakisi noilla arvoilla matkahuollon sivuilta aikataulut. Miten tuota voisi lähteä toteuttamaan?
Otsikko: Re: bussiaikataulut scripti
Kirjoitti: kalmisto - 21.02.06 - klo:16.04
Itse käytän tällaista komentoa junien kanssa:

Koodia: [Valitse]
lynx -dump "http://aikataulut.ytv.fi/reittiopas-pda/fi/?test=1&aa=17205%3At1a2552403a6673381%3AHelsinki+keskusta%3A871%3A&an=&keya=helsinki&bb=15860%3At1a2545176a6678970%3ALepp%E4vaara%3A458%3A&bn=&keyb=lepp%E4vaara&hour="$(date +%H)"&min="$(date +%M)"&vm=1&day="$(date +%d)"&month="$(date +%m)"&year="$(date +%Y)"&adv=" | grep ".*juna"

www.matka.fi (http://www.matka.fi) osoitteesta saanet samankaltaisen toiminteen aikaiseksi, joskaan en nyt ensikatsomisella löytänyt sieltä tuommoista kevyempää tekstiversiota.