macOSのメニューバーにEthereumやPolygonのガス代を表示させる
こういった感じで表示できるようにします
Ethereum
Polygon
Step1: xBar または SwitBar をインスールします
補足:もともとBitBarというソフトがあったのですが、あまりメンテナンスされなくなってSwitBarが誕生しました。その後BitBarがxBarとして生まれ変わります。私はSwitBarを使っていたのですが、xBarのほうが今は人気がありそうなので、xBarの設定方法を記述します。なおどのソフトもメニューバー上で小さなプログラムを動かして表示するツールです。
開発者などでHomebrewを設定している方は brew install --cask xbar
でインストールできます。(Hombrew: https://formulae.brew.sh/cask/xbar)
そうでない方は https://xbarapp.com/ に行って右上の Download xbar for macOS をクリックすると xbar.v2.1.7-beta.dmg などが見つかると思うので、そこからインストールしてください。アプリケーションの実行許可を聞かれた場合は許可をしてください。
Step2: ruby の実行環境を用意する
このプラグインはrubyで書かれています。なのでrubyの実行環境が必要です。macOS 10.15以降の場合はrubyが同梱されていないのでインストールが必要です。
ref. https://developer.apple.com/documentation/macos-release-notes/macos-catalina-10_15-release-notes
rbenv などがおすすめです。インストール方法の詳細についてはインストールマニュアルを見るか、ネット上にもいくつか記事がありますので各人でご参照ください。
Step3: プラグインをインストールする
Plugin browserから追加する(準備中)
xBarを起動するとメニューバーに表示されます。ここのPlugin browserからプラグインをインストールできるようにリクエスト出していますが、まだマージされてません(本日PRを作成したので)。
Pull Request: https://github.com/matryer/xbar-plugins/pull/1770
マニュアルで追加する
プラグインをマニュアルでも追加できます。下記のところでコードを公開していますのでダウンロードしてください。
Download ZIP からダウンロードできます。下記のところからプラグインを設置するフォルダを開けるので、eth_gas_widget.10m.rb と polygon_gas_widget.10m.rb を設置すると追加できます。
Step4: APIキーを追加する
そのままでも動くのですが、APIキーを設定していないの設定します。APIキーがないとすぐに制限されると思います。Ethereumは https://etherscan.io/ 、Polygonは https://polygonscan.com/ のそれぞれで取得する必要があります。会員登録後下記のページからAPIキーが発行できます。
Step3 で設置したファイルを開いて、それぞれにAPIキーを追記してください。
Ethereum
require 'open-uri'
require 'json'
ENDPOINT = "https://api.polygonscan.com/api?module=gastracker&action=gasoracle&apikey="
APIKEY = "" #←ここに追記してください
charset = nil
html = URI.open(ENDPOINT+APIKEY) do |f|
charset = f.charset
f.read
end
response = JSON.parse(html)
puts "♾️ #{response['result']['ProposeGasPrice']}"
puts '---'
response['result'].each do |k, v|
puts "#{k}: #{v.to_f.floor(5)}"
end
Polygon
require 'open-uri'
require 'json'
ENDPOINT = "https://api.polygonscan.com/api?module=gastracker&action=gasoracle&apikey="
APIKEY = "" #←ここに追記してください
charset = nil
html = URI.open(ENDPOINT+APIKEY) do |f|
charset = f.charset
f.read
end
response = JSON.parse(html)
puts "♾️ #{response['result']['ProposeGasPrice']}"
puts '---'
response['result'].each do |k, v|
puts "#{k}: #{v.to_f.floor(5)}"
end
お疲れさまでした…これで設定が完了です。これで最初に書いたような表示ができると思います。なおガイル名がpolygon_gas_widget.10m.rbとなっているかと思いますが10m
のところが更新間隔です。APIの負荷を下げたい場合や、更新頻度を上げたい場合は変更することができますので適宜変更ください。
Discussion