BLOGTIMES
2008/11/28

mixiの更新内容をメーラーでチェックする

  ruby  mixi 
このエントリーをはてなブックマークに追加

mixiも毎日チェックするのが億劫になってきたというか仕事の合間にチェックすると目立つので、なんとかメーラーでチェックする方法がないものかと調べてみると、mixi2gmail.rbというおあつらえ向きのrubyスクリプトを見つけました。スクリプト名はGmailとついていますが、基本的にはメールボックスであればどこにでも配送することができます。

mixi2gmail WWW::Mechanize 0.7.5/Hpricot 対応版 - World Wide Walker

挙動としては、基本的に Linux 前提で、~/.mixi/mixirc に幾つか設定を入れて実行すると、友達の日記を画像を含めて(添付として)指定したメールアドレスに 1日記 1 HTML メールとして送信する。次回実行は新しいものだけを対象にし、また除外リスト、ウォッチリストなどの設定も出来る。

WWW::Mechanize は以前にも書いたが、ログインが必要なウェブサービスからコンテンツを持ってくるなんて言う用途には手軽で便利だ。Hpricot は Htree を改良したっぽいコンセプトだが、そこそこ高速になっているし、non well-formed な HTML 相手に Xpath や css 指定が出来るのは便利。

注意点としては、サイトにも記述があるとおり初回起動時はものすごく重い+メモリを食うので、友人の直近の日記のidを調べて、~/.mixi/lastid.logにぶち込んでおくのは必須だと思います。迂闊にもこれを忘れて起動してしまったため、サーバがswapしまくりで大変でした。

MIMEヘッダがおかしいのでメーラーによっては添付ファイルが認識されないかも

どうもThunderbirdではうまくMIMEパートが認識されなくて、HTMLメールとして認識されないわ、画像が見れないわで困りました。ヘッダを詳しく調べてみたらメールヘッダにContent-Typeがついていて、それがbodyのMIMEパートを認識させないようにしているようだったので、Content-Typeは各MIMEパートにつけるようにしました。あとcronで自動実行することが前提なので、容量が大きくなるhttpアクセスのログが出力されないようにしました。参考までに、diffを貼っておきます。

--- mixi2gmail.rb.org 2008-04-08 11:17:42.000000000 +0900 +++ mixi2gmail.rb 2008-11-26 11:56:30.000000000 +0900 @@ -210,7 +210,8 @@ end def login - @agent = WWW::Mechanize.new {|a| a.log = Logger.new(@logfile) } +# @agent = WWW::Mechanize.new {|a| a.log = Logger.new(@logfile) } + @agent = WWW::Mechanize.new @agent.user_agent_alias = 'Windows Mozilla' if ENV['HTTP_PROXY'] then host, port = ENV['HTTP_PROXY'].split( /:/, 2 ) @@ -317,7 +318,8 @@ content = '' tmp = text text = "--#{boundary}\n" - text << "Content-Type: text/html;\n\n" + text << "Content-Type: text/html; charset=ISO-2022-JP\n" + text << "Content-Transfer-Encoding: 7bit\n\n" text << tmp text << "\n\n" @@ -348,8 +350,6 @@ Date: #{datetime.rfc2822} MIME-Version: 1.0 X-ML-Name: mixi -Content-Type: text/plain; charset=\"iso-2022-jp\" -Content-Transfer-Encoding: 7bit #{header} #{NKF.nkf('-j',text)}

    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/2817
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン