pytube / README.md
nficano's picture
copy changes to README
c91e2d6
|
raw
history blame
3.75 kB
![pytube](https://s3.amazonaws.com/assets.nickficano.com/pytube_logo.png)
# A lightwight, dependency-free Python library for downloading YouTube Videos.
Downloading videos from YouTube shouldn't require some bloatware application,
it's usually a niche condition you want to do so in the first place. So I
Prsent to you, PyTube!
## Installation from Git
First you will need to clone the git repo:
```
$ git clone https://github.com/NFicano/python-youtube-download.git
```
Now we can install from the repo:
```
$ cd python-youtube-download
$ python setup.py install # may need to be root
```
### Background
After missing the deadline to register for PyCon 2012, I decided to write what
became PyTube and crawler to collect all the YouTube links for the talks
on [PyVideos.org](http://pyvideo.org/).
To avoid having to encode them to mp4 (so I could watch them on my iPhone)
I wrote it so you could specify an encoding format.
In recently weeks interest has picked up in the project, so I decided to
dedicate more time to further its development and actively maintain it.
### Philosophy
My only real goal for this is to never require any third party dependancies,
to keep it simple and make it reliable.
### Roadmap
The only features I see implementing in the near future are:
- Allow it to run as a command-line utility.
- Making it compatible with Python 3.
## Usage Example
``` python
from pytube import YouTube
# not necessary, just for demo purposes
from pprint import pprint
yt = YouTube()
# Set the video URL.
yt.url = "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.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.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>]
# and by resolution
pprint(yt.filter(res='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: get() returned more than one object -- it returned 2!
# 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()
# Downloading: Pulp Fiction - Dancing Scene.mp4 Bytes: 37561829
# 37561829 [100.00%]
# Note: If you wanted to choose the output directory, simply pass it as an
# argument to the download method.
video.download('/tmp/')
```