ブックマークの整理が終わった

溜まりに溜まったブックマークの整理が一段落した。

Firefox の場合、以下の場所に過去のブックマークが自動でバックアップされているようなので、どれくらい減ったのか調べてみた。

%AppData%\Mozilla\Firefox\Profiles\xxxxxxxx.default\bookmarkbackups

バックアップのファイル形式は JSON で、中身はフォルダの情報とブックマークの情報がごっちゃになっているが、基本的にはこんな感じ。さすがに適当すぎるか?

とりあえず object.type の種類だけ調べてカウントするコードを Python で書いた。

# Python 3.2.2
import sys
import json
import collections

def count(obj, table):
    table[obj['type']] += 1
    if 'children' in obj:
        for subobj in obj['children']:
            count(subobj, table)

def main():
    tree = json.load(open(sys.argv[1], encoding='utf-8'))
    table = collections.Counter()
    count(tree, table)

    for key in table:
        print(table[key], key)

if __name__ == '__main__':
    main()

結果こう↓だったのが、

7387 text/x-moz-place
104 text/x-moz-place-container

こう↓なった

4090 text/x-moz-place
70 text/x-moz-place-container

思ったより減ってないか。

そもそも何でブックマークを整理しようと思ったかというと、Firefox が重過ぎるからだ。Firefox はブックマークを溜めすぎるとブックマークの移動や削除にすごい時間がかかるようになる。その間 CPU はずっと 100% なので他の作業もできない。さすがにこれはまずいので整理することにした。少し前に Firefox は大量のタブを開いても重くならないように改修されたようだが、こっちの方も何とかしてくれないかな。

追記(2012-02-06)

よく考えたら CheckPlaces でも同じ情報が取れるので、わざわざコードを書く必要はなかったなな。

追記(2012-02-11)

よく考えたらアドオンいれなくても places.sqlite を叩けば取れるな。

SELECT
  CASE type
      WHEN 1 THEN "ブックマーク"
      WHEN 2 THEN "フォルダー"
      ELSE "その他" END AS type,
  count(*) AS count
FROM
  moz_bookmarks
GROUP BY
  type;
追記(2013-08-23)

Firefox 21 から about:healthreport で見れるようになったみたい。