Skip to content

Native macOS app to download YouTube videos in up to 4K — with SponsorBlock, chapter splitting, and playlist support.

License

Notifications You must be signed in to change notification settings

bytePatrol/MediaPull

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Media Pull

Media Pull

Download YouTube videos in up to 4K quality with automatic ad & sponsor removal.

A native macOS desktop app built with Tauri, powered by yt-dlp and ffmpeg.

Release Downloads License macOS


Media Pull — Analyze and download any YouTube video in up to 4K


Features

Video Downloads

  • Up to 4K resolution — 2160p, 1440p, 1080p, 720p, or 480p
  • Audio-only mode — extract audio as high-quality M4A
  • Smart format selection — best codec per resolution (H.264, VP9, AV1)
  • GPU encoding — Apple VideoToolbox with automatic CPU fallback

SponsorBlock Integration

  • Automatic sponsor removal — strips ads, intros, outros, and filler
  • Community-powered — 8 configurable segment categories
  • Smart auto-disable — skips SponsorBlock when downloading chapters

Chapter Downloads

  • Split by chapter — download individual chapters as separate files
  • Instant splitting — stream copy, no re-encoding
  • Organized output — saves to Video Title/01 - Chapter Name.mp4

Playlist Downloads

  • Batch download — entire playlists sequentially
  • Selective downloading — pick which videos to include
  • Resilient — continues to next video on failure
  • Cancellable — stop after the current video finishes

Plus: trim/clip support, cookie authentication for age-restricted content, configurable bitrate encoding, searchable download history, one-click yt-dlp updates, real-time progress with speed & ETA, detailed activity logs, and keyboard shortcuts.


Screenshots

Media Pull — Main Interface

Clean, minimal interface — paste a URL and hit Analyze


Media Pull — Video Analyzed

Pick your quality, toggle SponsorBlock, enable subtitles or trim — then download


Media Pull — SponsorBlock Settings

Fine-tune which sponsor segments to remove with 8 community-powered categories


More screenshots

Media Pull — Settings

Configure cookies, encoding, output directory, and advanced options


Media Pull — Activity Log

Full activity log with export capability for debugging


Media Pull — Help

Built-in help with getting started guide, troubleshooting, and keyboard shortcuts


Installation

Download

Grab the latest .dmg from the Releases page.

  1. Open the .dmg file
  2. Drag Media Pull to your Applications folder
  3. On first launch, right-click the app and select Open (macOS Gatekeeper)

Requirements

Dependency Details
macOS 11+ Big Sur or later (Apple Silicon native)
yt-dlp brew install yt-dlp or managed by the app
ffmpeg brew install ffmpeg or bundled
Python 3.9+ Included with macOS

How It Works

Media Pull uses a multi-stage pipeline for maximum quality:

Analyze  →  Download Video  →  Download Audio  →  Merge & Encode  →  SponsorBlock  →  Done
               (yt-dlp)          (yt-dlp)         (ffmpeg/GPU)       (optional)
  1. Analyze — fetches video metadata, available formats, chapters, and thumbnail
  2. Download — downloads separate video and audio streams at the highest available quality
  3. Encode — merges streams into a single MP4 using hardware-accelerated H.264 encoding
  4. SponsorBlock — queries the SponsorBlock API and removes matched segments via ffmpeg
  5. Chapters (optional) — splits the encoded file into individual chapter files using stream copy

Architecture
┌──────────────────────────────────────────────┐
│              Frontend (HTML/CSS/JS)          │
│   index.html + src/main.js + components/    │
└──────────────┬───────────────────────────────┘
               │  Tauri invoke() / listen()
┌──────────────▼───────────────────────────────┐
│              Rust Backend (Tauri v2)         │
│   src-tauri/src/commands/*.rs               │
│   IPC bridge, process management            │
└──────────────┬───────────────────────────────┘
               │  stdin/stdout JSON lines
┌──────────────▼───────────────────────────────┐
│              Python Modules                  │
│   python/download.py  — download pipeline   │
│   python/analyze.py   — video/playlist info │
│   python/convert.py   — ffmpeg encoding     │
│   python/chapters.py  — chapter splitting   │
│   python/sponsorblock.py — segment removal  │
│   python/cookies.py   — browser cookie mgmt │
└──────────────────────────────────────────────┘
  • Frontend — vanilla HTML/CSS/JS, no framework, no build step
  • Rust — Tauri v2 shell, manages Python subprocesses, emits events to frontend
  • Python — each module writes JSON lines to stdout, parsed by Rust in real-time
Building from Source
# Prerequisites
brew install yt-dlp ffmpeg node rust

# Clone
git clone https://github.com/bytePatrol/MediaPull.git
cd MediaPull

# Install JS dependencies
npm install

# Development (hot-reload)
npx tauri dev

# Production build
npm run tauri:build

The built app will be at src-tauri/target/release/bundle/macos/Media Pull.app.

Configuration

Settings are stored in ~/.config/media-pull/:

File Purpose
config.json Output directory and app config
settings.json Cookies, SponsorBlock, encoding preferences
history.json Download history

License

MIT License. See LICENSE for details.


Built with Tauri + yt-dlp + ffmpeg

About

Native macOS app to download YouTube videos in up to 4K — with SponsorBlock, chapter splitting, and playlist support.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •