Kevin Thompson 018ddb1a0f Update README
2025-07-23 14:47:54 -05:00
2025-07-23 14:47:54 -05:00
2025-07-23 14:27:58 -05:00
2025-07-23 14:27:58 -05:00

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

# 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

  1. Launch the GUI:

    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

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: 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
  • 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 - 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!

Description
No description provided
Readme 40 KiB
1.0 Latest
2025-07-24 01:56:53 +00:00
Languages
Python 100%