Bash

Firefox - 從命令行讀取打開的標籤的 url

  • May 5, 2021

有時我會在 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,所以我可以將它包含到我的腳本中**?

Source(Changed file path) :獲取所有打開的標籤

此程式碼段獲取目前的 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"])
'

這適用於 Firefox 57+。你需要 lz4(通過 pip)。文件頭是從b'mozLz40\0'. 如果要在 oneliner 中使用文件路徑,請使用環境變數,相應地替換為\nand\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)'

引用自:https://unix.stackexchange.com/questions/385023