Author: 山田 泰司

# ブラウザの履歴データベースのテキスト出力コマンド

Copyright (C) 1999 Taiji Yamada <taiji@aihara.co.jp>

UNIX の Netscape の履歴データベースファイルって ~/.netscape/history.db にありますが、これはバイナリファイルなので more とか less とかで見てもよくわかりません。Communicator の「履歴」ウィンドウでその内容は見れますが、やはりテキストで grep とかかけたい時があると思います。例えば、「あそこのサイト、ブックマークしとくの忘れた！」とか、「自分、Linux 関係のページって今までどのぐらい見たんだろう」とかとか。

そこで、Netscape の履歴データベースから「タイトル」と「URL」を抽出し、テキストに吐き出すコマンド `history-db-list` を作成しました。

以下のようにすると、標準出力に一行毎に URL[TAB]TITLE の形式で出力されます。

`% history-db-list`

また、HTML 形式で出力するスクリプト `show-history.pl` も作成しました。

`% show-history.pl > filename.html`

これは内部で history-db-list を使っています。

但し、show-history.pl が吐き出した HTML は人によっては非常に大きくなるので、Netscape のブラウザで見るには辛いかもしれません。そこで、以下のような使い方を用意しました。

`% history-db-list | grep '[Ll]inux' | show-history.pl - > filename.html`

これで、履歴の中の Linux に関する URL がブラウザで閲覧できます。

また、show-history.pl を show-history.cgi というファイル名にしたとして、HTTP 経由での利用も考慮してあります。その場合、以下の URL のような使い方になると思います。

`http://www.foo.ac.jp/~bar/private/history-db/show-history.cgi?-g+[Ll]inux`

但し、そもそも ~/.netscape/history.db はオーナー以外は読み込み許可がされてませんし、~/.netscape もオーナー以外は入れませんので、HTTP 経由の使用はセキュリティやプライバシーを十分検討した上で運用しない場合は推奨できません。

## Applications

history-db-list の応用例を紹介します。

作者は ebw3 という CD-ROM 辞書サーバを使って英単語を調べているのですが、Netscape の履歴データベースから「一度は調べたことのある、自分だけの英単語帳」というのを作ることが可能です。そのためのスクリプト `show-history-ebw3-result.pl` を `show-history.pl` を元に作成し、以下のように使っています。

`% history-db-list -a | sort +1 > history-list.all`
`% show-history-ebw3-result.pl - < history-list.all > my-dictionary.html`

ちなみにここで、history-db-list の -a オプションは、最終閲覧日時、初閲覧日時、エクスパイア日時、アクセス回数の情報を付加するためのものです。

このようにすると今まで調べたことのある英単語についての自分だけの辞書が、下図のように作成されます。

また、以下のようにすると指定した日時以降に調べた英単語のみの辞書を作成します。

`% show-history-ebw3-result.pl -a 1999/03/20 - < history-list.all > my-dictionary-19990320.html`

他にもいろいろと応用が考えられると思います。

## Problems

Netscape の history.db のフォーマットについて良く知って作成したわけではないので、破壊されている URL を表示することがあります。調べ次第、修正しますが、詳しい方がいらっしゃいましたら教えて下されば幸いです。 <- この問題はバージョン 0.4 より解決しています。

## History & distributions

- history-db-0.4.tar.gz … Berkeley UNIX データベースによる実装。これにより history-list の実装の方法をいくつか用意しました。どの history-list を使うかは、効率やインストール環境などによって選ぶと良いでしょう。

- `history-ls.pl` … 旧バージョンの history-list.pl と等価な実装。
- `history-list.pl` … 旧バージョンの history-list.pl をベースに、最終閲覧日時、初閲覧日時、エクスパイア日時、アクセス回数も出力できるようにしました。
  これらの history-ls.pl, history-list.pl はバイナリファイルの単なる字句解析による実装なので、データベースの Perl モジュールなどは不要ですが、破壊されている URL を表示することがままあります。正確さを重視するなら以下の実装方法を選ぶ必要があります。
- `history-db-list.pl` … Berkeley UNIX データベースの Perl モジュール DB_File-1.65.tar.gz を用いて、~/.netscape/history.db のデータベース形式に則った実装をしました。よって、最終閲覧日時、初閲覧日時、エクスパイア日時、アクセス回数も出力できます。但しこのスクリプトには、DB_File-1.65.tar.gz 及び Berkeley UNIX データベースライブラリ db-1.85.tgz が必要です。
- `history-db-list.c` … Berkeley UNIX データベースライブラリ db-1.85.tgz を用いた、~/.netscape/history.db のテキスト表示コマンドの C 言語バージョン。やはり、これが最も動作が速いです。但し、このプログラムをコンパイルするには db-1.85.tgz が必要です。

show-history.pl では内部でこれらのコマンドのうちのどれかを必要としますが、デフォルトでは history-db-list.c の実行形式 history-db-list が指定されています。所望のコマンドに書き換えてお使い下さい。
- history-db-0.3.tar.gz … history-list.pl で重複表示を抑制、show-history.pl でソートオプション追加など。
- history-db-0.2.tar.gz … show-history.pl で URL の表示のバグを修正。
- history-db-0.1.tar.gz

このサイトに関するご意見ご要望は taiji@aihara.co.jp までお願いします。

Copyright (C) 1999 Taiji Yamada, All rights reserved.