From 4a8d06f7ae982fd8d694c34b2383e6ae0a54d3e4 Mon Sep 17 00:00:00 2001 From: Yaroslav Date: Thu, 2 Apr 2020 15:56:12 +0300 Subject: weather bar module improvements --- dotfiles/.local/bin/barweather | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) (limited to 'dotfiles/.local') diff --git a/dotfiles/.local/bin/barweather b/dotfiles/.local/bin/barweather index 0ae6d3c..da8f25f 100755 --- a/dotfiles/.local/bin/barweather +++ b/dotfiles/.local/bin/barweather @@ -1,18 +1,39 @@ -#!/bin/bash +#!/bin/sh +cachefile="$HOME/.cache/weather" location="Saint Petersburg" +update_freq=1800 +obsolete_after=10800 -if [[ "$location" != "" ]] -then +if [ -n "$location" ]; then location="~${location// /+}" fi -forecast=$(curl -s wttr.in/$location?format=1) +update_forecast() { + ping -q -c 1 1.1.1.1 >/dev/null || exit + forecast=$(curl -s wttr.in/"$location"?format=1) + if [ ${#forecast} -lt 30 ]; then + printf "%s\n" "$forecast" > "$cachefile" + fi +} -if [[ ${#forecast} -gt 30 ]] -then +if [ -f "$cachefile" ]; then + last_modif=$(date +%s -r "$cachefile") + current_secs=$(date +%s) + elapsed=$((current_secs - last_modif)) + if [ $elapsed -gt $obsolete_after ]; then + rm "$cachefile" + fi + if [ $elapsed -gt $update_freq ]; then + update_forecast + fi +else + update_forecast +fi + +if [ ! -f "$cachefile" ]; then exit fi -echo $forecast +cat "$cachefile" -- cgit v1.2.3