Эх сурвалжийг харах

prototype of mutliple cd burning finished

Noah Vogt 1 жил өмнө
parent
commit
7c568615f6
1 өөрчлөгдсөн 29 нэмэгдсэн , 6 устгасан
  1. 29 6
      utils/scripts.py

+ 29 - 6
utils/scripts.py

@@ -229,23 +229,30 @@ def burn_cds_of_day(yyyy_mm_dd: str) -> None:
         target_files = sorted(listdir(target_dir))
         cue_sheets = []
         for file in target_files:
-            if file.endswith(".cue") and len(file) == 17:
+            if is_legal_sheet_filename(file):
                 cue_sheets.append(file)
 
         if not target_files:
             exit_as_no_cds_found(target_dir)
 
         if len(cue_sheets) == 1:
-            burn_and_eject_cd(yyyy_mm_dd, "0000001")
+            burn_and_eject_cd(
+                yyyy_mm_dd, "1".zfill(const.CD_RECORD_FILENAME_ZFILL)
+            )
         else:
-            for num, file in enumerate(cue_sheets):
-                log(f"file found: {file}")
             app = QApplication([])
             dialog = SheetAndPreviewChooser(
-                target_dir, cue_sheets, "Preview CD's"
+                target_dir, cue_sheets, f"Preview CD's for {yyyy_mm_dd}"
             )
             if dialog.exec_() == QDialog.Accepted:
-                log(f"Burning CD from sheet: {dialog.chosen_sheets}")
+                if not dialog.chosen_sheets:
+                    sys.exit(0)
+                log(f"Burning CD's from sheets: {dialog.chosen_sheets}")
+                for sheet in dialog.chosen_sheets:
+                    del app  # pyright: ignore
+                    burn_and_eject_cd(
+                        yyyy_mm_dd, get_padded_cd_num_from_sheet_filename(sheet)
+                    )
 
     except (FileNotFoundError, PermissionError, IOError):
         InfoMsgBox(
@@ -266,6 +273,22 @@ def exit_as_no_cds_found(target_dir):
     sys.exit(1)
 
 
+def is_legal_sheet_filename(filename: str) -> bool:
+    return bool(match(r"^sheet-[0-9]+\.cue", filename)) and len(filename) == 17
+
+
+def get_padded_cd_num_from_sheet_filename(filename: str) -> str:
+    if not is_legal_sheet_filename(filename):
+        InfoMsgBox(
+            QMessageBox.Critical,
+            "Error",
+            f"Error: filename '{filename}' in illegal format",
+        )
+        sys.exit(1)
+
+    return filename[6:13]
+
+
 def burn_and_eject_cd(yyyy_mm_dd: str, padded_cd_num: str) -> None:
     cd_drives = get_cd_drives()
     if not cd_drives: