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」という文字列が入る。
つづく。