3 # Et raskt bash-script for å hente ut nyeste temperaturobservasjon
4 # for et gitt norsk stedsnavn fra yr.no.
5 # Skrevet av Einar Jørgen Haraldseid for #kopweb @ EFNet
7 # Værvarsel fra yr.no, levert av NRK og Meteorologisk institutt (http://www.yr.no)
9 # LISENS: http://sam.zoy.org/wtfpl/COPYING
11 # Fallback-sted (default)
14 # Fix for filer (stedsnavn) med mellomrom (sett file-separator til newline)
20 # Absoluttpath til oss selv, som vi grepper etter stedsnavn i
23 # Linje å starte søk i (må hardcodes til linja etter # STARTGREPHERE,
24 # og filen kan ikke redigeres etterpå. Se under for kommando for å
25 # bygge stedsnavnsdatabase.
28 # Stedsnavn er alle paramterne vi får med, eller fallback
30 STEDSNAVN
="${FALLBACK}"
35 # Hent URL fra liste over stedsnavn (som har tre tab-separerte kolonner: prioritet, stedsnavn, url)
36 URL
="$(tail -n +${STARTGREP} ${SELF} | bzgrep -i ${STEDSNAVN} | head -n 1 | cut -f 3)"
37 STEDSNAVN_MATCHED
="$(tail -n +${STARTGREP} ${SELF} | bzgrep -i ${STEDSNAVN} | head -n 1 | cut -f 2)"
38 if [ -z "${URL}" ]; then
39 echo "Fant ikke dette stedet."
43 # Siden vi gjør flere søk i XML-filen på rad er vi snille og henter data kun en gang
44 FILE
="/tmp/weather-${STEDSNAVN_MATCHED}.xml"
45 wget
-q -O ${FILE} ${URL}
47 # Hent ut data ved hjelp av XPath
48 TEMP
=$
(cat ${FILE} | xmlstarlet sel
-t -v "//weatherstation[1]//@value")
49 STASJON
=$
(cat ${FILE} | xmlstarlet sel
-t -v "//weatherstation[1]//@name")
50 TIME_ZULU
=$
(cat ${FILE} | xmlstarlet sel
-t -v "//weatherstation[1]//@time" |
tr T
' ')
52 # Og litt ekstra datatygging
53 TIME
=$
(date +%H.
%M
-d "${TIME_ZULU}")
54 URL_PRETTY
=${URL%varsel.xml}
56 # Spytt ut en fin linje
57 echo "Temperatur for ${STEDSNAVN_MATCHED} er ca. ${TEMP}°C (Observasjon fra ${STASJON} målestasjon kl. ${TIME}) - Værvarsel fra yr.no, levert av NRK og Meteorologisk institutt (${URL_PRETTY})"
59 # Avslutt eksekvering, så vi slipper feilmeldinger på linjene som følger
62 # Mulige stedsnavn følger her.
63 # Hentet fra http://fil.nrk.no/yr/viktigestader/noreg.txt
64 # Kan bygges med kommandoene på neste linje:
65 # wget -O - http://fil.nrk.no/yr/viktigestader/noreg.txt | awk '{ FS = "\t"} ; {print $3 "\t" $2 "\t" $13}' | sort -g | tail -n +2 | bzip2 > norge.txt.bz2
66 # dd if=norge.txt.bz2 of=yr-temp-bz2.sh oflag=append conv=notrunc
68 # STARTGREPHERE (la denne linja stå!)