Cache weather report
[khome.git] / bin / today
CommitLineData
d746703e 1#! /bin/bash
4af9eedb
SK
2
3set -e
4
d746703e
SK
5DIR_DATA="$HOME/var/run/today"
6FILE_WEATHER="$DIR_DATA/weather"
7
8mkdir -p "$DIR_DATA"
9
4af9eedb
SK
10repeat() {
11 x="$1"
12 n="$2"
13 awk -v x="$x" -v n="$n" 'BEGIN {for (i=1; i<=n; i++) {printf x}}'
14}
15
16bar=$(repeat '-' '80')
17ts_fmt='+%A, %Y %B %d, %H:%M:%S'
18ts_lang='el_GR.UTF-8'
19timestamp_local=$(LANG="$ts_lang" date "$ts_fmt")
20timestamp_west=$( LANG="$ts_lang" TZ='US/Pacific' date "$ts_fmt")
21timestamp_pl=$( LANG="$ts_lang" TZ='Poland' date "$ts_fmt")
22timestamp_nz=$( LANG="$ts_lang" TZ='NZ' date "$ts_fmt")
23
24ip_addresses=$(
25 ip addr \
26 | awk '
27 /^[0-9]+:/ {
28 interface = $2
29 sub(":$", "", interface)
30 interfaces[++interface_count] = interface
31 }
32
33 /^ +inet +/ {
34 addr = $2
35 sub("/[0-9]+$", "", addr)
36 addrs[interface] = addr
37 }
38
39 END {
40 for (i=1; i<=interface_count; i++) {
41 interface = interfaces[i]
42 print interface, addrs[interface]
43 }
44 }' \
45 | column -t
46)
47
d746703e
SK
48weather_fetch() {
49 curl "http://wttr.in/${ZIP_CODE}?1" \
50 1> "$FILE_WEATHER" \
51 2> /dev/null
52}
53
54weather_get_or_fetch() {
55 weather_file_age=$(( $(date +%s) - $(stat -c '%Y' "$FILE_WEATHER") ))
56 weather_file_age_limit=$(( 3 * 60 * 60 ))
57 if [[ ! -e $FILE_WEATHER || $weather_file_age -ge $weather_file_age_limit ]]
58 then
59 weather_fetch
60 fi
61 cat "$FILE_WEATHER"
62}
4af9eedb
SK
63
64clear
65#LANG="$ts_lang" ncal -M $(date +%Y)
66LANG="$ts_lang" ncal -M
67echo "$bar"
68(
69 echo 'LOCAL' ',' "$timestamp_local"
70 echo 'Pacific' ',' "$timestamp_west"
71 echo 'Poland' ',' "$timestamp_pl"
72 echo 'New Zealand' ',' "$timestamp_nz"
73) \
74| column -ts,
75echo "$bar"
76echo "$ip_addresses"
77echo "$bar"
78echo ''
d746703e
SK
79echo "Fetched on: $(stat -c %y $FILE_WEATHER)"
80echo "$(weather_get_or_fetch)"
4af9eedb 81echo ''
This page took 0.047381 seconds and 4 git commands to generate.