Skip to content

Commit d19efdc

Browse files
♻️ refactor(weather.*): Drop arrow dependency.
1 parent 24838e4 commit d19efdc

File tree

2 files changed

+17
-15
lines changed

2 files changed

+17
-15
lines changed

.bin/weather._forecast

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import sys
44
import os
55
import subprocess
66
import json
7-
import arrow
7+
from datetime import datetime, timedelta
8+
import human
89
import math
910

1011
HALFHOUR = 60 * 60 // 2
@@ -84,7 +85,7 @@ if km(*current, *old) > threshold:
8485
sys.exit(1)
8586

8687

87-
NOW = arrow.now()
88+
NOW = datetime.now()
8889

8990
if 'daily' in data:
9091
daily = data['daily']['data']
@@ -133,7 +134,7 @@ icons = {
133134
}
134135

135136
print()
136-
print( ' > Generated on {}'.format(NOW.format('ddd, DD MMM YYYY HH:mm:ss Z')) )
137+
print( ' > Generated on {}'.format(NOW.strftime('%a, %d %b %Y %H:%M:%S %z')) )
137138
print( ' >  lat {latitude} lon {longitude} tz {timezone}'.format(**data) )
138139

139140
print( """
@@ -151,9 +152,9 @@ DISPLAYED_TEMPERATURE = 'apparentTemperature'
151152

152153
for day in daily:
153154

154-
daytime = arrow.get(day['time']).to('local')
155-
sunrise = arrow.get(day['sunriseTime']).to('local').format('HH:mm:ss')
156-
sunset = arrow.get(day['sunsetTime']).to('local').format('HH:mm:ss')
155+
daytime = datetime.fromisoformat(day['time']).astimezone()
156+
sunrise = datetime.fromisoformat(day['sunriseTime']).astimezone().strftime('%H:%M:%S')
157+
sunset = datetime.fromisoformat(day['sunsetTime']).astimezone().strftime('%H:%M:%S')
157158
time = daytime
158159

159160
t1 = round(ftoc(day[DISPLAYED_TEMPERATURE+'Min']))
@@ -163,7 +164,7 @@ for day in daily:
163164

164165
fmt = '[{}]  {}  {} - {: >2}°C < {: >2}°C - {} {}'
165166

166-
dtime = time.format('dddd DD MMMM YYYY')
167+
dtime = time.strftime('%A %d %B %Y')
167168
summary = day['summary']
168169

169170
if p > 0:
@@ -173,7 +174,7 @@ for day in daily:
173174
icon, color = icons.get(iconname, ("?", RED))
174175
fmt = color + fmt + ENDC
175176

176-
if time < NOW.shift(hours=+3):
177+
if time < NOW + timedelta(hours=3):
177178
fmt = BOLD + fmt + ENDC
178179

179180
fmt = UNDERLINE + fmt + ENDC
@@ -184,9 +185,9 @@ for day in daily:
184185

185186
for hour in hourly:
186187

187-
time = arrow.get(hour['time']).to('local')
188+
time = datetime.fromisoformat(hour['time']).astimezone()
188189

189-
if time < daytime or time >= daytime.shift(days=+1):
190+
if time < daytime or time >= daytime + timedelta(days=1):
190191
continue
191192

192193
t = round(ftoc(hour[DISPLAYED_TEMPERATURE]))
@@ -195,8 +196,8 @@ for day in daily:
195196

196197
fmt = ' * {} - {: >2}°C - {: <2} {} ({})'
197198

198-
dtime = time.format('hh A')
199-
htime = time.humanize()
199+
dtime = time.strftime('%I %p')
200+
htime = human.datetime(time)
200201
summary = hour['summary']
201202

202203
if p > 0:
@@ -206,7 +207,7 @@ for day in daily:
206207
icon, color = icons.get(iconname, ("?", RED))
207208
fmt = color + fmt + ENDC
208209

209-
if time < NOW.shift(hours=+3):
210+
if time < NOW + timedelta(hours=3):
210211
fmt = BOLD + fmt + ENDC
211212

212213
print(fmt.format(dtime, t, icon, summary, htime, p, i))

.bin/weather.now

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import os
55
import subprocess
66
import heapq
77
import json
8-
import arrow
8+
from datetime import datetime
99
import math
1010

1111
HALFHOUR = 60 * 60 // 2
@@ -104,7 +104,8 @@ def ftoc(c):
104104
def itom(i):
105105
return i * 25.4
106106

107-
BEGIN = arrow.now().timestamp - HALFHOUR
107+
NOW = datetime.now()
108+
BEGIN = NOW.timestamp() - HALFHOUR
108109

109110
data = heapq.nsmallest(
110111
3, filter(lambda x: x['time'] >= BEGIN, hourly), key=lambda x: x['time'])

0 commit comments

Comments
 (0)