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.
Cobalt is a privacy-focused media downloader web application with a SvelteKit frontend and Node.js/Express API backend. Users paste a URL from supported platforms (YouTube, TikTok, Instagram, Twitter/X, Vimeo, Reddit, SoundCloud, Twitch, Bilibili, and 15+ others) and receive a downloadable media file. The architecture is a monorepo with three packages: @imput/cobalt-web (static frontend), @imput/cobalt-api (processing backend), and @imput/version-info (build-time version helper). The API acts as a fancy proxy - it fetches media streams from source platforms, optionally remuxes/transcodes via FFmpeg (server-side or client-side via libav.js WebAssembly), and streams results back without ever writing to disk. The frontend handles URL input, settings management (localStorage with migration), a processing queue with Web Workers for client-side FFmpeg, i18n (EN/RU), and PWA features. Key data flows: user submits URL → API validates/matches service → extracts stream URLs → returns tunnel/redirect/picker response → frontend either streams directly, proxies via API, or processes locally via Web Workers. External dependencies: FFmpeg (via ffmpeg-static), youtubei.js for YouTube, hls-parser, undici for HTTP, Redis (optional for rate limiting), Cloudflare Turnstile (optional bot protection).
MediaGo is a cross-platform media download manager that enables users to download videos from a wide range of sources, including HLS/m3u8 streams, YouTube, Bilibili, TikTok, Douyin, Xiaohongshu, and direct URLs. It is built as a monorepo with a Go backend (REST API + SSE events), an Electron desktop shell, a web UI (React 19), a mobile player UI, and a Chrome MV3 browser extension. The backend manages a download task queue that orchestrates external binaries (yt-dlp, BBDown, ffmpeg, aria2c, N_m3u8DL-RE) via PTY/exec runners, provides real-time progress through SSE, and includes an MCP server for AI agent integration. The Electron app embeds a Chromium webview for media source sniffing and supports share intents, ad blocking, and device mode. The browser extension detects media resources on pages and dispatches them to the local or remote MediaGo server via HTTP or a custom protocol.
yutto is a production-grade CLI application for downloading videos, subtitles, danmaku (bullet comments), and metadata from Bilibili. In production it resolves user-supplied URLs (UGC videos, bangumi anime, paid cheese courses, favourites, collections, watch-later lists) against Bilibili's private JSON APIs, normalizes responses into typed Pydantic download requests, and runs a planner/executor pipeline: immutable DownloadPlan construction (output paths, codec/quality selection), concurrent range-based downloading, FFmpeg muxing, and writing of NFO/SRT/ASS artifacts. It also ships an experimental WebSocket JSON-RPC server mode (`yutto serve`) for remote task submission, querying, cancellation, and live event streaming with token authentication.
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.
torlink is a terminal-based torrent client that combines a rich Text User Interface (TUI) with headless daemon modes for torrent search, download, seeding, and file serving. Built with TypeScript, Node.js, and React (via Ink for TUI rendering), it provides zero-configuration access to curated torrent sources across categories like games, movies, TV, and anime. The application features parallel source querying, result deduplication, automatic seeding with optional file deletion, and persistent state management for queues, history, and seeds. The architecture follows a modular design: the TUI layer (src/ui) handles interactive modes, daemon services (src/daemon) manage headless operations (serve, files, watch, seed, attach), core download logic (src/download) manages the torrent queue and engine integration, and source plugins (src/sources) fetch torrents via RSS, APIs, or web scraping. Key utilities include atomic file writes, resilient HTTP fetching, caching, and format helpers. The CLI entry point (scripts/cli-entry.cjs) handles Node version checks and WebRTC fallbacks before launching the appropriate mode. External dependencies include Ink for TUI rendering, webtorrent for torrent handling, node-datachannel for WebRTC fallbacks, and various HTTP clients. The project maintains active development with recent commits, comprehensive test coverage, and CI workflows. While dependency pinning indicates managed compatibility risks, the codebase demonstrates strong engineering practices through isolated utilities, reactive patterns for concurrent searches, and cross-platform path handling.
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.
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.
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.
This is a high-quality Qt/C++ desktop application that provides a powerful, user-friendly GUI frontend for multiple CLI-based media download tools such as yt-dlp, gallery-dl, aria2c, wget, and more. It supports basic, batch, and playlist downloads, subscription management, library browsing, proxy configuration, theming, translation into 18+ languages, and an extensible plugin system via JSON engine definitions. The architecture separates concerns cleanly: an engine abstraction layer (baseEngine) with polymorphic backends, a comprehensive logging and progress system, reusable table widgets, and utility functions for process execution and network operations. While the codebase shows some signs of sprawling header files and per-engine output parsing that is fragile to upstream changes, overall it demonstrates solid engineering practices, cross-platform CI/CD, and active maintenance. It is not a data research or analytical repository; it is purely an application for downloading media.
This repository is a single-file userscript (Tampermonkey/Greasemonkey) that adds download buttons to the Telegram webapp for images, GIFs, videos, and audio messages, even in channels where downloading is disabled. The script runs via polling (setInterval) to detect media viewers and inject buttons. It downloads videos and audio using chunked HTTP range requests, assembling the parts into a Blob or using the File System Access API for streaming writes. Images are downloaded directly via anchor element click. The code is self-contained, with no external dependencies, and includes a progress bar for video downloads. The architecture is a classic userscript pattern: DOM manipulation via polling, with carefully crafted download logic that handles large files and supports both standard and restricted content. The script is actively maintained, with frequent updates and a large user base (5.4k+ stars).
This repository provides a set of Python CLI tools for downloading media (images, videos, GIFs) and text from Twitter/X. It uses Twitter's internal GraphQL API (not the official API) and requires a valid user cookie for authentication. The primary entry point is `main.py`, which downloads media from a specified user's timeline, with options to include retweets, highlights, likes, and time range filtering. Additional scripts handle downloading by hashtag or advanced search (`tag_down.py`), downloading replies to a specific tweet or user (`reply_down.py`), downloading only text tweets (`text_down.py`), and downloading profile information (`profile_down.py`). The tool generates CSV logs and optional Markdown files, supports concurrent async downloads, and includes a caching mechanism to avoid re-downloading. It is a monolithic application with shared utility modules for CSV generation, Markdown generation, caching, and URL handling. The code is functional and well-documented in Chinese, but exhibits some code duplication and tight coupling to Twitter's API structure. It is actively maintained and adapted to Twitter's API changes.
You-Get is a command-line media downloader that scrapes web pages to extract and download video, audio, and image files from over 100 websites including YouTube, Bilibili, and Youku. The architecture is a monolithic Python package with a modular extractor system: each supported site has a dedicated module under `src/you_get/extractors/` that implements a consistent interface (module-level `download` and `download_playlist` functions). The core engine in `common.py` handles URL resolution, HTTP requests with retry, proxy support, cookie loading, and download orchestration via external tools like ffmpeg or rtmpdump. The CLI entry point in `__main__.py` provides options for format selection, playlist handling, JSON output, and streaming to media players. While the project is functionally complete and has sustained community interest for over a decade, the codebase shows signs of organic growth: heavy reliance on fragile regex-based scraping, global state management, and embedded API keys. The most technically notable component is the standalone MP4 merger in `join_mp4.py` that implements ISO BMFF atom parsing without external dependencies.