This library does a simple yet the Lord's work; extends yt-dlp (YoutubeDL) and adds modelling support to the extracted YoutubeDL results using pydantic.
pip install yt-dlp-bonus -U
from yt_dlp_bonus import YoutubeDLBonus
yt = YoutubeDLBonus()
search_results = yt.search_and_form_model(
query="hello",
limit=1
)
print(search_results)
from yt_dlp_bonus import YoutubeDLBonus, Downloader
video_url = "https://youtu.be/S3wsCRJVUyg"
yt_bonus = YoutubeDLBonus()
extracted_info = yt_bonus.extract_info_and_form_model(url=video_url)
downloader = Downloader(yt=yt_bonus)
downloader.ydl_run(
extracted_info, video_format="bestvideo"
)
from yt_dlp_bonus import YoutubeDLBonus, Downloader
video_url = "https://youtu.be/S3wsCRJVUyg"
yt_bonus = YoutubeDLBonus()
extracted_info = yt_bonus.extract_info_and_form_model(url=video_url)
downloader = Downloader(yt=yt_bonus)
downloader.ydl_run(
extracted_info, video_format=None, audio_format="bestaudio"
)
Usage : $ yt-dlpb download-video <VIDEO-URL>
$ python -m yt_dlp_bonus download-video --help
Usage: python -m yt_dlp_bonus download-video [OPTIONS] URL
Download a youtube video
╭─ Arguments ──────────────────────────────────────────────────────────────────╮
│ * url TEXT Link pointing to a Youtube video [default: None] │
│ [required] │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --quality [144p|240p|360p|480p Video quality to │
│ |720p|1080p|2k|4k|8k download │
│ |best] [default: best] │
│ --dir DIRECTORY Directory to save the │
│ video to │
│ [default: │
│ /home/smartwa/git/sm… │
│ --format [webm|mp4] Video format to │
│ process ie. mp4 or │
│ webm │
│ [default: webm] │
│ --quiet --no-quiet Do not stdout │
│ anything │
│ [default: no-quiet] │
│ --subtitle-lang TEXT Subtitle language to │
│ embed in the video │
│ [default: None] │
│ --help Show this message and │
│ exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
Usage : $ yt-dlp download-audio <VIDEO-URL>
$ python -m yt_dlp_bonus download-audio --help
Usage: python -m yt_dlp_bonus download-audio [OPTIONS] URL
Download audio version of a YouTube video
╭─ Arguments ──────────────────────────────────────────────────────────────────╮
│ * url TEXT Link pointing to a Youtube video [default: None] │
│ [required] │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --quality [ultralow|low|medium|be Video quality to │
│ staudio] download │
│ [default: bestaudio] │
│ --dir DIRECTORY Directory to save the │
│ video to │
│ [default: │
│ /home/smartwa/git/smart… │
│ --format [webm|mp4] Video format to process │
│ ie. mp4 or webm │
│ [default: webm] │
│ --bitrate [64k|96k|128k|192k|256k Audio bitrate while │
│ |320k] converting to mp3 │
│ [default: None] │
│ --quiet --no-quiet Do not stdout anything │
│ [default: no-quiet] │
│ --help Show this message and │
│ exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
$ python -m yt_dlp_bonus --help
Usage: python -m yt_dlp_bonus [OPTIONS] COMMAND [ARGS]...
Download Youtube videos in a number of formats.
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --install-completion Install completion for the current shell. │
│ --show-completion Show completion for the current shell, to copy │
│ it or customize the installation. │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────╮
│ download-video Download a youtube video │
│ download-audio Download audio version of a YouTube video │
╰──────────────────────────────────────────────────────────────────────────────╯
Note
Incase requests are detected as coming from bot then consider using a proxy from Canada, USA or any other location that will work. For more information on how to bypass bot detection then consider going through this Wiki.