A modern, native macOS application for downloading videos with a clean and intuitive interface. Built with Swift and SwiftUI, Fetcha provides a powerful GUI for yt-dlp with browser cookie support and advanced features. Visit our official website at fetcha.stream.
- ๐ฅ Smart Format Selection - Automatically selects the best quality or lets you choose
- ๐ช Browser Cookie Support - Download private/age-restricted videos using cookies from Safari, Chrome, Brave, Firefox, and Edge
- ๐ฆ Queue Management - Drag & drop reordering, concurrent downloads, and smart prioritization
- ๐ฏ Multiple Download Locations - Separate folders for audio, video, and merged files
- ๐ Real-time Progress - Live speed, ETA, and progress tracking
- ๐ Auto-paste from Clipboard - Automatically detects and queues URLs
- ๐จ Modern SwiftUI Interface - Clean, native macOS design
- ๐ฑ Video Details Panel - Thumbnails, metadata, and format information
- โจ๏ธ Keyboard Navigation - Arrow keys and shortcuts for power users
- ๐ Debug Console - Built-in debugging tools for troubleshooting
- ๐ฆ Self-contained - Includes yt-dlp and ffmpeg, no dependencies needed
- ๐ Secure - Hardened runtime with proper entitlements
- ๐ Fast - Native Swift performance with efficient process management
- Download the latest
.dmg
from Releases - Open the DMG and drag Fetcha to Applications
- On first launch, right-click and select "Open" to bypass Gatekeeper
# Clone the repository
git clone https://github.com/yourusername/fetcha.git
cd fetcha
# Open in Xcode
open yt-dlp-MAX.xcodeproj
# Build and run (โ+R)
- Paste a URL - Copy any video URL and paste it into the app
- Select Format - Choose quality and format (or use auto-selection)
- Download - Click download or enable auto-queue for instant downloads
- Manage Queue - Drag to reorder, right-click for options
To download private or age-restricted videos:
- Log into the video platform in your browser
- Select the browser in Preferences
- The app will automatically use your browser's cookies
Fetcha/
โโโ Models/ # Data structures (VideoInfo, DownloadTask)
โโโ Views/ # SwiftUI components
โโโ Services/ # Business logic (YTDLPService, DownloadQueue)
โโโ Resources/ # Bundled binaries (yt-dlp, ffmpeg)
โโโ docs/ # Documentation
The app follows MVVM architecture with:
- Reactive UI using Combine and SwiftUI
- Event-driven architecture for future extensibility
- Storage abstraction for cloud provider integration
- Clean separation of concerns
- Advanced metadata editing
- Batch processing from playlists
- Custom naming templates
- Post-processing scripts
- Stage A: API server for automation
- Stage B: Cloud storage integration (Dropbox, Google Drive, S3)
- Stage C: Semantic search with AI
- Stage D: Media server replacement (Jellyfin/Plex alternative)
See FUTURE_EVOLUTION.md for detailed plans.
- macOS 11.0+
- Xcode 13+
- Swift 5.0+
# Debug build
xcodebuild -project yt-dlp-MAX.xcodeproj -scheme yt-dlp-MAX -configuration Debug
# Release build
xcodebuild -project yt-dlp-MAX.xcodeproj -scheme yt-dlp-MAX -configuration Release
# Package for distribution
./package_for_distribution.sh
# Run tests
xcodebuild test -project yt-dlp-MAX.xcodeproj -scheme yt-dlp-MAX
# Test cookies
./test_cookies.sh
Contributions are welcome! Please read ARCHITECTURE_PRINCIPLES.md before contributing to understand the codebase structure and design principles.
- 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 GNU General Public License v3.0 (GPL-3.0) due to its inclusion of GPL-licensed FFmpeg components. See the LICENSE file for full details.
The application bundles FFmpeg binaries compiled with GPL-licensed codecs (libx264, libx265), requiring the entire distribution to comply with GPL terms.
This software uses code of FFmpeg licensed under the GPLv2+ and its source can be downloaded from https://github.com/FFmpeg/FFmpeg
- yt-dlp - The powerful download engine
- ffmpeg - Media processing
- SwiftUI community for inspiration and examples
- Issues: GitHub Issues
- Discussions: GitHub Discussions