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.
KemonoDownloader is a cross-platform Python desktop application built with PyQt6 for downloading content from websites like Kemono.cr, Coomer.st, and Pawchive.pw, which aggregate content from platforms such as Patreon, Fanbox, and Gumroad. The application features a tabbed interface including modules for post downloading, creator archiving, settings management, and a built-in thumbnail downloader. It supports concurrent downloads, file deduplication via a hash database, proxy and Tor integration for anonymity, customizable file naming and folder structures, and multi-language support (English, Japanese, Korean, Chinese). A companion browser extension adds download buttons directly to the supported sites' web pages. The architecture employs a modular, tab-based design with each tab encapsulating specific functionality. Core operations such as API requests, file detection, and downloads are handled in background threads using QThread to maintain UI responsiveness. The application utilizes a SQLite-based hash database (HashDB) for efficient duplicate detection, implements robust HTTP request handling with retry mechanisms and exponential backoff, and provides thread-local session management to avoid SSL conflicts on Windows. Settings are persisted using QPlatform-specific storage, and the user interface updates dynamically for language or theme changes without requiring a restart. While the application is highly functional and demonstrates strong engineering practices in areas like concurrency control and error handling, its complexity arises from the intricate threading model and deep integration with the specific APIs of the target websites. This introduces a maintenance risk should those websites change their structure or availability. Nevertheless, the codebase exhibits clear separation of concerns, comprehensive test coverage, and reusable patterns such as the HashDB deduplication system, which could be adapted for use in other projects requiring reliable duplicate file detection.
VidBee is a multi-platform media downloader and transcript workspace. The primary product is an Electron desktop app that downloads video/audio from 1000+ sites via yt-dlp, runs local speech-to-text transcription (sherpa-onnx Whisper/SenseVoice/Qwen3/Parakeet families) with speaker diarization in an isolated worker process, and provides an AI agent chat, summarization, translation, and FAQ layer over the resulting transcripts. It also ships a self-hosted Fastify API with a TanStack Start web client, a CLI wrapper around yt-dlp that can run fully in-process or connect to the desktop/API, and a browser extension (WXT) that hands video URLs to the desktop app via a token-authenticated loopback HTTP bridge. An RSS subscription engine with SQLite CAS leader election supports feed auto-download. Architecturally this is a pnpm monorepo built around host-neutral packages: packages/task-queue (FSM-driven job queue with priority scheduler, retry backoff, watchdog, and SQLite/memory persistence adapters), packages/transcription (ASR pipeline, caption parsing, speaker clustering, chunk manifests), packages/downloader-core (yt-dlp args, format selection, cookie handling, oRPC contracts), packages/subscriptions-core (feed parsing, scheduler, leader election), plus packages/ui, packages/i18n, packages/db, and packages/logger. The desktop, API, CLI, and web hosts share these packages, and oRPC contract schemas are explicitly kept byte-equal across hosts. The desktop renderer uses React 19, TanStack Router, Jotai, and Tailwind 4; the main process uses an IPC-decorator pattern with roughly fifteen typed services. Engineering quality is consistently above average: shared contracts with zod validation, swappable persistence adapters, a pure-function task FSM, security-conscious extension token auth, and an SSRF-guarded remote image proxy. The main weaknesses are duplication and sync fragility: near-identical download UI components exist in both desktop and web apps, several overlapping error classifiers must be kept manually in sync, the API hardcodes APP_VERSION separately from package versions, and legacy migration/back-compat paths (task-queue projection to legacy DownloadItem shapes, migrate-history scripts) accumulate complexity. This is an application repository, not data research: the ASR and speaker-clustering code is product engineering rather than a research artifact, though the transcription package is a genuinely reusable pipeline.
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.
Goph is a lightweight Go SSH client library that simplifies SSH connections with a clean API. It supports password, private key, agent, and keyboard-interactive authentication; SOCKS5 proxy and jump host tunneling; file upload/download via SFTP; command execution with context cancellation; and script execution from readers or files. The library uses functional options for configuration, proper known hosts verification by default, and exposes a reusable dialer for multiple connections. It is well-structured, idiomatic Go with decent test coverage and modern dependency versions (Go 1.25, recent crypto/net packages). The commit timestamps appear anomalous (year 2026), but the repo shows active development.
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.
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.
EhViewer is a high-performance Android client for browsing, reading, and downloading galleries from the E-Hentai / ExHentai image hosting sites. It is a modern fork of the classic EhViewer app, built entirely with Kotlin Multiplatform for shared logic and Jetpack Compose with Material Design 3 for the UI. The architecture is modular (app, core/common, core/data, core/ui, core/i18n) and leverages Rust via JNI for performance-critical HTML parsing and image processing (border detection, QR code detection, WebP animation). The app features a full-featured reader with multiple reading modes, a foreground download service with speed tracking, comprehensive offline support via Room/SQLite, and integration with GitHub releases for updates. The codebase is actively maintained, uses the latest Kotlin, Compose, and Ktor versions, and demonstrates strong engineering practices with clean abstractions, coroutine-based reactive state, and type-safe preferences. It is a dedicated application project with no data science or research components.
Lux is a fast and simple video downloader CLI tool written in Go. It supports downloading videos, images, and audio from over 40 websites including YouTube, Bilibili, TikTok, Instagram, Twitter, and many Chinese streaming platforms. The tool operates as a single binary with a rich set of command-line options for selecting quality, downloading playlists, resuming interrupted downloads, multi-threaded downloading, and integration with aria2 for RPC-based downloads. Architecturally, Lux follows a plugin-based extractor pattern. Each supported website has its own extractor module under `extractors/`, registered via `init()` functions into a global map keyed by domain. The main entry point is `main.go`, which parses CLI flags via `urfave/cli` and dispatches to the appropriate extractor. Extracted video metadata (streams, quality, size) is passed to the downloader, which handles HTTP requests, progress bars, file merging via ffmpeg, and optional subtitle embedding. Key data flows: URL input → domain detection → extractor selection → HTML/API scraping → stream metadata extraction → downloader (single or multi-threaded) → file output. External dependencies include ffmpeg for merging and subtitle embedding, and various third-party Go libraries for HTTP requests, HTML parsing, JavaScript execution (for TikTok signing), and progress bars. The codebase is well-organized with clear separation of concerns, extensive test coverage for individual extractors, and CI workflows that run weekly to verify extractor functionality. While many extractors rely on fragile regex-based scraping of HTML pages, the overall architecture is solid and the downloader implements robust features like resume support and configurable retry logic.
WiiUDownloader is a cross-platform desktop application written in Go that downloads Wii U games, updates, DLC, and demos directly from Nintendo's CDN servers. It is the primary open-source replacement for the abandoned Wii U USB Helper. The application provides a GTK3-based GUI (via gotk3) on all three major platforms, with a command-line core library. Key features include automatic decryption using embedded common keys and title keys derived from PBKDF2, resume-capable downloads with SHA-256 segment verification via a journal file, hash-tree validation for hashed content, FST/U8 archive extraction, and a queue-based batch download system. The architecture cleanly separates the core download/decryption logic (root package) from the GUI (cmd/WiiUDownloader), with reusable internal format parsers for TMD, FST, and U8. No title keys are required; the system generates tickets and certificates on the fly. The project is actively maintained, with recent commits and CI/CD pipelines producing Windows, macOS, and Linux builds.
Gopeed is a high-performance, cross-platform download manager written in Go with a Flutter frontend. It supports HTTP/HTTPS, BitTorrent, Magnet links, ed2k, and HLS streaming protocols. The backend provides a REST API, CLI, and an MCP server for AI agent integration. The frontend is a full-featured Flutter app for desktop (Windows, macOS, Linux), mobile (Android, iOS), and web. Key features include multi-connection downloads with slow-start and work-stealing, a JavaScript extension system (goja) with polyfills for fetch, XHR, Blob, and streams, archive extraction (zip, 7z, rar), webhook/script notifications, and browser impersonation via TLS fingerprinting. The architecture is modular: protocol-specific fetchers implement a common interface, the download engine manages task lifecycle and persistence (BoltDB), and the UI communicates via RPC or FFI. The codebase is well-tested with extensive integration tests and includes a legacy Flutter UI (ui/flutter_old) alongside the current one, indicating an ongoing migration from GetX to Riverpod.
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.
spotify_sync is a CLI application that downloads Spotify-liked songs and playlists by matching them to Deezer equivalents via ISRC and downloading the matched tracks. It features a modular architecture with separate components for Spotify API interaction, Deezer matching/downloading, persistent data storage, and configuration management. Key features include multi-threaded downloading, scheduling, Pushover notifications, and Plex library scanning via Autoscan. The application supports multiple profiles for different Spotify accounts and includes robust configuration validation with legacy migration capabilities.
This repository is a full-stack self-hosted media download manager and library preparation layer centered on yt-dlp. The backend is implemented in Python using aiohttp, SQLite (via SQLAlchemy), and includes a structured feature-based architecture (auth, presets, tasks, conditions, downloads, streaming, notifications, ytdlp integration). The frontend is a Nuxt 3 / Vue 3 single-page application with comprehensive i18n support. Core capabilities include automated download scheduling with cron-like task definitions, conditional filtering, Cloudflare challenge solving, real-time WebSocket updates, streaming via on-the-fly HLS transcoding with hardware acceleration fallback, and a browser extension for quick URL submission. The codebase demonstrates good engineering practices: event bus for decoupled communication, singleton-based service containers, repository pattern for data access, custom migration framework, and extensive async test coverage. Notable external dependencies are yt-dlp (core downloader), ffmpeg (transcoding), curl_cffi (impersonation), and apprise (notifications). While the architecture is modular and well-organized, there is some code duplication across CRUD repositories and migration files, and tight coupling to yt-dlp internals via custom patches. The project is actively maintained with frequent commits, a large test suite, and clear containerization support.
A Python CLI tool for searching, downloading, and organizing doujinshi (self-published manga) from configurable mirror sites. The architecture uses a plugin system defined via abstract base classes (BaseParser, BaseModel, BaseSerializer, BasePlugin) and discovered through Python entry points, allowing support for multiple sites (e.g., nhentai) without modifying the core code. The core package handles CLI argument parsing, asynchronous image downloading via httpx/asyncio with retry and proxy support, export to CBZ/PDF/ZIP, generation of HTML viewers for local browsing, and SQLite-based download history tracking. The codebase is well-structured with clear separation between core utilities and plugin-specific logic, though it contains duplicated viewer template files that indicate incomplete cleanup.
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.
Litube is an advanced Android WebView wrapper for YouTube, providing ad-free playback, native video/audio downloading, background play, Picture-in-Picture (PiP), SponsorBlock integration, and a customizable extension system. It uses a hybrid architecture where YouTube's mobile site is rendered in a WebView via `YoutubeFragment`, while video playback is handled natively using AndroidX Media3 (ExoPlayer) with custom `YoutubeHttpDataSource` for streaming. The app includes a full-featured download manager (multi-threaded chunked downloads, audio/video merging with MP4Parser), a queue system, a mini-player, and gesture controls. It reverse-engineers YouTube's streaming protocols using the NewPipe Extractor and generates PoTokens through a WebView-based mechanism to bypass bot detection. The application is structured as a single-module Gradle project with Dagger Hilt for dependency injection, MMKV for key-value storage, and Gson for serialization. It has extensive JavaScript injection (`init.js`) to manipulate the YouTube DOM for features like hiding Shorts, displaying dislikes, and injecting a custom settings page. While primarily an application, it includes data extraction components (stream catalog, delivery analysis) that could be considered a research layer for understanding YouTube's streaming infrastructure.
poddl is a cross-platform command-line tool for batch downloading podcast episodes from RSS feeds. It fetches the RSS XML via libcurl, parses it using regex to extract episode titles, URLs, and publication dates, then downloads media files to a specified output directory. The tool supports a variety of options including downloading individual episodes, ranges, newest-first ordering, filename formatting with episode numbers and dates, whitespace handling, and early termination on existing files. The codebase is a monolithic C++11 application split into several classes: Client (HTTP), Parser (RSS parsing), Helper (utilities), FileSystem (cross-platform file operations), and a standalone HtmlCoder for decoding HTML entities. The architecture is clean and modular, with clear separation of concerns, though the use of regex for XML parsing is a known fragility. The repository includes precompiled binaries for Windows and Linux, and the build requires only g++ and libcurl. It is a straightforward, well-structured utility with no external runtime dependencies beyond libcurl.