@@ -30,8 +30,11 @@ def load_state():
3030 try :
3131 with open (STATE_FILE_PATH , 'r' ) as f :
3232 state = json .load (f )
33- # Convert string date back to datetime
34- state ["last_reset_time" ] = datetime .fromisoformat (state ["last_reset_time" ])
33+
34+ # Ensure last_reset_time exists
35+ if "last_reset_time" not in state :
36+ state ["last_reset_time" ] = datetime .now ().isoformat ()
37+
3538 return state
3639 except Exception as e :
3740 logger .error (f"Error loading state file: { e } " )
@@ -44,8 +47,9 @@ def load_state():
4447def save_state (state ):
4548 """Save the state file with processed items and last reset time"""
4649 try :
47- # Convert datetime to string for JSON serialization
48- state ["last_reset_time" ] = state ["last_reset_time" ].isoformat ()
50+ # Ensure last_reset_time is a string for JSON serialization
51+ if isinstance (state ["last_reset_time" ], datetime ):
52+ state ["last_reset_time" ] = state ["last_reset_time" ].isoformat ()
4953
5054 with open (STATE_FILE_PATH , 'w' ) as f :
5155 json .dump (state , f )
@@ -59,7 +63,18 @@ def check_reset_state(state):
5963 return state
6064
6165 now = datetime .now ()
62- last_reset = state ["last_reset_time" ]
66+
67+ # Convert string to datetime if needed
68+ if isinstance (state ["last_reset_time" ], str ):
69+ try :
70+ last_reset = datetime .fromisoformat (state ["last_reset_time" ])
71+ except ValueError :
72+ # If parsing fails, reset the time to now
73+ logger .warning ("Invalid datetime format in state file. Resetting to now." )
74+ last_reset = now
75+ else :
76+ last_reset = state ["last_reset_time" ]
77+
6378 reset_interval = timedelta (hours = STATE_RESET_INTERVAL_HOURS )
6479
6580 if now - last_reset > reset_interval :
0 commit comments