return { "show": show, "season": season, "episode": episode, "quality": quality, "source": source.lower(), "extension": ext } def clean_rename(old_path: Path, output_dir: Path = None, dry_run=True): """ Rename a messy TV file to 'Show Name - S01E11 - Quality Source.ext' """ old_path = Path(old_path) info = parse_tv_filename(old_path.name)
# Pattern: show name + sXXeYY + optional quality + optional source pattern = r'^(.*?)\s+s(\d+)e(\d+)\s+(\d+p)?\s*-?\s*(\w+)?$' match = re.search(pattern, name, re.IGNORECASE) the pitt s01e11 720p web-dl
if dry_run: print(f"[DRY RUN] Would rename:\n {old_path.name}\n→ {new_name}\n") else: shutil.move(str(old_path), str(new_path)) print(f"✓ Renamed to: {new_name}") return { "show": show, "season": season, "episode": episode,