Create an Atom feed of a Youtube Channel, with HD video downloadable enclosures
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src/youtuber
README.rst
bootstrap.py
buildout.cfg
setup.py

README.rst

Youtuber

Youtuber allows you to create an Atom feed out of a Youtube channel, complete with HD video enclosures allowing you to subscribe to the channel with the podcast client of your choice, and view the downloaded videos with the player of your choice.

Requirements

You'll need:

  • Python
  • youtube-dl (http://rg3.github.com/youtube-dl/, or in Ubuntu: sudo apt-get install youtube-dl)
  • A webserver, like Apache (only if you don't want to host videos locally)
  • Linux or Mac (if somebody can make this work on Windows, be my guest)

Installation

After downloading the source, build out the project (from the checkout directory). Bootstrapping may need to be run with "sudo", depending on how you've installed Python. If you're uncomfortable with that, you can build your own Python from source so you don't pollute your system Python (which is what I do), or you can use virtualenv:

$ python bootstrap.py
$ bin/buildout

Usage

You can now fetch a Youtube channel, and all recent videos will be downloaded to the directory of your choice. An Atom feed will also be dropped in the directory, which will link directly to the downloaded files.

Here's an overview of what options you have:

Usage: youtuber [options]

Options:
-h, --help            show this help message and exit
-u YOUTUBE_USER, --user=YOUTUBE_USER
                        Youtube user name to download
-d DEST_DIR, --dest=DEST_DIR
                        Directory to put videos and RSS feed
-p PREFIX_URL, --prefix=PREFIX_URL
                        Prefix URL
-b DAYS_BACK, --days-back=DAYS_BACK
                        Days back to download videos

And here's an example of downloading the past week's videos from http://www.youtube.com/user/testedcom/featured:

$ bin/youtuber --user=testedcom --prefix=http://www.example.com/
    --dest=/tmp/youtube --days-back=7

This will download all the videos uploaded by testedcom in the past week into /tmp/youtube (unless they've already been downloaded). It will also drop an atom.xml in /tmp/youtube with links to all the downloaded videos (prefixed with http://www.example.com/). If you're running this on a web server, you'll want this to be the web-reachable directory where the videos will be served from. If you're running this locally, you'll probably want a file://... prefix.

I personally run this as a cron job on a web server to fetch new videos every couple hours, and subscribe to the feed with my podcast client. I also advise running tmpwatch on the directory occasionally to delete old videos, especially if storage becomes an issue.