# YouTube Channel Archiver A cross-platform Python application for downloading and archiving entire YouTube channels using `yt-dlp`. Features both a graphical user interface (GUI) and command-line interface (CLI) for maximum flexibility. Perfect for content preservation, offline viewing, and creating personal archives of your favorite channels. ## ✨ Features - 🖥️ **Dual Interface**: Easy-to-use GUI and powerful command-line interface - 🌍 **Cross-platform**: Works on macOS, Linux, and Windows - 📦 **Automatic setup**: Installs `yt-dlp` dependency automatically if needed - 📁 **Smart organization**: Creates channel-specific folders with date-organized files - 🔄 **Resume support**: Tracks downloaded videos to avoid duplicates and resume interrupted downloads - 🎥 **Quality options**: Choose from multiple video qualities or audio-only downloads - 📝 **Metadata preservation**: Downloads video descriptions, info, and thumbnails - ⚡ **Error resilient**: Continues downloading even if individual videos fail - 🎯 **Flexible input**: Supports various YouTube URL formats and channel IDs - 🛑 **Stoppable downloads**: Cancel downloads anytime with proper cleanup ## 🚀 Quick Start ### GUI Version (Recommended for beginners) ```bash # Clone the repository git clone https://git.ewnix.net/phlux/yt-channel-archiver cd youtube-channel-archiver # Run the GUI (it will install yt-dlp automatically if needed) python youtube_archiver_gui.py ``` ### Command Line Version ```bash # Run the CLI script directly python youtube_archiver.py "https://www.youtube.com/@channelname" ``` ## 📋 Requirements - **Python 3.6+** - **tkinter** (usually included with Python - needed for GUI only) - **pip** (for automatic yt-dlp installation) - Internet connection The application will automatically install `yt-dlp` if it's not already available on your system. ## 🔧 Installation ### Option 1: Direct Download Download both `youtube_archiver_gui.py` and `youtube_archiver.py` and run directly - no additional setup required! ### Option 2: Clone Repository ```bash git clone https://git.ewnix.net/phlux/yt-channel-archiver.git cd youtube-channel-archiver chmod +x *.py # On Unix systems ``` ### Option 3: Manual yt-dlp Installation If you prefer to install yt-dlp manually: ```bash pip install yt-dlp ``` ## 📖 Usage ### GUI Interface 1. **Launch the GUI:** ```bash python youtube_archiver_gui.py ``` 2. **Fill in the details:** - Enter the YouTube channel URL - Choose an output directory (or use default) - Adjust quality and options as needed 3. **Start downloading:** - Click "Download Channel" - Monitor progress in real-time - Click "Stop Download" to cancel if needed #### GUI Features: - **Live Progress**: Real-time output and progress indication - **Quality Selection**: Dropdown menu for video quality - **Options**: Checkboxes for audio-only, thumbnails, and metadata - **Directory Browser**: Easy folder selection - **Status Updates**: Clear feedback on download status ### Command Line Interface #### Basic Usage ```bash python youtube_archiver.py "CHANNEL_URL" ``` #### Supported URL Formats - `https://www.youtube.com/@channelname` - `https://www.youtube.com/c/channelname` - `https://www.youtube.com/user/username` - `https://www.youtube.com/channel/UCxxxxxxxxxxxxxxxxxxx` - `UCxxxxxxxxxxxxxxxxxxx` (Channel ID only) #### Command Line Options | Option | Description | Default | |--------|-------------|---------| | `--output`, `-o` | Output directory | Current directory | | `--quality`, `-q` | Video quality (`best`, `worst`, `720p`, `1080p`, `480p`) | `best` | | `--audio-only`, `-a` | Download audio only | False | | `--no-thumbnails` | Skip thumbnail downloads | False | | `--no-metadata` | Skip metadata files | False | | `--help`, `-h` | Show help message | - | #### Examples ```bash # Download all videos in best quality python youtube_archiver.py "https://www.youtube.com/@examplechannel" # Download to specific directory with 720p quality python youtube_archiver.py "https://www.youtube.com/@examplechannel" --output ./Downloads --quality 720p # Audio-only downloads python youtube_archiver.py "https://www.youtube.com/@musicchannel" --audio-only # Minimal download (no thumbnails or metadata) python youtube_archiver.py "https://www.youtube.com/@newschannel" --no-thumbnails --no-metadata ``` ## 📁 Output Structure Both interfaces create the same organized directory structure: ``` Channel_Name/ ├── download_archive.txt # Tracks downloaded videos ├── 20240115 - Video Title 1.mp4 ├── 20240115 - Video Title 1.info.json ├── 20240115 - Video Title 1.description ├── 20240115 - Video Title 1.webp ├── 20240116 - Video Title 2.mp4 └── ... ``` ### File Types - **`.mp4/.webm/etc`**: Video files - **`.info.json`**: Video metadata (duration, views, description, etc.) - **`.description`**: Video description text - **`.webp/.jpg`**: Thumbnails - **`download_archive.txt`**: List of downloaded video IDs (prevents re-downloading) ## 🔄 Resuming Downloads Both interfaces automatically track downloaded videos in `download_archive.txt`. If a download is interrupted: 1. Simply restart the application/command 2. Already downloaded videos will be skipped 3. New or failed videos will be downloaded ## 🖼️ GUI Screenshots The GUI provides an intuitive interface with: - **Channel URL Input**: Easy copy-paste of YouTube URLs - **Directory Selection**: Browse button for choosing download location - **Quality Options**: Dropdown for video quality selection - **Download Options**: Checkboxes for audio-only, thumbnails, and metadata - **Progress Monitoring**: Real-time download progress and output - **Status Bar**: Current operation status ## ⚠ Legal Considerations - **Respect copyright**: Only download content you have permission to archive - **Personal use**: This tool is intended for personal archiving and offline viewing - **YouTube ToS**: Be aware of YouTube's Terms of Service regarding content downloading - **Fair use**: Consider fair use principles in your jurisdiction ## 🛠 Troubleshooting ### Common Issues **GUI won't start** - Ensure Python includes tkinter: `python -c "import tkinter"` - On some Linux distributions: `sudo apt-get install python3-tk` **"yt-dlp not found" error** - Both interfaces should install it automatically - If not, manually install: `pip install yt-dlp` **Permission denied errors** - On Unix systems: `chmod +x *.py` - Run with appropriate permissions **Network/download errors** - The application continues on errors - check the output for specific failures - Some videos may be unavailable due to geographic restrictions or privacy settings **Python not found** - Ensure Python 3.6+ is installed and in your PATH - Try `python3` instead of `python` on some systems ### Getting Help If you encounter issues: 1. Check the console/GUI output for specific error messages 2. Ensure you have a stable internet connection 3. Verify the channel URL is correct and publicly accessible 4. Try running with lower quality settings to test with smaller files ## 🤝 Contributing Contributions are welcome! Please feel free to: - Report bugs - Suggest features - Submit pull requests - Improve documentation - Add new GUI features ## 📄 License This project is provided as-is for educational and personal archiving purposes. Please ensure your use complies with applicable laws and YouTube's Terms of Service. ## 🙏 Acknowledgments - Built using [yt-dlp](https://github.com/yt-dlp/yt-dlp) - the excellent YouTube downloading library - GUI built with Python's built-in tkinter library for maximum compatibility - Inspired by the need for content preservation and offline access --- **⭐ Star this repository if you find it useful!**