web-dev-qa-db-ja.com

Firefox-コマンドラインから開いたタブのURLを読み取る

私はFirefoxでかなり広い範囲のタブを開いていることがあり、組み込みのブックマークを使用するよりも、ファイルに保存する方が好きです。

したがって、私はabout:preferencesページからrlsを(手動で)コピーし、ファイルに保存して、小さなbashスクリプトでtr '|' '\n'を使用してファイルを処理します。

後でテキストファイルからtabsを再度開きたいときは、次の小さなループを実行します。

#!/bin/bash

# usage: $bash Open-tabs.sh file-with-bookmarks.txt

 while read -r line; do
     firefox -new-tab "$line" 2>/dev/null &
     sleep 2
 done < "$1"

そして、すべてのtabsを2秒の遅延で開きます。

方法があるかどうか知りたいのですが、コマンドラインから開かれたタブrlsを読み取ることができるので、スクリプトに含めることができますか?

8
nath

ソース(変更されたファイルパス): 開いているすべてのタブを取得

このスニペットは、現在のFirefoxのタブのURLを取得します。プロファイルフォルダーのrecovery.jsファイルを使用します。そのファイルはほぼ瞬時に更新されますが、常に正しいURLになるとは限りません。

開いているすべてのタブを取得します。

python2 <<< $'import json\nf = open("/home/<username>/.mozilla/firefox/<name of the random stringed folder>.default/sessionstore-backups/recovery.js", "r")\njdata = json.loads(f.read())\nf.close()\nfor win in jdata.get("windows"):\n\tfor tab in win.get("tabs"):\n\t\ti = tab.get("index") - 1\n\t\tprint tab.get("entries")[i].get("url")'
5

これはFirefox 57以降で機能します。 lz4(pip経由)が必要です。ファイルヘッダーは、b'mozLz40\0'の長さから収集されます。ワンライナーで使用する場合は、ファイルパスに環境変数を使用し、それに応じて\nおよび\tに置き換えて、行をマージします。

export opentabs=$(find ~/.mozilla/firefox*/*.default/sessionstore-backups/recovery.jsonlz4);

python3 <<< $'import os, json, lz4.block
f = open(os.environ["opentabs"], "rb")
magic = f.read(8)
jdata = json.loads(lz4.block.decompress(f.read()).decode("utf-8"))
f.close()
for win in jdata.get("windows"):
    for tab in win.get("tabs"):
        i = int(tab.get("index")) - 1
        urls = tab.get("entries")[i].get("url")
        print(urls)'
8
wbob

この目的のために https://github.com/balta2ar/brotab を使用することをお勧めします:

pip install brotab
brotab install

Web拡張機能もインストールします: https://addons.mozilla.org/en-US/firefox/addon/brotab/

Firefoxを再起動すると、brotab listを使用して、次のように解析できます。

bt list | awk -F'\t' '{
    print "Downloading "$2
    system("curl --silent --output \""$2"\" \""$3"\"")
}'
1
Doron Behar

これらの回答の一部は、「[ランダムな文字] .default」ディレクトリを参照しています。バージョン67以降、ユーザーはさまざまな更新チャネル(リリース、ベータ版、夜間など)のプロファイルを持つことができます。

私のUbuntu 18システムでは、このディレクトリは「[ランダムな文字] .default-release」でした。 「[...]。default」ディレクトリはまだありましたが、ほとんど空でした。 「sessionstore-backups」が見つからないというエラーが発生した場合は、そのことを覚えておいてください。

1
LousyG