はじめに
こんにちは、野村です。
今回は、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から閲覧する方法の紹介です。以前にも同じ用途のものを取り上げたけど、今回は、w3mのローカルCGIを利用します。この方が理にかなってます。
というわけで、今回はこれにて。