From 03d7962c7346cb5aa09466c763a2010d89eb7d45 Mon Sep 17 00:00:00 2001 From: tv Date: Thu, 7 Nov 2013 13:07:25 +0100 Subject: bitcoinwisdom ticker: initial commit --- gold/bitcoinwisdom/beep.js | 30 ++++++++++++++++ gold/bitcoinwisdom/index.js | 84 ++++++++++++++++++++++++++++++++++++++++++++ gold/bitcoinwisdom/ticker.js | 84 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 198 insertions(+) create mode 100644 gold/bitcoinwisdom/beep.js create mode 100644 gold/bitcoinwisdom/index.js create mode 100644 gold/bitcoinwisdom/ticker.js (limited to 'gold') diff --git a/gold/bitcoinwisdom/beep.js b/gold/bitcoinwisdom/beep.js new file mode 100644 index 00000000..80a0cb0f --- /dev/null +++ b/gold/bitcoinwisdom/beep.js @@ -0,0 +1,30 @@ +module.exports = { + create_beeper: create_beeper, +} + +var child_process = require('child_process'); + +function create_beeper (spec) { + return { + beep: beep, + } + function beep (freq, len) { + var child = child_process.spawn('beep', [ + '-f', freq, + '-l', len, + ]); + child.stdout.on('data', function (data) { + console.log('stdout: ' + data); + }); + + child.stderr.on('data', function (data) { + console.log('stderr: ' + data); + }); + + child.on('close', function (code) { + if (code !== 0) { + console.log('child process exited with code ' + code); + } + }); + } +} diff --git a/gold/bitcoinwisdom/index.js b/gold/bitcoinwisdom/index.js new file mode 100644 index 00000000..95861229 --- /dev/null +++ b/gold/bitcoinwisdom/index.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 + '', + 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; +} 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 + '', + 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; +} -- cgit v1.2.3 From 712612634f53cc96be760a547bb13743f9ee77d0 Mon Sep 17 00:00:00 2001 From: tv Date: Thu, 7 Nov 2013 13:35:32 +0100 Subject: bitcoinwisdom ticker: generalize pad_left to pad --- gold/bitcoinwisdom/ticker.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'gold') diff --git a/gold/bitcoinwisdom/ticker.js b/gold/bitcoinwisdom/ticker.js index 95861229..be60ddb8 100644 --- a/gold/bitcoinwisdom/ticker.js +++ b/gold/bitcoinwisdom/ticker.js @@ -45,9 +45,9 @@ function ticker_data_handler (data) { freq = (2000 + 1000000 * diff) | 0; var out = [ - format_date(data.now) + '+' + pad_left(lag, 2, '0'), + format_date(data.now) + '+' + pad(lag, -2, '0'), 'btceltcbtc', - '[' + diff_color(diff) + 'm' + ticker.last + '', + '\e[' + diff_color(diff) + 'm' + pad(ticker.last, 2 + 8, '0') + '\e[m', lag, freq, ]; @@ -75,10 +75,18 @@ function format_date (unix) { .replace(/\.000Z$/, 'Z') } -function pad_left (obj, num, char) { +// num < 0: pad left +// num > 0: pad right +function pad (obj, num, char) { var str = obj.toString(); - while (str.length < num) { - str += char; + if (num < 0) { + while (str.length < -num) { + str = char + str; + } + } if (num > 0) { + while (str.length < num) { + str = str + char; + } } return str; } -- cgit v1.2.3 From c5d1a95fd0792de7c8fbe93768dce9662f0b948f Mon Sep 17 00:00:00 2001 From: tv Date: Thu, 7 Nov 2013 13:48:40 +0100 Subject: bitcoinwisdom ticker: fix escape chars --- gold/bitcoinwisdom/ticker.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gold') diff --git a/gold/bitcoinwisdom/ticker.js b/gold/bitcoinwisdom/ticker.js index be60ddb8..e49f12c2 100644 --- a/gold/bitcoinwisdom/ticker.js +++ b/gold/bitcoinwisdom/ticker.js @@ -47,7 +47,7 @@ function ticker_data_handler (data) { var out = [ format_date(data.now) + '+' + pad(lag, -2, '0'), 'btceltcbtc', - '\e[' + diff_color(diff) + 'm' + pad(ticker.last, 2 + 8, '0') + '\e[m', + '\x1b[' + diff_color(diff) + 'm' + pad(ticker.last, 2 + 8, '0') + '\x1b[m', lag, freq, ]; -- cgit v1.2.3 From f2cd30b291ddbf9f214fd98ee45b0d7661f5b2ac Mon Sep 17 00:00:00 2001 From: tv Date: Thu, 7 Nov 2013 14:04:58 +0100 Subject: bitcoinwisdom ticker: dry up symbol --- gold/bitcoinwisdom/ticker.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'gold') diff --git a/gold/bitcoinwisdom/ticker.js b/gold/bitcoinwisdom/ticker.js index e49f12c2..1aa212f2 100644 --- a/gold/bitcoinwisdom/ticker.js +++ b/gold/bitcoinwisdom/ticker.js @@ -33,8 +33,10 @@ var last_data = { function ticker_data_handler (data) { //console.log(data) - var ticker = data.btceltcbtc - var last_ticker = last_data.btceltcbtc + var symbol = 'btceltcbtc' + + var ticker = data[symbol] + var last_ticker = last_data[symbol] if (ticker.date !== last_ticker.date) { @@ -46,7 +48,7 @@ function ticker_data_handler (data) { var out = [ format_date(data.now) + '+' + pad(lag, -2, '0'), - 'btceltcbtc', + symbol, '\x1b[' + diff_color(diff) + 'm' + pad(ticker.last, 2 + 8, '0') + '\x1b[m', lag, freq, @@ -57,7 +59,7 @@ function ticker_data_handler (data) { beeper.beep(freq, 10); } - last_data.btceltcbtc = data.btceltcbtc; + last_data[symbol] = data[symbol]; } function diff_color (diff) { -- cgit v1.2.3 From e70919d5dc67d4ab52f16875333f007ced357a72 Mon Sep 17 00:00:00 2001 From: tv Date: Thu, 7 Nov 2013 14:12:57 +0100 Subject: bitcoinwisdom ticker: use toFixed for price --- gold/bitcoinwisdom/ticker.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'gold') diff --git a/gold/bitcoinwisdom/ticker.js b/gold/bitcoinwisdom/ticker.js index 1aa212f2..1c4f73d9 100644 --- a/gold/bitcoinwisdom/ticker.js +++ b/gold/bitcoinwisdom/ticker.js @@ -49,7 +49,9 @@ function ticker_data_handler (data) { var out = [ format_date(data.now) + '+' + pad(lag, -2, '0'), symbol, - '\x1b[' + diff_color(diff) + 'm' + pad(ticker.last, 2 + 8, '0') + '\x1b[m', + '\x1b[' + diff_color(diff) + 'm' + + ticker.last.toFixed(8) + + '\x1b[m', lag, freq, ]; -- cgit v1.2.3 From 20de34fbd8900108815528bc70bfbc46c7598598 Mon Sep 17 00:00:00 2001 From: tv Date: Thu, 7 Nov 2013 14:18:57 +0100 Subject: bitcoinwisdom: simplify output --- gold/bitcoinwisdom/ticker.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'gold') diff --git a/gold/bitcoinwisdom/ticker.js b/gold/bitcoinwisdom/ticker.js index 1c4f73d9..25b29637 100644 --- a/gold/bitcoinwisdom/ticker.js +++ b/gold/bitcoinwisdom/ticker.js @@ -48,11 +48,10 @@ function ticker_data_handler (data) { var out = [ format_date(data.now) + '+' + pad(lag, -2, '0'), - symbol, '\x1b[' + diff_color(diff) + 'm' + ticker.last.toFixed(8) + '\x1b[m', - lag, + symbol, freq, ]; -- cgit v1.2.3 From f715aa074462e0322ea4343f5a563c402b95aada Mon Sep 17 00:00:00 2001 From: lassulus Date: Thu, 7 Nov 2013 15:52:12 +0100 Subject: bitcoinwisdom ticker: normalized difference --- gold/bitcoinwisdom/ticker.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gold') diff --git a/gold/bitcoinwisdom/ticker.js b/gold/bitcoinwisdom/ticker.js index 25b29637..df0eeeb1 100644 --- a/gold/bitcoinwisdom/ticker.js +++ b/gold/bitcoinwisdom/ticker.js @@ -44,7 +44,7 @@ function ticker_data_handler (data) { var lag = data.now - ticker.date; - freq = (2000 + 1000000 * diff) | 0; + freq = (2000 + 200 * diff * Math.sqrt(ticker.last / last_ticker.last)) | 0; var out = [ format_date(data.now) + '+' + pad(lag, -2, '0'), -- cgit v1.2.3 From e290f61b54d78677a56492e878c56326658d84f1 Mon Sep 17 00:00:00 2001 From: lassulus Date: Thu, 7 Nov 2013 16:03:06 +0100 Subject: bitcoinwisdom ticker: better normalization --- gold/bitcoinwisdom/ticker.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gold') diff --git a/gold/bitcoinwisdom/ticker.js b/gold/bitcoinwisdom/ticker.js index df0eeeb1..002f8502 100644 --- a/gold/bitcoinwisdom/ticker.js +++ b/gold/bitcoinwisdom/ticker.js @@ -44,7 +44,7 @@ function ticker_data_handler (data) { var lag = data.now - ticker.date; - freq = (2000 + 200 * diff * Math.sqrt(ticker.last / last_ticker.last)) | 0; + freq = ( Math.pow(2000, ticker.last / last_ticker.last )) | 0; var out = [ format_date(data.now) + '+' + pad(lag, -2, '0'), -- cgit v1.2.3