「flickr_fetcher.pl」を勝手に改造して活用してみた

画像を集めるのは結構大変だったりするわけですが。 Yahoo!Pipesで複数のソーシャルブックマークから情報を収集していて面白いスクリプトを見つけました。 ゆーすけべー日記: Flickr からキーワードにマッチした写真を一括ダウンロードする Perl スクリプト「flickr_fetcher.pl」 最初は記事に書いてあるとおり使ってみようとしたのですが、コマンドプロンプトがShift_JISのせいなのか、キーワードを入れてもヒットしないのです。 Windowsを呪ってみても仕方がないので、スクリプトの中にキーワードを入れて使うことにしました。 どのように入れるか迷いましたが、とりあえず、BUILDに直接書き込みました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
sub BUILD {
  my ( $self, $args ) = @_;
  unless ( $self->api_key ) {
    if ( my $api_key = $ENV{FLICKR_API_KEY} ) {
      $self->api_key($api_key);
    }
    else {
      die "api_key is required\n";
    }
  }
  unless ( $self->keyword ) {
    $self->keyword('石原さとみ');
  }
  unless ( $self->dir ) {
    $self->dir('satomi_ishihara');
  }
  my $xs = XML::Simple->new( KeepRoot => 1, keyattr => [] );
  my $parser = WebService::Simple::Parser::XML::Simple->new( xs => $xs );
  my $flickr = WebService::Simple->new(
    base_url        => "http://api.flickr.com/services/rest/",
    param           => { api_key => $self->api_key },
    response_parser => $parser,
  );
  $self->_flickr($flickr);
}

これに伴い、keywordとdirのrequireをとりました。

1
2
3
4
has 'keyword' => ( is => 'rw', isa => 'Str' );
has 'dir'     => ( is => 'rw', isa => 'Dir', coerce => 1 );
has 'api_key' => ( is => 'rw', isa => 'Str' );
has 'license' => ( is => 'rw', isa => 'Int' );

(わかったようにやっていますが、雰囲気でやってみて、結果としてうまくいっただけです。) で、結果は以下のとおり。

いやいや。 便利なスクリプトをありがとうございます。

comments powered by Disqus
Hugo で構築されています。
テーマ StackJimmy によって設計されています。