A tool to download YouTube videos and audio with embedded thumbnails.
Project description
sgithidownloader
A Python tool to download YouTube videos and audio in various high-quality formats with embedded thumbnails and metadata.
Features
- 🎬 Download individual YouTube videos or entire playlists
- 🎵 Support for multiple video formats (MP4, WebM, AVI, MKV)
- 🎧 Convert and download audio in various formats (Opus, MP3, FLAC, AAC, etc.)
- 🖼️ Automatically embed video thumbnails as album art
- 📋 Include metadata (title, artist, album, date, description) in supported formats
- ✂️ Crop thumbnails to square format for better display
- 📊 Beautiful progress bars and colored output
- 🚀 Intuitive subcommand-based CLI interface
- 🌐 User-friendly web interface with real-time progress tracking
Installation
Prerequisites
- Python 3.8 or higher
- FFmpeg (for audio processing)
Install FFmpeg
On Ubuntu/Debian:
sudo apt update
sudo apt install ffmpeg
On macOS:
brew install ffmpeg
On Windows: Download from ffmpeg.org and add to PATH.
Install the Package
pip install sgithidownloader
For development:
git clone https://github.com/AceCJM/SgithiDownloader.git
cd SgithiDownloader
pip install -e .
Usage
The CLI uses a modern subcommand structure for clarity:
Download a Single Video
sgithidownloader video "https://www.youtube.com/watch?v=VIDEO_ID" -o /path/to/output/
Download Audio
sgithidownloader audio "https://www.youtube.com/watch?v=VIDEO_ID" -f opus -o /path/to/output/
Download a Playlist
sgithidownloader playlist "https://www.youtube.com/playlist?list=PLAYLIST_ID" -t audio -f mp3 -o /path/to/output/
List Available Formats
sgithidownloader formats
Get Help
# General help
sgithidownloader --help
# Help for specific command
sgithidownloader video --help
sgithidownloader audio --help
sgithidownloader playlist --help
Web Interface
For users who prefer a graphical interface, SgithiDownloader includes a beautiful web UI:
sgithidownloader webui
This will start a local web server at http://localhost:5000 where you can:
- 📱 Use an intuitive form-based interface
- 📊 Monitor download progress in real-time
- 📁 Browse and download completed files
- 🎯 Select formats with visual options
- 📂 Choose custom output directories
Web UI Features
- Real-time Progress: Watch downloads progress with live updates
- Format Selection: Easy dropdown menus for video/audio formats
- Download History: View and download previously completed files
- Responsive Design: Works on desktop and mobile devices
- Background Processing: Downloads run in the background without blocking the UI
Command Reference
sgithidownloader video
Download a single YouTube video.
sgithidownloader video URL [OPTIONS]
Options:
-o, --output DIR: Output directory (default: current directory)-f, --format FORMAT: Video format (mp4, webm, avi, mkv) (default: mp4)
sgithidownloader audio
Download audio from a YouTube video.
sgithidownloader audio URL [OPTIONS]
Options:
-o, --output DIR: Output directory (default: current directory)-f, --format FORMAT: Audio format (best, aac, alac, flac, m4a, mp3, opus, vorbis, wav) (default: best)
sgithidownloader playlist
Download all videos from a YouTube playlist.
sgithidownloader playlist URL [OPTIONS]
Options:
-o, --output DIR: Output directory (default: current directory)-t, --type TYPE: Download type (video or audio) (default: video)-f, --format FORMAT: Format (depends on type - video: mp4/webm/avi/mkv, audio: opus/mp3/etc.) (default: mp4)
sgithidownloader formats
Display all available video and audio formats with descriptions.
sgithidownloader webui
Start the web interface for graphical downloads.
sgithidownloader webui
Description: Launches a local web server at http://localhost:5000 with a user-friendly interface for downloading YouTube content.
Examples
# Download a single video in MP4 format
sgithidownloader video "https://www.youtube.com/watch?v=dQw4w9WgXcQ" -f mp4
# Download audio in high-quality Opus format
sgithidownloader audio "https://www.youtube.com/watch?v=dQw4w9WgXcQ" -f opus -o ~/Music/
# Download an entire playlist as MP3 files
sgithidownloader playlist "https://www.youtube.com/playlist?list=PLrAXtmRdnEQy4qtr5G1G8jQGzq9j9j9j" -t audio -f mp3 -o ~/Music/Playlist/
# Download a playlist of videos
sgithidownloader playlist "https://www.youtube.com/playlist?list=PLrAXtmRdnEQy4qtr5G1G8jQGzq9j9j9j" -o ~/Videos/
# List all available formats
sgithidownloader formats
Supported Formats
Audio Formats
- best: Auto-select best quality (recommended)
- opus: High quality, supports metadata
- mp3: Universal compatibility, supports metadata
- flac: Lossless, high quality
- aac: Good quality, wide support
- m4a: AAC in MP4 container
- alac: Apple Lossless
- vorbis: Open source, good quality
- wav: Uncompressed
Video Formats
- mp4: Most compatible format
- webm: Open format, good compression
- avi: Legacy format
- mkv: Advanced container format
Note: Metadata embedding is only supported for opus and mp3 formats.
Dependencies
- yt-dlp: For downloading and extracting media
- mutagen: For embedding metadata in audio files
- pytube: For playlist handling
- rich: For beautiful console output
- tqdm: For progress bars
- pillow: For image processing
- requests: For downloading thumbnails
- flask: For the web interface
License
MIT License - see LICENSE file for details.
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
Disclaimer
This tool is for personal use only. Respect YouTube's terms of service and copyright laws. The author is not responsible for misuse.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sgithidownloader-2.0.0.tar.gz.
File metadata
- Download URL: sgithidownloader-2.0.0.tar.gz
- Upload date:
- Size: 15.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77c1879592bafd34e4dca8ecc81d3754e692bd4e13c1a59727c0a3fb72236276
|
|
| MD5 |
b66625294b40dfe7c8ea30bb31fe0581
|
|
| BLAKE2b-256 |
9199baf9f136e15f87eb484e76bc417e53d33404d2c9aab6ac20aa78488f4ca7
|
File details
Details for the file sgithidownloader-2.0.0-py3-none-any.whl.
File metadata
- Download URL: sgithidownloader-2.0.0-py3-none-any.whl
- Upload date:
- Size: 18.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e3d782cfdd81f7f23939f8c361a19f5c2b0485e74292bcddfd420db9c3cfb920
|
|
| MD5 |
7f279276e5a94fc01901b8a53cc52d53
|
|
| BLAKE2b-256 |
0858147d6992a2dfe444c1a71a0551798d40fb1e6b4b3cfa9439c0fe22734b68
|