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'. 한 줄의 코드에서 파일 경로를 사용하려면 환경 변수를 사용하고 그에 따라 줄을 바꾸고 병합하세요 \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"\"")
}'

관련 정보