Upload videos to Youtube from the command line https://github.com/tokland/youtube-upload

Arnau Sanchez d76502274f format for py2.6 9 years ago
bin 9b407d4bda Added a batch script so the command is executable on Windows 9 years ago
examples 2d43706950 fix title template 10 years ago
youtube_upload d76502274f format for py2.6 9 years ago
README.md 991a4ef1dc Refer to Debian package names 9 years ago
client_secrets.json e70474dc55 general refactor using APIv3 and Oauth2 10 years ago
setup.py 50a3565897 setup.py: add missing auth directory 10 years ago

README.md

Introduction

Youtube-upload is a command line Python script that uploads videos to Youtube (it should work on any platform -GNU/Linux, BSD, OS X, Windows, ...- that runs Python) using theYoutube APIv3.

Dependencies

Check if your operating system provides those packages. On Debian GNU/Linux, they are available as python-googleapi and python-progressbar. If not, you can install them with pip:

$ pip install --upgrade google-api-python-client progressbar

Install

$ wget https://github.com/tokland/youtube-upload/archive/master.zip
$ unzip master.zip
$ cd youtube-upload-master
$ sudo python setup.py install
  • Or run directly from sources:

    $ cd youtube-upload-master
    $ PYTHONPATH=. python bin/youtube-upload ...
    

Authentication

You'll see that there is no email/password options. Instead, the Youtube API uses OAuth 2.0 to authenticate the upload. The first time you try to upload a video, you will be asked to follow a URL in your browser to get an authentication token. If you have multiple channels for the logged in user, you will also be asked to pick which one you want to upload the videos to. You can use multiple credentials, just use the option --credentials-file. Also, check the token expiration policies.

The package includes a default client_secrets.json file. If you plan to make a heavy use of the script, please create and use your own OAuth 2.0 file, it's a free service. Steps:

  • Go to the Google console.
  • Create project.
  • Side menu: APIs & auth -> APIs
  • Top menu: Enabled API(s): Enable all Youtube APIs.
  • Side menu: APIs & auth -> Credentials.
  • Create new Client ID: Application type: Installed application + Other
  • Download JSON: save the file to your local system.
  • Use the saved JSON as your credentials file: --client-secrets=CLIENT_SECRETS

Examples

  • Upload a video:

    $ youtube-upload --title="A.S. Mutter" anne_sophie_mutter.flv
    pxzZ-fYjeYs
    
  • Upload a video with extra metadata, with your own client secrets and credentials file, and to a playlist (if not found, it will be created):

    $ youtube-upload \
    --title="A.S. Mutter" 
    --description="A.S. Mutter plays Beethoven" \
    --category=Music \
    --tags="mutter, beethoven" \
    --client-secrets=my_client_secrets.json \
    --credentials-file=my_credentials.json \
    --playlist "My favorite music" \
    anne_sophie_mutter.flv
    tx2Zb-145Yz
    
  • Upload a video using a browser GUI to authenticate:

    $ youtube-upload --title="A.S. Mutter" --auth-browser anne_sophie_mutter.flv
    
  • Split a video with ffmpeg

If your video is too big or too long for Youtube limits, split it before uploading:

$ bash examples/split_video_for_youtube.sh video.avi
video.part1.avi
video.part2.avi
video.part3.avi
  • Use a HTTP proxy

Set environment variables http_proxy and https_proxy:

$ export http_proxy=http://user:password@host:port
$ export https_proxy=$http_proxy
$ youtube-upload ....

Notes for developers

More

Feedback

  • Donations.
  • If you find a bug, open an issue.
  • If you want a new feature to be added, you'll have to send a pull request (or find a programmer to do it for you), currently I am not adding new features.