BitBarとesaを連携してニッポーのタスクリストをOS Xのメニューバーに表示してみます。
BitBarとは?
BitBarはスクリプトとして実行可能なプログラムの標準出力をMacのメニューバーに表示するアプリケーションです。
rebuild.fm で紹介されたことによって一気に広まったように思います。
コード
ニッポーはテンプレートを利用して同じ階層に作成されるものとします。
esaのAPIのpostsが更新日の降順のため、最初の1件を取得すればもっとも新しい日のニッポーを取得できます。
rubyで実装しました。
shebangは各自の内容に合わせて変更してください。
#!/usr/bin/env /Users/user name/.anyenv/envs/rbenv/shims/ruby require 'esa' module ESA TEAM = "your team" ESA_API_TOKEN = "your token" end client = Esa::Client.new(access_token: ESA::ESA_API_TOKEN, current_team: ESA::TEAM) # クエリ条件は各自のニッポーによって変わる diary = client.posts(q: 'category:個人/your name/日記').body['posts'][0] regex = /\- (\[[ |x]\] .+)/ tasks = diary["body_md"].scan(regex) ret = tasks.map do |v| e = v.first if e.include?("[x]") e = "#{e.chomp} | color=gray" e.gsub(/\[x\]/, ":large_blue_circle:") else e = "#{e.chomp} | color=black" e.gsub(/\[ \]/, ":red_circle:") end end total = ret.size done = ret.count {|e|e.include?(":large_blue_circle:") } rest = total - done puts ":pencil:Todos #{done} / #{total}" puts "---" puts ":baby_chick: #{diary['full_name']} | href=https://#{ESA::TEAM}.esa.io/posts/#{diary['number']} | color=blue" puts "---" puts ret.sort.join("\n")
デモ
終わってるタスクは青丸 :large_blue_circle: で。
未完了のタスクは赤丸 :red_circle: で表示されます。
日記のタイトルは esa の記事へのリンクになっています。