動画情報の設定をプログラムでしたいのでYouTube Data APIをRubyで叩いた。
ライブラリはgoogle-api-clientを利用した。
準備
まずAPIを有効化する。YouTube Data API。
デベロッパコンソール > APIと認証 > API
クライアントを登録して、登録情報をダウンロードする。
デベロッパコンソール > APIと認証 > 認証情報
OAuth で新しいクライアントIDを作成。
ローカルで利用するのでネイティブアプリケーションを選択。
JSONをダウンロードしてclient_secrets.json
でカレンドディレクトリに保存。
(この名前だとライブラリが自動認識する)
APIを利用する。
client.execute で api_method を指定して実行するだけ。
どんなパラメータをとるかはドキュメントに記載されている。
動画情報の更新には youtube.videos.update
が使える。
parametersのpartにはどの部分の情報を更新するか設定する。
タイトルや概要はsnippetというpartにある。
bodyには情報を渡す。
partにsnippetを指定しているのでsnippetの値をセットする。
情報は基本的にすべて設定する必要がある。
元の値がどうなっているのか知りたい場合はlistapiを叩くと良い。
#!/usr/bin/env ruby
require 'google/api_client'
require 'google/api_client/client_secrets'
require 'google/api_client/auth/installed_app'
client = Google::APIClient.new(
:application_name => 'youtube updater',
:application_version => '1.0.0'
)
youtube = client.discovered_api('youtube','v3')
client_secrets = Google::APIClient::ClientSecrets.load
flow = Google::APIClient::InstalledAppFlow.new(
:client_id => client_secrets.client_id,
:client_secret => client_secrets.client_secret,
:scope => ['https://www.googleapis.com/auth/youtube']
)
client.authorization = flow.authorize
body = {
id: video_id # YouTubeのURLの ?v=hogehoge のhogehoge
snippet: {
title: 'hoghoge',
categoryId: '22',
tags: [],
description: 'hogehoge'
}
}
client.execute(
api_method: youtube.videos.update,
parameters: {part: 'snippet'},
body_object: body )
end
参考文献
https://developers.google.com/youtube/v3/?hl=ja
https://developers.google.com/youtube/v3/docs/videos/update?hl=ja