pytube / README.rst
Nick Ficano
we don't need philosophy
555ceab
raw
history blame
4.51 kB
======
pytube
======
A lightweight, dependency-free Python library for downloading YouTube Videos.
Description
===========
Downloading videos from YouTube shouldn't require some bloated library, it's
unusual to have to do so in the first place. So I present to you, PyTube!
Requirements
============
- Python 2.6+ (2.7 or 3.4 recommended)
- PIP (for some installation methods)
- GIT (for some installation methods)
Installation
============
If you are on Mac OS X or Linux, chances are that one of the following two
commands will work for you:
Using PIP via PyPI
.. code:: bash
pip install pytube
Using PIP via Github
.. code:: bash
pip install git+git://github.com/nficano/pytube#egg=pytube
Adding to your ``requirements.txt`` file (run ``pip install -r requirements.txt`` afterwards)
.. code:: bash
git+ssh://[email protected]/nficano/pytube#egg=pytube
Manually via GIT
.. code:: bash
git clone git://github.com/NFicano/pytube pytube
cd pytube
python setup.py install
Command-Line Usage
==================
You can download a video by simply passing the ``-e`` (or ``--extension=``) switch and
setting it to the desired filetype:
.. code:: bash
$ pytube -e mp4 http://www.youtube.com/watch?v=Ik-RsDGPI5Y
Same thing for specifying a resolution:
.. code:: bash
$ pytube -r 720p http://www.youtube.com/watch?v=Ik-RsDGPI5Y
You can also specify a download file path (``-p`` or ``--path=``):
.. code:: bash
$ pytube -e mp4 -p ~/Downloads/ http://www.youtube.com/watch?v=Ik-RsDGPI5Y
and/or optionally choose the filename (``-f`` or ``--filename=``):
.. code:: bash
$ pytube -e mp4 -f Dancing Scene from Pulp Fiction http://www.youtube.com/watch?v=Ik-RsDGPI5Y
Library Usage
=============
.. code:: python
from pytube import YouTube
# not necessary, just for demo purposes
from pprint import pprint
yt = YouTube("http://www.youtube.com/watch?v=Ik-RsDGPI5Y")
# Once set, you can see all the codec and quality options YouTube has made
# available for the perticular video by printing videos.
pprint(yt.get_videos())
# [<Video: MPEG-4 Visual (.3gp) - 144p>,
# <Video: MPEG-4 Visual (.3gp) - 240p>,
# <Video: Sorenson H.263 (.flv) - 240p>,
# <Video: H.264 (.flv) - 360p>,
# <Video: H.264 (.flv) - 480p>,
# <Video: H.264 (.mp4) - 360p>,
# <Video: H.264 (.mp4) - 720p>,
# <Video: VP8 (.webm) - 360p>,
# <Video: VP8 (.webm) - 480p>]
# The filename is automatically generated based on the video title. You
# can override this by manually setting the filename.
# view the auto generated filename:
print(yt.filename)
# Pulp Fiction - Dancing Scene [HD]
# set the filename:
yt.set_filename('Dancing Scene from Pulp Fiction')
# You can also filter the criteria by filetype.
pprint(yt.filter('flv'))
# [<Video: Sorenson H.263 (.flv) - 240p>,
# <Video: H.264 (.flv) - 360p>,
# <Video: H.264 (.flv) - 480p>]
# Notice that the list is ordered by lowest resolution to highest. If you
# wanted the highest resolution available for a specific file type, you
# can simply do:
print(yt.filter('mp4')[-1])
# <Video: H.264 (.mp4) - 720p>
# You can also get all videos for a given resolution
pprint(yt.filter(resolution='480p'))
# [<Video: H.264 (.flv) - 480p>,
# <Video: VP8 (.webm) - 480p>]
# To select a video by a specific resolution and filetype you can use the get
# method.
video = yt.get('mp4', '720p')
# NOTE: get() can only be used if and only if one object matches your criteria.
# for example:
pprint(yt.videos)
#[<Video: MPEG-4 Visual (.3gp) - 144p>,
# <Video: MPEG-4 Visual (.3gp) - 240p>,
# <Video: Sorenson H.263 (.flv) - 240p>,
# <Video: H.264 (.flv) - 360p>,
# <Video: H.264 (.flv) - 480p>,
# <Video: H.264 (.mp4) - 360p>,
# <Video: H.264 (.mp4) - 720p>,
# <Video: VP8 (.webm) - 360p>,
# <Video: VP8 (.webm) - 480p>]
# Notice we have two H.264 (.mp4) available to us... now if we try to call get()
# on mp4...
video = yt.get('mp4')
# MultipleObjectsReturned: 2 videos met criteria.
# In this case, we'll need to specify both the codec (mp4) and resolution
# (either 360p or 720p).
# Okay, let's download it!
video.download()
# Note: If you wanted to choose the output directory, simply pass it as an
# argument to the download method.
video.download('/tmp/')