@@ -4,7 +4,8 @@ import sys
44import os
55import subprocess
66import json
7- import arrow
7+ from datetime import datetime , timedelta
8+ import human
89import math
910
1011HALFHOUR = 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
8990if 'daily' in data :
9091 daily = data ['daily' ]['data' ]
@@ -133,7 +134,7 @@ icons = {
133134}
134135
135136print ()
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 ' )) )
137138print ( ' > lat {latitude} lon {longitude} tz {timezone}' .format (** data ) )
138139
139140print ( """
@@ -151,9 +152,9 @@ DISPLAYED_TEMPERATURE = 'apparentTemperature'
151152
152153for 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 ))
0 commit comments