本文へジャンプします。


現在位置: TOP > カテゴリー > API


2007年11月30日 (金)

ビデオ共有のAPI(XML形式)を使ってみよう 第一回

はじめまして~、@niftyビデオ共有の開発見習いの砂ずりです♪

今回、上司の焼き鳥から

「せっかくAPIを公開したんだから、なんかサンプル作れ~!!

との指示を受けまして、PerlでXML形式のAPIを呼んで「初音ミク」なビデオを検索しちゃうサンプルコードを作ってみました。少し気が引けますが、ご紹介させていただきます(^_^;)

その前に、Perlでビデオ共有のXML形式のAPIを扱う場合にちょっとだけ注意することがあります。

実は、文字コードが最近主流の「UTF-8」でなく「Shift_JIS」(Windows-31Jとかcp932ともいう)なので、そのままでは取り扱いが面倒です。 そこで以下の2番目と3番目の下準備をして、文字コード依存の心配を取り除きますv

  1. まずは実行環境を整えることから、ActivePerl 5.8.8をインストールします。
  2. XML::Parser でAPIの結果をパースすると、UTF-8フラグがついてしまうので、このフラグを再帰的に落としてくれる便利なモジュール Unicode::RecursiveDowngrade をCPANサイトからダウンロードしてインストールします。 この Unicode::RecursiveDowngrade は、フィルターも設定できるすぐれものなので、UTF-8フラグを落とすのと同時に文字コードの変換もできてしまいます。
  3. XML::Parser は、Shift_JISのエンコーディングに対応していないので、変換ツールmkenc.plを使って「x-sjis-cp932.enc」から「Shift_JIS.enc」を追加します。
    「Perl XMLでencoding='Shift_JIS'や'euc-jp'を使う」のページを参考にさせてもらいました。
  4. 最後にサンプルコード(sample01.pl)を実行します。


#!/usr/bin/perl
#/////////////////////////////////////////////////////////////////////////////
# Copyright(c), 2007 NIFTY Corporation.
# Created: 2007-11-29 by 砂ずり
#
# sample01.pl - @niftyビデオ共有 REST-XMLサンプルコード
#
#「タイトル」もしくは「説明コメント」に文字列「初音ミク」を含むビデオを検索する例
# % perl sample01.pl 初音ミク
#
# $Id: $
#/////////////////////////////////////////////////////////////////////////////

use strict;
use warnings;
use Data::Dumper;
use LWP::Simple;
use XML::Simple;
use Unicode::RecursiveDowngrade;
use Devel::Peek;
use Encode;

#/////////////////////////////////////////////////////////////////////////////

my $SYS_ERR =1;

my $URL = 'http://api.video.nifty.com/cs/catalog/video_metadata/listapi-v1/efg_0/1.xml?pgcnf=10';

#-----------------------------------------------------------------------------
# 文字コードをUTF-8をWindows-31J(CP932)に変換する。
sub enc {
  my $str = shift;
  Encode::from_to($str, 'utf8', 'cp932');
  return $str;
}

#-----------------------------------------------------------------------------
# コマンドライン引数の文字列をタイトルと説明に含むビデオを検索する。
sub main {

  unless( $#ARGV == 0 ) {
    print STDERR "usage: perl $0 s1(search string) \n";
    exit($SYS_ERR);
  }

  my $url = $URL . "&s1=$ARGV[0]";

  my $content = get($url) or die "cannot get content from $url";
  my $parser = XML::Simple->new;

  # includes flagged UTF-8
  my $data = $parser->XMLin( $content, ForceArray=>1 );
  my $rd = Unicode::RecursiveDowngrade->new;
  # set encode filter
  $rd->filter(sub { enc(shift) });
  # unflagged UTF-8
  $data = $rd->downgrade($data);
  my $list = $data->{result}->[0]->{video};

  foreach my $video ( @$list ) {
#    print Dumper( $video );
    my $id = $video->{id}->[0];
    my $title = $video->{title}->[0];
    my $user_name = $video->{user_name}->[0];
    my $p_url = $video->{p_url}->[0];
    print "--------\n";
    print "id=[$id]\n";
    print "title=[$title]\n";
    print "user_name=[$user_name]\n";
    print "p_url=[$p_url]\n";
  }

}
#/////////////////////////////////////////////////////////////////////////////
main;


↓拙いですが、やり方のビデオも作ってみたので、よかったら参考にしてください。

(1) ActivePerlインストール APIを使おう1(ActivePerlインストール)
(2) Unicode::RecursiveDowngradeのインストール APIを使おう2(便利なpmインストール)
(3) Shift_JISエンコーディングの追加 APIを使おう3(Shift_JIS.enc追加)
(4) サンプルコードの実行 APIを使おう4(いよいよビデオの検索)

Perlが好きな人がいましたら、いろいろいじって遊んでくださいね~☆


2007年11月15日 (木)

はじめまして。

皆様、はじめまして。@niftyビデオ共有の開発担当をしている焼き鳥です。

今回、APIを公開するにあたって、皆様からのフィードバックも受けられる形ということで、このブログをはじめました。

このたび、ビデオ共有では以下のAPI機能を提供いたします。

1.ビデオ情報の取得(XML形式JSON形式
2.JSON形式をより使いやすくしたJavaScriptラッパークラス
3.サイトID発行によるビデオ投稿機能

1番目を使うとビデオ情報のリストを取得してオリジナルのアプリケーション等に組み込むことができます。

2番目は、より簡単にビデオリストをサイト上に表示できるようにJavaScriptの関数群を提供します。このブログの左のサイドバーに張られている新着ビデオは2番目の機能を使っています。JavaScriptを貼るだけなので、どうぞご参考にしてください。他にもキーワードにマッチさせてビデオを表示したりすることができます。

また、2番目と3番目の機能を使えば、皆様の管理しているWEBサイトに動画投稿機能をつけるなんてことができます。HTMLデザインテンプレートをサンプルで提供していますので、オリジナルビデオ共有サイトも作ることができます。例:眠りいぬ・ねこビデオ

他にも@niftyビデオ共有で提供しているRSSフィードをまとめました。

(ちなみにサイドバー上のブログパーツはビデオ再生回数に応じて毛が生えます。こちらもどうぞよろしくお願いします。)

今後ともどうぞ、よろしくお願いいたします。

API関連の使いづらさやバグ報告等ありましたら、このブログにコメントいただけると幸いです。

オリジナルサイトを作るなら、レンタルサーバー LaCoocan(ラクーカン)が便利です。最大1か月のお試し期間もついて、お得なサービスです。ぜひご利用ください。
LaCoocan(ラクーカン): @nifty



ビデオ共有 ブログパーツ





新着ビデオ(API)



最近のトラックバック