@@ -387,74 +387,82 @@ def perform_login(self, driver):
387387
388388 def run (self ):
389389 driver = self .init_driver ()
390- ScreenshotOnFailure .set_driver (driver )
391-
392- # Force window size for headless mode
393- driver .set_window_size (1920 , 1080 )
394- size = driver .get_window_size ()
395- pixel_ratio = driver .execute_script ("return window.devicePixelRatio;" )
396- logging .info (f"Driver initialized. Window size: { size } , DevicePixelRatio: { pixel_ratio } " )
397-
398- # Start Screen Recording
399- from recorder import ScreenRecorder
400- timestamp = time .strftime ("%Y%m%d_%H%M%S" )
401- video_path = f"./errors/record_{ timestamp } .avi"
402- recorder = ScreenRecorder (driver , video_path , fps = 3.0 )
403- recorder .start ()
404-
405- publisher = MQTTPublisher ()
406-
407390 try :
408- if self .perform_login (driver ):
409- logging .info ("Login successful!" )
410- # Stop recording immediately after success
391+ ScreenshotOnFailure .set_driver (driver )
392+
393+ # Force window size for headless mode
394+ driver .set_window_size (1920 , 1080 )
395+ size = driver .get_window_size ()
396+ pixel_ratio = driver .execute_script ("return window.devicePixelRatio;" )
397+ logging .info (f"Driver initialized. Window size: { size } , DevicePixelRatio: { pixel_ratio } " )
398+
399+ # Start Screen Recording
400+ from recorder import ScreenRecorder
401+ timestamp = time .strftime ("%Y%m%d_%H%M%S" )
402+ video_path = f"./errors/record_{ timestamp } .avi"
403+ recorder = ScreenRecorder (driver , video_path , fps = 3.0 )
404+ recorder .start ()
405+
406+ publisher = MQTTPublisher ()
407+
408+ try :
409+ if self .perform_login (driver ):
410+ logging .info ("Login successful!" )
411+ # Stop recording immediately after success
412+ recorder .stop ()
413+
414+ # Delete video if successful (User request)
415+ try :
416+ if os .path .exists (video_path ):
417+ os .remove (video_path )
418+ logging .info (f"Login successful, deleted recording: { video_path } " )
419+ except Exception as e :
420+ logging .warning (f"Failed to delete recording: { e } " )
421+ else :
422+ logging .error ("Login failed!" )
423+ recorder .stop ()
424+ return
425+ except Exception as e :
426+ logging .error (f"Login exception: { e } " )
411427 recorder .stop ()
412-
413- # Delete video if successful (User request)
428+ return
429+
430+ time .sleep (self .retry_delay )
431+ user_ids = self .get_user_ids (driver )
432+ logging .info (f"Found users: { user_ids } " )
433+
434+ for index , user_id in enumerate (user_ids ):
435+ if user_id in self .ignored_users :
436+ logging .info (f"Skipping ignored user: { user_id } " )
437+ continue
438+
414439 try :
415- if os .path .exists (video_path ):
416- os .remove (video_path )
417- logging .info (f"Login successful, deleted recording: { video_path } " )
440+ driver .get (URL_BALANCE )
441+ time .sleep (self .retry_delay )
442+ self .select_user (driver , index )
443+ time .sleep (self .retry_delay )
444+
445+ data = self .collect_data (driver , user_id , index )
446+ publisher .publish_user_data (user_id , * data )
447+
448+ time .sleep (self .retry_delay )
418449 except Exception as e :
419- logging .warning (f"Failed to delete recording: { e } " )
420- else :
421- logging .error ("Login failed!" )
422- recorder .stop ()
423- driver .quit ()
424- return
425- except Exception as e :
426- logging .error (f"Login exception: { e } " )
450+ logging .error (f"Failed to process user { user_id } : { e } " )
451+ continue
452+
453+ logging .info ("All tasks completed successfully." )
454+ self .cleanup_debug_images ()
427455 recorder .stop ()
428- driver .quit ()
429- return
430-
431- time .sleep (self .retry_delay )
432- user_ids = self .get_user_ids (driver )
433- logging .info (f"Found users: { user_ids } " )
434-
435- for index , user_id in enumerate (user_ids ):
436- if user_id in self .ignored_users :
437- logging .info (f"Skipping ignored user: { user_id } " )
438- continue
439-
440- try :
441- driver .get (URL_BALANCE )
442- time .sleep (self .retry_delay )
443- self .select_user (driver , index )
444- time .sleep (self .retry_delay )
445-
446- data = self .collect_data (driver , user_id , index )
447- publisher .publish_user_data (user_id , * data )
448-
449- time .sleep (self .retry_delay )
450- except Exception as e :
451- logging .error (f"Failed to process user { user_id } : { e } " )
452- continue
453-
454- logging .info ("All tasks completed successfully." )
455- self .cleanup_debug_images ()
456- recorder .stop ()
457- driver .quit ()
456+
457+ except Exception as e :
458+ logging .error (f"Unexpected error in run: { e } " )
459+ finally :
460+ if driver :
461+ logging .info ("Quitting driver..." )
462+ try :
463+ driver .quit ()
464+ except Exception as e :
465+ logging .error (f"Error quitting driver: { e } " )
458466
459467 def cleanup_debug_images (self ):
460468 try :
0 commit comments