Google APIを使って、コマンドラインからYouTube動画の検索結果を取得してみる
よく訓練されたアップル信者、都元です。前回はFacebook APIからJSON形式のデータを取得してみました。今日は、Google APIからデータを取り出してみましょう。
クライアントの登録
Google APIでも OAuth 2.0 を利用していますので。Facebookと同じようにクライアントの登録が必要です。
Googleに普通にログインした状態で、https://console.developers.google.com/projectを開いてください。
Facebookではクライアントのことを「App」と呼んでいましたが、Googleにおいては「Project」と呼んでいるようです。というわけでプロジェクトを作りましょう。
任意のプロジェクト名(アルファベットが良いでしょう)をいれてCreateをクリックします。
プロジェクトの作成には数十秒の時間がかかります。作成が終わると、このような画面になりました。左側のメニュー内から「APIs」を選んでクリックします。
色々ありますが、今回はYouTubeでも使ってみますか。
「Enable API」をクリックしましょう。
このように有効化されたら、引き続き、左側のメニューから「Credentials」を選択します。
「Create new Client ID」の方を選びます。
「Installed application」を選んで「Configure content screen」ボタンをクリック。
クライアント確認用のダイアログ設定ですね。Product nameに、任意の名前を入れ、Saveします。
再びこの画面に戻ってくるので、あらためて「Installed application」、そして「Other」を選んで「Create Client ID」ボタンをクリック。
無事作成できました。ここに表示されているClient IDとClient sercretは後ほど使いますので、控えておいてください。
aurlでYouTube検索をしてみる
前回と同じように、aurlを利用します。前回インストールしていない方は、自分のマシンのターミナル(コマンドライン)を開いて、下記のコマンドを実行してaurlをインストールしてください。
$ brew tap classmethod/repos $ brew install aurl $ aurl -V 1.0
次に、このaurlコマンドを使ってFacebookにアクセスするため、下記の内容の設定ファイルを~/.aurl/profiles配置または追記します。
[google] client_id = 前節で控えておいたClient ID client_secret = 前節で控えておいたClient sercret auth_server_auth_endpoint = https://accounts.google.com/o/oauth2/auth auth_server_token_endpoint = https://www.googleapis.com/oauth2/v3/token redirect = urn:ietf:wg:oauth:2.0:oob scopes = https://www.googleapis.com/auth/youtube https://www.googleapis.com/auth/youtube.force-ssl https://www.googleapis.com/auth/youtube.readonly
そしてコマンドを実行。
$ aurl --profile google https://www.googleapis.com/youtube/v3/search?part=snippet&type=video&q=%E6%9D%BE%E6%B5%A6%E7%9C%9F%E4%B9%9F Open https://accounts.google.com/o/oauth2/auth?(省略) and get code Enter code:
すると、上のように「このURLを開いて、コードを得てください」というメッセージと共に、コードの入力待ちとなります。言われた通りにコピペでブラウザにURLを貼り付けて開きましょう。
すると、上記のような確認ダイアログが現れますのでOKをクリック。
今回はFacebookのように悲しいことにはなりませんでした。よかった。この中の認証コード部分を再びクリップボードにコピーし、それを先ほどの「Enter code: 」に対する応答として与えてやります。すると…
{ "kind": "youtube#searchListResponse", "etag": "\"xmg9xJZuZD438sF4hb-VcBBREXc/hPNmQ1rDZKpxnpSyR-bRMUwuOfU\"", "nextPageToken": "CAUQAA", "pageInfo": { "totalResults": 2393, "resultsPerPage": 5 }, "items": [ { "kind": "youtube#searchResult", "etag": "\"xmg9xJZuZD438sF4hb-VcBBREXc/720EQPxXTy1I7wUu9FGNjKZbFD0\"", "id": { "kind": "youtube#video", "videoId": "iv_NAdKM3iU" }, (略)
出ました。GoogleはJSONを整形して返してくれるようで、jqによる整形は要りませんでした。しかし、結構大量のデータがもさっと出てくるので少し交通整理をしたいと思います。
この結果は、動画を検索したものですが、ひとまず欲しいのは動画のタイトルとIDでしょう。膨大の情報の中から必要な情報だけを抜き出すのもjqの仕事です。下記は、コマンドの意味は理解できないかもしれませんが、特に難しいことは考えずに実行してみてください。
$ aurl --profile google https://www.googleapis.com/youtube/v3/search?part=snippet&type=video&q=%E6%9D%BE%E6%B5%A6%E7%9C%9F%E4%B9%9F \ | jq '.items[] | {"id": .id.videoId, "title": .snippet.title}'
結果
{ "id": "iv_NAdKM3iU", "title": "ギター芸人 新喜劇松浦真也さんの演奏まとめ" } { "id": "yKKIcIrZoN0", "title": "松浦真也 ハプニング!" } { "id": "VzJ_mLfdQIc", "title": "【第二弾】NMB48 新喜劇 名トリオ「吉田朱里・松浦真也・すっちー」婦警編 Part2" } { "id": "gk21tZU4oDs", "title": "よしもと新喜劇 松浦ギター集" } { "id": "4tFZfclaT64", "title": "新喜劇 松浦真也ギター&吉田裕 そのリズムやめろ" }
といううわけで、あとはhttps://www.youtube.com/watch?v=の後にIDを付けてブラウザで開いてみましょう。
$ open https://www.youtube.com/watch?v=gk21tZU4oDs
今、俺の中で松浦真也が話題沸騰中。都元ダイスケは松浦真也さんを応援しています。