Library GoLD YouTube downloader (video / audio / shorts / playlists) with smart caching and auto quality handling
Project description
gold-dl — The simplest YouTube downloader (CLI + Python API)
Table of Contents
- Installation
- Upgrade
- Quick Start (CLI)
- Options
- Examples
- Python API
- Screenshots
- Todo
- Contributing
- License
- Badges / Usage
Channel Library : https://t.me/Source_Goldd Contact / Developer : @CB6BB
Installation
- Verify you have Python 3.x:
python --version
- Install gold-dl:
pip install gold-dl --break-system-packages
(If your environment does not require --break-system-packages, you may omit it.)
Upgrade
pip install --upgrade gold-dl --break-system-packages
Quick Start (CLI)
gold-dl "YOUTUBE_LINK" [PATH]
- "YOUTUBE_LINK" (required) the YouTube video or playlist URL (wrap in quotes).
- [PATH] (optional) destination folder; defaults to the current working directory.
Common options
- -v, --version
- Show current version and exit.
- -a, --audio
- Download audio only (skip video selection).
- -f, --footage
- Download video only (skip audio-only flows).
Icons used in this README
- Download
- Audio
- Video
- Folder
Examples
# Download a video (interactive selection if needed)
gold-dl "https://www.youtube.com/watch?v=VIDEO_ID"
# Download audio only
gold-dl "https://www.youtube.com/watch?v=VIDEO_ID" --audio
# Download to a specific folder
gold-dl "https://www.youtube.com/watch?v=VIDEO_ID" ./downloads
# Download a playlist (you can select items or download all)
gold-dl "https://www.youtube.com/playlist?list=PLAYLIST_ID"
Python API (async) Use the async DownloadService to integrate gold-dl into bots and other apps.
import os
import asyncio
from typing import Union
from gold_dl import DownloadService
async def download(bot_username, link, video: Union[bool, str] = None):
link = link
loop = asyncio.get_running_loop()
def audio_dl():
try:
service = DownloadService(url=link, path="downloads/%(id)s.%(ext)s", quality="best", is_audio=True)
result = service.download()
return result
except Exception:
return None
def video_dl():
try:
service = DownloadService(url=link, path="downloads/%(id)s.%(ext)s", quality="360p", is_audio=False)
result = service.download()
return result
except Exception:
return None
if video:
downloaded_file = await loop.run_in_executor(None, video_dl)
return downloaded_file
else:
downloaded_file = await loop.run_in_executor(None, audio_dl)
return downloaded_file
# Example runner:
# asyncio.run(download("botname", "https://www.youtube.com/watch?v=VIDEO_ID", video=None))
Direct Link (New) Use the async DownloadService to integrate gold-dl into bots and other apps.
import os
import asyncio
from typing import Union
from gold_dl import DownloadService
async def download(bot_username, link, video: Union[bool, str] = None):
link = link
loop = asyncio.get_running_loop()
def audio_dl():
try:
service = DownloadService(url=link, quality="best", is_audio=True)
stream_url = service.get_direct_url(is_audio=True)
if stream_url:
return stream_url
except Exception:
return None
def video_dl():
try:
service = DownloadService(url=link, quality="360p", is_audio=False)
stream_url = service.get_direct_url(is_audio=False)
if stream_url:
return stream_url
except Exception:
return None
if video:
stream_url = await loop.run_in_executor(None, video_dl)
return stream_url
else:
stream_url = await loop.run_in_executor(None, audio_dl)
return stream_url
# Example runner:
# asyncio.run(download("botname", "https://www.youtube.com/watch?v=VIDEO_ID", video=None))
Screenshots
- Download video and choose save location
- Choose download type (audio / video)
- Select resolution when downloading video
- Playlist selection UI (pick single video(s) or download all)
Todo
- Notification System
- Auto Update package if new version available
- Support Optional Numbering for Downloaded Playlist Videos
- Improve code health
- API (Python)
- Download Playlist
- Support setting for default download folder
- Download thumbnails with videos and audio
Contributing
- Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
- Ensure code follows the existing style and add tests where applicable.
- Update the README and other documentation as necessary.
License
- See the LICENSE file in the project root (and the PyPI license badge above).
Project details
Release history Release notifications | RSS feed
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 gold_dl-2026.1.20.2.tar.gz.
File metadata
- Download URL: gold_dl-2026.1.20.2.tar.gz
- Upload date:
- Size: 21.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8fc264329af76334619b2a1b8996eb14ec6be05c79367d6c963b205aac0b192
|
|
| MD5 |
28a7b486e08845a06ceb7e97ce8ad259
|
|
| BLAKE2b-256 |
9c6432fd8b5d4a5b25d6985085cc4fa9fcb871aebfe18ec352fe8a2bedcfed59
|
File details
Details for the file gold_dl-2026.1.20.2-py3-none-any.whl.
File metadata
- Download URL: gold_dl-2026.1.20.2-py3-none-any.whl
- Upload date:
- Size: 23.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dd265d1050dc02d2298114fe6a7080d6d8f461a74323246ed2dfcad8f3d7cc0a
|
|
| MD5 |
459acf2746c35638677bd5425195d09f
|
|
| BLAKE2b-256 |
add915f9ecd7b7a1400bb585655d19744afff0ed748a3fda5d6dd0e391a7a7a1
|