@@ -549,22 +549,43 @@ def snapNumpyToFastAPI(
549549 return Response (im_bytes , headers = headers , media_type = "image/png" )
550550
551551 @APIExport (runOnUIThread = True )
552- def startRecording (self , mSaveFormat : int = SaveFormat .TIFF ) -> None :
553- """Starts recording with the set settings to the set file path using RecordingService."""
554- mSaveFormat = SaveFormat (mSaveFormat )
552+ @APIExport (runOnUIThread = True )
553+ def startRecording (self , mSaveFormat : int = SaveFormat .TIFF , fileName : Optional [str ] = None ) -> None :
554+ """Starts recording with the set settings to the set file path using RecordingService.
555+
556+ Parameters:
557+ - mSaveFormat: Desired `SaveFormat` enum value (default: `SaveFormat.TIFF`).
558+ - fileName: Optional description to append to the generated filename.
559+ """
560+ try :
561+ # Ensure mSaveFormat is an int
562+ mSaveFormat = int (mSaveFormat )
563+ mSaveFormat = SaveFormat (mSaveFormat )
564+ except (ValueError , TypeError ) as e :
565+ self .__logger .error (f"Invalid save format: { mSaveFormat } , error: { e } " )
566+ mSaveFormat = SaveFormat .TIFF
567+
568+ # Ensure fileName is a string or None
569+ if not isinstance (fileName , (str , type (None ))):
570+ fileName = None
555571
556572 # we probably call from the FASTAPI server
557573 if self .recording : # Already recording
558574 return
559575
560- timeStamp = datetime .datetime .now ().strftime ("%Y_%m_%d-%I-%M-%S_%p" )
561- folder = os .path .join (dirtools .UserFileDirs .getValidatedDataPath (), "recordings" , timeStamp )
576+ # Use ISO 8601 date format, consistent with snap() method
577+ timeStampDay = datetime .datetime .now ().strftime ("%Y-%m-%d" )
578+ folder = os .path .join (dirtools .UserFileDirs .getValidatedDataPath (), "recordings" , timeStampDay )
562579 if not os .path .exists (folder ):
563580 os .makedirs (folder )
564581 time .sleep (0.01 )
565- self .savename = os .path .join (folder , self .getFileName ()) + "_rec"
566582
567583 detectorsBeingCaptured = self .getDetectorNamesToCapture ()
584+ # Generate filename with detector info and description, consistent with snap()
585+ # Use "rec" as default description if none provided
586+ description = fileName if fileName else "rec"
587+ filename = self .getFileName (description = description , detector_names = detectorsBeingCaptured )
588+ self .savename = os .path .join (folder , filename )
568589 self .recMode = RecMode .UntilStop
569590 self .recordingArgs = {
570591 "detectorNames" : detectorsBeingCaptured ,
0 commit comments