Home > Perl > WebService::PhotoZou::Exif をでっちあげる

WebService::PhotoZou::Exif をでっちあげる

で、さっそくもろもろ情報取得しようとしてみたが、あんまし欲しい情報がはいってない

Exif情報が表示されるようになりました」というのは、表示されてるだけで、API からは取得できないのね

しかたないので、正式に API で対応するまででっちあげることにした

  • 方法 1 : photo_info で取得した original_image_url からオリジナル画像を取得して解析する
    • メリット : 画像に残っている情報は根こそぎゲット
    • デメリット : オリジナル画像がでかいと、当然その分取得に時間かかる
  • 方法 2 : フォト蔵の HTML を解析して、表示されている情報を取得
    • メリット : HTML を取得する程度なら、時間はそんなにかからない
    • デメリット : 表示されているものしか取得できない。HTML の構造が変わる可能性あり

そのうち API 経由で取得できるようになるだろうから、方法 2 で。

(2007/07/03 追記) WebService::PhotoZou::photo_info が undef 返してる時のこと考慮してなかったので、一行追加

package WebService::PhotoZou::Exif;
use strict;
use warnings;
use base 'WebService::PhotoZou';

use LWP::Simple;
use HTML::TreeBuilder::Select;
use Encode;

sub exif_info {
    my ($self, %param) = @_;
    my $content = $self->photo_info(%param);
    return unless $content;  # 2007/07/03

    my $text = $content->{url} ? LWP::Simple::get($content->{url}) : '';
    $text = decode('utf8', $text);

    my $tree = HTML::TreeBuilder::Select->new;
    $tree->parse_content($text);
    my @selections = $tree->select('div#media_info_extend div.list div.title_extend,div.photodata_extend');
    my %hash = map { $_->as_text; } @selections;

    $content->{exif} = \%hash;
    return $content;
}

1;

Comments:0

Comment Form

Home > Perl > WebService::PhotoZou::Exif をでっちあげる

Feeds

Return to page top