突然某ドアさんに削除されてしまった旧掲示板なのですが、現時点でGoogleのキャッシュにほぼすべてのデータが保持されていました。
というわけで、このキャッシュを蒐集&変換すればデータ復活させられるかもというわけでとりあえず組んでみました。
とりあえずシングルスレッドで組んでみると、案の定応答無しに。
なのでマルチスレッドにしてみると、WebBrowser周りで見事にはまってしまいました。
なので気を取り直してアンマネージMSHTMLで・・・
すごい癖。
インターフェースにキャストしなければまともに動いてくれない不便さ。
そして意味不明にObjectを返してくる or 要求してくるメソッド。
まあ慣れればどうにでもなるが。
それより一番曲者だったのが IHTMLElementCollection.item(object name,object index)。
意味がわからん。
そこで、藁縋で Google Code Search で検索すると SharpDevelop のコードに引っかかった。
どうやら、tags(tagname) で絞り込んで item(index,0) で取得。後は適当にキャストすればいいらしい。
というわけで、ここらへんの処理は完成。
次に解析と変換。
ジャンプ位置指定用のアンカーを目印にしてDHTML DOMと正規表現でぐりぐり解析。
ここらへんのコードはものすごく汚い。
次にシリアライズと読み込み。
XmlSerializer の仕様に多少はまったがとりあえず完成。
最後にビューア。
現在テスト中…動かないorz…動いた。
最終的にビューアはAjaxで実装してWebから見れるようにする予定。
というわけで、最終的に現行ログ、過去ログあわせて約934トピック、6279件の記事をサルベージできました。
実行ファイルとサルベージしたデータはここからダウンロードできます(3.27MB)。