@@ -203,6 +203,10 @@ def main():
203203 check_notes ()
204204 print ()
205205
206+ # Un seul check dans la fenêtre 01:20-01:40 (par jour)
207+ window_date = None
208+ window_done = False
209+
206210 while True :
207211 now = datetime .datetime .now ()
208212 # Mode DEBUG : exécution toutes les 30 secondes, sans contrainte d'heure
@@ -217,12 +221,40 @@ def main():
217221 time .sleep (sleep_seconds )
218222 continue
219223 interval = CHECK_INTERVAL
220- # Si on est entre 1h20 et 1h40, on attend 2 minutes
221224 now_tz = get_tz_time ()
225+ current_date = now_tz .date ()
226+ if window_date != current_date :
227+ window_date = current_date
228+ window_done = False
229+
230+ # Entre 01:20 et 01:40 : on attend 01:40
222231 if now_tz .hour == 1 and 20 <= now_tz .minute < 40 :
223- interval = 120
232+ next_140 = now_tz .replace (minute = 40 , second = 0 , microsecond = 0 )
233+ sleep_seconds = max (0 , (next_140 - now_tz ).total_seconds ())
234+ print ("Fenêtre 01:20-01:40 : attente jusqu'à 01:40 pour un unique check" )
235+ time .sleep (sleep_seconds )
236+ continue
237+
238+ # Entre 01:40 et 01:59 : un seul check, puis dodo jusqu'au lendemain
239+ if now_tz .hour == 1 and now_tz .minute >= 40 :
240+ if window_done :
241+ next_midnight = (now_tz + datetime .timedelta (days = 1 )).replace (hour = 0 , minute = 0 , second = 0 , microsecond = 0 )
242+ sleep_seconds = max (0 , (next_midnight - now_tz ).total_seconds ())
243+ print ("Check déjà fait à 01:40, dodo jusqu'au lendemain" )
244+ time .sleep (sleep_seconds )
245+ continue
246+ interval = CHECK_INTERVAL
224247
225248 check_notes ()
249+ if LOG_LEVEL != "DEBUG" :
250+ now_tz = get_tz_time ()
251+ if now_tz .hour == 1 and now_tz .minute >= 40 :
252+ window_done = True
253+ next_midnight = (now_tz + datetime .timedelta (days = 1 )).replace (hour = 0 , minute = 0 , second = 0 , microsecond = 0 )
254+ sleep_seconds = max (0 , (next_midnight - now_tz ).total_seconds ())
255+ print ("Check effectué à 01:40, dodo jusqu'au lendemain" )
256+ time .sleep (sleep_seconds )
257+ continue
226258
227259 next_time = get_tz_time () + datetime .timedelta (seconds = interval )
228260 print ("Prochain check à" , next_time .strftime ("%Y-%m-%d %H:%M:%S" ))
0 commit comments