mirror of https://github.com/GOSTSec/gostcoin.i2p
orignal
7 years ago
1 changed files with 76 additions and 0 deletions
@ -0,0 +1,76 @@
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/python3 |
||||
|
||||
# requirements: sudo pip3 install matplotlib |
||||
|
||||
import numpy as np |
||||
import matplotlib.pyplot as plt |
||||
import matplotlib.ticker as ticker |
||||
from datetime import datetime, timedelta |
||||
import math |
||||
import json |
||||
import urllib |
||||
|
||||
PLOT_TITLE = 'BTC_GST graph' |
||||
Y_AXIS_NAME = 'BTC price' |
||||
PNG_FILENAME = 'graph.png' |
||||
DPI = 60 # affects the size of output image |
||||
|
||||
HISTORY_URL = 'http://nvspc.i2p/api/dummy/gettradelog?e=5&c=500&bt=3' |
||||
PROXY_URL = 'http://localhost:4444' |
||||
|
||||
def get_data_from_nvspc(): |
||||
proxy_handler = urllib.request.ProxyHandler({ |
||||
'http': PROXY_URL |
||||
}) |
||||
opener = urllib.request.build_opener(proxy_handler) |
||||
response = opener.open(HISTORY_URL) |
||||
raw_result = response.read().decode() |
||||
data = reversed(json.loads(raw_result)['data']['l']) |
||||
return data |
||||
|
||||
def adapt_data_for_plot(data): |
||||
oneline = {'x': [], 'y': [], } |
||||
secondline = {'x': [], 'y': [], } |
||||
dates = [] |
||||
|
||||
for i, chunk in enumerate(data): |
||||
spl_chunk = chunk['d'].split('|') |
||||
date = spl_chunk[0] |
||||
price_buy = spl_chunk[1] |
||||
price_diff = spl_chunk[2] |
||||
price_sell = float(price_buy) + float(price_diff) |
||||
date = datetime.strptime(date, '%y%m%d%H%M') |
||||
oneline['x'].append(i) |
||||
oneline['y'].append(price_sell) |
||||
secondline['x'].append(i) |
||||
secondline['y'].append(price_buy) |
||||
dates.append(date) |
||||
|
||||
return oneline, secondline, dates |
||||
|
||||
def draw_plot(oneline, secondline, dates): |
||||
fig, ax = plt.subplots() |
||||
ax.plot(oneline['x'], oneline['y']) |
||||
ax.plot(secondline['x'], secondline['y']) |
||||
N = len(dates) |
||||
ind = np.arange(N) |
||||
def format_date(x, pos=None): |
||||
thisind = np.clip(int(x + 0.5), 0, N - 1) |
||||
if thisind > N - 1: thisind = N - 1 |
||||
return dates[thisind].strftime('%Y-%m-%d') |
||||
|
||||
ax.xaxis.set_major_formatter(ticker.FuncFormatter(format_date)) |
||||
fig.autofmt_xdate() |
||||
plt.ylabel(Y_AXIS_NAME) |
||||
plt.title(PLOT_TITLE) |
||||
plt.grid(True) |
||||
plt.savefig(PNG_FILENAME, bbox_inches='tight', dpi=DPI) |
||||
|
||||
def generate_graphic(): |
||||
data = get_data_from_nvspc() |
||||
oneline, secondline, dates = adapt_data_for_plot(data) |
||||
draw_plot(oneline, secondline, dates) |
||||
|
||||
|
||||
if __name__ == "__main__": |
||||
generate_graphic() |
Loading…
Reference in new issue