YouTubeのショート動画を自動でアップロードする

しむどん 2024-12-12

YouTubeのショート動画を投稿しているが、画面から動画を選択してアップロードする事が大変に感じた。そこで今回はローカルにある動画ファイルをYouTubeのショート動画として自動でアップロードする事にした。

実装

import google_auth_oauthlib.flow
import googleapiclient.discovery
from googleapiclient.http import MediaFileUpload

title = ""
description = ""
publish_at = "2024-12-14T06:30+09:00"
movie_file_path = "example.mp4"
category_id = "20"  # game

api_service_name = "youtube"
api_version = "v3"
client_secrets_file = "./credential.json"
scopes = ["https://www.googleapis.com/auth/youtube.upload"]

flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(
    client_secrets_file, scopes)

credentials = flow.run_local_server(port=0)
youtube = googleapiclient.discovery.build(
    api_service_name, api_version,
    credentials=credentials)

media_body = MediaFileUpload(movie_file_path)
request = youtube.videos().insert(
    part="snippet,status",
    body={
        "snippet": {
            "categoryId": category_id,
            "description": description,
            "title": title,
        },
        "status": {
            "selfDeclaredMadeForKids": False,
            "privacyStatus": "private",
            "publishAt": publishe_at,
        }
    },
    media_body=media_body,
)

print(request)
response = request.execute()
print(response)

実行

実装したスクリプトを実行する。

依存パッケージ

以下のパッケージをpipでインストールしておく。

google_auth_oauthlib
google-api-python-client

これらは requirements.txt に記述されているものとする。

pip install -r requirements.txt

YouTube Data API v3の有効化と認証情報の取得

Google Cloud Consoleにアクセスし、https://console.cloud.google.com/apis/api/youtube.googleapis.com/credentials?hl=jaからYouTube Data API v3を有効化する。

認証には、OAuth 2.0を使用する。https://console.cloud.google.com/apis/credentials?hl=jaにアクセスし、OAuth クライアント IDを作成、認証情報のJSONファイルをダウンロードする。

このダウンロードしたJSONファイルは、今回は便宜上 credential.json という名前でカレントディレクトリに保存した。このファイルは機密情報であるため、取扱に注意する必要がある。

実行

依存パッケージのインストール、APIの有効化、認証情報の取得ができたら、スクリプトを実行する。

python3 main.py

初回実行時にはWebブラウザが開き、認証と認可が求められる。それらを実施するとスクリプトが進み、動画がアップロードされる。

注意点

APIの使用には制限があり、APIコールの制限を超えないように注意する必要がある。

まとめ

YouTube Data API v3を使って、自動で予約投稿動画をアップロードできるようにした。APIの利用には利用回数に制限があるため、要件に応じて確認すると良い。今後、このスクリプトをEmacsのDiredから実行できるように拡張したい。

参考