fslasht (3370) の日記

2003 年 12 月 17 日
午前 12:51

はてなダイアリー自動転記スクリプト開発(7) nisejournal復活

STATUS: 故障中 / 0.901 [fslasht kg]

 ★最新版 ver.1.05[2004/2/13]はこちら

 「はてな」への投稿はうまくいったので、次は slashdotの日記を取得する番です。
 日記の解析は、以前「偽/.-J日記」を作った時にいろいろ調べたのでこれをベースに作ってみることにしました。

● 偽/.-J日記 (nisejournal)

 偽/.-J日記は、slashdotの日記をフレーム形式に加工表示する(フィルター/プロキシ)ページです。
 加工する際に、日記ページのHTMLを解析しています。

 以前作った偽/.-J日記は、PHPの古い国際化関数(jsr_系)を使っていたので、最近のPHP(4.1.x以降)では動かなくなっています。
 それで jstr_系関数を全部 mb_系関数に置き換えてみました。
 しかしながら、エラーは出なくなりましたがページの取得がうまくいかないので、ページのHTMLソースを見てみるとテンプレートがいろいろと変更されていました。
 このプログラムでは、HTMLのソースから日記の内容を解析しているので、デザインの変更にとても弱いのです。
 なんとか頑張って新しいテンプレートに合わせて解析部を改良しました。

● デモページとソース
 
 ↓このページで動かせます。
 Pseudo Slashdot Journal あるいは 偽/.日記

 ソースは、こちら(nisejournal101.tar.gz)
 Linux(Linux(kernel 2.4.19) + PHP4.1.2で動作を確認しています。
 PHPが動く環境で、public_html以下の任意のディレクトリに展開して、nisejournal.php ページをブラウザで開いて下さい。

● 遅くてごめん

 HTMLソースの解析は、mb_strpos関数で目印となるタグをひたすら検索しているので日記にエントリ数が多い場合恐ろしく時間がかかります。(30秒越えてしまうこともある。/ サーバのCPUはPentiumII 400Mhzです。)
 jstr_系の時はもう少し速かった様な気がしますが、気のせいかもしれません(昔はみんなエントリ数が少なかったし)。
 まあロジックに問題ありでしょうね。
 今回は、2バイトコードの問題は起きそうになかったので、日記の一覧を取得する箇所のみstrposに置き換えてしまいました。それでもtorlyさめの日記一覧(3784件)を取得するのに15秒と結構かかってしまいます。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

犯人は巨人ファンでA型で眼鏡をかけている -- あるハッカー

処理中...