42 lines
1.7 KiB
Python
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.")
|