Create  Edit  Diff  FrontPage  Index  Search  Changes  RSS  Login

posttdiary.rb

tDiaryをメールで更新

機能

メールでtDiaryを更新するためのプログラムです。メールを受け取って、それを元にtDiaryのCGIに更新要求を送信します。また、画像が添付されていたら、ディレクトリに展開してリンクを生成します。

インストール

どこにインストールすればいいの?

メールを受け取って、任意のプログラムを起動できるように設定可能なマシンにインストールします。画像を表示する必要がないならば必ずしもtDiaryの動作してるマシンにインストールする必要はありません。(けど、HTTPでtDiaryが動作しているサーバにアクセスできる必要があります。)

どうやってインストールするの?

メールを受信したら、posttdiary.rbの標準入力にそのメールが入力されるようにインストールします。

ってだけ書いてもわからないですね。じゃあ、具体的にインストールの手順を書いてみましょう。

とりあえず前提条件として

  • tDiaryを実行しているサーバで、その人あてのメールが受信できる。(けど、そのアドレスはまだ使ってなくて、日記更新用のアドレスにしても良い。)
  • 受信したメールはホームディレクトリの.forwardで転送先などを指定するようになっている。
  • ホームディレクトリは/home/tdiary とする。
  • tDiaryのトップのURLはULAUjv http://www.example.com/~tdiary/ で、画像は http://www.example.com/~tdiary/images/ に展開する。更新するときのユーザとパスワードはそれぞれtdiaryとpasswordである。(って、ホントにこんなパスワードにしてちゃダメダメですけどね)
  • http://www.example.com/~tdiary/images/ は、そのサーバの/home/tdiary/public_html/tdiary/images/である。

ということにして、インストールしてみましょう。

  • プログラムのコピー

tdiary-contrib.tar.gzのutil/posttdiaryディレクトリの中に、posttdiary.rbというファイルがあるので、自分の好きなところにコピーします。とりあえずホームディレクトリの下ににbinというディレクトリを作って、そこにコピーすることにしましょう。おっと、実行可能にしておくのを忘れちゃいけませんね。

※posttdiary.rbは1.5.7以前、tDiary本体のmiscディレクトリにありました。1.5.7以降はcontribパッケージに移動しています。

$ chmod +x ~/bin/posttdiary.rb

として、実行可能にしておきましょう。

  • メールの設定

posttdiary.rbをコピーしたら、ホームディレクトリに.forwardというファイルを作って(既にあるなら、そのファイルを更新します。)次のように書き込みます。

| /home/tdiary/bin/posttdiary.rb -i /home/hoge/public_html/tdiary/images/ -u http://www.example.com/~tdiary/images/ http://www.example.com/~tdiary/update.rb tdiary password

これで、メールを受信するとposttdiary.rbが起動するような設定になります。(もしtDiary更新メールじゃないメールも来るようならprocmailなどでtDiary更新メール受信時のみ起動するように設定する必要があります。)

上記を見たらわかる人もいると思いますけど、posttdiary.rbは以下のような書式で起動する必要があります。

posttdiary.rb [options] <日記の更新用url> [ユーザ名] [パスワード] option:--image-path, -i: 画像ファイルを保存するディレクトリ

       --image-url,    -u: 上で指定した画像ファイル置き場のURL
       --image-format, -f: 画像を日記に埋め込む時のフォーマット

※--image-format(-f)についてはスタイル対応のところで説明します

ただし、メールのTo:欄が <ユーザ名-パスワード@なんか> という形式であればユーザ名とパスワードは省略できます。今回の例だと、メールの受信アドレスが「tdiary- password@example.com」みたいになっていれば後ろの「tdiary」と「password」は省略することができるわけです。

メールで更新してみよう

さて、設定ができたので、実際に更新してみましょう。 更新するには、メールの本文に、日記を書くときと同じように記述するだけです。

メールにSubject:(タイトル)をつけると、それがその日の日記のタイトルになります。

例えば、下記のようなメールを、tDiary更新用のメールアドレスに向けて送信してみます。 From: tdiary@example.net To: tdiary@example.com

メールからの更新 tDiaryはメールでも更新できるんだよん。

すると、日記も

  • メールからの更新

tDiaryはメールでも更新できるんだよん。

というように更新される... んじゃないかと思います。

画像の添付

メールに画像を添付すると、指定したディレクトリに展開して、本文の最後に画像を埋め込んでくれます。(<img src=....>のタグを書き込む。)

  • スタイル対応

※この機能は、tDiary 1.5.6から使えるようになりました。

標準のtDiaryスタイルを使っている場合、何もしなくても画像をimgタグに展開してくれるposttdiary.rbですが、HTMLベースでないスタイルを使っている場合はうまく埋め込んでもらえません。そこで、--image-formatオプションを指定してフォーマットを変更できます。

フォーマットは、標準(無指定時)には以下のようになっています。

 <img class="photo" src="$1" alt="">

「$1」のところが、--image-urlとファイル名からなる、画像のURLになるわけです。では、Wikiスタイルを使っている場合にはどう指定すればいいでしょうか。Wikiスタイルでは、画像っぽいURLはそのまま書くことでimgタグにしてくれますから、以下のようにできます。

--image-format='$1'

さらに、絵日記プラグイン(image.rb)を導入している場合には、以下のようにも指定できます。

--image-format='{{image \"$0\"}}Hiki::PluginException (not plugin method): inline plugin
/home/wiki/hiki/hiki/pluginutil.rb:37:in `apply_plugin'
/home/wiki/hiki/style/default/html_formatter.rb:213:in `replace_plugin'
/home/wiki/hiki/hiki/plugin.rb:324:in `in_context'
/home/wiki/hiki/hiki/plugin.rb:84:in `inline_context'
/home/wiki/hiki/style/default/html_formatter.rb:213:in `replace_plugin'
/home/wiki/hiki/style/default/html_formatter.rb:208:in `gsub'
/home/wiki/hiki/style/default/html_formatter.rb:208:in `replace_plugin'
/home/wiki/hiki/style/default/html_formatter.rb:33:in `to_s'
/home/wiki/hiki/hiki/command.rb:192:in `cmd_view'
/home/wiki/hiki/hiki/command.rb:119:in `send'
/home/wiki/hiki/hiki/command.rb:119:in `dispatch'
/usr/lib/ruby/1.8/timeout.rb:67:in `timeout'
/home/wiki/hiki/hiki/command.rb:89:in `dispatch'
/home/wiki/hiki/hiki.cgi:38
/home/wiki/hiki/hiki/storage.rb:14:in `open_db'
/home/wiki/hiki/hiki.cgi:36
/home/wiki/html/users/index.rb:5:in `load'
/home/wiki/html/users/index.rb:5
'

「$0」というのは、画像ファイルの通し番号に展開されるのです。

メールのSubjectをサブタイトルにする

日記のサブタイトルをメール本文に書く形式だと、複数のセクションが一度に書ける一方、添付した画像が必ず末尾にしかつかないので、レイアウトが気に入らない……という場合があります。posttdiary.rb Revision 1.2から、--use-subjectというオプションによって、メールのSubjectをサブタイトル扱いできるようになりました。

--use-subjectオプションをつけて実行すると、以下のようなメールを(画像を添付して)送った場合、

From: tdiary@example.net To: tdiary@example.com Subject: メールからの更新

tDiaryはメールでも更新できるんだよん。

日記には次のように展開されます。

  • メールからの更新

<img class="photo" src="images/1.jpg" alt=""> tDiaryはメールでも更新できるんだよん。

なお、Subjectに指定する文字列は単に日記本文の先頭に挿入されるだけなので、スタイルによってはそれなりの記号(Wikiスタイルであれば「!」)をつけないと、正しくサブタイトルとして認識されません。

コメント

- サムネイル生成など、もっと凝りたい方は改造版のposttdiary-ex.rbをどうぞ。 org/?

Last modified:2013/12/07 08:07:37
Keyword(s):
References:[PluginList] [posttdiary-ex.rb] [解決済みの要望] [携帯から書き込みできません]