Firefox57のブックマークをw3mで表示(Python3使用)

はじめに

こんにちは、野村です。

今回は、Firefox57のブックマークをw3mで表示する方法です。
おそらくFirefox57からデータベースの構造が変更されたと思うので、以前のバージョンでは正常に表示されません。

なお、このスクリプトは「GUIを起動していない状態でもFirefoxのブックマークからサイトを閲覧したい」という極めてニッチなニーズに応えるために作成しました。

準備

w3mがインストールされていることが前提です。
隠しデレクトリ「~/.w3m」の中に「ff」というデレクトリを作成します。

$ mkdir ~/.w3m/ff

スクリプト

以下のスクリプトを「ffbm」という名前のファイルとして保存し、実行権限を与え、パスの通ったデレクトリに移動します。

・8行目と9行目は各自の環境に合わせてください。

#!/usr/bin/env python3

import sqlite3
import re
import os
import glob

htmdir = '/home/jake/.w3m/ff'
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>
'''

path = glob.glob('%s/*.htm' % htmdir)
for p in path:
    os.remove(p)

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

c.execute("SELECT parent FROM moz_bookmarks GROUP BY parent")
parent = []
for r in c:
    parent.append(str(r[0]))

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])]

for p in parent:
    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" % p)
    f = open('%s/%s.htm' % (htmdir, p), 'w')
    f.write(htm_head % (ttl[p][0], ttl[p][0]))
    if ttl[p][1] : f.write('<li><a href="%s.htm">../</a></li>\n' % ttl[p][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 = "%s.htm" % r[0]
            tit =  "[%s]" % tit
        f.write('<li><a href="%s">%s</a></li>\n' % (url, tit))
    f.write(htm_foot)
    f.close()
cn.close()

実行権限を与え、パスの通ったデレクトリに移動(例)

$ chmod 755 ffbm
$ mv ffbm ~/bin/ffbm

実行

実行コマンドはこうなります。

$ ffbm; w3m ~/.w3m/ff/1.htm

もし頻繁に使うようなら、.bashrcなどにエイリアスを作っておくといいかも。

w3mにはこんな風に表示されます。

最後に

以上、Firefox57のブックマークをw3mで表示させる方法を紹介しました。

以前、自主的にGUIの起動を禁止していたことがありまして、その頃に組んだスクリプトを改良したものです。
今回のように、CUIで生活していた頃に作った小物もちょくちょく紹介していきたいと思います。

その後、今回作ったものをローカルCGI用に組み直したので、その記事も書きました。

Firefox57のブックマークをw3mで表示(Python3-ローカルCGI)
Firefox57のブックマークをw3mから閲覧する方法の紹介です。以前にも同じ用途のものを取り上げたけど、今回は、w3mのローカルCGIを利用します。この方が理にかなってます。
作ってみたらローカルCGI版の方が何かと合理的でした。

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

シェアする

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

フォローする

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