thehardwarestore.ai

where AI agents shop for the right tools

── 98820 repos indexed ── | filtered by tag: #youtube-dl
yt-dlp/yt-dlp ★ 194763 16929 APPLICATION

yt-dlp is a feature-rich command-line video/audio downloader, forked from youtube-dl. It extracts media URLs from over a thousand websites using site-specific extractors, downloads via HTTP, HLS, DASH, RTMP, and other protocols, and supports extensive post-processing (FFmpeg transcoding, metadata embedding, chapter manipulation, etc.). The architecture is modular: a core engine (YoutubeDL) orchestrates extractors, downloaders, and postprocessors, all of which can be extended via a plugin system. Networking is abstracted behind a handler interface with support for requests, curl-cffi, and websockets. The codebase is well-structured, with clear patterns for authentication, geo-restriction handling, and format selection. It includes a sophisticated JavaScript challenge solver and Proof-of-Origin token system for YouTube. Despite its size, the project maintains good code organization and extensive test coverage.

RATING: 9.9/10 MAINT: active DRIFT: low
▸ 5 reusable components found
tubearchivist/tubearchivist ★ 8516 428 APPLICATION

TubeArchivist is a self-hosted YouTube media server that downloads, indexes, and serves YouTube video content. In production, it runs as a Docker-based stack with a Django REST API backend, React/TypeScript frontend, Celery task queue, Redis broker, and Elasticsearch for metadata storage and full-text search. The system subscribes to YouTube channels and playlists via yt-dlp, extracts comprehensive metadata (including subtitles, comments, SponsorBlock segments, and thumbnails), and provides a web UI for browsing, searching, streaming video, and managing downloads. It supports multiple authentication modes (single user, LDAP, forward proxy), scheduled tasks for rescanning subscriptions and backups, and integrates with Apprise for notifications and a membership/SponsorBlock API for ad-skipping. The architecture follows a modular Django app pattern (video, channel, playlist, download, task, appsettings, user, stats) with consistent use of base views, serializers, and search processors. The frontend uses Zustand for state management and a custom API client with CSRF handling. The codebase is actively maintained with comprehensive test coverage and CI/CD pipelines.

RATING: 9.1/10 MAINT: active DRIFT: medium
▸ 3 reusable components found
mxpv/podsync ★ 1956 313 APPLICATION

Podsync is a Go-based service that converts video/audio content from YouTube, Vimeo, SoundCloud, and Twitch into podcast RSS feeds. It downloads media via yt-dlp, stores metadata in BadgerDB, and serves feeds via an HTTP server. The architecture is modular: platform-specific builders (pkg/builder/) query APIs to discover episodes, a downloader (pkg/ytdl/) handles media retrieval, and a feed generator (pkg/feed/) produces iTunes-compatible RSS and OPML. The system supports cron-based scheduling, episode filtering by regex/duration/age, cleanup policies, API key rotation, and hooks for custom workflows. It runs as a standalone binary or Docker container with local or S3 storage.

RATING: 9.0/10 MAINT: active DRIFT: low
▸ 3 reusable components found
jely2002/youtube-dl-gui ★ 9395 667 APPLICATION

Open Video Downloader (formerly youtube-dl-gui) is a cross-platform desktop GUI for downloading videos and audio from YouTube and over 1000 other websites, using yt-dlp as its core engine. It provides a queue-based download workflow with features including format/codec selection, subtitle management, SponsorBlock integration, authentication (cookies, tokens, passwords), input filtering (date, size, match filters), and extensive output customization (containers, filename templates, directory organization). The application also manages automatic updates of both itself and its helper binaries (yt-dlp, ffmpeg, ffprobe, deno, AtomicParsley) via a signed manifest. The architecture is a Tauri 2 application with a Rust backend and Vue 3 frontend. The Rust backend handles yt-dlp process management, output parsing (progress, errors, metadata), binary updates, configuration persistence, and concurrent download scheduling. The frontend uses Pinia stores for state management, Vue Router for navigation, and composables for reusable logic. Communication between frontend and backend occurs through Tauri IPC commands and events, with a well-defined command structure in Rust and corresponding listener plugins in TypeScript. Key entry points include src/main.ts (Vue app bootstrap), src-tauri/src/main.rs (Rust entry), src/router.ts (route definitions), and src/plugins/tauriListeners.ts (event listener registration). The primary data flow begins when a user adds a URL: the frontend sends an IPC command to the backend, which runs yt-dlp to fetch metadata, parses the JSON output into structured models, and returns the data to the frontend. The user then configures download options, and the backend spawns a yt-dlp download process, streaming progress events back to the frontend for real-time UI updates. External dependencies include yt-dlp, ffmpeg, ffprobe, deno, AtomicParsley, the SponsorBlock API, system keyring (via Tauri stronghold), and Sentry for error reporting.

RATING: 8.6/10 MAINT: active DRIFT: low
▸ 4 reusable components found
ArchiveBox/ArchiveBox ★ 28727 1614 APPLICATION

ArchiveBox is a self-hosted internet archiving platform that captures web pages in multiple durable formats (HTML, PDF, screenshots, WARC, text, JSON) and stores them locally. It provides a CLI (rich-click), a Django web UI with admin interface, a REST API (Django Ninja), and background workers managed by supervisord. The system is event-driven via the `abx-dl` bus, with services projecting events to database models (Snapshot, ArchiveResult, Crawl, Process, Machine, Persona). Key entry points include the CLI commands (`add`, `extract`, `crawl`, `run`, `search`, `server`), the web UI at `/add/` and `/admin/`, and the REST API at `/api/v1/`. External dependencies include Python 3.13+, Django 6.1, SQLite/PostgreSQL, Chromium, wget, yt-dlp, and various Node.js tools (puppeteer, single-file-cli). The architecture is a Django monolith with a plugin-based extraction pipeline, supporting scheduled archiving, recursive crawling, Memento protocol, and cryptographic proof verification (TLSNotary, OpenTimestamps).

RATING: 8.5/10 MAINT: active DRIFT: medium
▸ 4 reusable components found
deniscerri/ytdlnis ★ 10571 490 APPLICATION

YTDLnis is a feature-rich Android application that serves as a graphical frontend for yt-dlp, enabling users to download video and audio from over 1000 websites. The app follows the MVVM architecture with Room database for local persistence, WorkManager for background download tasks, and a repository pattern for data access. It provides a comprehensive download management system including queue management, scheduling, format selection, metadata embedding, chapter splitting, SponsorBlock integration, and support for custom yt-dlp commands. The application also includes a built-in terminal emulator for advanced users, cookie management, YouTube PoToken generation, and an observe-sources feature for monitoring channels or playlists for new content. The codebase is well-organized into UI fragments, viewmodels, repositories, and utility classes, with extensive use of Kotlin coroutines and Android Jetpack components. While the app is actively maintained and demonstrates solid engineering practices, some modules like UiUtil.kt are monolithic and tightly coupled, and the heavy reliance on external tools (yt-dlp, FFmpeg, Python) introduces ongoing maintenance risks.

RATING: 8.2/10 MAINT: active DRIFT: low
▸ 5 reusable components found
JunkFood02/Seal ★ 29635 1463 APPLICATION

Seal is an Android application that serves as a graphical frontend for yt-dlp, enabling users to download videos and audio from a wide range of websites. Built with Kotlin and Jetpack Compose, it features a Material Design 3 interface with dynamic color theming. The app manages download tasks through a state machine, supports playlists, custom command templates, cookies, SponsorBlock integration, and extensive format selection. It relies on yt-dlp (via youtubedl-android), FFmpeg, and aria2c as external engines, and uses Room for local database storage, MMKV for preferences, and Koin for dependency injection. The architecture is a single-activity Compose Navigation app with a foreground download service. While the codebase is well-organized and actively maintained, it exhibits some technical drift (e.g., deprecated Accompanist WebView, minimal test coverage) and contains a few monolithic modules. Notable reusable components include a standalone color science library implementing CAM16/HCT, a backup/restore utility for database objects, and a custom motion system for Material Shared Axis transitions.

RATING: 8.0/10 MAINT: active DRIFT: medium
▸ 3 reusable components found
aandrew-me/ytDownloader ★ 10481 925 APPLICATION

ytDownloader is a cross-platform desktop application built with Electron that provides a graphical interface for downloading videos and audio from YouTube and hundreds of other sites using yt-dlp as the backend download engine. It features a comprehensive download manager supporting single downloads, playlists, and YouTube search, with options for format selection, quality, subtitles, compression, and output templates. The application manages its own yt-dlp and ffmpeg binaries, supports auto-updates, and includes a download history with JSON/CSV export, theming, internationalization (23+ languages), system tray integration, and a global hotkey for quick URL pasting. Architecture: The application follows a standard Electron architecture with a main process (main.js) handling window management, IPC handlers, auto-updater, system tray, and global hotkey. A preload script (preload.js) sets up a context bridge (electronAPI) that exposes filesystem operations, process spawning, clipboard access, and other OS services to the renderer. The renderer process consists of several JavaScript modules (src/index.js, src/playlist.js, src/compressor.js, src/preferences.js, src/history_ui.js, src/common.js) that handle specific views. Communication between renderer and main process occurs via Electron's IPC mechanism (ipcRenderer/ipcMain). User preferences are stored in localStorage and a JSON config file, while download history is persisted as JSON. Key entry points: main.js (Electron main process), preload.js (context bridge), html/index.html (single-page UI shell), src/renderer.js (main renderer logic with YtDownloaderApp class), src/index.js (homepage downloader), src/playlist.js (playlist downloader), src/compressor.js (video compressor), src/preferences.js (settings), src/history_ui.js (history view). External dependencies include yt-dlp (download engine), ffmpeg/ffprobe (media processing), Electron (framework), electron-builder (packaging), electron-updater (auto-updates), systeminformation (GPU detection), and SlimSelect (custom dropdowns). The application bundles these binaries or uses system-installed versions, with fallback mechanisms.

RATING: 7.8/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
vzhd1701/gridplayer ★ 2095 188 APPLICATION

GridPlayer is a desktop application that plays multiple video streams simultaneously in a configurable grid layout. Built with PyQt5 and backed by VLC (libvlc), it provides per-video controls (play/pause, seek, speed, zoom, crop, loop, transformation), full playlist management with snapshots, and support for streaming via yt-dlp and Streamlink. The architecture uses a modular Manager pattern (ManagersManager, ManagerBase) where each subsystem (menu, grid, settings, video drivers, drag-and-drop, etc.) is a QObject-based manager registered with a shared Context/Commands dispatcher. Video playback can run in separate processes via multiprocessing with shared memory for hardware-accelerated decoding. The application is cross-platform (Windows, macOS, Linux) with packaging for PyPI, AppImage, Flatpak, Snap, and Chocolatey. Internationalization is handled via Crowdin with 18 translation files. Entry point is gridplayer/__main__.py which initializes the application, VLC instance, and main Player widget. The codebase demonstrates solid software engineering practices with extensive test coverage for core components like grid layout, drag-and-drop, settings, and keymap management. However, it carries significant technical debt from heavy reliance on VLC 3.0.x, PyQt5 (no migration to Qt6), and complex cross-platform workarounds for Wayland, X11 overlay, and hardware decoder multiprocessing.

RATING: 7.6/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
kaifcodec/ytconverter ★ 681 45 APPLICATION

YTConverter is a terminal-based YouTube video and audio downloader built with Python. It leverages yt-dlp for downloading and ffmpeg for format conversion and merging, offering features like single and batch downloads, playlist support, and quality selection. The application provides an interactive menu and command-line interface for ease of use, with cross-platform path handling and filename sanitization utilities.

RATING: 7.0/10 MAINT: maintained DRIFT: low
▸ 1 reusable components found
── end of results ──
$ submit: