@kyanny's blog

大作を傑作と混同するものは確かに鑑賞上の物質主義である。大作は手間賃の問題にすぎない - 芥川竜之介

Plagger::Plugin::CustomFeed::FlickrSearch で日本語検索ができない -> できた

Plagger::Plugin::CustomFeed::FlickrSearch で日本語検索ができない。 config.yaml に日本語を書くと止まってしまう。 config.yaml は UTF-8N でないとダメ、という条件があるらしいけど、 emacs で UTF-8 で保存すると BOM は取り除かれるという情報もある。

$ cat flickr.config.yaml
global:
  timezone: Asia/Tokyo
  log:
    level: info

plugins:
  - module: CustomFeed::FlickrSearch
    config:
     api_key: xxxx
     method: flickr.photos.search
     params:
       text:- module: Publish::Serializer
    config:
      dir: /home/kyanny
      serializer: YAML
      filename: %i.yaml

エラーは以下。よくわからない。。

$ ./plagger --config flickr.config.yaml
Plagger::Cache [error] Can't load Cache::FileCache. Fallbacks to Plagger::Cache::Null
Math::BigInt: couldn't load specified math lib(s), fallback to Math::BigInt::Calc at /home/kyanny/local/lib/perl5/DateTime/Format/Epoch.pm line 12
Plagger [info] plugin Plagger::Plugin::CustomFeed::FlickrSearch loaded.
Plagger [info] plugin Plagger::Plugin::Publish::Serializer loaded.
Plagger [info] plugin Plagger::Plugin::Bundle::Defaults loaded.
Plagger [info] plugin Plagger::Plugin::Aggregator::Simple loaded.
Plagger [info] plugin Plagger::Plugin::Summary::Auto loaded.
Plagger [info] plugin Plagger::Plugin::Summary::Simple loaded.
Plagger [info] plugin Plagger::Plugin::Namespace::HatenaFotolife loaded.
Plagger [info] plugin Plagger::Plugin::Namespace::MediaRSS loaded.
Plagger [info] plugin Plagger::Plugin::Namespace::ApplePhotocast loaded.
Plagger::Plugin::CustomFeed::FlickrSearch [info] calling flickr.photos.search on Flickr API
Use of uninitialized value in concatenation (.) or string at /home/kyanny/plagger/lib/Plagger/Plugin/CustomFeed/FlickrSearch.pm line 52.
Plagger::Plugin::CustomFeed::FlickrSearch [fatal] flickr.photos.search failed:  at line 52


ごちゃごちゃやってたらなんとなくできた。 Plagger::Plugin::CustomFeed::FlickrSearch::call_method() に $param が渡ってくる時点で UTF-8 フラグがたっていて "\x{732b}" とかになっているので (これは"猫") ここで UTF-8 フラグがたっていたら encode("utf-8", $param->{text}) とかするようにしたらちゃんと動いた。 config.yaml にどう書けばいいのかはちょっとわからない。。