はじめに
こんにちは、野村です。
今回は、w3mのローカルCGI機能を使ってFirefoxの履歴を検索するスクリプトを紹介します。
前回、Firefoxの履歴をw3mで表示する方法を紹介したのだけど、
今回は、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の履歴を検索するスクリプトを紹介しました。
あまり活躍の機会はないとは思います。それでもいいんです。
というわけで、今回はこれにて。