2009/05/24

firefox 履歴

その日の日報書こうと思っても午前中何してたか思い出せないわたし
そんなわたしがその日にググったことを覚えているはずがありません
でも安心
Firefox さんはしっかり記憶してくれているのです

Firefox で Ctrl+H とすればサイドバーに検索履歴が
Ctrl+Shift+H とすれば別窓で何かもう少し強そうなものが出てきます
あとはこれを訪問時間の順番で並べて
検索窓に "google.co.jp/search" なんて入れれば
検索したフレーズが順番に並んでくれるという夢のような機能、履歴

こんな素敵な情報がどこに眠っているのかと思い
「firefox 履歴」で検索してみたところ
Firefox 3の履歴データの構造を理解するってページが出てきて
Placesデータベースのmoz_historyvisitsテーブルに定義されている各フィールドは、次のような情報を保持する。
なるほど、そういえば places.sqlite ってあったな
なんで更に moz_historyvisits を検索すると辿りつくのが
SQLを使ってFirefox 3の履歴情報を取得するというページ
凄いぞ zdnet

~/.mozilla/firefox/???/places.sqlite に
moz_historyvisits と moz_places ってテーブルがあり
moz_places の方にはタイトルとか URL が
moz_historyvisits の方には訪問時刻とか対応する moz_places の id 等が格納されてて
更にサンプルコードまで上のページに載っているじゃない、SQL
凄いぞ zdnet

で、
python sqlite でググって sqlite3 module のライブラリの説明を読み、
サンプルコードをまんまつっこんで、sqlite3 のも上の SQL 文も、
Firefox 使ってると lock されてるとか言われるんで places.sqlite をコピーして、
import sqlite3

conn = sqlite3.connect(dbfile)
c = conn.cursor()
for i in c.execute('''SELECT h.id, p.title, p.url,
datetime(h.visit_date/1000000, 'localtime', 'unixepoch') AS 'visit_time'
FROM moz_places p, moz_historyvisits h
WHERE p.id = h.place_id
AND visit_date > (strftime('%s', 'now') - 60*60*24*5) * 1000000
ORDER BY h.id;
'''):
if i[2].find('google.co.jp/search') > -1:
print i[1], i[3]
とかしたらとりあえず検索語リスト出てきた

なんか、履歴の窓出しながらページ見てると Firefox の動きが鈍くなる気がして
外部から履歴表示した方がいいかと思ったんだけどコピーってダサいなぁ
きっと何か方法があるんだろうと思いつつ Firefox でもいいかと思い直す体たらくっぷりを発揮

0 件のコメント:

コメントを投稿