Last active
March 24, 2018 11:47
-
-
Save MihanEntalpo/037ed67a5dcba7a4f89bed2a33196d02 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name CryptoTable | |
// @namespace http://tampermonkey.net/ | |
// @version 0.1 | |
// @description try to take over the world! | |
// @author You | |
// @match https://bitinfocharts.com/ru/markets/ | |
// @grant none | |
// @run-at document-idle | |
// ==/UserScript== | |
(function() { | |
'use strict'; | |
var currencies = { | |
"BTC": "Bitcoin", | |
"ETH": "Ethereum", | |
"ETC": "Ethereum Classic", | |
"ZEC": "Zcash", | |
"BCH": "Bitcoin Cash", | |
"BCC": "Bitcoin Cash", | |
"BTG": "Bitcoin Gold", | |
"DASH": "Dash", | |
"NEO": "NEO", | |
"LTC": "Litecoin", | |
"XMR": "Monero", | |
"OMG": "Omise-go" | |
}; | |
var currencies_set = { | |
"BTC": false, | |
"ETH": false, | |
"ETC": false, | |
"ZEC": false, | |
"BCH": false, | |
"BCC": false, | |
"BTG": false, | |
"DASH": false, | |
"NEO": false, | |
"LTC": false, | |
"XMR": false, | |
"OMG": false | |
}; | |
var markets = { | |
"bittrex": "Bittrex", | |
"hitbtc": "HitBTC", | |
"yobit": "YoBit" | |
}; | |
var data = {}; | |
var minmax = {}; | |
function prepare() { | |
$('table#t1 tr').each(function(i, el) { | |
var cur = $($(el).find("td:eq(1)")).data("val"); | |
if (!(cur in currencies)) | |
{ | |
$(el).remove(); | |
} | |
}); | |
$('body').append("<div id='sub-tables'></div>"); | |
$('table#t1 tr').each(function(index,el){ | |
$("#sub-tables").append($(el).data("content")); $(el).popover("destroy"); | |
$('#sub-tables table tr').each(function(i, el){ | |
var market = $(el).find("td:eq(1)").text(); | |
if (!(market in markets)) | |
{ | |
$(el).remove(); | |
} | |
else | |
{ | |
var pair = $(el).find("td:eq(0)").text(); | |
var second=pair.split("/")[1]; | |
if (!(second in {"USD":"$", "EUR":"Euro", "USDT":"T$"})) | |
{ | |
$(el).remove(); | |
} | |
} | |
}); | |
}); | |
} | |
function read_data() | |
{ | |
data = {}; | |
minmax = {}; | |
for (var cur in currencies) { | |
data[cur] = {}; | |
currencies_set[cur] = false; | |
for (var market in markets) { | |
data[cur][market] = { | |
"buy": {"USD":0, "EUR":0}, | |
"sell": {"USD":0, "EUR":0} | |
}; | |
} | |
} | |
$('#sub-tables table tr').each( | |
function(i, el) | |
{ | |
var pair = $(el).find("td:eq(0)").text(); | |
var currency =pair.split("/")[0]; | |
var money=pair.split("/")[1]; | |
if (money == "USDT") money = "USD"; | |
if (currency == "BCC") currency = "BCH"; | |
var market = $(el).find("td:eq(1)").text(); | |
var buy=parseFloat($(el).find("td:eq(3)").text().replace(",", "").replace(/USD|RUR|EUR/, "")); | |
var sell=parseFloat($(el).find("td:eq(4)").text().replace(",", "").replace(/USD|RUR|EUR/, "")); | |
if (currency in currencies && market in markets) | |
{ | |
data[currency][market].buy[money] = buy; | |
data[currency][market].sell[money] = sell; | |
if (buy || sell) | |
{ | |
currencies_set[currency] = true; | |
} | |
} | |
} | |
); | |
$('#sub-tables').remove(); | |
console.log(data); | |
} | |
function show_data(){ | |
console.log(data); | |
if ($("#data-window").length == 0) | |
{ | |
$('body').append("<div id='data-window' style='z-index:9000;position:absolute; left:0px; top:0px; width:100%; height:100%; background-color:rgba(255,255,255,192);text-align:center;'></div>"); | |
} | |
var c = "<style>table#cdata td { border:1px solid black; padding:5px; } table#cdata {position:relative; left:50%; margin-left:-250px;}</style>"; | |
c += "<div id='reloader' style='visibility:hidden;color:#dd0000;'>Перезагрузка данных...</div><table id='cdata'><tr><td rowspan=2>КриптоВалюта</td><td colspan='" + Object.keys(markets).length + "'>Биржи</td></tr>"; | |
c += "<tr>"; | |
for (var market in markets) | |
{ | |
c += "<td>" + markets[market] + "</td>"; | |
} | |
c += "</tr>"; | |
for (var currency in currencies) | |
{ | |
if (!currencies_set[currency]) continue; | |
c += "<tr><td rowspan=2>" + currencies[currency] + "</td>"; | |
var max_buy = 0; | |
var min_buy = 999999; | |
var max_buy_market = ""; | |
var min_buy_market = ""; | |
var max_sell = 0; | |
var min_sell = 999999; | |
var max_sell_market = ""; | |
var min_sell_market = ""; | |
for (market in markets) | |
{ | |
if (data[currency][market].buy.USD > max_buy) | |
{ | |
max_buy = data[currency][market].buy.USD; | |
max_buy_market = market; | |
} | |
if (data[currency][market].buy.USD < min_buy && data[currency][market].buy.USD) | |
{ | |
min_buy = data[currency][market].buy.USD; | |
min_buy_market = market; | |
} | |
if (data[currency][market].sell.USD > max_sell) | |
{ | |
max_sell = data[currency][market].sell.USD; | |
max_sell_market = market; | |
} | |
if (data[currency][market].sell.USD < min_sell && data[currency][market].sell.USD) | |
{ | |
min_sell = data[currency][market].sell.USD; | |
min_sell_market = market; | |
} | |
} | |
for (market in markets) | |
{ | |
c += "<td>BUY:"; | |
for (var cur in data[currency][market].buy) | |
{ | |
if (data[currency][market].buy[cur]) | |
{ | |
var color=(market == max_buy_market) ? "green" : (market == min_buy_market ? "red":"black"); | |
c += "<span style='color:" + color + "'>" + data[currency][market].buy[cur] + " " + cur + ", </span>"; | |
} | |
} | |
} | |
c += "</tr><tr>"; | |
for (market in markets) | |
{ | |
c += "<td>SELL:"; | |
for (cur in data[currency][market].sell) | |
{ | |
if (data[currency][market].sell[cur]) | |
{ | |
var color=(market == max_sell_market) ? "green" : (market == min_sell_market ? "red":"black"); | |
c += "<span style='color:" + color + "'>" + data[currency][market].sell[cur] + " " + cur + ", </span>"; | |
} | |
} | |
c += "</td>"; | |
} | |
c += "</tr>"; | |
} | |
c += "</table>"; | |
$("#data-window").html(c); | |
} | |
function appendHtml(el, str) { | |
var div = document.createElement('div'); | |
div.innerHTML = str; | |
while (div.children.length > 0) { | |
el.appendChild(div.children[0]); | |
} | |
} | |
var html = "<div id='first-loader' style='z-index:9000;position:fixed; left:0px; top:0px; width:100%; height:100%; padding-top:150px; background-color:#FFFFFFFF;text-align:center;'>Первичная загрузка...</div>"; | |
appendHtml(document.body, html); | |
function load_courses(filename, callback){ | |
$.getJSON(filename, function(data) { | |
$.each(data, function(key, val) { | |
if (document.getElementById("tr_" + key)) { | |
$("#tr_" + key).data("content", data['table_header'] + val); | |
} | |
}); | |
callback(); | |
}); | |
} | |
function reloadPage(){ | |
$('#reloader').css("visibility", "visible"); | |
$.get(document.location.href, function(result) { | |
var begin = result.search(/<div[^>]*?id='markets_container'>/); | |
var end = result.search(/<div[^>]*?><small>[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/); | |
var content = result.substr(begin, end-begin); | |
$('#markets_container').replaceWith(content); | |
$('#sub-tables').remove(); | |
var match = /\$\.getJSON\ *\(\ *"([^"]+)",/.exec(result); | |
var filename = match[1]; | |
load_courses(filename, function(){ | |
setTimeout(function(){ | |
prepare(); | |
read_data(); | |
show_data(); | |
$('#reloader').css("visibility", "hidden"); | |
setTimeout(function() { | |
reloadPage(); | |
}, 30000); | |
},2000); | |
}); | |
}); | |
} | |
$(function(){ | |
setTimeout(function() { | |
prepare(); | |
$("#first-loader").remove(); | |
read_data(); | |
console.log(data); | |
show_data(); | |
}, 2000); | |
setTimeout(function() { | |
reloadPage(); | |
}, 10000); | |
}); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment