w3m上でFirefoxの履歴を検索する(Python3-ローカルCGI)

はじめに

こんにちは、野村です。

今回は、w3mのローカルCGI機能を使ってFirefoxの履歴を検索するスクリプトを紹介します。

前回、Firefoxの履歴をw3mで表示する方法を紹介したのだけど、

Firefoxの履歴検索の結果をw3mで表示する(Python3使用)
今回は、Python3を使ってFirefoxの履歴検索の結果をw3mに表示する方法を紹介します。ちなみに、w3mの「-T」というオプションの使い方を初めて知りました。便利かも?

今回はそのCGI版です。
連続して検索する場合、CGI版のほうが使いやすいはずなので作ってみました。

ローカルCGIのための設定

w3mの設定

1. w3mを起動し、ショートカットキー「o」を押して設定メニューを表示します。
2. 「デレクトリ設定」→「/cgi-bin で表されるディレクトリ」を「~/cgi-bin」に設定します。
3. 「OK」で設定を確定します。

デレクトリの作成

$ cd ~
$ mkdir cgi-bin

スクリプト

・以下のスクリプトを「~/cgi-bin」の中に「rireki.cgi」という名前で保存し、実行権限を与えます。
・13行目のデータベースファイルのパスは、各自の環境に合わせてください。

#!/usr/bin/python3

import sqlite3
import sys 
import io
import cgi

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
print("Content-type: text/html; charset=UTF-8\n")

form = cgi.FieldStorage()

dbfile = '/home/xxxx/.mozilla/firefox/xxxxxxxx.default/places.sqlite'
sql01 = "SELECT * FROM moz_places WHERE title LIKE '%%%s%%' ORDER BY id DESC;"

head = '''<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8"/>
<title>rireki.cgi</title>
</head>
<body>
<form method="POST">
<input type="text" name="kwd"/>
<input type="submit"/>
</form>
<div>%s</div>
<hr/>
<ul>
'''
htm01 = '<li><a href="%s">%s</a></li>'
foot = '''</ul>
</body>
</html>
'''

kwd = form.getvalue('kwd')
if kwd==None : kwd = ""

cn = sqlite3.connect(dbfile)
c = cn.cursor()

print(head % kwd)

c.execute(sql01 % kwd);
for r in c:
    print(htm01 % (r[1], r[2]))

print(foot)

cn.close()

実行

以下のコマンドで実行します。

$ w3m file:///cgi-bin/rireki.cgi

表示されたら、ショートカットキー「Esc-a」を押してブックマークしておきましょう。

↓「sqlite」で検索した例

終わりに

以上、w3mのローカルCGI機能を使ってFirefoxの履歴を検索するスクリプトを紹介しました。

あまり活躍の機会はないとは思います。それでもいいんです。

というわけで、今回はこれにて。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

野村 野村のプロフィール
メインPCはWindows10のVirtualBox上のFreeBSD。Linux/Unixの小ネタを求めて日々右往左往してたりする。