Flickr::API2をちょっと読んでみたというお話
flickr.photos.searchを使ってある案件のお手伝いをしたのですが、extrasパラメータで指定した値がレスポンスに入ってない。。。なので、調査のために蓋を開けてみたら驚愕。
# Flickr::API2::Base sub _response_to_photos { my ($self, $photos) = @_; my @photos = map { Flickr::API2::Photo->new( api => $self->api, id => $_->{id}, title => $_->{title}, date_upload => $_->{date_upload}, date_taken => $_->{date_taken}, owner_id => $_->{owner}, owner_name => $_->{owner_name}, url_s => $_->{url_s}, url_m => $_->{url_m}, url_l => $_->{url_l}, url_o => $_->{url_o}, path_alias => $_->{path_alias}, ) } @{ $photos->{photo} }; return @photos; }
えー。。。決め打ち><
仕方ないので、githubからソースを持ってきて、以下のように変更。
diff --git a/lib/Flickr/API2/Base.pm b/lib/Flickr/API2/Base.pm index d7f5673..e07a72f 100644 --- a/lib/Flickr/API2/Base.pm +++ b/lib/Flickr/API2/Base.pm @@ -37,20 +37,13 @@ sub _response_to_photos { my ($self, $photos) = @_; my @photos = map { - Flickr::API2::Photo->new( - api => $self->api, - id => $_->{id}, - title => $_->{title}, - date_upload => $_->{date_upload}, - date_taken => $_->{date_taken}, - owner_id => $_->{owner}, - owner_name => $_->{owner_name}, - url_s => $_->{url_s}, - url_m => $_->{url_m}, - url_l => $_->{url_l}, - url_o => $_->{url_o}, - path_alias => $_->{path_alias}, - ) + my $photo = $_; + $photo->{path_alias} = $_->{pathalias}; + $photo->{date_taken} = $_->{datetaken}; + $photo->{owner_id} = $_->{owner}; + $photo->{owner_name} = $_->{ownername}; + $photo->{api} = $self->api; + Flickr::API2::Photo->new($photo) } @{ $photos->{photo} }; return @photos; diff --git a/lib/Flickr/API2/Photo.pm b/lib/Flickr/API2/Photo.pm index 2218a10..3b4b3ae 100644 --- a/lib/Flickr/API2/Photo.pm +++ b/lib/Flickr/API2/Photo.pm @@ -33,11 +33,19 @@ has 'id' => ( is => 'ro', required => 1, ); -has 'title' => ( is => 'rw' ); -has 'date_upload' => ( is => 'rw' ); -has 'date_taken' => ( is => 'rw' ); -has 'owner_id' => ( is => 'rw' ); -has 'owner_name' => ( is => 'rw' ); + +has [qw/ + title date_upload date_taken owner_id owner_name + description path_alias accuracy datetakengranularity dateupload farm + geo_is_contact geo_is_family geo_is_friend geo_is_public + height_l height_m height_o height_s height_sq height_t height_z + iconfarm iconserver isfamily isfriend ispublic + lastupdate latitude longitude machine_tags media media_status + o_height o_width originalformat originalsecret + place_id server tags views + width_l width_m width_o width_s width_sq width_t width_z woeid + /] => ( is => 'rw' ); + has 'url_sq' => ( is => 'rw', lazy => 1, @@ -68,8 +76,6 @@ has 'url_o' => ( lazy => 1, default => sub { $_[0]->populate_size_urls; $_[0]->url_o; }, ); -has 'description' => ( is => 'rw' ); -has 'path_alias' => ( is => 'rw' ); =head1 METHODS
→ Flickr::API2を修正したので、そのdiff · GitHub
自分用quick hackにつき、特に報告しようとは思ってません。いい修正だとも思ってないので。