TwitterへのPOSTをライフログ的なものとして残したいなーとか思ったりしたので、Plaggerを使ってblogに書き込みさせてみようと。
※twilogとゆー便利なサービスがあるので今回のはただ作って放置とゆーだけになってしまったのは内緒だ(・・`)
仕様としてはuser_timelineからひっぱってきて吐き出すだけ。
一日100以上POSTすることがないので一度0時あたりに実行して初期化し、23:59にuser_timelineからひっぱってくれば丸っと一日分とれるフヒヒというしょぼい仕様。
rsd.xmlの用意
httpでアクセスできる場所にrsd.xmlを作成する。
<?xml version="1.0"?>
<rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd">
<service>
<engineName>Movable Type 3.35</engineName>
<engineLink>http://www.sixapart.com/movabletype/</engineLink>
<homePageLink>http://dameninngenn.sblo.jp/</homePageLink>
<apis>
<api name="MetaWeblog" preferred="true" apiLink="http://blog.sakura.ne.jp/rpc/" blogID="1" />
<api name="MovableType" preferred="false" apiLink="http://blog.sakura.ne.jp/rpc/" blogID="1" />
<api name="Blogger" preferred="false" apiLink="http://blog.sakura.ne.jp/rpc/" blogID="1" />
</apis>
</service>
</rsd>
yamlの作成
global:
plugin_path: ~/plagger/assets/plugins
assets_path: ~/plagger/assets
timezone: Asia/Tokyo
log:
level: debugplugins:
- module: Subscription::Config
config:
feed:
- http://twitter.com/statuses/user_timeline/17480482.rss?count=100- module: Filter::Rule
rule:
module: Deduped- module: Publish::MT
config:
rsd: rsd.xmlのURL
username: ユーザー名
password: パスワード
blog_id: dameninngenn
title: "Today's Twitter"
category: TwitterLog
template: twitter2blog.tt
Publish::MTを改変
カテゴリ指定で分けたかったのでデフォルトのPublish::MTを少し改変。
sub post_to_mt {
my $self = shift;
my %args = @_;
my $mt = $self->mt;# FIXME: Can I use XML::RPC::Lite without hack?
Encode::_utf8_off($args{title});
Encode::_utf8_off($args{body});my $id = $mt->newPost({
title => $self->conf->{title} || $args{title} || '',
description => $args{body} || '',
}) or die $mt->errstr;
- if ($self->conf->{category}) {
- $mt->setPostCategories($id, $self->conf->{category});
- }
$mt->publishPost($id);
$id;
}
テンプレートファイルの作成
$ vi ~/plagger/assets/common/twitter2blog.tt
<ul>
[% FOREACH entry = feed.entries -%]
<li>[% entry.date.format('Mail') %]<BR>[% entry.body %]<BR><a href="[% entry.link %]">[% entry.link %]</a></li>
[% END %]
</ul>
cronの設定
最後にcronをセットしてフィニッシュ。
59 23 * * * /home/dameninngenn/local/bin/plagger -c ~/plagger/yaml/twitter2blog.yaml 1> /dev/null 2> /dev/null
TimeZoneについて
しょっぱな動かした時にはyamlに記述したAsia/Tokyoが読み込まれてないっぽく+0000の時間が表示されてしまった。
どこかいじったりしてちゃんと読むようにしたけどメモってなかったので思い出したら書こう(・・`)