moneropro/charts/views.py
2022-09-16 17:10:31 -03:00

8268 lines
No EOL
306 KiB
Python

from ctypes import sizeof
from os import readlink
from django.shortcuts import render
from django.http import HttpResponseRedirect
from django.urls import reverse
import requests
import json
from .models import *
from .forms import *
from users.models import PageViews
from users.views import update_visitors
import datetime
from datetime import date, timedelta
from dateutil.relativedelta import relativedelta
from requests.exceptions import ConnectionError, Timeout, TooManyRedirects
import math
import locale
import pandas as pd
from operator import truediv
from datetime import timezone
import aiohttp
import asyncio
import pygsheets
from django.contrib.auth.decorators import login_required
from requests import Session
from psaw import PushshiftAPI
from django.contrib.staticfiles.storage import staticfiles_storage
###########################################
# Set some parameters
###########################################
locale.setlocale(locale.LC_ALL, 'en_US.utf8')
# This loads Reddit stats about a subreddit
api = PushshiftAPI()
##########################################
# Asynchronous get block data
##########################################
async def get_block_data(session, block: str):
url = 'https://xmrchain.net/api/block/' + block
async with session.get(url) as res:
data = await res.read()
data = json.loads(data)
data['provider'] = 'block_data_xmrchain'
if res.status < 299:
data['success'] = True
else:
data['success'] = False
return data
##########################################
# Asynchronous get network data
##########################################
async def get_network_data(session, block: str):
url = 'https://xmrchain.net/api/networkinfo'
async with session.get(url) as res:
data = await res.read()
data = json.loads(data)
data['provider'] = 'network_data_xmrchain'
if res.status < 299:
data['success'] = True
else:
data['success'] = False
return data
##########################################
# Asynchronous get other coins data
##########################################
async def get_coin_data(session, symbol, url):
update = True
count = 0
while update:
async with session.get(url) as res:
data = await res.read()
data = json.loads(data)
data_aux = data['data']
for item in data_aux:
day, hour = str(item['time']).split('T')
day = datetime.datetime.strptime(day, '%Y-%m-%d')
day = datetime.datetime.strftime(day, '%Y-%m-%d')
try:
coin = Coin.objects.filter(name=symbol).get(date=day)
except:
coin = Coin()
try:
coin.name = symbol
coin.date = day
try:
coin.priceusd = float(item['PriceUSD'])
except:
coin.priceusd = 0
try:
coin.pricebtc = float(item['PriceBTC'])
except:
coin.pricebtc = 0
try:
coin.inflation = float(item['IssContPctAnn'])
coin.stocktoflow = (100/coin.inflation)**1.65
except:
coin.inflation = 0
coin.stocktoflow = 0
try:
coin.supply = float(item['SplyCur'])
except:
coin.supply = 0
try:
coin.fee = float(item['FeeTotNtv'])
except:
coin.fee = 0
try:
coin.revenue = float(item['RevNtv'])
except:
coin.revenue = 0
try:
coin.hashrate = float(item['HashRate'])
except:
coin.hashrate = 0
try:
coin.transactions = float(item['TxCnt'])
except:
coin.transactions = 0
coin.save()
count += 1
print(str(symbol) + ' ' + str(coin.date))
except:
pass
try:
url = data['next_page_url']
update = True
except:
update = False
break
return count
##########################################
# Asynchronous get other coins data
##########################################
async def get_social_data(session, symbol):
date_now = datetime.datetime.strftime(date.today(), '%Y-%m-%d')
socials = Social.objects.filter(name=symbol).filter(date=date_now)
if not(socials):
print('getting new data')
url = 'https://www.reddit.com/r/'+ symbol +'/about.json'
async with session.get(url, headers={'User-agent': 'Checking new social data'}) as res:
data = await res.read()
data = json.loads(data)
data = data['data']
subscribers = data['subscribers']
social = Social()
social.name = symbol
social.date = date_now
social.subscriberCount = subscribers
date_aux = date.today()
date_aux = datetime.datetime.strftime(date_aux, '%Y-%m-%d')
date_aux = datetime.datetime.strptime(date_aux, '%Y-%m-%d')
timestamp1 = int(datetime.datetime.timestamp(date_aux))
timestamp2 = int(timestamp1 - 43200)
limit = 1000
filters = []
data = data_prep_posts(symbol, timestamp2, timestamp1, filters, limit)
print(len(data))
social.postsPerHour = len(data)/12
timestamp2 = int(timestamp1 - 3600)
limit = 1000
data = data_prep_comments(symbol, timestamp2, timestamp1, filters, limit)
print(len(data))
social.commentsPerHour = len(data)/1
social.save()
return True
##########################################
# Asynchronous get social and coins data
##########################################
async def update_others_data(date):
with open("settings.json") as file:
data = json.load(file)
file.close()
url_btc = data["metrics_provider"][0]["metrics_url_new"] + 'btc/' + date
url_dash = data["metrics_provider"][0]["metrics_url_new"] + 'dash/' + date
url_grin = data["metrics_provider"][0]["metrics_url_new"] + 'grin/' + date
url_zec = data["metrics_provider"][0]["metrics_url_new"] + 'zec/' + date
##########################################
# Asynchronous
##########################################
actions = []
my_timeout = aiohttp.ClientTimeout(
total=10,
sock_connect=10,
sock_read=10
)
client_args = dict(
trust_env=True,
timeout=my_timeout
)
async with aiohttp.ClientSession(**client_args) as session:
# reddit data
actions.append(asyncio.ensure_future(get_social_data(session, 'Monero')))
actions.append(asyncio.ensure_future(get_social_data(session, 'Bitcoin')))
actions.append(asyncio.ensure_future(get_social_data(session, 'Cryptocurrency')))
# coinmetrics data
actions.append(asyncio.ensure_future(get_coin_data(session, 'btc', url_btc)))
actions.append(asyncio.ensure_future(get_coin_data(session, 'dash', url_dash)))
actions.append(asyncio.ensure_future(get_coin_data(session, 'grin', url_grin)))
actions.append(asyncio.ensure_future(get_coin_data(session, 'zec', url_zec)))
try:
responses = await asyncio.gather(*actions, return_exceptions=True)
except asyncio.exceptions.TimeoutError:
print('Timeout!')
print('p2pool')
update_p2pool()
print('updating database')
update_database(date, date)
print('done')
return True
##########################################
# Asynchronous get whole xmr data
##########################################
async def update_xmr_data(date, coin):
supply = coin.supply
inflation = coin.inflation
yesterday = date
url = 'https://xmrchain.net/api/networkinfo'
response = requests.get(url)
data = json.loads(response.text)
height = int(data['data']['height'])
difficulty = int(data['data']['difficulty'])
hashrate = int(data['data']['hash_rate'])
blocksize = 0
name = 'xmr'
##########################################
# Asynchronous
##########################################
actions = []
my_timeout = aiohttp.ClientTimeout(
total=10,
sock_connect=10,
sock_read=10
)
client_args = dict(
trust_env=True,
timeout=my_timeout
)
async with aiohttp.ClientSession(**client_args) as session:
for count in range(1, 1400):
block = str(height - count)
actions.append(asyncio.ensure_future(get_block_data(session, block)))
actions.append(asyncio.ensure_future(get_coinmarketcap_data(session, 'xmr', 'USD')))
actions.append(asyncio.ensure_future(get_coinmarketcap_data(session, 'xmr', 'BTC')))
try:
responses = await asyncio.gather(*actions, return_exceptions=True)
except asyncio.exceptions.TimeoutError:
print('Timeout!')
errors = 0
success = 0
txs = 0
revenue = 0
fees = 0
priceusd = 0
pricebtc = 0
for response in responses:
if response:
try:
if response['provider'] == 'block_data_xmrchain':
date_aux = response['data']['timestamp_utc'].split(' ')[0]
if date_aux == yesterday:
success += 1
try:
blocksize += int(response['data']['size'])
for tx in response['data']['txs']:
if tx['coinbase']:
revenue += int(tx['xmr_outputs'])
else:
txs += 1
fees += int(tx['tx_fee'])
revenue += int(tx['tx_fee'])
except:
errors += 1
if response['provider'] == 'coinmarketcap':
try:
priceusd = float(response['data']['XMR']['quote']['USD']['price'])
update_rank(response)
update_dominance(response)
except:
try:
pricebtc = float(response['data']['XMR']['quote']['BTC']['price'])
except:
errors += 1
except:
errors += 1
else:
errors += 1
blocksize = blocksize/success
revenue = float(revenue)/10**12
fees = float(fees)/10**12
inflation = 100*365*(revenue)/float(coin.supply)
stocktoflow = (100/inflation)**1.65
supply = coin.supply + revenue
print('Name: ' + name)
print('Date: ' + str(yesterday))
print('Success: ' + str(success))
print('Errors: ' + str(errors))
print('Blocksize: ' + str(blocksize))
print('Transactions: ' + str(txs))
print('Revenue: ' + str(revenue))
print('Fees: ' + str(fees))
print('Inflation: ' + str(inflation))
print('Hashrate: ' + str(hashrate))
print('Difficulty: ' + str(difficulty))
print('Stocktoflow: ' + str(stocktoflow))
print('Priceusd: ' + str(priceusd))
print('Pricebtc: ' + str(pricebtc))
print('Supply: ' + str(supply))
try:
coin = Coin()
coin.name = name
coin.date = datetime.datetime.strptime(yesterday, '%Y-%m-%d')
coin.blocksize = blocksize
coin.transactions = txs
coin.revenue = revenue
coin.fee = fees
coin.inflation = inflation
coin.hashrate = hashrate
coin.difficulty = difficulty
coin.stocktoflow = stocktoflow
coin.priceusd = priceusd
coin.pricebtc = pricebtc
coin.supply = supply
coin.save()
except:
return False
return True
##########################################
# Asynchronous get coinmarketcap data
##########################################
async def get_coinmarketcap_data(session, symbol: str, convert: str):
with open("settings.json") as file:
data = json.load(file)
file.close()
url = data["metrics_provider"][0]["price_url_old"] + symbol
parameters = {'convert': convert,}
headers = {'Accepts': 'application/json', data["metrics_provider"][0]["api_key_name"]: data["metrics_provider"][0]["api_key_value"],}
async with session.get(url, headers=headers, params=parameters) as res:
data = await res.read()
data = json.loads(data)
data['provider'] = 'coinmarketcap'
if res.status < 299:
try:
if data['data'][symbol.upper()]['cmc_rank']:
data['success'] = True
else:
data['success'] = False
except:
data['success'] = False
else:
data['success'] = False
return data
###########################################
# Useful functions for admins
###########################################
# Add manually a new entrance for coin
# To be used when there's a problem with the API
@login_required
def add_coin(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
return render(request, 'users/error.html')
if request.method != 'POST':
#create new page with blank form
form = CoinForm()
else:
#process data and submit article
form = CoinForm(data=request.POST)
if form.is_valid():
add_coin = form.save(commit=False)
coin = Coin.objects.filter(name=add_coin.name).filter(date=add_coin.date)
if coin:
for item in coin:
item.delete()
print('coin found and deleted')
else:
print('coin not found')
add_coin.stocktoflow = (100/add_coin.inflation)**1.65
print(add_coin.name)
print(add_coin.date)
print(add_coin.priceusd)
print(add_coin.pricebtc)
print(add_coin.inflation)
print(add_coin.transactions)
print(add_coin.hashrate)
print(add_coin.stocktoflow)
print(add_coin.supply)
print(add_coin.fee)
print(add_coin.revenue)
print(add_coin.blocksize)
print(add_coin.difficulty)
add_coin.save()
print('coin saved')
message = 'Coin added to the database!'
coin = Coin.objects.filter(name=add_coin.name).get(date=add_coin.date)
print('GET: ' + str(coin.name) + ' ' +str(coin.date) + ' ' +str(coin.priceusd) + ' ' +str(coin.pricebtc) + ' ' +str(coin.inflation) + ' ' +str(coin.transactions) + ' ' +str(coin.hashrate) + ' ' +str(coin.stocktoflow) + ' ' +str(coin.supply) + ' ' + ' ' +str(coin.fee) + ' ' + ' ' +str(coin.revenue))
print('updating p2pool')
update_p2pool()
context = {'form': form, 'message': message}
return render(request, 'charts/add_coin.html', context)
else:
message = 'An error has happened. Try again.'
context = {'form': form, 'message': message}
return render(request, 'charts/add_coin.html', context)
context = {'form': form}
return render(request, 'charts/add_coin.html', context)
# Get all history for metrics of a certain coin named as 'symbol'
# Only authorized users can download all price data via URL request
@login_required
def get_history(request, symbol, start_time=None, end_time=None):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
return render(request, 'users/error.html')
update = True
count = 0
priceusd = 0
inflation = 0
pricebtc = 0
stocktoflow = 0
supply = 0
fee = 0
revenue = 0
hashrate = 0
transactions = 0
blocksize = 0
difficulty = 0
with open("settings.json") as file:
data = json.load(file)
file.close()
if not(start_time and end_time):
start_time = '2000-01-01'
end_time = '2100-01-01'
url = data["metrics_provider"][0]["metrics_url_new"] + symbol + '/' + start_time + '/' + end_time
coins = Coin.objects.filter(name=symbol).order_by('-date')
for coin in coins:
if coin.supply > 0:
supply = coin.supply
break
for coin in coins:
if coin.inflation > 0:
inflation = coin.inflation
break
for coin in coins:
if coin.hashrate > 0:
hashrate = coin.hashrate
break
for coin in coins:
if coin.transactions > 0:
transactions = coin.transactions
break
for coin in coins:
if coin.priceusd > 0:
priceusd = coin.priceusd
break
while update:
response = requests.get(url)
data_aux = json.loads(response.text)
data_aux2 = data_aux['data']
for item in data_aux2:
day, hour = str(item['time']).split('T')
day = datetime.datetime.strptime(day, '%Y-%m-%d')
day = datetime.datetime.strftime(day, '%Y-%m-%d')
coin = Coin.objects.filter(name=symbol).filter(date=day)
if coin:
coin.delete()
try:
coin = Coin()
coin.name = symbol
coin.date = day
try:
coin.priceusd = float(item['PriceUSD'])
priceusd = coin.priceusd
except:
coin.priceusd = priceusd
try:
coin.pricebtc = float(item['PriceBTC'])
pricebtc = coin.pricebtc
except:
coin.pricebtc = pricebtc
try:
coin.inflation = float(item['IssContPctAnn'])
coin.stocktoflow = (100/coin.inflation)**1.65
inflation = coin.inflation
stocktoflow = coin.stocktoflow
except:
coin.inflation = inflation
coin.stocktoflow = stocktoflow
try:
coin.supply = float(item['SplyCur'])
supply = coin.supply
except:
coin.supply = supply
try:
coin.fee = float(item['FeeTotNtv'])
fee = coin.fee
except:
coin.fee = fee
try:
coin.revenue = float(item['RevNtv'])
revenue = coin.revenue
except:
coin.revenue = revenue
try:
coin.hashrate = float(item['HashRate'])
hashrate = coin.hashrate
except:
coin.hashrate = hashrate
try:
coin.transactions = float(item['TxCnt'])
transactions = coin.transactions
except:
coin.transactions = transactions
try:
coin.blocksize = float(item['BlkSizeMeanByte'])
blocksize = coin.blocksize
except:
coin.blocksize = blocksize
try:
coin.difficulty = float(item['DiffLast'])
difficulty = coin.difficulty
except:
coin.difficulty = difficulty
coin.save()
count += 1
print(str(symbol) + ' ' + str(coin.date))
except:
pass
try:
url = data["metrics_provider"][0]["metrics_url_new"] + symbol + '/' + start_time + '/' + end_time + '/' + data_aux['next_page_token']
except:
update = False
break
message = 'Total of ' + str(count) + ' data imported'
context = {'message': message}
return render(request, 'charts/maintenance.html', context)
# Populate database with rank history
# Only authorized users can do this
@login_required
def load_rank(request, symbol):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
return render(request, 'users/error.html')
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('Sheet8')
count = 0
values_mat = wks.get_values(start=(3,1), end=(9999,2), returnas='matrix')
print(len(values_mat))
Rank.objects.all().delete()
for k in range(0,len(values_mat)):
if values_mat[k][0] and values_mat[k][1]:
rank = Rank()
rank.name = symbol
rank.date = values_mat[k][0]
rank.rank = int(values_mat[k][1].replace(',', '.'))
if not(rank.rank) and not(rank.date):
break
else:
rank.save()
count += 1
else:
break
message = 'Total of ' + str(count) + ' data imported'
context = {'message': message}
return render(request, 'charts/maintenance.html', context)
# Populate database with p2pool history
# Only authorized users can do this
@login_required
def load_p2pool(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
return render(request, 'users/error.html')
count = 0
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('p2pool')
values_mat = wks.get_values(start=(3,1), end=(9999,6), returnas='matrix')
P2Pool.objects.all().delete()
for k in range(0,len(values_mat)):
if values_mat[k][0] and values_mat[k][1]:
p2pool_stat = P2Pool()
p2pool_stat.date = values_mat[k][0]
p2pool_stat.miners = float(values_mat[k][1].replace(',', '.'))
p2pool_stat.hashrate = float(values_mat[k][2].replace(',', '.'))
p2pool_stat.percentage = float(values_mat[k][3].replace(',', '.'))
p2pool_stat.totalhashes = float(values_mat[k][4].replace(',', '.'))
p2pool_stat.totalblocksfound = float(values_mat[k][5].replace(',', '.'))
p2pool_stat.mini = False
p2pool_stat.save()
count += 1
#print('p2poolmini data saved - ' + str(p2pool_stat.date) + ' - ' + str(p2pool_stat.percentage) + ' - ' + str(p2pool_stat.miners))
else:
break
wks = sh.worksheet_by_title('p2poolmini')
values_mat = wks.get_values(start=(3,1), end=(9999,6), returnas='matrix')
for k in range(0,len(values_mat)):
if values_mat[k][0] and values_mat[k][1]:
p2pool_stat = P2Pool()
p2pool_stat.date = values_mat[k][0]
p2pool_stat.miners = float(values_mat[k][1].replace(',', '.'))
p2pool_stat.hashrate = float(values_mat[k][2].replace(',', '.'))
p2pool_stat.percentage = float(values_mat[k][3].replace(',', '.'))
p2pool_stat.totalhashes = float(values_mat[k][4].replace(',', '.'))
p2pool_stat.totalblocksfound = float(values_mat[k][5].replace(',', '.'))
p2pool_stat.mini = True
p2pool_stat.save()
count += 1
#print('p2poolmini data saved - ' + str(p2pool_stat.date) + ' - ' + str(p2pool_stat.percentage) + ' - ' + str(p2pool_stat.miners))
else:
break
message = 'Total of ' + str(count) + ' data imported'
context = {'message': message}
return render(request, 'charts/maintenance.html', context)
# Populate database with dominance history
# Only authorized users can do this
@login_required
def load_dominance(request, symbol):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
return render(request, 'users/error.html')
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('Sheet7')
count = 0
values_mat = wks.get_values(start=(3,1), end=(9999,2), returnas='matrix')
#print(len(values_mat))
Dominance.objects.all().delete()
for k in range(0,len(values_mat)):
if values_mat[k][0] and values_mat[k][1]:
dominance = Dominance()
dominance.name = symbol
dominance.date = values_mat[k][0]
dominance.dominance = float(values_mat[k][1].replace(',', '.'))
if not(dominance.dominance) and not(dominance.date):
break
else:
dominance.save()
count += 1
else:
break
message = 'Total of ' + str(count) + ' data imported'
context = {'message': message}
return render(request, 'charts/maintenance.html', context)
# Import Reddit history from file on static folder
# Only authorized users can do this
@login_required
def importer(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
return render(request, 'users/error.html')
count = 0
Social.objects.all().delete()
filename = staticfiles_storage.path('import.txt')
with open(filename) as f:
content = f.readlines()
for line in content:
data = json.loads(line)
symbol = data['name']
item = data['subscriberCountTimeSeries']
dates = []
subscriberCount = []
commentsPerHour = []
postsPerHour = []
for unit in item:
date_now = datetime.datetime.strptime('1970-01-01', '%Y-%m-%d')
date_now += timedelta(int(unit['utcDay']))
dates.append(datetime.datetime.strftime(date_now, '%Y-%m-%d'))
value = float(unit['count'])
subscriberCount.append(value)
item = data['commentsPerHourTimeSeries']
for unit in item:
value = float(unit['commentsPerHour'])
commentsPerHour.append(value)
item = data['postsPerHourTimeSeries']
for unit in item:
value = float(unit['postsPerHour'])
postsPerHour.append(value)
for i in range(len(dates)-1):
social = Social()
social.name = symbol
social.date = dates[i]
if i >= len(dates) - len(subscriberCount):
social.subscriberCount = subscriberCount[i-len(subscriberCount)]
else:
social.subscriberCount = 0
if i >= len(dates) - len(commentsPerHour):
social.commentsPerHour = commentsPerHour[i-(len(dates) - len(commentsPerHour))]
else:
social.commentsPerHour = 0
if i >= len(dates) - len(postsPerHour):
social.postsPerHour = postsPerHour[i-(len(dates) - len(postsPerHour))]
else:
social.postsPerHour = 0
social.save()
count += 1
message = 'Total of ' + str(count) + ' data imported'
context = {'message': message}
return render(request, 'charts/maintenance.html', context)
# Erase all data for a certain coin
# Only authorized users can do this
@login_required
def reset(request, symbol):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
return render(request, 'users/error.html')
coins = Coin.objects.filter(name=symbol).all().delete()
message = 'All data for ' + str(symbol) + ' erased'
context = {'message': message}
return render(request, 'charts/maintenance.html', context)
# Populate database with especific chart variables
# Only authorized users can do this
@login_required
def populate_database(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
return render(request, 'users/error.html')
count = 0
###################################################################
# SF model charts
###################################################################
print('Populating database for sfmodel.html, sfmodelin.html and pricesats.html, wait a moment...')
Sfmodel.objects.all().delete()
timevar = 1283
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
previous_supply = 0
supply = 0
sf_aux = 0
count_aux = 0
coins = Coin.objects.order_by('date').filter(name='xmr')
for coin in coins:
if coin.priceusd < 0.1:
coin.priceusd = 0.1
coin.pricebtc = 0.000001
if coin.stocktoflow > sf_aux*1.3+100:
coin.stocktoflow = sf_aux
sf_aux = coin.stocktoflow
if coin.supply > 0:
supply = int(coin.supply)*10**12
else:
supply = previous_supply
count += 1
count_aux += 1
data = Sfmodel()
data.date = coin.date
data.priceusd = coin.priceusd
data.pricebtc = coin.pricebtc
data.stocktoflow = coin.stocktoflow
data.color = 30*coin.pricebtc/(count*delta + v0)
date_aux1 = datetime.datetime.strptime('2017-12-29', '%Y-%m-%d')
date_aux2 = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
date_aux2 = datetime.datetime.strptime(date_aux2, '%Y-%m-%d')
if date_aux2 < date_aux1:
lastprice = coin.priceusd
current_inflation = coin.inflation
data.greyline = 0
count_aux = 0
else:
day = date_aux2 - timedelta(timevar)
coin_aux1 = Coin.objects.filter(name='xmr').get(date=day)
day = date_aux2 - timedelta(timevar+1)
coin_aux2 = Coin.objects.filter(name='xmr').get(date=day)
date_aux3 = datetime.datetime.strptime('2017-12-29', '%Y-%m-%d')
if date_aux3 + timedelta(int(count_aux*2)) < datetime.datetime.strptime('2021-07-03', '%Y-%m-%d'):
day = date_aux3 + timedelta(int(count_aux*2))
coin_aux3 = Coin.objects.filter(name='xmr').get(date=day)
if coin_aux3:
if (coin_aux3.inflation/current_inflation) > 1.2 or (coin_aux3.inflation/current_inflation) < 0.8:
coin_aux3.inflation = current_inflation
else:
current_inflation = coin_aux3.inflation
supply2 = supply
else:
reward2 = (2**64 -1 - supply2) >> 19
if reward2 < 0.6*(10**12):
reward2 = 0.6*(10**12)
supply2 += int(720*reward2)
current_inflation = 100*reward2*720*365/supply2
if coin_aux1 and coin_aux2:
lastprice += (coin_aux1.priceusd/coin_aux2.priceusd-1)*lastprice
actualprice = lastprice*(math.sqrt(coin.inflation/current_inflation))
data.greyline = actualprice
else:
data.greyline = 0
previous_supply = supply
data.save()
count_aux = 0
for count_aux in range(700):
date_now = date.today() + timedelta(count_aux)
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*(10**12)
supply += int(720*reward)
data = Sfmodel()
data.date = datetime.datetime.strftime(date_now, '%Y-%m-%d')
data.stocktoflow = (100/(100*reward*720*365/supply))**1.65
data.priceusd = 0
data.pricebtc = 0
data.greyline = 0
data.color = 0
data.priceusd = 0
data.greyline = 0
data.save()
count += 1
###################################################################
# Daily Emissions, inflation charts and coins against bitcoin
###################################################################
print('Populating database for dailyemission.html and dailyemissionntv.html, wait a moment...')
DailyData.objects.all().delete()
supply_btc = 0
supply_xmr = 0
count_aux = 0
coins_btc = Coin.objects.order_by('date').filter(name='btc')
for coin_btc in coins_btc:
count_aux += 1
data = DailyData()
data.date = datetime.datetime.strftime(coin_btc.date, '%Y-%m-%d')
if coin_btc.blocksize > 0:
data.btc_blocksize = coin_btc.blocksize
data.btc_transactions = coin_btc.transactions
else:
data.btc_blocksize = 0
data.btc_transactions = 0
if coin_btc.difficulty > 0:
data.btc_difficulty = coin_btc.difficulty
else:
data.btc_difficulty = 0
if coin_btc.transactions == 0:
data.btc_transcostusd = 0
data.btc_transcostntv = 0
else:
if coin_btc.fee*coin_btc.priceusd/coin_btc.transactions < 0.0001:
data.btc_transcostusd = 0
data.btc_transcostntv = 0
else:
data.btc_transcostusd = coin_btc.fee*coin_btc.priceusd/coin_btc.transactions
data.btc_transcostntv = coin_btc.fee/coin_btc.transactions
if coin_btc.revenue < 0.000001 or coin_btc.priceusd < 0.001:
data.btc_minerrevntv = 0
data.btc_minerrevusd = 0
data.btc_commitntv = 0
data.btc_commitusd = 0
data.btc_priceusd = 0
data.btc_marketcap = 0
else:
data.btc_minerrevntv = coin_btc.revenue
data.btc_minerrevusd = coin_btc.revenue*coin_btc.priceusd
data.btc_commitntv = coin_btc.hashrate/(coin_btc.revenue)
data.btc_commitusd = coin_btc.hashrate/(coin_btc.revenue*coin_btc.priceusd)
data.btc_priceusd = coin_btc.priceusd
data.btc_marketcap = coin_btc.priceusd*coin_btc.supply
if coin_btc.supply == 0:
data.btc_minerrevcap = 0
else:
data.btc_minerrevcap = 365*100*coin_btc.revenue/coin_btc.supply
if coin_btc.priceusd:
if coin_btc.priceusd/30 > 0.02:
data.btc_return = coin_btc.priceusd/30
else:
data.btc_return = 0
else:
data.btc_return = 0
if coin_btc.inflation > 0:
data.btc_inflation = coin_btc.inflation
else:
data.btc_inflation = 0
if coin_btc.supply > 0:
data.btc_supply = coin_btc.supply
else:
data.btc_supply = 0
if coin_btc.supply - supply_btc < 0.000001:
data.btc_minerfeesntv = 0
data.btc_minerfeesusd = 0
data.btc_emissionntv = 0
else:
data.btc_minerfeesntv = coin_btc.revenue - coin_btc.supply + supply_btc
data.btc_minerfeesusd = (coin_btc.revenue - coin_btc.supply + supply_btc)*coin_btc.priceusd
data.btc_emissionntv = coin_btc.supply - supply_btc
if (coin_btc.supply - supply_btc)*coin_btc.priceusd < 1000:
data.btc_emissionusd = 0
else:
data.btc_emissionusd = (coin_btc.supply - supply_btc)*coin_btc.priceusd
supply_btc = coin_btc.supply
if count_aux > 1750:
coins_xmr = Coin.objects.filter(name='xmr').filter(date=coin_btc.date)
if coins_xmr:
for coin_xmr in coins_xmr:
if coin_xmr.blocksize > 0:
data.xmr_blocksize = coin_xmr.blocksize
else:
data.xmr_blocksize = 0
if coin_xmr.difficulty > 0:
data.xmr_difficulty = coin_xmr.difficulty
else:
data.xmr_difficulty = 0
if coin_xmr.priceusd < 0.001:
data.xmr_pricebtc = 0
data.xmr_priceusd = 0
data.xmr_marketcap = 0
else:
data.xmr_pricebtc = coin_xmr.pricebtc
data.xmr_priceusd = coin_xmr.priceusd
data.xmr_marketcap = coin_xmr.priceusd*coin_xmr.supply
if coin_btc.supply > 0 and coin_btc.transactions > 0:
data.xmr_transactions = coin_xmr.transactions
data.xmr_metcalfeusd = coin_btc.priceusd*coin_xmr.transactions*coin_xmr.supply/(coin_btc.supply*coin_btc.transactions)
data.xmr_metcalfebtc = coin_xmr.transactions*coin_xmr.supply/(coin_btc.supply*coin_btc.transactions)
else:
data.xmr_metcalfeusd = 0
data.xmr_metcalfebtc = 0
data.xmr_transactions = 0
if data.xmr_metcalfeusd < 0.23:
data.xmr_metcalfeusd = 0
data.xmr_metcalfebtc = 0
if coin_xmr.transactions == 0:
data.xmr_transacpercentage = 0
data.xmr_transcostusd = 0
data.xmr_transcostntv = 0
else:
if coin_xmr.fee*coin_xmr.priceusd/coin_xmr.transactions < 0.0001:
data.xmr_transcostusd = 0
data.xmr_transcostntv = 0
else:
data.xmr_transcostusd = coin_xmr.fee*coin_xmr.priceusd/coin_xmr.transactions
data.xmr_transcostntv = coin_xmr.fee/coin_xmr.transactions
if coin_btc.transactions == 0:
data.xmr_transacpercentage = 0
else:
data.xmr_transacpercentage = coin_xmr.transactions/coin_btc.transactions
if coin_xmr.revenue < 0.000001 or coin_xmr.priceusd < 0.001:
data.xmr_minerrevntv = 0
data.xmr_minerrevusd = 0
data.xmr_commitntv = 0
data.xmr_commitusd = 0
else:
data.xmr_minerrevntv = coin_xmr.revenue
data.xmr_minerrevusd = coin_xmr.revenue*coin_xmr.priceusd
data.xmr_commitntv = coin_xmr.hashrate/(coin_xmr.revenue)
data.xmr_commitusd = coin_xmr.hashrate/(coin_xmr.revenue*coin_xmr.priceusd)
if coin_xmr.supply == 0:
data.xmr_minerrevcap = 0
else:
data.xmr_minerrevcap = 365*100*coin_xmr.revenue/coin_xmr.supply
if coin_xmr.priceusd/5.01 > 0.02:
data.xmr_return = coin_xmr.priceusd/5.01
else:
data.xmr_return = 0
if coin_xmr.inflation > 0:
data.xmr_inflation = coin_xmr.inflation
else:
data.xmr_inflation = 0
if coin_xmr.supply > 0:
data.xmr_supply = coin_xmr.supply
else:
data.xmr_supply = 0
if coin_xmr.supply - supply_xmr < 0.000001:
data.xmr_minerfeesntv = 0
data.xmr_minerfeesusd = 0
data.xmr_emissionntv = 0
else:
data.xmr_minerfeesntv = coin_xmr.revenue - coin_xmr.supply + supply_xmr
data.xmr_minerfeesusd = (coin_xmr.revenue - coin_xmr.supply + supply_xmr)*coin_xmr.priceusd
data.xmr_emissionntv = coin_xmr.supply - supply_xmr
if (coin_xmr.supply - supply_xmr)*coin_xmr.priceusd < 1000:
data.xmr_emissionusd = 0
else:
data.xmr_emissionusd = (coin_xmr.supply - supply_xmr)*coin_xmr.priceusd
supply_xmr = coin_xmr.supply
else:
data.xmr_emissionntv = 0
data.xmr_emissionusd = 0
data.xmr_inflation = 0
data.xmr_supply = 0
data.xmr_return = 0
data.xmr_minerrevntv = 0
data.xmr_minerrevusd = 0
data.xmr_minerfeesntv = 0
data.xmr_minerfeesusd = 0
data.xmr_transcostntv = 0
data.xmr_transcostusd = 0
data.xmr_commitntv = 0
data.xmr_commitusd = 0
data.xmr_metcalfeusd = 0
data.xmr_metcalfebtc = 0
data.xmr_pricebtc = 0
data.xmr_priceusd = 0
data.xmr_transacpercentage = 0
data.xmr_marketcap = 0
data.xmr_minerrevcap = 0
data.xmr_transactions = 0
data.xmr_blocksize = 0
data.xmr_difficulty = 0
coins_dash = Coin.objects.filter(name='dash').filter(date=coin_btc.date)
if coins_dash:
for coin_dash in coins_dash:
if coin_dash.transactions > 0:
data.dash_transactions = coin_dash.transactions
else:
data.dash_transactions = 0
if coin_dash.inflation > 0:
data.dash_inflation = coin_dash.inflation
else:
data.dash_inflation = 0
if coin_dash.priceusd > 0:
data.dash_marketcap = coin_dash.priceusd*coin_dash.supply
else:
data.dash_marketcap = 0
else:
data.dash_inflation = 0
data.dash_marketcap = 0
data.dash_transactions = 0
else:
data.xmr_emissionntv = 0
data.xmr_emissionusd = 0
data.xmr_inflation = 0
data.xmr_supply = 0
data.xmr_return = 0
data.dash_inflation = 0
data.dash_marketcap = 0
data.dash_transactions = 0
data.xmr_marketcap = 0
data.xmr_minerrevntv = 0
data.xmr_minerrevusd = 0
data.xmr_minerfeesntv = 0
data.xmr_minerfeesusd = 0
data.xmr_transcostntv = 0
data.xmr_transcostusd = 0
data.xmr_commitntv = 0
data.xmr_commitusd = 0
data.xmr_metcalfeusd = 0
data.xmr_metcalfebtc = 0
data.xmr_pricebtc = 0
data.xmr_priceusd = 0
data.xmr_transacpercentage = 0
data.xmr_minerrevcap = 0
data.xmr_transactions = 0
data.xmr_blocksize = 0
data.xmr_difficulty = 0
if count_aux > 2800:
coins_zcash = Coin.objects.filter(name='zec').filter(date=coin_btc.date)
if coins_zcash:
for coin_zcash in coins_zcash:
if coin_zcash.transactions > 0:
data.zcash_transactions = coin_zcash.transactions
else:
data.zcash_transactions = 0
if coin_zcash.inflation > 0:
data.zcash_inflation = coin_zcash.inflation
else:
data.zcash_inflation = 0
if coin_zcash.priceusd > 0:
data.zcash_marketcap = coin_zcash.priceusd*coin_zcash.supply
else:
data.zcash_marketcap = 0
else:
data.zcash_inflation = 0
data.zcash_marketcap = 0
data.zcash_transactions = 0
else:
data.zcash_inflation = 0
data.zcash_marketcap = 0
data.zcash_transactions = 0
if count_aux > 3600:
coins_grin = Coin.objects.filter(name='grin').filter(date=coin_btc.date)
if coins_grin:
for coin_grin in coins_grin:
if coin_grin.transactions > 0:
data.grin_transactions = coin_grin.transactions
else:
data.grin_transactions = 0
if coin_grin.inflation > 0:
data.grin_inflation = coin_grin.inflation
else:
data.grin_inflation = 0
if coin_grin.priceusd > 0:
data.grin_marketcap = coin_grin.priceusd*coin_grin.supply
else:
data.grin_marketcap = 0
else:
data.grin_inflation = 0
data.grin_marketcap = 0
data.grin_transactions = 0
else:
data.grin_inflation = 0
data.grin_marketcap = 0
data.grin_transactions = 0
socials = Social.objects.filter(name='Bitcoin').filter(date=coin_btc.date)
if socials:
for social in socials:
data.btc_subscriberCount = social.subscriberCount
data.btc_commentsPerHour = social.commentsPerHour
data.btc_postsPerHour = social.postsPerHour
else:
data.btc_subscriberCount = 0
data.btc_commentsPerHour = 0
data.btc_postsPerHour = 0
socials = Social.objects.filter(name='Monero').filter(date=coin_btc.date)
if socials:
for social in socials:
data.xmr_subscriberCount = social.subscriberCount
data.xmr_commentsPerHour = social.commentsPerHour
data.xmr_postsPerHour = social.postsPerHour
else:
data.xmr_subscriberCount = 0
data.xmr_commentsPerHour = 0
data.xmr_postsPerHour = 0
socials = Social.objects.filter(name='CryptoCurrency').filter(date=coin_btc.date)
if socials:
for social in socials:
data.crypto_subscriberCount = social.subscriberCount
data.crypto_commentsPerHour = social.commentsPerHour
data.crypto_postsPerHour = social.postsPerHour
else:
data.crypto_subscriberCount = 0
data.crypto_commentsPerHour = 0
data.crypto_postsPerHour = 0
data.save()
count += 1
message = 'Total of ' + str(count) + ' data generated'
context = {'message': message}
return render(request, 'charts/maintenance.html', context)
# Update database with between certain dates
# Only authorized users can do this
@login_required
def update_database_admin(request, date_from, date_to):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
return render(request, 'users/error.html')
update_database(date_from, date_to)
message = 'Database updated from ' + str(date_from) + ' to ' + str(date_to)
context = {'message': message}
return render(request, 'charts/maintenance.html', context)
###########################################
# Other useful functions
###########################################
# Get most recent metrics from a data provider of your choice for 'symbol'
def get_latest_metrics(symbol, url):
update = True
count = 0
while update:
response = requests.get(url)
data = json.loads(response.text)
data_aux = data['data']
for item in data_aux:
day, hour = str(item['time']).split('T')
day = datetime.datetime.strptime(day, '%Y-%m-%d')
day = datetime.datetime.strftime(day, '%Y-%m-%d')
try:
coin = Coin.objects.filter(name=symbol).get(date=day)
except:
coin = Coin()
try:
coin.name = symbol
coin.date = day
try:
coin.priceusd = float(item['PriceUSD'])
except:
coin.priceusd = 0
try:
coin.pricebtc = float(item['PriceBTC'])
except:
coin.pricebtc = 0
try:
coin.inflation = float(item['IssContPctAnn'])
coin.stocktoflow = (100/coin.inflation)**1.65
except:
coin.inflation = 0
coin.stocktoflow = 0
try:
coin.supply = float(item['SplyCur'])
except:
coin.supply = 0
try:
coin.fee = float(item['FeeTotNtv'])
except:
coin.fee = 0
try:
coin.revenue = float(item['RevNtv'])
except:
coin.revenue = 0
try:
coin.hashrate = float(item['HashRate'])
except:
coin.hashrate = 0
try:
coin.transactions = float(item['TxCnt'])
except:
coin.transactions = 0
coin.save()
count += 1
print(str(symbol) + ' ' + str(coin.date))
except:
pass
try:
url = data['next_page_url']
update = True
except:
update = False
break
return count
# Get daily post on Reddit
def data_prep_posts(subreddit, start_time, end_time, filters, limit):
if(len(filters) == 0):
filters = ['id', 'author', 'created_utc', 'domain', 'url', 'title', 'num_comments']
posts = list(api.search_submissions(subreddit=subreddit, after=start_time, before=end_time, filter=filters, limit=limit))
return pd.DataFrame(posts)
# Get daily comments on Reddit
def data_prep_comments(term, start_time, end_time, filters, limit):
if (len(filters) == 0):
filters = ['id', 'author', 'created_utc','body', 'permalink', 'subreddit']
comments = list(api.search_comments(q=term, after=start_time, before=end_time, filter=filters, limit=limit))
return pd.DataFrame(comments)
# Get latest price data for Monero
def get_latest_price(symbol):
with open("settings.json") as file:
data = json.load(file)
url = data["metrics_provider"][0]["price_url_old"] + symbol
print(url)
parameters = {
'convert':'USD',
}
headers = {
'Accepts': 'application/json',
data["metrics_provider"][0]["api_key_name"]: data["metrics_provider"][0]["api_key_value"],
}
session = Session()
session.headers.update(headers)
try:
response = session.get(url, params=parameters)
print(response)
data = json.loads(response.text)
print('getting latest data')
print(data)
try:
if data['data'][symbol.upper()]['cmc_rank']:
print('new data received')
pass
else:
print('problem with the data provider')
data = False
except:
data = False
except (ConnectionError, Timeout, TooManyRedirects) as e:
data = False
file.close()
return data
# Get latest dominance value and update
def update_dominance(data):
if not(data):
print('error updating dominance')
return False
else:
dominance = Dominance()
dominance.name = 'xmr'
dominance.date = datetime.datetime.strftime(date.today(), '%Y-%m-%d')
dominance.dominance = float(data['data']['XMR']['quote']['USD']['market_cap_dominance'])
dominance.save()
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('Sheet7')
values_mat = wks.get_values(start=(3,1), end=(9999,2), returnas='matrix')
k = len(values_mat)
date_aux = datetime.datetime.strptime(values_mat[k-1][0], '%Y-%m-%d')
date_aux2 = datetime.datetime.strftime(date.today(), '%Y-%m-%d')
date_aux2 = datetime.datetime.strptime(date_aux2, '%Y-%m-%d')
if date_aux < date_aux2:
cell = 'B' + str(k + 3)
wks.update_value(cell, dominance.dominance)
cell = 'A' + str(k + 3)
wks.update_value(cell, dominance.date)
print('spreadsheet updated')
else:
print('spreadsheet already with the latest data')
return False
return data
# Get latest rank value and update
def update_rank(data=None):
if not(data):
data = get_latest_price('xmr')
if not(data):
print('error updating rank')
return False
else:
rank = Rank()
rank.name = 'xmr'
rank.date = datetime.datetime.strftime(date.today(), '%Y-%m-%d')
rank.rank = int(data['data']['XMR']['cmc_rank'])
rank.save()
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('Sheet8')
values_mat = wks.get_values(start=(3,1), end=(9999,2), returnas='matrix')
k = len(values_mat)
date_aux = datetime.datetime.strptime(values_mat[k-1][0], '%Y-%m-%d')
date_aux2 = datetime.datetime.strftime(date.today(), '%Y-%m-%d')
date_aux2 = datetime.datetime.strptime(date_aux2, '%Y-%m-%d')
if date_aux < date_aux2:
cell = 'B' + str(k + 3)
wks.update_value(cell, rank.rank)
cell = 'A' + str(k + 3)
wks.update_value(cell, rank.date)
print('spreadsheet updated')
else:
print('spreadsheet already with the latest data')
return data
return data
# Load Reddit api to check if there are new followers
def check_new_social(symbol):
date_now = datetime.datetime.strftime(date.today(), '%Y-%m-%d')
socials = Social.objects.filter(name=symbol).filter(date=date_now)
if not(socials):
print('getting new data')
request = 'https://www.reddit.com/r/'+ symbol +'/about.json'
response = requests.get(request, headers = {'User-agent': 'Checking new social data'})
data = json.loads(response.content)
data = data['data']
subscribers = data['subscribers']
social = Social()
social.name = symbol
social.date = date_now
social.subscriberCount = subscribers
date_aux = date.today()
date_aux = datetime.datetime.strftime(date_aux, '%Y-%m-%d')
date_aux = datetime.datetime.strptime(date_aux, '%Y-%m-%d')
timestamp1 = int(datetime.datetime.timestamp(date_aux))
timestamp2 = int(timestamp1 - 43200)
limit = 1000
filters = []
data = data_prep_posts(symbol, timestamp2, timestamp1, filters, limit)
print(len(data))
social.postsPerHour = len(data)/12
timestamp2 = int(timestamp1 - 3600)
limit = 1000
data = data_prep_comments(symbol, timestamp2, timestamp1, filters, limit)
print(len(data))
social.commentsPerHour = len(data)/1
social.save()
return True
# Update database DailyData with most recent coin data
def update_database(date_from=None, date_to=None):
date_zero = '2014-05-20'
if not(date_from) or not(date_to):
date_to = date.today()
date_from = date_to - timedelta(5)
amount = date_from - datetime.datetime.strptime(date_zero, '%Y-%m-%d')
else:
print(str(date_from) + ' to ' + str(date_to))
date_from = datetime.datetime.strptime(date_from, '%Y-%m-%d')
date_to = datetime.datetime.strptime(date_to, '%Y-%m-%d')
amount = date_from - datetime.datetime.strptime(date_zero, '%Y-%m-%d')
count = 0
date_aux = date_from
while date_aux <= date_to:
date_aux = date_from + timedelta(count)
date_aux2 = date_aux - timedelta(1)
try:
coin_xmr = Coin.objects.filter(name='xmr').get(date=date_aux)
coin_xmr2 = Coin.objects.filter(name='xmr').get(date=date_aux2)
coin_btc = Coin.objects.filter(name='btc').get(date=date_aux)
coin_btc2 = Coin.objects.filter(name='btc').get(date=date_aux2)
try:
coin_dash = Coin.objects.filter(name='dash').get(date=date_aux)
except:
coin_dash = Coin()
try:
coin_zcash = Coin.objects.filter(name='zec').get(date=date_aux)
except:
coin_zcash = Coin()
try:
coin_grin = Coin.objects.filter(name='grin').get(date=date_aux)
except:
coin_grin = Coin()
if coin_btc.inflation == 0 or coin_xmr.inflation == 0:
return count
count_aux = 0
found = False
while count_aux < 100 and not(found):
try:
date_aux2 = date_aux - timedelta(count_aux)
social_btc = Social.objects.filter(name='Bitcoin').get(date=date_aux2)
social_xmr = Social.objects.filter(name='Monero').get(date=date_aux2)
social_crypto = Social.objects.filter(name='CryptoCurrency').get(date=date_aux2)
found = True
except:
count_aux += 1
found = False
except:
return count
try:
data = Sfmodel.objects.get(date=coin_xmr.date)
except:
data = Sfmodel()
data.priceusd = 0
data.pricebtc = 0
data.stocktoflow = 0
data.greyline = 0
data.color = 0
data.date = coin_xmr.date
data.pricebtc = coin_xmr.pricebtc
data.priceusd = coin_xmr.priceusd
if data.stocktoflow == 0 and coin_xmr.supply > 0:
supply = int(coin_xmr.supply)*10**12
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*(10**12)
inflation = 100*reward*720*365/supply
data.stocktoflow = (100/(inflation))**1.65
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
data.color = 30*coin_xmr.pricebtc/((amount.days)*delta + v0)
amount += timedelta(1)
data.save()
try:
data = DailyData.objects.get(date=coin_xmr.date)
except:
data = DailyData()
# Date field
data.date = coin_xmr.date
# Basic information
data.btc_priceusd = 0
data.xmr_priceusd = 0
data.xmr_pricebtc = 0
# Marketcap charts
data.btc_marketcap = 0
data.xmr_marketcap = 0
data.dash_marketcap = 0
data.grin_marketcap = 0
data.zcash_marketcap = 0
# Transactions charts
data.xmr_transacpercentage = 0
data.btc_transactions = 0
data.zcash_transactions = 0
data.dash_transactions = 0
data.grin_transactions = 0
data.xmr_transactions = 0
data.btc_supply = 0
data.xmr_supply = 0
# Issuance charts
data.btc_inflation = 0
data.xmr_inflation = 0
data.dash_inflation = 0
data.grin_inflation = 0
data.zcash_inflation = 0
data.xmr_metcalfebtc = 0
data.xmr_metcalfeusd = 0
data.btc_return = 0
data.xmr_return = 0
data.btc_emissionusd = 0
data.btc_emissionntv = 0
data.xmr_emissionusd = 0
data.xmr_emissionntv = 0
# Mining charts
data.btc_minerrevntv = 0
data.xmr_minerrevntv = 0
data.btc_minerrevusd = 0
data.xmr_minerrevusd = 0
data.btc_minerfeesntv = 0
data.xmr_minerfeesntv = 0
data.btc_minerfeesusd = 0
data.xmr_minerfeesusd = 0
data.btc_transcostntv = 0
data.xmr_transcostntv = 0
data.btc_transcostusd = 0
data.xmr_transcostusd = 0
data.xmr_minerrevcap = 0
data.btc_minerrevcap = 0
data.btc_commitntv = 0
data.xmr_commitntv = 0
data.btc_commitusd = 0
data.xmr_commitusd = 0
data.btc_blocksize = 0
data.xmr_blocksize = 0
data.btc_difficulty = 0
data.xmr_difficulty = 0
# Reddit charts
data.btc_subscriberCount = 0
data.btc_commentsPerHour = 0
data.btc_postsPerHour = 0
data.xmr_subscriberCount = 0
data.xmr_commentsPerHour = 0
data.xmr_postsPerHour = 0
data.crypto_subscriberCount = 0
data.crypto_commentsPerHour = 0
data.crypto_postsPerHour = 0
# Date field
data.date = coin_xmr.date
# Basic information
data.btc_priceusd = coin_btc.priceusd
data.xmr_priceusd = coin_xmr.priceusd
data.xmr_pricebtc = coin_xmr.pricebtc
# Marketcap charts
data.btc_marketcap = coin_btc.priceusd*coin_btc.supply
data.xmr_marketcap = coin_xmr.priceusd*coin_xmr.supply
data.dash_marketcap = coin_dash.priceusd*coin_dash.supply
data.grin_marketcap = coin_grin.priceusd*coin_grin.supply
data.zcash_marketcap = coin_zcash.priceusd*coin_zcash.supply
# Transactions charts
try:
data.xmr_transacpercentage = coin_xmr.transactions/coin_btc.transactions
except:
pass
data.xmr_transactions = coin_xmr.transactions
data.btc_transactions = coin_btc.transactions
data.zcash_transactions = coin_zcash.transactions
data.dash_transactions = coin_dash.transactions
data.grin_transactions = coin_grin.transactions
data.btc_supply = coin_btc.supply
data.xmr_supply = coin_xmr.supply
# Issuance charts
data.btc_inflation = coin_btc.inflation
data.xmr_inflation = coin_xmr.inflation
data.dash_inflation = coin_dash.inflation
data.grin_inflation = coin_grin.inflation
data.zcash_inflation = coin_zcash.inflation
try:
data.xmr_metcalfebtc = coin_xmr.transactions*coin_xmr.supply/(coin_btc.supply*coin_btc.transactions)
data.xmr_metcalfeusd = coin_btc.priceusd*coin_xmr.transactions*coin_xmr.supply/(coin_btc.supply*coin_btc.transactions)
except:
pass
data.btc_return = coin_btc.priceusd/30
data.xmr_return = coin_xmr.priceusd/5.01
data.btc_emissionusd = (coin_btc.supply - coin_btc2.supply)*coin_btc.priceusd
data.btc_emissionntv = coin_btc.supply - coin_btc2.supply
data.xmr_emissionusd = (coin_xmr.supply - coin_xmr2.supply)*coin_xmr.priceusd
data.xmr_emissionntv = coin_xmr.supply - coin_xmr2.supply
# Mining charts
data.btc_minerrevntv = coin_btc.revenue
data.xmr_minerrevntv = coin_xmr.revenue
data.btc_minerrevusd = coin_btc.revenue*coin_btc.priceusd
data.xmr_minerrevusd = coin_xmr.revenue*coin_xmr.priceusd
data.btc_minerfeesntv = coin_btc.revenue - coin_btc.supply + coin_btc2.supply
data.xmr_minerfeesntv = coin_xmr.revenue - coin_xmr.supply + coin_xmr2.supply
data.btc_minerfeesusd = (coin_btc.revenue - coin_btc.supply + coin_btc2.supply)*coin_btc.priceusd
data.xmr_minerfeesusd = (coin_xmr.revenue - coin_xmr.supply + coin_xmr2.supply)*coin_xmr.priceusd
try:
data.btc_transcostntv = coin_btc.fee/coin_btc.transactions
data.xmr_transcostntv = coin_xmr.fee/coin_xmr.transactions
data.btc_transcostusd = coin_btc.priceusd*coin_btc.fee/coin_btc.transactions
data.xmr_transcostusd = coin_xmr.priceusd*coin_xmr.fee/coin_xmr.transactions
except:
pass
try:
data.xmr_minerrevcap = 365*100*coin_xmr.revenue/coin_xmr.supply
data.btc_minerrevcap = 365*100*coin_btc.revenue/coin_btc.supply
except:
pass
try:
data.btc_commitntv = coin_btc.hashrate/(coin_btc.revenue)
data.xmr_commitntv = coin_xmr.hashrate/(coin_xmr.revenue)
data.btc_commitusd = coin_btc.hashrate/(coin_btc.revenue*coin_btc.priceusd)
data.xmr_commitusd = coin_xmr.hashrate/(coin_xmr.revenue*coin_xmr.priceusd)
except:
pass
try:
data.btc_blocksize = coin_btc.blocksize
data.xmr_blocksize = coin_xmr.blocksize
data.btc_difficulty = coin_btc.difficulty
data.xmr_difficulty = coin_xmr.difficulty
except:
pass
# Reddit charts
try:
data.btc_subscriberCount = social_btc.subscriberCount
data.btc_commentsPerHour = social_btc.commentsPerHour
data.btc_postsPerHour = social_btc.postsPerHour
data.xmr_subscriberCount = social_xmr.subscriberCount
data.xmr_commentsPerHour = social_xmr.commentsPerHour
data.xmr_postsPerHour = social_xmr.postsPerHour
data.crypto_subscriberCount = social_crypto.subscriberCount
data.crypto_commentsPerHour = social_crypto.commentsPerHour
data.crypto_postsPerHour = social_crypto.postsPerHour
except:
data.btc_subscriberCount = 0
data.btc_commentsPerHour = 0
data.btc_postsPerHour = 0
data.xmr_subscriberCount = 0
data.xmr_commentsPerHour = 0
data.xmr_postsPerHour = 0
data.crypto_subscriberCount = 0
data.crypto_commentsPerHour = 0
data.crypto_postsPerHour = 0
data.save()
print(str(coin_xmr.date) + ' - ' + str(int(coin_xmr.supply)) + ' xmr @ ' + str(coin_xmr.priceusd) + ' = ' + str(int(data.xmr_marketcap)) + ' => ' + str(coin_xmr.inflation))
count += 1
return count
# Get latest P2Pool data
def update_p2pool():
today = date.today()
yesterday = date.today() - timedelta(1)
try:
p2pool_stat = P2Pool.objects.filter(mini=False).get(date=today)
print('achou p2pool de hoje')
if p2pool_stat.percentage > 0:
print('porcentagem > 0')
update = False
else:
print('porcentagem < 0')
p2pool_stat.delete()
try:
coin = Coin.objects.filter(name='xmr').get(date=yesterday)
print('achou coin de ontem')
if coin.hashrate > 0:
update = True
else:
update = False
except:
print('nao achou coin de ontem')
update = False
except:
print('nao achou p2pool de hoje')
try:
coin = Coin.objects.filter(name='xmr').get(date=yesterday)
if coin.hashrate > 0:
update = True
else:
update = False
except:
update = False
if update:
p2pool_stat = P2Pool()
p2pool_stat.date = today
response = requests.get('https://p2pool.io/api/pool/stats')
data = json.loads(response.text)
p2pool_stat.hashrate = data['pool_statistics']['hashRate']
p2pool_stat.percentage = 100*data['pool_statistics']['hashRate']/coin.hashrate
p2pool_stat.miners = data['pool_statistics']['miners']
p2pool_stat.totalhashes = data['pool_statistics']['totalHashes']
p2pool_stat.totalblocksfound = data['pool_statistics']['totalBlocksFound']
p2pool_stat.mini = False
p2pool_stat.save()
print('p2pool saved!')
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('p2pool')
values_mat = wks.get_values(start=(3,1), end=(9999,3), returnas='matrix')
k = len(values_mat)
date_aux = datetime.datetime.strptime(values_mat[k-1][0], '%Y-%m-%d')
date_aux2 = datetime.datetime.strftime(date.today(), '%Y-%m-%d')
date_aux2 = datetime.datetime.strptime(date_aux2, '%Y-%m-%d')
if date_aux < date_aux2:
cell = 'F' + str(k + 3)
wks.update_value(cell, p2pool_stat.totalblocksfound)
cell = 'E' + str(k + 3)
wks.update_value(cell, p2pool_stat.totalhashes)
cell = 'D' + str(k + 3)
wks.update_value(cell, p2pool_stat.percentage)
cell = 'C' + str(k + 3)
wks.update_value(cell, p2pool_stat.hashrate)
cell = 'B' + str(k + 3)
wks.update_value(cell, p2pool_stat.miners)
cell = 'A' + str(k + 3)
wks.update_value(cell, datetime.datetime.strftime(p2pool_stat.date, '%Y-%m-%d'))
print('spreadsheet updated')
else:
print('spreadsheet already with the latest data')
return data
today = date.today()
yesterday = date.today() - timedelta(1)
try:
p2pool_stat = P2Pool.objects.filter(mini=True).get(date=today)
print('achou p2pool_mini de hoje')
if p2pool_stat.percentage > 0:
print('porcentagem > 0')
update = False
else:
print('porcentagem < 0')
p2pool_stat.delete()
try:
coin = Coin.objects.filter(name='xmr').get(date=yesterday)
print('achou coin de ontem')
if coin.hashrate > 0:
update = True
else:
update = False
except:
print('nao achou coin de ontem')
update = False
except:
print('nao achou p2pool_mini de hoje')
try:
coin = Coin.objects.filter(name='xmr').get(date=yesterday)
if coin.hashrate > 0:
update = True
else:
update = False
except:
update = False
if update:
p2pool_stat = P2Pool()
p2pool_stat.date = today
response = requests.get('https://p2pool.io/mini/api/pool/stats')
data = json.loads(response.text)
p2pool_stat.hashrate = data['pool_statistics']['hashRate']
p2pool_stat.percentage = 100*data['pool_statistics']['hashRate']/coin.hashrate
p2pool_stat.miners = data['pool_statistics']['miners']
p2pool_stat.totalhashes = data['pool_statistics']['totalHashes']
p2pool_stat.totalblocksfound = data['pool_statistics']['totalBlocksFound']
p2pool_stat.mini = True
p2pool_stat.save()
print('p2pool_mini saved!')
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('p2poolmini')
values_mat = wks.get_values(start=(3,1), end=(9999,3), returnas='matrix')
k = len(values_mat)
date_aux = datetime.datetime.strptime(values_mat[k-1][0], '%Y-%m-%d')
date_aux2 = datetime.datetime.strftime(date.today(), '%Y-%m-%d')
date_aux2 = datetime.datetime.strptime(date_aux2, '%Y-%m-%d')
if date_aux < date_aux2:
cell = 'F' + str(k + 3)
wks.update_value(cell, p2pool_stat.totalblocksfound)
cell = 'E' + str(k + 3)
wks.update_value(cell, p2pool_stat.totalhashes)
cell = 'D' + str(k + 3)
wks.update_value(cell, p2pool_stat.percentage)
cell = 'C' + str(k + 3)
wks.update_value(cell, p2pool_stat.hashrate)
cell = 'B' + str(k + 3)
wks.update_value(cell, p2pool_stat.miners)
cell = 'A' + str(k + 3)
wks.update_value(cell, datetime.datetime.strftime(p2pool_stat.date, '%Y-%m-%d'))
print('spreadsheet updated')
else:
print('spreadsheet already with the latest data')
return data
return True
###########################################
# Views
###########################################
async def index(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(True)
###################################################################################
dt = datetime.datetime.now(timezone.utc).timestamp()
###################################################################################
now = int(datetime.datetime.now().strftime("%H"))
yesterday = datetime.datetime.strftime(date.today() - timedelta(1), '%Y-%m-%d')
update_xmr = False
update_btc = False
if now > 1:
try:
coin_xmr = Coin.objects.filter(name='xmr').get(date=yesterday)
if coin_xmr:
print('xmr found yesterday')
if coin_xmr.transactions > 0 and coin_xmr.inflation > 0:
print('no need to update xmr')
update_xmr = False
else:
coin_xmr.delete()
update_xmr = True
else:
print('no xmr found yesterday - 1')
update_xmr = True
except:
print('no xmr found yesterday - 2')
update_xmr = True
if now > 5:
try:
coin_btc = Coin.objects.filter(name='btc').get(date=yesterday)
if coin_btc:
print('btc found yesterday')
if coin_btc.transactions > 0 and coin_btc.inflation > 0:
print('no need to update btc')
update_btc = False
else:
coin_btc.delete()
update_btc = True
else:
print('no btc found yesterday - 1')
update_btc = True
except:
print('no btc found yesterday - 2')
update_btc = True
coins_xmr = Coin.objects.filter(name='xmr').order_by('-date')
for coin_xmr in coins_xmr:
if coin_xmr.supply > 0:
break
if update_xmr:
await update_xmr_data(yesterday, coin_xmr)
if update_btc:
await update_others_data(yesterday)
###################################################################################
#supply = locale.format('%.0f', supply, grouping=True)
#inflation = locale.format('%.2f', inflation, grouping=True)+'%'
dt = 'index.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {}#'inflation': inflation, 'supply': supply}
return render(request, 'charts/index.html', context)
def pt(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(True)
symbol = 'xmr'
rank = list(Rank.objects.order_by('-date'))[0]
if rank.date < date.today():
data = update_rank()
dominance = list(Dominance.objects.order_by('-date'))[0]
if dominance.date < date.today():
data = update_dominance(data)
coin = list(Coin.objects.filter(name=symbol).order_by('-date'))[0]
if coin:
now_inflation = coin.inflation
supply = int(coin.supply)*10**12
now_units = supply/(10**12)
else:
message = 'Website under maintenance. Check back in a few minutes'
context = {'message': message}
return render(request, 'charts/maintenance.html', context)
now_units = locale.format('%.0f', now_units, grouping=True)
now_inflation = locale.format('%.2f', now_inflation, grouping=True)+'%'
context = {'now_inflation': now_inflation, 'now_units': now_units}
return render(request, 'charts/pt.html', context)
def fr(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(True)
symbol = 'xmr'
rank = list(Rank.objects.order_by('-date'))[0]
if rank.date < date.today():
data = update_rank()
dominance = list(Dominance.objects.order_by('-date'))[0]
if dominance.date < date.today():
data = update_dominance(data)
coin = list(Coin.objects.filter(name=symbol).order_by('-date'))[0]
if coin:
now_inflation = coin.inflation
supply = int(coin.supply)*10**12
now_units = supply/(10**12)
else:
message = 'Website under maintenance. Check back in a few minutes'
context = {'message': message}
return render(request, 'charts/maintenance.html', context)
now_units = locale.format('%.0f', now_units, grouping=True)
now_inflation = locale.format('%.2f', now_inflation, grouping=True)+'%'
context = {'now_inflation': now_inflation, 'now_units': now_units}
return render(request, 'charts/fr.html', context)
def social(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
dates = []
dates2 = []
social_xmr = []
social_crypto = []
social_btc = []
last_xmr = 0
last_btc = 0
last_crypto = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
dates2.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_subscriberCount > last_btc:
social_btc.append(item.btc_subscriberCount)
last_btc = item.btc_subscriberCount
else:
social_btc.append(last_btc)
if item.xmr_subscriberCount > last_xmr:
social_xmr.append(item.xmr_subscriberCount)
last_xmr = item.xmr_subscriberCount
else:
social_xmr.append(last_xmr)
if item.crypto_subscriberCount > last_crypto:
social_crypto.append(item.crypto_subscriberCount)
last_crypto = item.crypto_subscriberCount
else:
social_crypto.append(last_crypto)
last_xmr = locale.format('%.0f', last_xmr, grouping=True)
last_btc = locale.format('%.0f', last_btc, grouping=True)
last_crypto = locale.format('%.0f', last_crypto, grouping=True)
dt = 'social.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'dates2': dates2, 'social_xmr': social_xmr, 'social_crypto': social_crypto, 'social_btc': social_btc, 'last_xmr': last_xmr, 'last_btc': last_btc, 'last_crypto': last_crypto}
return render(request, 'charts/social.html', context)
def social2(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
dates = []
social_btc = []
last_btc = 0
dates2 = []
social_xmr = []
last_xmr = 0
N = 1
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
dates2.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_subscriberCount > 0:
if item.btc_marketcap > 10000:
last_btc = ((item.btc_marketcap)**N)/item.btc_subscriberCount
social_btc.append(last_btc)
else:
social_btc.append('')
else:
social_btc.append(last_btc)
if item.xmr_subscriberCount > 0:
if item.xmr_marketcap > 10000:
last_xmr = ((item.xmr_marketcap)**N)/item.xmr_subscriberCount
social_xmr.append(last_xmr)
else:
social_xmr.append('')
else:
social_xmr.append(last_xmr)
last_xmr = '$' + locale.format('%.0f', last_xmr, grouping=True)
last_btc = '$' + locale.format('%.0f', last_btc, grouping=True)
dt = 'social2.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'dates2': dates2, 'social_btc': social_btc, 'social_xmr': social_xmr, 'last_xmr': last_xmr, 'last_btc': last_btc}
return render(request, 'charts/social2.html', context)
def social3(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
dates = []
social_xmr = []
social_crypto = []
last_xmr = 0
last_crypto = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_subscriberCount > 0 and item.xmr_subscriberCount > 0:
last_xmr = 100*(item.xmr_subscriberCount/item.btc_subscriberCount)
social_xmr.append(last_xmr)
else:
social_xmr.append(last_xmr)
if item.btc_subscriberCount > 0 and item.crypto_subscriberCount > 0:
last_crypto = 100*(item.crypto_subscriberCount/item.btc_subscriberCount)
social_crypto.append(last_crypto)
else:
social_crypto.append(last_crypto)
last_xmr = locale.format('%.1f', last_xmr, grouping=True)+ '%'
last_crypto = locale.format('%.1f', last_crypto, grouping=True)+ '%'
dt = 'social3.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'social_xmr': social_xmr, 'social_crypto': social_crypto, 'last_xmr': last_xmr, 'last_crypto': last_crypto}
return render(request, 'charts/social3.html', context)
def social4(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
dates = []
dates2 = []
social_xmr = []
social_crypto = []
social_btc = []
last_xmr = 0
last_btc = 0
last_crypto = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
dates2.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_subscriberCount > last_btc:
social_btc.append(item.btc_subscriberCount)
last_btc = item.btc_subscriberCount
else:
social_btc.append(last_btc)
if item.xmr_subscriberCount > last_xmr:
social_xmr.append(item.xmr_subscriberCount)
last_xmr = item.xmr_subscriberCount
else:
social_xmr.append(last_xmr)
if item.crypto_subscriberCount > last_crypto:
social_crypto.append(item.crypto_subscriberCount)
last_crypto = item.crypto_subscriberCount
else:
social_crypto.append(last_crypto)
N = 30
last_btc = ''
speed_btc = []
for i in range(len(social_btc)):
if i < N:
speed_btc.append(last_btc)
else:
if social_btc[i-N] != 0 and social_btc[i] - social_btc[i-N] != 0:
last_btc = 100*(social_btc[i] - social_btc[i-N])/social_btc[i-N]
if last_btc < 0.2:
last_btc = 0.2
if last_btc > 1000:
last_btc = ''
else:
last_btc = ''
speed_btc.append(last_btc)
last_btc = ''
newcomers_btc = []
for i in range(len(social_btc)):
if i < N:
newcomers_btc.append(last_btc)
else:
last_btc = (social_btc[i] - social_btc[i-N])
if last_btc < 10:
last_btc = ''
newcomers_btc.append(last_btc)
last_crypto = ''
speed_crypto = []
for i in range(len(social_crypto)):
if i < N:
speed_crypto.append(last_crypto)
else:
if social_crypto[i-N] != 0 and social_crypto[i] - social_crypto[i-N] != 0:
last_crypto = 100*(social_crypto[i] - social_crypto[i-N])/social_crypto[i-N]
if last_crypto < 0.2:
last_crypto = 0.2
if last_crypto > 1000:
last_crypto = ''
else:
last_crypto = ''
speed_crypto.append(last_crypto)
last_crypto = ''
newcomers_crypto = []
for i in range(len(social_crypto)):
if i < N:
newcomers_crypto.append(last_crypto)
else:
last_crypto = (social_crypto[i] - social_crypto[i-N])
if last_crypto < 2:
last_crypto = ''
newcomers_crypto.append(last_crypto)
last_xmr = ''
speed_xmr = []
for i in range(len(social_xmr)):
if i < N:
speed_xmr.append(last_xmr)
else:
if social_xmr[i-N] != 0 and social_xmr[i] - social_xmr[i-N] != 0:
last_xmr = 100*(social_xmr[i] - social_xmr[i-N])/social_xmr[i-N]
if last_xmr < 0.2:
last_xmr = 0.2
if last_xmr > 1000:
last_xmr = ''
else:
last_xmr = ''
speed_xmr.append(last_xmr)
last_xmr = ''
newcomers_xmr = []
for i in range(len(social_xmr)):
if i < N:
newcomers_xmr.append(last_xmr)
else:
last_xmr = (social_xmr[i] - social_xmr[i-N])
if last_xmr < 0:
last_xmr = ''
newcomers_xmr.append(last_xmr)
last_xmr = locale.format('%.0f', last_xmr, grouping=True)
last_btc = locale.format('%.0f', last_btc, grouping=True)
last_crypto = locale.format('%.0f', last_crypto, grouping=True)
dt = 'social4.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'speed_xmr': speed_xmr, 'speed_crypto': speed_crypto, 'speed_btc': speed_btc, 'newcomers_xmr': newcomers_xmr, 'newcomers_btc': newcomers_btc, 'newcomers_crypto': newcomers_crypto, 'last_xmr': last_xmr, 'last_btc': last_btc, 'last_crypto': last_crypto}
return render(request, 'charts/social4.html', context)
def social5(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
transactions = []
dates = []
social_xmr = []
now_transactions = 0
last_xmr = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.xmr_subscriberCount > last_xmr:
social_xmr.append(item.xmr_subscriberCount)
last_xmr = item.xmr_subscriberCount
else:
social_xmr.append(last_xmr)
if item.xmr_transactions > 300:
now_transactions = item.xmr_transactions
transactions.append(now_transactions)
else:
transactions.append('')
last_xmr = locale.format('%.0f', last_xmr, grouping=True)
now_transactions = locale.format('%.0f', now_transactions, grouping=True)
dt = 'social5.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'social_xmr': social_xmr, 'last_xmr': last_xmr, 'now_transactions': now_transactions, 'transactions': transactions}
return render(request, 'charts/social5.html', context)
def social6(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
dates = []
social_xmr = []
social_crypto = []
social_btc = []
last_xmr = 0
last_btc = 0
last_crypto = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_commentsPerHour*24 < last_btc/4:
social_btc.append(last_btc)
else:
last_btc = item.btc_commentsPerHour*24
social_btc.append(last_btc)
if item.xmr_commentsPerHour*24 < last_xmr/4:
social_xmr.append(last_xmr)
else:
last_xmr = item.xmr_commentsPerHour*24
social_xmr.append(last_xmr)
if item.crypto_commentsPerHour*24 < last_crypto/4:
social_crypto.append(last_crypto)
else:
last_crypto = item.crypto_commentsPerHour*24
social_crypto.append(last_crypto)
last_xmr = locale.format('%.0f', last_xmr, grouping=True)
last_btc = locale.format('%.0f', last_btc, grouping=True)
last_crypto = locale.format('%.0f', last_crypto, grouping=True)
dt = 'social6.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'social_xmr': social_xmr, 'social_crypto': social_crypto, 'social_btc': social_btc, 'last_xmr': last_xmr, 'last_btc': last_btc, 'last_crypto': last_crypto}
return render(request, 'charts/social6.html', context)
def social7(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
dates = []
social_xmr = []
social_crypto = []
social_btc = []
last_xmr = 0
last_btc = 0
last_crypto = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_postsPerHour > 0:
last_btc = item.btc_postsPerHour*24
social_btc.append(last_btc)
else:
social_btc.append(last_btc)
if item.xmr_postsPerHour > 0:
last_xmr = item.xmr_postsPerHour*24
social_xmr.append(last_xmr)
else:
social_xmr.append(last_xmr)
if item.crypto_postsPerHour > 0:
last_crypto = item.crypto_postsPerHour*24
social_crypto.append(last_crypto)
else:
social_crypto.append(last_crypto)
last_xmr = locale.format('%.0f', last_xmr, grouping=True)
last_btc = locale.format('%.0f', last_btc, grouping=True)
last_crypto = locale.format('%.0f', last_crypto, grouping=True)
dt = 'social7.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'social_xmr': social_xmr, 'social_crypto': social_crypto, 'social_btc': social_btc, 'last_xmr': last_xmr, 'last_btc': last_btc, 'last_crypto': last_crypto}
return render(request, 'charts/social7.html', context)
def pricelog(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
now_price = 0
now_sf = 0
now_inflation = 0
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
maximum = 0
supply = 0
dates = []
color = []
values = []
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
dates.append(datetime.datetime.strftime(coin.date, '%Y-%m-%d'))
values.append(coin.priceusd)
if coin.priceusd < 0.01:
coin.priceusd = 0.01
if coin.stocktoflow < 0.1:
coin.stocktoflow = 0.1
now_inflation = coin.inflation
now_price = coin.priceusd
now_sf = coin.stocktoflow
if now_price > maximum:
maximum = now_price
new_color = 30*coin.pricebtc/(count*delta + v0)
color.append(new_color)
supply = int(coin.supply)*10**12
count += 1
count = 0
for count in range(650):
date_now = date.today() + timedelta(count)
dates.append(datetime.datetime.strftime(date_now, '%Y-%m-%d'))
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*( 10**12)
supply += int(720*reward)
now_price = "$"+ locale.format('%.2f', now_price, grouping=True)
now_sf = "$"+ locale.format('%.2f', now_sf, grouping=True)
maximum = "$"+ locale.format('%.2f', maximum, grouping=True)
now_inflation = locale.format('%.2f', now_inflation, grouping=True)+'%'
dt = 'pricelog.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'values': values, 'dates': dates, 'maximum': maximum, 'now_price': now_price, 'now_inflation': now_inflation, 'now_sf': now_sf, 'color': color}
return render(request, 'charts/pricelog.html', context)
def movingaverage(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
dates = []
color = []
values = []
average1 = []
average2 = []
total = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
dates.append(datetime.datetime.strftime(coin.date, '%Y-%m-%d'))
if coin.priceusd < 0.2:
coin.priceusd = 0.2
total += coin.priceusd
values.append(coin.priceusd)
if count < 1460:
aux = total/(730 + count/2)
if aux < 0.2:
aux = 0.2
average1.append(aux)
average2.append(aux*5)
if coin.priceusd > 5*aux:
new_color = 1
if coin.priceusd < aux:
new_color = 0
else:
new_color = coin.priceusd/(5*aux)
color.append(new_color)
else:
color.append(new_color)
count += 1
n = 1460
median = pd.Series(values).rolling(window=n).mean().iloc[n-1:].values
#for count in range(1460):
# average1.append('')
# average2.append('')
for item in median:
average1.append(item)
average2.append(item*5)
dt = 'movingaverage.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'values': values, 'dates': dates, 'color': color, 'average1': average1, 'average2': average2}
return render(request, 'charts/movingaverage.html', context)
def powerlaw(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
now_price = 0
now_sf = 0
now_inflation = 0
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
maximum = 0
dates = []
counter = []
years = []
line3 = []
line2 = []
line1 = []
a3 = 0.00000000000000000009
a2 = 0.0000000000000000000000008
a1 = 0.00000000000000000000000002
b3 = ((math.log(477,10)-math.log(5.01,10))/(math.log(2511,10)-math.log(1231,10)))
b2 = ((math.log(92,10)-math.log(0.23,10))/(math.log(3297,10)-math.log(1468,10)))
b1 = ((math.log(93,10)-math.log(0.39,10))/(math.log(3570,10)-math.log(1755,10)))
color = []
values = []
yearnumber = 2014
days = 1200
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
if coin.priceusd < 0.01:
continue
days += 1
price3 = a3*(days**b3)
price2 = a2*(days**b2)
price1 = a1*(days**b1)
line3.append(price3)
line2.append(price2)
line1.append(price1)
counter.append(days)
if coin.date.year > yearnumber:
yearnumber += 1
years.append(yearnumber)
dates.append(days)
values.append(coin.priceusd)
if coin.priceusd < 0.01:
coin.priceusd = 0.01
if coin.stocktoflow < 0.1:
coin.stocktoflow = 0.1
now_inflation = coin.inflation
now_price = coin.priceusd
now_sf = coin.stocktoflow
if now_price > maximum:
maximum = now_price
new_color = 30*coin.pricebtc/(count*delta + v0)
color.append(new_color)
count += 1
for count in range(1, 3650):
date_now = date.today() + timedelta(count)
values.append('')
days += 1
price3 = a3*(days**b3)
price2 = a2*(days**b2)
price1 = a1*(days**b1)
line3.append(price3)
line2.append(price2)
line1.append(price1)
counter.append(days)
if date_now.year > yearnumber:
yearnumber += 1
years.append(yearnumber)
dates.append(days)
now_price = "$"+ locale.format('%.2f', now_price, grouping=True)
now_sf = "$"+ locale.format('%.2f', now_sf, grouping=True)
maximum = "$"+ locale.format('%.2f', maximum, grouping=True)
now_inflation = locale.format('%.2f', now_inflation, grouping=True)+'%'
dt = 'powerlaw.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'values': values, 'dates': dates, 'maximum': maximum, 'now_price': now_price, 'now_inflation': now_inflation,
'now_sf': now_sf, 'color': color, 'years': years, 'counter': counter, 'line1': line1, 'line2': line2, 'line3': line3}
return render(request, 'charts/powerlaw.html', context)
def pricelin(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
now_price = 0
now_sf = 0
now_inflation = 0
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
maximum = 0
supply = 0
dates = []
color = []
values = []
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
dates.append(datetime.datetime.strftime(coin.date, '%Y-%m-%d'))
values.append(coin.priceusd)
if coin.priceusd < 0.01:
coin.priceusd = 0.01
if coin.stocktoflow < 0.1:
coin.stocktoflow = 0.1
now_inflation = coin.inflation
now_price = coin.priceusd
now_sf = coin.stocktoflow
if now_price > maximum:
maximum = now_price
new_color = 30*coin.pricebtc/(count*delta + v0)
color.append(new_color)
supply = int(coin.supply)*10**12
count += 1
count = 0
for count in range(650):
date_now = date.today() + timedelta(count)
dates.append(datetime.datetime.strftime(date_now, '%Y-%m-%d'))
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*( 10**12)
supply += int(720*reward)
stock = (100/(100*reward*720*365/supply))**1.65
now_price = "$"+ locale.format('%.2f', now_price, grouping=True)
now_sf = "$"+ locale.format('%.2f', now_sf, grouping=True)
maximum = "$"+ locale.format('%.2f', maximum, grouping=True)
now_inflation = locale.format('%.2f', now_inflation, grouping=True)+'%'
dt = 'pricelin.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'values': values, 'dates': dates, 'maximum': maximum, 'now_price': now_price, 'now_inflation': now_inflation, 'now_sf': now_sf, 'color': color}
return render(request, 'charts/pricelin.html', context)
def pricesats(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
color = []
values = []
now_price = 0
maximum = 0
bottom = 1
data = Sfmodel.objects.order_by('date')
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.color != 0:
color.append(item.color)
else:
color.append('')
if item.pricebtc > 0.0001:
values.append(item.pricebtc)
now_price = item.pricebtc
if bottom > item.pricebtc:
bottom = item.pricebtc
if maximum < item.pricebtc:
maximum = item.pricebtc
else:
values.append('')
now_price = locale.format('%.4f', now_price, grouping=True) + ' BTC'
maximum = locale.format('%.4f', maximum, grouping=True) + ' BTC'
bottom = locale.format('%.4f', bottom, grouping=True) + ' BTC'
dt = 'pricesats.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'values': values, 'dates': dates, 'maximum': maximum, 'now_price': now_price, 'color': color, 'bottom': bottom}
return render(request, 'charts/pricesats.html', context)
def pricesatslog(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
color = []
values = []
now_price = 0
maximum = 0
bottom = 1
data = Sfmodel.objects.order_by('date')
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.color != 0:
color.append(item.color)
else:
color.append('')
if item.pricebtc > 0.0001:
values.append(item.pricebtc)
now_price = item.pricebtc
if bottom > item.pricebtc:
bottom = item.pricebtc
if maximum < item.pricebtc:
maximum = item.pricebtc
else:
values.append('')
now_price = locale.format('%.4f', now_price, grouping=True) + ' BTC'
maximum = locale.format('%.4f', maximum, grouping=True) + ' BTC'
bottom = locale.format('%.4f', bottom, grouping=True) + ' BTC'
dt = 'pricesatslog.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'values': values, 'dates': dates, 'maximum': maximum, 'now_price': now_price, 'color': color, 'bottom': bottom}
return render(request, 'charts/pricesatslog.html', context)
def fractal(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
dates1 = []
dates2 = []
cycle1 = []
cycle2 = []
now_multiple = 0
maximum = 0
count1 = 1
count2 = 1
date1_aux = datetime.datetime(2017, 12, 29)
date2_aux = datetime.datetime(2014, 6, 21)
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
date3_aux = datetime.datetime.combine(coin.date, datetime.time(0, 0))
if date3_aux < date1_aux and date3_aux > date2_aux:
cycle1.append(coin.priceusd/5)
dates1.append(count1/12.7)
if (coin.priceusd/5) > maximum:
maximum = coin.priceusd/5
count1 += 1
elif date3_aux > date1_aux:
cycle2.append(coin.priceusd/477.12)
dates2.append(count2/20.7) #24
now_multiple = coin.priceusd/477.12
count2 += 0.86
now_multiple = locale.format('%.2f', now_multiple, grouping=True) + 'x'
maximum = locale.format('%.2f', maximum, grouping=True) + 'x'
dt = 'fractal.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'cycle1': cycle1, 'cycle2': cycle2, 'dates1': dates1, 'dates2': dates2, 'now_multiple': now_multiple, 'maximum': maximum}
return render(request, 'charts/fractal.html', context)
def inflationfractal(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
dates1 = []
dates2 = []
cycle1 = []
cycle2 = []
now_multiple = 0
maximum = 0
current_inflation = 0
start_inflation = 0
count1 = 1
count2 = 1
date1_aux = datetime.datetime(2017, 12, 29)
date2_aux = datetime.datetime(2014, 6, 21)
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
date3_aux = datetime.datetime.combine(coin.date, datetime.time(0, 0))
if date3_aux < date1_aux and date3_aux > date2_aux:
start_inflation = coin.inflation
current_inflation = start_inflation
cycle1.append(coin.priceusd/5)
dates1.append(count1/12.7)
if (coin.priceusd/5) > maximum:
maximum = coin.priceusd/5
count1 += 1
elif date3_aux > date1_aux:
if (coin.inflation/current_inflation) > 1.15 or (coin.inflation/current_inflation) < 0.85:
coin.inflation = current_inflation
else:
current_inflation = coin.inflation
delta = math.sqrt(coin.inflation/start_inflation)
cycle2.append(delta*coin.priceusd/477.12)
dates2.append(count2/20.55) #24
now_multiple = delta*coin.priceusd/477.12
count2 += 0.86
now_multiple = locale.format('%.2f', now_multiple, grouping=True) + 'x'
maximum = locale.format('%.2f', maximum, grouping=True) + 'x'
dt = 'inflationfractal.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'cycle1': cycle1, 'cycle2': cycle2, 'dates1': dates1, 'dates2': dates2, 'now_multiple': now_multiple, 'maximum': maximum}
return render(request, 'charts/inflationfractal.html', context)
def golden(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
dates = []
prices = []
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
firstdate = coin.date
break
day = firstdate - timedelta(350)
for i in range(350):
dates.append(datetime.datetime.strftime(day, '%Y-%m-%d'))
prices.append(0.2)
for coin in coins:
dates.append(datetime.datetime.strftime(coin.date, '%Y-%m-%d'))
if coin.priceusd > 0.2:
prices.append(coin.priceusd)
else:
prices.append(0.2)
n = 350
median = pd.Series(prices).rolling(window=n).mean().iloc[n-1:].values
m_350 = []
m_350_0042 = []
m_350_0060 = []
m_350_0200 = []
m_350_0300 = []
m_350_0500 = []
m_350_0800 = []
m_350_1300 = []
for i in range(350):
m_350.append('')
m_350_0042.append('')
m_350_0060.append('')
m_350_0200.append('')
m_350_0300.append('')
m_350_0500.append('')
m_350_0800.append('')
m_350_1300.append('')
for item in median:
m_350.append(float(item))
m_350_0042.append(float(item)*0.42)
m_350_0060.append(float(item)*0.60)
m_350_0200.append(float(item)*2.00)
m_350_0300.append(float(item)*3.00)
m_350_0500.append(float(item)*5.00)
m_350_0800.append(float(item)*8.00)
m_350_1300.append(float(item)*13.00)
n = 120
median = pd.Series(prices).rolling(window=n).mean().iloc[n-1:].values
m_111 = []
for i in range(120):
m_111.append('')
for item in median:
m_111.append(float(item))
i = 0
down = True
price_cross = []
for price in prices:
if m_111[i] != '' and m_350_0200[i] != '':
if down == True and m_111[i] > m_350_0200[i]:
down = False
price_cross.append(price)
elif price > m_350_0500[i]:
price_cross.append(price)
elif down == False and m_111[i] < m_350_0200[i]:
down = True
else:
price_cross.append('')
else:
price_cross.append('')
i += 1
dt = 'golden.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'prices': prices, 'm_350': m_350, 'm_350_0042': m_350_0042, 'm_350_0060': m_350_0060, 'm_350_0200': m_350_0200, 'm_350_0300': m_350_0300,
'm_350_0500': m_350_0500, 'm_350_0800': m_350_0800, 'm_350_1300': m_350_1300, 'median': median, 'm_111': m_111, 'price_cross': price_cross}
return render(request, 'charts/golden.html', context)
def competitors(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
xmr = []
dash = []
grin = []
zcash = []
count = 0
now_xmr = 0
now_dash = 0
now_grin = 0
now_zcash = 0
count = 0
coins_xmr = Coin.objects.order_by('date').filter(name='xmr')
for coin_xmr in coins_xmr:
if coin_xmr.priceusd:
if count > 30:
xmr.append(coin_xmr.priceusd/5.01)
now_xmr = coin_xmr.priceusd/5.01
dates.append(count)
count += 1
elif count <= 63:
continue
else:
xmr.append('')
count = 0
coins_dash = Coin.objects.order_by('date').filter(name='dash')
for coin_dash in coins_dash:
count += 1
if coin_dash.priceusd and count > 130:
dash.append(coin_dash.priceusd/14.7)
now_dash = coin_dash.priceusd/14.7
elif count <= 130:
continue
else:
dash.append('')
dates.append(count)
count = 0
coins_grin = Coin.objects.order_by('date').filter(name='grin')
for coin_grin in coins_grin:
count += 1
if coin_grin.priceusd and count > 155:
grin.append(coin_grin.priceusd/6.37)
now_grin = coin_grin.priceusd/6.37
elif count <= 155:
continue
else:
grin.append('')
dates.append(count)
count = 0
coins_zcash = Coin.objects.order_by('date').filter(name='zec')
for coin_zcash in coins_zcash:
count += 1
if coin_zcash.priceusd and count > 434:
zcash.append(coin_zcash.priceusd/750)
now_zcash = coin_zcash.priceusd/750
elif count <= 434:
continue
else:
zcash.append('')
dates.append(count)
now_dash = locale.format('%.2f', now_dash, grouping=True)
now_grin = locale.format('%.2f', now_grin, grouping=True)
now_zcash = locale.format('%.2f', now_zcash, grouping=True)
now_xmr = locale.format('%.2f', now_xmr, grouping=True)
dt = 'competitors.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'xmr': xmr, 'dash': dash, 'grin': grin, 'zcash': zcash, 'now_xmr': now_xmr,
'now_dash': now_dash, 'now_grin': now_grin, 'now_zcash': now_zcash, 'dates': dates}
return render(request, 'charts/competitors.html', context)
def competitorslin(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
xmr = []
dash = []
grin = []
zcash = []
count = 0
now_xmr = 0
now_dash = 0
now_grin = 0
now_zcash = 0
count = 0
coins_xmr = Coin.objects.order_by('date').filter(name='xmr')
for coin_xmr in coins_xmr:
if coin_xmr.priceusd:
if count > 30:
xmr.append(coin_xmr.priceusd/5.01)
now_xmr = coin_xmr.priceusd/5.01
dates.append(count)
count += 1
elif count <= 63:
continue
else:
xmr.append('')
count = 0
coins_dash = Coin.objects.order_by('date').filter(name='dash')
for coin_dash in coins_dash:
count += 1
if coin_dash.priceusd and count > 130:
dash.append(coin_dash.priceusd/14.7)
now_dash = coin_dash.priceusd/14.7
elif count <= 130:
continue
else:
dash.append('')
dates.append(count)
count = 0
coins_grin = Coin.objects.order_by('date').filter(name='grin')
for coin_grin in coins_grin:
count += 1
if coin_grin.priceusd and count > 155:
grin.append(coin_grin.priceusd/6.37)
now_grin = coin_grin.priceusd/6.37
elif count <= 155:
continue
else:
grin.append('')
dates.append(count)
count = 0
coins_zcash = Coin.objects.order_by('date').filter(name='zec')
for coin_zcash in coins_zcash:
count += 1
if coin_zcash.priceusd and count > 434:
zcash.append(coin_zcash.priceusd/750)
now_zcash = coin_zcash.priceusd/750
elif count <= 434:
continue
else:
zcash.append('')
dates.append(count)
now_dash = locale.format('%.2f', now_dash, grouping=True)
now_grin = locale.format('%.2f', now_grin, grouping=True)
now_zcash = locale.format('%.2f', now_zcash, grouping=True)
now_xmr = locale.format('%.2f', now_xmr, grouping=True)
dt = 'competitorslin.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'xmr': xmr, 'dash': dash, 'grin': grin, 'zcash': zcash, 'now_xmr': now_xmr,
'now_dash': now_dash, 'now_grin': now_grin, 'now_zcash': now_zcash, 'dates': dates}
return render(request, 'charts/competitorslin.html', context)
def marketcap(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
dates = []
xmr = []
dash = []
grin = []
zcash = []
now_xmr = 0
now_dash = 0
now_grin = 0
now_zcash = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.zcash_marketcap > 1000000:
zcash.append(item.zcash_marketcap)
now_zcash = item.zcash_marketcap
else:
zcash.append('')
if item.dash_marketcap > 1000000:
dash.append(item.dash_marketcap)
now_dash = item.dash_marketcap
else:
dash.append('')
if item.xmr_marketcap > 1000000:
xmr.append(item.xmr_marketcap)
now_xmr = item.xmr_marketcap
else:
xmr.append('')
if item.grin_marketcap > 1000000:
grin.append(item.grin_marketcap)
now_grin = item.grin_marketcap
else:
grin.append('')
now_dash = '$'+locale.format('%.0f', now_dash, grouping=True)
now_grin = '$'+locale.format('%.0f', now_grin, grouping=True)
now_zcash = '$'+locale.format('%.0f', now_zcash, grouping=True)
now_xmr = '$'+locale.format('%.0f', now_xmr, grouping=True)
dt = 'marketcap.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'xmr': xmr, 'dash': dash, 'grin': grin, 'zcash': zcash, 'now_xmr': now_xmr,
'now_dash': now_dash, 'now_grin': now_grin, 'now_zcash': now_zcash, 'dates': dates}
return render(request, 'charts/marketcap.html', context)
def inflationreturn(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
count = 0
xmr = []
dash = []
grin = []
zcash = []
btc = []
now_xmr = 0
now_dash = 0
now_grin = 0
now_zcash = 0
now_btc = 0
inflation_xmr = []
inflation_dash = []
inflation_grin = []
inflation_zcash = []
inflation_btc = []
lastxmrA = 0
lastxmrB = 0
count = 0
coins = Coin.objects.order_by('date').filter(name='xmr')
for coin in coins:
count += 1
if coin.priceusd and count > 30 and coin.inflation > 0:
now_xmr = coin.priceusd/5.01
#correcao de um erro nos dados
if 100/coin.inflation > 110 and now_xmr < 10:
xmr.append(lastxmrA)
inflation_xmr.append(lastxmrB)
else:
xmr.append(now_xmr)
inflation_xmr.append(100/coin.inflation)
lastxmrA = now_xmr
lastxmrB = 100/coin.inflation
count = 0
coins = Coin.objects.order_by('date').filter(name='dash')
for coin in coins:
count += 1
if coin.priceusd and count > 130 and coin.inflation > 0:
now_dash = coin.priceusd/14.7
dash.append(now_dash)
inflation_dash.append(100/coin.inflation)
count = 0
coins = Coin.objects.order_by('date').filter(name='grin')
for coin in coins:
count += 1
if coin.priceusd and count > 155 and coin.inflation > 0:
now_grin = coin.priceusd/6.37
grin.append(now_grin)
inflation_grin.append(100/coin.inflation)
count = 0
coins = Coin.objects.order_by('date').filter(name='zec')
for coin in coins:
count += 1
if coin.priceusd and count > 434 and coin.inflation > 0:
now_zcash = coin.priceusd/750
zcash.append(now_zcash)
inflation_zcash.append(100/coin.inflation)
count = 0
coins = Coin.objects.order_by('date').filter(name='btc')
for coin in coins:
count += 1
if coin.priceusd and count > 325 and coin.inflation > 0:
now_btc = coin.priceusd/30
btc.append(now_btc)
inflation_btc.append(100/coin.inflation)
now_dash = locale.format('%.2f', now_dash, grouping=True)
now_grin = locale.format('%.2f', now_grin, grouping=True)
now_zcash = locale.format('%.2f', now_zcash, grouping=True)
now_xmr = locale.format('%.2f', now_xmr, grouping=True)
now_btc = locale.format('%.2f', now_btc, grouping=True)
dt = 'inflationreturn.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'inflation_btc': inflation_btc,'inflation_xmr': inflation_xmr, 'inflation_dash': inflation_dash, 'inflation_grin': inflation_grin, 'inflation_zcash': inflation_zcash, 'now_xmr': now_xmr,
'now_dash': now_dash, 'now_grin': now_grin, 'now_zcash': now_zcash, 'now_btc': now_btc, 'btc': btc, 'xmr': xmr, 'dash': dash, 'zcash': zcash, 'grin': grin}
return render(request, 'charts/inflationreturn.html', context)
def bitcoin(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
dates3 = []
dates4 = []
btc = []
xmr3 = []
count1 = 0
count3 = 0
now_xmr = 0
now_btc = 0
coins_btc = Coin.objects.order_by('date').filter(name='btc')
for coin_btc in coins_btc:
if coin_btc.priceusd:
if count1 > 890: #450
btc.append(coin_btc.priceusd/30)
now_btc = coin_btc.priceusd/30
dates.append(count1)
count1 += 1 #1.4
elif count1 <= 890: #450
continue
else:
btc.append('')
coins_xmr = Coin.objects.order_by('date').filter(name='xmr')
for coin_xmr in coins_xmr:
if coin_xmr.priceusd:
if count3 > 30:
xmr3.append(coin_xmr.priceusd/5.01)
dates4.append(count3)
count3 += 0.92
elif count3 <= 30:
continue
else:
xmr3.append('')
data = DailyData.objects.order_by('date')
dates2 = []
xmr2 = []
btc2 = []
for item in data:
dates2.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_return > 0.0001:
btc2.append(item.btc_return)
else:
btc2.append('')
if item.xmr_return > 0.0001:
xmr2.append(item.xmr_return)
else:
xmr2.append('')
now_btc = locale.format('%.2f', now_btc, grouping=True)
now_xmr = locale.format('%.2f', now_xmr, grouping=True)
dt = 'bitcoin.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'btc': btc, 'xmr2': xmr2, 'btc2': btc2, 'xmr3': xmr3, 'dates': dates, 'dates2': dates2, 'dates3': dates3, 'dates4': dates4}
return render(request, 'charts/bitcoin.html', context)
def translin(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
transactions = []
pricexmr = []
dates = []
now_transactions = 0
maximum = 0
coins = Coin.objects.order_by('date')
for coin in coins:
print(str(coin.name) + ' ' + str(coin.date))
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
if coin.transactions > 200:
transactions.append(coin.transactions)
now_transactions = coin.transactions
if now_transactions > maximum:
maximum = now_transactions
else:
transactions.append('')
if coin.priceusd > 0.001:
pricexmr.append(coin.priceusd)
else:
pricexmr.append('')
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
now_transactions = int(now_transactions)
maximum = int(maximum)
dt = 'translin.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'transactions': transactions, 'dates': dates, 'maximum': maximum, 'now_transactions': now_transactions, 'pricexmr': pricexmr}
return render(request, 'charts/translin.html', context)
def pageviews(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
pageviews = []
unique = []
dates = []
users = PageViews.objects.order_by('date')
for user in users:
pageviews.append(user.total_pageviews)
unique.append(user.unique_visitors)
dates.append(datetime.datetime.strftime(user.date, '%Y-%m-%d'))
print(dates)
print(unique)
print(pageviews)
dt = 'pageviews.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'pageviews': pageviews, 'dates': dates, 'unique': unique}
return render(request, 'charts/pageviews.html', context)
def transmonth(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
transactions = []
pricexmr = []
dates = []
now_transactions = 0
maximum = 0
month_previous = '2014-01'
month = 0
total = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
aux = str(coin.date)
month = aux.split("-")[0] + '-' + aux.split("-")[1]
if month != month_previous:
dates.append(month_previous)
transactions.append(total)
if total > maximum:
maximum = total
total = 0
month_previous = month
if coin.transactions > 0:
total += coin.transactions
now_transactions = int(total)
maximum = int(maximum)
now_transactions = locale.format('%.0f', now_transactions, grouping=True)
maximum = locale.format('%.0f', maximum, grouping=True)
dt = 'transmonth.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'transactions': transactions, 'dates': dates, 'maximum': maximum, 'now_transactions': now_transactions, 'pricexmr': pricexmr}
return render(request, 'charts/transmonth.html', context)
def percentmonth(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
transactions = []
pricexmr = []
dates = []
now_transactions = 0
maximum = 0
month_previous = '2014-01'
month = 0
total = 0
total_btc = 0
total_xmr = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
aux = str(coin.date)
month = aux.split("-")[0] + '-' + aux.split("-")[1]
try:
coin_btc = Coin.objects.filter(name='btc').get(date=coin.date)
except:
pass
if month != month_previous:
dates.append(month_previous)
if total_btc > 0:
total = 100*total_xmr/total_btc
else:
total = 0
transactions.append(total)
if total > maximum:
maximum = total
total_xmr = 0
total_btc = 0
month_previous = month
if coin.transactions > 0:
total_xmr += coin.transactions
if coin_btc.transactions > 0:
total_btc += coin_btc.transactions
if total_btc > 0:
total = 100*total_xmr/total_btc
else:
total = 0
now_transactions = locale.format('%.1f', total, grouping=True) + ' %'
maximum = locale.format('%.1f', maximum, grouping=True) + ' %'
dt = 'percentmonth.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'transactions': transactions, 'dates': dates, 'maximum': maximum, 'now_transactions': now_transactions, 'pricexmr': pricexmr}
return render(request, 'charts/percentmonth.html', context)
def deviation(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
pricexmr = []
dates = []
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
if coin.priceusd > 0.001:
pricexmr.append(coin.priceusd)
else:
pricexmr.append(0.20)
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
n = 180
median_long_price = pd.Series(pricexmr).rolling(window=n).mean().iloc[n-1:].values
m_long_price = []
for i in range(n):
m_long_price.append(0)
for item in median_long_price:
m_long_price.append(float(item))
n = 3
median_short_price = pd.Series(pricexmr).rolling(window=n).mean().iloc[n-1:].values
m_short_price = []
for i in range(n):
m_short_price.append(0)
for item in median_short_price:
m_short_price.append(float(item))
deviation_percentage = []
deviation_price = []
for count in range(0, len(m_short_price)):
if float(m_long_price[count]) < 0.001:
deviation_price.append('')
deviation_percentage.append('')
else:
deviation_price.append((float(m_short_price[count])-float(m_long_price[count]))/(1))
deviation_percentage.append(100*(float(m_short_price[count])-float(m_long_price[count]))/(float(m_long_price[count])))
dt = 'deviation.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'deviation_percentage': deviation_percentage, 'deviation_price': deviation_price, 'dates': dates, 'pricexmr': pricexmr}
return render(request, 'charts/deviation.html', context)
def deviation_tx(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
transactions = []
pricexmr = []
dates = []
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
transactions.append(coin.transactions)
if coin.priceusd > 0.001:
pricexmr.append(coin.priceusd)
else:
pricexmr.append(0.20)
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
n = 180
median_long = pd.Series(transactions).rolling(window=n).mean().iloc[n-1:].values
m_long = []
for i in range(n):
m_long.append(0)
for item in median_long:
m_long.append(float(item))
n = 3
median_short = pd.Series(transactions).rolling(window=n).mean().iloc[n-1:].values
m_short = []
for i in range(n):
m_short.append(0)
for item in median_short:
m_short.append(float(item))
n = 180
median_long_price = pd.Series(pricexmr).rolling(window=n).mean().iloc[n-1:].values
m_long_price = []
for i in range(n):
m_long_price.append(0)
for item in median_long_price:
m_long_price.append(float(item))
n = 3
median_short_price = pd.Series(pricexmr).rolling(window=n).mean().iloc[n-1:].values
m_short_price = []
for i in range(n):
m_short_price.append(0)
for item in median_short_price:
m_short_price.append(float(item))
deviation_percentage = []
for count in range(0, len(m_short)):
if float(m_long[count]) < 0.001 or float(m_long_price[count]) < 0.001:
deviation_percentage.append('')
else:
calculation = (float(m_short_price[count])-float(m_long_price[count]))*abs(float(m_short[count])-float(m_long[count]))/(float(m_long[count]))
if calculation > 100:
calculation = 100
if calculation < -100:
calculation = -100
deviation_percentage.append(calculation)
dt = 'deviation_tx.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'deviation_percentage': deviation_percentage, 'dates': dates, 'pricexmr': pricexmr}
return render(request, 'charts/deviation_tx.html', context)
def percentage(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
transactions = []
dates = []
now_transactions = 0
maximum = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.xmr_transacpercentage > 0.00001:
transactions.append(100*item.xmr_transacpercentage)
now_transactions = 100*item.xmr_transacpercentage
if now_transactions > maximum:
maximum = now_transactions
else:
transactions.append('')
now_transactions = locale.format('%.1f', now_transactions, grouping=True) + '%'
maximum = locale.format('%.1f', maximum, grouping=True) + '%'
dt = 'percentage.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'transactions': transactions, 'dates': dates, 'now_transactions': now_transactions, 'maximum': maximum}
return render(request, 'charts/percentage.html', context)
def translog(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
transactions = []
pricexmr = []
dates = []
now_transactions = 0
maximum = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
if coin.transactions > 200:
transactions.append(coin.transactions)
now_transactions = coin.transactions
if now_transactions > maximum:
maximum = now_transactions
else:
transactions.append('')
if coin.priceusd > 0.001:
pricexmr.append(coin.priceusd)
else:
pricexmr.append('')
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
now_transactions = int(now_transactions)
maximum = int(maximum)
dt = 'translog.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'transactions': transactions, 'dates': dates, 'maximum': maximum, 'now_transactions': now_transactions, 'pricexmr': pricexmr}
return render(request, 'charts/translog.html', context)
def hashrate(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
hashrate = []
dates = []
now_hashrate = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
if coin.hashrate > 0:
now_hashrate = coin.hashrate
hashrate.append(coin.hashrate)
else:
hashrate.append('')
now_hashrate = locale.format('%.0f', now_hashrate, grouping=True)
dt = 'hashrate.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'hashrate': hashrate, 'dates': dates, 'now_hashrate': now_hashrate}
return render(request, 'charts/hashrate.html', context)
def hashprice(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
hashrate = []
dates = []
buy = []
sell = []
now_hashrate = 0
color = []
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
if count > 50:
buy.append(0.00000003)
sell.append(0.00000100)
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
if coin.hashrate > 0 and coin.priceusd > 0:
now_hashrate = coin.priceusd/coin.hashrate
hashrate.append(now_hashrate)
else:
hashrate.append('')
new_color = 30*coin.pricebtc/(count*delta + v0)
color.append(new_color)
count += 1
now_hashrate = locale.format('%.8f', now_hashrate, grouping=True)
dt = 'hashprice.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'hashrate': hashrate, 'dates': dates, 'now_hashrate': now_hashrate, 'color': color, 'buy': buy, 'sell': sell}
return render(request, 'charts/hashprice.html', context)
def hashvsprice(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
hashrate = []
prices = []
dates = []
now_hashrate = 0
now_priceusd = 0
now_pricebtc = 0
color = []
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
if count > 55:
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
if coin.priceusd > 0 and coin.hashrate:
now_hashrate = coin.hashrate
now_priceusd = coin.priceusd
now_pricebtc = coin.pricebtc
hashrate.append(now_hashrate)
prices.append(now_priceusd)
else:
hashrate.append('')
prices.append('')
new_color = 30*coin.pricebtc/(count*delta + v0)
color.append(new_color)
count += 1
now_hashrate = locale.format('%.0f', now_hashrate, grouping=True)
now_priceusd = '$' + locale.format('%.2f', now_priceusd, grouping=True)
now_pricebtc = locale.format('%.5f', now_pricebtc, grouping=True) + ' BTC'
dt = 'hashvsprice.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'hashrate': hashrate, 'dates': dates, 'now_hashrate': now_hashrate, 'color': color, 'prices': prices, 'now_pricebtc': now_pricebtc, 'now_priceusd': now_priceusd}
return render(request, 'charts/hashvsprice.html', context)
def metcalfesats(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
color = []
metcalfe = []
prices = []
dates = []
now_metcalfe = 0
now_price = 0
maximum = 0
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.xmr_metcalfebtc < 0.0007:
metcalfe.append('')
color.append('')
prices.append('')
else:
metcalfe.append(item.xmr_metcalfebtc)
now_price = item.xmr_pricebtc
now_metcalfe = item.xmr_metcalfebtc
if now_metcalfe > maximum:
maximum = now_metcalfe
color.append(30*item.xmr_pricebtc/(count*delta + v0))
prices.append(now_price)
count += 1
now_price = locale.format('%.4f', now_price, grouping=True) + ' BTC'
now_metcalfe = locale.format('%.4f', now_metcalfe, grouping=True) + ' BTC'
maximum = locale.format('%.4f', maximum, grouping=True) + ' BTC'
dt = 'metcalfesats.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'metcalfe': metcalfe, 'dates': dates, 'maximum': maximum, 'now_metcalfe': now_metcalfe, 'color': color, 'prices': prices, 'now_price': now_price}
return render(request, 'charts/metcalfesats.html', context)
def metcalfesats_deviation(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
metcalfe_percentage = []
metcalfe = []
dates = []
now_metcalfe = 0
now_metcalfe_percentage = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.xmr_metcalfebtc < 0.0007 and item.xmr_pricebtc <= 0:
metcalfe.append('')
metcalfe_percentage.append('')
else:
now_metcalfe = item.xmr_metcalfebtc - item.xmr_pricebtc
now_metcalfe_percentage = 100*((item.xmr_metcalfebtc/item.xmr_pricebtc) - 1)
metcalfe.append(now_metcalfe)
metcalfe_percentage.append(now_metcalfe_percentage)
now_metcalfe = locale.format('%.4f', now_metcalfe, grouping=True)
now_metcalfe_percentage = locale.format('%.0f', now_metcalfe_percentage, grouping=True)
dt = 'metcalfesats_deviation.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'metcalfe': metcalfe, 'dates': dates, 'now_metcalfe': now_metcalfe, 'now_metcalfe_percentage': now_metcalfe_percentage, 'metcalfe_percentage': metcalfe_percentage}
return render(request, 'charts/metcalfesats_deviation.html', context)
def metcalfe_deviation(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
metcalfe_percentage = []
metcalfe = []
dates = []
now_metcalfe = 0
now_metcalfe_percentage = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.xmr_metcalfeusd < 0.0007 and item.xmr_priceusd <= 0:
metcalfe.append('')
metcalfe_percentage.append('')
else:
now_metcalfe = item.xmr_metcalfeusd - item.xmr_priceusd
now_metcalfe_percentage = 100*((item.xmr_metcalfeusd/item.xmr_priceusd) - 1)
metcalfe.append(now_metcalfe)
metcalfe_percentage.append(now_metcalfe_percentage)
now_metcalfe = locale.format('%.0f', now_metcalfe, grouping=True)
now_metcalfe_percentage = locale.format('%.0f', now_metcalfe_percentage, grouping=True)
dt = 'metcalfe_deviation.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'metcalfe': metcalfe, 'dates': dates, 'now_metcalfe': now_metcalfe, 'now_metcalfe_percentage': now_metcalfe_percentage, 'metcalfe_percentage': metcalfe_percentage}
return render(request, 'charts/metcalfe_deviation.html', context)
def metcalfeusd(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
color = []
metcalfe = []
prices = []
dates = []
now_metcalfe = 0
now_price = 0
maximum = 0
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.xmr_metcalfeusd < 0.001:
metcalfe.append('')
color.append('')
prices.append('')
else:
metcalfe.append(item.xmr_metcalfeusd)
now_price = item.xmr_priceusd
now_metcalfe = item.xmr_metcalfeusd
if now_metcalfe > maximum:
maximum = now_metcalfe
color.append(30*item.xmr_pricebtc/(count*delta + v0))
prices.append(now_price)
count += 1
now_price = "$"+ locale.format('%.2f', now_price, grouping=True)
now_metcalfe = "$"+ locale.format('%.2f', now_metcalfe, grouping=True)
maximum = "$"+ locale.format('%.2f', maximum, grouping=True)
dt = 'metcalfeusd.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'metcalfe': metcalfe, 'dates': dates, 'maximum': maximum, 'now_metcalfe': now_metcalfe, 'color': color, 'prices': prices, 'now_price': now_price}
return render(request, 'charts/metcalfeusd.html', context)
def coins(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
supplyxmr = []
supplybtc = []
fsupplyxmr = []
fsupplybtc = []
dates = []
now_xmr = 0
now_btc = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_supply > 0.1:
supplybtc.append(item.btc_supply)
now_btc = item.btc_supply
else:
supplybtc.append('')
if item.xmr_inflation > 0.1:
supplyxmr.append(item.xmr_supply)
now_xmr = item.xmr_supply
else:
supplyxmr.append('')
fsupplyxmr.append('')
fsupplybtc.append('')
rewardbtc = 900
supplybitcoin = item.btc_supply
supply = int(item.xmr_supply)*10**12
for i in range(365*(2060-2020)):
supply = int(supply)
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*(10**12)
supply += int(720*reward)
fsupplyxmr.append(supply/(10**12))
date_aux = item.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
supplybitcoin += rewardbtc
if supplybitcoin > 21000000:
supplybitcoin = 21000000
fsupplybtc.append(supplybitcoin)
date_aux2 = datetime.datetime.strftime(date_aux, '%Y-%m-%d')
if date_aux2 == '2024-04-23':
rewardbtc = rewardbtc/2
if date_aux2 == '2028-05-05':
rewardbtc = rewardbtc/2
if date_aux2 == '2032-05-03':
rewardbtc = rewardbtc/2
if date_aux2 == '2036-04-30':
rewardbtc = rewardbtc/2
if date_aux2 == '2040-04-27':
rewardbtc = rewardbtc/2
if date_aux2 == '2044-04-25':
rewardbtc = rewardbtc/2
if date_aux2 == '2048-04-22':
rewardbtc = rewardbtc/2
if date_aux2 == '2052-04-19':
rewardbtc = rewardbtc/2
if date_aux2 == '2056-04-30':
rewardbtc = rewardbtc/2
if date_aux2 == '2060-04-27':
rewardbtc = rewardbtc/2
if date_aux2 == '2064-04-25':
rewardbtc = rewardbtc/2
if date_aux2 == '2068-04-22':
rewardbtc = rewardbtc/2
if date_aux2 == '2072-04-19':
rewardbtc = rewardbtc/2
if date_aux2 == '2076-04-30':
rewardbtc = rewardbtc/2
if date_aux2 == '2080-04-27':
rewardbtc = rewardbtc/2
if date_aux2 == '2084-04-25':
rewardbtc = rewardbtc/2
if date_aux2 == '2088-04-22':
rewardbtc = rewardbtc/2
if date_aux2 == '2140-01-01':
rewardbtc = 0
supplybitcoin = 21000000
supplyxmr.append('')
supplybtc.append('')
now_btc = locale.format('%.0f', now_btc, grouping=True)
now_xmr = locale.format('%.0f', now_xmr, grouping=True)
dt = 'coins.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'supplyxmr': supplyxmr, 'supplybtc': supplybtc, 'fsupplyxmr': fsupplyxmr, 'fsupplybtc': fsupplybtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/coins.html', context)
def dailyemission(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
emissionbtc = []
emissionxmr = []
dates = []
now_btc = 0
now_xmr = 0
high_btc = 0
high_xmr = 0
for item in data:
if item.btc_emissionusd == 0:
emissionbtc.append('')
else:
emissionbtc.append(item.btc_emissionusd)
now_btc = item.btc_emissionusd
if item.btc_emissionusd > high_btc:
high_btc = item.btc_emissionusd
if item.xmr_emissionusd == 0:
emissionxmr.append('')
else:
emissionxmr.append(item.xmr_emissionusd)
now_xmr = item.xmr_emissionusd
if item.xmr_emissionusd > high_xmr:
high_xmr = item.xmr_emissionusd
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
for i in range(500):
date_aux = item.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
emissionxmr.append('')
emissionbtc.append('')
now_btc = "$" + locale.format('%.0f', now_btc, grouping=True)
now_xmr = "$" + locale.format('%.0f', now_xmr, grouping=True)
high_btc = "$" + locale.format('%.0f', high_btc, grouping=True)
high_xmr = "$" + locale.format('%.0f', high_xmr, grouping=True)
dt = 'dailyemission.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'emissionxmr': emissionxmr, 'emissionbtc': emissionbtc, 'high_xmr': high_xmr, 'high_btc': high_btc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/dailyemission.html', context)
def extracoins(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
nsupply = []
fsupply = []
dates = []
now_diff = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_supply - item.xmr_supply > 0:
nsupply.append(item.btc_supply - item.xmr_supply)
else:
nsupply.append('')
fsupply.append('')
rewardbtc = 900
supplybitcoin = item.btc_supply
supply = int(item.xmr_supply)*10**12
for i in range(365*(2060-2020)):
supply = int(supply)
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*(10**12)
supply += int(720*reward)
date_aux = item.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
supplybitcoin += rewardbtc
if supplybitcoin > 21000000:
supplybitcoin = 21000000
fsupply.append(-supply/(10**12) + supplybitcoin)
date_aux2 = datetime.datetime.strftime(date_aux, '%Y-%m-%d')
if date_aux2 == '2024-04-23':
rewardbtc = rewardbtc/2
if date_aux2 == '2028-05-05':
rewardbtc = rewardbtc/2
if date_aux2 == '2032-05-03':
rewardbtc = rewardbtc/2
if date_aux2 == '2036-04-30':
rewardbtc = rewardbtc/2
if date_aux2 == '2040-04-27':
rewardbtc = rewardbtc/2
if date_aux2 == '2044-04-25':
rewardbtc = rewardbtc/2
if date_aux2 == '2048-04-22':
rewardbtc = rewardbtc/2
if date_aux2 == '2052-04-19':
rewardbtc = rewardbtc/2
if date_aux2 == '2056-04-30':
rewardbtc = rewardbtc/2
if date_aux2 == '2060-04-27':
rewardbtc = rewardbtc/2
if date_aux2 == '2064-04-25':
rewardbtc = rewardbtc/2
if date_aux2 == '2068-04-22':
rewardbtc = rewardbtc/2
if date_aux2 == '2072-04-19':
rewardbtc = rewardbtc/2
if date_aux2 == '2076-04-30':
rewardbtc = rewardbtc/2
if date_aux2 == '2080-04-27':
rewardbtc = rewardbtc/2
if date_aux2 == '2084-04-25':
rewardbtc = rewardbtc/2
if date_aux2 == '2088-04-22':
rewardbtc = rewardbtc/2
if date_aux2 == '2140-01-01':
rewardbtc = 0
supplybitcoin = 21000000
nsupply.append('')
now_diff = locale.format('%.0f', now_diff, grouping=True)
dt = 'extracoins.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'nsupply': nsupply, 'fsupply': fsupply, 'dates': dates, 'now_diff': now_diff}
return render(request, 'charts/extracoins.html', context)
def inflation(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
inflationxmr = []
inflationbtc = []
finflationxmr = []
finflationbtc = []
dates = []
now_xmr = 999999
now_btc = 999999
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_inflation > 0.1:
inflationbtc.append(item.btc_inflation)
now_btc = item.btc_inflation
else:
inflationbtc.append('')
if item.xmr_inflation > 0.1:
inflationxmr.append(item.xmr_inflation)
now_xmr = item.xmr_inflation
else:
inflationxmr.append('')
finflationxmr.append('')
finflationbtc.append('')
inflationbitcoin = 1.75
supply = int(item.xmr_supply)*10**12
for i in range(2000):
supply = int(supply)
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*(10**12)
supply += int(720*reward)
finflationxmr.append(100*reward*720*365/supply)
date_aux = item.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
finflationbtc.append(inflationbitcoin)
date_aux2 = datetime.datetime.strftime(date_aux, '%Y-%m-%d')
if date_aux2 == '2024-04-23':
inflationbitcoin = 0.65
inflationxmr.append('')
inflationbtc.append('')
now_btc = locale.format('%.2f', now_btc, grouping=True) + '%'
now_xmr = locale.format('%.2f', now_xmr, grouping=True) + '%'
dt = 'inflation.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'inflationxmr': inflationxmr, 'inflationbtc': inflationbtc, 'finflationxmr': finflationxmr, 'finflationbtc': finflationbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/inflation.html', context)
def blocksize(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
xmr_blocksize = []
btc_blocksize = []
dates = []
now_xmr = 0
now_btc = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_blocksize > 0.001:
btc_blocksize.append(item.btc_blocksize/1024)
now_btc = item.btc_blocksize
else:
btc_blocksize.append('')
if item.xmr_blocksize > 0.001:
xmr_blocksize.append(item.xmr_blocksize/1024)
now_xmr = item.xmr_blocksize
else:
xmr_blocksize.append('')
now_btc = locale.format('%.2f', now_btc, grouping=True) + ' bytes'
now_xmr = locale.format('%.2f', now_xmr, grouping=True) + ' bytes'
dt = 'blocksize.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'xmr_blocksize': xmr_blocksize, 'btc_blocksize': btc_blocksize, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/blocksize.html', context)
def transactionsize(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
xmr_blocksize = []
btc_blocksize = []
dates = []
now_xmr = 0
now_btc = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_blocksize > 0.001 and item.btc_transactions > 0:
now_btc = 144*item.btc_blocksize/(1024*item.btc_transactions)
btc_blocksize.append(144*item.btc_blocksize/(1024*item.btc_transactions))
else:
btc_blocksize.append('')
if item.xmr_blocksize > 0.001 and item.xmr_transactions > 0:
now_xmr = 720*item.xmr_blocksize/(1024*item.xmr_transactions)
xmr_blocksize.append(720*item.xmr_blocksize/(1024*item.xmr_transactions))
else:
xmr_blocksize.append('')
now_btc = locale.format('%.2f', now_btc, grouping=True) + ' bytes'
now_xmr = locale.format('%.2f', now_xmr, grouping=True) + ' bytes'
dt = 'transactionsize.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'xmr_blocksize': xmr_blocksize, 'btc_blocksize': btc_blocksize, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/transactionsize.html', context)
def transactiondominance(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
xmr_dominance = []
dates = []
now_xmr = 0
maximum = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.xmr_transactions > 0:
now_xmr = 100*item.xmr_transactions/(item.xmr_transactions+item.dash_transactions+item.zcash_transactions+item.grin_transactions)
else:
now_xmr = 0
if now_xmr > maximum:
maximum = now_xmr
xmr_dominance.append(now_xmr)
now_xmr = locale.format('%.1f', now_xmr, grouping=True) + '%'
maximum = locale.format('%.1f', maximum, grouping=True) + '%'
dt = 'transactiondominance.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'xmr_dominance': xmr_dominance, 'now_xmr': now_xmr, 'maximum': maximum, 'dates': dates}
return render(request, 'charts/transactiondominance.html', context)
def difficulty(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
xmr_difficulty = []
btc_difficulty = []
dates = []
now_xmr = 0
now_btc = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_difficulty > 0.001:
now_btc = item.btc_difficulty
btc_difficulty.append(now_btc)
else:
btc_difficulty.append('')
if item.xmr_difficulty > 0.001:
now_xmr = item.xmr_difficulty
xmr_difficulty.append(now_xmr)
else:
xmr_difficulty.append('')
now_btc = locale.format('%.0f', now_btc, grouping=True)
now_xmr = locale.format('%.0f', now_xmr, grouping=True)
dt = 'difficulty.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'xmr_difficulty': xmr_difficulty, 'btc_difficulty': btc_difficulty, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/difficulty.html', context)
def blockchainsize(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
xmr_blocksize = []
btc_blocksize = []
dates = []
now_xmr = 0
now_btc = 0
hardfork = datetime.datetime.strptime('2016-03-23', '%Y-%m-%d') #block time changed here
for item in data:
date = datetime.datetime.strftime(item.date, '%Y-%m-%d')
dates.append(date)
date = datetime.datetime.strptime(date, '%Y-%m-%d')
if item.btc_blocksize > 0.001 and item.btc_transactions > 0:
now_btc += 144*item.btc_blocksize/1024
if now_btc < 200:
btc_blocksize.append('')
else:
btc_blocksize.append(now_btc)
else:
btc_blocksize.append('')
if item.xmr_blocksize > 0.001 and item.xmr_transactions > 0:
if date < hardfork:
now_xmr += 1440*item.xmr_blocksize/1024
else:
now_xmr += 720*item.xmr_blocksize/1024
if now_xmr < 200:
xmr_blocksize.append('')
else:
xmr_blocksize.append(now_xmr)
else:
xmr_blocksize.append('')
now_btc = locale.format('%.2f', now_btc/(1024*1024), grouping=True) + ' Gb'
now_xmr = locale.format('%.2f', now_xmr/(1024*1024), grouping=True) + ' Gb'
dt = 'blockchainsize.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'xmr_blocksize': xmr_blocksize, 'btc_blocksize': btc_blocksize, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/blockchainsize.html', context)
def securitybudget(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
xmr_security = []
btc_security = []
dates = []
now_xmr = 0
now_btc = 0
for item in data:
date = datetime.datetime.strftime(item.date, '%Y-%m-%d')
dates.append(date)
if item.btc_minerrevusd > 0.001:
now_btc = item.btc_minerrevusd/86400
btc_security.append(now_btc)
else:
btc_security.append('')
if item.xmr_minerrevusd > 0.001:
now_xmr = item.xmr_minerrevusd/86400
xmr_security.append(now_xmr)
else:
xmr_security.append('')
now_btc = '$' + locale.format('%.2f', now_btc, grouping=True)
now_xmr = '$' + locale.format('%.2f', now_xmr, grouping=True)
dt = 'securitybudget.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'xmr_security': xmr_security, 'btc_security': btc_security, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/securitybudget.html', context)
def efficiency(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
xmr_efficiency = []
btc_efficiency = []
dates = []
now_xmr = 0
now_btc = 0
for item in data:
date = datetime.datetime.strftime(item.date, '%Y-%m-%d')
dates.append(date)
if item.btc_minerrevusd != 0 and item.btc_inflation > 0:
if (2**32)*item.btc_difficulty*0.10/(item.btc_minerrevusd*24000) > 10:
now_btc = (2**32)*item.btc_difficulty*0.10/(item.btc_minerrevusd*24000)
if now_btc > 0.01:
btc_efficiency.append(now_btc)
else:
btc_efficiency.append('')
else:
btc_efficiency.append('')
if item.xmr_minerrevusd != 0 and item.xmr_inflation > 0:
if item.xmr_difficulty*0.10/(item.xmr_minerrevusd*5000) > 0.01:
now_xmr = item.xmr_difficulty*0.10/(item.xmr_minerrevusd*5000)
if now_xmr > 0.01:
xmr_efficiency.append(now_xmr)
else:
xmr_efficiency.append('')
else:
xmr_efficiency.append('')
now_btc = locale.format('%.0f', now_btc, grouping=True)
now_xmr = locale.format('%.0f', now_xmr, grouping=True)
dt = 'efficiency.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'xmr_efficiency': xmr_efficiency, 'btc_efficiency': btc_efficiency, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/efficiency.html', context)
def compinflation(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
dates = []
inflationxmr = []
inflationdash = []
inflationgrin = []
inflationzcash = []
inflationbtc = []
now_xmr = 999999
now_dash = 999999
now_grin = 999999
now_zcash = 999999
now_btc = 999999
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_inflation > 0.1:
inflationbtc.append(item.btc_inflation)
now_btc = item.btc_inflation
else:
inflationbtc.append('')
if item.zcash_inflation > 0.1:
inflationzcash.append(item.zcash_inflation)
now_zcash = item.zcash_inflation
else:
inflationzcash.append('')
if item.dash_inflation > 0.1:
inflationdash.append(item.dash_inflation)
now_dash = item.dash_inflation
else:
inflationdash.append('')
if item.xmr_inflation > 0.1:
inflationxmr.append(item.xmr_inflation)
now_xmr = item.xmr_inflation
else:
inflationxmr.append('')
if item.grin_inflation > 0.1:
inflationgrin.append(item.grin_inflation)
now_grin = item.grin_inflation
else:
inflationgrin.append('')
now_dash = locale.format('%.2f', now_dash, grouping=True) + '%'
now_grin = locale.format('%.2f', now_grin, grouping=True) + '%'
now_zcash = locale.format('%.2f', now_zcash, grouping=True) + '%'
now_xmr = locale.format('%.2f', now_xmr, grouping=True) + '%'
now_btc = locale.format('%.2f', now_btc, grouping=True) + '%'
dt = 'compinflation.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'inflationxmr': inflationxmr, 'inflationdash': inflationdash, 'inflationgrin': inflationgrin, 'inflationzcash': inflationzcash, 'inflationbtc': inflationbtc,
'now_xmr': now_xmr, 'now_btc': now_btc, 'now_dash': now_dash, 'now_grin': now_grin, 'now_zcash': now_zcash, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/compinflation.html', context)
def comptransactions(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
dates = []
xmr = []
dash = []
grin = []
zcash = []
btc = []
now_xmr = 999999
now_dash = 999999
now_grin = 999999
now_zcash = 999999
now_btc = 999999
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_transactions > 10:
btc.append(item.btc_transactions)
now_btc = item.btc_transactions
else:
btc.append('')
if item.zcash_transactions > 10:
zcash.append(item.zcash_transactions)
now_zcash = item.zcash_transactions
else:
zcash.append('')
if item.dash_transactions > 10:
dash.append(item.dash_transactions)
now_dash = item.dash_transactions
else:
dash.append('')
if item.xmr_transactions > 10:
xmr.append(item.xmr_transactions)
now_xmr = item.xmr_transactions
else:
xmr.append('')
if item.grin_transactions > 10:
grin.append(item.grin_transactions)
now_grin = item.grin_transactions
else:
grin.append('')
now_dash = locale.format('%.0f', now_dash, grouping=True)
now_grin = locale.format('%.0f', now_grin, grouping=True)
now_zcash = locale.format('%.0f', now_zcash, grouping=True)
now_xmr = locale.format('%.0f', now_xmr, grouping=True)
now_btc = locale.format('%.0f', now_btc, grouping=True)
dt = 'comptransactions.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'xmr': xmr, 'dash': dash, 'grin': grin, 'zcash': zcash, 'btc': btc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'now_dash': now_dash, 'now_grin': now_grin, 'now_zcash': now_zcash, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/comptransactions.html', context)
def sfmodel(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
update = False
today = datetime.datetime.strftime(date.today(), '%Y-%m-%d')
yesterday = date.today() - timedelta(1)
start_time = datetime.datetime.strftime(date.today() - timedelta(5), '%Y-%m-%d')
try:
coin = Coin.objects.filter(name='btc').get(date=yesterday)
#coin_aux = Coin.objects.filter(name='btc').get(date=yesterday)
if coin: #and coin_aux:
print('coin found yesterday')
if coin.inflation > 0 and coin.priceusd > 0 and coin.supply > 0: #and coin_aux.inflation > 0 and coin_aux.priceusd > 0 and coin_aux.supply > 0:
print('no need to update')
update = False
else:
coin.delete()
update = True
else:
print('no coin found yesterday - 1')
update = True
except:
print('no coin found yesterday - 2')
update = True
now = datetime.datetime.now()
current_time = int(now.strftime("%H"))
if update and (current_time >= 5):
print('social')
check_new_social('Bitcoin')
check_new_social('Monero')
check_new_social('CryptoCurrency')
print('metrics')
with open("settings.json") as file:
data = json.load(file)
file.close()
symbol = 'btc'
url = data["metrics_provider"][0]["metrics_url_new"] + symbol + '/' + start_time #url = data["metrics_provider"][0]["metrics_url"] + symbol + data["metrics_provider"][0]["metrics"] + '&start_time=' + start_time
get_latest_metrics(symbol, url)
symbol = 'dash'
url = data["metrics_provider"][0]["metrics_url_new"] + symbol + '/' + start_time #url = data["metrics_provider"][0]["metrics_url"] + symbol + data["metrics_provider"][0]["metrics"] + '&start_time=' + start_time
get_latest_metrics(symbol, url)
symbol = 'grin'
url = data["metrics_provider"][0]["metrics_url_new"] + symbol + '/' + start_time #url = data["metrics_provider"][0]["metrics_url"] + symbol + data["metrics_provider"][0]["metrics"] + '&start_time=' + start_time
get_latest_metrics(symbol, url)
symbol = 'zec'
url = data["metrics_provider"][0]["metrics_url_new"] + symbol + '/' + start_time #url = data["metrics_provider"][0]["metrics_url"] + symbol + data["metrics_provider"][0]["metrics"] + '&start_time=' + start_time
get_latest_metrics(symbol, url)
#symbol = 'xmr'
#url = data["metrics_provider"][0]["metrics_url_new"] + symbol + '/' + start_time #url = data["metrics_provider"][0]["metrics_url"] + symbol + data["metrics_provider"][0]["metrics"] + '&start_time=' + start_time
#get_latest_metrics(symbol, url)
print('p2pool')
update_p2pool()
print('updating database')
update_database(start_time, today)
print('done')
dates = []
stock_to_flow = []
projection = []
color = []
values = []
now_price = 0
now_sf = 0
now_inflation = 0
data = Sfmodel.objects.order_by('date')
count_aux = 0
for item in data:
if item.color != 0:
color.append(item.color)
else:
color.append('')
if item.greyline != 0:
projection.append(item.greyline)
if count_aux > 25:
count_aux = 0
else:
projection.append(item.greyline)
else:
projection.append('')
if item.stocktoflow > 0.2:
stock_to_flow.append(item.stocktoflow)
else:
stock_to_flow.append('')
if item.priceusd > 0.1:
values.append(item.priceusd)
now_price = item.priceusd
now_sf = item.stocktoflow
if item.date > date.today() - timedelta(4):
coins = Coin.objects.filter(name='xmr').filter(date=item.date)
if coins:
for coin in coins:
now_inflation = coin.inflation
else:
values.append('')
count_aux += 1
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
now_price = "$"+ locale.format('%.2f', now_price, grouping=True)
now_sf = "$"+ locale.format('%.2f', now_sf, grouping=True)
now_inflation = locale.format('%.2f', now_inflation, grouping=True)+'%'
dt = 'sfmodel.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'values': values, 'dates': dates, 'stock_to_flow': stock_to_flow, 'projection': projection, 'now_price': now_price, 'now_inflation': now_inflation, 'now_sf': now_sf, 'color': color}
return render(request, 'charts/sfmodel.html', context)
def sfmodellin(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
stock_to_flow = []
projection = []
color = []
values = []
now_price = 0
now_sf = 0
now_inflation = 0
data = Sfmodel.objects.order_by('date')
count_aux = 0
for item in data:
if item.color != 0:
color.append(item.color)
else:
color.append('')
if item.greyline != 0:
projection.append(item.greyline)
if count_aux > 25:
count_aux = 0
else:
projection.append(item.greyline)
else:
projection.append('')
if item.stocktoflow > 0.2:
stock_to_flow.append(item.stocktoflow)
else:
stock_to_flow.append('')
if item.priceusd > 0.1:
values.append(item.priceusd)
now_price = item.priceusd
now_sf = item.stocktoflow
if item.date > date.today() - timedelta(4):
coins = Coin.objects.filter(name='xmr').filter(date=item.date)
if coins:
for coin in coins:
now_inflation = coin.inflation
else:
values.append('')
count_aux += 1
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
now_price = "$"+ locale.format('%.2f', now_price, grouping=True)
now_sf = "$"+ locale.format('%.2f', now_sf, grouping=True)
now_inflation = locale.format('%.2f', now_inflation, grouping=True)+'%'
dt = 'sfmodellin.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'values': values, 'dates': dates, 'stock_to_flow': stock_to_flow,'now_price': now_price, 'now_inflation': now_inflation, 'now_sf': now_sf, 'color': color}
return render(request, 'charts/sfmodellin.html', context)
def sfmultiple(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
now_sf = 0
maximum = 0
dates = []
stock_to_flow = []
buy = []
sell = []
color = []
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
sf_aux = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
dates.append(datetime.datetime.strftime(coin.date, '%Y-%m-%d'))
buy.append(1)
sell.append(100)
if coin.stocktoflow > sf_aux*2+250:
coin.stocktoflow = sf_aux
sf_aux = coin.stocktoflow
if coin.priceusd < 1:
coin.priceusd = 1
if coin.stocktoflow != 0:
now_sf = coin.supply*coin.priceusd/(coin.stocktoflow*1500000)
stock_to_flow.append(now_sf)
buy.append(1)
sell.append(100)
if now_sf > maximum:
maximum = now_sf
new_color = 30*coin.pricebtc/(count*delta + v0)
color.append(new_color)
count += 1
now_sf = locale.format('%.2f', now_sf, grouping=True)
maximum = locale.format('%.2f', maximum, grouping=True)
dt = 'sfmultiple.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'maximum': maximum, 'stock_to_flow': stock_to_flow, 'now_sf': now_sf, 'buy': buy, 'sell': sell, 'color': color}
return render(request, 'charts/sfmultiple.html', context)
def marketcycle(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
color = []
sell = []
buy = []
data = Sfmodel.objects.order_by('date')
for item in data:
if item.color > 0:
color.append(item.color - 5)
else:
color.append('')
sell.append(100)
buy.append(0)
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
now_cycle = locale.format('%.2f', item.color, grouping=True)
dt = 'marketcycle.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'color': color, 'sell': sell, 'buy': buy, 'now_cycle': now_cycle}
return render(request, 'charts/marketcycle.html', context)
def shielded(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
values = []
values2 = []
values3 = []
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('Sheet1')
dominance = 0
monthly = 0
values_mat = wks.get_values(start=(3,1), end=(999,5), returnas='matrix')
for k in range(0,len(values_mat)):
if values_mat[k][0] and values_mat[k][3]:
date = values_mat[k][0]
value = values_mat[k][3]
value3 = values_mat[k][4]
if not(value) or not(value):
break
else:
dates.append(date)
values.append(int(value))
values3.append(int(value3))
else:
break
previous_date = 0
coins = Coin.objects.order_by('date').filter(name='xmr')
for date in dates:
value2 = 0
for coin in coins:
aux = str(coin.date)
month = aux.split("-")[0] + '-' + aux.split("-")[1]
if month == date:
if previous_date != coin.date:
value2 += coin.transactions
previous_date = coin.date
values2.append(int(value2))
dominance = 100*int(value2)/(int(value2)+int(value)+int(value3))
monthly = int(value2)
monthly = format(int(monthly),',')
dominance = locale.format('%.2f', dominance, grouping=True)
dt = 'shielded.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'values': values, 'values2': values2, 'values3': values3, "monthly": monthly, "dominance": dominance}
return render(request, 'charts/shielded.html', context)
def thermocap(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
dates = []
values = []
thermocap = []
color = []
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
sf_aux = 0
supply = 0
calorie = 1
calories = []
calories2 = []
calories3 = []
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
dates.append(datetime.datetime.strftime(coin.date, '%Y-%m-%d'))
if coin.stocktoflow > sf_aux*2+250:
coin.stocktoflow = sf_aux
sf_aux = coin.stocktoflow
values.append(coin.priceusd)
new_color = 30*coin.pricebtc/(count*delta + v0)
color.append(new_color)
calorie += (coin.supply - supply)*coin.priceusd
if coin.inflation != 0:
if calorie/(4200000*math.sqrt(coin.inflation)) < 0.1:
calories.append('')
else:
calories.append(calorie/(4200000*math.sqrt(coin.inflation)))
if calorie/(1000000*math.sqrt(coin.inflation)) < 0.1:
calories2.append('')
else:
calories2.append(calorie/(1000000*math.sqrt(coin.inflation)))
if 28*calorie/(2500000*math.sqrt(coin.inflation)) < 0.1:
calories3.append('')
else:
calories3.append(28*calorie/(2500000*math.sqrt(coin.inflation)))
else:
calories.append('')
temperature = coin.priceusd/calorie
if temperature > 0.000004:
temperature = 0.000004
thermocap.append(temperature)
supply = coin.supply
count += 1
temperature = locale.format('%.2f', temperature, grouping=True)
dt = 'thermocap.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'temperature': temperature, 'values': values, 'thermocap': thermocap, 'color': color, 'calories': calories,
'calories2': calories2, 'calories3': calories3}
return render(request, 'charts/thermocap.html', context)
def sharpe(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
dates = []
values = []
color = []
rocs = []
sharpe = []
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
price = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
new_color = 30*coin.pricebtc/(count*delta + v0)
count += 1
if count % 7 == 0:
if price == 0:
if coin.priceusd > 0:
price = coin.priceusd
roc = 0
else:
roc = 0
else:
roc = (coin.priceusd - price)/price
price = coin.priceusd
rocs.append(roc)
dates.append(datetime.datetime.strftime(coin.date, '%Y-%m-%d'))
values.append(coin.priceusd)
color.append(new_color)
n = 52
median = pd.Series(rocs).rolling(window=n).mean().iloc[n-1:].values
std = pd.Series(rocs).rolling(window=n).std().iloc[n-1:].values
aux = list(map(truediv, median, std))
for count in range(51):
sharpe.append('')
for item in aux:
sharpe.append(item*math.sqrt(52))
dt = 'sharpe.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'values': values, 'color': color, 'sharpe': sharpe}
return render(request, 'charts/sharpe.html', context)
def about(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
context = {}
return render(request, 'charts/about.html', context)
def transcost(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.xmr_transcostusd == 0:
costxmr.append('')
else:
costxmr.append(item.xmr_transcostusd)
now_xmr = item.xmr_transcostusd
if item.btc_transcostusd == 0:
costbtc.append('')
else:
costbtc.append(item.btc_transcostusd)
now_btc = item.btc_transcostusd
now_btc = "$" + locale.format('%.2f', now_btc, grouping=True)
now_xmr = "$" + locale.format('%.2f', now_xmr, grouping=True)
dt = 'transcost.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/transcost.html', context)
def transcostntv(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.xmr_transcostntv == 0:
costxmr.append('')
else:
costxmr.append(item.xmr_transcostntv)
now_xmr = item.xmr_transcostntv
if item.btc_transcostntv == 0:
costbtc.append('')
else:
costbtc.append(item.btc_transcostntv)
now_btc = item.btc_transcostntv
now_btc = locale.format('%.6f', now_btc, grouping=True)
now_xmr = locale.format('%.6f', now_xmr, grouping=True)
dt = 'transcostntv.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/transcostntv.html', context)
def minerrevcap(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.xmr_minerrevcap == 0:
costxmr.append('')
else:
costxmr.append(item.xmr_minerrevcap)
now_xmr = item.xmr_minerrevcap
if item.btc_minerrevcap == 0:
costbtc.append('')
else:
costbtc.append(item.btc_minerrevcap)
now_btc = item.btc_minerrevcap
now_btc = locale.format('%.2f', now_btc, grouping=True) + "%"
now_xmr = locale.format('%.2f', now_xmr, grouping=True) + "%"
dt = 'minerrevcap.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/minerrevcap.html', context)
def minerrev(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_minerrevusd < 0.0001:
costbtc.append('')
else:
costbtc.append(item.btc_minerrevusd)
now_btc = item.btc_minerrevusd
if item.xmr_minerrevusd < 0.0001:
costxmr.append('')
else:
costxmr.append(item.xmr_minerrevusd)
now_xmr = item.xmr_minerrevusd
now_btc = "$" + locale.format('%.2f', now_btc, grouping=True)
now_xmr = "$" + locale.format('%.2f', now_xmr, grouping=True)
dt = 'minerrev.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/minerrev.html', context)
def minerrevntv(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_minerrevntv < 0.0001:
costbtc.append('')
else:
costbtc.append(item.btc_minerrevntv)
now_btc = item.btc_minerrevntv
if item.xmr_minerrevntv < 0.0001:
costxmr.append('')
else:
costxmr.append(item.xmr_minerrevntv)
now_xmr = item.xmr_minerrevntv
now_btc = locale.format('%.2f', now_btc, grouping=True)
now_xmr = locale.format('%.2f', now_xmr, grouping=True)
dt = 'minerrevntv.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/minerrevntv.html', context)
def minerfeesntv(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_minerfeesntv < 0.1:
costbtc.append('')
else:
costbtc.append(item.btc_minerfeesntv)
now_btc = item.btc_minerfeesntv
if item.xmr_minerfeesntv < 0.1:
costxmr.append('')
else:
costxmr.append(item.xmr_minerfeesntv)
now_xmr = item.xmr_minerfeesntv
now_btc = locale.format('%.2f', now_btc, grouping=True)
now_xmr = locale.format('%.2f', now_xmr, grouping=True)
dt = 'minerfeesntv.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/minerfeesntv.html', context)
def minerfees(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_minerfeesusd < 1:
costbtc.append('')
else:
costbtc.append(item.btc_minerfeesusd)
now_btc = item.btc_minerfeesusd
if item.xmr_minerfeesusd < 1:
costxmr.append('')
else:
costxmr.append(item.xmr_minerfeesusd)
now_xmr = item.xmr_minerfeesusd
now_btc = locale.format('%.2f', now_btc, grouping=True)
now_xmr = locale.format('%.2f', now_xmr, grouping=True)
dt = 'minerfees.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/minerfees.html', context)
def dailyemissionntv(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
emissionbtc = []
emissionxmr = []
dates = []
now_btc = 0
now_xmr = 0
for item in data:
if item.btc_emissionntv == 0:
emissionbtc.append('')
else:
emissionbtc.append(item.btc_emissionntv)
now_btc = item.btc_emissionntv
if item.xmr_emissionntv == 0:
emissionxmr.append('')
else:
emissionxmr.append(item.xmr_emissionntv)
now_xmr = item.xmr_emissionntv
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
for i in range(500):
date_aux = item.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
emissionxmr.append('')
emissionbtc.append('')
now_btc = locale.format('%.0f', now_btc, grouping=True)
now_xmr = locale.format('%.0f', now_xmr, grouping=True)
dt = 'dailyemissionntv.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'emissionxmr': emissionxmr, 'emissionbtc': emissionbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/dailyemissionntv.html', context)
def commit(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_commitusd < 0.000001:
costbtc.append('')
else:
costbtc.append(item.btc_commitusd)
now_btc = item.btc_commitusd
if item.xmr_commitusd < 0.000001:
costxmr.append('')
else:
costxmr.append(item.xmr_commitusd)
now_xmr = item.xmr_commitusd
now_btc = locale.format('%.2f', now_btc, grouping=True) + " hashs / dollar"
now_xmr = locale.format('%.2f', now_xmr, grouping=True) + " hashs / dollar"
dt = 'commit.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/commit.html', context)
def commitntv(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_commitntv < 0.00001:
costbtc.append('')
else:
costbtc.append(item.btc_commitntv)
now_btc = item.btc_commitntv
if item.xmr_commitntv < 0.00001:
costxmr.append('')
else:
costxmr.append(item.xmr_commitntv)
now_xmr = item.xmr_commitntv
now_btc = locale.format('%.0f', now_btc, grouping=True) + " hashs / btc"
now_xmr = locale.format('%.0f', now_xmr, grouping=True) + " hashs / xmr"
dt = 'commitntv.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/commitntv.html', context)
def competitorssats(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
xmr = []
dash = []
grin = []
zcash = []
count = 0
now_xmr = 0
now_dash = 0
now_grin = 0
now_zcash = 0
count = 0
coins_xmr = Coin.objects.order_by('date').filter(name='xmr')
for coin_xmr in coins_xmr:
if coin_xmr.pricebtc:
if count > 32:
xmr.append(coin_xmr.pricebtc/0.0058)
now_xmr = coin_xmr.pricebtc/0.0058
dates.append(count)
count += 1
elif count <= 63:
continue
else:
xmr.append('')
count = 0
coins_dash = Coin.objects.order_by('date').filter(name='dash')
for coin_dash in coins_dash:
count += 1
if coin_dash.pricebtc and count > 130:
dash.append(coin_dash.pricebtc/0.02)
now_dash = coin_dash.pricebtc/0.02
elif count <= 130:
continue
else:
dash.append('')
dates.append(count)
count = 0
coins_grin = Coin.objects.order_by('date').filter(name='grin')
for coin_grin in coins_grin:
count += 1
if coin_grin.pricebtc and count > 155:
grin.append(coin_grin.pricebtc/0.000513)
now_grin = coin_grin.pricebtc/0.000513
elif count <= 155:
continue
else:
grin.append('')
dates.append(count)
count = 0
coins_zcash = Coin.objects.order_by('date').filter(name='zec')
for coin_zcash in coins_zcash:
count += 1
if coin_zcash.pricebtc and count > 434:
zcash.append(coin_zcash.pricebtc/0.05)
now_zcash = coin_zcash.pricebtc/0.05
elif count <= 434:
continue
else:
zcash.append('')
dates.append(count)
now_dash = locale.format('%.3f', now_dash, grouping=True)
now_grin = locale.format('%.3f', now_grin, grouping=True)
now_zcash = locale.format('%.3f', now_zcash, grouping=True)
now_xmr = locale.format('%.3f', now_xmr, grouping=True)
dt = 'competitorssats.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'xmr': xmr, 'dash': dash, 'grin': grin, 'zcash': zcash, 'now_xmr': now_xmr,
'now_dash': now_dash, 'now_grin': now_grin, 'now_zcash': now_zcash, 'dates': dates}
return render(request, 'charts/competitorssats.html', context)
def competitorssatslin(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
xmr = []
dash = []
grin = []
zcash = []
count = 0
now_xmr = 0
now_dash = 0
now_grin = 0
now_zcash = 0
count = 0
coins_xmr = Coin.objects.order_by('date').filter(name='xmr')
for coin_xmr in coins_xmr:
if coin_xmr.pricebtc:
if count > 32:
xmr.append(coin_xmr.pricebtc/0.0058)
now_xmr = coin_xmr.pricebtc/0.0058
dates.append(count)
count += 1
elif count <= 63:
continue
else:
xmr.append('')
count = 0
coins_dash = Coin.objects.order_by('date').filter(name='dash')
for coin_dash in coins_dash:
count += 1
if coin_dash.pricebtc and count > 130:
dash.append(coin_dash.pricebtc/0.02)
now_dash = coin_dash.pricebtc/0.02
elif count <= 130:
continue
else:
dash.append('')
dates.append(count)
count = 0
coins_grin = Coin.objects.order_by('date').filter(name='grin')
for coin_grin in coins_grin:
count += 1
if coin_grin.pricebtc and count > 155:
grin.append(coin_grin.pricebtc/0.000513)
now_grin = coin_grin.pricebtc/0.000513
elif count <= 155:
continue
else:
grin.append('')
dates.append(count)
count = 0
coins_zcash = Coin.objects.order_by('date').filter(name='zec')
for coin_zcash in coins_zcash:
count += 1
if coin_zcash.pricebtc and count > 434:
zcash.append(coin_zcash.pricebtc/0.05)
now_zcash = coin_zcash.pricebtc/0.05
elif count <= 434:
continue
else:
zcash.append('')
dates.append(count)
now_dash = locale.format('%.3f', now_dash, grouping=True)
now_grin = locale.format('%.3f', now_grin, grouping=True)
now_zcash = locale.format('%.3f', now_zcash, grouping=True)
now_xmr = locale.format('%.3f', now_xmr, grouping=True)
dt = 'competitorssatslin.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'xmr': xmr, 'dash': dash, 'grin': grin, 'zcash': zcash, 'now_xmr': now_xmr,
'now_dash': now_dash, 'now_grin': now_grin, 'now_zcash': now_zcash, 'dates': dates}
return render(request, 'charts/competitorssatslin.html', context)
def dread_subscribers(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
data1 = []
data2 = []
now_xmr = 0
now_btc = 0
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('Sheet6')
values_mat = wks.get_values(start=(3,1), end=(99,3), returnas='matrix')
for k in range(0,len(values_mat)):
if values_mat[k][0] and values_mat[k][2]:
date = values_mat[k][0]
value1 = values_mat[k][1]
value2 = values_mat[k][2]
if not(value1) or not(value2):
break
else:
dates.append(date)
data1.append(int(value1))
data2.append(int(value2))
now_xmr = int(value2)
now_btc = int(value1)
else:
break
dominance = 100*int(value2)/(int(value2)+int(value1))
now_btc = locale.format('%.0f', now_btc, grouping=True)
now_xmr = locale.format('%.0f', now_xmr, grouping=True)
dominance = locale.format('%.2f', dominance, grouping=True)
dt = 'dread_subscribers.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'now_btc': now_btc, 'now_xmr': now_xmr, 'data1': data1, "data2": data2, "dominance": dominance}
return render(request, 'charts/dread_subscribers.html', context)
def coincards(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
data1 = []
data2 = []
data3 = []
data4 = []
now_xmr = 0
now_btc = 0
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('Sheet2')
values_mat = wks.get_values(start=(3,1), end=(99,5), returnas='matrix')
for k in range(0,len(values_mat)):
if values_mat[k][0] and values_mat[k][2]:
date = values_mat[k][0]
value1 = values_mat[k][1]
value2 = values_mat[k][2]
value3 = values_mat[k][3]
value4 = values_mat[k][4]
if not(value1) or not(value2) or not(value3) or not(value4):
break
else:
dates.append(date)
data1.append(float(value1.replace(',','.')))
data2.append(float(value2.replace(',','.')))
data3.append(float(value3.replace(',','.')))
data4.append(float(value4.replace(',','.')))
now_btc = float(value1.replace(',','.'))
now_xmr = float(value2.replace(',','.'))
now_eth = float(value3.replace(',','.'))
now_others = float(value4.replace(',','.'))
else:
break
now_btc = locale.format('%.1f', now_btc, grouping=True)
now_xmr = locale.format('%.1f', now_xmr, grouping=True)
now_eth = locale.format('%.1f', now_eth, grouping=True)
now_others = locale.format('%.1f', now_others, grouping=True)
dt = 'coincards.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'now_btc': now_btc, 'now_xmr': now_xmr, 'now_eth': now_eth, 'now_others': now_others, 'data1': data1, "data2": data2, "data3": data3, "data4": data4}
return render(request, 'charts/coincards.html', context)
def merchants(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
data1 = []
data2 = []
data3 = []
data4 = []
data5 = []
data6 = []
data7 = []
now_xmr = 0
now_btc = 0
now_eth = 0
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('Sheet3')
values_mat = wks.get_values(start=(3,1), end=(99,8), returnas='matrix')
for k in range(0,len(values_mat)):
if values_mat[k][0] and values_mat[k][2]:
date = values_mat[k][0]
value1 = values_mat[k][1]
value2 = values_mat[k][2]
value3 = values_mat[k][3]
value4 = values_mat[k][4]
value5 = values_mat[k][5]
value6 = values_mat[k][6]
value7 = values_mat[k][7]
if not(value1) or not(value2) or not(value3) or not(value4) or not(value5) or not(value6) or not(value7):
break
else:
dates.append(date)
data1.append(int(value1))
data2.append(int(value2))
data3.append(int(value3))
data4.append(int(value4))
data5.append(int(value5))
data6.append(int(value6))
data7.append(int(value7))
now_btc = int(value1)
now_xmr = int(value2)
now_eth = int(value3)
else:
break
now_btc = locale.format('%.0f', now_btc, grouping=True)
now_xmr = locale.format('%.0f', now_xmr, grouping=True)
now_eth = locale.format('%.0f', now_eth, grouping=True)
dt = 'merchants.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'now_btc': now_btc, 'now_xmr': now_xmr, 'now_eth': now_eth, 'data1': data1, "data2": data2, "data3": data3, "data4": data4, "data5": data5, "data6": data6, "data7": data7}
return render(request, 'charts/merchants.html', context)
def merchants_increase(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
data1 = []
data2 = []
data3 = []
data4 = []
data5 = []
data6 = []
data7 = []
now_xmr = 0
now_btc = 0
now_eth = 0
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('Sheet4')
values_mat = wks.get_values(start=(3,1), end=(99,8), returnas='matrix')
for k in range(0,len(values_mat)):
if values_mat[k][0] and values_mat[k][2]:
date = values_mat[k][0]
value1 = values_mat[k][1]
value2 = values_mat[k][2]
value3 = values_mat[k][3]
value4 = values_mat[k][4]
value5 = values_mat[k][5]
value6 = values_mat[k][6]
value7 = values_mat[k][7]
if not(value1) or not(value2) or not(value3) or not(value4) or not(value5) or not(value6) or not(value7):
break
else:
dates.append(date)
data1.append(int(value1))
data2.append(int(value2))
data3.append(int(value3))
data4.append(int(value4))
data5.append(int(value5))
data6.append(int(value6))
data7.append(int(value7))
now_btc = int(value1)
now_xmr = int(value2)
now_eth = int(value3)
else:
break
now_btc = locale.format('%.0f', now_btc, grouping=True)
now_xmr = locale.format('%.0f', now_xmr, grouping=True)
now_eth = locale.format('%.0f', now_eth, grouping=True)
dt = 'merchants_increase.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'now_btc': now_btc, 'now_xmr': now_xmr, 'now_eth': now_eth, 'data1': data1, "data2": data2, "data3": data3, "data4": data4, "data5": data5, "data6": data6, "data7": data7}
return render(request, 'charts/merchants_increase.html', context)
def merchants_percentage(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
data1 = []
data2 = []
data3 = []
data4 = []
data5 = []
data6 = []
data7 = []
now_xmr = 0
now_btc = 0
now_eth = 0
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('Sheet5')
values_mat = wks.get_values(start=(3,1), end=(99,8), returnas='matrix')
for k in range(0,len(values_mat)):
if values_mat[k][0] and values_mat[k][2]:
date = values_mat[k][0]
value1 = values_mat[k][1]
value2 = values_mat[k][2]
value3 = values_mat[k][3]
value4 = values_mat[k][4]
value5 = values_mat[k][5]
value6 = values_mat[k][6]
value7 = values_mat[k][7]
if not(value1) or not(value2) or not(value3) or not(value4) or not(value5) or not(value6) or not(value7):
break
else:
dates.append(date)
data1.append(float(value1.replace(',', '.')))
data2.append(float(value2.replace(',', '.')))
data3.append(float(value3.replace(',', '.')))
data4.append(float(value4.replace(',', '.')))
data5.append(float(value5.replace(',', '.')))
data6.append(float(value6.replace(',', '.')))
data7.append(float(value7.replace(',', '.')))
now_btc = float(value1.replace(',', '.'))
now_xmr = float(value2.replace(',', '.'))
now_eth = float(value3.replace(',', '.'))
else:
break
now_btc = locale.format('%.1f', now_btc, grouping=True)
now_xmr = locale.format('%.1f', now_xmr, grouping=True)
now_eth = locale.format('%.1f', now_eth, grouping=True)
dt = 'merchants_percentage.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'now_btc': now_btc, 'now_xmr': now_xmr, 'now_eth': now_eth, 'data1': data1, "data2": data2, "data3": data3, "data4": data4, "data5": data5, "data6": data6, "data7": data7}
return render(request, 'charts/merchants_percentage.html', context)
def dominance(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
values = []
pricexmr = []
dates = []
now_value = 0
maximum = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
try:
dominance = Dominance.objects.get(date=coin.date)
if dominance.dominance > 0:
values.append(dominance.dominance)
now_value = dominance.dominance
if now_value > maximum:
maximum = now_value
else:
values.append('')
except:
values.append('')
if coin.priceusd > 0.001:
pricexmr.append(coin.priceusd)
else:
pricexmr.append('')
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
yesterday = date.today() - timedelta(1)
yesterday = datetime.datetime.strftime(yesterday, '%Y-%m-%d')
if coin.date == yesterday:
today = date.today()
today = datetime.datetime.strftime(today, '%Y-%m-%d')
try:
dominance = list(Dominance.objects.order_by('-date'))[0]
if str(dominance.date) == str(today):
now_value = dominance.dominance
dates.append(today)
values.append(now_value)
if now_value > maximum:
maximum = now_value
except:
pass
now_value = locale.format('%.2f', now_value, grouping=True)
maximum = locale.format('%.2f', maximum, grouping=True)
dt = 'dominance.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'values': values, 'dates': dates, 'maximum': maximum, 'now_value': now_value, 'pricexmr': pricexmr}
return render(request, 'charts/dominance.html', context)
def rank(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
values = []
pricexmr = []
dates = []
now_value = 25
maximum = 100
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
try:
rank = Rank.objects.get(date=coin.date)
if rank.rank > 0:
values.append(rank.rank)
now_value = rank.rank
if now_value < maximum:
maximum = now_value
else:
values.append(now_value)
except:
values.append(now_value)
if coin.priceusd > 0.001:
pricexmr.append(coin.priceusd)
else:
pricexmr.append('')
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
yesterday = date.today() - timedelta(1)
yesterday = datetime.datetime.strftime(yesterday, '%Y-%m-%d')
if coin.date == yesterday:
today = date.today()
today = datetime.datetime.strftime(today, '%Y-%m-%d')
try:
rank = list(Rank.objects.order_by('-date'))[0]
if str(rank.date) == str(today):
now_value = rank.rank
dates.append(today)
values.append(now_value)
if now_value < maximum:
maximum = now_value
except:
pass
if now_value == 1:
now_value = locale.format('%.0f', now_value, grouping=True) + 'st'
if now_value == 2:
now_value = locale.format('%.0f', now_value, grouping=True) + 'nd'
if now_value == 3:
now_value = locale.format('%.0f', now_value, grouping=True) + 'rd'
if now_value > 3:
now_value = locale.format('%.0f', now_value, grouping=True) + 'th'
if maximum == 1:
maximum = locale.format('%.0f', maximum, grouping=True) + 'st'
if maximum == 2:
maximum = locale.format('%.0f', maximum, grouping=True) + 'nd'
if maximum == 3:
maximum = locale.format('%.0f', maximum, grouping=True) + 'rd'
if maximum > 3:
maximum = locale.format('%.0f', maximum, grouping=True) + 'th'
dt = 'rank.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'values': values, 'dates': dates, 'maximum': maximum, 'now_value': now_value, 'pricexmr': pricexmr}
return render(request, 'charts/rank.html', context)
def p2pool_hashrate(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
hashrate = []
hashrate_mini = []
combined = []
dates = []
now_hashrate = 0
now_hashrate_mini = 0
now_combined = 0
p2pool_stats = P2Pool.objects.order_by('date').filter(mini=False)
for p2pool_stat in p2pool_stats:
now_combined = 0
if p2pool_stat.hashrate and p2pool_stat.percentage > 0:
now_hashrate = p2pool_stat.hashrate/1000000
now_combined = p2pool_stat.hashrate/1000000
hashrate.append(now_hashrate)
try:
p2pool_stat_mini = P2Pool.objects.filter(mini=True).get(date=p2pool_stat.date)
if p2pool_stat_mini.hashrate and p2pool_stat_mini.percentage > 0:
now_hashrate_mini = p2pool_stat_mini.hashrate/1000000
now_combined += p2pool_stat_mini.hashrate/1000000
except:
pass
hashrate_mini.append(now_hashrate_mini)
combined.append(now_combined)
dates.append(datetime.datetime.strftime(p2pool_stat.date, '%Y-%m-%d'))
dt = 'p2pool_hashrate.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'hashrate': hashrate, 'dates': dates, 'hashrate_mini': hashrate_mini, 'combined': combined}
return render(request, 'charts/p2pool_hashrate.html', context)
def p2pool_dominance(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dominance = []
dominance_mini = []
dates = []
combined = []
now_dominance = 0
now_dominance_mini = 0
p2pool_stats = P2Pool.objects.order_by('date').filter(mini=False)
for p2pool_stat in p2pool_stats:
now_combined = 0
if p2pool_stat.hashrate and p2pool_stat.percentage > 0:
now_dominance = p2pool_stat.percentage
now_combined += p2pool_stat.percentage
dominance.append(now_dominance)
try:
p2pool_stat_mini = P2Pool.objects.filter(mini=True).get(date=p2pool_stat.date)
if p2pool_stat_mini.hashrate and p2pool_stat_mini.percentage > 0:
now_dominance_mini = p2pool_stat_mini.percentage
now_combined += p2pool_stat_mini.percentage
except:
pass
dominance_mini.append(now_dominance_mini)
combined.append(now_combined)
dates.append(datetime.datetime.strftime(p2pool_stat.date, '%Y-%m-%d'))
dt = 'p2pool_dominance.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dominance': dominance, 'dates': dates, 'dominance_mini': dominance_mini,'combined': combined}
return render(request, 'charts/p2pool_dominance.html', context)
def p2pool_totalblocks(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
totalblocks = []
totalblocks_mini = []
combined = []
now_totalblocks = 0
now_totalblocks_mini = 0
now_combined = 0
p2pool_stats = P2Pool.objects.order_by('date').filter(mini=False)
for p2pool_stat in p2pool_stats:
now_combined = 0
if p2pool_stat.totalblocksfound > now_totalblocks:
now_totalblocks = p2pool_stat.totalblocksfound
now_combined += p2pool_stat.totalblocksfound
totalblocks.append(now_totalblocks)
p2pool_stats_mini = P2Pool.objects.filter(mini=True).filter(date=p2pool_stat.date)
for p2pool_stat_mini in p2pool_stats_mini:
if p2pool_stat_mini.totalblocksfound >= now_totalblocks_mini:
now_totalblocks_mini = p2pool_stat_mini.totalblocksfound
now_combined += p2pool_stat_mini.totalblocksfound
break
totalblocks_mini.append(now_totalblocks_mini)
combined.append(now_combined)
dates.append(datetime.datetime.strftime(p2pool_stat.date, '%Y-%m-%d'))
dt = 'p2pool_totalblocks.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'totalblocks': totalblocks, 'totalblocks_mini': totalblocks_mini, 'dates': dates, 'combined': combined}
return render(request, 'charts/p2pool_totalblocks.html', context)
def p2pool_totalhashes(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
totalblocks = []
totalblocks_mini = []
combined = []
now_totalblocks = 0
now_totalblocks_mini = 0
now_combined = 0
p2pool_stats = P2Pool.objects.order_by('date').filter(mini=False)
for p2pool_stat in p2pool_stats:
now_combined = 0
if p2pool_stat.totalhashes > now_totalblocks:
now_totalblocks = p2pool_stat.totalhashes/1000000000000
now_combined += p2pool_stat.totalhashes/1000000000000
totalblocks.append(now_totalblocks)
try:
p2pool_stat_mini = P2Pool.objects.filter(mini=True).get(date=p2pool_stat.date)
if p2pool_stat_mini.totalhashes >= now_totalblocks_mini:
now_totalblocks_mini = p2pool_stat_mini.totalhashes/1000000000000
now_combined += p2pool_stat_mini.totalhashes/1000000000000
except:
pass
totalblocks_mini.append(now_totalblocks_mini)
combined.append(now_combined)
dates.append(datetime.datetime.strftime(p2pool_stat.date, '%Y-%m-%d'))
dt = 'p2pool_totalhashes.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'totalblocks': totalblocks, 'totalblocks_mini': totalblocks_mini, 'dates': dates, 'combined': combined}
return render(request, 'charts/p2pool_totalhashes.html', context)
def p2pool_miners(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
miners = []
miners_mini = []
dates = []
combined = []
now_miners = 0
now_miners_mini = 0
p2pool_stats = P2Pool.objects.order_by('date').filter(mini=False)
for p2pool_stat in p2pool_stats:
now_combined = 0
if p2pool_stat.miners > 0:
now_miners = p2pool_stat.miners
now_combined += p2pool_stat.miners
miners.append(now_miners)
try:
p2pool_stat_mini = P2Pool.objects.filter(mini=True).get(date=p2pool_stat.date)
if p2pool_stat_mini.miners > 0:
now_miners_mini = p2pool_stat_mini.miners
now_combined += p2pool_stat_mini.miners
except:
pass
miners_mini.append(now_miners_mini)
combined.append(now_combined)
dates.append(datetime.datetime.strftime(p2pool_stat.date, '%Y-%m-%d'))
dt = 'p2pool_miners.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'miners': miners, 'dates': dates, 'miners_mini': miners_mini, 'combined': combined}
return render(request, 'charts/p2pool_miners.html', context)
def miningprofitability(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
value = []
now_value = 0
coins = Coin.objects.order_by('date').filter(name='xmr')
for coin in coins:
if coin.hashrate > 0 and coin.priceusd > 0 and coin.revenue > 0:
if 1000*coin.priceusd*coin.revenue/coin.hashrate < 5000:
now_value = 1000*coin.priceusd*coin.revenue/coin.hashrate
dates.append(datetime.datetime.strftime(coin.date, '%Y-%m-%d'))
value.append(now_value)
dt = 'miningprofitability.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'value': value, 'dates': dates}
return render(request, 'charts/miningprofitability.html', context)
def tail_emission(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
inflationxmr = []
finflationxmr = []
dates = []
now_xmr = 999999
coins = Coin.objects.order_by('date').filter(name='xmr')
for coin in coins:
now_xmr = float(coin.inflation)
supply = int(coin.supply)*10**12
for i in range(210000):
supply = int(supply)
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*(10**12)
supply += int(720*reward)
finflationxmr.append(100*reward*720*365/supply)
date_aux = coin.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
now_xmr = locale.format('%.2f', now_xmr, grouping=True) + '%'
dt = 'tail_emission.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'inflationxmr': inflationxmr, 'finflationxmr': finflationxmr, 'now_xmr': now_xmr, 'dates': dates}
return render(request, 'charts/tail_emission.html', context)
def privacymarketcap(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
dates = []
marketcaps = []
xmr_marketcaps = []
now_marketcap = 0
now_dominance = 0
top_marketcap = 0
top_dominance = 0
for item in data:
marketcap = 0
dominance = 0
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.zcash_marketcap > 1000000:
marketcap += item.zcash_marketcap
if item.dash_marketcap > 1000000:
marketcap += item.dash_marketcap
if item.grin_marketcap > 1000000:
marketcap += item.grin_marketcap
if item.xmr_marketcap > 1000000:
marketcap += item.xmr_marketcap
try:
xmr_dominance = Dominance.objects.get(date=item.date)
dominance = marketcap*xmr_dominance.dominance/item.xmr_marketcap
except:
dominance = now_dominance
xmr_marketcaps.append(item.xmr_marketcap)
else:
xmr_marketcaps.append('')
now_marketcap = marketcap
now_dominance = dominance
if now_marketcap > top_marketcap:
top_marketcap = now_marketcap
if now_dominance > top_dominance:
top_dominance = now_dominance
if marketcap > 3000000:
marketcaps.append(marketcap)
else:
marketcaps.append('')
now_marketcap = '$'+locale.format('%.0f', now_marketcap, grouping=True)
now_dominance = locale.format('%.2f', now_dominance, grouping=True) + '%'
top_marketcap = '$'+locale.format('%.0f', top_marketcap, grouping=True)
top_dominance = locale.format('%.2f', top_dominance, grouping=True) + '%'
dt = 'privacymarketcap.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'marketcaps': marketcaps, 'now_marketcap': now_marketcap, 'now_dominance': now_dominance, 'top_marketcap': top_marketcap, 'top_dominance': top_dominance, 'dates': dates, 'xmr_marketcaps': xmr_marketcaps}
return render(request, 'charts/privacymarketcap.html', context)
def privacydominance(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
dates = []
marketcaps = []
dominances = []
now_marketcap = 0
now_dominance = 0
top_marketcap = 0
top_dominance = 0
for item in data:
marketcap = 0
dominance = 0
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.zcash_marketcap > 100000:
marketcap += item.zcash_marketcap
if item.dash_marketcap > 100000:
marketcap += item.dash_marketcap
if item.grin_marketcap > 100000:
marketcap += item.grin_marketcap
if item.xmr_marketcap > 100000:
marketcap += item.xmr_marketcap
try:
xmr_dominance = Dominance.objects.get(date=item.date)
dominance = marketcap*xmr_dominance.dominance/item.xmr_marketcap
except:
dominance = now_dominance
now_marketcap = marketcap
now_dominance = dominance
if now_marketcap > top_marketcap:
top_marketcap = now_marketcap
if now_dominance > top_dominance:
top_dominance = now_dominance
if marketcap > 300000:
marketcaps.append(marketcap)
else:
marketcaps.append('')
if dominance > 0:
dominances.append(dominance)
else:
dominances.append('')
now_marketcap = '$'+locale.format('%.0f', now_marketcap, grouping=True)
now_dominance = locale.format('%.2f', now_dominance, grouping=True) + '%'
top_marketcap = '$'+locale.format('%.0f', top_marketcap, grouping=True)
top_dominance = locale.format('%.2f', top_dominance, grouping=True) + '%'
dt = 'privacymarketcap.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'marketcaps': marketcaps, 'dominances':dominances, 'now_marketcap': now_marketcap, 'now_dominance': now_dominance, 'top_marketcap': top_marketcap, 'top_dominance': top_dominance, 'dates': dates}
return render(request, 'charts/privacydominance.html', context)
def monerodominance(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
data = DailyData.objects.order_by('date')
dates = []
marketcaps = []
xmr_dominance = []
now_marketcap = 0
now_dominance = 0
top_marketcap = 0
top_dominance = 0
for item in data:
marketcap = 0
dominance = 0
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.zcash_marketcap > 1000000:
marketcap += item.zcash_marketcap
if item.dash_marketcap > 1000000:
marketcap += item.dash_marketcap
if item.grin_marketcap > 1000000:
marketcap += item.grin_marketcap
if item.xmr_marketcap > 1000000:
marketcap += item.xmr_marketcap
dominance = 100*item.xmr_marketcap/marketcap
now_marketcap = marketcap
now_dominance = dominance
if now_marketcap > top_marketcap:
top_marketcap = now_marketcap
if now_dominance > top_dominance:
top_dominance = now_dominance
if marketcap > 3000000:
marketcaps.append(marketcap)
else:
marketcaps.append('')
if dominance > 0:
xmr_dominance.append(dominance)
else:
xmr_dominance.append('')
now_marketcap = '$'+locale.format('%.0f', now_marketcap, grouping=True)
now_dominance = locale.format('%.2f', now_dominance, grouping=True) + '%'
top_marketcap = '$'+locale.format('%.0f', top_marketcap, grouping=True)
top_dominance = locale.format('%.2f', top_dominance, grouping=True) + '%'
dt = 'privacymarketcap.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'marketcaps': marketcaps, 'xmr_dominance': xmr_dominance, 'now_marketcap': now_marketcap, 'now_dominance': now_dominance, 'top_marketcap': top_marketcap, 'top_dominance': top_dominance, 'dates': dates}
return render(request, 'charts/monerodominance.html', context)
###########################################
# Previous functions / Older versions
###########################################
def sfmodel_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
update = True
symbol = 'xmr'
yesterday = date.today() - timedelta(1)
start_time = datetime.datetime.strftime(yesterday, '%Y-%m-%d')
try:
coin = Coin.objects.filter(name=symbol).get(date=yesterday)
if coin:
coin.delete()
update = False
print('here')
return
if (coin.inflation > 0) and (coin.priceusd > 0):
update = False
else:
now = datetime.datetime.now()
current_time = int(now.strftime("%H"))
if current_time >= 5:
coin.delete()
update = True
else:
update = True
except:
update = True
if update:
#print('social')
check_new_social('Bitcoin')
check_new_social('Monero')
check_new_social('CryptoCurrency')
#print('metrics')
with open("settings.json") as file:
data = json.load(file)
file.close()
symbol = 'btc'
url = data["metrics_provider"][0]["metrics_url_new"] + symbol + '/' + start_time #url = data["metrics_provider"][0]["metrics_url"] + symbol + data["metrics_provider"][0]["metrics"] + '&start_time=' + start_time
get_latest_metrics(symbol, url)
symbol = 'dash'
url = data["metrics_provider"][0]["metrics_url_new"] + symbol + '/' + start_time #url = data["metrics_provider"][0]["metrics_url"] + symbol + data["metrics_provider"][0]["metrics"] + '&start_time=' + start_time
get_latest_metrics(symbol, url)
symbol = 'grin'
url = data["metrics_provider"][0]["metrics_url_new"] + symbol + '/' + start_time #url = data["metrics_provider"][0]["metrics_url"] + symbol + data["metrics_provider"][0]["metrics"] + '&start_time=' + start_time
get_latest_metrics(symbol, url)
symbol = 'zec'
url = data["metrics_provider"][0]["metrics_url_new"] + symbol + '/' + start_time #url = data["metrics_provider"][0]["metrics_url"] + symbol + data["metrics_provider"][0]["metrics"] + '&start_time=' + start_time
get_latest_metrics(symbol, url)
symbol = 'xmr'
url = data["metrics_provider"][0]["metrics_url_new"] + symbol + '/' + start_time #url = data["metrics_provider"][0]["metrics_url"] + symbol + data["metrics_provider"][0]["metrics"] + '&start_time=' + start_time
get_latest_metrics(symbol, url)
#print('done')
timevar = 1283
now_price = 0
now_sf = 0
now_inflation = 0.001
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
supply = 0
stock = 0.000001
dates = []
stock_to_flow = []
projection = []
color = []
values = []
sf_aux = 0
skipped = 0
start_inflation = 0
count2 = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
dates.append(datetime.datetime.strftime(coin.date, '%Y-%m-%d'))
values.append(coin.priceusd)
date_aux1 = datetime.datetime.strptime('2017-12-29', '%Y-%m-%d')
date_aux2 = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
date_aux2 = datetime.datetime.strptime(date_aux2, '%Y-%m-%d')
if date_aux2 < date_aux1:
lastprice = coin.priceusd
start_inflation = coin.inflation
current_inflation = start_inflation
projection.append('')
count2 = 0
else:
day = date_aux2 - timedelta(timevar)
coin_aux1 = Coin.objects.filter(name=symbol).get(date=day)
day = date_aux2 - timedelta(timevar+1)
coin_aux2 = Coin.objects.filter(name=symbol).get(date=day)
date_aux3 = datetime.datetime.strptime('2017-12-29', '%Y-%m-%d')
if date_aux3 + timedelta(int(count2*2)) < datetime.datetime.strptime('2021-07-03', '%Y-%m-%d'):
day = date_aux3 + timedelta(int(count2*2))
coin_aux3 = Coin.objects.filter(name=symbol).get(date=day)
if coin_aux3:
if (coin_aux3.inflation/current_inflation) > 1.2 or (coin_aux3.inflation/current_inflation) < 0.8:
coin_aux3.inflation = current_inflation
else:
current_inflation = coin_aux3.inflation
supply2 = supply
else:
reward2 = (2**64 -1 - supply2) >> 19
if reward2 < 0.6*(10**12):
reward2 = 0.6*(10**12)
supply2 += int(720*reward2)
current_inflation = 100*reward2*720*365/supply2
if coin_aux1 and coin_aux2:
lastprice += (coin_aux1.priceusd/coin_aux2.priceusd-1)*lastprice
actualprice = lastprice*(math.sqrt(start_inflation/current_inflation))
projection.append(actualprice)
if skipped < 12:
projection.append(actualprice)
else:
skipped = 0
else:
projection.append('')
skipped += 1
if coin.priceusd < 0.01:
coin.priceusd = 0.01
if coin.stocktoflow > sf_aux*2+250:
coin.stocktoflow = sf_aux
sf_aux = coin.stocktoflow
if coin.stocktoflow < 0.1:
coin.stocktoflow = 0.1
now_inflation = coin.inflation
now_price = coin.priceusd
now_sf = coin.stocktoflow
new_color = 30*coin.pricebtc/(count*delta + v0)
color.append(new_color)
supply = int(coin.supply)*10**12
stock_to_flow.append(coin.stocktoflow)
count += 1
count2 += 1
count = 0
for count in range(650):
date_now = date.today() + timedelta(count)
dates.append(datetime.datetime.strftime(date_now, '%Y-%m-%d'))
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*(10**12)
supply += int(720*reward)
inflation = 100*reward*720*365/supply
stock = (100/(inflation))**1.65
stock_to_flow.append(stock)
now_price = "$"+ locale.format('%.2f', now_price, grouping=True)
now_sf = "$"+ locale.format('%.2f', now_sf, grouping=True)
now_inflation = locale.format('%.2f', now_inflation, grouping=True)+'%'
dt = 'sfmodel.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'values': values, 'dates': dates, 'stock_to_flow': stock_to_flow, 'projection': projection,
'now_price': now_price, 'now_inflation': now_inflation, 'now_sf': now_sf, 'color': color}
return render(request, 'charts/sfmodel.html', context)
def sfmodellin_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
now_price = 0
now_sf = 0
now_inflation = 0.001
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
maximum = 0
supply = 0
stock = 0.000001
dates = []
stock_to_flow = []
color = []
values = []
sf_aux = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
dates.append(datetime.datetime.strftime(coin.date, '%Y-%m-%d'))
values.append(coin.priceusd)
now_inflation = coin.inflation
now_price = coin.priceusd
now_sf = coin.stocktoflow
lastprice = coin.priceusd
if now_price > maximum:
maximum = now_price
new_color = 30*coin.pricebtc/(count*delta + v0)
color.append(new_color)
supply = int(coin.supply)*10**12
if coin.stocktoflow > sf_aux*2+250:
coin.stocktoflow = sf_aux
sf_aux = coin.stocktoflow
stock_to_flow.append(coin.stocktoflow)
count += 1
count = 0
for count in range(1):
date_now = date.today() + timedelta(count)
dates.append(datetime.datetime.strftime(date_now, '%Y-%m-%d'))
day = date_now - timedelta(1700)
coin_aux1 = Coin.objects.filter(name=symbol).get(date=day)
day = date_now - timedelta(1701)
coin_aux2 = Coin.objects.filter(name=symbol).get(date=day)
if coin_aux1 and coin_aux2:
lastprice += (coin_aux1.priceusd/coin_aux2.priceusd-1)*lastprice*0.75
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*( 10**12)
supply += int(720*reward)
stock = (100/(100*reward*720*365/supply))**1.65
stock_to_flow.append(stock)
now_price = "$"+ locale.format('%.2f', now_price, grouping=True)
now_sf = "$"+ locale.format('%.2f', now_sf, grouping=True)
now_inflation = locale.format('%.2f', now_inflation, grouping=True)+'%'
dt = 'sfmodellin.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'values': values, 'dates': dates, 'stock_to_flow': stock_to_flow, 'now_price': now_price, 'now_inflation': now_inflation, 'now_sf': now_sf, 'color': color}
return render(request, 'charts/sfmodellin.html', context)
def dailyemission_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
coins_btc = Coin.objects.order_by('date').filter(name='btc')
emissionbtc = []
emissionxmr = []
dates = []
now_btc = 0
now_xmr = 0
high_btc = 0
high_xmr = 0
supplybtc = 0
supplyxmr = 0
valuebtc = 0
valuexmr = 0
for coin_btc in coins_btc:
valuebtc = (coin_btc.supply - supplybtc)*coin_btc.priceusd
if valuebtc < 1000:
emissionbtc.append('')
else:
emissionbtc.append(valuebtc)
supplybtc = coin_btc.supply
dates.append(datetime.datetime.strftime(coin_btc.date, '%Y-%m-%d'))
coins_xmr = Coin.objects.filter(name='xmr').filter(date=coin_btc.date)
if coins_xmr:
for coin_xmr in coins_xmr:
valuexmr = (coin_xmr.supply - supplyxmr)*coin_xmr.priceusd
supplyxmr = coin_xmr.supply
if valuexmr < 1000:
emissionxmr.append('')
else:
emissionxmr.append(valuexmr)
now_xmr = valuexmr
if valuexmr > high_xmr:
high_xmr = valuexmr
else:
emissionxmr.append('')
now_btc = valuebtc
if valuebtc > high_btc:
high_btc = int(valuebtc)
for i in range(500):
date_aux = coin_btc.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
emissionxmr.append('')
emissionbtc.append('')
now_btc = "$" + locale.format('%.0f', now_btc, grouping=True)
now_xmr = "$" + locale.format('%.0f', now_xmr, grouping=True)
high_btc = "$" + locale.format('%.0f', high_btc, grouping=True)
high_xmr = "$" + locale.format('%.0f', high_xmr, grouping=True)
dt = 'dailyemission.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'emissionxmr': emissionxmr, 'emissionbtc': emissionbtc, 'high_xmr': high_xmr, 'high_btc': high_btc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/dailyemission.html', context)
def dailyemissionntv_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
coins_btc = Coin.objects.order_by('date').filter(name='btc')
emissionbtc = []
emissionxmr = []
dates = []
now_btc = 0
now_xmr = 0
supply_btc = 0
supply_xmr = 0
for coin_btc in coins_btc:
dates.append(datetime.datetime.strftime(coin_btc.date, '%Y-%m-%d'))
valuebtc = coin_btc.supply - supply_btc
if valuebtc < 0.000001:
emissionbtc.append('')
else:
emissionbtc.append(valuebtc)
now_btc = valuebtc
supply_btc = coin_btc.supply
coins_xmr = Coin.objects.filter(name='xmr').filter(date=coin_btc.date)
if coins_xmr:
for coin_xmr in coins_xmr:
valuexmr = coin_xmr.supply - supply_xmr
if valuexmr < 0.000001:
emissionxmr.append('')
else:
emissionxmr.append(valuexmr)
now_xmr = valuexmr
supply_xmr = coin_xmr.supply
else:
emissionxmr.append('')
for i in range(500):
date_aux = coin_btc.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
emissionbtc.append('')
emissionxmr.append('')
now_btc = locale.format('%.0f', now_btc, grouping=True)
now_xmr = locale.format('%.0f', now_xmr, grouping=True)
dt = 'dailyemissionntv.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'emissionxmr': emissionxmr, 'emissionbtc': emissionbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/dailyemissionntv.html', context)
def compinflation_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
coins_btc = Coin.objects.order_by('date').filter(name='btc')
dates = []
inflationxmr = []
inflationdash = []
inflationgrin = []
inflationzcash = []
inflationbtc = []
now_xmr = 999999
now_dash = 999999
now_grin = 999999
now_zcash = 999999
now_btc = 999999
count = 0
for coin_btc in coins_btc:
count += 1
if coin_btc.inflation > 0.1:
inflationbtc.append(coin_btc.inflation)
else:
inflationbtc.append('')
dates.append(datetime.datetime.strftime(coin_btc.date, '%Y-%m-%d'))
if count < 1750:
inflationdash.append('')
inflationxmr.append('')
else:
coins_dash = Coin.objects.filter(name='dash').filter(date=coin_btc.date)
if coins_dash:
for coin_dash in coins_dash:
if coin_dash.inflation > 0.1:
inflationdash.append(coin_dash.inflation)
else:
inflationdash.append('')
else:
inflationdash.append('')
coins_xmr = Coin.objects.filter(name='xmr').filter(date=coin_btc.date)
if coins_xmr:
for coin_xmr in coins_xmr:
if coin_xmr.inflation > 0.1:
inflationxmr.append(coin_xmr.inflation)
else:
inflationxmr.append('')
else:
inflationxmr.append('')
if count < 2800:
inflationzcash.append('')
else:
coins_zcash = Coin.objects.filter(name='zec').filter(date=coin_btc.date)
if coins_zcash:
for coin_zcash in coins_zcash:
if coin_zcash.inflation > 0.1:
inflationzcash.append(coin_zcash.inflation)
else:
inflationzcash.append('')
else:
inflationzcash.append('')
if count < 3600:
inflationgrin.append('')
else:
coins_grin = Coin.objects.filter(name='grin').filter(date=coin_btc.date)
if coins_grin:
for coin_grin in coins_grin:
if coin_grin.inflation > 0.1:
inflationgrin.append(coin_grin.inflation)
else:
inflationgrin.append('')
else:
inflationgrin.append('')
if count > 4300:
now_grin = coin_grin.inflation
now_zcash = coin_zcash.inflation
now_btc = coin_btc.inflation
now_xmr = coin_xmr.inflation
now_dash = coin_dash.inflation
now_dash = locale.format('%.2f', now_dash, grouping=True) + '%'
now_grin = locale.format('%.2f', now_grin, grouping=True) + '%'
now_zcash = locale.format('%.2f', now_zcash, grouping=True) + '%'
now_xmr = locale.format('%.2f', now_xmr, grouping=True) + '%'
now_btc = locale.format('%.2f', now_btc, grouping=True) + '%'
dt = 'compinflation.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'inflationxmr': inflationxmr, 'inflationdash': inflationdash, 'inflationgrin': inflationgrin, 'inflationzcash': inflationzcash, 'inflationbtc': inflationbtc,
'now_xmr': now_xmr, 'now_btc': now_btc, 'now_dash': now_dash, 'now_grin': now_grin, 'now_zcash': now_zcash, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/compinflation.html', context)
def bitcoin_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
dates3 = []
dates4 = []
btc = []
xmr3 = []
count1 = 0
count3 = 0
now_xmr = 0
now_btc = 0
coins_btc = Coin.objects.order_by('date').filter(name='btc')
for coin_btc in coins_btc:
if coin_btc.priceusd:
if count1 > 325: #450
btc.append(coin_btc.priceusd/30)
now_btc = coin_btc.priceusd/30
dates.append(count1)
count1 += 1 #1.4
elif count1 <= 325: #450
continue
else:
btc.append('')
coins_xmr = Coin.objects.order_by('date').filter(name='xmr')
for coin_xmr in coins_xmr:
if coin_xmr.priceusd:
if count3 > 30:
xmr3.append(coin_xmr.priceusd/5.01)
dates4.append(count3)
count3 += 0.82
elif count3 <= 30:
continue
else:
xmr3.append('')
dates2 = []
xmr2 = []
btc2 = []
for coin_btc in coins_btc:
if coin_btc.priceusd:
if coin_btc.priceusd/30 > 0.02:
btc2.append(coin_btc.priceusd/30)
else:
btc2.append('')
else:
btc2.append('')
dates2.append(datetime.datetime.strftime(coin_btc.date, '%Y-%m-%d'))
coins_xmr = Coin.objects.filter(name='xmr').filter(date=coin_btc.date)
if coins_xmr:
for coin_xmr in coins_xmr:
if coin_xmr.priceusd/5.01 > 0.02:
xmr2.append(coin_xmr.priceusd/5.01)
else:
xmr2.append('')
else:
xmr2.append('')
now_btc = locale.format('%.2f', now_btc, grouping=True)
now_xmr = locale.format('%.2f', now_xmr, grouping=True)
dt = 'bitcoin.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'btc': btc, 'xmr2': xmr2, 'btc2': btc2, 'xmr3': xmr3, 'dates': dates, 'dates2': dates2, 'dates3': dates3, 'dates4': dates4}
return render(request, 'charts/bitcoin.html', context)
def coins_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
coins_btc = Coin.objects.order_by('date').filter(name='btc')
supplyxmr = []
supplybtc = []
fsupplyxmr = []
fsupplybtc = []
dates = []
now_xmr = 0
now_btc = 0
for coin_btc in coins_btc:
supplybtc.append(int(coin_btc.supply))
dates.append(datetime.datetime.strftime(coin_btc.date, '%Y-%m-%d'))
coins_xmr = Coin.objects.filter(name='xmr').filter(date=coin_btc.date)
if coins_xmr:
for coin_xmr in coins_xmr:
supplyxmr.append(int(coin_xmr.supply))
if coin_xmr.supply > now_xmr:
now_xmr = int(coin_xmr.supply)
else:
supplyxmr.append('')
if coin_btc.supply > now_btc:
now_btc = int(coin_btc.supply)
fsupplyxmr.append('')
fsupplybtc.append('')
rewardbtc = 900
supplybitcoin = coin_btc.supply
supply = int(coin_xmr.supply)*10**12
for i in range(365*(2060-2020)):
supply = int(supply)
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*(10**12)
supply += int(720*reward)
fsupplyxmr.append(supply/(10**12))
date_aux = coin_btc.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
supplybitcoin += rewardbtc
if supplybitcoin > 21000000:
supplybitcoin = 21000000
fsupplybtc.append(supplybitcoin)
date_aux2 = datetime.datetime.strftime(date_aux, '%Y-%m-%d')
if date_aux2 == '2024-04-23':
rewardbtc = rewardbtc/2
if date_aux2 == '2028-05-05':
rewardbtc = rewardbtc/2
if date_aux2 == '2032-05-03':
rewardbtc = rewardbtc/2
if date_aux2 == '2036-04-30':
rewardbtc = rewardbtc/2
if date_aux2 == '2040-04-27':
rewardbtc = rewardbtc/2
if date_aux2 == '2044-04-25':
rewardbtc = rewardbtc/2
if date_aux2 == '2048-04-22':
rewardbtc = rewardbtc/2
if date_aux2 == '2052-04-19':
rewardbtc = rewardbtc/2
if date_aux2 == '2056-04-30':
rewardbtc = rewardbtc/2
if date_aux2 == '2060-04-27':
rewardbtc = rewardbtc/2
if date_aux2 == '2064-04-25':
rewardbtc = rewardbtc/2
if date_aux2 == '2068-04-22':
rewardbtc = rewardbtc/2
if date_aux2 == '2072-04-19':
rewardbtc = rewardbtc/2
if date_aux2 == '2076-04-30':
rewardbtc = rewardbtc/2
if date_aux2 == '2080-04-27':
rewardbtc = rewardbtc/2
if date_aux2 == '2084-04-25':
rewardbtc = rewardbtc/2
if date_aux2 == '2088-04-22':
rewardbtc = rewardbtc/2
if date_aux2 == '2140-01-01':
rewardbtc = 0
supplybitcoin = 21000000
supplyxmr.append('')
supplybtc.append('')
now_btc = locale.format('%.0f', now_btc, grouping=True)
now_xmr = locale.format('%.0f', now_xmr, grouping=True)
dt = 'coins.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'supplyxmr': supplyxmr, 'supplybtc': supplybtc, 'fsupplyxmr': fsupplyxmr, 'fsupplybtc': fsupplybtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/coins.html', context)
def inflation_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
coins_btc = Coin.objects.order_by('date').filter(name='btc')
inflationxmr = []
inflationbtc = []
finflationxmr = []
finflationbtc = []
dates = []
now_xmr = 999999
now_btc = 999999
for coin_btc in coins_btc:
if float(coin_btc.inflation) > 0.1:
inflationbtc.append(float(coin_btc.inflation))
now_btc = float(coin_btc.inflation)
else:
inflationbtc.append('')
dates.append(datetime.datetime.strftime(coin_btc.date, '%Y-%m-%d'))
coins_xmr = Coin.objects.order_by('date').filter(name='xmr').filter(date=coin_btc.date)
if coins_xmr:
for coin_xmr in coins_xmr:
inflationxmr.append(float(coin_xmr.inflation))
now_xmr = float(coin_xmr.inflation)
else:
inflationxmr.append('')
finflationxmr.append('')
finflationbtc.append('')
inflationbitcoin = 1.75
supply = int(coin_xmr.supply)*10**12
for i in range(2000):
supply = int(supply)
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*(10**12)
supply += int(720*reward)
finflationxmr.append(100*reward*720*365/supply)
date_aux = coin_btc.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
finflationbtc.append(inflationbitcoin)
date_aux2 = datetime.datetime.strftime(date_aux, '%Y-%m-%d')
if date_aux2 == '2024-04-23':
inflationbitcoin = 0.65
inflationxmr.append('')
inflationbtc.append('')
now_btc = locale.format('%.2f', now_btc, grouping=True) + '%'
now_xmr = locale.format('%.2f', now_xmr, grouping=True) + '%'
dt = 'inflation.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'inflationxmr': inflationxmr, 'inflationbtc': inflationbtc, 'finflationxmr': finflationxmr, 'finflationbtc': finflationbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/inflation.html', context)
def extracoins_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
coins_btc = Coin.objects.order_by('date').filter(name='btc')
nsupply = []
fsupply = []
dates = []
now_diff = 0
for coin_btc in coins_btc:
dates.append(datetime.datetime.strftime(coin_btc.date, '%Y-%m-%d'))
coins_xmr = Coin.objects.order_by('date').filter(name='xmr').filter(date=coin_btc.date)
if coins_xmr:
for coin_xmr in coins_xmr:
nsupply.append(int(- coin_xmr.supply + coin_btc.supply))
now_diff = int(- coin_xmr.supply + coin_btc.supply)
else:
nsupply.append(int(coin_btc.supply))
fsupply.append('')
rewardbtc = 900
supplybitcoin = coin_btc.supply
supply = int(coin_xmr.supply)*10**12
for i in range(365*(2060-2020)):
supply = int(supply)
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*(10**12)
supply += int(720*reward)
date_aux = coin_btc.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
supplybitcoin += rewardbtc
if supplybitcoin > 21000000:
supplybitcoin = 21000000
fsupply.append(-supply/(10**12) + supplybitcoin)
date_aux2 = datetime.datetime.strftime(date_aux, '%Y-%m-%d')
if date_aux2 == '2024-04-23':
rewardbtc = rewardbtc/2
if date_aux2 == '2028-05-05':
rewardbtc = rewardbtc/2
if date_aux2 == '2032-05-03':
rewardbtc = rewardbtc/2
if date_aux2 == '2036-04-30':
rewardbtc = rewardbtc/2
if date_aux2 == '2040-04-27':
rewardbtc = rewardbtc/2
if date_aux2 == '2044-04-25':
rewardbtc = rewardbtc/2
if date_aux2 == '2048-04-22':
rewardbtc = rewardbtc/2
if date_aux2 == '2052-04-19':
rewardbtc = rewardbtc/2
if date_aux2 == '2056-04-30':
rewardbtc = rewardbtc/2
if date_aux2 == '2060-04-27':
rewardbtc = rewardbtc/2
if date_aux2 == '2064-04-25':
rewardbtc = rewardbtc/2
if date_aux2 == '2068-04-22':
rewardbtc = rewardbtc/2
if date_aux2 == '2072-04-19':
rewardbtc = rewardbtc/2
if date_aux2 == '2076-04-30':
rewardbtc = rewardbtc/2
if date_aux2 == '2080-04-27':
rewardbtc = rewardbtc/2
if date_aux2 == '2084-04-25':
rewardbtc = rewardbtc/2
if date_aux2 == '2088-04-22':
rewardbtc = rewardbtc/2
if date_aux2 == '2140-01-01':
rewardbtc = 0
supplybitcoin = 21000000
nsupply.append('')
now_diff = locale.format('%.0f', now_diff, grouping=True)
dt = 'extracoins.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'nsupply': nsupply, 'fsupply': fsupply, 'dates': dates, 'now_diff': now_diff}
return render(request, 'charts/extracoins.html', context)
def transcost_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
coins_btc = Coin.objects.order_by('date').filter(name='btc')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for coin_btc in coins_btc:
dates.append(datetime.datetime.strftime(coin_btc.date, '%Y-%m-%d'))
if coin_btc.transactions == 0:
costbtc.append('')
else:
valuebtc = coin_btc.fee*coin_btc.priceusd/coin_btc.transactions
if valuebtc < 0.0001:
costbtc.append('')
else:
costbtc.append(valuebtc)
now_btc = valuebtc
coins_xmr = Coin.objects.filter(name='xmr').filter(date=coin_btc.date)
if coins_xmr:
for coin_xmr in coins_xmr:
if coin_xmr.transactions == 0:
costxmr.append('')
else:
valuexmr = coin_xmr.fee*coin_xmr.priceusd/coin_xmr.transactions
if valuexmr < 0.0001:
costxmr.append('')
else:
costxmr.append(valuexmr)
now_xmr = valuexmr
else:
costxmr.append('')
costxmr2.append('')
for i in range(500):
date_aux = coin_btc.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
costbtc.append('')
costxmr.append('')
now_btc = "$" + locale.format('%.2f', now_btc, grouping=True)
now_xmr = "$" + locale.format('%.2f', now_xmr, grouping=True)
dt = 'transcost.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/transcost.html', context)
def transcostntv_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
coins_btc = Coin.objects.order_by('date').filter(name='btc')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for coin_btc in coins_btc:
dates.append(datetime.datetime.strftime(coin_btc.date, '%Y-%m-%d'))
if coin_btc.transactions == 0:
costbtc.append('')
else:
valuebtc = coin_btc.fee/coin_btc.transactions
if valuebtc < 0.000001:
costbtc.append('')
else:
costbtc.append(valuebtc)
now_btc = valuebtc
coins_xmr = Coin.objects.filter(name='xmr').filter(date=coin_btc.date)
if coins_xmr:
for coin_xmr in coins_xmr:
if coin_xmr.transactions == 0:
costxmr.append('')
else:
valuexmr = coin_xmr.fee/coin_xmr.transactions
if valuexmr < 0.000001:
costxmr.append('')
else:
costxmr.append(valuexmr)
now_xmr = valuexmr
else:
costxmr.append('')
for i in range(500):
date_aux = coin_btc.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
costbtc.append('')
costxmr.append('')
now_btc = locale.format('%.6f', now_btc, grouping=True)
now_xmr = locale.format('%.6f', now_xmr, grouping=True)
dt = 'transcostntv.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/transcostntv.html', context)
def metcalfesats_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
color = []
metcalfe = []
prices = []
dates = []
now_metcalfe = 0
now_price = 0
maximum = 0
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
coins_aux = Coin.objects.order_by('date').filter(name='btc').filter(date=coin.date)
if coin.transactions < 500:
coin.transactions = 500
if coins_aux:
for coin_aux in coins_aux:
if coin_aux.supply > 0 and coin_aux.transactions > 0:
now_metcalfe = coin.transactions*coin.supply/(coin_aux.supply*coin_aux.transactions)
if now_metcalfe < 0.001:
now_metcalfe = 0.001
metcalfe.append(now_metcalfe)
if now_metcalfe > maximum:
maximum = now_metcalfe
if coin.pricebtc > 0:
now_price = coin.pricebtc
prices.append(coin.pricebtc)
new_color = 30*coin.pricebtc/(count*delta + v0)
color.append(new_color)
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
count += 1
now_price = locale.format('%.4f', now_price, grouping=True) + ' BTC'
now_metcalfe = locale.format('%.4f', now_metcalfe, grouping=True) + ' BTC'
maximum = locale.format('%.4f', maximum, grouping=True) + ' BTC'
dt = 'metcalfesats.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'metcalfe': metcalfe, 'dates': dates, 'maximum': maximum, 'now_metcalfe': now_metcalfe, 'color': color, 'prices': prices, 'now_price': now_price}
return render(request, 'charts/metcalfesats.html', context)
def metcalfeusd_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
color = []
metcalfe = []
prices = []
dates = []
now_metcalfe = 0
now_price = 0
maximum = 0
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
coins_aux = Coin.objects.order_by('date').filter(name='btc').filter(date=coin.date)
if coin.transactions < 500:
coin.transactions = 500
if coins_aux:
for coin_aux in coins_aux:
if coin_aux.supply > 0 and coin_aux.transactions > 0:
now_metcalfe = coin_aux.priceusd*coin.transactions*coin.supply/(coin_aux.supply*coin_aux.transactions)
if now_metcalfe < 0.23:
now_metcalfe = 0.23
metcalfe.append(now_metcalfe)
if now_metcalfe > maximum:
maximum = now_metcalfe
if coin.priceusd > 0:
now_price = coin.priceusd
prices.append(now_price)
new_color = 30*coin.pricebtc/(count*delta + v0)
color.append(new_color)
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
count += 1
now_price = "$"+ locale.format('%.2f', now_price, grouping=True)
now_metcalfe = "$"+ locale.format('%.2f', now_metcalfe, grouping=True)
maximum = "$"+ locale.format('%.2f', maximum, grouping=True)
dt = 'metcalfeusd.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'metcalfe': metcalfe, 'dates': dates, 'maximum': maximum, 'now_metcalfe': now_metcalfe, 'color': color, 'prices': prices, 'now_price': now_price}
return render(request, 'charts/metcalfeusd.html', context)
def minerrevcap_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
coins_btc = Coin.objects.order_by('date').filter(name='btc')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for coin_btc in coins_btc:
dates.append(datetime.datetime.strftime(coin_btc.date, '%Y-%m-%d'))
if coin_btc.supply == 0:
valuebtc = 0
else:
valuebtc = 365*100*coin_btc.revenue/coin_btc.supply
if valuebtc < 0.0000001:
costbtc.append('')
else:
costbtc.append(valuebtc)
now_btc = valuebtc
coins_xmr = Coin.objects.filter(name='xmr').filter(date=coin_btc.date)
if coins_xmr:
for coin_xmr in coins_xmr:
if coin_xmr.supply == 0:
valuexmr = 0
else:
valuexmr = 365*100*coin_xmr.revenue/coin_xmr.supply
if valuexmr < 0.0000001:
costxmr.append('')
else:
costxmr.append(valuexmr)
now_xmr = valuexmr
else:
costxmr.append('')
for i in range(500):
date_aux = coin_btc.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
costbtc.append('')
costxmr.append('')
now_btc = locale.format('%.2f', now_btc, grouping=True) + "%"
now_xmr = locale.format('%.2f', now_xmr, grouping=True) + "%"
dt = 'minerrevcap.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/minerrevcap.html', context)
def marketcap_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
xmr = []
dash = []
grin = []
zcash = []
now_xmr = 0
now_dash = 0
now_grin = 0
now_zcash = 0
coins_xmr = Coin.objects.order_by('date').filter(name='xmr')
for coin_xmr in coins_xmr:
dates.append(datetime.datetime.strftime(coin_xmr.date, '%Y-%m-%d'))
if coin_xmr.priceusd:
xmr.append(coin_xmr.priceusd*coin_xmr.supply)
now_xmr = coin_xmr.priceusd*coin_xmr.supply
else:
xmr.append('')
try:
coin_dash = Coin.objects.filter(name='dash').get(date=coin_xmr.date)
now_dash = coin_dash.priceusd*coin_dash.supply
if now_dash > 1000000:
dash.append(now_dash)
else:
dash.append('')
except:
dash.append('')
try:
coin_zcash = Coin.objects.filter(name='zec').get(date=coin_xmr.date)
now_zcash = coin_zcash.priceusd*coin_zcash.supply
if now_zcash > 1000000:
zcash.append(now_zcash)
else:
zcash.append('')
except:
zcash.append('')
try:
coin_grin = Coin.objects.filter(name='grin').get(date=coin_xmr.date)
now_grin = coin_grin.priceusd*coin_grin.supply
if now_grin > 1000000:
grin.append(now_grin)
else:
grin.append('')
except:
grin.append('')
now_dash = '$'+locale.format('%.0f', now_dash, grouping=True)
now_grin = '$'+locale.format('%.0f', now_grin, grouping=True)
now_zcash = '$'+locale.format('%.0f', now_zcash, grouping=True)
now_xmr = '$'+locale.format('%.0f', now_xmr, grouping=True)
dt = 'marketcap.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'xmr': xmr, 'dash': dash, 'grin': grin, 'zcash': zcash, 'now_xmr': now_xmr,
'now_dash': now_dash, 'now_grin': now_grin, 'now_zcash': now_zcash, 'dates': dates}
return render(request, 'charts/marketcap.html', context)
def social_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
dates2 = []
social_xmr = []
social_crypto = []
social_btc = []
last_xmr = 0
last_btc = 0
last_crypto = 0
socials = Social.objects.order_by('date').filter(name='Bitcoin')
for social in socials:
dates.append(datetime.datetime.strftime(social.date, '%Y-%m-%d'))
if social.subscriberCount > last_btc:
last_btc = social.subscriberCount
social_btc.append(social.subscriberCount)
else:
social_btc.append(last_btc)
socialscrypto = Social.objects.filter(date=social.date).filter(name='CryptoCurrency')
if socialscrypto:
for socialcrypto in socialscrypto:
if socialcrypto.subscriberCount > last_crypto:
social_crypto.append(socialcrypto.subscriberCount)
last_crypto = socialcrypto.subscriberCount
else:
social_crypto.append(last_crypto)
else:
social_crypto.append(last_crypto)
socialsxmr = Social.objects.order_by('date').filter(name='Monero')
for socialxmr in socialsxmr:
dates2.append(datetime.datetime.strftime(socialxmr.date, '%Y-%m-%d'))
if socialxmr.subscriberCount > last_xmr:
social_xmr.append(socialxmr.subscriberCount)
last_xmr = socialxmr.subscriberCount
else:
social_xmr.append(last_xmr)
last_xmr = locale.format('%.0f', last_xmr, grouping=True)
last_btc = locale.format('%.0f', last_btc, grouping=True)
last_crypto = locale.format('%.0f', last_crypto, grouping=True)
dt = 'social.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'dates2': dates2, 'social_xmr': social_xmr, 'social_crypto': social_crypto, 'social_btc': social_btc, 'last_xmr': last_xmr, 'last_btc': last_btc, 'last_crypto': last_crypto}
return render(request, 'charts/social.html', context)
def social2_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
social_btc = []
last_btc = 0
N = 1
socials = Social.objects.order_by('date').filter(name='Bitcoin')
for social in socials:
coins = Coin.objects.filter(date=social.date).filter(name='btc')
if coins:
for coin in coins:
if social.subscriberCount > 0 and coin.priceusd > 0 and coin.supply > 0:
last_btc = ((coin.priceusd*coin.supply)**N)/social.subscriberCount
social_btc.append(last_btc)
dates.append(datetime.datetime.strftime(social.date, '%Y-%m-%d'))
dates2 = []
social_xmr = []
last_xmr = 0
N = 1
socials = Social.objects.order_by('date').filter(name='Monero')
for social in socials:
coins = Coin.objects.filter(date=social.date).filter(name='xmr')
if coins:
for coin in coins:
if social.subscriberCount > 0 and coin.priceusd > 0 and coin.supply > 0:
last_xmr = ((coin.priceusd*coin.supply)**N)/social.subscriberCount
social_xmr.append(last_xmr)
dates2.append(datetime.datetime.strftime(social.date, '%Y-%m-%d'))
last_xmr = '$' + locale.format('%.0f', last_xmr, grouping=True)
last_btc = '$' + locale.format('%.0f', last_btc, grouping=True)
dt = 'social2.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'dates2': dates2, 'social_btc': social_btc, 'social_xmr': social_xmr, 'last_xmr': last_xmr, 'last_btc': last_btc}
return render(request, 'charts/social2.html', context)
def social3_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
dates = []
social_xmr = []
last_xmr = 0.001
social_crypto = []
last_crypto = 0.001
socials = Social.objects.order_by('date').filter(name='Bitcoin')
for social in socials:
dates.append(datetime.datetime.strftime(social.date, '%Y-%m-%d'))
socialsxmr = Social.objects.filter(date=social.date).filter(name='Monero')
if socialsxmr:
for socialxmr in socialsxmr:
if socialxmr.subscriberCount > 0.001 and social.subscriberCount > 0.001:
if socialxmr.subscriberCount/social.subscriberCount > 0.001:
last_xmr = 100*(socialxmr.subscriberCount/social.subscriberCount)
social_xmr.append(last_xmr)
else:
social_xmr.append(last_xmr)
else:
social_xmr.append(last_xmr)
else:
social_xmr.append(last_xmr)
socialscrypto = Social.objects.filter(date=social.date).filter(name='CryptoCurrency')
if socialscrypto:
for socialcrypto in socialscrypto:
if socialcrypto.subscriberCount > 0.001 and social.subscriberCount > 0.001:
if socialcrypto.subscriberCount/social.subscriberCount > 0.001:
last_crypto = 100*(socialcrypto.subscriberCount/social.subscriberCount)
social_crypto.append(last_crypto)
else:
social_crypto.append(last_crypto)
else:
social_crypto.append(last_crypto)
else:
social_crypto.append(last_crypto)
last_xmr = locale.format('%.1f', last_xmr, grouping=True)+ '%'
last_crypto = locale.format('%.1f', last_crypto, grouping=True)+ '%'
dt = 'social3.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'social_xmr': social_xmr, 'social_crypto': social_crypto, 'last_xmr': last_xmr, 'last_crypto': last_crypto}
return render(request, 'charts/social3.html', context)
def social4_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
socials = Social.objects.order_by('date').filter(name='Bitcoin')
dates = []
social_xmr = []
social_crypto = []
social_btc = []
last_xmr = 0
last_btc = 0
last_crypto = 0
socials = Social.objects.order_by('date').filter(name='Bitcoin')
for social in socials:
dates.append(datetime.datetime.strftime(social.date, '%Y-%m-%d'))
if social.subscriberCount > last_btc:
last_btc = social.subscriberCount
social_btc.append(social.subscriberCount)
else:
social_btc.append(last_btc)
socialscrypto = Social.objects.filter(date=social.date).filter(name='CryptoCurrency')
if socialscrypto:
for socialcrypto in socialscrypto:
if socialcrypto.subscriberCount > last_crypto:
social_crypto.append(socialcrypto.subscriberCount)
last_crypto = socialcrypto.subscriberCount
else:
social_crypto.append(last_crypto)
else:
social_crypto.append(last_crypto)
socialsxmr = Social.objects.filter(date=social.date).filter(name='Monero')
if socialsxmr:
for socialxmr in socialsxmr:
if socialxmr.subscriberCount > last_xmr:
social_xmr.append(socialxmr.subscriberCount)
last_xmr = socialxmr.subscriberCount
else:
social_xmr.append(last_xmr)
else:
social_xmr.append(last_xmr)
N = 30
last_btc = ''
speed_btc = []
for i in range(len(social_btc)):
if i < N:
speed_btc.append(last_btc)
else:
if social_btc[i-N] != 0 and social_btc[i] - social_btc[i-N] != 0:
last_btc = 100*(social_btc[i] - social_btc[i-N])/social_btc[i-N]
if last_btc < 0.2:
last_btc = 0.2
if last_btc > 1000:
last_btc = ''
else:
last_btc = ''
speed_btc.append(last_btc)
last_btc = ''
newcomers_btc = []
for i in range(len(social_btc)):
if i < N:
newcomers_btc.append(last_btc)
else:
last_btc = (social_btc[i] - social_btc[i-N])
if last_btc < 10:
last_btc = ''
newcomers_btc.append(last_btc)
last_crypto = ''
speed_crypto = []
for i in range(len(social_crypto)):
if i < N:
speed_crypto.append(last_crypto)
else:
if social_crypto[i-N] != 0 and social_crypto[i] - social_crypto[i-N] != 0:
last_crypto = 100*(social_crypto[i] - social_crypto[i-N])/social_crypto[i-N]
if last_crypto < 0.2:
last_crypto = 0.2
if last_crypto > 1000:
last_crypto = ''
else:
last_crypto = ''
speed_crypto.append(last_crypto)
last_crypto = ''
newcomers_crypto = []
for i in range(len(social_crypto)):
if i < N:
newcomers_crypto.append(last_crypto)
else:
last_crypto = (social_crypto[i] - social_crypto[i-N])
if last_crypto < 2:
last_crypto = ''
newcomers_crypto.append(last_crypto)
last_xmr = ''
speed_xmr = []
for i in range(len(social_xmr)):
if i < N:
speed_xmr.append(last_xmr)
else:
if social_xmr[i-N] != 0 and social_xmr[i] - social_xmr[i-N] != 0:
last_xmr = 100*(social_xmr[i] - social_xmr[i-N])/social_xmr[i-N]
if last_xmr < 0.2:
last_xmr = 0.2
if last_xmr > 1000:
last_xmr = ''
else:
last_xmr = ''
speed_xmr.append(last_xmr)
last_xmr = ''
newcomers_xmr = []
for i in range(len(social_xmr)):
if i < N:
newcomers_xmr.append(last_xmr)
else:
last_xmr = (social_xmr[i] - social_xmr[i-N])
if last_xmr < 0:
last_xmr = ''
newcomers_xmr.append(last_xmr)
last_xmr = locale.format('%.0f', last_xmr, grouping=True)
last_btc = locale.format('%.0f', last_btc, grouping=True)
last_crypto = locale.format('%.0f', last_crypto, grouping=True)
dt = 'social4.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'speed_xmr': speed_xmr, 'speed_crypto': speed_crypto, 'speed_btc': speed_btc, 'newcomers_xmr': newcomers_xmr, 'newcomers_btc': newcomers_btc, 'newcomers_crypto': newcomers_crypto, 'last_xmr': last_xmr, 'last_btc': last_btc, 'last_crypto': last_crypto}
return render(request, 'charts/social4.html', context)
def social5_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
transactions = []
pricexmr = []
dates = []
now_transactions = 0
dates = []
social_xmr = []
last_xmr = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
if coins:
for coin in coins:
dates.append(datetime.datetime.strftime(coin.date, '%Y-%m-%d'))
socials = Social.objects.filter(date=coin.date).filter(name='Monero')
if socials:
for social in socials:
if social.subscriberCount > last_xmr:
last_xmr = social.subscriberCount
social_xmr.append(social.subscriberCount)
else:
social_xmr.append(last_xmr)
else:
social_xmr.append(last_xmr)
if coin.transactions > 200:
transactions.append(coin.transactions)
now_transactions = coin.transactions
else:
transactions.append('')
if coin.priceusd > 0.001:
pricexmr.append(coin.priceusd)
else:
pricexmr.append('')
else:
pricexmr.append('')
transactions.append('')
last_xmr = locale.format('%.0f', last_xmr, grouping=True)
now_transactions = locale.format('%.0f', now_transactions, grouping=True)
dt = 'social5.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'social_xmr': social_xmr, 'last_xmr': last_xmr, 'now_transactions': now_transactions, 'transactions': transactions, 'pricexmr': pricexmr}
return render(request, 'charts/social5.html', context)
def social6_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
socials = Social.objects.order_by('date').filter(name='Bitcoin')
dates = []
social_xmr = []
social_crypto = []
social_btc = []
last_xmr = 0
last_btc = 0
last_crypto = 0
socials = Social.objects.order_by('date').filter(name='Bitcoin')
for social in socials:
dates.append(datetime.datetime.strftime(social.date, '%Y-%m-%d'))
if social.commentsPerHour*24 < last_btc/4:
social_btc.append(last_btc)
else:
social_btc.append(social.commentsPerHour*24)
last_btc = social.commentsPerHour*24
socialscrypto = Social.objects.filter(date=social.date).filter(name='CryptoCurrency')
if socialscrypto:
for socialcrypto in socialscrypto:
if socialcrypto.commentsPerHour*24 < last_crypto/4:
social_crypto.append(last_crypto)
else:
social_crypto.append(socialcrypto.commentsPerHour*24)
last_crypto = socialcrypto.commentsPerHour*24
else:
social_crypto.append(last_crypto)
socialsxmr = Social.objects.filter(date=social.date).filter(name='Monero')
if socialsxmr:
for socialxmr in socialsxmr:
if socialxmr.commentsPerHour*24 < last_xmr/4:
social_xmr.append(last_xmr)
else:
social_xmr.append(socialxmr.commentsPerHour*24)
last_xmr = socialxmr.commentsPerHour*24
else:
social_xmr.append(last_xmr)
last_xmr = locale.format('%.0f', last_xmr, grouping=True)
last_btc = locale.format('%.0f', last_btc, grouping=True)
last_crypto = locale.format('%.0f', last_crypto, grouping=True)
dt = 'social6.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'social_xmr': social_xmr, 'social_crypto': social_crypto, 'social_btc': social_btc, 'last_xmr': last_xmr, 'last_btc': last_btc, 'last_crypto': last_crypto}
return render(request, 'charts/social6.html', context)
def social7_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
socials = Social.objects.order_by('date').filter(name='Bitcoin')
dates = []
social_xmr = []
social_crypto = []
social_btc = []
last_xmr = 0
last_btc = 0
last_crypto = 0
socials = Social.objects.order_by('date').filter(name='Bitcoin')
for social in socials:
dates.append(datetime.datetime.strftime(social.date, '%Y-%m-%d'))
social_btc.append(social.postsPerHour*24)
last_btc = social.postsPerHour*24
socialscrypto = Social.objects.filter(date=social.date).filter(name='CryptoCurrency')
if socialscrypto:
for socialcrypto in socialscrypto:
social_crypto.append(socialcrypto.postsPerHour*24)
last_crypto = socialcrypto.postsPerHour*24
else:
social_crypto.append(last_crypto)
socialsxmr = Social.objects.filter(date=social.date).filter(name='Monero')
if socialsxmr:
for socialxmr in socialsxmr:
social_xmr.append(socialxmr.postsPerHour*24)
last_xmr = socialxmr.postsPerHour*24
else:
social_xmr.append(last_xmr)
last_xmr = locale.format('%.0f', last_xmr, grouping=True)
last_btc = locale.format('%.0f', last_btc, grouping=True)
last_crypto = locale.format('%.0f', last_crypto, grouping=True)
dt = 'social7.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'dates': dates, 'social_xmr': social_xmr, 'social_crypto': social_crypto, 'social_btc': social_btc, 'last_xmr': last_xmr, 'last_btc': last_btc, 'last_crypto': last_crypto}
return render(request, 'charts/social7.html', context)
def minerrev_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
coins_btc = Coin.objects.order_by('date').filter(name='btc')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for coin_btc in coins_btc:
dates.append(datetime.datetime.strftime(coin_btc.date, '%Y-%m-%d'))
valuebtc = coin_btc.revenue*coin_btc.priceusd
if valuebtc < 0.0001:
costbtc.append('')
else:
costbtc.append(valuebtc)
now_btc = valuebtc
coins_xmr = Coin.objects.filter(name='xmr').filter(date=coin_btc.date)
if coins_xmr:
for coin_xmr in coins_xmr:
valuexmr = coin_xmr.revenue*coin_xmr.priceusd
if valuexmr < 0.0001:
costxmr.append('')
else:
costxmr.append(valuexmr)
now_xmr = valuexmr
else:
costxmr.append('')
for i in range(500):
date_aux = coin_btc.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
costbtc.append('')
costxmr.append('')
now_btc = "$" + locale.format('%.2f', now_btc, grouping=True)
now_xmr = "$" + locale.format('%.2f', now_xmr, grouping=True)
dt = 'minerrev.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/minerrev.html', context)
def minerrevntv_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
coins_btc = Coin.objects.order_by('date').filter(name='btc')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for coin_btc in coins_btc:
dates.append(datetime.datetime.strftime(coin_btc.date, '%Y-%m-%d'))
valuebtc = coin_btc.revenue
if valuebtc < 0.000001:
costbtc.append('')
else:
costbtc.append(valuebtc)
now_btc = valuebtc
coins_xmr = Coin.objects.filter(name='xmr').filter(date=coin_btc.date)
if coins_xmr:
for coin_xmr in coins_xmr:
valuexmr = coin_xmr.revenue
if valuexmr < 0.000001:
costxmr.append('')
else:
costxmr.append(valuexmr)
now_xmr = valuexmr
else:
costxmr.append('')
for i in range(500):
date_aux = coin_btc.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
costbtc.append('')
costxmr.append('')
now_btc = locale.format('%.2f', now_btc, grouping=True)
now_xmr = locale.format('%.2f', now_xmr, grouping=True)
dt = 'minerrevntv.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/minerrevntv.html', context)
def minerfees_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
coins_btc = Coin.objects.order_by('date').filter(name='btc')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
supply_btc = 0
supply_xmr = 0
for coin_btc in coins_btc:
dates.append(datetime.datetime.strftime(coin_btc.date, '%Y-%m-%d'))
valuebtc = (coin_btc.revenue - coin_btc.supply + supply_btc)*coin_btc.priceusd
supply_btc = coin_btc.supply
if valuebtc < 1:
costbtc.append('')
else:
costbtc.append(valuebtc)
now_btc = valuebtc
coins_xmr = Coin.objects.filter(name='xmr').filter(date=coin_btc.date)
if coins_xmr:
for coin_xmr in coins_xmr:
valuexmr = (coin_xmr.revenue - coin_xmr.supply + supply_xmr)*coin_xmr.priceusd
supply_xmr = coin_xmr.supply
if valuexmr < 1:
costxmr.append('')
else:
costxmr.append(valuexmr)
now_xmr = valuexmr
else:
costxmr.append('')
for i in range(500):
date_aux = coin_btc.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
costbtc.append('')
costxmr.append('')
now_btc = locale.format('%.2f', now_btc, grouping=True)
now_xmr = locale.format('%.2f', now_xmr, grouping=True)
dt = 'minerfees.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/minerfees.html', context)
def minerfeesntv_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
coins_btc = Coin.objects.order_by('date').filter(name='btc')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
supply_btc = 0
supply_xmr = 0
for coin_btc in coins_btc:
dates.append(datetime.datetime.strftime(coin_btc.date, '%Y-%m-%d'))
valuebtc = coin_btc.revenue - coin_btc.supply + supply_btc
supply_btc = coin_btc.supply
if valuebtc < 0.1:
costbtc.append('')
else:
costbtc.append(valuebtc)
now_btc = valuebtc
coins_xmr = Coin.objects.filter(name='xmr').filter(date=coin_btc.date)
if coins_xmr:
for coin_xmr in coins_xmr:
valuexmr = coin_xmr.revenue - coin_xmr.supply + supply_xmr
supply_xmr = coin_xmr.supply
if valuexmr < 0.1:
costxmr.append('')
else:
costxmr.append(valuexmr)
now_xmr = valuexmr
else:
costxmr.append('')
for i in range(500):
date_aux = coin_btc.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
costbtc.append('')
costxmr.append('')
now_btc = locale.format('%.2f', now_btc, grouping=True)
now_xmr = locale.format('%.2f', now_xmr, grouping=True)
dt = 'minerfeesntv.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/minerfeesntv.html', context)
def commit_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
coins_btc = Coin.objects.order_by('date').filter(name='btc')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for coin_btc in coins_btc:
dates.append(datetime.datetime.strftime(coin_btc.date, '%Y-%m-%d'))
if coin_btc.revenue*coin_btc.priceusd < 0.01:
costbtc.append('')
else:
valuebtc = coin_btc.hashrate/(coin_btc.revenue*coin_btc.priceusd)
costbtc.append(valuebtc)
now_btc = valuebtc
coins_xmr = Coin.objects.filter(name='xmr').filter(date=coin_btc.date)
if coins_xmr:
for coin_xmr in coins_xmr:
if coin_xmr.revenue*coin_xmr.priceusd < 0.01:
costxmr.append('')
else:
valuexmr = coin_xmr.hashrate/(coin_xmr.revenue*coin_xmr.priceusd)
costxmr.append(valuexmr)
now_xmr = valuexmr
else:
costxmr.append('')
for i in range(500):
date_aux = coin_btc.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
costbtc.append('')
costxmr.append('')
now_btc = locale.format('%.2f', now_btc, grouping=True) + " hashs / dollar"
now_xmr = locale.format('%.2f', now_xmr, grouping=True) + " hashs / dollar"
dt = 'commit.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/commit.html', context)
def commitntv_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
coins_btc = Coin.objects.order_by('date').filter(name='btc')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for coin_btc in coins_btc:
dates.append(datetime.datetime.strftime(coin_btc.date, '%Y-%m-%d'))
if coin_btc.revenue < 0.01:
costbtc.append('')
else:
valuebtc = coin_btc.hashrate/coin_btc.revenue
if valuebtc < 0.001:
costbtc.append('')
else:
costbtc.append(valuebtc)
now_btc = valuebtc
coins_xmr = Coin.objects.filter(name='xmr').filter(date=coin_btc.date)
if coins_xmr:
for coin_xmr in coins_xmr:
if coin_xmr.revenue < 0.01:
costxmr.append('')
else:
valuexmr = coin_xmr.hashrate/coin_xmr.revenue
if valuexmr < 0.001:
costxmr.append('')
else:
costxmr.append(valuexmr)
now_xmr = valuexmr
else:
costxmr.append('')
for i in range(500):
date_aux = coin_btc.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
costbtc.append('')
costxmr.append('')
now_btc = locale.format('%.0f', now_btc, grouping=True) + " hashs / btc"
now_xmr = locale.format('%.0f', now_xmr, grouping=True) + " hashs / xmr"
dt = 'commitntv.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/commitntv.html', context)
def percentage_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
transactions = []
dates = []
now_transactions = 0
maximum = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
coins_aux = Coin.objects.order_by('date').filter(name='btc').filter(date=coin.date)
if coin.transactions < 500:
coin.transactions = 500
if coins_aux:
for coin_aux in coins_aux:
if coin_aux.supply > 0 and coin_aux.transactions > 0:
now_transactions = 100*coin.transactions/coin_aux.transactions
if now_transactions > maximum:
maximum = now_transactions
if now_transactions < 0.001:
now_transactions = 0.001
transactions.append(now_transactions)
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
now_transactions = locale.format('%.1f', now_transactions, grouping=True) + '%'
maximum = locale.format('%.1f', maximum, grouping=True) + '%'
dt = 'percentage.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'transactions': transactions, 'dates': dates, 'now_transactions': now_transactions, 'maximum': maximum}
return render(request, 'charts/percentage.html', context)
def pricesats_old(request):
if request.user.username != "Administrador" and request.user.username != "Morpheus":
update_visitors(False)
dt = datetime.datetime.now(timezone.utc).timestamp()
symbol = 'xmr'
projection = []
color = []
values = []
dates = []
now_price = 0
maximum = 0
bottom = 1
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
dates.append(datetime.datetime.strftime(coin.date, '%Y-%m-%d'))
if coin.pricebtc > 0.001:
values.append(coin.pricebtc)
else:
values.append('')
date_aux1 = datetime.datetime.strptime('2021-03-15', '%Y-%m-%d')
date_aux2 = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
date_aux2 = datetime.datetime.strptime(date_aux2, '%Y-%m-%d')
if date_aux2 < date_aux1:
lastprice = coin.pricebtc
projection.append('')
else:
day = date_aux2 - timedelta(1700)
coin_aux1 = Coin.objects.filter(name=symbol).get(date=day)
day = date_aux2 - timedelta(1701)
coin_aux2 = Coin.objects.filter(name=symbol).get(date=day)
if coin_aux1 and coin_aux2:
lastprice += (coin_aux1.pricebtc/coin_aux2.pricebtc-1)*lastprice*0.75
projection.append(lastprice)
else:
projection.append('')
if coin.pricebtc > 0:
now_price = coin.pricebtc
if now_price > maximum:
maximum = now_price
if now_price > 0:
if now_price < bottom:
bottom = now_price
new_color = 30*coin.pricebtc/(count*delta + v0)
color.append(new_color)
count += 1
count = 0
for count in range(300):
date_now = date.today() + timedelta(count)
dates.append(datetime.datetime.strftime(date_now, '%Y-%m-%d'))
day = date_now - timedelta(1900)
coin_aux1 = Coin.objects.filter(name=symbol).get(date=day)
day = date_now - timedelta(1901)
coin_aux2 = Coin.objects.filter(name=symbol).get(date=day)
if coin_aux1 and coin_aux2:
lastprice += (coin_aux1.pricebtc/coin_aux2.pricebtc-1)*lastprice*0.75
projection.append(lastprice)
else:
projection.append('')
now_price = locale.format('%.4f', now_price, grouping=True) + ' BTC'
maximum = locale.format('%.4f', maximum, grouping=True) + ' BTC'
bottom = locale.format('%.4f', bottom, grouping=True) + ' BTC'
dt = 'pricesats.html ' + locale.format('%.2f', datetime.datetime.now(timezone.utc).timestamp() - dt, grouping=True)+' seconds'
print(dt)
context = {'values': values, 'dates': dates, 'maximum': maximum, 'now_price': now_price, 'color': color, 'projection': projection, 'bottom': bottom}
return render(request, 'charts/pricesats.html', context)