A desktop application for automatically organizing skydiving videos from GoPro, Insta360, and other action cameras. Organizes videos by date and groups them into jumps based on recording time.
- π― Smart Video Organization: Automatically organizes videos into date-based folders
- πͺ Jump Detection: Groups videos from the same jump (recorded within configurable time threshold)
- π± Modern GUI: User-friendly interface with real-time progress monitoring
- π Duplicate Prevention: Uses file hashing to prevent duplicate files
- π Detailed Logging: Comprehensive logging for monitoring and troubleshooting
- βοΈ Configurable: Customize video extensions, jump time thresholds, and naming preferences
- πΎ Name Preservation: Option to preserve original video names
[Screenshots will be added here]
Download the latest version from GitHub Releases
- macOS: 10.15 (Catalina) or later
- Windows: Windows 10 or later
- Storage: At least 1GB free space for the application
- Download the latest release from GitHub
- Extract the ZIP file
- Drag
Skydiving Video Organizer.app
to your Applications folder (macOS) - Right-click the app and select "Open" (first time only)
- Select your source directory and click "Organize Videos"
# Clone the repository
git clone https://github.com/yourusername/skydiving-video-organizer.git
cd skydiving-video-organizer
# Install dependencies
pip install pipenv
pipenv install
# Build macOS application
./build_app.sh
# Clone the repository
git clone https://github.com/yourusername/skydiving-video-organizer.git
cd skydiving-video-organizer
# Install dependencies
pip install pipenv
pipenv install
# Run directly
pipenv run python organize_videos.py
Note: Windows users should download the pre-built Windows release from GitHub Releases. Local Windows builds are not supported from macOS.
- Launch the app from your Applications folder
- Select source directory containing your skydiving videos
- Configure settings:
- Video extensions (default: .mp4, .mov, .MP4, .MOV)
- Jump time threshold (default: 20 minutes)
- Preserve original names (optional)
- Click "Organize Videos" to start processing
- Monitor progress in the log output
Videos are organized into a structured hierarchy:
Source Directory/
βββ organized/
βββ YYYY-MM-DD/
βββ Jump 1 - Video 1 - HH-MM (original_name).mp4
βββ Jump 1 - Video 2 - HH-MM (original_name).mp4
βββ Jump 2 - Video 1 - HH-MM (original_name).mp4
βββ ...
- Date folders:
YYYY-MM-DD
format - Jump grouping: Videos recorded within the time threshold are grouped as the same jump
- Video numbering: Sequential numbering within each jump
- Time stamp: Recording time in HH-MM format
- Original name: Preserved in parentheses (optional)
Supported formats: .mp4
, .mov
, .MP4
, .MOV
Add more extensions in the GUI.
Default: 20 minutes Videos recorded within this time window are considered part of the same jump.
When enabled, original filenames are preserved in parentheses:
Jump 1 - Video 1 - 14-30 (GOPR1234).mp4
Jump 1 - Video 1 - 14-30 (My awesome skydive).mp4
When disabled, clean names are used:
Jump 1 - Video 1 - 14-30.mp4
App won't open on macOS:
- Right-click the app and select "Open"
- Go to System Preferences > Security & Privacy and allow the app
Videos not being organized:
- Check that the source directory exists and contains video files
- Verify video file extensions are supported
- Check the log output for error messages
Wrong dates detected:
- The app uses file creation/modification times
- For GoPro files with incorrect timestamps, the app will prompt for manual correction
Duplicate files:
- The app uses file hashing to prevent duplicates
- Check the log for "already exists" messages
# Install dependencies
pipenv install
# Run tests (GUI tests must be run locally)
# pipenv run python test_gui.py
# Build application
./build_app.sh
skydiving-video-organizer/
βββ video_organizer_gui.py # Main GUI application
βββ organize_videos.py # Core organization logic
βββ build_app.sh # Build script
βββ video_organizer.spec # PyInstaller specification
βββ Pipfile # Python dependencies
βββ README.md # This file
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Issues: Report bugs and request features on GitHub Issues
- Discussions: Join the conversation on GitHub Discussions
- Initial release
- GUI application with modern interface
- Automatic video organization by date
- Jump detection and grouping
- Configurable settings
- Name preservation option
- Comprehensive logging
Made with β€οΈ for the skydiving community