Firefox57のブックマークをw3mで表示(Python3-ローカルCGI)

はじめに

こんにちは、野村です。

今回は、Firefox57のブックマークをw3mから閲覧する方法を紹介します。
同じ用途のものを以前に紹介したけど、

Firefox57のブックマークをw3mで表示(Python3使用)
今回は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から閲覧する方法を紹介しました。

やってみるとちょっと便利です。お試しあれ。

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

シェアする

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

フォローする

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