--- id: MemTensor/skills-vote/media-downloader version: "70cc6465" license: MIT install: manual updated: 2026-07-07 --- # media-downloader — Media Downloader pulls video and audio from over 1500 websites using yt-dlp, letting you choose resolution (480p through 4K), grab subtitles in multiple languages, and download entire playlists. Customize output naming, handle authentication across platforms, and manage format selection with precise control. Publisher: MemTensor · Stars: 293 · Updated: 2026-07-07 Install (manual): `git clone https://github.com/MemTensor/skills-vote` ## SKILL.md # Media Downloader Download video/audio from 1500+ websites using yt-dlp. Supports format selection, subtitles, playlists, and custom output naming. ## Quick Start ```bash # Basic download (best quality) yt-dlp "URL" # Specific resolution yt-dlp -f "bestvideo[height<=1080]+bestaudio/best[height<=1080]" "URL" # With subtitles yt-dlp --write-subs --sub-langs "en,zh" "URL" # Audio only yt-dlp -f "bestaudio" "URL" ``` ## Format Selection ### Resolution Presets | Request | Command | |---------|---------| | Best quality | `-f "bestvideo+bestaudio/best"` | | 4K | `-f "bestvideo[height<=2160]+bestaudio/best"` | | 1080p | `-f "bestvideo[height<=1080]+bestaudio/best"` | | 720p | `-f "bestvideo[height<=720]+bestaudio/best"` | | 480p | `-f "bestvideo[height<=480]+bestaudio/best"` | ### List Available Formats ```bash yt-dlp -F "URL" # Show all formats with codes ``` ### Advanced Format Selection ```bash # Prefer MP4 container yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" "URL" # Specific format code (from -F output) yt-dlp -f 137+140 "URL" # Merge to specific container yt-dlp --merge-output-format mkv "URL" ``` ## Subtitles ### Download Subtitles ```bash # Manual subtitles (human-created) yt-dlp --write-subs --sub-langs "en,zh,ja" "URL" # Auto-generated subtitles yt-dlp --write-auto-subs --sub-langs "en" "URL" # Both manual and auto yt-dlp --write-subs --write-auto-subs --sub-langs "en,zh" "URL" # Embed subtitles in video (MP4/MKV/WebM) yt-dlp --write-subs --embed-subs "URL" ``` ### List Available Subtitles ```bash yt-dlp --list-subs "URL" ``` ### Subtitle Format ```bash # Convert to SRT yt-dlp --write-subs --sub-format srt "URL" # Available: srt, ass, vtt, lrc ``` ## Output Naming ### Template Variables | Variable | Description | Example | |----------|-------------|---------| | `%(title)s` | Video title | My Video | | `%(id)s` | Video ID | dQw4w9WgXcQ | | `%(ext)s` | File extension | mp4 | | `%(upload_date)s` | Upload date | 20231215 | | `%(uploader)s` | Channel name | Rick Astley | | `%(playlist)s` | Playlist name | Best Songs | | `%(playlist_index)s` | Position in playlist | 01 | | `%(resolution)s` | Video resolution | 1920x1080 | ### Common Patterns ```bash # Default: title + extension yt-dlp -o "%(title)s.%(ext)s" "URL" # Date prefix yt-dlp -o "%(upload_date)s - %(title)s.%(ext)s" "URL" # Organized by uploader yt-dlp -o "%(uploader)s/%(title)s.%(ext)s" "URL" # Playlist with numbering yt-dlp -o "%(playlist)s/%(playlist_index)02d - %(title)s.%(ext)s" "URL" # Sanitize title (remove special chars) yt-dlp -o "%(title).100B.%(ext)s" "URL" # Limit to 100 bytes ``` ## Playlist Handling ```bash # Download entire playlist yt-dlp "PLAYLIST_URL" # Only video (not playlist) yt-dlp --no-playlist "URL" # Specific items (1-indexed) yt-dlp -I 1:5 "PLAYLIST_URL" # First 5 yt-dlp -I 1,3,5 "PLAYLIST_URL" # Items 1, 3, 5 yt-dlp -I -3: "PLAYLIST_URL" # Last 3 # Skip already downloaded yt-dlp --download-archive downloaded.txt "PLAYLIST_URL" ``` ## Platform-Specific Notes ### YouTube - Supports: videos, playlists, channels, shorts, live streams - Cookies may be needed for age-restricted/member content ### Bilibili - Use `--cookies-from-browser` for premium content - Subtitles: `--write-subs --sub-langs "zh-Hans"` ### TikTok / Douyin - Direct URL download works - Watermark may be present in some cases ### Twitter/X - Supports video tweets and spaces - Use `--cookies-from-browser` for private content ### Instagram - Stories require login - Use `--cookies-from-browser firefox` or `--cookies cookies.txt` ## Authentication ```bash # Browser cookies (recommended) yt-dlp --cookies-from-browser firefox "URL" yt-dlp --cookies-from-browser chrome "URL" # Cookie file yt-dlp --cookies cookies.txt "URL" # Username/password (limited support) yt-dlp -u USERNAME -p PASSWORD "URL" ``` ## Troubleshooting ### Common Issues | Issue | Solution | |-------|----------| | "Video unavailable" | Try `--cookies-from-browser` | | Slow download | Add `--concurrent-fragments 4` | | Format merge fails | Install ffmpeg | | Geo-blocked | Use `--geo-bypass` or proxy | ### Update yt-dlp ```bash yt-dlp -U # Update to latest stable ``` ## Complete Examples **Download YouTube video in 1080p with Chinese subtitles:** ```bash yt-dlp -f "bestvideo[height<=1080]+bestaudio/best" \ --write-subs --sub-langs "zh" \ -o "%(title)s.%(ext)s" \ "https://youtube.com/watch?v=..." ``` **Download TikTok video:** ```bash yt-dlp -o "%(uploader)s - %(title)s.%(ext)s" \ "https://tiktok.com/@user/video/..." ``` **Download Bilibili playlist:** ```bash yt-dlp --cookies-from-browser chrome \ -o "%(playlist)s/%(playlist_index)02d - %(title)s.%(ext)s" \ "https://bilibili.com/video/BV..." ``` **Download Twitter video:** ```bash yt-dlp --cookies-from-browser firefox \ "https://twitter.com/user/status/..." ``` [View on SkillFed](https://skillfed.io/MemTensor/skills-vote/media-downloader) · [View on GitHub](https://github.com/MemTensor/skills-vote)