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