====== pytube ====== A lightweight, dependency-free Python library for downloading YouTube Videos. Description =========== 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 present to you, PyTube! Installation ============ If you are on Mac OS X or Linux, chances are that one of the following two commands will work for you: Installation ============ Using PIP via PyPI .. code:: bash pip install pytube==0.1.16 Using PIP via Github .. code:: bash pip install git+git://github.com/NFicano/pytube.git@0.1.16#egg=pytube Adding to your ``requirements.txt`` file (run ``pip install -r requirements.txt`` afterwards) .. code:: bash git+ssh://git@github.com/NFicano/pytube.git@0.1.16#egg=pytube Manually via GIT .. code:: bash git clone git://github.com/NFicano/pytube.git pytube cd pytube python setup.py install Roadmap ======= The only features I see implementing in the near future are: - refactor console printing into separate command-line utility. - Add nosetests - Add Sphinx documentation Usage Example ============= ... code:: 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) #[, # , # , # , # , # , # , # , # ] # 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')) #[, # , # ] # 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] # # you can also get all videos for a given resolution pprint(yt.filter(res='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) #[, # , # , # , # , # , # , # , # ] # 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/') 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. 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. .. _PyVideos: http://pyvideo.org/