Plagger で遊んでたら週末が終わっていた [plagger]
前から試そう,試そうと思っていた話題の Plagger を導入してみました.mixi のマイミクの方とかはこれから足あとがつきまくると思いますが,気にしないで下さい.
Plagger をご存知無い方は,この辺りでも.
一足早く「Plagger」の便利さを実感してみよう - @IT
plagger - otsune FreeStyleWiki
要は,「いろいろな」データを入力して,加工して,「いろいろな」ものに出力するフレームワーク.「いろいろな」というところがポイントで,誰かが MacBook を勝手に持ち出したら携帯にメールする とか,Google で「はらへった」と検索してピザを注文する なんて人まで.
Plagger については,既にネット上にインストール方法や設定方法がたくさんあるので,わざわざここで書くことはないんだけど,ひとまず自分の備忘録を兼ねて書いておきます.
- RSS を整理
まずは RSS の整理から.
私は RSS リーダーに Google Reader を使っているが,Bloglines のフィードリストをアップデートしようとして「Google Reader で OPML をエクスポート → Bloglines でインポート」すると,変な名前のフォルダとか勝手にできて上手くいかなかった.
結論としては,livedoor Reader を踏み台にして,「Google Reader で OPML をエクスポート → livedoor Reader でインポート → エクスポート → それを Bloglines でインポート」すると,OK だった.
…って後から考えれば,livedoor Reader にエクスポートした時点で,Subscription::LivedoorReader を使えば十分だったのだが.
- さくらインターネットのレンタルサーバーを契約
Plagger を導入するのは自宅の環境でも良かったのだが,常時稼働環境が望ましいことと,2週間の無料お試し期間があるということで,さくらのレンタルサーバーで試してみる.
SAKURA Internetのレンタルサーバ
SAKURA Internet : レンタルサーバ 概要
さくらのレンタルサーバ非公式FAQ
とりあえずお約束で,vim をコンパイルして $HOME 以下にインストールしたり,"chsh -s /usr/local/bin/zsh" したりと設定に小一時間.
- CPAN の設定
ポイントは,root 権限が無いレンタルサーバーなので,$HOME 以下にインストールすることだが,otsune さんの記事 が非常に参考になった.というかほぼこの通りにしただけだが,一応やったことは以下の通り.
$ mkdir -p ~/local $ echo no | cpan $ vim ~/.cpan/CPAN/MyConfig.pm
MyConfig.pm の内容を以下に書き変える (mbuildpl_argの項目は存在しないので追加する).
'make_install_arg' => qq[SITEPREFIX=$ENV{HOME}/local], 'makepl_arg' => qq[INSTALLDIRS=site LIB=$ENV{HOME}/local/lib/perl5 PREFIX=$ENV{HOME}/local], 'mbuildpl_arg' => qq[./Build --install_base $ENV{HOME}/local], 'urllist' => [q[ftp://ftp.cpan.jp/], q[ftp://ftp.kddilabs.jp/CPAN/]],
必要な環境変数を追加する.
前述の通り,私はシェルを zsh に変更したが,さくらインターネットのサーバーは FreeBSD でデフォルトは csh なので,以下では .cshrc を変更する例を紹介しておく.
$ echo 'setenv PATH $HOME/local/bin:$PATH' >> ~/.cshrc $ echo 'setenv PERL5LIB $HOME/local/lib/perl5:$HOME/local/lib/perl5/site_perl' >> ~/.cshrc $ echo 'setenv PKG_DBDIR $HOME/local/var/db/pkg' >> ~/.cshrc $ echo 'setenv PORT_DBDIR $HOME/local/var/db/pkg' >> ~/.cshrc $ echo 'setenv INSTALL_AS_USER' >> ~/.cshrc $ echo 'setenv LD_LIBRARY_PATH $HOME/local/lib' >> ~/.cshrc $ source ~/.cshrc $ mkdir -p ~/local/var/db/pkg
CPAN を最新に更新.
$ cpan -i Bundle::CPAN $ cpan
質問には全てEnter で.
最後に
cpan> o conf commit
を忘れないように.
- Plagger のインストール
ネット上には,Template,DateTime::TimeZone,DateTime::Format::Mail,Encode::Detect あたりでつまづくとの記事が多く見られたが,今日時点の環境ではどれも問題無かった.というわけで素直に,
cpan> install Plagger
するだけ.ここも質問は全て Enter でデフォルト値を受け入れる.
後から必要になったモジュールは,
cpan> install WWW::Mixi cpan> install URI::Find cpan> install WWW::Mechanize cpan> install Image::Info
のあたり.
assets はどこか適当な場所にコピーしておく (後から yaml の global で読み込む).
cp -r ~/.cpan/build/Plagger-0.7.17/assets ~/plagger
- Plagger の設定
yaml はインデント構造を保持することと,最終行に改行を入れておくことに注意.
メール配信は,Gmail の smtp を使っていたのだが,遊びすぎて
Data failed: 550 5.4.5 Daily sending quota exceeded. v50smxxxxxxxxx
とか怒られてしまったので,さくらインターネットの smtp を使っている.さくらの smtp は POP before SMTP なので,POP のアカウントも記述しておくことに注意.
base.yaml:
全てから読み込む共通設定.
最初はメール送信部分やレシピ定義などをしていたが,結局 global だけになったのであまり意味がない.
global: plugin_path: - /home/<username>/local/lib/perl5/Plagger/Plugin assets_path: /home/<username>/plagger/assets timezone: Asia/Tokyo log: # level: debug level: info cache: base: /home/<username>/plagger define_recipes:
bloglines.yaml:
Bloglines のフィードを Gmail へ.
Bloglines や del.icio.us へのリンクを追加したり,はてブ数や page rank を表示させたり,全文配信しないフィードの全文取得をしたり,余計な広告を除去したり…などなど.メール配信は Bloglines のフォルダ別にアドレスを分けて,後で Gmail でフィルタできるようにしている.
include: - /home/<username>/plagger/.yaml/base.yaml plugins: - module: Subscription::Bloglines config: username: XXX password: base64::XXX mark_read: 1 fetch_meta: 1 - module: Widget::Simple config: widget: bloglines - module: Widget::Simple config: widget: delicious - module: Widget::Simple config: widget: hatena_bookmark_users # - module: Widget::Simple # config: # widget: livedoor_clip_users # - module: Widget::Simple # config: # widget: delicious_bookmark_users - module: Widget::Simple config: widget: google_pagerank # - module: Filter::BreakEntriesToFeeds - module: Filter::EntryFullText - module: Filter::ImageInfo - module: Filter::ResolveRelativeLink - module: Filter::StripRSSAd - module: Filter::TTP - module: Filter::TruePermalink - module: Publish::Gmail rule: expression: $args->{feed}->has_tag('alpha') config: mailto: XXX+plagger_bloglines_alpha@gmail.com mailfrom: noreply@plagger.com mailroute: # via: smtp_tls # host: smtp.gmail.com:587 # username: XXX@gmail.com # password: base64::XXX via: smtp host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX pop3: host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX - module: Publish::Gmail rule: expression: $args->{feed}->has_tag('ce') config: mailto: XXX+plagger_bloglines_ce@gmail.com mailfrom: noreply@plagger.com mailroute: # via: smtp_tls # host: smtp.gmail.com:587 # username: XXX@gmail.com # password: base64::XXX via: smtp host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX pop3: host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX - module: Publish::Gmail rule: expression: $args->{feed}->has_tag('music') config: mailto: XXX+plagger_bloglines_music@gmail.com mailfrom: noreply@plagger.com mailroute: # via: smtp_tls # host: smtp.gmail.com:587 # username: XXX@gmail.com # password: base64::XXX via: smtp host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX pop3: host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX - module: Publish::Gmail rule: expression: $args->{feed}->has_tag('peace-pipe') config: mailto: XXX+plagger_bloglines_peace-pipe@gmail.com mailfrom: noreply@plagger.com mailroute: # via: smtp_tls # host: smtp.gmail.com:587 # username: XXX@gmail.com # password: base64::XXX via: smtp host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX pop3: host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX - module: Publish::Gmail rule: expression: $args->{feed}->has_tag('personal') config: mailto: XXX+plagger_bloglines_personal@gmail.com mailfrom: noreply@plagger.com mailroute: # via: smtp_tls # host: smtp.gmail.com:587 # username: XXX@gmail.com # password: base64::XXX via: smtp host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX pop3: host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX - module: Publish::Gmail rule: expression: $args->{feed}->has_tag('topics') config: mailto: XXX+plagger_bloglines_topics@gmail.com mailfrom: noreply@plagger.com mailroute: # via: smtp_tls # host: smtp.gmail.com:587 # username: XXX@gmail.com # password: base64::XXX via: smtp host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX pop3: host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX # - module: Publish::Gmail # config: # mailto: XXX+plagger_bloglines_ALL@gmail.com # mailfrom: noreply@plagger.com # mailroute: # via: smtp_tls # host: smtp.gmail.com:587 # username: XXX@gmail.com # password: base64::XXX # via: smtp # host: <domain>.sakura.ne.jp # username: XXX@<domain>.sakura.ne.jp # password: base64::XXX # pop3: # host: <domain>.sakura.ne.jp # username: XXX@<domain>.sakura.ne.jp # password: base64::XXX
mixi.yaml:
mixi の日記を Gmail で読む.メッセージとかも取得できるようだが,ひとまず日記だけ.
include: - /home/<username>/plagger/.yaml/base.yaml plugins: - module: CustomFeed::Mixi config: email: XXX password: base64::XXX fetch_body: 1 fetch_body_internal: 1.5 fetch_items: 10 show_icon: 1 feed_type: - FriendDiary # - RecentComment # - Message - module: Filter::Rule rule: module: Fresh mtime: path: /home/<username>/plagger/.tmp/mixi autoupdate: 1 - module: Publish::Gmail rule: - module: Rating rate: '>= 0' config: mailto: XXX+plagger_mixi@gmail.com mailfrom: noreply@plagger.com mailroute: # via: smtp_tls # host: smtp.gmail.com:587 # username: XXX@gmail.com # password: base64::XXX via: smtp host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX pop3: host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX
amazon.yaml:
Amazon アソシエイトレポートを Gmail で読む.
include: - /home/<username>/plagger/.yaml/base.yaml plugins: - module: CustomFeed::AmazonAssociateReportJP config: email: XXX password: base64::XXX - module: Publish::Gmail config: mailto: XXX+plagger_amazon@gmail.com mailfrom: noreply@plagger.com mailroute: # via: smtp_tls # host: smtp.gmail.com:587 # username: XXX@gmail.com # password: base64::XXX via: smtp host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX pop3: host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX
…と,ひとまず.定番の使い方だけ.
あとは crontab -e して,
PERL5LIB=/home/<username>/local/lib/perl5:/home/<username>/local/lib/perl5/site_perl 0 * * * * /usr/bin/perl /home/<username>/local/bin/plagger -c /home/<username>/plagger/.yaml/bloglines.yaml > /dev/null 2>&1 30 5 * * * /usr/bin/perl /home/<username>/local/bin/plagger -c /home/<username>/plagger/.yaml/mixi.yaml > /dev/null 2>&1 30 6 * * * /usr/bin/perl /home/<username>/local/bin/plagger -c /home/<username>/plagger/.yaml/amazon.yaml > /dev/null 2>&1
とか適当に.
これからレンタルサーバーの無料お試し期間の2週間,遊び倒してみます.
非常にたくさんの情報を残してくれた先駆者の方々に感謝.
2 コメント:
このブログに匿名で投稿することはできません。
コメントを投稿