この記事では、PythonとYouTube Data APIを使用してYouTubeに動画をアップロードする方法を説明します。
必要なもの
- Python 2.5以上
- Google APIs Client Library for Python (google-api-python-client)
- Googleでアプリケーションを登録し、OAuth 2.0プロトコルを使用してユーザーデータへのアクセスを許可する
スクリプトの概要
以下のスクリプトは、YouTube Data APIを使用してYouTubeにビデオをアップロードします。
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload
from google_auth_oauthlib.flow import InstalledAppFlow
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"
SCOPES = ["https://www.googleapis.com/auth/youtube.upload"]
CLIENT_SECRETS_FILE = "client_secret_path.json"
def authenticate():
flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRETS_FILE, SCOPES)
credentials = flow.run_local_server(port=0)
return build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, credentials=credentials)
def upload_video(youtube, file_path, title, description, category, privacyStatus):
request = youtube.videos().insert(
part="snippet,status",
body={
"snippet": {
"title": title,
"description": description,
"categoryId": category
},
"status": {
"privacyStatus": privacyStatus
}
},
media_body=MediaFileUpload(file_path, chunksize=-1, resumable=True)
)
response = None
while response is None:
status, response = request.next_chunk()
if 'id' in response:
print(f"Video id '{response['id']}' was successfully uploaded.")
else:
print("The upload failed with an unexpected response:", response)
if __name__ == "__main__":
file_path = "path/to/your/video.mp4"
title = "Test Title"
description = "Test Description"
category = "1"
privacyStatus = "public"
youtube = authenticate()
upload_video(youtube, file_path, title, description, category, privacyStatus)
このスクリプトは、YouTube APIと連携して、ローカルのビデオファイルをYouTubeにアップロードするプロセスを完全に自動化しています。認証からビデオのメタデータの設定、実際のアップロードまで、全てのステップが含まれています。
このコードを実行するには、先にGoogle Developer Consoleでプロジェクトを作成し、YouTube Data API v3を有効にし、OAuth 2.0クライアントIDを生成する必要があります。そして、そのクライアントIDを使って client_secret_*.json
ファイルをダウンロードし、指定のパスに配置する必要があります。
まとめ
PythonとYouTube Data APIを使用してYouTubeに動画をアップロードする方法を学びました。これにより、動画のアップロードを自動化し、より効率的に作業を進めることができます。