Add handling for files without BPM: group into [Unknown BPM] folder; keep balanced CD splits and timestamped output folder
This commit is contained in:
15
src/app.py
15
src/app.py
@@ -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!")
|
||||
|
||||
|
Reference in New Issue
Block a user