0
1

More than 3 years have passed since last update.

Youtube Data APIで動画をアップロードする

Posted at

初めに

Youtube Data APIを使って動画をアップロードできたので手順をメモします。
既存の記事(私が見た範囲)では書かれていなかったところがあったりしたので誰かの参考になれば。
https://qiita.com/ny7760/items/5a728fd9e7b40588237c

Youtube Data APIを利用するにあたりの概念理解

Youtube Data APIってどう使うのか分からない時、そもそもどういった構成になるかもイメージできなかったのでアップロードできた今、私のイメージで説明します。
image.png
この画像については参考程度にしてください。

Youtube Data APIはGoogle Cloud Platform(GCP)から利用することができるのでGCPへの登録が必要になります。あとはアップロード先のYoutubeチャンネル、そしてアップロードするPC(Pythonインストール済み)が必要です。

手順

以下が大まかな手順です。

  1. GCP登録及びプロジェクトの作成
  2. APIの承認情報作成
  3. Youtube Data APIの有効化
  4. PCへのPython3系のインストール
  5. google-api-python-clientのインストール
  6. アップロード用ソースの作成
  7. アップロード実行

上記は事前準備含めたもろもろの手順といった感じです。おおまかな所は既存記事( https://qiita.com/ny7760/items/5a728fd9e7b40588237c )様と変わらないのですが細かいところで現在(2021/9/20)と差分があったので本記事ではそこに焦点を当てて説明します。

APIの承認情報作成

作成手順は変わりないのですが作成された情報をJSON形式でダウンロードできる機能が追加されました。
image.png
メモの手間が省けます。
ダウンロードしたものが以下です。

client_secret_XXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com.json
{
    "installed": {
        "client_id": "XXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com",
        "project_id": "XXXXXXXXXXX-324613",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_secret": "SVrT4PWT_a1mc2qxjuTNhnwn",
        "redirect_uris": [
            "urn:ietf:wg:oauth:2.0:oob",
            "http://localhost"
        ]
    }
}

既存記事のclient_secret.jsonとはフォーマットが異なります。ダウンロードしたまま使えるかどうかわからないので既存記事のフォーマットに直しました。

ソースコードのPython3系への修正対応

https://developers.google.com/youtube/v3/guides/uploading_a_video?hl=ja#Sample_Code
上記の公式サンプルコードは現時点(2021/09/20)ではPython2系用のコードになっています。
ですので既存記事様が行っているようにコードの修正が必要なのですが、私の場合記載箇所よりも修正する箇所が複数あったのでそこを説明します。

http.client

Python3はhttplibからhttp.clientに移行しているのでインポートライブラリを修正する必要があるのですがそれだけだと実行時にhttplibが無いよと怒られてしまいます。なので以下のように私は直しました。

import http.client as httplib  # httplibはPython3はhttp.clientへ移行

多分上記が一番楽です。

print

printの引数は()で加工用にしましょう。

# 例
print "Uploading file..." # 修正前
print("Uploading file...") # 修正後

コード検索ですべてのprintに対して修正をしてください。

except

exceptに関してもPython3では記載方法が変わっているので以下のように修正。

except HttpError, e: # 修正前
except HttpError as e: # 修正後

終わりに

終わってみればなんてことなく終わったYoutube Data APIの利用。初めて利用するものってどこまで何をしないといけないかわからないので諦めてしまいがちですが今回は成し遂げられてよかった。
これを上手く使ってApexの動画を自動で自分のチャンネルに上げて好きな時に見られるようにしたい。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1