existe uma maneira de obter o URL da guia atual no google-chrome?

10

Eu costumava fazer isso no firefox usando um comando python, mas recentemente algo mudou e não consigo mais obter o URL!

  • O que costumava funcionar com o firefox:

    #!/bin/bash
    current_tab_num () {
        python2 <<< $'import json\nf = open("/home/username/.mozilla/firefox/xxxxx.default/sessionstore.js", "r")\njdata = json.loads(f.read())\nf.close()\nprint str(jdata["windows"][0]["selected"])'
    }
    current_tab_url () {
        sed -n "$(current_tab_num)p" <(python2 <<< $'import json\nf = open("/home/username/.mozilla/firefox/xxxxx.default/sessionstore.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")')
    }
    current_tab_url
    

Alguém pode me dizer como fazer isso no firefox e / ou no Chrome?

NOTA : Eu não entendo python, eu encontrei esses comandos em algum lugar e os usei no bash!

    
por Jonas 08.11.2015 / 17:38

2 respostas

5

Eu tive o mesmo problema e passei por lá tentando resolvê-lo, então vou postar minha solução (o que é muito ruim) aqui.

Eu uso o wmctrl (você poderia usar o xprop) e o xdotool para fazer isso. Anteriormente, eu usava uma extensão para tornar a URL visível na barra de título (você pode acessar a URL via xprop ou wmctrl). Ambos os métodos funcionam muito bem, embora não sejam realmente "limpos".

id=$(wmctrl -l | grep -oP "(?<=)(0x\w+)(?=.*Chromium)") //Put here the regex for the browser you use
xdotool key --window $id "ctrl+l"
xdotool key --window $id "ctrl+c"

Agora você tem o URL em sua área de transferência. Eu então uso o xclip para trabalhar com o URL.

Adoraria ver uma solução real para isso se alguém encontrar um.

    
por 20.10.2016 / 11:36
2

Você poderia dizer o erro que obteve após a execução, porque o script está funcionando para mim. Há a mesma pergunta aqui, respondida usando php e perl :

URL de saída das abas abertas do firefox no terminal

Como a parte principal em python, aqui está um script puramente python, para fazer a mesma coisa, tente também:

    #!/usr/bin/python
    import json
    f = open("recovery.js","r")
    jdata = json.loads(f.read())
    f.close()

    number_of_selected_tab = jdata["windows"][0]["selected"]

    tab_number = 1
    for win in jdata.get("windows"):
        for tab in win.get("tabs"):
            if number_of_selected_tab == tab_number :
                tab_index = tab.get("index") - 1
                print tab.get("entries")[tab_index].get("url")
            tab_number = tab_number + 1

Substitui o arquivo /home/username/.mozilla/firefox/xxxxx.default/sessionstore.js por recovery.js . No meu caso (Mozilla Firefox 44.0, openSUSE 13.1) o arquivo é ~/.mozilla/firefox/*.default/sessionstore-backups/recovery.js . E por último, mas não menos importante, o script não funciona se você tiver duas instâncias de Firefox em execução.

    
por 12.02.2016 / 15:18