Apple script を使って、ngrok で出てきたランダムなアドレスを文字列として取得してみる

MACローカルマシンの中のサービスを外向けに公開できるという便利なツール「ngrok」。

http://localhost://5000 のアドレスを http://XXXXXX.ngrok.io のように。

しかし、有料会員にならない限りは、http://XXXXXX.ngrok.io みたいなランダムなホスト名になってしまいます。

このため、このアドレスが変わる度に、コードを毎回書き換えるのは面倒になってきます。

さらに、このアドレス、ターミナル上では目には見えるけど、手動でコピペするのも面倒だなと思い、

どうにかプログラム上で取得できないかと考えました。

調べていたところ、

↓こちらのアドレスを開くと、

http://localhost:4040/status

↓このような画面を見ることができました。

ここに表示されているアドレスを

apple script と javascript を使って、取得することができました。

#!/usr/bin/env osascript

tell application "Terminal"
    tell application "System Events" to keystroke "t" using command down #新しいタブを開く(ctrl + tab)
    set currentTab to do script "ngrok http 5000" #ngrok http://localhost:5000 を開ける
end tell

delay 1

tell application "Google Chrome"
    tell window 1
        set newTab to make new tab with properties {URL:"http://localhost:4040/status"}
        repeat while loading of active tab
                delay 2 #URL は、window.onload 時には出力されていないので少し待つ
        end repeat
        tell active tab
                execute javascript "var ele = document.getElementById('content');var html = ele.innerText;var result = html.match(/http:\\/\\/\\S*/g);var url = result[0];" //この アドレス をどこかに保管してあげるとよい。
        end tell
    end tell
end tell

ここで取得した アドレスを 外から見えるところに保管して置くといいかもしれない。

もっと効率のいい取り方があるのかもしれませんが、とりあえずできたということで。