A modern GUI application for finding and managing duplicate video files on Windows.
-
Multiple Detection Strategies:
- Full Hash: SHA256 hash of entire file (most accurate)
- Partial Hash: SHA256 of file samples (1MB from start, middle, end) - optimized for large video files
- Size Only: Quick comparison based on file size
-
Smart Results Display:
- Duplicate groups sorted by oldest file first
- Oldest file highlighted as suggested "keeper"
- "Select All Except Oldest" button for each group
- Shows file size, modification date, and wasted space
-
File Operations:
- Delete selected files permanently
- Move files to temp folder preserving directory structure (format:
temp_folder/C/path) - Confirmation dialogs with file count and size information
-
Persistent Settings:
- Auto-saves all settings on changes
- Remembers selected directories, temp folder, and detection strategy
- Follows system appearance mode (dark/light theme)
- Install Python 3.8 or higher
- Install dependencies:
pip install -r requirements.txt
Run the application:
python main.py
- Add Directories: Click "Add Directory" to select folders to scan
- Choose Strategy: Select detection strategy (default: Partial Hash for video files)
- Set Temp Folder: Specify where to move duplicate files (optional)
- Start Scan: Click "Start Scan" to find duplicates
- Review Results: Examine duplicate groups (oldest file is highlighted in green)
- Take Action:
- Use "Select All Except Oldest" to quickly select duplicates
- Click "Delete Selected" to permanently remove files
- Click "Move Selected to Temp Folder" to safely relocate files
- GUI Framework: CustomTkinter (modern, themeable UI)
- Hashing: SHA256 algorithm
- Threading: Background scanning to prevent UI freeze
- Progress Tracking: Real-time display of files scanned, speed (MB/s), and elapsed time
- Structure Preservation: Moved files maintain original directory structure
main.py: Application entry pointgui.py: CustomTkinter GUI interfaceduplicate_finder.py: Duplicate detection algorithmsfile_operations.py: File deletion and moving operationsconfig_manager.py: Settings persistence (JSON)requirements.txt: Python dependenciesconfig.json: User settings (auto-generated)
- Optimized for large video files
- Partial Hash mode samples 1MB from start, middle, and end of files
- All settings auto-save on change
- Window size and position are preserved between sessions