コマンドラインからyoutubeを投稿する
はじめ
コマンドラインからyoutubeを投稿する方法を紹介します。
YouTube Data API と pythonのyoutube-uploadを使用します。
できること
・コマンドラインからyoutubeにアップロードできる ・10以上の動画はアップロードできない
準備
まずはpythonでYouTube Data API を使用するためにgoogle-api-python-clientをインストールします。
sudo pip install --upgrade google-api-python-client progressbar2
次にpythonでyoutube-uploadをインストールします。
wget https://github.com/tokland/youtube-upload/archive/master.zip unzip master.zip cd youtube-upload-master sudo python setup.py install
インストールしたくない方はソースから直で実行することも可能です。
ちなみにpythonの対応バージョンはPython 2.6/2.7/3.x.です。
直接実行する場合↓
cd youtube-upload-master PYTHONPATH=. python bin/youtube-upload ...
YouTube Data API はgoogle api consoleのうちの一つなのでgoogle api consoleに登録します。
登録したら適当に新規プロジェクトを作り、ダッシュボードから YouTube Data API v3を有効にします。
次に認証情報から「OAuth 2.0 クライアント ID」の認証情報を作成します。
この時、アプリケーションの種類は「その他」名前は「youtube-upload」にします。
作成が完了したら、キー情報の右側にjsonファイルをダウンロードできるボタンがあるので、ダウンロードします。
これで準備は完了です。
初回は認証をしなければならないので、落として来たjsonファイルで認証を行います
youtube-upload --title="test" --client-secret='jsonファイルのパス'
これを実行するとコマンドラインに
Check this link in your browser: https://hoge Enter verification code:
のように表示されるので、Check this link in your browserのurlにブラウザでアクセスすると表示されるverification codeをコマンドラインに貼り付ければ認証完了になります。
実行方法
以下のようにすると動画をアップロードできます。
youtube-upload --title="hoge" hoge.mp4
タイトル以外で設定したい場合は以下のように行います。
--title="A.S. Mutter" --description="A.S. Mutter plays Beethoven" --category=Music --tags="mutter, beethoven" --recording-date="2011-03-10T15:32:17.0Z" --default-language="en" --default-audio-language="en" --client-secrets=my_client_secrets.json --credentials-file=my_credentials.json --playlist "My favorite music"
終わり
ただ、この方法でアップをするとYouTube Data API に動画時間の制限があるため10分以上の動画はアップロードできません。
10分以上の動画をプログラムでアップロードするにはsleniumを使って自動化する方が良さげです。