diff options
author | tv <tv@nomic.retiolum> | 2013-11-07 13:07:25 +0100 |
---|---|---|
committer | tv <tv@nomic.retiolum> | 2013-11-07 13:07:25 +0100 |
commit | 03d7962c7346cb5aa09466c763a2010d89eb7d45 (patch) | |
tree | cf0feaf3a6d8fb077ba5672aaeeb58ef14a980ff /gold/bitcoinwisdom/ticker.js | |
parent | ea8a9e3f3637eb2cd6f1781afe20d9f0c4090fed (diff) |
bitcoinwisdom ticker: initial commit
Diffstat (limited to 'gold/bitcoinwisdom/ticker.js')
-rw-r--r-- | gold/bitcoinwisdom/ticker.js | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/gold/bitcoinwisdom/ticker.js b/gold/bitcoinwisdom/ticker.js new file mode 100644 index 00000000..95861229 --- /dev/null +++ b/gold/bitcoinwisdom/ticker.js @@ -0,0 +1,84 @@ +var http = require('http'); +var beeper = require('./beep.js').create_beeper(); + +setInterval(get_ticker, 1000); + +function get_ticker () { + http.get('http://s1.bitcoinwisdom.com:8080/ticker', ticker_response_handler); +} + +function ticker_response_handler (res) { + var data = ''; + res.on('data', function (chunk) { + data += chunk; + }); + res.on('end', function () { + try { + data = JSON.parse(data); + } catch (err) { + return console.log('Error:', err); + } + ticker_data_handler(data); + }); +} + +var last_data = { + btceltcbtc: { + last: 0, // price + date: 0, + tid: 0, + }, +} + +function ticker_data_handler (data) { + //console.log(data) + + var ticker = data.btceltcbtc + var last_ticker = last_data.btceltcbtc + + if (ticker.date !== last_ticker.date) { + + var diff = ticker.last - last_ticker.last; + + var lag = data.now - ticker.date; + + freq = (2000 + 1000000 * diff) | 0; + + var out = [ + format_date(data.now) + '+' + pad_left(lag, 2, '0'), + 'btceltcbtc', + '[' + diff_color(diff) + 'm' + ticker.last + '[m', + lag, + freq, + ]; + + console.log(out.join(' ')); + + beeper.beep(freq, 10); + } + + last_data.btceltcbtc = data.btceltcbtc; +} + +function diff_color (diff) { + if (diff < 0) { + return '31;1'; + } else if (diff > 0) { + return '32;1'; + } else { + return '33;1'; + } +} + +function format_date (unix) { + return (new Date(unix * 1000)).toISOString() + .replace(/\.000Z$/, 'Z') +} + +function pad_left (obj, num, char) { + var str = obj.toString(); + while (str.length < num) { + str += char; + } + return str; +} |