Add handling for files without BPM: group into [Unknown BPM] folder; keep balanced CD splits and timestamped output folder

This commit is contained in:
Roncero Blanco, Edgar
2025-05-26 13:51:24 +02:00
parent cbe4c5badb
commit 53cad05cd9

View File

@@ -35,16 +35,21 @@ def get_bpm(file_path):
print(f"Skipping {file_path.name} (no BPM): {e}")
return None
# Collect all tracks
# Collect all tracks, grouping unknown BPM separately
all_tracks = []
for file in source_media_path.glob("*.mp3"):
bpm = get_bpm(file)
if bpm is None:
continue
size = file.stat().st_size
bpm_range = f"{(bpm // GROUP_SIZE) * GROUP_SIZE}-to-{((bpm // GROUP_SIZE) * GROUP_SIZE) + GROUP_SIZE - 1}"
if bpm is None:
bpm_range = "[Unknown BPM]"
else:
bpm_range = f"{(bpm // GROUP_SIZE) * GROUP_SIZE}-to-{((bpm // GROUP_SIZE) * GROUP_SIZE) + GROUP_SIZE - 1}"
all_tracks.append({"file": file, "size": size, "bpm_range": bpm_range})
if not all_tracks:
print("No MP3 files found.")
exit(0)
# Calculate total size and number of CDs needed
total_size = sum(t["size"] for t in all_tracks)
num_cds = max(1, (total_size + CD_SIZE - 1) // CD_SIZE)
@@ -89,3 +94,5 @@ for i, tracks in enumerate(cd_contents, start=1):
size_accum += track["size"]
print(f"[WRITE] CD-{i:02}: {len(tracks)} tracks, approx {size_accum/1024**2:.2f} MB")
print("\n✅ Done!")