feat(weather) add weather app
This commit is contained in:
commit
6804f685c9
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.env
|
81
weather.sh
Normal file
81
weather.sh
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
. ./.env
|
||||||
|
|
||||||
|
LOCATION="Poznan"
|
||||||
|
IS_CELSIUS=true
|
||||||
|
|
||||||
|
|
||||||
|
get_data() {
|
||||||
|
local tmp_file="/tmp/weather_$LOCATION.json"
|
||||||
|
local last_changed=0;
|
||||||
|
|
||||||
|
if [ -e "$tmp_file" ]
|
||||||
|
then
|
||||||
|
local last_changed=$(stat -c "%Y" $tmp_file)
|
||||||
|
fi
|
||||||
|
|
||||||
|
local current_time=$(date +%s)
|
||||||
|
local should_request=$((($current_time - $last_changed) > 300))
|
||||||
|
|
||||||
|
if (($should_request))
|
||||||
|
then
|
||||||
|
curl -s "http://api.apixu.com/v1/current.json?key=$API_KEY&q=$LOCATION" > $tmp_file; #API_KEY comes from .env
|
||||||
|
fi
|
||||||
|
WEATHER=$(cat $tmp_file)
|
||||||
|
}
|
||||||
|
|
||||||
|
get_weather() {
|
||||||
|
local presenter=()
|
||||||
|
local temp="c"
|
||||||
|
|
||||||
|
if [ "$IS_CELSIUS" == false ]
|
||||||
|
then
|
||||||
|
temp="f"
|
||||||
|
fi
|
||||||
|
clear
|
||||||
|
get_data
|
||||||
|
|
||||||
|
presenter+=("City: $(echo $WEATHER | jq -r '.location.name')")
|
||||||
|
presenter+=("Country: $(echo $WEATHER | jq -r '.location.country')")
|
||||||
|
presenter+=("Temperature: $(echo $WEATHER | jq -r '.current.temp_'$temp) ${temp^}")
|
||||||
|
presenter+=("Feels like: $(echo $WEATHER | jq -r '.current.feelslike_'$temp) ${temp^}")
|
||||||
|
presenter+=("Wind: $(echo $WEATHER | jq -r '.current.wind_kph')")
|
||||||
|
presenter+=("Presure: $(echo $WEATHER | jq -r '.current.pressure_mb')")
|
||||||
|
presenter+=("Humidity: $(echo $WEATHER | jq -r '.current.humidity')")
|
||||||
|
presenter+=("Cloudy: $(echo $WEATHER | jq -r '.current.cloud')")
|
||||||
|
|
||||||
|
echo "$(printf '%s\n' "${presenter[@]}")"
|
||||||
|
}
|
||||||
|
|
||||||
|
while getopts "ldf" opt; do
|
||||||
|
case $opt in
|
||||||
|
l)
|
||||||
|
OPTARG=${!OPTIND}
|
||||||
|
|
||||||
|
if [ "$#" -lt "$OPTIND" ]; then
|
||||||
|
OPTARG=$LOCATION
|
||||||
|
else
|
||||||
|
OPTIND=$(( $OPTIND + 1 ))
|
||||||
|
fi
|
||||||
|
|
||||||
|
LOCATION="$OPTARG"
|
||||||
|
;;
|
||||||
|
d)
|
||||||
|
IS_DYNAMIC=true
|
||||||
|
;;
|
||||||
|
f)
|
||||||
|
IS_CELSIUS=false
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$IS_DYNAMIC" == true ]
|
||||||
|
then
|
||||||
|
while [ true ]
|
||||||
|
do
|
||||||
|
get_weather
|
||||||
|
sleep 300;
|
||||||
|
done
|
||||||
|
else
|
||||||
|
get_weather
|
||||||
|
fi
|
Loading…
Reference in New Issue
Block a user