Code is beautiful

2009-03-02

Twitterタイムライン表示の不具合を解消しました。

Friends Timelineのスクレイピングを試みようとすると認証が通らず失敗する様になってしまったので、APIで取得する様にしました。

何とかAPI制限を回避できればと思っていたのですが、現状のスキルが足りない為、当面はこの仕様かなと。

2009-02-05

Twitterタイムライン表示の不具合を解消しました。

TwitterHTMLの内容(タグ)が変わってたらしく、上手く取得できていなかった為修正しました。

2008-12-08

ログイン状態を保持できる様になりました。

基本的にPCの機能となりますが、Cookieを使用できる端末でログイン状態を保持できる様になりました。

今までは一定時間何もしない状態が続くとセッションタイムアウトとなり、自動的にログアウトされる仕様だったのですが、今回の機能により1日間保持されます(暫定的)。

設定方法は、ログイン時に「ログイン状態を保持する」にチェックをすればOKです。

※ 不特定多数が利用するPCの場合はご注意下さい。

2008-12-04

Twitter投稿時、一部URLがTinyURLに上手く渡されていなかったのを修正しました。

Twitterへの投稿時、長いURLはTinyURLに変換されるのですが、その時クエリー文字列まで変換されないURLがありました。


【Tedious days: Twitter で tinyurl にURLの一部が渡されないことがある】http://ichi.mo-blog.jp/tedious/2007/06/twitter_tinyurl_0359.html


を読んだ所、クエリー文字列をURLエンコードすれば良いとの事で修正してみました。

2008-11-30

メールでの投稿が可能になりました。

| 15:32

これも実現させたかった機能の一つなんですが、メール投稿が可能になりました。

投稿フォームから画像を投稿できなかった端末(携帯等)でもメールに添付させれば投稿できるので、是非ともご活用頂きたい所です。

対応画像はJPG、PNG、GIF形式、複数を添付しても最初の1ファイルのみが投稿されます。

技術的には、まぁ一から書ける筈もなく、例によって検索頼りでした;

Net::POP3にてメールを受信、MIME::Parserによって添付ファイルと本文に分け、投稿処理をさせています。


Web上にて、多くのサンプル等見せて頂きましたが、


【Perlメモ/Perlでメールを受ける - Walrus, Digit.】

http://digit.que.ne.jp/work/wiki.cgi?Perl%E3%83%A1%E3%83%A2%2fPerl%E3%81%A7%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%92%E5%8F%97%E3%81%91%E3%82%8B


などを中心に参考とさせて頂いております。


一つ問題だったのが本文が空の画像メールで、ケースバイケースらしいのですが、この場合シングルパートのメールとして送られる場合があり、そのままだとテキストとして表示されてしまうという事態に陥りました。


この辺の話題は、


【ウィルコム端末でソフトバンク3G携帯からの写メールを受信すると文字化ける? - w-zero3日和】

http://blog.goo.ne.jp/mypda/e/6bb3429b0ab623b10ec85f007a3a9e41


に載ってました。


現状での回避策としては、"Content-Transfer-Encoding"を判断材料として、"7bit"以外は弾く仕様にしてます(あってるかしら)。

全メーラーに対してチェックできてる訳ではない為、意図しない結果を招く場合があるかもしれませんが、宜しくお願い致します。


また、受信後の投稿処理ですが、メール着信をトリガーにしてスクリプトを走らせる事ができないので、この辺を検討中なのですが、思い付く所だと、

1) 投稿者にスクリプトにアクセスして貰う
投稿の時間差は起こらないが、欲を言えばメールを投げただけで投稿してくれれば非常にありがたい。
2) 訪問者をトリガーにする
一日を通して途切れないだけの閲覧者がいないと時間差が起こる。
一般的に閲覧>書込なので、できる事ならば閲覧時の負荷増大は避けたい所。
メールが何通もサーバーに溜まっている状態だと結構な増大になるのではないかと。
3) 誰かの書込をトリガーにする
これもかなりの書込者がいないとメールが溜まり、書込時の負荷の更なる増大。
4) cronを使用する
指定した時間にスクリプトを起動してくれるとの事で、現実的と言えば現実的だが、1時間に1回とかだとどうなのかと言った所。
複数設定して、クロールまでの時間差を減らせれば理想に近づく。

こんな所でしょうか。


この中だとcronを使用しつつ、即反映させたい場合にはスクリプトにアクセスして貰うのが良いのかなと言った所です。

と言う訳でcronの設定もしてみようかと思います。