import os import csv from collections import defaultdict def find_duplicate_basenames(root_directory, valid_extensions): # Dictionary to store basenames and their corresponding file paths basenames_to_paths = defaultdict(list) # Traverse the directory tree for dirpath, dirnames, filenames in os.walk(root_directory): for filename in filenames: full_path = os.path.join(dirpath, filename) basename, extension = os.path.splitext(filename) if extension.lower() in valid_extensions: basenames_to_paths[basename].append(full_path) # Filter basenames with more than one file duplicate_basenames = {basename: paths for basename, paths in basenames_to_paths.items() if len(paths) > 1} return duplicate_basenames def export_to_csv(duplicate_files, output_csv): with open(output_csv, "w", newline="") as csvfile: fieldnames = ["Basename", "File Paths"] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() for basename, paths in duplicate_files.items(): writer.writerow({"Basename": basename, "File Paths": ", ".join(paths)}) if __name__ == "__main__": server_directory = r"\\truenas\isolation\videos" # Replace with your server directory video_extensions = {".mp4", ".mkv", ".avi", ".mov"} # Add more video extensions if needed duplicate_files = find_duplicate_basenames(server_directory, video_extensions) if duplicate_files: output_csv_file = "duplicate_video_files.csv" export_to_csv(duplicate_files, output_csv_file) print(f"Duplicate video files exported to {output_csv_file}") else: print("No duplicate video files found.")