Obtenha o URL da aba ativa atual do Firefox via linha de comando

4

Estou executando Mozilla Firefox 54.0 e tenho um pequeno problema simples.

Dada uma sessão já aberta do Firefox e várias guias abertas, existe uma maneira de extrair a guia atualmente ativa (a guia que estou vendo) via linha de comando?

Não encontrei nada numa Lista de argumentos da linha de comandos ou no Página Mozilla Developer .

Minha pergunta difere de pergunta , como não funciona da maneira pretendida para mim nem quero todas as guias; Eu quero uma guia específica, a guia que estou olhando.

Alguém tem uma ideia?

Existe alguma maneira de interagir com uma instância do Firefox?

Obrigado pela leitura

Editar: a solução:

  

import 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")

enquanto

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

O HistLen foi necessário porque senão eu estava sempre recebendo uma página antiga que abri anteriormente nessa guia.

Obrigado pela leitura

    
por oldmansaur 27.06.2017 / 20:39

1 resposta

1

Uma solução foi fornecida aqui , que é uma combinação de sed e python2 . Aqui está uma versão um pouco mais clara:

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")'
)

O arquivo que está usando é:

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

em versões mais recentes, você deve alterá-lo com:

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

Note que este arquivo é regenerado a cada 15 segundos, então, após a janela ser instantaneamente alterada, ele não fornece o URL correto, você tem que esperar alguns segundos.

Como isso funciona?

Na primeira parte, ele procura pelo ID da guia ativa, é algo entre 1 a contagem de guias abertas. digamos que seja "3", o código correspondente a esse propósito é:

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

Em seguida, ele retorna uma lista de URLs (todas as guias abertas) e a envia para o stdin de 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")

Então, estamos fazendo algo como:

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

que nos leva a "URL3".

    
por Ravexina 27.06.2017 / 22:32