summaryrefslogtreecommitdiffstats
path: root/gold/bitcoinwisdom/ticker.js
blob: 25b296377e0ecd77ea35ab7f4fa66644f7b60b41 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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 symbol = 'btceltcbtc'

  var ticker = data[symbol]
  var last_ticker = last_data[symbol]

  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(lag, -2, '0'),
      '\x1b[' + diff_color(diff) + 'm'
        + ticker.last.toFixed(8)
        + '\x1b[m',
      symbol,
      freq,
    ];

    console.log(out.join(' '));

    beeper.beep(freq, 10);
  }

  last_data[symbol] = data[symbol];
}

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')
}

// num < 0: pad left
// num > 0: pad right
function pad (obj, num, char) {
  var str = obj.toString();
  if (num < 0) {
    while (str.length < -num) {
      str = char + str;
    }
  } if (num > 0) {
    while (str.length < num) {
      str = str + char;
    }
  }
  return str;
}