Firefox - lendo URLs de abas abertas a partir da linha de comando

5

Por vezes, tenho um vasto leque de separadores abertos no Firefox e prefiro que os guarde num ficheiro, em vez de os utilizar nos favoritos incorporados.

Portanto, eu (manualmente) copio os urls da página about:preferences , salve-os em um arquivo e processe o arquivo com: tr '|' '\n' em um pequeno script bash.

Mais tarde, quando eu quiser reabrir as guias do arquivo de texto, eu executo esse pequeno loop:

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

e abre todas as guias com um atraso de 2 segundos.

Eu gostaria de saber se existe uma maneira, eu posso ler os urls das abas abertas da linha de comando, então eu poderia incluí-lo para meu roteiro?

    
por nath 09.08.2017 / 19:51

2 respostas

3

Origem (Caminho do arquivo alterado): Veja todas as guias abertas

Este snippet obtém o URL da guia atual do firefox. Ele usa o  arquivo recovery.js na sua pasta de perfil. Esse arquivo é atualizado  quase instantaneamente, no entanto, nem sempre será o URL correto.

Obtenha todas as guias abertas:

python2 <<< $'import json\nf = open("/home/<username>/.mozilla/firefox/<name of the random stringed folder>.default/sessionstore-backups/recovery.js", "r")\njdata = json.loads(f.read())\nf.close()\nfor win in jdata.get("windows"):\n\tfor tab in win.get("tabs"):\n\t\ti = tab.get("index") - 1\n\t\tprint tab.get("entries")[i].get("url")'
    
por 09.08.2017 / 20:04
4

isso funciona para o Firefox 57+. Você precisará de lz4 (via pip). O cabeçalho do arquivo é coletado do comprimento de b'mozLz40\n' . Use uma variável de ambiente para o caminho de arquivo se você quiser usá-lo em um oneliner, substitua com \t e %code% de acordo e mescle as linhas.

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.get("windows"):
    for tab in win.get("tabs"):
        i = tab.get("index") - 1
        urls = tab.get("entries")[i].get("url")
        print(urls)'
    
por 30.08.2017 / 23:04