Files
2026-01-03 13:30:35 -05:00

42 lines
1.7 KiB
Python

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.")