¿hay alguna manera de obtener la URL de la pestaña actual en google-chrome?

13

Solía ​​hacerlo en Firefox usando un comando de Python, pero recientemente algo cambió y ya no puedo obtener la URL.

  • Lo que solía funcionar con 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

¿Alguien puede decirme cómo hacer esto en Firefox y / o Chrome?

NOTA : No entiendo python, ¡acabo de encontrar esos comandos en alguna parte y los usé en bash!

Jonás
fuente
Algo como el selenio será más adecuado para esto
cristi

Respuestas:

6

Tuve el mismo problema y lo resolví mientras intentaba resolverlo, así que publicaré mi solución (que es bastante mala) aquí.

Yo uso wmctrl (podría usar xprop en su lugar) y xdotool para hacer esto. Anteriormente, utilizaba una extensión para hacer visible la URL en la barra de título (luego puede acceder a la URL a través de xprop o wmctrl). Ambos métodos funcionan bastante bien, aunque en realidad no es "limpio".

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"

Ahora tiene la URL en su portapapeles. Luego uso xclip para trabajar con la URL.

Me encantaría ver una solución real para esto si alguien encuentra una.

reyan
fuente
3

¿Podría decir el error que obtiene después de la ejecución, porque el script funciona para mí? Aquí hay la misma pregunta, respondida usando phpy perl:

URL de salida de pestañas abiertas de Firefox en la terminal

Como la parte principal de Python, aquí hay un script puramente de Python, para hacer lo mismo, pruébalo también:

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

Reemplacé el /home/username/.mozilla/firefox/xxxxx.default/sessionstore.jsarchivo con recovery.js. En mi caso (Mozilla Firefox 44.0, openSUSE 13.1) el archivo es ~/.mozilla/firefox/*.default/sessionstore-backups/recovery.js. Y por último, pero no menos importante, el script no funciona si tiene dos instancias de Firefoxejecución.

Nikiforov Alexander
fuente
¿Cuál es el archivo equivalente para Chrome?
gaurav parashar