ただのにっき
2009-03-22(日) [長年日記]
■ mixi2gmailを動くようにしたり
mixiの日記を読むために、yoosee作のmixi2gmailを使っているんだけど*1、数日前からどうもHTMLメールとして認識されなくなってしまった。作者のブログは1ヶ月くらい更新ないし、渡米中だからmixiなんて見てないのかな……と思って自力で解決。
ホントは夕べ、ちゃちゃっとやろうと思ったんだけど、自宅のマシンにrubygemsが入ってなくて、aptitudeで入れ始めたら(メモリ極貧のVMwareなので)いつまでたってもgem updateが終わらな……以下gemに関する愚痴1024行省略……今朝やった。
バグの本題に入る前にまずつまづく。Mechanizeが最近はNokogiriを使うようになっていて、これがなぜかmixiトップのparseに失敗する。コードを追っかけて、WWW::Mechanize::html_parser=で旧来のHpricotに置き換えられることを知って回避。Hpricot互換を謳うNokogiriが、挙動が違うのもいかんだろうと思ったので、バグレポートを送るなど。おかげで(いまごろ)lighthouseのアカウントを取った。
肝心の問題は、今までのコードでContent-typeが2行出ていて、最初が「text/plain」次が「multipart/mixed」。これまでは後が優先されていたのに、最近Gmail側の実装が変わって前者が採用されるようになったらしい。どっちが正しいのかな(ここでRFCを調べるのが正しい姿勢です。調べてないけど)。
あとは最新のMechanize/Hpricotで動くように微調整をしたり、どうも長文が文字化けするのはHTMLがそのまま入っているせいだとあたりをつけて、base64にしてみたり。いちおうパッチは送ったけど、反応がなかったらCodeRepos.orgにでも入れちゃうか。
差分はgistにて。これのために(いまごろ)GitHubのアカウントを取ったり。lighthouseといいGitHubといい、なんか変な進歩のある日だったなぁ。もっとも、デバッグに使ったマシンに入っているのはDebian etchなのでgitが古いのか、GitHubのconfigが動かないっぽい。とほほ。
2009-03-23 追記
CodeRepos.orgに入れました。あえてGitHubではなく(笑)。
http://svn.coderepos.org/share/lang/ruby/mixi2gmail/
*1 おかげさまでmixiの画面はもう何ヶ月も拝んでいない。