[sylpheed-jp:11207] Re: フィードを読む

Hiroyuki Yamamoto hiro-y @ kcn.ne.jp
2012年 10月 11日 (木) 10:54:03 JST


山本です。

On Wed, 10 Oct 2012 20:39:09 +0900
穴澤亮 <anazawa @ kuc.biglobe.ne.jp> wrote:

> 山本様
> 
> Sylpheed のメンテナンスをしていただきありがとうございます。
> プラグインを追加する仕組みが加わったというアナウンスがあり、
> 仕様を興味深く拝見しました。ところが、今のところ私には
> プラグインを書く力がありません :(
> 
> 具体的には、Mail.app のようにメーラのインタフェースを
> 利用してフィードを購読する方法を考えています。
> 
> そこで、フィードを取得し、MH 形式で出力する Perl スクリプトを書きました:
> https://gist.github.com/3864493

Sylpheed で RSS フィードが読めるようにできないかな?と思っていた
ことがあったので素晴らしいです。

> このスクリプトは1エントリあたりメール1通として、
> ~/Mail/RSS 以下に保存します。フィードを再読み込みした際、メールの
> X-Sylpheed-Rss-Identifier ヘッダ (勝手に名付けた) を
> 見てエントリを追加するかどうか決めています。
> このヘッダには、エントリの URL のハッシュ値が設定されています。
> (この実装が適切かどうかわからない)
> 
> 大抵の場合、エントリの本文は text/html で与えられます。
> Sylpheed は HTML を「いい感じの平文」に変換してくれるので、
> 生の本文をメールの body に流用しています。
> さらに、body の末尾にエントリのリンク (Read more) を付加しています。
> 
> 以下のような問題もあります。
> 
> (1) Sylpheed の API を使わずにメールを追加している。
> プラグインの枠内でできるのであれば、その方法を知りたい。
> また、外部のプログラムが ~/Mail 以下を変更して、
> Sylpheed のシステムに矛盾が生じないか不明。

プラグインを使えば、メールの追加、フォルダビュー、サマリビューの更新
なども行うことができます。

未読、既読情報などはフォルダごとに管理しているので、部分的に表示が
矛盾したりする以外では、システム全体に矛盾が生じることはないと思います。

> (2) フィードを更新するためのフックがない。
> 例えば Sylpheed 本体の機能として、メールを全受信したときに、
> 任意のスクリプトを実行するフックがあれば使用したい。
> あるいはプラグインの枠内でできるのであれば、その方法を知りたい。

プラグイン API では、受信開始・受信終了時にフックをかけて
ユーザ関数を呼び出すことができます。

一応、「新着メール受信時に」任意のコマンドを実行する機能はありますが、
新着がなかった場合は実行されないので微妙ですね。

> (3) フィードを parse するために Perl を使用している。
> 例えば上のスクリプトをプラグイン化したとき、Perl に依存してしまう。
> 
> (4) MH 形式の性質上、エントリの数だけメールが生成されてしまう。
> フィードが増えたとき、パフォーマンスが下がらないか?
> あるいは index ファイルを用意するなど、パフォーマンスを上げる
> 方法があれば知りたい。

Sylpheed では受信時にキャッシュファイルも同時に生成するように
したりしてパフォーマンスを上げる工夫をしていますが、
数千件くらいであれば気にするほどでもないと思います。
(万単位になると厳しくなってきますが)

-- 
Hiroyuki Yamamoto <hiro-y @ kcn.ne.jp>


Sylpheed-jp メーリングリストの案内