Skip to content

Instantly share code, notes, and snippets.

@achiko
Created April 26, 2014 12:22
Show Gist options
  • Save achiko/11318745 to your computer and use it in GitHub Desktop.
Save achiko/11318745 to your computer and use it in GitHub Desktop.
var util = require('util');
var request = require("request");
var _ = require('underscore');
var fs = require('fs');
var async = require('async');
var mathjs = require('mathjs'), math = mathjs();
//-- Loacalbitcoins
var localbitcoinsOtions = {
url: "https://localbitcoins.com/bitcoincharts/usd/orderbook.json",
strictSSL: false,
method: 'GET',
headers: {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0"
}
}
exports.LoadLocalBitcoins = function(callback) {
request(localbitcoinsOtions, function(error, response, body) {
var exch = "localbitcoins";
var _BidsArr = { ex: exch, data: [] }
var _AsksArr = { ex: exch, data: [] }
if(error){
console.log('kraken Error: ', error);
return callback(null, _BidsArr, _AsksArr);
}
if(_.isUndefined(response)){
return callback(null,_BidsArr, _AsksArr);
}
console.log('localbitcoins status code: ', response.statusCode);
try {
var jsonobj = JSON.parse(body);
//var bids = _(jsonobj.bids).sortBy(function(obj) { return obj[0] * -1 })
//var bids = jsonobj.bids.slice(0, 10);
var asks = jsonobj.asks.slice(0, 10);
}
catch(e){
console.log('kraken Json Exeption: ', e);
return callback(null, _BidsArr, _AsksArr);
}
// _.each(bids, function(item){
// console.log(item);
// _BidsArr.data.push({ "ex" : exch, "amt" : parseFloat(item[0]), "bid" : item.price });
// });
_.each(asks, function(item){
_AsksArr.data.push({ "ex" : exch, "amt" : parseFloat(item[0]), "ask" : parseFloat(item[1]) });
});
callback(null, _BidsArr, _AsksArr);
});
}
//-- Bitfinex
var bitfinexOtions = {
url: "https://api.bitfinex.com/v1/book/btcusd",
strictSSL: false,
method: 'GET',
headers: {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0"
}
}
exports.LoadBitfinex = function(callback) {
request(bitfinexOtions, function(error, response, body) {
var exch = "Bitfinex";
var _BidsArr = { ex: exch, data: [] }
var _AsksArr = { ex: exch, data: [] }
if(error){
console.log('Bitfinex http Error: ', error);
return callback(null, _BidsArr, _AsksArr);
}
if(_.isUndefined(response)){
return callback(null,_BidsArr, _AsksArr);
}
//console.log('bitfinex status code: ', response.statusCode);
try {
var jsonobj = JSON.parse(body);
var bids = jsonobj.bids.slice(0, 10);
var asks = jsonobj.asks.slice(0, 10);
}
catch(e){
console.log('Bitfinex Json Exeption: ', e);
return callback(null, _BidsArr, _AsksArr);
}
_.each(bids, function(item){
_BidsArr.data.push({ "ex" : exch, "amt" : parseFloat(item.amount), "bid" : parseFloat(item.price) });
});
_.each(asks, function(item){
_AsksArr.data.push({ "ex" : exch, "amt" : parseFloat(item.amount), "ask" : parseFloat(item.price) });
});
callback(null, _BidsArr, _AsksArr);
});
}
//-- Kraken
var krakentterOtions = {
url: "https://api.kraken.com/0/public/Depth?pair=XXBTZUSD",
strictSSL: false,
method: 'GET',
headers: {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0"
}
}
exports.LoadKraken = function(callback) {
request(krakentterOtions, function(error, response, body) {
var exch = "Kraken";
var _BidsArr = { ex: exch, data: [] }
var _AsksArr = { ex: exch, data: [] }
if(error){
console.log('kraken http Error: ', error);
return callback(null, _BidsArr, _AsksArr);
}
if(_.isUndefined(response)){
return callback(null,_BidsArr, _AsksArr);
}
// console.log('kraken status code: ', response.statusCode);
try {
var jsonobj = JSON.parse(body);
var bids = jsonobj.result.XXBTZUSD.bids.slice(0, 10);
var asks = jsonobj.result.XXBTZUSD.asks.slice(0, 10);
}
catch(e){
console.log('Kraken Json exeption: ', e);
return callback(null, _BidsArr, _AsksArr);
}
_.each(bids, function(item){
_BidsArr.data.push({ "ex" : exch, "amt" : parseFloat(item[1]), "bid" : parseFloat(item[0]) });
});
_.each(asks, function(item){
_AsksArr.data.push({ "ex" : exch, "amt" : parseFloat(item[1]), "ask" : parseFloat(item[0]) });
});
callback(null, _BidsArr, _AsksArr);
});
}
//-- Coinsetter
var coinsetterOtions = {
url: "https://api.coinsetter.com/v1/marketdata/depth",
strictSSL: false,
method: 'GET',
headers: {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0"
}
}
exports.LoadCoinsetter = function(callback) {
request(coinsetterOtions, function(error, response, body) {
var exch = "coinsetter";
var _BidsArr = { ex: "coinsetter", data: [] }
var _AsksArr = { ex: "coinsetter", data: [] }
if(error){
console.log('Coinsetter http error: ', error);
return callback(null, _BidsArr, _AsksArr);
}
if(_.isUndefined(response)){
return callback(null,_BidsArr, _AsksArr);
}
//console.log('coinsetter status code: ', response.statusCode);
try {
var jsonobj = JSON.parse(body);
//var bids = jsonobj.bids.slice(0, 10);
//var asks = jsonobj.asks.slice(0, 10);
}
catch(e){
console.log('Coinsetter Json Exption: ', e);
return callback(null, _BidsArr, _AsksArr);
}
_.each(jsonobj.TopNBidAsks, function(item){
_BidsArr.data.push({ "ex" : exch, "amt" : item.Bid.Size, "bid" : item.Bid.Price });
_AsksArr.data.push({ "ex" : exch, "amt" : item.Ask.Size, "ask" : item.Ask.Price });
});
callback(null, _BidsArr, _AsksArr);
});
}
//-- Bitstamp
var bitstampOptions = {
url: "https://www.bitstamp.net/api/order_book/",
strictSSL: false,
method: 'GET',
headers: {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0"
}
}
exports.LoadBitsampdata = function(callback) {
request(bitstampOptions, function(error, response, body) {
var exch = "bitstamp";
var _BidsArr = { ex: "bitstamp", data: [] }
var _AsksArr = { ex: "bitstamp", data: [] }
if(error){
console.log('Bistamp http Error: ', error);
return callback(null, _BidsArr, _AsksArr);
}
if(_.isUndefined(response)){
return callback(null,_BidsArr, _AsksArr);
}
//console.log('Bistamp status code: ', response.statusCode);
try {
var jsonobj = JSON.parse(body);
var bids = jsonobj.bids.slice(0, 10);
var asks = jsonobj.asks.slice(0, 10);
}
catch(e){
console.log('Bitstamp Json exeption: ', e);
return callback(null, _BidsArr, _AsksArr);
}
//-- Separate bids
_.each(bids, function(val, key){
_BidsArr.data.push({ "ex" : exch, "amt" : parseFloat(val[1]), "bid" : parseFloat(val[0]) });
});
_.each(asks, function(val, key){
_AsksArr.data.push({ "ex" : exch, "amt" : parseFloat(val[1]), "ask": parseFloat(val[0]) });
});
//-- Sort Data
//var sordetdata = _(orderbookdata).sortBy(function(obj) { return obj.diff * -1 });
callback(null, _BidsArr, _AsksArr);
});
}
//-- Btc-e
var btceOtions = {
url: "https://btc-e.com/api/2/btc_usd/depth",
strictSSL: false,
method: 'GET',
headers: {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0"
}
}
exports.LoadBtceData = function(callback){
request(btceOtions, function(error, response, body) {
var exch = "btc-e";
var _BidsArr = { ex: "btc-e", data: [] }
var _AsksArr = { ex: "btc-e", data: [] }
if(error){
console.log('Btc-e http error: ', error);
return callback(null, _BidsArr, _AsksArr);
}
if(_.isUndefined(response)){
return callback(null,_BidsArr, _AsksArr);
}
//console.log('Btce-E status code: ', response.statusCode);
try {
var jsonobj = JSON.parse(body);
var bids = jsonobj.bids.slice(0, 10);
var asks = jsonobj.asks.slice(0, 10);
}catch(e) {
console.log('btc-e http exeption: ', e);
return callback(null, _BidsArr, _AsksArr);
}
//-- Loop and gergare in one line
_.each(bids, function(val, key){
_BidsArr.data.push({ "ex" : exch, "bid": val[0], "amt": val[1] });
});
_.each(asks, function(val, key){
_AsksArr.data.push({ "ex" : exch, "ask" : val[0], "amt" : val[1] });
});
//-- Sort Data
//-- var sordetdata = _(orderbookdata).sortBy(function(obj) { return obj.diff * -1 });
callback(null, _BidsArr, _AsksArr);
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment