Subscribed unsubscribe Subscribe Subscribe

ダメ人間オンライン

あまり信用しないほうがいい技術メモとか備忘録とかその他雑記

一日分のTwitterへのPOSTをPlaggerでblogへ書き込み

Perl

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: debug

plugins:
- 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;

  1. if ($self->conf->{category}) {
  2. $mt->setPostCategories($id, $self->conf->{category});
  3. }

$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の時間が表示されてしまった。

どこかいじったりしてちゃんと読むようにしたけどメモってなかったので思い出したら書こう(・・`)