]>
git.slaskete.net - einar-bin/blob - temp.sh
3 # Et raskt bash-script for å hente ut nyeste temperaturobservasjon
4 # for et gitt 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)
18 # Cache-tid i sekunder (minimum 3600 = 60 minutter, per Yr.no sine bruksvilkår"
21 APIBASE
="https://www.yr.no"
23 # Stedsnavn er alle paramterne vi får med, eller fallback
25 STEDSNAVN
="${FALLBACK}"
27 STEDSNAVN
="${*//[^a-zA-Z0-9\-ÆØÅæøå]/}"
30 # Behandler Vårstien spesielt
31 if [ "$STEDSNAVN" == "Vårstien" ]; then
32 TEMPERATURE
=$(jq '.temperature_C' /var/tmp/heimdalsgate.json)
33 LASTMEASURE
=$(jq '.time' /var/tmp/heimdalsgate.json | tr -d \")
34 LASTTIMESTAMP
=$(LANG="nb_NO" date -d "TZ=\"UTC\" $LASTMEASURE" +%-d.\ %B\ kl.\ %H.%M)
35 echo "Temperatur for Vårstien er ${TEMPERATURE}°C (Observasjon fra Vårstien ${LASTTIMESTAMP})"
39 SEARCHFILE
="/tmp/YrSearch-${STEDSNAVN}.json"
41 # Sjekk om vi har hentet filer allerede de siste X minuttene, hent ved behov
42 # Takk til Sakarias for elegant løsning
43 if [ -f "${SEARCHFILE}" ]; then
44 if [ "$(stat --format=%Y "${SEARCHFILE}")" -le $(( $(date +%s) - CACHETID
)) ]; then
45 curl
-s -G -X GET
--header "Accept: application/json" --data-urlencode "q=${STEDSNAVN}" --data-urlencode "language=nb" "${APIBASE}/api/v0/locations/Search" > "${SEARCHFILE}"
48 curl
-s -G -X GET
--header "Accept: application/json" --data-urlencode "q=${STEDSNAVN}" --data-urlencode "language=nb" "${APIBASE}/api/v0/locations/Search" > "${SEARCHFILE}"
51 STEDSNAVN_MATCHED
=$(jq -r '._embedded.location | .[0].name' "${SEARCHFILE}")
52 LOCATION_ID
=$(jq -r '._embedded.location | .[0].id' "${SEARCHFILE}")
53 OBSFILE
="/tmp/YrObservation-${LOCATION_ID}.json"
54 if OBSPATH
=$(jq -r '._embedded.location | .[0]._links.observations[0].href' "${SEARCHFILE}" 2> /dev/null); then
55 if [ -f "${OBSFILE}" ]; then
56 if [ "$(stat --format=%Y "${OBSFILE}")" -le $(( $(date +%s) - CACHETID
)) ]; then
57 curl
-s "${APIBASE}/${OBSPATH}" > "${OBSFILE}"
60 curl
-s "${APIBASE}/${OBSPATH}" > "${OBSFILE}"
63 echo "Fant ingen værobservasjoner for ${STEDSNAVN_MATCHED}, jeg funker bare i Norge"
67 TEMP
=$(jq -r ._embedded.stations[0].observations.temperature.intervals[-1].value "${OBSFILE}")
68 TIME_ZULU
=$(jq -r ._embedded.stations[0].observations.temperature.intervals[-1].time "${OBSFILE}")
69 STASJON
=$(jq -r ._embedded.stations[0].name "${OBSFILE}")
71 # Og litt ekstra datatygging
72 TIME
=$(date +%H.%M -d "${TIME_ZULU}")
74 # Spytt ut en fin linje
75 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"