Skip to content

Instantly share code, notes, and snippets.

@markogresak
Created January 16, 2015 20:39
Show Gist options
  • Select an option

  • Save markogresak/32b9c2f572f733faaff3 to your computer and use it in GitHub Desktop.

Select an option

Save markogresak/32b9c2f572f733faaff3 to your computer and use it in GitHub Desktop.
#!/bin/bash
# povezava do weather apija s poizvedbo za mesto Ljubljana
url="http://api.openweathermap.org/data/2.5/weather?q=Ljubljana,si"
# Primer rezultata poizvedbe:
# (Za celoten rezultat odprite url v brskalniku)
# {...,"main":{"temp":277.447, ...}, ...}
# main.temp je v Kelvinih, za pretvorbo v Celzije odstejemo 273.15
# Vrne trenutno temperaturo
function getTemperature {
# printf %.1f zaokrozi temperaturo na 1 decimalno mesto natancno
# curl naredi poizvedbo na $url, -s (silent) ne izpise progressa
# grep -o za izpis samo rezultata, -P za perl regexp
# Razlaga regexa:
# - (?<="temp":) - poglej nazaj (lookbehind) za niz "temp":
# - [0-9.]*? - isci [0-9.] skupino znakov 0-9 in ., * za poljubno st. teh znakov
# in ? za non-greedy zajem (najmanjsa mozna skupina znakov)
# - (?=,) - poglej naprej (lookahead) za ,
# Regex za zgornji primer rezultata vrne samo vrednost polja main.temp
# - 273.15 rezultat regexa pretvori v Celzije
# bc pretvori vrednost v decimalno stevilo, s katerim operira printf
printf %.1f $(echo "$(curl -s $url | grep -oP '(?<="temp":)[0-9.]*?(?=,)') - 273.15" | bc)
}
# cas cakanja med poizvedbami (v sekundah)
sleepTime=3600
outFile="temperature.log"
while true; do
printf "%s %.1f\n" "$(date +"[%A, %d. %m. %Y, %H:%M:%S]")" $(getTemperature) >> $outFile
sleep $sleepTime
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment