LoginSignup
30
30

More than 5 years have passed since last update.

RubyでYouTube Data APIを利用したときのメモ

Last updated at Posted at 2018-01-13

動画情報の設定をプログラムでしたいので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

30
30
1

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
30
30