ラベル SQLite の投稿を表示しています。 すべての投稿を表示
ラベル SQLite の投稿を表示しています。 すべての投稿を表示

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 でもいいかと思い直す体たらくっぷりを発揮

2009/04/06

sqlite datetime default now

web.py のチュートリアル読んでたら
PostgreSQL 使ってたんだけど準備するの面倒で
SQLite でもいいんでしょ? と思って指定しみたら
ライブラリがありませんでした
Python を作るときに header を用意してなかったみたい
yum で sqlite-devel 入れて make し直し

で、timestamp なんて type の column 作ってるんだけど
default value の指定の仕方が分からなかったんで調べました
created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

的なもので良いみたい
つうか、SQLite って動的型付けだったのか? 知らんかった

Datatypes In SQLite Version 3 を読めばいいのかな
英語読みたくないなぁ