BitbarでSplatoonのフレンド状況をメニューバーに表示する

More than 3 years have passed since last update.

元記事

すごい今さら感があるけど、書こう書こうと思ってずっと書いてなかったので書いておく。

splanet.png

イカリングで友達入ってるのかとか、Twitterのスプラトゥーン ステージ情報botでこの後のステージなんなのかとか毎回調べるのめんどうですよねぇ。

イカリング、描画のjsがGCしてないのかCPU使用率がめちゃくちゃ高くなってファンがファーーってなるしくそ

メニューバーに表示されてたら楽なのにって思って表示させるようにしました。


Bitbar

表示させるツールとしてはBitbarを使いました。Shellスクリプトでもいいし、好きな言語で標準出力に出せば表示できるのは便利です。

最初、Shellスクリプトで書いてたけどeachとかArray#joinとか使いたくなってRubyに書き換えました

Bitbar


Bitbarで実行するRubyのコード

#!/usr/bin/env /Users/yutaka/.rbenv/shims/ruby

require 'splapi'
require 'time'
require 'httparty'

puts 'Splanet'
puts '---'

client = SplAPI::Client.new

def print_stage(h)
puts "#{Time.parse(h['start']).strftime('%H:00')}~ #{h['rule']}: #{h['maps'].join(', ')} | color=blue href=https://splatoon.nintendo.net/schedule"
end

puts 'Stages & Rule | size=16'
res = client.gachi_now.body
print_stage(res['result'][0]) if res['result'][0]

res = client.gachi_next_all.body
res['result'].each { |h| print_stage h } if res['result'].any?

puts '---'
puts 'Friends | size=16'

# ここはイカリングにログインして、Cookieに入っているwag_sessionをコピーしてください
wag_session = 'K25YUzJVYUxXTGU2YzJaSjRpWUNuR3VzTlM4ZXZPclJvdEFjdWk0Q2RYVVZGRFNGYVdUQ1hVRkJJT0luY295UG5WUzJPLzMVINHhIVE5aREQ0ckNJU2JZMVVZa0NOdFFkbWFqa1MzODhFQTR5cHcvY1dMNmRCRTBZemQ0SS82bkpnQTkzK2RqSVM0dDc5anV1aVhHUHFEYjQ5RDZFMFA3eXpGNllrdFdoUlpQWU9ZdHNMNnhYbEtKN1dFN0J6QUF5VzRvbUNpSVRIaFlFQStuYWhqcko5V0ZHc1BPTjVRTUJjcEY1SFVGcDMzeURieHJoOXhQQzJSTWZyQ0xxY2U2cG1rNzBaYW9KZjZaMkJTemZYUnVONmRsTEY1RUlsdlkvTVJtVnpack5uanJEVm9HRG5BU1VYaXZIUUVtcjkyZXMyYUtjeUtjOCtkenNjTzIrQkx4NUpmMjc1NjRDSEJqcDZodWNmOFV5LS1vdHVVTHA1TkRoU2d5QnZOeDFhVUNRPT0%3D--7bd8f9569'

res = HTTParty.get('https://splatoon.nintendo.net/friend_list/index.json', headers: { 'Cookie' => "_wag_session=#{wag_session}"} )

res.sort_by {|h| h['mode'] }.each do |h|
puts "#{h['mii_name']}: #{h['mode']} | color=black href=https://splatoon.nintendo.net/profile/#{h['hashed_id']}"
end


Rubyの実装


  • rbenv使ってるので #!/usr/bin/env /Users/yutaka/.rbenv/shims/ruby とした

  • httparty, time, splapi gem を使う

  • splapiでステージ情報を取得する


  • friend_list/index.jsonでフレンド情報を取得する

  • session情報をcookieのwag_sessionという値を使ってるのでここだけは最初にブラウザでログインして、自分で取得する必要がある。


splapi gem

splapi - スプラトゥーンのステージ情報がとれるやつを作っている方がいたのでgemを作成させてもらいました。

https://github.com/saboyutaka/splapi_gem

ステージの情報はこちらから取得してます


まとめ

PCから簡単に友達がログインしてる状況を把握できるようになりました。便利。

イカ、よろしくー。