import os import shutil from mutagen.id3 import ID3, TBPM from pathlib import Path # Define source (dir A) and destination (dir B) directories dir_a = Path(r"C:\Users\Edgar\Desktop\Peak Time BOF (ed1337x)\Already where in MP3") dir_b = Path(r"C:\Users\Edgar\Desktop\Peak Time BOF (ed1337x)\CD") # Make sure destination base exists dir_b.mkdir(parents=True, exist_ok=True) def get_bpm(file_path): try: tags = ID3(file_path) bpm_tag = tags.get('TBPM') if bpm_tag: bpm_str = str(bpm_tag.text[0]) return int(float(bpm_str)) # Some BPMs are floats or strings except Exception as e: print(f"[!] Error reading BPM from {file_path.name}: {e}") return None for file in dir_a.glob("*.mp3"): bpm = get_bpm(file) if bpm is not None: # Calculate non-overlapping 5-BPM bin lower_bound = (bpm // 5) * 5 upper_bound = lower_bound + 4 # Inclusive range: e.g., 130–134 folder_name = f"{lower_bound}-to-{upper_bound}" target_folder = dir_b / folder_name target_folder.mkdir(exist_ok=True) target_file = target_folder / file.name shutil.copy(file, target_file) print(f"[+] Copied {file.name} to {folder_name}") else: print(f"[-] No BPM found for {file.name}, skipping.")