理系学生日記

おまえはいつまで学生気分なのか

忍者TOOLS

はてブのタグ表記揺れを修正したい

大半の人は同じ悩みを抱えているような気もしますが、ぼくのはてブのタグには、表記揺れが相当ある。
例えば、"*programming" というタグと "programming" というタグがあったり、"*nix" タグでまとめるはずだったのに "unix" タグがあったりと、タグで検索する度に「おれバカだなー」みたいに自分を責めてしまって HP が削られ続けるので、表記揺れを統一する方法がないかなと考えた。

最初に思いついたのは、はてなブックマーク AtomPub API を使用する方法で、そのために AtomPub の RFC を読みふけり、よっしゃーこれで華麗に WebService 化でもするかーみたいな夢物語を描いていたところ、そもそも自分のブックマークを総取得する API がない*1
というわけで、それならば Firefox はてなブックマーク拡張でインストールされる sqlite のテーブルを直にいじってしまえば良いか、という結論に達した。ぼくの場合は、以下のファイルが対象になる。

  • /Users/kiririmode/Library/Application Support/Firefox/Profiles/[Profile ID].kiririmode/hatenabookmark/kiririmode/bookmark.sqlite

ファイルに格納されてるテーブルのスキーマはこんなかんじ。

sqlite> .schema
CREATE TABLE bookmarks ( id INTEGER PRIMARY KEY, place_id INTEGER, url TEXT UNIQUE NOT NULL, title TEXT, search TEXT, date INTEGER NOT NULL, last_visited INTEGER, comment TEXT );
CREATE TABLE tags ( id INTEGER PRIMARY KEY, bookmark_id INTEGER NOT NULL, name TEXT COLLATE NOCASE );
CREATE INDEX "bookmarks_date" ON "bookmarks" ("date" DESC);
CREATE INDEX "bookmarks_date_asc" ON "bookmarks" ("date" ASC);

ものは試しにと、bookmarks テーブルに直に UPDATE 文を発行してみたところ、オンライン側にも速攻で反映されたので、それなりに有望な手段のようだ。せっかくなので、Teng を使って表記揺れの検出と UPDATE をスクリプト化してみる。

*1:たぶん。FeedURI に対する GET リクエストでもできない…よね?