Google Chrome の現在のタブから URL を取得する方法はありますか?

Google Chrome の現在のタブから URL を取得する方法はありますか?

以前は Firefox で Python コマンドを使用してこれを実行していましたが、最近何かが変わったため、URL を取得できなくなりました。

  • 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
    

Firefox や Chrome でこれを行う方法を教えてください。

注記: 私は Python を理解していませんが、どこかでそれらのコマンドを見つけて、それを bash で使用しました。

答え1

私も同じ問題を抱えていて、解決しようとしてそこを通り抜けたので、私の解決策(かなりひどいものですが)をここに投稿します。

私はこれを実行するのに wmctrl (代わりに xprop を使用することもできます) と xdotool を使用します。以前は、タイトル バーに URL を表示するための拡張機能を使用していました (その後、xprop または wmctrl を介して URL にアクセスできます)。どちらの方法も、実際には「クリーン」ではありませんが、非常にうまく機能します。

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"

これで、URL がクリップボードに保存されました。次に、xclip を使用して URL を操作します。

誰かがこの問題の本当の解決策を見つけたら、ぜひ見てみたいです。

答え2

スクリプトは私の環境では動作しているので、実行後に発生するエラーを教えてください。ここに同じ質問があり、phpと を使用して回答されていますperl:

ターミナルで開いている Firefox タブの URL を出力する

主要部分は Python なので、同じことを実行するには、純粋な Python スクリプトを次に示します。これも試してください。

    #!/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ファイルを に置き換えましたrecovery.js。私の場合 (Mozilla Firefox 44.0、openSUSE 13.1)、ファイルは です~/.mozilla/firefox/*.default/sessionstore-backups/recovery.js。最後に、 のインスタンスが 2 つFirefox実行されている場合、スクリプトは機能しません。

関連情報