はじめに
こんにちは、野村です。
今回は、Firefox57のブックマークをw3mから閲覧する方法を紹介します。
同じ用途のものを以前に紹介したけど、
今回はFirefox57のブックマークをw3mで表示する方法です。「CUI環境でもFirefoxのブックマークからサイトを閲覧したい」というニッチなニーズに応えるスクリプトです。
今回のものはw3mのローカルCGI機能を利用します。
ローカルCGIのための設定
w3mの設定
1. w3mを起動し、ショートカットキー「o」を押して設定メニューを表示します。
2. 「デレクトリ設定」→「/cgi-bin で表されるディレクトリ」を「~/cgi-bin」に設定します。
3. 「OK」で設定を確定します。
デレクトリの作成
$ cd ~ $ mkdir cgi-bin
スクリプト
・以下のスクリプトを「~/cgi-bin」の中に「ffbm.cgi」という名前で保存し、実行権限を与えます。
・10行目のデータベースファイルのパスは、各自の環境に合わせてください。
#!/usr/bin/python3 import sqlite3 import sys import io import cgi import re sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') form = cgi.FieldStorage() dbfile = '/home/jake/.mozilla/firefox/xxxxxxxx.default/places.sqlite' htm_head = '''<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"/> <title>%s</title> </head> <body> <h1>%s</h1> <hr/> <ul> ''' htm_foot = '''</ul> </body> </html> ''' id = form.getvalue('id') cn = sqlite3.connect(dbfile) c = cn.cursor() c.execute("SELECT id, title, parent FROM moz_bookmarks WHERE type=2") ttl = {"0":["root",None]} for r in c: ttl[str(r[0])] = [str(r[1]), str(r[2])] print("Content-type: text/html; charset=UTF-8\n") c.execute("SELECT * FROM moz_bookmarks AS b LEFT JOIN moz_places AS p ON b.fk=p.id WHERE parent=%s ORDER BY position" % id) print(htm_head % (ttl[id][0], ttl[id][0])) if ttl[id][1] : print('<li><a href="ffbm.cgi?id=%s">../</a></li>\n' % ttl[id][1]) for r in c: tit = str(r[5]) url = str(r[14]) if tit == "None" : continue if re.match(r'place:', url) != None : continue if re.match(r'about:', url) != None : continue if r[1] == 2 : url = "ffbm.cgi?id=%s" % r[0] tit = "[%s]" % tit print('<li><a href="%s">%s</a></li>\n' % (url, tit)) print(htm_foot)
実行
以下のコマンドで実行します。
$ w3m file:///cgi-bin/ffbm.cgi?id=1
表示されたら、ショートカットキー「Esc-a」を押してブックマークしておきましょう。
終わりに
以上、Firefox57のブックマークをw3mから閲覧する方法を紹介しました。
やってみるとちょっと便利です。お試しあれ。
というわけで、今回はこれにて。