PerlからYoutube Data APIを利用して動画を検索する
PerlからYoutubeの動画検索しようとした時のメモ、Youtube Data APIの利用の仕方というよりはWeb APIの使い方って感じですが。
準備
Youtube Data API v3はGoogleのアカウントを持っている上で認証しないと使用できないようなので、ドキュメントを参考に準備をします。
https://developers.google.com/youtube/v3/getting-started?hl=ja
途中で作成するAPIキーを後で使うことになるのでメモっておきましょう。
PerlからWeb APIを叩く方法
基本的な流れは、
リクエストURI作成
↓
Web APIをリクエスト
↓
JSONが返ってくるのでそれをPerlのデータ構造に変換
ってかんじです。
コードはこんな感じになりました。
use v5.22; use warnings; use utf8; use URI; use LWP::UserAgent; use JSON::PP; my $uri = URI->new('https://www.googleapis.com/youtube/v3/search'); $uri->query_form( key => 'APIキー', q => 'GUMI', part => 'id,snippet', maxResults => 10, type => 'video', ); my $ua = LWP::UserAgent->new(); $ua->timeout(10); my $response = $ua->get($uri); my $response_json = $response->content; my $json = JSON::PP->new(); my $response_data = $json->decode($response_json); my @video_list = map { $_->{id}{videoId} } @{ $response_data->{items} }; say "https://www.youtube.com/watch?v=$_" for @video_list;
これを保存して実行すると
$ perl youtube.pl https://www.youtube.com/watch?v=w0dgGYAQVao https://www.youtube.com/watch?v=XgNG68swi3k https://www.youtube.com/watch?v=TUGJLqV5hfY https://www.youtube.com/watch?v=qn0OtcV7NRA https://www.youtube.com/watch?v=y7p5BQqAgoE https://www.youtube.com/watch?v=l0YdN5eY11I https://www.youtube.com/watch?v=vUQoWRAM15Y https://www.youtube.com/watch?v=rqg90hkSJ7s https://www.youtube.com/watch?v=MVoZ_P45v7Y https://www.youtube.com/watch?v=dNIg2oEhgyg
こんな感じに条件に一致する動画のURIのリストが取れます!