有时我会在 Firefox 中打开大量选项卡,我更喜欢将它们保存到文件中,而不是使用内置书签。
因此我(手动)复制网址从about: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秒。
我想知道是否有办法可以读出网址的打开的选项卡从命令行,所以我可以将它包含到我的脚本中?
答案1
这适用于 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["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 开始,用户可以拥有不同更新渠道(例如,发布、测试版、夜间等)的配置文件。
在我的 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"\"")
}'