in my 雑記

プログラミング bump 日々のことなど

コマンドラインからyoutubeを投稿する

f:id:inmyzakki:20170902164248p:plain

はじめ

コマンドラインから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を使って自動化する方が良さげです。