in between days

表参道で働くシニアのブログ

backup_mixi応急対応版がmixiのコミュに出てる

mixiの日記とメッセージをローカルに保存できる便利なツール「backup_mixi」は度重なるmixiの仕様変更のたびにバックアップできなくなるという苦難の道を歩いていますが、昨年末の「日記の記事ごとに[編集]ボタンが付いた」ことでまたまたバックアップできなくなっておりました。

ところが喜ばしいことに、有志の手による応急対応版がmixi内の「backup_mixi」コミュで公開されてました。

# SAM 『mixiのコミュに有る応急処置版で一応Backupだけはとれますよ
ただ、『画像がサムネイルだけ』の問題はまだ解決していないようです』 (2006/12/28 19:37)
# るーのすけ 『mixiのbackupmixiコミュニティの方で【画像がサムネイルだけ】の問題も修正されたバージョンを公開して頂いております。
http://mixi.jp/view_community.pl?id=822832』 (2007/01/04 13:20)

(from いぬビーム - backup_mixi - コメント

素晴らしい! さっそく試してみます。

画像のダウンロードでタイムアウトするみたい?

試してみたところ、http-access2.rbが何度かタイムアウトで停止したけど、しつこく何度もやり直したら全部取得できました。エラーをちゃんと記録してなかったので今からだと原因がよくわからないんだけど、画像を取りにいってタイムアウトしてるっぽかった。

mixi日記の画像URLが動的生成になったのと関係あるのかな?

mixiにログインしていなくても、URLがわかれば画像に誰もがアクセスできる状態となっていた。このため、画像のURLが2ちゃんねるなど外部の掲示板に暴露されることがあった。現在は、画像へのリンクのURLが動的に生成されるようになっている。生成されたURLは、ある期間が経つと無効になり、画像を閲覧することができなくなる。

Mixi - 画像のリンク - Wikipedia)

あとこの影響で画像が上手くリンクされなくなってたみたいだけど(11月頭くらいから? 画像までチェックしないからぜんぜん気付かなかった)、それが2007-01-03修正版では直っているもよお。ただし動的生成はいかんともしがたいわけで、同じ画像を何度も取得してしまうらしいです。

[追記] 2007-01-10 2007/01/10版がリリースされてました

画像の重複を修正した版が公開されたようです。

…起動する度に同じ画像が重複して取得されるバグを修正しました。取得画像のファイル名の形式を変更しましたので、今までのものに上書きはできません。お手数ですが、現在のバックアップフォルダを削除(不安な方は退避)して、バックアップを最初から取り直して下さるようお願い致します。

backup_mixi 応急処置版mixi - backup_mixi | バグ報告

ということだそうですが、昔の日記は消しちゃってるのもあるのでかまわず上書き的に動かしてみましたが、別に問題なく同居してバックアップできてます(残してた日記については上書きして取得し直してくれてるみたい…… あ、上書きするからバックアップしろってことですね)。

でも相変わらず

downloading mixi_backup/img/diary_44_32_312684432_179s.jpg
/usr/local/lib/ruby/site_ruby/1.8/http-access2.rb:1466:in `gets': Connection reset by peer (Errno::ECONNRESET)
        from /usr/local/lib/ruby/site_ruby/1.8/http-access2.rb:1466:in `parse_header'
        from /usr/local/lib/ruby/1.8/timeout.rb:56:in `timeout'
        from /usr/local/lib/ruby/1.8/timeout.rb:76:in `timeout'
        from /usr/local/lib/ruby/site_ruby/1.8/http-access2.rb:1464:in `parse_header'
        from /usr/local/lib/ruby/site_ruby/1.8/http-access2.rb:1422:in `read_header'
        from /usr/local/lib/ruby/site_ruby/1.8/http-access2.rb:1254:in `get_status'
        from /usr/local/lib/ruby/site_ruby/1.8/http-access2.rb:466:in `do_get_header'
        from /usr/local/lib/ruby/site_ruby/1.8/http-access2.rb:436:in `do_get_block'
         ... 10 levels...
        from ./backup_mixi.rb:98:in `backup_diary'
        from ./backup_mixi.rb:152:in `submain'
        from ./backup_mixi.rb:189:in `main'
        from ./backup_mixi.rb:197

っていうエラーが出ます。エラーが出てもめげないで繰り返し実行すると、同じファイルを今度は取得してしばらく進みます。しばらく進んでまた同じようなエラーが出て、また起動し直すとまた今度は取得し出来てしばらく進んでまたまた同じエラーで止まって…… を何度が繰り返していると最後まで取れました。完全に感ですけど、mixiが画像ファイルを用意するより早く取得に行ってるとかなんかタイミング的なあれかなあという気がしました。

[追記] 2007-01-10 mixi日記の画像のファイル名

ところでbackup_mixiで日記の画像が溜められる backup_mixi/mixi_backup/img ディレクトリを見てみると、次の3種類の画像ファイル名が混在してました。

  1. photo_diary_12_12_123456789_123.jpg形式
  2. p_c646f88716b6f318f7664af0559e9a1f867c008801_4577ac00_diary_12_12_123456789_123.jpg形式
  3. diary_12_12_123456789_123.jpg

1.が2006年11月頭までに取得したファイル名の形式で、スラッシュドットで「ミクシィ、画像に認可制御なしの欠陥を改修できず、ヘルプで弁解」と書かれた不具合?を抱えた時代のものです。

で、これを解消するために11月の冒頭に現在のようにランダムな文字列を挟んだURLを一時的に動的生成するような手法が取り入れられ、その通りのファイル名のままで取得したのが2.のファイル群ですが、これは動的生成なのでbackup_mixiが巡回するたびにファイル名が変わって、そのたびに再取得をしてたみたいですね。これは今回の修正までずっと続いてました。日記のほうの画像リンクも「javascript:void(0)」のままになってるようなので何度も取得する上に取得しても表示されないという二重苦になってるようです。HDDの肥やし状態ですね。

最後に、今回の不具合解消から生成されるようになったのが 3.の形式

とこのようになっているようです。