A complete cross-platform YouTube upload/download solution with both CLI and Desktop GUI applications.
- Beautiful modern GUI with PyQt6
- Upload videos with full metadata (title, description, tags, category, privacy, thumbnail)
- Download any YouTube video
- Manage your uploaded videos
- Real-time progress tracking
- Cross-platform (macOS & Windows)
- Upload videos from terminal
- Download videos from YouTube
- List your channel videos
- Batch processing support
- Perfect for automation and scripts
macOS:
cd desktop-app
./install.sh
./youtube-uploaderWindows:
cd desktop-app
install.bat
youtube-uploader.batcd cli-tool
./youtube --auth # First time authentication
./youtube --upload video.mp4 --title "My Video"- Go to Google Cloud Console
- Create a new project
- Enable "YouTube Data API v3":
- APIs & Services β Library β Search "YouTube Data API v3" β Enable
- Create OAuth 2.0 credentials:
- APIs & Services β Credentials β Create Credentials β OAuth client ID
- Application type: Desktop app
- Click "Create" and download the JSON file
macOS: Save as ~/.youtube_uploader/client_secrets.json
Windows: Save as C:\Users\YourName\.youtube_uploader\client_secrets.json
Or use the Browse button in the desktop app's Settings tab!
Desktop App: Settings tab β "Authenticate with YouTube"
CLI: ./youtube --auth
youtube-upload-tool/
βββ cli-tool/ # Command-line tool
β βββ youtube # Wrapper script
β βββ youtube-upload.py # Main Python script
β βββ YOUTUBE_SETUP.md # Setup guide
β βββ QUICKREF.md # Quick reference
β βββ venv/ # Python virtual environment
β
βββ desktop-app/ # Desktop GUI application
β βββ youtube_uploader.py # Main app
β βββ install.sh # macOS installer
β βββ install.bat # Windows installer
β βββ youtube-uploader # macOS launcher
β βββ README.md # Desktop app docs
β βββ QUICKSTART.md # Quick start guide
β βββ DESKTOP_APP.md # Detailed guide
β βββ venv/ # Python virtual environment
β
βββ README.md # This file
Upload a video:
- Open the app
- Go to π€ Upload tab
- Browse and select video file
- Enter title, description, tags
- Click "π Upload to YouTube"
Download a video:
- Go to π₯ Download tab
- Paste YouTube URL
- Click "π₯ Download Video"
Manage videos:
- Go to π Manage tab
- Click "π Load My Videos"
- Select and open videos
Upload with metadata:
./youtube --upload video.mp4 \
--title "My Video Title" \
--description "Video description..." \
--tags "tag1,tag2,tag3" \
--category 22 \
--privacy public \
--thumbnail thumbnail.jpgDownload a video:
./youtube --download "https://youtube.com/watch?v=VIDEO_ID" --output ./videosList recent videos:
./youtube --list --limit 10Available YouTube categories:
- 22 = People & Blogs (default)
- 1 = Film & Animation
- 2 = Autos & Vehicles
- 10 = Music
- 15 = Pets & Animals
- 17 = Sports
- 20 = Gaming
- 23 = Comedy
- 24 = Entertainment
- 25 = News & Politics
- 26 = Howto & Style
- 27 = Education
- 28 = Science & Technology
- public - Visible to everyone
- unlisted - Only people with link can view
- private - Only you can view
All dependencies are automatically installed by the installers:
- PyQt6 - GUI framework
- google-api-python-client - YouTube API
- google-auth-oauthlib - OAuth authentication
- google-auth-httplib2 - HTTP transport
- yt-dlp - Video downloader
- Python: 3.8 or higher
- Operating System: macOS 10.14+ or Windows 10+
- Internet: Required for uploads/downloads
- Disk Space: ~100 MB for dependencies
- Desktop App:
desktop-app/README.md - Quick Start:
desktop-app/QUICKSTART.md - Detailed Guide:
desktop-app/DESKTOP_APP.md - CLI Setup:
cli-tool/YOUTUBE_SETUP.md - CLI Reference:
cli-tool/QUICKREF.md
The desktop app features:
- π€ Upload tab with metadata forms
- π₯ Download tab
- π Manage tab for your videos
- βοΈ Settings tab for authentication
- Uses OAuth 2.0 for secure authentication
- No API keys stored in code
- Credentials encrypted in token.json
- Respects Google's security policies
- Go to Settings tab (desktop) or run
./youtube --auth(CLI) - Follow browser prompts
- Create OAuth credentials (see Setup above)
- Save file to config directory
- Or use Browse button in Settings
- Check internet connection
- Verify video format (MP4 recommended)
- Ensure title is not empty
- Check authentication status
MIT License - Free to use for personal and commercial projects.
Contributions are welcome! Feel free to submit issues or pull requests.
For detailed instructions, check the documentation in the respective folders.
Made with β€οΈ for content creators everywhere.
π Start uploading today!