¿Hay alguna forma de get la URL de la pestaña actual en google-chrome?

Solía ​​hacer eso en Firefox usando un command Python, pero recientemente algo cambió y ya no puedo get 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 a Python, acabo de encontrar esos commands en algún lado y los usé en bash!

Tuve el mismo problema y lo solucioné al intentar 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, utilicé una extensión para hacer que la URL sea visible en la barra de título (a continuación, puede acceder a la url a través de xprop o wmctrl). Ambos methods funcionan bastante bien, aunque no es realmente "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 a esto si alguien encuentra uno.

¿Podría decirme el error que obtiene después de la ejecución, porque el script funciona para mí? Aquí está la misma pregunta, respondida usando php y perl :

Salida URL de abrir tabs de Firefox en la terminal

Dado que la parte principal en python, aquí hay un script puramente python, para hacer lo mismo, pruébelo 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 

/home/username/.mozilla/firefox/xxxxx.default/sessionstore.js file /home/username/.mozilla/firefox/xxxxx.default/sessionstore.js con recovery.js . En mi caso (Mozilla Firefox 44.0, openSUSE 13.1), el file es ~/.mozilla/firefox/*.default/sessionstore-backups/recovery.js . Y por último, pero no less importante, el script no funciona si tiene dos instancias de Firefox ejecutándose.