Drk7jp.yaml of EFT

Bloglinesに登録してるblogのひとつに、Drk7.jpさんがあるのですが、
PlaggerでBloglines2Gmailするときに本文を全部取得できていなかったので作ってみました。

author: tayaya
handle: http://www\.drk7\.jp/MT/
extract: <div class="blogbody">(.*?)<!-- Google AdSense
extract_capture: body

EntryFullTextのconfigでforce_upgradeしないと使えないです。

  - module: Filter::EntryFullText
    config:
      force_upgrade: 1

[perl][Plagger]Plaggerソースコード読む(2)

bootstrapメソッド(Plagger.pm)の中身。

sub bootstrap {
    my $class = shift;
    my $self = $class->new(@_);
    $self->run();
    $self;
}

newしてrunしてるだけ。
newに渡してる引数はハッシュで、YAMLのファイル名が入ってるというのは前回書いた。


じゃあまずコンストラクタnewから。
定義されてるデータ構造はこんな感じ。

    my $self = bless {
        conf  => {},
        update => Plagger::Update->new,
        subscription => Plagger::Subscription->new,
        plugins_path => {},
        plugins => [],
        rewrite_tasks => []
    }, $class;

次に、

    my $loader = Plagger::ConfigLoader->new;
    my $config = $loader->load($opt{config}, $self);

ここでYAMLファイルを読み込んでハッシュリファレンスに変換。


下のようなYAMLの場合、

global:
  timezone: Asia/Tokyo
  assets_path: C:\Perl\site\lib\Plagger\assets

plugins:
  - module: Subscription::Config
    config:
      feed: 
        - url: http://d.hatena.ne.jp/tayaya/rss

  - module: Filter::EntryFullText

  - module: Publish::Gmail
    config:
      mailto: xxxxx@gmail.com
      mailroute:
        via: smtp_tls
        host: smtp.gmail.com:587
        username: xxxxx@gmail.com
        password: base64::xxxxx=

$configをDumpするとこのようになる。

'plugins' => [
               {
                 'config' => {
                               'feed' => [
                                           {
                                             'url' => 'http://d.hatena.ne.jp/tayaya/rss'
                                           }
                                         ]
                             },
                 'module' => 'Subscription::Config'
               },
               {
                 'module' => 'Filter::EntryFullText'
               },
               {
                 'config' => {
                               'mailto' => xxxxx@gmail.com',
                               'mailroute' => {
                                                'password' => 'base64::xxxxx=',
                                                'via' => 'smtp_tls',
                                                'username' => xxxxx@gmail.com',
                                                'host' => 'smtp.gmail.com:587'
                                              }
                             },
                 'module' => 'Publish::Gmail'
               }
             ],
'global' => {
              'timezone' => 'Asia/Tokyo',
              'assets_path' => 'C:\\Perl\\site\\lib\\Plagger\\assets'
            }

各Pluginの設定とGlobalの設定が入ってるのがわかる。

[perl][Plagger]Plaggerソースコード読む

とりあえずメモ書き。
以下はWindows環境での話です。


コマンドプロンプトからPlaggerって打つと、
C:\Perl\bin\Plagger(拡張子がついてない、「Plagger」ってファイル)が実行される。
その中で、Plagger.pmのbootstrapメソッドを呼んでます。

Plagger->bootstrap(config => $config);

$configには指定したconfig.yamlのファイル名が入ってる。
例えば、

C:\>Plagger -c bloglines2Gmail.yaml

ってやると、
$configには「bloglines2Gmail.yaml」という文字列が入る。


つづく

[perl]Data::Dumper

これ、いいですね。
use Data::Dumper;
print dumper $var;って書くのまんどくせだったので助かります。