# Show actual codec info info = get_media_info(new_path) if info: # Extract video bitrate, audio channels (simplified) if 'video' in info and 'bit_rate' in info: print(" ✓ Media info extracted") else: print(" (dry run, no changes made)") if == " main ": if len(sys.argv) < 2: print(f"Usage: sys.argv[0] /path/to/movies [--do-it]") sys.exit(1)
The Dark Knight Trilogy (1080p).mkv The Dark Knight 2008 (1080p).mkv And it will alert you if any file is incomplete or corrupted. THE DARK KNIGHT TRILOGY 1080p BDRip AAC x264-to...
def organize_directory(directory, dry_run=True): """Scan directory, rename files, and verify.""" directory = Path(directory) for filepath in directory.iterdir(): if filepath.suffix.lower() not in ['.mkv', '.mp4', '.avi']: continue # Show actual codec info info = get_media_info(new_path)
match = PATTERN.search(filepath.name) if not match: print(f"Skipping (no match): filepath.name") continue dry_run=True): """Scan directory
def clean_filename(match): """Convert parsed scene name to a Plex-friendly format.""" groups = match.groupdict() # Example output: "The Dark Knight Trilogy (1080p).mkv" return f"groups['title'] (groups['resolution'])groups['ext']"
def get_media_info(filepath): """Use ffprobe to get actual codec, bitrate, and audio channels.""" cmd = [ 'ffprobe', '-v', 'quiet', '-print_format', 'json', '-show_streams', '-show_format', str(filepath) ] try: result = subprocess.run(cmd, capture_output=True, text=True, check=True) return result.stdout except (subprocess.SubprocessError, FileNotFoundError): return None