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)
# 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
# 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
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:
pip install yt-dlp
📖 Usage
GUI Interface
-
Launch the GUI:
python youtube_archiver_gui.py
-
Fill in the details:
- Enter the YouTube channel URL
- Choose an output directory (or use default)
- Adjust quality and options as needed
-
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
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
# 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
: Thumbnailsdownload_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:
- Simply restart the application/command
- Already downloaded videos will be skipped
- 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 ofpython
on some systems
Getting Help
If you encounter issues:
- Check the console/GUI output for specific error messages
- Ensure you have a stable internet connection
- Verify the channel URL is correct and publicly accessible
- 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 - 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!