Skip to content

mstrslv13/Fetcha

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

3 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Fetcha


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.

macOS Swift License

โœจ Features

Core Functionality

  • ๐ŸŽฅ 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

UI/UX

  • ๐ŸŽจ 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

Technical

  • ๐Ÿ“ฆ Self-contained - Includes yt-dlp and ffmpeg, no dependencies needed
  • ๐Ÿ”’ Secure - Hardened runtime with proper entitlements
  • ๐Ÿš€ Fast - Native Swift performance with efficient process management

๐Ÿš€ Installation

Option 1: Download Release (Recommended)

  1. Download the latest .dmg from Releases
  2. Open the DMG and drag Fetcha to Applications
  3. On first launch, right-click and select "Open" to bypass Gatekeeper

Option 2: Build from Source

# 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)

๐ŸŽฏ Usage

  1. Paste a URL - Copy any video URL and paste it into the app
  2. Select Format - Choose quality and format (or use auto-selection)
  3. Download - Click download or enable auto-queue for instant downloads
  4. Manage Queue - Drag to reorder, right-click for options

Browser Cookie Support

To download private or age-restricted videos:

  1. Log into the video platform in your browser
  2. Select the browser in Preferences
  3. The app will automatically use your browser's cookies

๐Ÿ—๏ธ Architecture

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

๐Ÿ”ฎ Roadmap

Phase 5 - Pro Features (Next)

  • Advanced metadata editing
  • Batch processing from playlists
  • Custom naming templates
  • Post-processing scripts

Future Evolution

  • 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.

๐Ÿ› ๏ธ Development

Requirements

  • macOS 11.0+
  • Xcode 13+
  • Swift 5.0+

Building

# 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

Testing

# Run tests
xcodebuild test -project yt-dlp-MAX.xcodeproj -scheme yt-dlp-MAX

# Test cookies
./test_cookies.sh

๐Ÿ“ Contributing

Contributions are welcome! Please read ARCHITECTURE_PRINCIPLES.md before contributing to understand the codebase structure and design principles.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“„ License

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.

Why GPL-3.0?

The application bundles FFmpeg binaries compiled with GPL-licensed codecs (libx264, libx265), requiring the entire distribution to comply with GPL terms.

FFmpeg Attribution

This software uses code of FFmpeg licensed under the GPLv2+ and its source can be downloaded from https://github.com/FFmpeg/FFmpeg

๐Ÿ™ Acknowledgments

  • yt-dlp - The powerful download engine
  • ffmpeg - Media processing
  • SwiftUI community for inspiration and examples

๐Ÿ’ฌ Support



Fetcha Logo



Built with โค๏ธ using Swift and SwiftUI