web-dev-qa-db-ja.com

コマンドライン経由でFirefoxから現在アクティブなタブのURLを取得します

Mozilla Firefox 54.0を実行していますが、簡単な小さな問題があります。

Firefoxのすでに開いているセッションと複数の開いているタブがある場合、現在アクティブなタブ(現在表示しているタブ)をコマンドラインから抽出する方法はありますか?

コマンドライン引数のリスト または Mozilla開発者ページ に何も見つかりませんでした。

私の質問は この質問 とは異なります。これは意図したとおりに機能せず、すべてのタブが必要ではないためです。 1つの特定のタブ、つまり私が見ているタブが必要です。

誰もがアイデアを持っていますか?

Firefoxの実行中のインスタンスとインターフェイスする方法はありますか?

読んでくれてありがとう

編集:ソリューション:

jSONをインポート

f = open( '〜/ .mozilla/firefox/RANDOM.default/sessionstore-backups/recovery.js')

jdata = json.loads(f.read())

f.close()

CurrentTab = jdata.get("windows")[0].get("tabs")[jdata["windows"][0]["sel‌​ected"]-1].get("entr‌​ies")[HistLen-1].get‌​("url")

しながら

HistLen = len(jdata.get("windows")[0].get("tabs")[jdata["windows"][0][‌​"selected"]-1].get("‌​entries"))

HistLenが必要だったのは、それ以外の場合、以前にそのタブで開いていた古いページを常に取得していたからです。

読んでくれてありがとう

4
oldmansaur

解決策が提供されました ここ これはsedpython2の組み合わせです。ここにもう少し明確なバージョンがあります:

sed -n "$(
python2 <<< $'import json
f = open("/home/username/.mozilla/firefox/RANDOM.default/sessionstore-backups/recovery.js", "r")
jdata = json.loads(f.read())
f.close()
print str(jdata["windows"][0]["selected"])')p" <(python2 <<< $'import json
f = open("/home/username/.mozilla/firefox/RANDOM.default/sessionstore-backups/recovery.js", "r")
jdata = json.loads(f.read())
f.close()
for win in jdata.get("windows"):
 for tab in win.get("tabs"):
  i = tab.get("index") - 1
  print tab.get("entries")[i].get("url")'
)

使用しているファイルは次のとおりです。

/home/username/.mozilla/firefox/RANDOM.profile/sessionstore.js

最近のバージョンでは、次のように変更する必要があります。

/home/username/.mozilla/firefox/RANDOM.default/sessionstore-backups/recovery.js

このファイルは15秒ごとに再生成されるため、ウィンドウが即座に変更された後、正しいURLが提供されないため、数秒待つ必要があります。


これはどのように作動しますか?

最初の部分では、アクティブなタブのIDを検索します。1から開いているタブのカウントまでの間です。 「3」だとしましょう。この目的に対応するコードは次のとおりです。

str(jdata["windows"][0]["selected"])

次に、URLのリスト(開いているすべてのタブ)を返し、stdin of sedにフィードします。

for win in jdata.get("windows"):
 for tab in win.get("tabs"):
  i = tab.get("index") - 1
  print tab.get("entries")[i].get("url")

だから私たちは次のようなことをしています:

sed -n 3p <<< "URL1
URL2
URL3"

「URL3」に移動します。

2
Ravexina