会社用メールアカウントのシグネチャに最新ニュース的なものを書いたりしてたけど、いよいよ手で更新するのが面倒くさくなってきた。で、機械にやらせようと。会社のサイトのフィードから最新ニュースを取得してシグネチャを更新する。
シグネチャ用のファイルを探す
まずは書き換えるべきファイルを探す。
UbuntuのOperaでは
/home/username/.opera/mail/signature2.txt 。
(アカウントをいくつか作ってたので"2"がついてるのかな)
Windows Operaの場合は
C:\Documents and Settings\username\Application Data\Opera\mail 内かな。
Thunderbirdだと自由に設定できるみたい。
(Tools > AccountSettingsからAttach this signatureにチェック入れてChoose)
フィードを読んでファイルを更新するスクリプトを書く
次はスクリプト書く。Perlでやった。XML::TreePPとかいうモジュールを使用。
$fileにさっき探したシグネチャのファイルを指定、$strにはシグネチャのフォーマットを書く。
(この例ではlivedoorのニュースを最新のもの1件、タイトルとURLを挿入)
#!/perl/bin/perl
use strict;
use warnings;
use XML::TreePP;
my $tpp = XML::TreePP->new();
my $tree = $tpp->parsehttp( GET => "http://news.livedoor.com/topics/rss.xml" );
my $file = "/home/username/.opera/mail/signature2.txt";
my $str = < < "EOM";
山田太郎 <sample\@yourdomain.com>
==注目のニュース==
$tree->{rss}->{channel}->{item}->[0]->{title}
$tree->{rss}->{channel}->{item}->[0]->{link}
EOM
open my $fh, '>', $file or die $!;
print $fh $str;
close $fh;
exit;
これをsignature.plなどとして、
$ perl /path/to/script/signature.pl
すると、シグネチャファイルが書き換えられる。
(↑このパス適当。ファイルまでのパスをちゃんと書く。)
スクリプトが毎日定時に実行されるよう設定する
毎度手動でスクリプトを実行したくないので、定期的に実行するよう設定。
$ sudo crontab -e
するとエディタが開くので下記のように書いて(毎日12時に実行)
# m h dom mon dow command
0 12 * * * /bin/sh /usr/local/sbin/daily >/dev/null 2>&1
$ sudo gedit /usr/local/sbin/daily
して次のようなファイルを作ります。
#!/usr/bin/sh
$ perl /path/to/script/signature.pl
cronに関しては下記のサイトを参考にしました。
Ubuntu/cronでスクリプトを回そう - TOBY SOFT wiki
以上でおk。
個人的なメールアカウントならAmazonのWishlist(フィードあるのか)など入れると面白そう。