Skip to main content

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.)
  • 🔄 Convert existing local audio and video files between supported formats
  • 🖼️ 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

Convert A Local File

sgithidownloader convert ./input.wav -f mp3
sgithidownloader convert ./clip.mp4 -f webm -o ./converted/

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
  • 🔄 Upload and convert existing local media files
  • 📂 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 convert

Convert a local media file into another supported format.

sgithidownloader convert INPUT [OPTIONS]

Options:

  • -f, --format FORMAT: Target format (audio: aac, alac, flac, m4a, mp3, opus, vorbis, wav; video: mp4, webm, avi, mkv)
  • -o, --output PATH: Output directory or output file path (default: alongside the input file)

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

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. 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

sgithidownloader-2.1.1.tar.gz (15.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sgithidownloader-2.1.1-py3-none-any.whl (18.4 MB view details)

Uploaded Python 3

File details

Details for the file sgithidownloader-2.1.1.tar.gz.

File metadata

  • Download URL: sgithidownloader-2.1.1.tar.gz
  • Upload date:
  • Size: 15.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for sgithidownloader-2.1.1.tar.gz
Algorithm Hash digest
SHA256 7d9b1fada38f491b072d3063ff7d1cd40df606dfa9527e86e4de4d1fa7c50037
MD5 fc24f93d61e6a52810c21ad37edb5eaa
BLAKE2b-256 11ea2e92d5eb98fec5f7a1531f6f922985ebe341b20520c8c11a1fb2e2d6209b

See more details on using hashes here.

File details

Details for the file sgithidownloader-2.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for sgithidownloader-2.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c6eb5a69addb5e2f9759e8fed18ba996f216422b649efcbc57665910a22efa63
MD5 4be30c3326e262f18f78fc921a45acd0
BLAKE2b-256 53f0a74aed4b88133566bfd1c3698ea5c27215e6d4a2d2a7cb18c4238898ab62

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page