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;

See Also

Copyright © 髭。/ Hugo + hugo-book