PerlでYahoo!動画検索サービス

ここでは、Yahoo! developer APIの動画検索APIの使い方を説明したいと思います。

VideoSearchServiceから取得したXMLから各項目を抜き出し

下記サンプルはXMLデータから検索結果毎に、全てのデータを表示しています。 基本的な動作はWeb Search Serviceと同じなので、詳細な解説が必要な方は「PerlでYahoo!Web検索サービス:XMLの取得」などもご覧下さい。



#!/usr/bin/perl

use LWP::Simple;
use XML::Simple;

# for warning "Wide character in print at ..."
binmode(STDOUT, ":utf8");

$appid = "testimpl";
$query = "test";

$url = "http://api.search.yahoo.co.jp/VideoSearchService/V1/videoSearch?appid=$appid&query=$query";

$response = get($url);

$xml = new XML::Simple;
$yahoo_xml = $xml->XMLin($response);

foreach $result (@{$yahoo_xml->{Result}}) {
  $title = $result->{Title};
  $summary = $result->{Summary};
  $result_url = $result->{Url};

  $click_url = $result->{ClickUrl};
  $referer_url = $result->{RefererUrl};
  $file_size = $result->{FileSize};
  $file_format = $result->{FileFormat};
  $height = $result->{Height};
  $width = $result->{Width};

  $duration = $result->{Duration};
  $channels = $result->{Channels};
  $streaming = $result->{Streaming};

  $thumb_url = $result->{Thumbnail}{Url};
  $thumb_h = $result->{Thumbnail}{Height};
  $thumb_w = $result->{Thumbnail}{Width};


  print "Title  : $title\r\n";
  print "Url    : $result_url\r\n";
  print "Summary: $summary\r\n";
  print "\r\n";

  print "ClickUrl: $click_url\r\n";
  print "RefererUrl: $referer_url\r\n";
  print "FileSize : $file_size\r\n";
  print "FileFormat : $file_format\r\n";
  print "Height  : $height\r\n";
  print "Width   : $width\r\n";
  print "\r\n";

  print "Duration  : $duration\r\n";
  print "Channels  : $channels\r\n";
  print "Streaming : $streaming\r\n";
  print "\r\n";

  print "Thumbnail, Url : $thumb_url\r\n";
  print "Thumbnail, Height : $thumb_h\r\n";
  print "Thumbnail, Width  : $thumb_w\r\n";

  print "\r\n";
}

exit;


上記サンプルでは、get()で取得したXMLを「$xml->XMLin($response)」で解析しています。 解析結果は「$yahoo_xml」に入っています。

上記サンプルでは、foreachを使って各検索結果の個数回の繰り返しを行っています。 上記サンプルでは、foreachを実行する度にXML解析結果から各エントリの要素を取り出しています。 取得した各エントリの中身は一度変数に代入しています。 (代入はサンプルを説明するために行っているだけで、必ずしなくてはならないわけではありません。) サンプルでは、代入した値をprintした後、次のエントリを処理しています。 全部のエントリを処理し終わるとforeachを抜けて、スクリプトは終了します。


YouTubeで技術解説やってます!