Skip to main content

Python3 library for downloading YouTube Videos.

Project description

pytubefix

PyPI - Downloads GitHub Sponsors PyPI - License Read the Docs GitHub Tag

Python3 library for downloading YouTube Videos.


install

pip install pytubefix

Quickstart

mp4 video download highest resolution:

from pytubefix import YouTube
from pytubefix.cli import on_progress
 
url = "url"
 
yt = YouTube(url, on_progress_callback = on_progress)
print(yt.title)
 
ys = yt.streams.get_highest_resolution()
ys.download()

to download audio only .m4a (MPEG-4 AAC audio codec):

from pytubefix import YouTube
from pytubefix.cli import on_progress
 
url = "url"
 
yt = YouTube(url, on_progress_callback = on_progress)
print(yt.title)
 
ys = yt.streams.get_audio_only()
ys.download()

if you want to download complete playlists:

from pytubefix import Playlist
from pytubefix.cli import on_progress
 
url = "url"

pl = Playlist(url)

for video in pl.videos:
    ys = video.streams.get_audio_only()
    ys.download()

if you want to add authentication

from pytubefix import YouTube
from pytubefix.cli import on_progress
 
url = "url"

yt = YouTube(url, use_oauth=True, allow_oauth_cache=True, on_progress_callback = on_progress)
           
ys = yt.streams.get_highest_resolution()

ys.download() # you will only get the request to authenticate once you download

if you want to download a video to a specific directory:

from pytubefix import YouTube
from pytubefix.cli import on_progress

url = "url"

yt = YouTube(url, on_progress_callback = on_progress)
ys = yt.streams.get_highest_resolution()

ys.download(output_path="path/to/directory")

Subtitle/Caption Tracks:

viewing available subtitles:

from pytubefix import YouTube

yt = YouTube('http://youtube.com/watch?v=2lAe1cqCOXo')
subtitles = yt.captions

print(subtitles)

printing the subtitle tracks:

from pytubefix import YouTube
 

yt = YouTube('http://youtube.com/watch?v=2lAe1cqCOXo')

caption = yt.captions['a.en']
print(caption.generate_srt_captions())

now you can save subtitles to a txt file:

from pytubefix import YouTube
 

yt = YouTube('http://youtube.com/watch?v=2lAe1cqCOXo')

caption = yt.captions['a.en']
caption.save_captions("captions.txt")

Using Channels:

get the channel name:

from pytubefix import Channel

c = Channel("https://www.youtube.com/@ProgrammingKnowledge/featured")

print(f'Channel name: {c.channel_name}')

to download all videos from a channel:

from pytubefix import Channel

c = Channel("https://www.youtube.com/@ProgrammingKnowledge")

print(f'Downloading videos by: {c.channel_name}')

for video in c.videos:
    download = video.streams.get_highest_resolution().download()

Search:

>>> from pytubefix import Search
>>> 
>>> results = Search('Github Issue Best Practices')
>>> 
>>> for video in results.videos:
...     print(f'Title: {video.title}')
...     print(f'URL: {video.watch_url}')
...     print(f'Duration: {video.length} sec')
...     print('---')
... 
Title: Good Practices with GitHub Issues
URL: https://youtube.com/watch?v=v1AeHaopAYE
Duration: 406 sec
---
Title: GitHub Issues Tips and Guidelines
URL: https://youtube.com/watch?v=kezinXSoV5A
Duration: 852 sec
---
Title: 13 Advanced (but useful) Git Techniques and Shortcuts
URL: https://youtube.com/watch?v=ecK3EnyGD8o
Duration: 486 sec
---
Title: Managing a GitHub Organization Tools, Tips, and Best Practices - Mark Matyas
URL: https://youtube.com/watch?v=1T4HAPBFbb0
Duration: 1525 sec
---
Title: Do you know the best way to manage GitHub Issues?
URL: https://youtube.com/watch?v=OccRyzAS4Vc
Duration: 534 sec
---
>>>

Using Filters

>>> from pytubefix.contrib.search import Search, Filter
>>> 
>>> 
>>> f = {
...     'upload_data': Filter.get_upload_data('Today'),
...     'type': Filter.get_type("Video"),
...     'duration': Filter.get_duration("Under 4 minutes"),
...     'features': [Filter.get_features("4K"), Filter.get_features("Creative Commons")],
...     'sort_by': Filter.get_sort_by("Upload date")
... }
>>> 
>>> s = Search('music', filters=f)
>>> for c in s.videos:
...     print(c.watch_url)
... 
https://youtube.com/watch?v=_Rq8MzYz0YU
https://youtube.com/watch?v=YHPGM8nBk3U
https://youtube.com/watch?v=m98WShs7MLE
https://youtube.com/watch?v=-vBqfC3Nir0
https://youtube.com/watch?v=LbtrnCjopwk
https://youtube.com/watch?v=pfl2ga6AS3c
https://youtube.com/watch?v=TzNk2ygEU4c
https://youtube.com/watch?v=yQfXVRKvA70
https://youtube.com/watch?v=G5tQX990XU0
https://youtube.com/watch?v=4LQzYMhtXV8
https://youtube.com/watch?v=BOLGwdjCSAo
https://youtube.com/watch?v=CgSH3Ww3MHs
https://youtube.com/watch?v=_43tx98VEWc
https://youtube.com/watch?v=wLDRGZaBEoQ
https://youtube.com/watch?v=3qaHb2t3Lkw
https://youtube.com/watch?v=56deLmbicLg
https://youtube.com/watch?v=pQk2TzmwnS0
https://youtube.com/watch?v=NJ3sOlg8KGo
https://youtube.com/watch?v=kfDSHjlk4Pg
https://youtube.com/watch?v=8KHak4ZNO3k
>>> 

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

pytubefix-8.5.1.tar.gz (88.8 kB view details)

Uploaded Source

Built Distribution

pytubefix-8.5.1-py3-none-any.whl (84.8 kB view details)

Uploaded Python 3

File details

Details for the file pytubefix-8.5.1.tar.gz.

File metadata

  • Download URL: pytubefix-8.5.1.tar.gz
  • Upload date:
  • Size: 88.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.6

File hashes

Hashes for pytubefix-8.5.1.tar.gz
Algorithm Hash digest
SHA256 2654547d7fd389447624bd22f148a4f6fc3f398d8e97249fe899b94481471158
MD5 90f43be9ec49b281f03a8032d7dbff75
BLAKE2b-256 70b2ac0368de4e504472f692643cabd0d3d8817b3f120569a3162369a8d9b5b3

See more details on using hashes here.

File details

Details for the file pytubefix-8.5.1-py3-none-any.whl.

File metadata

  • Download URL: pytubefix-8.5.1-py3-none-any.whl
  • Upload date:
  • Size: 84.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.6

File hashes

Hashes for pytubefix-8.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5cc89cdfaa9c3c02a6af11d98a21df28cf9a421def60f44b96597569514ba5a4
MD5 6ada5a872dbb5d739d49c95d2f3442e6
BLAKE2b-256 a3a7f44ac2494bd0dbdfc3c2623746ec019f8e59ecfe4f6b1faf4e965839d607

See more details on using hashes here.

Supported by

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