Firefox - コマンドラインで開いたタブのURLを読む

Firefox - コマンドラインで開いたタブのURLを読む

時にはFirefoxに多くのタブが開いていて、組み込みのブックマークを使用するよりもファイルに保存することを好む。

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

後でまた開きたいときタブテキストファイルで次の小さなループを実行します。

#!/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"

すべて開きますタブ2秒遅れ。

読む方法があるかどうか疑問に思います。URL~の開いたタブスクリプトに含めるためにコマンドラインから実行しますか?

答え1

これはFirefox 57以降で動作します。 lz4(pip経由)が必要です。ファイルヘッダーはb'mozLz40\0'。 1行のコードでファイルパスを使用するには、環境変数を使用してそれに応じて行を置き換えてマージします\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["windows"]:
    for tab in win["tabs"]:
        i = int(tab["index"]) - 1
        urls = tab["entries"][i]["url"]
        print(urls)'

答え2

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

このコードスニペットは現在のFirefoxタブのURLを取得します。recovery.js[onlz4]プロファイルフォルダのファイルを使用してください。ファイルはほとんどすぐに更新されますが、必ずしも正しいURLではありません。

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

python -c '
import io, json, pathlib as p
fpath = next(iter(p.Path("~/.mozilla/firefox").expanduser().glob("*.default/sessionstore-backups/recovery.js*")))
with io.open(fpath, "rb") as fd:
    if fpath.suffix == ".jsonlz4":
        import lz4.block as lz4
        fd.read(8)  # b"mozLz40\0"
        jdata = json.loads(lz4.decompress(fd.read()).decode("utf-8"))
    else:
        jdata = json.load(fd)
    for win in jdata.get("windows"):
        for tab in win.get("tabs"):
            i = tab["index"] - 1
            print(tab["entries"][i]["url"])
'

答え3

これらの答えのいくつかは、「[任意の文字].default」ディレクトリを参照しています。バージョン67以降、ユーザーはさまざまなアップデートチャンネル(リリース、ベータ、Nightlyなど)のプロファイルを持つことができます。

私のUbuntu 18システムでは、このディレクトリは「[random chars].default-release」です。まだ「[...].default」ディレクトリがありますが、ほとんどは空です。 「sessionstore-backups」が見つからないというエラーが発生した場合は、この点に注意してください。

答え4

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

pip install brotab
brotab install

また、ネットワーク拡張をインストールします。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"\"")
}'

関連情報