major bugs fixed
This commit is contained in:
parent
089423e364
commit
290f4f2c56
10 changed files with 530 additions and 403 deletions
|
@ -75,7 +75,7 @@
|
||||||
<!-- End Hero -->
|
<!-- End Hero -->
|
||||||
|
|
||||||
|
|
||||||
<br><br><br><br><br><br>
|
<br><br><br><br><br>
|
||||||
<!-- ======= Footer ======= -->
|
<!-- ======= Footer ======= -->
|
||||||
<footer id="footer">
|
<footer id="footer">
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,7 @@
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<!-- End Hero -->
|
<!-- End Hero -->
|
||||||
<br><br><br><br><br><br>
|
<br><br><br><br><br>
|
||||||
<!-- ======= Footer ======= -->
|
<!-- ======= Footer ======= -->
|
||||||
<footer id="footer">
|
<footer id="footer">
|
||||||
|
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
{% extends 'monerojnet/base.html' %}
|
|
||||||
{% block content %}
|
|
||||||
|
|
||||||
{{ message }}
|
|
||||||
|
|
||||||
{% endblock %}
|
|
|
@ -1,6 +1,102 @@
|
||||||
{% extends 'monerojnet/base.html' %}
|
<!DOCTYPE html>
|
||||||
{% block content %}
|
<html lang="en">
|
||||||
|
{% load static %}
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta content="width=device-width, initial-scale=1.0" name="viewport">
|
||||||
|
|
||||||
{{ message }}
|
<title>Moneroj.net</title>
|
||||||
|
<meta content="" name="description">
|
||||||
|
<meta content="" name="keywords">
|
||||||
|
|
||||||
{% endblock %}
|
<link href="{% static 'css/style.css' %}" rel="stylesheet">
|
||||||
|
<link href="{% static 'img/favicon.png' %}" rel="icon">
|
||||||
|
<link href="{% static 'img/apple-touch-icon.png' %}" rel="apple-touch-icon">
|
||||||
|
<link href="{% static 'vendor/bootstrap/css/bootstrap.min.css' %}" rel="stylesheet">
|
||||||
|
<link href="{% static 'vendor/boxicons/css/boxicons.min.css' %}" rel="stylesheet">
|
||||||
|
<link href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" rel="stylesheet" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
div.a {
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.color-orange {
|
||||||
|
color: #ff6b3b;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<nav class="navbar navbar-expand-lg navbar-light">
|
||||||
|
<div class="container">
|
||||||
|
<a class="navbar-brand" href="{% url 'monerojnet:index' %}"><i class="fab fa-monero"></i> Monero<text class="color-orange">j</text></a>
|
||||||
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<!-- ======= Hero Section ======= -->
|
||||||
|
<section id="hero" class="d-flex flex-column justify-content-center align-items-center">
|
||||||
|
<div class="container">
|
||||||
|
<h1>{{ message }}</h1>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<!-- End Hero -->
|
||||||
|
<br><br><br><br><br>
|
||||||
|
<!-- ======= Footer ======= -->
|
||||||
|
<footer id="footer">
|
||||||
|
|
||||||
|
<div class="footer-top">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<div class="col-lg-6 col-md-6 footer-contact">
|
||||||
|
<h3>Moneroj.net</h3>
|
||||||
|
<p>
|
||||||
|
Desenvolvido por<br>
|
||||||
|
Morpheus<br>
|
||||||
|
<strong>Email:</strong> morpheus.anonymous@protonmail.com<br>
|
||||||
|
<strong>Twitter:</strong> CryptoMorpheus_<br>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-3 col-md-6 footer-links">
|
||||||
|
<h4>Links úteis</h4>
|
||||||
|
<ul>
|
||||||
|
<li><i class="bx bx-chevron-right"></i> <a href="{% url 'monerojnet:pt' %}">Página Inicial</a></li>
|
||||||
|
<li><i class="bx bx-chevron-right"></i> <a href="{% url 'monerojnet:sfmodel' %}">Gráficos</a></li>
|
||||||
|
<li><i class="bx bx-chevron-right"></i> <a href="{% url 'monerojnet:about' %}">Sobre</a></li>
|
||||||
|
<li><i class="bx bx-chevron-right"></i> <a href="https://www.getmonero.org/">Getmonero.org</a></li>
|
||||||
|
<li><i class="bx bx-chevron-right"></i> <a href="https://www.reddit.com/r/Monero/">Reddit/Monero</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="container d-lg-flex py-4">
|
||||||
|
|
||||||
|
<div class="mr-lg-auto text-center text-lg-left">
|
||||||
|
<div class="copyright a">
|
||||||
|
<strong>© Copyright <span>Moneroj.net</span></strong>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="social-links text-center text-lg-right pt-3 pt-lg-0">
|
||||||
|
<a href="https://twitter.com/CryptoMorpheus_" class="twitter"><i class="bx bxl-twitter"></i></a>
|
||||||
|
<a href="https://github.com/cryptomorpheuss/moneropro" class="github"><i class="bx bxl-github"></i></a>
|
||||||
|
<a href="mailto:morpheus.anonymous@protonmail.com" class="github"><i class="fas fa-envelope"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
<!-- End Footer -->
|
||||||
|
|
||||||
|
<!-- Vendor JS Files -->
|
||||||
|
<script src="{% static 'vendor/jquery/jquery2.min.js' %}"></script>
|
||||||
|
<script src="{% static 'vendor/bootstrap/js/bootstrap.bundle.min.js' %}"></script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
|
@ -125,7 +125,7 @@
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
Merchants accepting a coin.<br>
|
Merchants accepting a coin. Data from https://acceptedhere.io/stats/<br>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
||||||
|
|
|
@ -125,7 +125,7 @@
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
Increase in the number of merchants accepting a coin.<br>
|
Increase in the number of merchants accepting a coin. Data from https://acceptedhere.io/stats/<br>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
||||||
|
|
|
@ -125,7 +125,7 @@
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
Increase in percentage of the number of merchants accepting a coin.<br>
|
Increase in percentage of the number of merchants accepting a coin. Data from https://acceptedhere.io/stats/<br>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
||||||
|
|
|
@ -30,11 +30,9 @@ urlpatterns = [
|
||||||
path('sfmultiple/', views.sfmultiple, name='sfmultiple'),
|
path('sfmultiple/', views.sfmultiple, name='sfmultiple'),
|
||||||
path('about/', views.about, name='about'),
|
path('about/', views.about, name='about'),
|
||||||
path('bitcoin/', views.bitcoin, name='bitcoin'),
|
path('bitcoin/', views.bitcoin, name='bitcoin'),
|
||||||
path('reset/<str:symbol>/', views.reset, name='reset'),
|
|
||||||
path('pt/', views.pt, name='pt'),
|
path('pt/', views.pt, name='pt'),
|
||||||
path('fr/', views.fr, name='fr'),
|
path('fr/', views.fr, name='fr'),
|
||||||
path('index_pt/', views.pt, name='index_pt'),
|
path('index_pt/', views.pt, name='index_pt'),
|
||||||
path('importer/', views.importer, name='importer'),
|
|
||||||
path('thermocap/', views.thermocap, name='thermocap'),
|
path('thermocap/', views.thermocap, name='thermocap'),
|
||||||
path('sharpe/', views.sharpe, name='sharpe'),
|
path('sharpe/', views.sharpe, name='sharpe'),
|
||||||
path('social/', views.social, name='social'),
|
path('social/', views.social, name='social'),
|
||||||
|
@ -68,8 +66,16 @@ urlpatterns = [
|
||||||
path('dominance/', views.dominance, name='dominance'),
|
path('dominance/', views.dominance, name='dominance'),
|
||||||
path('rank/', views.rank, name='rank'),
|
path('rank/', views.rank, name='rank'),
|
||||||
path('marketcap/', views.marketcap, name='marketcap'),
|
path('marketcap/', views.marketcap, name='marketcap'),
|
||||||
|
|
||||||
path('artigos/', views.artigos, name='artigos'),
|
path('artigos/', views.artigos, name='artigos'),
|
||||||
path('articles/', views.articles, name='articles'),
|
path('articles/', views.articles, name='articles'),
|
||||||
|
|
||||||
|
# URLs to useful functions on monerojnet/views.py
|
||||||
|
# Only admins can use these
|
||||||
|
path('get_history/<str:symbol>/<str:start_time>/<str:end_time>/', views.get_history, name='get_history'),
|
||||||
|
path('get_complete_history/<str:symbol>/', views.get_history, name='get_complete_history'),
|
||||||
|
path('load_dominance/<str:symbol>/', views.load_dominance, name='load_dominance'),
|
||||||
|
path('load_rank/<str:symbol>/', views.load_rank, name='load_rank'),
|
||||||
|
path('importer/', views.importer, name='importer'),
|
||||||
|
path('reset/<str:symbol>/', views.reset, name='reset'),
|
||||||
|
|
||||||
]
|
]
|
|
@ -14,6 +14,7 @@ import locale
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
from operator import truediv
|
from operator import truediv
|
||||||
import pygsheets
|
import pygsheets
|
||||||
|
from django.contrib.auth.decorators import login_required
|
||||||
from requests import Session
|
from requests import Session
|
||||||
from psaw import PushshiftAPI #library Pushshift
|
from psaw import PushshiftAPI #library Pushshift
|
||||||
from django.contrib.staticfiles.storage import staticfiles_storage
|
from django.contrib.staticfiles.storage import staticfiles_storage
|
||||||
|
@ -28,233 +29,86 @@ locale.setlocale(locale.LC_ALL, 'en_US.utf8')
|
||||||
api = PushshiftAPI()
|
api = PushshiftAPI()
|
||||||
|
|
||||||
###########################################
|
###########################################
|
||||||
# Useful Functions
|
# Useful functions for admins
|
||||||
###########################################
|
###########################################
|
||||||
|
|
||||||
# Get most recent metrics from a data provider of your choice
|
# Get all history for metrics of a certain coin named as 'symbol'
|
||||||
def get_metrics(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):
|
||||||
update = True
|
update = True
|
||||||
days = 1
|
count = 0
|
||||||
now = datetime.datetime.now()
|
|
||||||
current_time = int(now.strftime("%H"))
|
|
||||||
if current_time >= 2:
|
|
||||||
print('Hour > 2')
|
|
||||||
day1 = date.today() - timedelta(1)
|
|
||||||
try:
|
|
||||||
coin = Coin.objects.filter(name=symbol).filter(date=day1)
|
|
||||||
if (coin.inflation > 0) and (coin.priceusd > 0) and (coin.hashrate > 0)
|
|
||||||
update = False
|
|
||||||
except:
|
|
||||||
|
|
||||||
getthem = False
|
|
||||||
day1 = date.today() - timedelta(1)
|
|
||||||
coins = Coin.objects.filter(name=symbol).filter(date=day1)
|
|
||||||
if coins:
|
|
||||||
for coin in coins:
|
|
||||||
if coin.inflation == inflation and coin.priceusd == priceusd and coin.hashrate == hashrate:
|
|
||||||
print('Update')
|
|
||||||
coin.delete()
|
|
||||||
getthem = True
|
|
||||||
else:
|
|
||||||
getthem = True
|
|
||||||
|
|
||||||
if getthem:
|
|
||||||
test = True
|
|
||||||
count = 1
|
|
||||||
data = ''
|
|
||||||
with open("settings.json") as file:
|
|
||||||
data = json.load(file)
|
|
||||||
file.close()
|
|
||||||
request = data["metrics_provider"][0]["metrics_url"] + symbol + data["metrics_provider"][0]["metrics"]
|
|
||||||
while test:
|
|
||||||
print('page ' + str(count))
|
|
||||||
count += 1
|
|
||||||
response = requests.get(request)
|
|
||||||
data = json.loads(response.text)
|
|
||||||
data_aux = data['data']
|
|
||||||
deltasupply = 0
|
|
||||||
supply = 0
|
|
||||||
first = True
|
|
||||||
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')
|
|
||||||
coin = Coin.objects.filter(name=symbol).filter(date=day)
|
|
||||||
if not(coin):
|
|
||||||
if item['SplyCur'] != None:
|
|
||||||
if float(item['SplyCur']) >= 1:
|
|
||||||
coin = Coin()
|
|
||||||
coin.name = symbol
|
|
||||||
coin.date = day
|
|
||||||
try:
|
|
||||||
coin.priceusd = float(item['PriceUSD'])
|
|
||||||
except:
|
|
||||||
coin.priceusd = priceusd
|
|
||||||
try:
|
|
||||||
coin.hashrate = float(item['HashRate'])
|
|
||||||
except:
|
|
||||||
coin.hashrate = hashrate
|
|
||||||
try:
|
|
||||||
coin.fee = float(item['FeeTotNtv'])
|
|
||||||
except:
|
|
||||||
coin.fee = fee
|
|
||||||
try:
|
|
||||||
coin.revenue = float(item['RevNtv'])
|
|
||||||
except:
|
|
||||||
coin.revenue = revenue
|
|
||||||
try:
|
|
||||||
coin.pricebtc = float(item['PriceBTC'])
|
|
||||||
except:
|
|
||||||
coin.pricebtc = pricebtc
|
|
||||||
try:
|
|
||||||
coin.inflation = float(item['IssContPctAnn'])
|
|
||||||
except:
|
|
||||||
coin.inflation = inflation
|
|
||||||
try:
|
|
||||||
coin.transactions = float(item['TxCnt'])
|
|
||||||
except:
|
|
||||||
coin.transactions = transactions
|
|
||||||
try:
|
|
||||||
if first:
|
|
||||||
coin.supply = float(item['SplyCur'])
|
|
||||||
supply = coin.supply
|
|
||||||
deltasupply = 0
|
|
||||||
first = False
|
|
||||||
else:
|
|
||||||
coin.supply = float(item['SplyCur'])
|
|
||||||
deltasupply = abs(supply - coin.supply)
|
|
||||||
supply = coin.supply
|
|
||||||
if supply <= (deltasupply*20):
|
|
||||||
test = False
|
|
||||||
except:
|
|
||||||
coin.supply = 0
|
|
||||||
try:
|
|
||||||
coin.stocktoflow = (100/coin.inflation)**1.65
|
|
||||||
except:
|
|
||||||
coin.stocktoflow = 0
|
|
||||||
coin.save()
|
|
||||||
else:
|
|
||||||
test = False
|
|
||||||
else:
|
|
||||||
day1 = datetime.datetime.strptime(day, '%Y-%m-%d') + timedelta(1)
|
|
||||||
day2 = date.today()
|
|
||||||
day2 = datetime.datetime.strftime(day2, '%Y-%m-%d')
|
|
||||||
day2 = datetime.datetime.strptime(day2, '%Y-%m-%d')
|
|
||||||
if str(day) == str(day2) or str(day1) == str(day2):
|
|
||||||
print('today')
|
|
||||||
else:
|
|
||||||
test = False
|
|
||||||
else:
|
|
||||||
test = False
|
|
||||||
print('supply = ' + str(supply) + ' ---- deltasupply = ' + str(deltasupply*20) + ' -------- test = ' + str(test))
|
|
||||||
if test:
|
|
||||||
request = data['next_page_url']
|
|
||||||
print(request)
|
|
||||||
return(True)
|
|
||||||
|
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
def get_latest():
|
|
||||||
with open("settings.json") as file:
|
with open("settings.json") as file:
|
||||||
data = json.load(file)
|
data = json.load(file)
|
||||||
|
|
||||||
url = data["metrics_provider"][0]["price_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)
|
|
||||||
data = json.loads(response.text)
|
|
||||||
except (ConnectionError, Timeout, TooManyRedirects) as e:
|
|
||||||
data = False
|
|
||||||
|
|
||||||
file.close()
|
file.close()
|
||||||
return data
|
|
||||||
|
|
||||||
def load_dominance(coin):
|
if start_time and end_time:
|
||||||
gc = pygsheets.authorize(service_file='service_account_credentials.json')
|
url = data["metrics_provider"][0]["metrics_url"] + symbol + data["metrics_provider"][0]["metrics"] + '&start_time=' + start_time + '&end_time=' + end_time
|
||||||
sh = gc.open('zcash_bitcoin')
|
else:
|
||||||
wks = sh.worksheet_by_title('Sheet7')
|
url = data["metrics_provider"][0]["metrics_url"] + symbol + data["metrics_provider"][0]["metrics"]
|
||||||
|
|
||||||
values_mat = wks.get_values(start=(3,1), end=(9999,2), returnas='matrix')
|
while update:
|
||||||
#print(len(values_mat))
|
response = requests.get(url)
|
||||||
Dominance.objects.all().delete()
|
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')
|
||||||
|
coin = Coin.objects.filter(name=symbol).filter(date=day)
|
||||||
|
if coin:
|
||||||
|
coin.delete()
|
||||||
|
try:
|
||||||
|
coin = Coin()
|
||||||
|
coin.name = symbol
|
||||||
|
coin.date = day
|
||||||
|
coin.priceusd = float(item['PriceUSD'])
|
||||||
|
coin.pricebtc = float(item['PriceBTC'])
|
||||||
|
coin.inflation = float(item['IssContPctAnn'])
|
||||||
|
coin.stocktoflow = (100/coin.inflation)**1.65
|
||||||
|
coin.supply = float(item['SplyCur'])
|
||||||
|
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(coin.date)
|
||||||
|
|
||||||
for k in range(0,len(values_mat)):
|
except:
|
||||||
if values_mat[k][0] and values_mat[k][1]:
|
pass
|
||||||
dominance = Dominance()
|
try:
|
||||||
dominance.name = coin
|
url = data['next_page_url']
|
||||||
dominance.date = values_mat[k][0]
|
update = True
|
||||||
dominance.dominance = float(values_mat[k][1].replace(',', '.'))
|
except:
|
||||||
if not(dominance.dominance) and not(dominance.date):
|
update = False
|
||||||
break
|
|
||||||
else:
|
|
||||||
dominance.save()
|
|
||||||
else:
|
|
||||||
break
|
break
|
||||||
|
|
||||||
return True
|
message = 'Total of ' + str(count) + ' data imported'
|
||||||
|
context = {'message': message}
|
||||||
|
return render(request, 'monerojnet/maintenance.html', context)
|
||||||
|
|
||||||
def update_dominance(coin, data):
|
# Populate database with rank history
|
||||||
if not(data):
|
# Only authorized users can do this
|
||||||
#print('error updating dominance')
|
@login_required
|
||||||
return False
|
def load_rank(request, symbol):
|
||||||
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)
|
|
||||||
else:
|
|
||||||
#print('spreadsheet with the latest data already')
|
|
||||||
return False
|
|
||||||
|
|
||||||
#print('updated')
|
|
||||||
return data
|
|
||||||
|
|
||||||
def load_rank(coin):
|
|
||||||
gc = pygsheets.authorize(service_file='service_account_credentials.json')
|
gc = pygsheets.authorize(service_file='service_account_credentials.json')
|
||||||
sh = gc.open('zcash_bitcoin')
|
sh = gc.open('zcash_bitcoin')
|
||||||
wks = sh.worksheet_by_title('Sheet8')
|
wks = sh.worksheet_by_title('Sheet8')
|
||||||
|
|
||||||
|
count = 0
|
||||||
values_mat = wks.get_values(start=(3,1), end=(9999,2), returnas='matrix')
|
values_mat = wks.get_values(start=(3,1), end=(9999,2), returnas='matrix')
|
||||||
print(len(values_mat))
|
print(len(values_mat))
|
||||||
Rank.objects.all().delete()
|
Rank.objects.all().delete()
|
||||||
|
@ -262,170 +116,57 @@ def load_rank(coin):
|
||||||
for k in range(0,len(values_mat)):
|
for k in range(0,len(values_mat)):
|
||||||
if values_mat[k][0] and values_mat[k][1]:
|
if values_mat[k][0] and values_mat[k][1]:
|
||||||
rank = Rank()
|
rank = Rank()
|
||||||
rank.name = coin
|
rank.name = symbol
|
||||||
rank.date = values_mat[k][0]
|
rank.date = values_mat[k][0]
|
||||||
rank.rank = int(values_mat[k][1].replace(',', '.'))
|
rank.rank = int(values_mat[k][1].replace(',', '.'))
|
||||||
if not(rank.rank) and not(rank.date):
|
if not(rank.rank) and not(rank.date):
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
rank.save()
|
rank.save()
|
||||||
|
count += 1
|
||||||
else:
|
else:
|
||||||
break
|
break
|
||||||
|
|
||||||
return True
|
message = 'Total of ' + str(count) + ' data imported'
|
||||||
|
context = {'message': message}
|
||||||
|
return render(request, 'monerojnet/maintenance.html', context)
|
||||||
|
|
||||||
def update_rank(coin):
|
# Populate database with dominance history
|
||||||
data = get_latest()
|
# Only authorized users can do this
|
||||||
if not(data):
|
@login_required
|
||||||
return False
|
def load_dominance(request, symbol):
|
||||||
else:
|
gc = pygsheets.authorize(service_file='service_account_credentials.json')
|
||||||
rank = Rank()
|
sh = gc.open('zcash_bitcoin')
|
||||||
rank.name = 'xmr'
|
wks = sh.worksheet_by_title('Sheet7')
|
||||||
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')
|
count = 0
|
||||||
sh = gc.open('zcash_bitcoin')
|
values_mat = wks.get_values(start=(3,1), end=(9999,2), returnas='matrix')
|
||||||
wks = sh.worksheet_by_title('Sheet8')
|
#print(len(values_mat))
|
||||||
|
Dominance.objects.all().delete()
|
||||||
|
|
||||||
values_mat = wks.get_values(start=(3,1), end=(9999,2), returnas='matrix')
|
for k in range(0,len(values_mat)):
|
||||||
|
if values_mat[k][0] and values_mat[k][1]:
|
||||||
k = len(values_mat)
|
dominance = Dominance()
|
||||||
date_aux = datetime.datetime.strptime(values_mat[k-1][0], '%Y-%m-%d')
|
dominance.name = symbol
|
||||||
date_aux2 = datetime.datetime.strftime(date.today(), '%Y-%m-%d')
|
dominance.date = values_mat[k][0]
|
||||||
date_aux2 = datetime.datetime.strptime(date_aux2, '%Y-%m-%d')
|
dominance.dominance = float(values_mat[k][1].replace(',', '.'))
|
||||||
if date_aux < date_aux2:
|
if not(dominance.dominance) and not(dominance.date):
|
||||||
cell = 'B' + str(k + 3)
|
break
|
||||||
wks.update_value(cell, rank.rank)
|
else:
|
||||||
cell = 'A' + str(k + 3)
|
dominance.save()
|
||||||
wks.update_value(cell, rank.date)
|
count += 1
|
||||||
#print('spreadsheet updated')
|
|
||||||
else:
|
else:
|
||||||
#print('spreadsheet with the latest data already')
|
break
|
||||||
return data
|
|
||||||
|
|
||||||
#print('updated')
|
message = 'Total of ' + str(count) + ' data imported'
|
||||||
return data
|
context = {'message': message}
|
||||||
|
return render(request, 'monerojnet/maintenance.html', context)
|
||||||
###########################################
|
|
||||||
# Views
|
|
||||||
###########################################
|
|
||||||
|
|
||||||
def index(request):
|
|
||||||
symbol = 'xmr'
|
|
||||||
now_inflation = 0.001
|
|
||||||
now_units = 0
|
|
||||||
supply = 0
|
|
||||||
#get_latest()
|
|
||||||
#load_dominance('xmr')
|
|
||||||
#load_rank('xmr')
|
|
||||||
|
|
||||||
rank = list(Rank.objects.order_by('-date'))[1]
|
|
||||||
if rank.date < date.today():
|
|
||||||
data = update_rank('xmr')
|
|
||||||
dominance = list(Dominance.objects.order_by('-date'))[1]
|
|
||||||
if dominance.date < date.today():
|
|
||||||
data = update_dominance('xmr', data)
|
|
||||||
|
|
||||||
coin = list(Coin.objects.filter(name=symbol).order_by('-date'))[1]
|
|
||||||
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, 'monerojnet/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, 'monerojnet/index.html', context)
|
|
||||||
|
|
||||||
def pt(request):
|
|
||||||
symbol = 'xmr'
|
|
||||||
now_inflation = 0.001
|
|
||||||
now_units = 0
|
|
||||||
supply = 0
|
|
||||||
|
|
||||||
coins = Coin.objects.order_by('date').filter(name=symbol)
|
|
||||||
if coins:
|
|
||||||
for coin in coins:
|
|
||||||
if coin.priceusd > 0:
|
|
||||||
now_price = coin.priceusd
|
|
||||||
if coin.inflation > 0:
|
|
||||||
now_inflation = coin.inflation
|
|
||||||
if coin.supply > 0:
|
|
||||||
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, 'monerojnet/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, 'monerojnet/pt.html', context)
|
|
||||||
|
|
||||||
def fr(request):
|
|
||||||
symbol = 'xmr'
|
|
||||||
now_inflation = 0.001
|
|
||||||
now_units = 0
|
|
||||||
supply = 0
|
|
||||||
|
|
||||||
coins = Coin.objects.order_by('date').filter(name=symbol)
|
|
||||||
if coins:
|
|
||||||
for coin in coins:
|
|
||||||
if coin.priceusd > 0:
|
|
||||||
now_price = coin.priceusd
|
|
||||||
if coin.inflation > 0:
|
|
||||||
now_inflation = coin.inflation
|
|
||||||
if coin.supply > 0:
|
|
||||||
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, 'monerojnet/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, 'monerojnet/fr.html', context)
|
|
||||||
|
|
||||||
def artigos(request):
|
|
||||||
context = {}
|
|
||||||
return render(request, 'monerojnet/artigos.html', context)
|
|
||||||
|
|
||||||
def articles(request):
|
|
||||||
context = {}
|
|
||||||
return render(request, 'monerojnet/articles.html', context)
|
|
||||||
|
|
||||||
def reset(request, symbol):
|
|
||||||
coins = Coin.objects.order_by('date').filter(name=symbol)
|
|
||||||
deleted = 0
|
|
||||||
added = 0
|
|
||||||
if coins:
|
|
||||||
for coin in coins:
|
|
||||||
coin.delete()
|
|
||||||
deleted += 1
|
|
||||||
print("deleted")
|
|
||||||
|
|
||||||
get_prices(symbol)
|
|
||||||
coins = Coin.objects.order_by('date').filter(name=symbol)
|
|
||||||
if coins:
|
|
||||||
for coin in coins:
|
|
||||||
added += 1
|
|
||||||
|
|
||||||
context = {'added': added, 'deleted': deleted}
|
|
||||||
return render(request, 'monerojnet/reset.html', context)
|
|
||||||
|
|
||||||
|
# Import Reddit history from file on static folder
|
||||||
|
# Only authorized users can do this
|
||||||
|
@login_required
|
||||||
def importer(request):
|
def importer(request):
|
||||||
|
count = 0
|
||||||
Social.objects.all().delete()
|
Social.objects.all().delete()
|
||||||
filename = staticfiles_storage.path('import.txt')
|
filename = staticfiles_storage.path('import.txt')
|
||||||
with open(filename) as f:
|
with open(filename) as f:
|
||||||
|
@ -470,18 +211,224 @@ def importer(request):
|
||||||
else:
|
else:
|
||||||
social.postsPerHour = 0
|
social.postsPerHour = 0
|
||||||
social.save()
|
social.save()
|
||||||
|
count += 1
|
||||||
|
|
||||||
message = "Dados importados"
|
message = 'Total of ' + str(count) + ' data imported'
|
||||||
context = {'message': message}
|
context = {'message': message}
|
||||||
return render(request, 'monerojnet/importer.html', context)
|
return render(request, 'monerojnet/maintenance.html', context)
|
||||||
|
|
||||||
|
# Erase all data for a certain coin
|
||||||
|
# Only authorized users can do this
|
||||||
|
@login_required
|
||||||
|
def reset(request, symbol):
|
||||||
|
coins = Coin.objects.filter(name=symbol).all().delete()
|
||||||
|
|
||||||
|
message = 'All data for ' + str(symbol) + ' erased'
|
||||||
|
context = {'message': message}
|
||||||
|
return render(request, 'monerojnet/maintenance.html', context)
|
||||||
|
|
||||||
|
###########################################
|
||||||
|
# Other useful functions
|
||||||
|
###########################################
|
||||||
|
|
||||||
|
# Get most recent metrics from a data provider of your choice for 'symbol'
|
||||||
|
def get_latest_metrics(symbol):
|
||||||
|
now = datetime.datetime.now()
|
||||||
|
current_time = int(now.strftime("%H"))
|
||||||
|
if current_time >= 3:
|
||||||
|
yesterday = date.today() - timedelta(1)
|
||||||
|
start_time = datetime.datetime.strftime(yesterday, '%Y-%m-%d')
|
||||||
|
try:
|
||||||
|
coin = Coin.objects.filter(name=symbol).filter(date=day)
|
||||||
|
if coin:
|
||||||
|
if (coin.inflation > 0) or (coin.priceusd > 0):
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
coin.delete()
|
||||||
|
update = True
|
||||||
|
else:
|
||||||
|
update = True
|
||||||
|
except:
|
||||||
|
update = True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
count = 0
|
||||||
|
with open("settings.json") as file:
|
||||||
|
data = json.load(file)
|
||||||
|
file.close()
|
||||||
|
|
||||||
|
url = data["metrics_provider"][0]["metrics_url"] + symbol + data["metrics_provider"][0]["metrics"] + '&start_time=' + start_time
|
||||||
|
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')
|
||||||
|
coin = Coin.objects.filter(name=symbol).filter(date=day)
|
||||||
|
if coin:
|
||||||
|
coin.delete()
|
||||||
|
try:
|
||||||
|
coin = Coin()
|
||||||
|
coin.name = symbol
|
||||||
|
coin.date = day
|
||||||
|
coin.priceusd = float(item['PriceUSD'])
|
||||||
|
coin.pricebtc = float(item['PriceBTC'])
|
||||||
|
coin.inflation = float(item['IssContPctAnn'])
|
||||||
|
coin.stocktoflow = (100/coin.inflation)**1.65
|
||||||
|
coin.supply = float(item['SplyCur'])
|
||||||
|
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(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():
|
||||||
|
with open("settings.json") as file:
|
||||||
|
data = json.load(file)
|
||||||
|
|
||||||
|
url = data["metrics_provider"][0]["price_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)
|
||||||
|
data = json.loads(response.text)
|
||||||
|
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)
|
||||||
|
else:
|
||||||
|
#print('spreadsheet with the latest data already')
|
||||||
|
return False
|
||||||
|
|
||||||
|
#print('updated')
|
||||||
|
return data
|
||||||
|
|
||||||
|
# Get latest rank value and update
|
||||||
|
def update_rank():
|
||||||
|
data = get_latest_price()
|
||||||
|
if not(data):
|
||||||
|
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 with the latest data already')
|
||||||
|
return data
|
||||||
|
|
||||||
|
#print('updated')
|
||||||
|
return data
|
||||||
|
|
||||||
|
# Load Reddit api to check if there are new followers
|
||||||
def check_new_social(symbol):
|
def check_new_social(symbol):
|
||||||
date_now = datetime.datetime.strftime(date.today(), '%Y-%m-%d')
|
date_now = datetime.datetime.strftime(date.today(), '%Y-%m-%d')
|
||||||
socials = Social.objects.filter(name=symbol).filter(date=date_now)
|
socials = Social.objects.filter(name=symbol).filter(date=date_now)
|
||||||
|
|
||||||
print('here 1')
|
|
||||||
if not(socials):
|
if not(socials):
|
||||||
print('here 2')
|
print('getting new data')
|
||||||
request = 'https://www.reddit.com/r/'+ symbol +'/about.json'
|
request = 'https://www.reddit.com/r/'+ symbol +'/about.json'
|
||||||
response = requests.get(request, headers = {'User-agent': 'Checking new social data'})
|
response = requests.get(request, headers = {'User-agent': 'Checking new social data'})
|
||||||
data = json.loads(response.content)
|
data = json.loads(response.content)
|
||||||
|
@ -512,6 +459,96 @@ def check_new_social(symbol):
|
||||||
social.save()
|
social.save()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
###########################################
|
||||||
|
# Views
|
||||||
|
###########################################
|
||||||
|
|
||||||
|
def index(request):
|
||||||
|
symbol = 'xmr'
|
||||||
|
|
||||||
|
rank = list(Rank.objects.order_by('-date'))[1]
|
||||||
|
if rank.date < date.today():
|
||||||
|
data = update_rank()
|
||||||
|
dominance = list(Dominance.objects.order_by('-date'))[1]
|
||||||
|
if dominance.date < date.today():
|
||||||
|
data = update_dominance(data)
|
||||||
|
|
||||||
|
coin = list(Coin.objects.filter(name=symbol).order_by('-date'))[1]
|
||||||
|
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, 'monerojnet/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, 'monerojnet/index.html', context)
|
||||||
|
|
||||||
|
def pt(request):
|
||||||
|
symbol = 'xmr'
|
||||||
|
|
||||||
|
rank = list(Rank.objects.order_by('-date'))[1]
|
||||||
|
if rank.date < date.today():
|
||||||
|
data = update_rank()
|
||||||
|
dominance = list(Dominance.objects.order_by('-date'))[1]
|
||||||
|
if dominance.date < date.today():
|
||||||
|
data = update_dominance(data)
|
||||||
|
|
||||||
|
coin = list(Coin.objects.filter(name=symbol).order_by('-date'))[1]
|
||||||
|
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, 'monerojnet/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, 'monerojnet/pt.html', context)
|
||||||
|
|
||||||
|
def fr(request):
|
||||||
|
symbol = 'xmr'
|
||||||
|
|
||||||
|
rank = list(Rank.objects.order_by('-date'))[1]
|
||||||
|
if rank.date < date.today():
|
||||||
|
data = update_rank()
|
||||||
|
dominance = list(Dominance.objects.order_by('-date'))[1]
|
||||||
|
if dominance.date < date.today():
|
||||||
|
data = update_dominance(data)
|
||||||
|
|
||||||
|
coin = list(Coin.objects.filter(name=symbol).order_by('-date'))[1]
|
||||||
|
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, 'monerojnet/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, 'monerojnet/fr.html', context)
|
||||||
|
|
||||||
|
def artigos(request):
|
||||||
|
context = {}
|
||||||
|
return render(request, 'monerojnet/artigos.html', context)
|
||||||
|
|
||||||
|
def articles(request):
|
||||||
|
context = {}
|
||||||
|
return render(request, 'monerojnet/articles.html', context)
|
||||||
|
|
||||||
def social(request):
|
def social(request):
|
||||||
socials = Social.objects.order_by('date').filter(name='Bitcoin')
|
socials = Social.objects.order_by('date').filter(name='Bitcoin')
|
||||||
dates = []
|
dates = []
|
||||||
|
@ -1480,7 +1517,6 @@ def marketcap(request):
|
||||||
'now_dash': now_dash, 'now_grin': now_grin, 'now_zcash': now_zcash, 'dates': dates}
|
'now_dash': now_dash, 'now_grin': now_grin, 'now_zcash': now_zcash, 'dates': dates}
|
||||||
return render(request, 'monerojnet/marketcap.html', context)
|
return render(request, 'monerojnet/marketcap.html', context)
|
||||||
|
|
||||||
|
|
||||||
def inflationreturn(request):
|
def inflationreturn(request):
|
||||||
count = 0
|
count = 0
|
||||||
xmr = []
|
xmr = []
|
||||||
|
@ -2270,18 +2306,17 @@ def sfmodel(request):
|
||||||
check_new_social('Monero')
|
check_new_social('Monero')
|
||||||
check_new_social('CryptoCurrency')
|
check_new_social('CryptoCurrency')
|
||||||
symbol = 'btc'
|
symbol = 'btc'
|
||||||
get_metrics(symbol)
|
get_latest_metrics(symbol)
|
||||||
symbol = 'dash'
|
symbol = 'dash'
|
||||||
get_metrics(symbol)
|
get_latest_metrics(symbol)
|
||||||
symbol = 'grin'
|
symbol = 'grin'
|
||||||
get_metrics(symbol)
|
get_latest_metrics(symbol)
|
||||||
symbol = 'zec'
|
symbol = 'zec'
|
||||||
get_metrics(symbol)
|
get_latest_metrics(symbol)
|
||||||
symbol = 'xmr'
|
symbol = 'xmr'
|
||||||
get_metrics(symbol)
|
get_latest_metrics(symbol)
|
||||||
|
|
||||||
timevar = 1283
|
timevar = 1283
|
||||||
symbol = 'xmr'
|
|
||||||
now_price = 0
|
now_price = 0
|
||||||
now_sf = 0
|
now_sf = 0
|
||||||
now_inflation = 0.001
|
now_inflation = 0.001
|
||||||
|
@ -2291,7 +2326,6 @@ def sfmodel(request):
|
||||||
maximum = 0
|
maximum = 0
|
||||||
supply = 0
|
supply = 0
|
||||||
stock = 0.000001
|
stock = 0.000001
|
||||||
model = 0
|
|
||||||
dates = []
|
dates = []
|
||||||
inflations = []
|
inflations = []
|
||||||
circulations = []
|
circulations = []
|
||||||
|
@ -2403,7 +2437,6 @@ def sfmodellin(request):
|
||||||
maximum = 0
|
maximum = 0
|
||||||
supply = 0
|
supply = 0
|
||||||
stock = 0.000001
|
stock = 0.000001
|
||||||
model = 0
|
|
||||||
dates = []
|
dates = []
|
||||||
inflations = []
|
inflations = []
|
||||||
circulations = []
|
circulations = []
|
||||||
|
@ -2461,22 +2494,20 @@ def sfmodellin(request):
|
||||||
|
|
||||||
def sfmultiple(request):
|
def sfmultiple(request):
|
||||||
symbol = 'btc'
|
symbol = 'btc'
|
||||||
get_prices(symbol)
|
get_latest_metrics(symbol)
|
||||||
symbol = 'dash'
|
symbol = 'dash'
|
||||||
get_prices(symbol)
|
get_latest_metrics(symbol)
|
||||||
symbol = 'grin'
|
symbol = 'grin'
|
||||||
get_prices(symbol)
|
get_latest_metrics(symbol)
|
||||||
symbol = 'zec'
|
symbol = 'zec'
|
||||||
get_prices(symbol)
|
get_latest_metrics(symbol)
|
||||||
symbol = 'xmr'
|
symbol = 'xmr'
|
||||||
get_prices(symbol)
|
get_latest_metrics(symbol)
|
||||||
|
|
||||||
symbol = 'xmr'
|
|
||||||
now_sf = 0
|
now_sf = 0
|
||||||
maximum = 0
|
maximum = 0
|
||||||
dates = []
|
dates = []
|
||||||
stock_to_flow = []
|
stock_to_flow = []
|
||||||
values = []
|
|
||||||
buy = []
|
buy = []
|
||||||
sell = []
|
sell = []
|
||||||
color = []
|
color = []
|
||||||
|
|
|
@ -29,12 +29,12 @@ STATICFILES_DIRS = [
|
||||||
# See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/
|
# See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/
|
||||||
|
|
||||||
# SECURITY WARNING: keep the secret key used in production secret!
|
# SECURITY WARNING: keep the secret key used in production secret!
|
||||||
SECRET_KEY = 'asdfasdfhasdfjasdf7ads7f7sd8fasdf7tasdfgasjhfgsjakgh'
|
SECRET_KEY = ''
|
||||||
|
|
||||||
# SECURITY WARNING: don't run with debug turned on in production!
|
# SECURITY WARNING: don't run with debug turned on in production!
|
||||||
DEBUG = True
|
#DEBUG = True
|
||||||
#DEBUG = False
|
DEBUG = False
|
||||||
#STATIC_ROOT = "/var/www/moneropro/static/"
|
STATIC_ROOT = "/var/www/moneropro/static/"
|
||||||
|
|
||||||
ALLOWED_HOSTS = ['www.moneroj.net', 'localhost', '127.0.0.1', 'moneroj.net']
|
ALLOWED_HOSTS = ['www.moneroj.net', 'localhost', '127.0.0.1', 'moneroj.net']
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue