De kalte meg gal. Ny versjon hvor databasen over stedsnavn er komprimert med bz2
[yr-temp.sh] / yr-temp-bz2.sh
1 #!/bin/bash
2 #
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
6 #
7 # Værvarsel fra yr.no, levert av NRK og Meteorologisk institutt (http://www.yr.no)
8
9 # LISENS: http://sam.zoy.org/wtfpl/COPYING
10
11 # Fallback-sted (default)
12 FALLBACK="Gjøvik"
13
14 # Fix for filer (stedsnavn) med mellomrom (sett file-separator til newline)
15 IFS=$'\n'
16
17 # Norsk format på tid
18 LC_TIME="nb_NO"
19
20 # Absoluttpath til oss selv, som vi grepper etter stedsnavn i
21 SELF="$0"
22
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.
26 STARTGREP="69"
27
28 # Stedsnavn er alle paramterne vi får med, eller fallback
29 if [ $# -lt 1 ]; then
30 STEDSNAVN="${FALLBACK}"
31 else
32 STEDSNAVN="$@"
33 fi
34
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."
40 exit 1
41 fi
42
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}
46
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 ' ')
51
52 # Og litt ekstra datatygging
53 TIME=$(date +%H.%M -d "${TIME_ZULU}")
54 URL_PRETTY=${URL%varsel.xml}
55
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})"
58
59 # Avslutt eksekvering, så vi slipper feilmeldinger på linjene som følger
60 exit 0
61
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
67
68 # STARTGREPHERE (la denne linja stå!)
69 BZh91AY&SY\93xL4