A Windows desktop app for skydivers to quickly copy and organize jump videos from SD cards to their computer.
- Insert SD card — SkyCopy auto-detects removable drives and shows the file tree with video thumbnail previews
- Fill in the fields:
- Date — Pre-filled with today's date (MM-dd-yyyy)
- Jump Number — The jump number for the current load
- Diver — Pick from saved presets or type a new name (saved automatically for next time)
- Select a video — Videos are sorted newest-first; click one to see a larger preview
- Click 📥 Download — The video is copied to:
Desktop/<Date>/Jump<Number>/<Diver>.<ext>
Fields persist while the app is running, so you can swap SD cards and just change the Diver name to quickly copy each diver's video. The original files on the SD card are never modified or deleted.
- Auto SD card detection — Scans for removable drives on startup and via the Refresh button
- Video thumbnail previews — Shows thumbnails in the file tree and a larger preview panel
- Diver presets — Saves diver names for quick reuse across sessions
- Progress tracking — Real-time copy progress with file size display
- Safe copying — Read-only access to source; incomplete files are cleaned up on failure
- Overwrite protection — Warns before overwriting existing files
- Date validation — Ensures the date field is in MM-dd-yyyy format
- In-app help — Click the ❓ Help button for usage instructions
Desktop/
└── 02-16-2026/
├── Jump1/
│ ├── Alice.mp4
│ ├── Bob.mp4
│ └── Charlie.mp4
└── Jump2/
├── Alice.mp4
└── Bob.mp4
SkyCopy/
├── App.xaml / App.xaml.cs # WPF application entry point
├── MainWindow.xaml # Main UI layout (XAML)
├── MainWindow.xaml.cs # Main window code-behind (event handlers, file copy logic)
├── SkyCopyHelpers.cs # Testable helper methods (sanitize, format, validate, presets)
├── ThumbnailExtractor.cs # Windows Shell API thumbnail extraction
├── app.ico # Application icon (parachute)
├── SkyCopy.csproj # Project file (.NET 8, WPF)
├── SkyCopy.sln # Solution file
├── README.md # This file
├── .gitignore # Git ignore rules
└── SkyCopy.Tests/ # Unit tests
├── SkyCopy.Tests.csproj # Test project (xUnit)
└── SkyCopyHelpersTests.cs # 70 tests for helper methods
Requires .NET 8 SDK.
# Build
dotnet build -c Release
# Run tests
dotnet build SkyCopy.Tests\SkyCopy.Tests.csproj -c Release
dotnet test SkyCopy.Tests\SkyCopy.Tests.csproj -c Release --no-buildThe executable will be at bin\Release\net8.0-windows\SkyCopy.exe.
Creates a single .exe that runs on any Windows x64 machine without needing .NET installed:
dotnet publish SkyCopy.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=trueThe standalone executable will be at bin\Release\net8.0-windows\win-x64\publish\SkyCopy.exe.
By @gecaso based on @outcoldman original idea, credit to Denis.
MIT