MPがありません。

$liiu->mp == 0

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のリストが取れます!

参考(Youtube APIで学ぶWeb APIのキホン)

Amazon CAPTCHA