A PyQt5-based desktop application for downloading complete YouTube channels with metadata. The application provides a user-friendly interface to manage YouTube channel downloads, view channel content, and configure download settings.
- Browse YouTube channels in an integrated web view
- Download complete YouTube channels with metadata
- Configure preferred video resolution
- Multi-threaded downloads for better performance
- Save channel and video metadata
- Resume interrupted downloads
- Visual feedback for downloaded/pending videos
- Configurable download settings (API key, output directory, threads)
- Channel list management
- Python 3.8 or higher
- YouTube Data API v3 key (Get it here)
- Git (for cloning the repository)
- Clone the repository:
git clone https://github.com/huhabla/yvd.git
cd yvd- Create and activate a virtual environment:
# Windows
python -m venv venv
venv\Scripts\activate
# Linux/MacOS
python -m venv venv
source venv/bin/activate- Install required packages:
pip install -r requirements.txt- Create a
channels.txtfile in the application directory with YouTube channel handles (one per line):
joerogan
veritasium
- Launch the application:
python main.py- Open Settings from the File menu and configure:
- YouTube API Key
- Output Directory
- Preferred Resolution
- Maximum Download Threads
- Channels File Location
-
Browse Channels
- Select a channel from the left sidebar
- Use the integrated web view to browse channel content
- Use back/forward buttons for navigation
-
Download Videos
- Select a channel
- Click "Download/Update" button
- In the download dialog:
- Click "List Videos" to fetch video list
- Click "Start Download" to begin downloading
- Monitor progress in the output window
- View video metadata in the metadata pane
-
Monitor Progress
- Green items: Already downloaded
- Red items: Pending download
- Progress messages in output window
- Multi-threaded Downloads: Configurable number of simultaneous downloads
- Resolution Selection: Choose preferred video quality
- Metadata Storage: Saves video information in JSON format
- Download Resume: Continues from last successful download
- Progress Tracking: Visual feedback for download status
- Channel Management: Easy addition/removal of channels
- Settings Persistence: Saves configuration between sessions
main.py: Application entry pointmain_window.ui: Main interface layoutdownload_dialog.ui: Download manager layoutchannel_downloader.py: Core download functionalitysettings_dialog.py: Settings managementchannels.txt: Channel list
- PyQt5: GUI framework
- PyTubeFix: YouTube download engine
- Google API Client: YouTube Data API interface
- Pydantic: Data validation
- Requires a valid YouTube Data API key
- Respects YouTube's terms of service
- Downloads are saved in channel-specific folders
- Metadata is stored alongside videos
- Internet connection required
-
API Key Issues
- Verify key in settings
- Check API quota limits
- Ensure API is enabled in Google Console
-
Download Failures
- Check internet connection
- Verify output directory permissions
- Check available disk space
-
Performance Issues
- Adjust maximum threads in settings
- Close other resource-intensive applications
- Check system resources