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/.config/waybar/config | 2 +- dotfiles/.local/bin/barweather | 35 ++++++++++++++++++++++++++++------- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/dotfiles/.config/waybar/config b/dotfiles/.config/waybar/config index 5e5b800..7ec4d73 100644 --- a/dotfiles/.config/waybar/config +++ b/dotfiles/.config/waybar/config @@ -176,7 +176,7 @@ }, "custom/weather": { "format": "{}", - "interval": 900, + "interval": 180, "exec": "barweather" }, "custom/swaykbd": { 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