#!/usr/bin/env ruby # <bitbar.title>STEEM</bitbar.title> # <bitbar.version>1.0</bitbar.version> # <bitbar.author>Víctor Martínez</bitbar.author> # <bitbar.author.github>knoopx</bitbar.author.github> # <bitbar.desc>Steem ticker</bitbar.desc> # <bitbar.dependencies>ruby</bitbar.dependencies> # <bitbar.abouturl>http://knoopx.net/</bitbar.abouturl> require 'json' require 'open-uri' require 'base64' json = JSON.parse(open("https://api.coinmarketcap.com/v1/ticker/steem/").read)[0] IMAGE_UP = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QAyQACAALwzISXAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AQHACkSBTjB+AAAALNJREFUOMvVk70NAjEMhb87WYiGBZAQU7ABNSVSWpZgEEagsJDoKBELUCEKFuBuCKTw0xyQC0lICe5i+/k9/wT+3opUUJQhcAUqa8I5ZQT4tANwioGTCkQZA9vmOQE2oUJFhL0DXBz33RpKUfCLfLTQJMx9IlEWuQr6QB3prGtNS1lwiMvEYo7ekNsKRBkB+y+rH1hDFVOwy7ids+gbVzrsM6CXeYDTF85xroB1ZoHb73ymB5RhJkpZTihGAAAAAElFTkSuQmCC" IMAGE_DOWN = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QABACnAADQ9FZaAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AQHACQ1FZwK3gAAAMRJREFUOMvNkjEKAjEQRZ+jKNjYKh5AbzCdjVcQj+BFPIKlp7EMeAJrUbASQVCEr80uG9cNbqe/Cgn/5WUI/DqNfBHM+kCzbs+lPUAr2pwBq5qABbB+M8gszkDvS/kOdAG5VBgEM4ApsP0CGLukjxlEoA0wSZR3Lo0qhxhZDIBDAmDA0wsBLD51CZeOwLKivHbprZx6AkAHuEXbD5fawYwywMqAzOKeDTTPvKqcTGZBMLsGs0utn5gADYEHcKp9e9ni//MCDtNCE3qjsIwAAAAASUVORK5CYII=" def format_with_separator(value) value.to_s.reverse.gsub(/(\d{3})(?=\d)/, '\\1,').reverse end puts "STEEM: $%f | image=%s" % [json["price_usd"], json["percent_change_1h"].to_f > 0 ? IMAGE_UP : IMAGE_DOWN] puts "---" puts "24h Volume: $%s" % [format_with_separator(json["24h_volume_usd"].to_i)] puts "Market Cap: $%s" % [format_with_separator(json["market_cap_usd"].to_i)] puts "---" puts "1h Change: %s%" % [json["percent_change_1h"]] puts "24h Change: %s%" % [json["percent_change_24h"]] puts "7d Change: %s%" % [json["percent_change_7d"]] puts "---" series = JSON.parse(open("https://api.coinmarketcap.com/v1/datapoints/steem/").read)["price_usd"] labels = "0:%7C" + series.map{|p| Time.at(p.first / 1000).strftime("%d%%20%b") }.select.with_index{|_, i| i % 15 == 0}.join("%7C") points = series.map(&:last) max = points.max chart_url = "https://chart.googleapis.com/chart?chs=250x125&cht=ls&chco=224499&chf=bg,s,FFFFFF00&chm=B,76A4FB,0,0,0&chds=a&chxt=x,y&chxl=#{labels}&chd=t:#{points.join(",")}" data = Base64.strict_encode64(open(chart_url).read) puts "| image=#{data}"