coinbus代码更新
This commit is contained in:
commit
2ba7422c9c
|
@ -0,0 +1,8 @@
|
|||
btc24h_stats.py --btc实时更新数据代码
|
||||
btc24h_redis_if.py --btc实时更新数据代码redis数据库
|
||||
btc24h_db_if.py --btc实时更新数据代码mysql数据库
|
||||
btc_stats_qt.py --btc每天更新数据代码
|
||||
redis_if_qt.py --btc每天更新数据代码redis数据库
|
||||
db_if_qt.py --btc每天更新数据代码mysql数据库
|
||||
btc_prices.py --获取历史币价代码
|
||||
btc_prices_fetcher.py --获取实时币价代码
|
|
@ -0,0 +1,600 @@
|
|||
# coding=utf-8
|
||||
import datetime
|
||||
import json
|
||||
import requests
|
||||
import pymysql
|
||||
from loguru import logger
|
||||
import time
|
||||
|
||||
|
||||
class DbIf:
|
||||
def __init__(self, host="172.17.0.1", port=4419, user="root", password="IeQcJNnagkaFP1Or", dbname="btcdb"):
|
||||
self.conn = pymysql.connect(host=host, port=port, user=user, password=password, database=dbname,
|
||||
cursorclass=pymysql.cursors.DictCursor)
|
||||
|
||||
def update_to_dailyindsv2(self, dt_utc, height_begin, height_end, lth_volume, frm, cvdd, realized_price,
|
||||
transferred_price, balanced_price, nvt_ratio, velocity):
|
||||
with self.conn.cursor() as cursor:
|
||||
print(dt_utc, height_begin, height_end, lth_volume, frm, cvdd, realized_price, transferred_price,
|
||||
balanced_price, nvt_ratio, velocity)
|
||||
# 调用消息订阅的api:向topic中储存rt_dailyindsv2e2的实时数据
|
||||
# url = "http://10.168.2.125:7101/marketall/push/realtime/btc/dailyindsv2e1"
|
||||
# headers = {"accept": "application/json"}
|
||||
# data = {"unixdt":dt_utc,"height_begin":height_begin,"height_end":height_end,"lth_volume":lth_volume,"frm":frm,"cvdd":cvdd,"realized_price":realized_price,"transferred_price":transferred_price,"balanced_price":balanced_price,"nvt_ratio":nvt_ratio,"velocity":velocity}
|
||||
# response = requests.post(url=url, data=json.dumps(data), headers=headers)
|
||||
sql_insert = "REPLACE INTO rt_dailyindsv3e2 (unixdt, height_begin, height_end, lth_volume, frm, cvdd, realized_price, transferred_price, balanced_price, nvt_ratio, velocity"
|
||||
sql_insert = sql_insert + ") VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
||||
cursor.execute(sql_insert, (
|
||||
dt_utc, height_begin, height_end, lth_volume, frm, cvdd, realized_price, transferred_price,
|
||||
balanced_price, nvt_ratio, velocity))
|
||||
|
||||
'''
|
||||
def update_to_realtimeindsv2(self, dt_utc, mempool_volume, mempool_fees):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "REPLACE INTO realtimeindsv2b (unixdt, mempool_volume, mempool_fees)"
|
||||
cursor.execute(sql_insert, (dt_utc, mempool_volume, mempool_fees))
|
||||
'''
|
||||
|
||||
def update_to_dailyinds(self, dt_utc, height_begin, height_end, profitrate, fees, txs, new_address, total_address,
|
||||
new_address_volume, active_address,
|
||||
send_address, receive_address, volume, eavolume, sopr, asopr, easopr, lthsopr, sthsopr,
|
||||
asol, eaasol, dormancy, adormancy, eadormancy, cdd, sacdd, eacdd, day1, day7, day30, day60,
|
||||
day90, day180, day365, day730, csupply, mintusd, sumcsupply, sumcdd, sumeacdd,
|
||||
liveliness, ealiveliness, rprofit, rloss, rplrate, price, marketcap, rcap, earcap, mvrv,
|
||||
nupl):
|
||||
with self.conn.cursor() as cursor:
|
||||
# 调用消息订阅的api:向topic中储存rt_dailyindsv2e1的实时数据
|
||||
# 数据结构{dt_utc:'dt_utc'}
|
||||
try:
|
||||
url="https://coinbus.cc/api/v1/marketall/push/realtime/btc/dailyv2e1"
|
||||
headers = {"accept": "application/json"}
|
||||
data = {"unixdt":dt_utc,"height_begin":height_begin,"height_end":height_end,"profitrate":profitrate,
|
||||
"fees":fees,"txs":txs,"new_address":new_address,"total_address":total_address,
|
||||
"new_address_volume":new_address_volume,"active_address":active_address,"send_address":send_address,
|
||||
"receive_address":receive_address,"volume":volume,"eavolume":eavolume,"sopr":sopr,"asopr":asopr,"easopr":easopr,
|
||||
"lthsopr":lthsopr,"sthsopr":sthsopr,"asol":asol,"eaasol":eaasol,"dormancy":dormancy,
|
||||
"adormancy":adormancy,"eadormancy":eadormancy,"cdd":cdd,"sacdd":sacdd,"eacdd":eacdd,"day1":day1,"day7":day7,
|
||||
"day30": day30,"day60":day60,"day90":day90,"day180":day180,"day365":day365,"day730":day730,
|
||||
"csupply":csupply,"mintusd":mintusd,"sumcsupply":sumcsupply,"sumcdd":sumcdd,"sumeacdd":sumeacdd,"liveliness":liveliness,
|
||||
"ealiveliness":ealiveliness,"rprofit":rprofit,"rloss":rloss,"rplrate":rplrate,
|
||||
"price":price,"marketcap":marketcap,"rcap":rcap,"earcap":earcap,"mvrv":mvrv,"nupl":nupl}
|
||||
response = requests.post(url=url, data=json.dumps(data), headers=headers)
|
||||
except:
|
||||
print("api调用失败")
|
||||
sql_insert = "REPLACE INTO rt_dailyindsv3e1 (unixdt, height_begin, height_end, profitrate, fees, txs, new_address, total_address, new_address_volume, active_address, send_address, receive_address, volume, eavolume, sopr, asopr, easopr, lthsopr, sthsopr,"
|
||||
sql_insert = sql_insert + " asol, eaasol, dormancy, adormancy, eadormancy, cdd, sacdd, eacdd, day1, day7, day30, day60, day90, day180, day365, day730, csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, "
|
||||
sql_insert = sql_insert + " ealiveliness, rprofit, rloss, rplrate, price, marketcap, rcap, earcap, mvrv, nupl"
|
||||
sql_insert = sql_insert + ") VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (
|
||||
dt_utc, height_begin, height_end, profitrate, fees, txs, new_address, total_address, new_address_volume,
|
||||
active_address, send_address,
|
||||
receive_address, volume, eavolume, sopr, asopr, easopr, lthsopr, sthsopr, asol, eaasol, dormancy,
|
||||
adormancy, eadormancy, cdd, sacdd, eacdd, day1, day7, day30, day60, day90, day180, day365, day730,
|
||||
csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, ealiveliness, rprofit, rloss, rplrate,
|
||||
price, marketcap, rcap, earcap, mvrv,
|
||||
nupl))
|
||||
self.conn.commit()
|
||||
|
||||
'''
|
||||
def update_to_dailyinds(self, dt_utc, height_begin, height_end, profitrate, fees, txs, new_address, new_address_volume, active_address,
|
||||
send_address, receive_address, volume, eavolume, sopr, asopr, easopr, lthsopr, sthsopr,
|
||||
asol, eaasol, dormancy, adormancy, eadormancy, cdd, sacdd, eacdd, day1, day7, day30, day60,
|
||||
day90, day180, day365, day730, csupply, mintusd, sumcsupply, sumcdd, sumeacdd,
|
||||
liveliness, ealiveliness, rprofit, rloss, rplrate, price, marketcap, rcap, earcap, mvrv,
|
||||
lthmarketcap, lthrcap, sthmarketcap, sthrcap, lthmvrv, sthmvrv, nupl):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "REPLACE INTO dailyindsv1 (unixdt, height_begin, height_end, profitrate, fees, txs, new_address, new_address_volume, active_address, send_address, receive_address, volume, eavolume, sopr, asopr, easopr, lthsopr, sthsopr,"
|
||||
sql_insert = sql_insert + " asol, eaasol, dormancy, adormancy, eadormancy, cdd, sacdd, eacdd, day1, day7, day30, day60, day90, day180, day365, day730, csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, "
|
||||
sql_insert = sql_insert + " ealiveliness, rprofit, rloss, rplrate, price, marketcap, rcap, earcap, mvrv, lthmarketcap, lthrcap, sthmarketcap, sthrcap, lthmvrv, sthmvrv, nupl"
|
||||
sql_insert = sql_insert + ") VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (
|
||||
dt_utc, height_begin, height_end, profitrate, fees, txs, new_address, new_address_volume, active_address, send_address,
|
||||
receive_address, volume, eavolume, sopr, asopr, easopr, lthsopr, sthsopr, asol, eaasol, dormancy,
|
||||
adormancy, eadormancy, cdd, sacdd, eacdd, day1, day7, day30, day60, day90, day180, day365, day730,
|
||||
csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, ealiveliness, rprofit, rloss, rplrate,
|
||||
price, marketcap, rcap, earcap, mvrv, lthmarketcap, lthrcap, sthmarketcap, sthrcap, lthmvrv, sthmvrv,
|
||||
nupl))
|
||||
self.conn.commit()
|
||||
'''
|
||||
'''
|
||||
# daily daily on-chain volume
|
||||
def query_from_dailyvolume(self, start_id=0, end_id=0, start_time="", end_time="", limit=0):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "SELECT * from `dailyvolume`"
|
||||
|
||||
if start_id > 0:
|
||||
sql_query = sql_query + " WHERE id > " + str(start_id)
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " AND id < " + str(end_id)
|
||||
else:
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " WHERE id < " + str(end_id)
|
||||
|
||||
if len(start_time) > 0:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
else:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(NOW())"
|
||||
else:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(NOW()) AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
|
||||
sql_query = sql_query + " order by `unixdt` desc"
|
||||
|
||||
if limit > 0:
|
||||
sql_query = sql_query + " LIMIT " + str(limit)
|
||||
print(sql_query)
|
||||
cursor.execute(sql_query)
|
||||
return cursor.fetchall()
|
||||
'''
|
||||
|
||||
# newaddrs
|
||||
'''
|
||||
def update_to_newaddr(self, dayutc, last_profit_rate, last_fees, last_txs, last_eatxs, last_newaddr_cnt,
|
||||
last_newaddr_vol, last_active_addr_cnt, last_tx_addr_cnt, last_rx_addr_cnt, last_vol_change,
|
||||
last_vol):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "SELECT COUNT(id) FROM `newaddrs` WHERE unixdt=FROM_UNIXTIME(%s)"
|
||||
cursor.execute(sql_query, {dayutc, })
|
||||
result = cursor.fetchone()
|
||||
# print(dt_utc)
|
||||
# print(result)
|
||||
if result is not None:
|
||||
if "COUNT(id)" in result:
|
||||
if result["COUNT(id)"] > 0:
|
||||
print("update")
|
||||
sql_update = 'UPDATE newaddrs SET `total`=%s, `amount`=%s, `active`=%s, `tx`=%s, `rx`=%s, `volume_change`=%s, `volume=%s`,`txs`=%s, `eatxs`=%s, `fees`=%s, `last_profit_rate`=%s WHERE unixdt=FROM_UNIXTIME(%s)'
|
||||
cursor.execute(sql_update, (
|
||||
last_newaddr_cnt, last_newaddr_vol, last_active_addr_cnt, last_tx_addr_cnt,
|
||||
last_rx_addr_cnt,
|
||||
last_vol_change, last_vol, last_txs, last_eatxs, last_fees, last_profit_rate, dayutc))
|
||||
else:
|
||||
print("insert")
|
||||
sql_insert = "INSERT INTO `newaddrs` (`unixdt`, `total`, `amount`, `active`, `tx`, `rx`, `volume_change`, `volume`, `txs`, `eatxs`, `fees`, `last_profit_rate`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (
|
||||
dayutc, last_newaddr_cnt, last_newaddr_vol, last_active_addr_cnt, last_tx_addr_cnt,
|
||||
last_rx_addr_cnt, last_vol_change, last_vol, last_txs, last_eatxs, last_fees,
|
||||
last_profit_rate))
|
||||
self.conn.commit()
|
||||
'''
|
||||
'''
|
||||
def update_to_sellprofit(self, dayutc, current_price, block_buy_volume, block_sell_volume, block_sell_profit, last_height):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "INSERT INTO `dailybuysell` (`unixdt`, `price`, `buyvolume`, `sellvolume`, `sellprofit`, `height`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s)"
|
||||
#print(sql_insert)
|
||||
#print(datetime, txid, vout, voutalias, amount, height)
|
||||
cursor.execute(sql_insert, (dayutc, current_price, block_buy_volume, block_sell_volume, block_sell_profit, last_height))
|
||||
self.conn.commit()
|
||||
'''
|
||||
'''
|
||||
def update_to_bigsellprofit(self, dayutc, current_price, tx_sell_average, tx_sell_amount, tx_sell_profit,
|
||||
days_earliest, days_latest, days_largest, days_current, tx_buy_address, txid,
|
||||
block_height):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "INSERT INTO `bigsell` (`unixdt`, `buyprice`, `sellprice`, `amount`, `profit`, `days_earliest`, `days_latest`, `days_largest`, `days_current`, `address`, `txid`, `height`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
||||
# print(sql_insert)
|
||||
# print(datetime, txid, vout, voutalias, amount, height)
|
||||
cursor.execute(sql_insert, (
|
||||
dayutc, current_price, tx_sell_average, tx_sell_amount, tx_sell_profit, days_earliest, days_latest,
|
||||
days_largest, days_current, tx_buy_address, txid, block_height))
|
||||
self.conn.commit()
|
||||
'''
|
||||
'''
|
||||
def update_to_dailycdd(self, dt_utc, cdd):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "REPLACE INTO `dailycdd` (`unixdt`, `cdd`) VALUES (FROM_UNIXTIME(%s), %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (dt_utc, cdd))
|
||||
self.conn.commit()
|
||||
'''
|
||||
'''
|
||||
def update_to_dailycdddays(self, dt_utc, dormancy, adormancy, eadormancy, cdd, acdd, eacdd, day1, day7, day30,
|
||||
day60, day90, day180, day365, day730):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "REPLACE INTO `dailycdddays` (`unixdt`, dormancy, adormancy, eadormancy, cdd, acdd, eacdd, `day1`, day7, day30, day60, day90, day180, day365, day730) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (
|
||||
dt_utc, dormancy, adormancy, eadormancy, cdd, acdd, eacdd, day1, day7, day30, day60, day90, day180,
|
||||
day365,
|
||||
day730))
|
||||
self.conn.commit()
|
||||
'''
|
||||
'''
|
||||
def update_to_dailysopr(self, dt_utc, last_sopr, last_asopr, last_easopr, last_lth_sopr, last_sth_sopr):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "REPLACE INTO `dailysopr` (`unixdt`, `sopr`, asopr, easopr, lth_sopr, sth_sopr) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (dt_utc, last_sopr, last_asopr, last_easopr, last_lth_sopr, last_sth_sopr))
|
||||
self.conn.commit()
|
||||
'''
|
||||
'''
|
||||
def update_to_inds(self, dt_utc, csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, ealiveliness, rprofit,
|
||||
rloss, rplrate, price, marketcap, rcap, earcap, mvrv):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "REPLACE INTO `inds` (`unixdt`, csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, ealiveliness, rprofit, rloss, rplrate, price, marketcap, rcap, earcap, mvrv) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (
|
||||
dt_utc, csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, ealiveliness, rprofit, rloss,
|
||||
rplrate,
|
||||
price, marketcap, rcap, earcap, mvrv))
|
||||
self.conn.commit()
|
||||
'''
|
||||
# daily volume
|
||||
'''
|
||||
def update_to_dailyvolume(self, dt_utc, volume):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "REPLACE INTO `dailyvolume` (`unixdt`, `volume`) VALUES (FROM_UNIXTIME(%s), %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (dt_utc, volume))
|
||||
self.conn.commit()
|
||||
'''
|
||||
'''with self.conn.cursor() as cursor:
|
||||
sql_query = "SELECT COUNT(id) FROM `dailyvolume` WHERE unixdt=FROM_UNIXTIME(%s)"
|
||||
cursor.execute(sql_query, {dt_utc,})
|
||||
result = cursor.fetchone()
|
||||
#print(dt_utc)
|
||||
#print(result)
|
||||
if result is not None:
|
||||
if "COUNT(id)" in result:
|
||||
if result["COUNT(id)"] > 0:
|
||||
print("update")
|
||||
sql_update = 'UPDATE dailyvolume SET `volume`=%s WHERE unixdt=FROM_UNIXTIME(%s)'
|
||||
cursor.execute(sql_update, (volume, dt_utc))
|
||||
else:
|
||||
print("insert")
|
||||
sql_insert = "INSERT INTO `dailyvolume` (`unixdt`, `volume`) VALUES (FROM_UNIXTIME(%s), %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (dt_utc, volume))
|
||||
self.conn.commit()'''
|
||||
'''
|
||||
def update_to_dailyfees(self, dt_utc, fees):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "REPLACE INTO `dailyfees` (`unixdt`, `fees`) VALUES (FROM_UNIXTIME(%s), %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (dt_utc, fees))
|
||||
self.conn.commit()
|
||||
'''
|
||||
'''
|
||||
def import_to_dailyvolume2(self, dt_utc, volume):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "INSERT INTO `dailyvolume` (`unixdt`, `volume`) VALUES (FROM_UNIXTIME(%s), %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (dt_utc, volume))
|
||||
self.conn.commit()
|
||||
|
||||
def delete_dailyvolume_data(self, config):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "DELETE FROM `dailyvolume`"
|
||||
cursor.execute(sql_query)
|
||||
self.conn.commit()
|
||||
|
||||
|
||||
# daily market cap
|
||||
def query_from_marketcap(self, start_id=0, end_id=0, start_time="", end_time="", limit=0):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "SELECT * from `dailyprice`"
|
||||
|
||||
if start_id > 0:
|
||||
sql_query = sql_query + " WHERE id > " + str(start_id)
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " AND id < " + str(end_id)
|
||||
else:
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " WHERE id < " + str(end_id)
|
||||
|
||||
if len(start_time) > 0:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
else:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(NOW())"
|
||||
else:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(NOW()) AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
|
||||
sql_query = sql_query + " order by `unixdt` desc"
|
||||
|
||||
if limit > 0:
|
||||
sql_query = sql_query + " LIMIT " + str(limit)
|
||||
print(sql_query)
|
||||
cursor.execute(sql_query)
|
||||
return cursor.fetchall()
|
||||
|
||||
#daily price
|
||||
def import_to_dailyprice(self, dt_utc, price, volume, marketcap, csupply):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "INSERT INTO `dailyprice` (`unixdt`, `price`, `volume`, `marketcap`, `csupply`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s)"
|
||||
#print(sql_insert)
|
||||
cursor.execute(sql_insert, (dt_utc, price, volume, marketcap, csupply))
|
||||
self.conn.commit()
|
||||
|
||||
def update_to_dailyprice(self, dt_utc, price, volume, change):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "INSERT INTO `dailyprice` (`unixdt`, `price`, `volume`, `change`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s)"
|
||||
#print(sql_insert)
|
||||
cursor.execute(sql_insert, (dt_utc, price, volume, change))
|
||||
self.conn.commit()
|
||||
|
||||
def update_to_dailyprice2(self, dt_utc, price, volume, change, marketcap, csupply):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "SELECT COUNT(id) FROM `dailyprice` WHERE unixdt=FROM_UNIXTIME(%s)"
|
||||
cursor.execute(sql_query, {dt_utc,})
|
||||
result = cursor.fetchone()
|
||||
#print(dt_utc)
|
||||
#print(result)
|
||||
if result is not None:
|
||||
if "COUNT(id)" in result:
|
||||
if result["COUNT(id)"] > 0:
|
||||
print("update")
|
||||
sql_update = 'UPDATE dailyprice SET `price`=%s, `marketcap`=%s, `csupply`=%s, `volume`=%s, `change`=%s WHERE unixdt=FROM_UNIXTIME(%s)'
|
||||
cursor.execute(sql_update, (price, marketcap, csupply, volume, change, dt_utc))
|
||||
else:
|
||||
print("insert")
|
||||
sql_insert = "INSERT INTO `dailyprice` (`unixdt`, `price`, `volume`, `change`, `marketcap`, `csupply`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (dt_utc, price, volume, change, marketcap, csupply))
|
||||
self.conn.commit()
|
||||
|
||||
def update_dailypricechange(self):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "SELECT unixdt,price FROM `dailyprice` order by unixdt"
|
||||
cursor.execute(sql_query)
|
||||
results = cursor.fetchall()
|
||||
prevprice = -1
|
||||
for result in results:
|
||||
if prevprice < 0:
|
||||
prevprice = result["price"]
|
||||
else:
|
||||
#print(result["unixdt"], result["price"], result["marketcap"])
|
||||
try:
|
||||
change = (result["price"]/prevprice - 1)*100
|
||||
except:
|
||||
change = 0
|
||||
#print(csupply)
|
||||
datestr = result["unixdt"]
|
||||
logger.debug(datestr.__format__('%Y-%m-%d') + " " + str(change))
|
||||
sql_update = 'UPDATE dailyprice SET `change`=%s WHERE unixdt=%s'
|
||||
cursor.execute(sql_update, (str(change), result["unixdt"]))
|
||||
prevprice = result["price"]
|
||||
self.conn.commit()
|
||||
|
||||
def delete_dailyprice_data(self, config):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "DELETE FROM `dailyprice`"
|
||||
cursor.execute(sql_query)
|
||||
self.conn.commit()
|
||||
|
||||
def delete_failed_blockvolume(self, height):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "DELETE FROM `bigamountvout` WHERE height=%s"
|
||||
cursor.execute(sql_insert, (height,))
|
||||
sql_insert = "DELETE FROM `bigamounttx` WHERE height=%s"
|
||||
cursor.execute(sql_insert, (height,))
|
||||
sql_insert = "DELETE FROM `blockamount` WHERE height=%s"
|
||||
cursor.execute(sql_insert, (height,))
|
||||
self.conn.commit()
|
||||
|
||||
#block check --- big amount for vout
|
||||
def query_from_bigamountvout(self, start_id=0, end_id=0, start_time="", end_time="", address="", limit=0):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "SELECT * from `bigamountvout`"
|
||||
if start_id > 0:
|
||||
sql_query = sql_query + " WHERE id > " + str(start_id)
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " AND id < " + str(end_id)
|
||||
else:
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " WHERE id < " + str(end_id)
|
||||
|
||||
if len(start_time) > 0:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
else:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(NOW())"
|
||||
else:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(NOW()) AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
|
||||
sql_query = sql_query + " order by `unixdt` desc"
|
||||
if limit > 0:
|
||||
sql_query = sql_query + " LIMIT " + str(limit)
|
||||
|
||||
print(sql_query)
|
||||
cursor.execute(sql_query)
|
||||
return cursor.fetchall()
|
||||
'''
|
||||
|
||||
def update_to_bigamountvout(self, datetime, txid, vout, voutn, vouttype, amount, height, days, buyin, sellout,
|
||||
profit):
|
||||
with self.conn.cursor() as cursor:
|
||||
# url = "http://10.168.2.125:7101/marketall/push/realtime/btc/dailyindsv2e1"
|
||||
# headers = {"accept": "application/json"}
|
||||
# data = {"unixdt":datetime,"vout":vout,"voutn":voutn,"vouttype":vouttype,
|
||||
# "amount":amount,"height":height,"txid":txid,"days":days,"buyin":buyin,
|
||||
# "sellout":sellout,"profit":profit}
|
||||
# response = requests.post(url=url, data=json.dumps(data), headers=headers)
|
||||
sql_insert = "INSERT INTO `rt_bigamountvoutv3e` (`unixdt`, `vout`, `voutn`, `vouttype`, `amount`, `height`, `txid`, days, buyprice, sellprice, profit) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
||||
# print(sql_insert)
|
||||
# print(datetime, txid, vout, voutalias, amount, height)
|
||||
cursor.execute(sql_insert,
|
||||
(datetime, vout, voutn, vouttype, amount, height, txid, days, buyin, sellout, profit))
|
||||
self.conn.commit()
|
||||
|
||||
'''
|
||||
# block check --- big amount tx
|
||||
def query_from_bigamounttx(self, start_id=0, end_id=0, start_time="", end_time="", address="", limit=0):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "SELECT * from `bigamounttx`"
|
||||
if start_id > 0:
|
||||
sql_query = sql_query + " WHERE id > " + str(start_id)
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " AND id < " + str(end_id)
|
||||
else:
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " WHERE id < " + str(end_id)
|
||||
|
||||
if len(start_time) > 0:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
else:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(NOW())"
|
||||
else:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(NOW()) AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
|
||||
sql_query = sql_query + " order by `unixdt` desc"
|
||||
if limit > 0:
|
||||
sql_query = sql_query + " LIMIT " + str(limit)
|
||||
|
||||
print(sql_query)
|
||||
cursor.execute(sql_query)
|
||||
return cursor.fetchall()
|
||||
|
||||
def update_to_bigamounttx(self, datetime, txid, amount, height):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "INSERT INTO `bigamounttx` (`unixdt`, `amount`, `height`, `txid`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s)"
|
||||
#print(sql_insert)
|
||||
#print(datetime, txid, amount, height)
|
||||
cursor.execute(sql_insert, (datetime, amount, height, txid))
|
||||
self.conn.commit()
|
||||
|
||||
# block check --- per block amount
|
||||
def query_from_blockamount(self, start_id=0, end_id=0, start_time="", end_time="", limit=0, amount=0):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "SELECT * from `blockamount`"
|
||||
|
||||
if start_id > 0:
|
||||
sql_query = sql_query + " WHERE id > " + str(start_id)
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " AND id < " + str(end_id)
|
||||
if amount > 0:
|
||||
sql_query = sql_query + " AND amount > " + str(amount)
|
||||
else:
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " WHERE id < " + str(end_id)
|
||||
if amount > 0:
|
||||
sql_query = sql_query + " AND amount > " + str(amount)
|
||||
else:
|
||||
if amount > 0:
|
||||
sql_query = sql_query + "WHERE amount > " + str(amount)
|
||||
|
||||
if len(start_time) > 0:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
else:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(NOW())"
|
||||
if amount > 0:
|
||||
sql_query = sql_query + " AND amount > " + str(amount)
|
||||
else:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(NOW()) AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
if amount > 0:
|
||||
sql_query = sql_query + " AND amount > " + str(amount)
|
||||
|
||||
sql_query = sql_query + " order by `unixdt` desc"
|
||||
|
||||
if limit > 0:
|
||||
sql_query = sql_query + " LIMIT " + str(limit)
|
||||
|
||||
cursor.execute(sql_query)
|
||||
return cursor.fetchall()
|
||||
|
||||
def update_to_blockamount(self, datetime, blockid, amount, height):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "INSERT INTO `blockamount` (`unixdt`, `amount`, `height`, `blockid`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s)"
|
||||
#print(sql_insert)
|
||||
#print(datetime, blockid, amount, height)
|
||||
cursor.execute(sql_insert, (datetime, amount, height, blockid))
|
||||
self.conn.commit()
|
||||
|
||||
def delete_node_data(self, config):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "DELETE FROM `blockamount`"
|
||||
cursor.execute(sql_query)
|
||||
sql_query = "DELETE FROM `bigamountvout`"
|
||||
cursor.execute(sql_query)
|
||||
sql_query = "DELETE FROM `bigamounttx`"
|
||||
cursor.execute(sql_query)
|
||||
self.conn.commit()
|
||||
|
||||
def update_realize_cap(self, dayutc, last_rv):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "INSERT INTO `dailyrcap` (`unixdt`, `rcap`) VALUES (FROM_UNIXTIME(%s), %s)"
|
||||
#print(sql_insert)
|
||||
#print(datetime, blockid, amount, height)
|
||||
cursor.execute(sql_insert, (dayutc, last_rv))
|
||||
self.conn.commit()
|
||||
|
||||
# daily realize cap
|
||||
def query_from_realizecap(self, start_id=0, end_id=0, start_time="", end_time="", limit=0):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "SELECT * from `dailyrcap`"
|
||||
|
||||
if start_id > 0:
|
||||
sql_query = sql_query + " WHERE id > " + str(start_id)
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " AND id < " + str(end_id)
|
||||
else:
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " WHERE id < " + str(end_id)
|
||||
|
||||
if len(start_time) > 0:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
else:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(NOW())"
|
||||
else:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(NOW()) AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
|
||||
sql_query = sql_query + " order by `unixdt` desc"
|
||||
|
||||
if limit > 0:
|
||||
sql_query = sql_query + " LIMIT " + str(limit)
|
||||
print(sql_query)
|
||||
cursor.execute(sql_query)
|
||||
return cursor.fetchall()
|
||||
|
||||
def update_daily_addr(self, dayutc, last_add_cnt):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "INSERT INTO `dailyaddradd` (`unixdt`, `addcnt`) VALUES (FROM_UNIXTIME(%s), %s)"
|
||||
#print(sql_insert)
|
||||
#print(datetime, blockid, amount, height)
|
||||
cursor.execute(sql_insert, (dayutc, last_add_cnt))
|
||||
self.conn.commit()
|
||||
|
||||
def delete_daily_addr(self, config):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "DELETE FROM `dailyaddradd`"
|
||||
cursor.execute(sql_query)
|
||||
self.conn.commit()
|
||||
|
||||
def delete_daily_rv(self, config):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "DELETE FROM `dailyrcap`"
|
||||
cursor.execute(sql_query)
|
||||
self.conn.commit()
|
||||
'''
|
||||
|
||||
def __del__(self):
|
||||
self.conn.close()
|
|
@ -0,0 +1,613 @@
|
|||
import time
|
||||
|
||||
from walrus import *
|
||||
from loguru import logger
|
||||
|
||||
class RedisIf:
|
||||
def __init__(self, host="127.0.0.1", port=6379, password="", db=0):
|
||||
self.db = Database(host=host, port=port, db=db)
|
||||
|
||||
self.zbalance = self.db.ZSet("rt_balancev2e")
|
||||
'''
|
||||
#realize cap progress
|
||||
self.rv = self.db.Hash("rv")
|
||||
#address and balance progress
|
||||
self.addr = self.db.Hash("addr")
|
||||
#block volume progress
|
||||
self.bv = self.db.Hash("bv")
|
||||
#daily volume progress
|
||||
self.dv = self.db.Hash("dv")
|
||||
'''
|
||||
'''
|
||||
#stat tx progress
|
||||
self.tx = self.db.Hash("tx")
|
||||
|
||||
#ETH daily contract progress
|
||||
self.eth_dc = self.db.Hash("ethdc")
|
||||
|
||||
#btc stats fee
|
||||
self.btc_stats = self.db.Hash("btcstats")
|
||||
|
||||
#btc stats volume
|
||||
self.btc_volume = self.db.Hash("btcvolume")
|
||||
|
||||
# btc stats cdd
|
||||
self.btc_cdd = self.db.Hash("btccdd")
|
||||
|
||||
# btc stats cdd days
|
||||
self.btc_cdd_days = self.db.Hash("btccdddays")
|
||||
'''
|
||||
self.btc_block_time = self.db.Hash("rt_btcblocktimev2e")
|
||||
'''
|
||||
self.btc_sopr = self.db.Hash("btcsopr")
|
||||
'''
|
||||
self.btc_data = self.db.Hash("rt_btc_datav2e")
|
||||
|
||||
self.active_address = self.db.Set("rt_active_addressv2e")
|
||||
self.send_address = self.db.Set("rt_send_addressv2e")
|
||||
self.receive_address = self.db.Set("rt_receive_addressv2e")
|
||||
|
||||
def get_btc_data(self, key):
|
||||
value = None
|
||||
if self.btc_data[key] is not None:
|
||||
value = self.btc_data[key]
|
||||
return value
|
||||
|
||||
def set_btc_data(self, key, value):
|
||||
self.btc_data[key] = value
|
||||
|
||||
def reset_btc_data(self):
|
||||
self.btc_data.clear()
|
||||
self.zbalance.clear()
|
||||
# self.btc_block_time.clear()
|
||||
|
||||
'''
|
||||
def get_last_btc_sopr(self):
|
||||
last_sopr_buy = None
|
||||
last_asopr_buy = None
|
||||
last_easopr_buy = None
|
||||
last_lth_sopr_buy = None
|
||||
last_sth_sopr_buy = None
|
||||
last_asol = None
|
||||
last_eaasol = None
|
||||
|
||||
if self.btc_sopr["last_asol"] is not None:
|
||||
last_asol = self.btc_sopr["last_asol"]
|
||||
#last_asol = float(self.btc_sopr["last_asol"].decode("utf-8"))
|
||||
if self.btc_sopr["last_eaasol"] is not None:
|
||||
last_eaasol = self.btc_sopr["last_eaasol"]
|
||||
#last_eaasol = float(self.btc_sopr["last_eaasol"].decode("utf-8"))
|
||||
|
||||
|
||||
if self.btc_sopr["last_sopr_buy"] is not None:
|
||||
last_sopr_buy = self.btc_sopr["last_sopr_buy"]
|
||||
#last_sopr_buy = float(self.btc_sopr["last_sopr_buy"].decode("utf-8"))
|
||||
if self.btc_sopr["last_asopr_buy"] is not None:
|
||||
last_asopr_buy = self.btc_sopr["last_asopr_buy"]
|
||||
#last_asopr_buy = float(self.btc_sopr["last_asopr_buy"].decode("utf-8"))
|
||||
if self.btc_sopr["last_easopr_buy"] is not None:
|
||||
last_easopr_buy = self.btc_sopr["last_easopr_buy"]
|
||||
#last_easopr_buy = float(self.btc_sopr["last_easopr_buy"].decode("utf-8"))
|
||||
if self.btc_sopr["last_lth_sopr_buy"] is not None:
|
||||
last_lth_sopr_buy = self.btc_sopr["last_lth_sopr_buy"]
|
||||
#last_lth_sopr_buy = float(self.btc_sopr["last_lth_sopr_buy"].decode("utf-8"))
|
||||
if self.btc_sopr["last_sth_sopr_buy"] is not None:
|
||||
last_sth_sopr_buy = self.btc_sopr["last_sth_sopr_buy"]
|
||||
#last_sth_sopr_buy = float(self.btc_sopr["last_sth_sopr_buy"].decode("utf-8"))
|
||||
|
||||
last_sopr_sell = None
|
||||
last_asopr_sell = None
|
||||
last_easopr_sell = None
|
||||
last_lth_sopr_sell = None
|
||||
last_sth_sopr_sell = None
|
||||
if self.btc_sopr["last_sopr_sell"] is not None:
|
||||
last_sopr_sell = self.btc_sopr["last_sopr_sell"]
|
||||
# last_sopr_sell = float(self.btc_sopr["last_sopr_sell"].decode("utf-8"))
|
||||
if self.btc_sopr["last_asopr_sell"] is not None:
|
||||
last_asopr_sell = self.btc_sopr["last_asopr_sell"]
|
||||
# last_asopr = float(self.btc_sopr["last_asopr"].decode("utf-8"))
|
||||
if self.btc_sopr["last_easopr_sell"] is not None:
|
||||
last_easopr_sell = self.btc_sopr["last_easopr_sell"]
|
||||
# last_easopr_sell = float(self.btc_sopr["last_easopr_sell"].decode("utf-8"))
|
||||
if self.btc_sopr["last_lth_sopr_sell"] is not None:
|
||||
last_lth_sopr_sell = self.btc_sopr["last_lth_sopr_sell"]
|
||||
# last_lth_sopr_sell = float(self.btc_sopr["last_lth_sopr_sell"].decode("utf-8"))
|
||||
if self.btc_sopr["last_sth_sopr_sell"] is not None:
|
||||
last_sth_sopr_sell = self.btc_sopr["last_sth_sopr_sell"]
|
||||
# last_sth_sopr_sell = float(self.btc_sopr["last_sth_sopr_sell"].decode("utf-8"))
|
||||
|
||||
return last_asol, last_eaasol, last_sopr_buy, last_asopr_buy, last_easopr_buy, last_lth_sopr_buy, last_sth_sopr_buy, last_sopr_sell, last_asopr_sell, last_easopr_sell, last_lth_sopr_sell, last_sth_sopr_sell
|
||||
|
||||
def set_last_btc_sopr(self, last_asol, last_eaasol, last_sopr_buy, last_asopr_buy, last_easopr_buy, last_lth_sopr_buy, last_sth_sopr_buy, last_sopr_sell, last_asopr_sell, last_easopr_sell, last_lth_sopr_sell, last_sth_sopr_sell):
|
||||
self.btc_sopr["last_asol"] = last_asol
|
||||
self.btc_sopr["last_eaasol"] = last_eaasol
|
||||
|
||||
self.btc_sopr["last_sopr_buy"] = last_sopr_buy
|
||||
self.btc_sopr["last_asopr_buy"] = last_asopr_buy
|
||||
self.btc_sopr["last_easopr_buy"] = last_easopr_buy
|
||||
self.btc_sopr["last_lth_sopr_buy"] = last_lth_sopr_buy
|
||||
self.btc_sopr["last_sth_sopr_buy"] = last_sth_sopr_buy
|
||||
self.btc_sopr["last_sopr_sell"] = last_sopr_sell
|
||||
self.btc_sopr["last_asopr_sell"] = last_asopr_sell
|
||||
self.btc_sopr["last_easopr_sell"] = last_easopr_sell
|
||||
self.btc_sopr["last_lth_sopr_sell"] = last_lth_sopr_sell
|
||||
self.btc_sopr["last_sth_sopr_sell"] = last_sth_sopr_sell
|
||||
'''
|
||||
|
||||
def get_block_time(self, height):
|
||||
block_time = None
|
||||
height_str = str(height)
|
||||
if self.btc_block_time[height_str] is not None:
|
||||
block_time = int(self.btc_block_time[height_str].decode("utf-8"))
|
||||
# block_time = int(self.btc_block_time[height_str].decode("utf-8"))
|
||||
|
||||
return block_time
|
||||
|
||||
def set_block_time(self, height, ts):
|
||||
height_str = str(height)
|
||||
self.btc_block_time[height_str] = ts
|
||||
|
||||
'''
|
||||
def get_last_btc_cdd_days(self):
|
||||
last_cdd = None
|
||||
last_acdd = None
|
||||
last_eacdd = None
|
||||
last_cdd_day1= None
|
||||
last_cdd_day7 = None
|
||||
last_cdd_day30 = None
|
||||
last_cdd_day60 = None
|
||||
last_cdd_day90 = None
|
||||
last_cdd_day180 = None
|
||||
last_cdd_day365 = None
|
||||
last_cdd_day730 = None
|
||||
|
||||
last_date = None
|
||||
last_height = None
|
||||
last_date_str = None
|
||||
|
||||
if self.btc_cdd["last_cdd"] is not None:
|
||||
last_cdd = float(self.btc_cdd["last_cdd"].decode("utf-8"))
|
||||
if self.btc_cdd["last_acdd"] is not None:
|
||||
last_acdd = float(self.btc_cdd["last_acdd"].decode("utf-8"))
|
||||
if self.btc_cdd["last_eacdd"] is not None:
|
||||
last_eacdd = float(self.btc_cdd["last_eacdd"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_cdd_day1"] is not None:
|
||||
last_cdd_day1 = float(self.btc_cdd_days["last_cdd_day1"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_cdd_day7"] is not None:
|
||||
last_cdd_day7 = float(self.btc_cdd_days["last_cdd_day7"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_cdd_day30"] is not None:
|
||||
last_cdd_day30 = float(self.btc_cdd_days["last_cdd_day30"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_cdd_day60"] is not None:
|
||||
last_cdd_day60 = float(self.btc_cdd_days["last_cdd_day60"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_cdd_day90"] is not None:
|
||||
last_cdd_day90 = float(self.btc_cdd_days["last_cdd_day90"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_cdd_day180"] is not None:
|
||||
last_cdd_day180 = float(self.btc_cdd_days["last_cdd_day180"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_cdd_day365"] is not None:
|
||||
last_cdd_day365 = float(self.btc_cdd_days["last_cdd_day365"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_cdd_day730"] is not None:
|
||||
last_cdd_day730 = float(self.btc_cdd_days["last_cdd_day730"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_date"] is not None:
|
||||
last_date = int(self.btc_cdd_days["last_date"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_height"] is not None:
|
||||
last_height = int(self.btc_cdd_days["last_height"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_date_str"] is not None:
|
||||
last_date_str = self.btc_cdd_days["last_date_str"].decode("utf-8")
|
||||
return last_cdd, last_acdd, last_eacdd, last_cdd_day1, last_cdd_day7, last_cdd_day30, last_cdd_day60, last_cdd_day90, last_cdd_day180, last_cdd_day365, last_cdd_day730, last_date, last_height, last_date_str
|
||||
|
||||
def set_last_btc_cdd_days(self, cdd, acdd, eacdd, day1, day7, day30, day60, day90, day180, day365, day730, dt, height, dtstr):
|
||||
self.btc_cdd["last_cdd"] = cdd
|
||||
self.btc_cdd["last_acdd"] = acdd
|
||||
self.btc_cdd["last_eacdd"] = eacdd
|
||||
self.btc_cdd_days["last_cdd_day1"] = day1
|
||||
self.btc_cdd_days["last_cdd_day7"] = day7
|
||||
self.btc_cdd_days["last_cdd_day30"] = day30
|
||||
self.btc_cdd_days["last_cdd_day60"] = day60
|
||||
self.btc_cdd_days["last_cdd_day90"] = day90
|
||||
self.btc_cdd_days["last_cdd_day180"] = day180
|
||||
self.btc_cdd_days["last_cdd_day365"] = day365
|
||||
self.btc_cdd_days["last_cdd_day730"] = day730
|
||||
self.btc_cdd_days["last_date"] = dt
|
||||
self.btc_cdd_days["last_height"] = height
|
||||
self.btc_cdd_days["last_date_str"] = dtstr
|
||||
'''
|
||||
'''
|
||||
def get_last_btc_cdd(self):
|
||||
last_cdd = None
|
||||
last_date = None
|
||||
last_height = None
|
||||
last_date_str = None
|
||||
if self.btc_cdd["last_cdd"] is not None:
|
||||
last_cdd = float(self.btc_cdd["last_cdd"].decode("utf-8"))
|
||||
if self.btc_cdd["last_date"] is not None:
|
||||
last_date = int(self.btc_cdd["last_date"].decode("utf-8"))
|
||||
if self.btc_cdd["last_height"] is not None:
|
||||
last_height = int(self.btc_cdd["last_height"].decode("utf-8"))
|
||||
if self.btc_cdd["last_date_str"] is not None:
|
||||
last_date_str = self.btc_cdd["last_date_str"].decode("utf-8")
|
||||
return last_cdd, last_date, last_height, last_date_str
|
||||
|
||||
def set_last_btc_cdd(self, cdd, dt, height, dtstr):
|
||||
self.btc_cdd["last_cdd"] = cdd
|
||||
self.btc_cdd["last_date"] = dt
|
||||
self.btc_cdd["last_height"] = height
|
||||
self.btc_cdd["last_date_str"] = dtstr
|
||||
|
||||
def get_last_btc_volume(self):
|
||||
last_volume = None
|
||||
last_date = None
|
||||
last_height = None
|
||||
last_date_str = None
|
||||
if self.btc_volume["last_volume"] is not None:
|
||||
last_volume = float(self.btc_volume["last_volume"].decode("utf-8"))
|
||||
if self.btc_volume["last_date"] is not None:
|
||||
last_date = int(self.btc_volume["last_date"].decode("utf-8"))
|
||||
if self.btc_volume["last_height"] is not None:
|
||||
last_height = int(self.btc_volume["last_height"].decode("utf-8"))
|
||||
if self.btc_volume["last_date_str"] is not None:
|
||||
last_date_str = self.btc_volume["last_date_str"].decode("utf-8")
|
||||
return last_volume, last_date, last_height, last_date_str
|
||||
|
||||
def set_last_btc_volume(self, volume, dt, height, dtstr):
|
||||
self.btc_volume["last_volume"] = volume
|
||||
self.btc_volume["last_date"] = dt
|
||||
self.btc_volume["last_height"] = height
|
||||
self.btc_volume["last_date_str"] = dtstr
|
||||
'''
|
||||
'''
|
||||
def get_last_btc_stats(self):
|
||||
last_fees = None
|
||||
last_date = None
|
||||
last_height = None
|
||||
last_date_str = None
|
||||
last_volume = None
|
||||
if self.btc_stats["last_fees"] is not None:
|
||||
last_fees = float(self.btc_stats["last_fees"].decode("utf-8"))
|
||||
if self.btc_volume["last_volume"] is not None:
|
||||
last_volume = float(self.btc_volume["last_volume"].decode("utf-8"))
|
||||
if self.btc_stats["last_date"] is not None:
|
||||
last_date = int(self.btc_stats["last_date"].decode("utf-8"))
|
||||
if self.btc_stats["last_height"] is not None:
|
||||
last_height = int(self.btc_stats["last_height"].decode("utf-8"))
|
||||
if self.btc_stats["last_date_str"] is not None:
|
||||
last_date_str = self.btc_stats["last_date_str"].decode("utf-8")
|
||||
return last_fees, last_volume, last_date, last_height, last_date_str
|
||||
|
||||
def set_last_btc_stats(self, fees, volume, dt, height, dtstr):
|
||||
self.btc_stats["last_fees"] = fees
|
||||
self.btc_volume["last_volume"] = volume
|
||||
self.btc_stats["last_date"] = dt
|
||||
self.btc_stats["last_height"] = height
|
||||
self.btc_stats["last_date_str"] = dtstr
|
||||
|
||||
|
||||
def get_last_eth_dc(self):
|
||||
last_date = None
|
||||
last_height = None
|
||||
last_date_str = None
|
||||
if self.eth_dc["last_date"] is not None:
|
||||
last_date = int(self.eth_dc["last_date"].decode("utf-8"))
|
||||
if self.eth_dc["last_height"] is not None:
|
||||
last_height = int(self.eth_dc["last_height"].decode("utf-8"))
|
||||
if self.eth_dc["last_date_str"] is not None:
|
||||
last_date_str = self.eth_dc["last_date_str"].decode("utf-8")
|
||||
return last_date, last_height, last_date_str
|
||||
|
||||
def set_last_eth_dc(self, dt, height, dtstr):
|
||||
self.eth_dc["last_date"] = dt
|
||||
self.eth_dc["last_height"] = height
|
||||
self.eth_dc["last_date_str"] = dtstr
|
||||
'''
|
||||
'''
|
||||
def get_last_dv(self):
|
||||
last_dv = None
|
||||
last_date = None
|
||||
last_height = None
|
||||
last_date_str = None
|
||||
if self.dv["last_dv"] is not None:
|
||||
last_dv = float(self.dv["last_dv"].decode("utf-8"))
|
||||
if self.dv["last_date"] is not None:
|
||||
last_date = int(self.dv["last_date"].decode("utf-8"))
|
||||
if self.dv["last_height"] is not None:
|
||||
last_height = int(self.dv["last_height"].decode("utf-8"))
|
||||
if self.dv["last_date_str"] is not None:
|
||||
last_date_str = self.dv["last_date_str"].decode("utf-8")
|
||||
return last_dv, last_date, last_height, last_date_str
|
||||
|
||||
def set_last_dv(self, dv, dt, height, dtstr):
|
||||
self.dv["last_dv"] = dv
|
||||
self.dv["last_date"] = dt
|
||||
self.dv["last_height"] = height
|
||||
self.dv["last_date_str"] = dtstr
|
||||
|
||||
def get_last_bv(self):
|
||||
last_height = None
|
||||
if self.bv["last_height"] is not None:
|
||||
last_height = int(self.bv["last_height"].decode("utf-8"))
|
||||
return last_height
|
||||
|
||||
def set_last_bv(self, height):
|
||||
self.bv["last_height"] = height
|
||||
'''
|
||||
'''
|
||||
def get_last_ind(self):
|
||||
last_csupply = None
|
||||
last_mintusd = None
|
||||
last_sumcsupply = None
|
||||
last_sumcdd = None
|
||||
last_sumeacdd = None
|
||||
last_rprofit = None
|
||||
last_rloss = None
|
||||
last_marketcap = None
|
||||
last_rcap = None
|
||||
last_mvrv = None
|
||||
|
||||
last_earcap = None
|
||||
if self.tx["last_csupply"] is not None:
|
||||
last_csupply = float(self.tx["last_csupply"].decode("utf-8"))
|
||||
if self.tx["last_mintusd"] is not None:
|
||||
last_mintusd = float(self.tx["last_mintusd"].decode("utf-8"))
|
||||
if self.tx["last_sumcsupply"] is not None:
|
||||
last_sumcsupply = float(self.tx["last_sumcsupply"].decode("utf-8"))
|
||||
if self.tx["last_sumcdd"] is not None:
|
||||
last_sumcdd = float(self.tx["last_sumcdd"].decode("utf-8"))
|
||||
if self.tx["last_sumeacdd"] is not None:
|
||||
last_sumeacdd = float(self.tx["last_sumeacdd"].decode("utf-8"))
|
||||
if self.tx["last_rprofit"] is not None:
|
||||
last_rprofit = float(self.tx["last_rprofit"].decode("utf-8"))
|
||||
if self.tx["last_rloss"] is not None:
|
||||
last_rloss = float(self.tx["last_rloss"].decode("utf-8"))
|
||||
if self.tx["last_marketcap"] is not None:
|
||||
last_marketcap = float(self.tx["last_marketcap"].decode("utf-8"))
|
||||
if self.tx["last_rcap"] is not None:
|
||||
last_rcap = float(self.tx["last_rcap"].decode("utf-8"))
|
||||
if self.tx["last_earcap"] is not None:
|
||||
last_earcap = float(self.tx["last_earcap"].decode("utf-8"))
|
||||
if self.tx["last_mvrv"] is not None:
|
||||
last_mvrv = float(self.tx["last_mvrv"].decode("utf-8"))
|
||||
|
||||
|
||||
return last_csupply, last_mintusd, last_sumcsupply, last_sumcdd, last_sumeacdd, last_rprofit, last_rloss, last_marketcap, last_rcap, last_earcap, last_mvrv
|
||||
|
||||
def set_last_ind(self, last_csupply, last_mintusd, last_sumcsupply, last_sumcdd, last_sumeacdd, last_rprofit, last_rloss, last_marketcap, last_rcap, last_earcap, last_mvrv):
|
||||
self.tx["last_csupply"] = last_csupply
|
||||
self.tx["last_mintusd"] = last_mintusd
|
||||
self.tx["last_sumcsupply"] = last_sumcsupply
|
||||
self.tx["last_sumcdd"] = last_sumcdd
|
||||
self.tx["last_sumeacdd"] = last_sumeacdd
|
||||
self.tx["last_rprofit"] = last_rprofit
|
||||
self.tx["last_rloss"] = last_rloss
|
||||
self.tx["last_marketcap"] = last_marketcap
|
||||
self.tx["last_rcap"] = last_rcap
|
||||
self.tx["last_earcap"] = last_earcap
|
||||
self.tx["last_mvrv"] = last_mvrv
|
||||
|
||||
|
||||
def get_last_tx(self):
|
||||
last_profit = None
|
||||
last_fees = None
|
||||
last_newaddr_cnt = None
|
||||
last_newaddr_vol = None
|
||||
last_active_addr_cnt = None
|
||||
last_tx_addr_cnt = None
|
||||
last_rx_addr_cnt = None
|
||||
last_vol_change = None
|
||||
last_vol = None
|
||||
last_avol = None
|
||||
last_date = None
|
||||
last_height = None
|
||||
last_date_str = None
|
||||
last_txs = None
|
||||
last_eatxs = None
|
||||
if self.tx["last_profit_rate"] is not None:
|
||||
last_profit = int(self.tx["last_profit"].decode("utf-8"))
|
||||
if self.tx["last_fees"] is not None:
|
||||
last_fees = int(self.tx["last_fees"].decode("utf-8"))
|
||||
if self.tx["last_txs"] is not None:
|
||||
last_txs = int(self.tx["last_txs"].decode("utf-8"))
|
||||
if self.tx["last_eatxs"] is not None:
|
||||
last_eatxs = int(self.tx["last_eatxs"].decode("utf-8"))
|
||||
if self.tx["last_newaddr_cnt"] is not None:
|
||||
last_newaddr_cnt = int(self.tx["last_newaddr_cnt"].decode("utf-8"))
|
||||
if self.tx["last_newaddr_vol"] is not None:
|
||||
last_newaddr_vol = float(self.tx["last_newaddr_vol"].decode("utf-8"))
|
||||
if self.tx["last_active_addr_cnt"] is not None:
|
||||
last_active_addr_cnt = int(self.tx["last_active_addr_cnt"].decode("utf-8"))
|
||||
if self.tx["last_tx_addr_cnt"] is not None:
|
||||
last_tx_addr_cnt = int(self.tx["last_tx_addr_cnt"].decode("utf-8"))
|
||||
if self.tx["last_rx_addr_cnt"] is not None:
|
||||
last_rx_addr_cnt = int(self.tx["last_rx_addr_cnt"].decode("utf-8"))
|
||||
if self.tx["last_vol_change"] is not None:
|
||||
last_vol_change = float(self.tx["last_vol_change"].decode("utf-8"))
|
||||
if self.tx["last_vol"] is not None:
|
||||
last_vol = float(self.tx["last_vol"].decode("utf-8"))
|
||||
if self.tx["last_avol"] is not None:
|
||||
last_avol = float(self.tx["last_avol"].decode("utf-8"))
|
||||
if self.tx["last_date"] is not None:
|
||||
last_date = int(self.tx["last_date"].decode("utf-8"))
|
||||
if self.tx["last_height"] is not None:
|
||||
last_height = int(self.tx["last_height"].decode("utf-8"))
|
||||
if self.tx["last_date_str"] is not None:
|
||||
last_date_str = self.tx["last_date_str"].decode("utf-8")
|
||||
return last_profit, last_fees, last_txs, last_eatxs, last_newaddr_cnt, last_newaddr_vol, last_active_addr_cnt, last_tx_addr_cnt, last_rx_addr_cnt, last_vol_change, last_vol, last_avol, last_date, last_height, last_date_str
|
||||
|
||||
def set_last_tx(self, last_profit, last_fees, last_txs, last_eatxs, newaddr_cnt, newaddr_vol, active_addr_cnt, tx_addr_cnt, rx_addr_cnt, vol_change, vol, avol, dt, height, dtstr):
|
||||
self.tx["last_profit"] = last_profit
|
||||
self.tx["last_fees"] = last_fees
|
||||
self.tx["last_txs"] = last_txs
|
||||
self.tx["last_eatxs"] = last_eatxs
|
||||
self.tx["last_newaddr_cnt"] = newaddr_cnt
|
||||
self.tx["last_newaddr_vol"] = newaddr_vol
|
||||
self.tx["last_active_addr_cnt"] = active_addr_cnt
|
||||
self.tx["last_tx_addr_cnt"] = tx_addr_cnt
|
||||
self.tx["last_rx_addr_cnt"] = rx_addr_cnt
|
||||
self.tx["last_vol_change"] = vol_change
|
||||
self.tx["last_vol"] = vol
|
||||
self.tx["last_avol"] = avol
|
||||
self.tx["last_date"] = dt
|
||||
self.tx["last_height"] = height
|
||||
self.tx["last_date_str"] = dtstr
|
||||
'''
|
||||
'''
|
||||
def get_last_addr(self):
|
||||
last_daily_cnt = None
|
||||
last_date = None
|
||||
last_height = None
|
||||
last_date_str = None
|
||||
if self.addr["last_daily_cnt"] is not None:
|
||||
last_daily_cnt = int(self.addr["last_daily_cnt"].decode("utf-8"))
|
||||
if self.addr["last_date"] is not None:
|
||||
last_date = int(self.addr["last_date"].decode("utf-8"))
|
||||
if self.addr["last_height"] is not None:
|
||||
last_height = int(self.addr["last_height"].decode("utf-8"))
|
||||
if self.addr["last_date_str"] is not None:
|
||||
last_date_str = self.addr["last_date_str"].decode("utf-8")
|
||||
return last_daily_cnt, last_date, last_height, last_date_str
|
||||
|
||||
def set_last_addr(self, daily_cnt, dt, height, dtstr):
|
||||
self.addr["last_daily_cnt"] = daily_cnt
|
||||
self.addr["last_date"] = dt
|
||||
self.addr["last_height"] = height
|
||||
self.addr["last_date_str"] = dtstr
|
||||
'''
|
||||
|
||||
def is_active_address(self, address):
|
||||
result = address in self.active_address
|
||||
if not result:
|
||||
self.active_address.add(address)
|
||||
return result
|
||||
|
||||
def reset_active_address(self):
|
||||
self.active_address.clear()
|
||||
|
||||
def get_active_address_cnt(self):
|
||||
return len(self.active_address)
|
||||
|
||||
def is_send_address(self, address):
|
||||
result = address in self.send_address
|
||||
if not result:
|
||||
self.send_address.add(address)
|
||||
return result
|
||||
|
||||
def reset_send_address(self):
|
||||
self.send_address.clear()
|
||||
|
||||
def get_send_address_cnt(self):
|
||||
return len(self.send_address)
|
||||
|
||||
def is_receive_address(self, address):
|
||||
result = address in self.receive_address
|
||||
if not result:
|
||||
self.receive_address.add(address)
|
||||
return result
|
||||
|
||||
def reset_receive_address(self):
|
||||
self.receive_address.clear()
|
||||
|
||||
def get_receive_address_cnt(self):
|
||||
return len(self.receive_address)
|
||||
|
||||
def save_addr(self, address, balance):
|
||||
new_balance = balance
|
||||
if address in self.zbalance:
|
||||
new_balance = self.zbalance.score(address) + balance
|
||||
# print("update", self.zbalance.score(address), balance, new_balance)
|
||||
# time.sleep(10)
|
||||
if new_balance < 0.01:
|
||||
del self.zbalance[address]
|
||||
# print("check exist", address, address in self.zbalance)
|
||||
# time.sleep(10)
|
||||
return
|
||||
self.zbalance.add({address: new_balance})
|
||||
|
||||
'''
|
||||
def delete_addr(self, config):
|
||||
self.addr.clear()
|
||||
self.zbalance.clear()
|
||||
'''
|
||||
|
||||
def is_in_addr(self, address):
|
||||
return address in self.zbalance
|
||||
|
||||
def get_addr_cnt(self):
|
||||
return len(self.zbalance)
|
||||
|
||||
'''
|
||||
def delete_rv(self, config):
|
||||
self.rv.clear()
|
||||
|
||||
def get_last_rv(self):
|
||||
last_rv = None
|
||||
last_date = None
|
||||
last_height = None
|
||||
last_date_str = None
|
||||
if self.rv["last_rv"] is not None:
|
||||
last_rv = float(self.rv["last_rv"].decode("utf-8"))
|
||||
if self.rv["last_date"] is not None:
|
||||
last_date = int(self.rv["last_date"].decode("utf-8"))
|
||||
if self.rv["last_height"] is not None:
|
||||
last_height = int(self.rv["last_height"].decode("utf-8"))
|
||||
if self.rv["last_date_str"] is not None:
|
||||
last_date_str = self.rv["last_date_str"].decode("utf-8")
|
||||
return last_rv, last_date, last_height, last_date_str
|
||||
|
||||
def set_last_rv(self, rv, dt, height, dtstr):
|
||||
self.rv["last_rv"] = rv
|
||||
self.rv["last_date"] = dt
|
||||
self.rv["last_height"] = height
|
||||
self.rv["last_date_str"] = dtstr
|
||||
'''
|
||||
|
||||
def get_all_address(self):
|
||||
return self.zbalance.keys()
|
||||
|
||||
def delete_address_data(self, config):
|
||||
self.zbalance.clear()
|
||||
|
||||
'''
|
||||
def query_from_address(self, start_balance=0, end_balance=0, address="", limit=0):
|
||||
if len(address) > 0:
|
||||
results = []
|
||||
result = {}
|
||||
result["address"] = address
|
||||
balance = self.zbalance.score(address)
|
||||
print(balance)
|
||||
if balance is not None:
|
||||
result["balance"] = balance
|
||||
results.append(result)
|
||||
return results
|
||||
|
||||
match_result = None
|
||||
if start_balance > 0:
|
||||
if end_balance > 0:
|
||||
match_result = self.zbalance.range_by_score(start_balance, end_balance, 0, -1, True, False)
|
||||
else:
|
||||
match_result = self.zbalance.range_by_score(0, start_balance, 0, -1, True, False)
|
||||
else:
|
||||
if end_balance > 0:
|
||||
match_result = self.zbalance.range_by_score(end_balance, 21000000, 0, -1, True, False)
|
||||
|
||||
results = []
|
||||
if match_result is not None:
|
||||
#print(match_result)
|
||||
for addr, balance2 in match_result:
|
||||
address = addr.decode('utf-8')
|
||||
result = {}
|
||||
result["address"] = address
|
||||
result["balance"] = balance2
|
||||
results.append(result)
|
||||
if limit > 0 and len(results) >= limit:
|
||||
break
|
||||
return results
|
||||
'''
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,85 @@
|
|||
import time
|
||||
import requests
|
||||
import pymysql
|
||||
from datetime import datetime
|
||||
|
||||
# MySQL配置
|
||||
DB_CONFIG = {
|
||||
"host": "127.0.0.1",
|
||||
"user": "root",
|
||||
"password": "2GS@bPYcgiMyL14A",
|
||||
"database": "btcdb",
|
||||
"port": 4423
|
||||
}
|
||||
|
||||
# 获取当前时间戳
|
||||
def get_current_timestamp():
|
||||
return int(time.time())
|
||||
|
||||
# 获取API1的BTC价格(示例:币安)
|
||||
def get_binance_price():
|
||||
url = "https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT"
|
||||
resp = requests.get(url, timeout=5)
|
||||
resp.raise_for_status()
|
||||
data = resp.json()
|
||||
return float(data["price"])
|
||||
|
||||
# 获取API2的BTC价格(示例:Coinbase)
|
||||
def get_coinbase_price():
|
||||
url = "https://api.coinbase.com/v2/prices/spot?currency=USD"
|
||||
resp = requests.get(url, timeout=5)
|
||||
resp.raise_for_status()
|
||||
data = resp.json()
|
||||
return float(data["data"]["amount"])
|
||||
|
||||
# 更新或插入价格
|
||||
def upsert_price(source, price, timestamp):
|
||||
connection = pymysql.connect(**DB_CONFIG)
|
||||
try:
|
||||
with connection.cursor() as cursor:
|
||||
# 先判断该 source 是否已存在
|
||||
sql_check = "SELECT id FROM btc_realtime_prices WHERE source = %s"
|
||||
cursor.execute(sql_check, (source,))
|
||||
result = cursor.fetchone()
|
||||
|
||||
if result:
|
||||
# 已存在,执行更新
|
||||
sql_update = """
|
||||
UPDATE btc_realtime_prices
|
||||
SET price = %s, timestamp = %s
|
||||
WHERE source = %s
|
||||
"""
|
||||
cursor.execute(sql_update, (price, timestamp, source))
|
||||
else:
|
||||
# 不存在,执行插入
|
||||
sql_insert = """
|
||||
INSERT INTO btc_realtime_prices (timestamp, source, price)
|
||||
VALUES (%s, %s, %s)
|
||||
"""
|
||||
cursor.execute(sql_insert, (timestamp, source, price))
|
||||
connection.commit()
|
||||
finally:
|
||||
connection.close()
|
||||
|
||||
def main():
|
||||
while True:
|
||||
now_ts = get_current_timestamp()
|
||||
|
||||
try:
|
||||
binance_price = get_binance_price()
|
||||
print(f"Binance BTC Price: {binance_price}")
|
||||
upsert_price("binance", binance_price, now_ts)
|
||||
except Exception as e:
|
||||
print(f"获取Binance价格失败: {e}")
|
||||
|
||||
try:
|
||||
coinbase_price = get_coinbase_price()
|
||||
print(f"Coinbase BTC Price: {coinbase_price}")
|
||||
upsert_price("coinbase", coinbase_price, now_ts)
|
||||
except Exception as e:
|
||||
print(f"获取Coinbase价格失败: {e}")
|
||||
|
||||
time.sleep(60) # 每分钟执行一次
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
|
@ -0,0 +1,141 @@
|
|||
import time
|
||||
import requests
|
||||
import pymysql
|
||||
import ujson
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
# MySQL 连接信息
|
||||
DB_CONFIG = {
|
||||
"host": "127.0.0.1",
|
||||
"user": "root",
|
||||
"password": "2GS@bPYcgiMyL14A",
|
||||
"database": "btcdb",
|
||||
"port": 4423
|
||||
}
|
||||
|
||||
# Nasdaq API Key
|
||||
NASDAQ_API_KEY = "FZqXog4sR-b7cYnXcRVV"
|
||||
|
||||
# 获取已存在的时间戳
|
||||
def get_existing_timestamps():
|
||||
connection = pymysql.connect(**DB_CONFIG)
|
||||
existing_timestamps = set()
|
||||
try:
|
||||
with connection.cursor() as cursor:
|
||||
cursor.execute("SELECT timestamp, source FROM btc_prices")
|
||||
for row in cursor.fetchall():
|
||||
existing_timestamps.add((row[0], row[1]))
|
||||
finally:
|
||||
connection.close()
|
||||
return existing_timestamps
|
||||
|
||||
# 工具函数:将任意时间戳调整为北京时间当日 08:00 的时间戳
|
||||
def adjust_to_beijing_08am(timestamp):
|
||||
dt = datetime.utcfromtimestamp(timestamp) + timedelta(hours=8)
|
||||
dt_08am = datetime(dt.year, dt.month, dt.day, 8, 0, 0)
|
||||
return int((dt_08am - timedelta(hours=8)).timestamp()) # 转回 UTC 存储
|
||||
|
||||
# Nasdaq 获取历史 BTC 美元价格
|
||||
def get_nasdaq_price():
|
||||
prices = {}
|
||||
url = f'https://data.nasdaq.com/api/v3/datatables/QDL/BCHAIN?code=MKPRU&api_key={NASDAQ_API_KEY}'
|
||||
response = requests.get(url)
|
||||
if response.status_code == 200:
|
||||
data = ujson.loads(response.content)
|
||||
if "datatable" in data and "data" in data["datatable"]:
|
||||
for item in data["datatable"]["data"]:
|
||||
daystr = item[1]
|
||||
price = item[2]
|
||||
dt = datetime.strptime(daystr, "%Y-%m-%d")
|
||||
dt_08am_bj = datetime(dt.year, dt.month, dt.day, 8, 0, 0)
|
||||
dt_08am_utc = dt_08am_bj - timedelta(hours=8)
|
||||
prices[int(dt_08am_utc.timestamp())] = float(price)
|
||||
print(f"Nasdaq 获取数据量: {len(prices)} 条")
|
||||
return prices
|
||||
|
||||
# CryptoCompare 获取 BTC 历史每日收盘价(时间强制统一为北京时间 08:00)
|
||||
def get_cryptocompare_price():
|
||||
url = "https://min-api.cryptocompare.com/data/v2/histoday"
|
||||
limit = 2000
|
||||
to_ts = int(time.time())
|
||||
prices = {}
|
||||
while True:
|
||||
params = {
|
||||
"fsym": "BTC",
|
||||
"tsym": "USD",
|
||||
"limit": limit,
|
||||
"toTs": to_ts
|
||||
}
|
||||
print(f"请求 CryptoCompare: {params}")
|
||||
response = requests.get(url, params=params)
|
||||
if response.status_code != 200:
|
||||
print("请求失败:", response.status_code)
|
||||
break
|
||||
|
||||
data = ujson.loads(response.content)
|
||||
if data["Response"] != "Success":
|
||||
print("API 返回错误:", data.get("Message"))
|
||||
break
|
||||
|
||||
entries = data["Data"]["Data"]
|
||||
if not entries:
|
||||
break
|
||||
|
||||
for entry in entries:
|
||||
raw_ts = entry["time"]
|
||||
price = entry["close"]
|
||||
adjusted_ts = adjust_to_beijing_08am(raw_ts)
|
||||
prices[adjusted_ts] = price
|
||||
|
||||
earliest = entries[0]["time"]
|
||||
if earliest <= 1279300000: # 大约2010年7月
|
||||
break
|
||||
|
||||
to_ts = earliest - 1
|
||||
time.sleep(1)
|
||||
|
||||
print(f"CryptoCompare 获取数据量: {len(prices)} 条")
|
||||
return prices
|
||||
|
||||
# 保存数据到数据库
|
||||
def save_to_database(data, source):
|
||||
existing_timestamps = get_existing_timestamps()
|
||||
connection = pymysql.connect(**DB_CONFIG)
|
||||
new_data_count = 0
|
||||
try:
|
||||
with connection.cursor() as cursor:
|
||||
sql = """
|
||||
INSERT INTO btc_prices (timestamp, price, source)
|
||||
VALUES (%s, %s, %s)
|
||||
"""
|
||||
for timestamp, price in data.items():
|
||||
if (timestamp, source) not in existing_timestamps:
|
||||
try:
|
||||
cursor.execute(sql, (timestamp, price, source))
|
||||
new_data_count += 1
|
||||
except pymysql.MySQLError as e:
|
||||
print(f"插入错误: {e}")
|
||||
continue
|
||||
connection.commit()
|
||||
print(f"成功存入 {new_data_count} 条新数据({source})")
|
||||
finally:
|
||||
connection.close()
|
||||
|
||||
# 定时任务
|
||||
def fetch_and_store_data():
|
||||
print("========== 开始获取比特币价格数据 ==========")
|
||||
|
||||
# Nasdaq
|
||||
nasdaq_prices = get_nasdaq_price()
|
||||
save_to_database(nasdaq_prices, "Nasdaq")
|
||||
|
||||
# CryptoCompare
|
||||
cc_prices = get_cryptocompare_price()
|
||||
save_to_database(cc_prices, "CryptoCompare")
|
||||
|
||||
print("========== 数据存储完成 ==========")
|
||||
|
||||
if __name__ == "__main__":
|
||||
while True:
|
||||
fetch_and_store_data()
|
||||
time.sleep(14400) # 每 4 小时执行一次
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,562 @@
|
|||
# coding=utf-8
|
||||
import datetime
|
||||
|
||||
import pymysql
|
||||
from loguru import logger
|
||||
import time
|
||||
|
||||
|
||||
class DbIf:
|
||||
def __init__(self, host="172.17.0.1", port=4419, user="root", password="IeQcJNnagkaFP1Or", dbname="btcdb"):
|
||||
self.conn = pymysql.connect(host=host, port=port, user=user, password=password, database=dbname,cursorclass=pymysql.cursors.DictCursor)
|
||||
|
||||
def update_to_dailyindsv2(self, dt_utc, height_begin, height_end, lth_volume, frm, cvdd, realized_price, transferred_price, balanced_price, nvt_ratio, velocity):
|
||||
with self.conn.cursor() as cursor:
|
||||
print(dt_utc, height_begin, height_end, lth_volume, frm, cvdd, realized_price, transferred_price, balanced_price, nvt_ratio, velocity)
|
||||
sql_insert = "REPLACE INTO dailyindsv3e2 (unixdt, height_begin, height_end, lth_volume, frm, cvdd, realized_price, transferred_price, balanced_price, nvt_ratio, velocity"
|
||||
sql_insert = sql_insert + ") VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
||||
cursor.execute(sql_insert, (
|
||||
dt_utc, height_begin, height_end, lth_volume, frm, cvdd, realized_price, transferred_price, balanced_price, nvt_ratio, velocity))
|
||||
|
||||
'''
|
||||
def update_to_realtimeindsv2(self, dt_utc, mempool_volume, mempool_fees):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "REPLACE INTO realtimeindsv2b (unixdt, mempool_volume, mempool_fees)"
|
||||
cursor.execute(sql_insert, (dt_utc, mempool_volume, mempool_fees))
|
||||
'''
|
||||
def update_to_dailyinds(self, dt_utc, height_begin, height_end, profitrate, fees, txs, new_address, total_address, new_address_volume, active_address,
|
||||
send_address, receive_address, volume, eavolume, sopr, asopr, easopr, lthsopr, sthsopr,
|
||||
asol, eaasol, dormancy, adormancy, eadormancy, cdd, sacdd, eacdd, day1, day7, day30, day60,
|
||||
day90, day180, day365, day730, csupply, mintusd, sumcsupply, sumcdd, sumeacdd,
|
||||
liveliness, ealiveliness, rprofit, rloss, rplrate, price, marketcap, rcap, earcap, mvrv,
|
||||
nupl,vdd):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "REPLACE INTO dailyindsv3e1 (unixdt, height_begin, height_end, profitrate, fees, txs, new_address, total_address, new_address_volume, active_address, send_address, receive_address, volume, eavolume, sopr, asopr, easopr, lthsopr, sthsopr,"
|
||||
sql_insert = sql_insert + " asol, eaasol, dormancy, adormancy, eadormancy, cdd, sacdd, eacdd, day1, day7, day30, day60, day90, day180, day365, day730, csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, "
|
||||
sql_insert = sql_insert + " ealiveliness, rprofit, rloss, rplrate, price, marketcap, rcap, earcap, mvrv, nupl,vdd"
|
||||
sql_insert = sql_insert + ") VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (
|
||||
dt_utc, height_begin, height_end, profitrate, fees, txs, new_address, total_address, new_address_volume, active_address, send_address,
|
||||
receive_address, volume, eavolume, sopr, asopr, easopr, lthsopr, sthsopr, asol, eaasol, dormancy,
|
||||
adormancy, eadormancy, cdd, sacdd, eacdd, day1, day7, day30, day60, day90, day180, day365, day730,
|
||||
csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, ealiveliness, rprofit, rloss, rplrate,
|
||||
price, marketcap, rcap, earcap, mvrv,
|
||||
nupl,vdd))
|
||||
self.conn.commit()
|
||||
'''
|
||||
def update_to_dailyinds(self, dt_utc, height_begin, height_end, profitrate, fees, txs, new_address, new_address_volume, active_address,
|
||||
send_address, receive_address, volume, eavolume, sopr, asopr, easopr, lthsopr, sthsopr,
|
||||
asol, eaasol, dormancy, adormancy, eadormancy, cdd, sacdd, eacdd, day1, day7, day30, day60,
|
||||
day90, day180, day365, day730, csupply, mintusd, sumcsupply, sumcdd, sumeacdd,
|
||||
liveliness, ealiveliness, rprofit, rloss, rplrate, price, marketcap, rcap, earcap, mvrv,
|
||||
lthmarketcap, lthrcap, sthmarketcap, sthrcap, lthmvrv, sthmvrv, nupl):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "REPLACE INTO dailyindsv1 (unixdt, height_begin, height_end, profitrate, fees, txs, new_address, new_address_volume, active_address, send_address, receive_address, volume, eavolume, sopr, asopr, easopr, lthsopr, sthsopr,"
|
||||
sql_insert = sql_insert + " asol, eaasol, dormancy, adormancy, eadormancy, cdd, sacdd, eacdd, day1, day7, day30, day60, day90, day180, day365, day730, csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, "
|
||||
sql_insert = sql_insert + " ealiveliness, rprofit, rloss, rplrate, price, marketcap, rcap, earcap, mvrv, lthmarketcap, lthrcap, sthmarketcap, sthrcap, lthmvrv, sthmvrv, nupl"
|
||||
sql_insert = sql_insert + ") VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (
|
||||
dt_utc, height_begin, height_end, profitrate, fees, txs, new_address, new_address_volume, active_address, send_address,
|
||||
receive_address, volume, eavolume, sopr, asopr, easopr, lthsopr, sthsopr, asol, eaasol, dormancy,
|
||||
adormancy, eadormancy, cdd, sacdd, eacdd, day1, day7, day30, day60, day90, day180, day365, day730,
|
||||
csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, ealiveliness, rprofit, rloss, rplrate,
|
||||
price, marketcap, rcap, earcap, mvrv, lthmarketcap, lthrcap, sthmarketcap, sthrcap, lthmvrv, sthmvrv,
|
||||
nupl))
|
||||
self.conn.commit()
|
||||
'''
|
||||
'''
|
||||
# daily daily on-chain volume
|
||||
def query_from_dailyvolume(self, start_id=0, end_id=0, start_time="", end_time="", limit=0):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "SELECT * from `dailyvolume`"
|
||||
|
||||
if start_id > 0:
|
||||
sql_query = sql_query + " WHERE id > " + str(start_id)
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " AND id < " + str(end_id)
|
||||
else:
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " WHERE id < " + str(end_id)
|
||||
|
||||
if len(start_time) > 0:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
else:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(NOW())"
|
||||
else:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(NOW()) AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
|
||||
sql_query = sql_query + " order by `unixdt` desc"
|
||||
|
||||
if limit > 0:
|
||||
sql_query = sql_query + " LIMIT " + str(limit)
|
||||
print(sql_query)
|
||||
cursor.execute(sql_query)
|
||||
return cursor.fetchall()
|
||||
'''
|
||||
|
||||
# newaddrs
|
||||
'''
|
||||
def update_to_newaddr(self, dayutc, last_profit_rate, last_fees, last_txs, last_eatxs, last_newaddr_cnt,
|
||||
last_newaddr_vol, last_active_addr_cnt, last_tx_addr_cnt, last_rx_addr_cnt, last_vol_change,
|
||||
last_vol):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "SELECT COUNT(id) FROM `newaddrs` WHERE unixdt=FROM_UNIXTIME(%s)"
|
||||
cursor.execute(sql_query, {dayutc, })
|
||||
result = cursor.fetchone()
|
||||
# print(dt_utc)
|
||||
# print(result)
|
||||
if result is not None:
|
||||
if "COUNT(id)" in result:
|
||||
if result["COUNT(id)"] > 0:
|
||||
print("update")
|
||||
sql_update = 'UPDATE newaddrs SET `total`=%s, `amount`=%s, `active`=%s, `tx`=%s, `rx`=%s, `volume_change`=%s, `volume=%s`,`txs`=%s, `eatxs`=%s, `fees`=%s, `last_profit_rate`=%s WHERE unixdt=FROM_UNIXTIME(%s)'
|
||||
cursor.execute(sql_update, (
|
||||
last_newaddr_cnt, last_newaddr_vol, last_active_addr_cnt, last_tx_addr_cnt,
|
||||
last_rx_addr_cnt,
|
||||
last_vol_change, last_vol, last_txs, last_eatxs, last_fees, last_profit_rate, dayutc))
|
||||
else:
|
||||
print("insert")
|
||||
sql_insert = "INSERT INTO `newaddrs` (`unixdt`, `total`, `amount`, `active`, `tx`, `rx`, `volume_change`, `volume`, `txs`, `eatxs`, `fees`, `last_profit_rate`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (
|
||||
dayutc, last_newaddr_cnt, last_newaddr_vol, last_active_addr_cnt, last_tx_addr_cnt,
|
||||
last_rx_addr_cnt, last_vol_change, last_vol, last_txs, last_eatxs, last_fees,
|
||||
last_profit_rate))
|
||||
self.conn.commit()
|
||||
'''
|
||||
'''
|
||||
def update_to_sellprofit(self, dayutc, current_price, block_buy_volume, block_sell_volume, block_sell_profit, last_height):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "INSERT INTO `dailybuysell` (`unixdt`, `price`, `buyvolume`, `sellvolume`, `sellprofit`, `height`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s)"
|
||||
#print(sql_insert)
|
||||
#print(datetime, txid, vout, voutalias, amount, height)
|
||||
cursor.execute(sql_insert, (dayutc, current_price, block_buy_volume, block_sell_volume, block_sell_profit, last_height))
|
||||
self.conn.commit()
|
||||
'''
|
||||
'''
|
||||
def update_to_bigsellprofit(self, dayutc, current_price, tx_sell_average, tx_sell_amount, tx_sell_profit,
|
||||
days_earliest, days_latest, days_largest, days_current, tx_buy_address, txid,
|
||||
block_height):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "INSERT INTO `bigsell` (`unixdt`, `buyprice`, `sellprice`, `amount`, `profit`, `days_earliest`, `days_latest`, `days_largest`, `days_current`, `address`, `txid`, `height`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
||||
# print(sql_insert)
|
||||
# print(datetime, txid, vout, voutalias, amount, height)
|
||||
cursor.execute(sql_insert, (
|
||||
dayutc, current_price, tx_sell_average, tx_sell_amount, tx_sell_profit, days_earliest, days_latest,
|
||||
days_largest, days_current, tx_buy_address, txid, block_height))
|
||||
self.conn.commit()
|
||||
'''
|
||||
'''
|
||||
def update_to_dailycdd(self, dt_utc, cdd):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "REPLACE INTO `dailycdd` (`unixdt`, `cdd`) VALUES (FROM_UNIXTIME(%s), %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (dt_utc, cdd))
|
||||
self.conn.commit()
|
||||
'''
|
||||
'''
|
||||
def update_to_dailycdddays(self, dt_utc, dormancy, adormancy, eadormancy, cdd, acdd, eacdd, day1, day7, day30,
|
||||
day60, day90, day180, day365, day730):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "REPLACE INTO `dailycdddays` (`unixdt`, dormancy, adormancy, eadormancy, cdd, acdd, eacdd, `day1`, day7, day30, day60, day90, day180, day365, day730) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (
|
||||
dt_utc, dormancy, adormancy, eadormancy, cdd, acdd, eacdd, day1, day7, day30, day60, day90, day180,
|
||||
day365,
|
||||
day730))
|
||||
self.conn.commit()
|
||||
'''
|
||||
'''
|
||||
def update_to_dailysopr(self, dt_utc, last_sopr, last_asopr, last_easopr, last_lth_sopr, last_sth_sopr):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "REPLACE INTO `dailysopr` (`unixdt`, `sopr`, asopr, easopr, lth_sopr, sth_sopr) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (dt_utc, last_sopr, last_asopr, last_easopr, last_lth_sopr, last_sth_sopr))
|
||||
self.conn.commit()
|
||||
'''
|
||||
'''
|
||||
def update_to_inds(self, dt_utc, csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, ealiveliness, rprofit,
|
||||
rloss, rplrate, price, marketcap, rcap, earcap, mvrv):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "REPLACE INTO `inds` (`unixdt`, csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, ealiveliness, rprofit, rloss, rplrate, price, marketcap, rcap, earcap, mvrv) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (
|
||||
dt_utc, csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, ealiveliness, rprofit, rloss,
|
||||
rplrate,
|
||||
price, marketcap, rcap, earcap, mvrv))
|
||||
self.conn.commit()
|
||||
'''
|
||||
# daily volume
|
||||
'''
|
||||
def update_to_dailyvolume(self, dt_utc, volume):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "REPLACE INTO `dailyvolume` (`unixdt`, `volume`) VALUES (FROM_UNIXTIME(%s), %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (dt_utc, volume))
|
||||
self.conn.commit()
|
||||
'''
|
||||
'''with self.conn.cursor() as cursor:
|
||||
sql_query = "SELECT COUNT(id) FROM `dailyvolume` WHERE unixdt=FROM_UNIXTIME(%s)"
|
||||
cursor.execute(sql_query, {dt_utc,})
|
||||
result = cursor.fetchone()
|
||||
#print(dt_utc)
|
||||
#print(result)
|
||||
if result is not None:
|
||||
if "COUNT(id)" in result:
|
||||
if result["COUNT(id)"] > 0:
|
||||
print("update")
|
||||
sql_update = 'UPDATE dailyvolume SET `volume`=%s WHERE unixdt=FROM_UNIXTIME(%s)'
|
||||
cursor.execute(sql_update, (volume, dt_utc))
|
||||
else:
|
||||
print("insert")
|
||||
sql_insert = "INSERT INTO `dailyvolume` (`unixdt`, `volume`) VALUES (FROM_UNIXTIME(%s), %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (dt_utc, volume))
|
||||
self.conn.commit()'''
|
||||
'''
|
||||
def update_to_dailyfees(self, dt_utc, fees):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "REPLACE INTO `dailyfees` (`unixdt`, `fees`) VALUES (FROM_UNIXTIME(%s), %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (dt_utc, fees))
|
||||
self.conn.commit()
|
||||
'''
|
||||
'''
|
||||
def import_to_dailyvolume2(self, dt_utc, volume):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "INSERT INTO `dailyvolume` (`unixdt`, `volume`) VALUES (FROM_UNIXTIME(%s), %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (dt_utc, volume))
|
||||
self.conn.commit()
|
||||
|
||||
def delete_dailyvolume_data(self, config):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "DELETE FROM `dailyvolume`"
|
||||
cursor.execute(sql_query)
|
||||
self.conn.commit()
|
||||
|
||||
|
||||
# daily market cap
|
||||
def query_from_marketcap(self, start_id=0, end_id=0, start_time="", end_time="", limit=0):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "SELECT * from `dailyprice`"
|
||||
|
||||
if start_id > 0:
|
||||
sql_query = sql_query + " WHERE id > " + str(start_id)
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " AND id < " + str(end_id)
|
||||
else:
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " WHERE id < " + str(end_id)
|
||||
|
||||
if len(start_time) > 0:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
else:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(NOW())"
|
||||
else:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(NOW()) AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
|
||||
sql_query = sql_query + " order by `unixdt` desc"
|
||||
|
||||
if limit > 0:
|
||||
sql_query = sql_query + " LIMIT " + str(limit)
|
||||
print(sql_query)
|
||||
cursor.execute(sql_query)
|
||||
return cursor.fetchall()
|
||||
|
||||
#daily price
|
||||
def import_to_dailyprice(self, dt_utc, price, volume, marketcap, csupply):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "INSERT INTO `dailyprice` (`unixdt`, `price`, `volume`, `marketcap`, `csupply`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s)"
|
||||
#print(sql_insert)
|
||||
cursor.execute(sql_insert, (dt_utc, price, volume, marketcap, csupply))
|
||||
self.conn.commit()
|
||||
|
||||
def update_to_dailyprice(self, dt_utc, price, volume, change):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "INSERT INTO `dailyprice` (`unixdt`, `price`, `volume`, `change`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s)"
|
||||
#print(sql_insert)
|
||||
cursor.execute(sql_insert, (dt_utc, price, volume, change))
|
||||
self.conn.commit()
|
||||
|
||||
def update_to_dailyprice2(self, dt_utc, price, volume, change, marketcap, csupply):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "SELECT COUNT(id) FROM `dailyprice` WHERE unixdt=FROM_UNIXTIME(%s)"
|
||||
cursor.execute(sql_query, {dt_utc,})
|
||||
result = cursor.fetchone()
|
||||
#print(dt_utc)
|
||||
#print(result)
|
||||
if result is not None:
|
||||
if "COUNT(id)" in result:
|
||||
if result["COUNT(id)"] > 0:
|
||||
print("update")
|
||||
sql_update = 'UPDATE dailyprice SET `price`=%s, `marketcap`=%s, `csupply`=%s, `volume`=%s, `change`=%s WHERE unixdt=FROM_UNIXTIME(%s)'
|
||||
cursor.execute(sql_update, (price, marketcap, csupply, volume, change, dt_utc))
|
||||
else:
|
||||
print("insert")
|
||||
sql_insert = "INSERT INTO `dailyprice` (`unixdt`, `price`, `volume`, `change`, `marketcap`, `csupply`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s)"
|
||||
# print(sql_insert)
|
||||
cursor.execute(sql_insert, (dt_utc, price, volume, change, marketcap, csupply))
|
||||
self.conn.commit()
|
||||
|
||||
def update_dailypricechange(self):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "SELECT unixdt,price FROM `dailyprice` order by unixdt"
|
||||
cursor.execute(sql_query)
|
||||
results = cursor.fetchall()
|
||||
prevprice = -1
|
||||
for result in results:
|
||||
if prevprice < 0:
|
||||
prevprice = result["price"]
|
||||
else:
|
||||
#print(result["unixdt"], result["price"], result["marketcap"])
|
||||
try:
|
||||
change = (result["price"]/prevprice - 1)*100
|
||||
except:
|
||||
change = 0
|
||||
#print(csupply)
|
||||
datestr = result["unixdt"]
|
||||
logger.debug(datestr.__format__('%Y-%m-%d') + " " + str(change))
|
||||
sql_update = 'UPDATE dailyprice SET `change`=%s WHERE unixdt=%s'
|
||||
cursor.execute(sql_update, (str(change), result["unixdt"]))
|
||||
prevprice = result["price"]
|
||||
self.conn.commit()
|
||||
|
||||
def delete_dailyprice_data(self, config):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "DELETE FROM `dailyprice`"
|
||||
cursor.execute(sql_query)
|
||||
self.conn.commit()
|
||||
|
||||
def delete_failed_blockvolume(self, height):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "DELETE FROM `bigamountvout` WHERE height=%s"
|
||||
cursor.execute(sql_insert, (height,))
|
||||
sql_insert = "DELETE FROM `bigamounttx` WHERE height=%s"
|
||||
cursor.execute(sql_insert, (height,))
|
||||
sql_insert = "DELETE FROM `blockamount` WHERE height=%s"
|
||||
cursor.execute(sql_insert, (height,))
|
||||
self.conn.commit()
|
||||
|
||||
#block check --- big amount for vout
|
||||
def query_from_bigamountvout(self, start_id=0, end_id=0, start_time="", end_time="", address="", limit=0):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "SELECT * from `bigamountvout`"
|
||||
if start_id > 0:
|
||||
sql_query = sql_query + " WHERE id > " + str(start_id)
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " AND id < " + str(end_id)
|
||||
else:
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " WHERE id < " + str(end_id)
|
||||
|
||||
if len(start_time) > 0:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
else:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(NOW())"
|
||||
else:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(NOW()) AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
|
||||
sql_query = sql_query + " order by `unixdt` desc"
|
||||
if limit > 0:
|
||||
sql_query = sql_query + " LIMIT " + str(limit)
|
||||
|
||||
print(sql_query)
|
||||
cursor.execute(sql_query)
|
||||
return cursor.fetchall()
|
||||
'''
|
||||
|
||||
def update_to_bigamountvout(self, datetime, txid, vout, voutn, vouttype, amount, height, days, buyin, sellout,
|
||||
profit):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "INSERT INTO `bigamountvoutv3e` (`unixdt`, `vout`, `voutn`, `vouttype`, `amount`, `height`, `txid`, days, buyprice, sellprice, profit) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
||||
# print(sql_insert)
|
||||
# print(datetime, txid, vout, voutalias, amount, height)
|
||||
cursor.execute(sql_insert,
|
||||
(datetime, vout, voutn, vouttype, amount, height, txid, days, buyin, sellout, profit))
|
||||
self.conn.commit()
|
||||
|
||||
'''
|
||||
# block check --- big amount tx
|
||||
def query_from_bigamounttx(self, start_id=0, end_id=0, start_time="", end_time="", address="", limit=0):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "SELECT * from `bigamounttx`"
|
||||
if start_id > 0:
|
||||
sql_query = sql_query + " WHERE id > " + str(start_id)
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " AND id < " + str(end_id)
|
||||
else:
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " WHERE id < " + str(end_id)
|
||||
|
||||
if len(start_time) > 0:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
else:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(NOW())"
|
||||
else:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(NOW()) AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
|
||||
sql_query = sql_query + " order by `unixdt` desc"
|
||||
if limit > 0:
|
||||
sql_query = sql_query + " LIMIT " + str(limit)
|
||||
|
||||
print(sql_query)
|
||||
cursor.execute(sql_query)
|
||||
return cursor.fetchall()
|
||||
|
||||
def update_to_bigamounttx(self, datetime, txid, amount, height):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "INSERT INTO `bigamounttx` (`unixdt`, `amount`, `height`, `txid`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s)"
|
||||
#print(sql_insert)
|
||||
#print(datetime, txid, amount, height)
|
||||
cursor.execute(sql_insert, (datetime, amount, height, txid))
|
||||
self.conn.commit()
|
||||
|
||||
# block check --- per block amount
|
||||
def query_from_blockamount(self, start_id=0, end_id=0, start_time="", end_time="", limit=0, amount=0):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "SELECT * from `blockamount`"
|
||||
|
||||
if start_id > 0:
|
||||
sql_query = sql_query + " WHERE id > " + str(start_id)
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " AND id < " + str(end_id)
|
||||
if amount > 0:
|
||||
sql_query = sql_query + " AND amount > " + str(amount)
|
||||
else:
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " WHERE id < " + str(end_id)
|
||||
if amount > 0:
|
||||
sql_query = sql_query + " AND amount > " + str(amount)
|
||||
else:
|
||||
if amount > 0:
|
||||
sql_query = sql_query + "WHERE amount > " + str(amount)
|
||||
|
||||
if len(start_time) > 0:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
else:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(NOW())"
|
||||
if amount > 0:
|
||||
sql_query = sql_query + " AND amount > " + str(amount)
|
||||
else:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(NOW()) AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
if amount > 0:
|
||||
sql_query = sql_query + " AND amount > " + str(amount)
|
||||
|
||||
sql_query = sql_query + " order by `unixdt` desc"
|
||||
|
||||
if limit > 0:
|
||||
sql_query = sql_query + " LIMIT " + str(limit)
|
||||
|
||||
cursor.execute(sql_query)
|
||||
return cursor.fetchall()
|
||||
|
||||
def update_to_blockamount(self, datetime, blockid, amount, height):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "INSERT INTO `blockamount` (`unixdt`, `amount`, `height`, `blockid`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s)"
|
||||
#print(sql_insert)
|
||||
#print(datetime, blockid, amount, height)
|
||||
cursor.execute(sql_insert, (datetime, amount, height, blockid))
|
||||
self.conn.commit()
|
||||
|
||||
def delete_node_data(self, config):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "DELETE FROM `blockamount`"
|
||||
cursor.execute(sql_query)
|
||||
sql_query = "DELETE FROM `bigamountvout`"
|
||||
cursor.execute(sql_query)
|
||||
sql_query = "DELETE FROM `bigamounttx`"
|
||||
cursor.execute(sql_query)
|
||||
self.conn.commit()
|
||||
|
||||
def update_realize_cap(self, dayutc, last_rv):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "INSERT INTO `dailyrcap` (`unixdt`, `rcap`) VALUES (FROM_UNIXTIME(%s), %s)"
|
||||
#print(sql_insert)
|
||||
#print(datetime, blockid, amount, height)
|
||||
cursor.execute(sql_insert, (dayutc, last_rv))
|
||||
self.conn.commit()
|
||||
|
||||
# daily realize cap
|
||||
def query_from_realizecap(self, start_id=0, end_id=0, start_time="", end_time="", limit=0):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "SELECT * from `dailyrcap`"
|
||||
|
||||
if start_id > 0:
|
||||
sql_query = sql_query + " WHERE id > " + str(start_id)
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " AND id < " + str(end_id)
|
||||
else:
|
||||
if end_id > 0:
|
||||
sql_query = sql_query + " WHERE id < " + str(end_id)
|
||||
|
||||
if len(start_time) > 0:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
else:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(NOW())"
|
||||
else:
|
||||
if len(end_time) > 0:
|
||||
sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \
|
||||
UNIX_TIMESTAMP(NOW()) AND UNIX_TIMESTAMP(\'" + end_time + "\')"
|
||||
|
||||
sql_query = sql_query + " order by `unixdt` desc"
|
||||
|
||||
if limit > 0:
|
||||
sql_query = sql_query + " LIMIT " + str(limit)
|
||||
print(sql_query)
|
||||
cursor.execute(sql_query)
|
||||
return cursor.fetchall()
|
||||
|
||||
def update_daily_addr(self, dayutc, last_add_cnt):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_insert = "INSERT INTO `dailyaddradd` (`unixdt`, `addcnt`) VALUES (FROM_UNIXTIME(%s), %s)"
|
||||
#print(sql_insert)
|
||||
#print(datetime, blockid, amount, height)
|
||||
cursor.execute(sql_insert, (dayutc, last_add_cnt))
|
||||
self.conn.commit()
|
||||
|
||||
def delete_daily_addr(self, config):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "DELETE FROM `dailyaddradd`"
|
||||
cursor.execute(sql_query)
|
||||
self.conn.commit()
|
||||
|
||||
def delete_daily_rv(self, config):
|
||||
with self.conn.cursor() as cursor:
|
||||
sql_query = "DELETE FROM `dailyrcap`"
|
||||
cursor.execute(sql_query)
|
||||
self.conn.commit()
|
||||
'''
|
||||
|
||||
def __del__(self):
|
||||
self.conn.close()
|
|
@ -0,0 +1,610 @@
|
|||
import time
|
||||
|
||||
from walrus import *
|
||||
from loguru import logger
|
||||
class RedisIf:
|
||||
def __init__(self, host="127.0.0.1", port=6379, password="", db=0):
|
||||
self.db = Database(host=host, port=port, db=db)
|
||||
|
||||
self.zbalance = self.db.ZSet("balancev2d")
|
||||
'''
|
||||
#realize cap progress
|
||||
self.rv = self.db.Hash("rv")
|
||||
#address and balance progress
|
||||
self.addr = self.db.Hash("addr")
|
||||
#block volume progress
|
||||
self.bv = self.db.Hash("bv")
|
||||
#daily volume progress
|
||||
self.dv = self.db.Hash("dv")
|
||||
'''
|
||||
'''
|
||||
#stat tx progress
|
||||
self.tx = self.db.Hash("tx")
|
||||
|
||||
#ETH daily contract progress
|
||||
self.eth_dc = self.db.Hash("ethdc")
|
||||
|
||||
#btc stats fee
|
||||
self.btc_stats = self.db.Hash("btcstats")
|
||||
|
||||
#btc stats volume
|
||||
self.btc_volume = self.db.Hash("btcvolume")
|
||||
|
||||
# btc stats cdd
|
||||
self.btc_cdd = self.db.Hash("btccdd")
|
||||
|
||||
# btc stats cdd days
|
||||
self.btc_cdd_days = self.db.Hash("btccdddays")
|
||||
'''
|
||||
self.btc_block_time = self.db.Hash("btcblocktimev2d")
|
||||
'''
|
||||
self.btc_sopr = self.db.Hash("btcsopr")
|
||||
'''
|
||||
self.btc_data = self.db.Hash("btc_datav2d")
|
||||
|
||||
self.active_address = self.db.Set("active_addressv2d")
|
||||
self.send_address = self.db.Set("send_addressv2d")
|
||||
self.receive_address = self.db.Set("receive_addressv2d")
|
||||
|
||||
def get_btc_data(self, key):
|
||||
value = None
|
||||
if self.btc_data[key] is not None:
|
||||
value = self.btc_data[key]
|
||||
return value
|
||||
|
||||
def set_btc_data(self, key, value):
|
||||
self.btc_data[key] = value
|
||||
|
||||
def reset_btc_data(self):
|
||||
self.btc_data.clear()
|
||||
self.zbalance.clear()
|
||||
self.btc_block_time.clear()
|
||||
|
||||
'''
|
||||
def get_last_btc_sopr(self):
|
||||
last_sopr_buy = None
|
||||
last_asopr_buy = None
|
||||
last_easopr_buy = None
|
||||
last_lth_sopr_buy = None
|
||||
last_sth_sopr_buy = None
|
||||
last_asol = None
|
||||
last_eaasol = None
|
||||
|
||||
if self.btc_sopr["last_asol"] is not None:
|
||||
last_asol = self.btc_sopr["last_asol"]
|
||||
#last_asol = float(self.btc_sopr["last_asol"].decode("utf-8"))
|
||||
if self.btc_sopr["last_eaasol"] is not None:
|
||||
last_eaasol = self.btc_sopr["last_eaasol"]
|
||||
#last_eaasol = float(self.btc_sopr["last_eaasol"].decode("utf-8"))
|
||||
|
||||
|
||||
if self.btc_sopr["last_sopr_buy"] is not None:
|
||||
last_sopr_buy = self.btc_sopr["last_sopr_buy"]
|
||||
#last_sopr_buy = float(self.btc_sopr["last_sopr_buy"].decode("utf-8"))
|
||||
if self.btc_sopr["last_asopr_buy"] is not None:
|
||||
last_asopr_buy = self.btc_sopr["last_asopr_buy"]
|
||||
#last_asopr_buy = float(self.btc_sopr["last_asopr_buy"].decode("utf-8"))
|
||||
if self.btc_sopr["last_easopr_buy"] is not None:
|
||||
last_easopr_buy = self.btc_sopr["last_easopr_buy"]
|
||||
#last_easopr_buy = float(self.btc_sopr["last_easopr_buy"].decode("utf-8"))
|
||||
if self.btc_sopr["last_lth_sopr_buy"] is not None:
|
||||
last_lth_sopr_buy = self.btc_sopr["last_lth_sopr_buy"]
|
||||
#last_lth_sopr_buy = float(self.btc_sopr["last_lth_sopr_buy"].decode("utf-8"))
|
||||
if self.btc_sopr["last_sth_sopr_buy"] is not None:
|
||||
last_sth_sopr_buy = self.btc_sopr["last_sth_sopr_buy"]
|
||||
#last_sth_sopr_buy = float(self.btc_sopr["last_sth_sopr_buy"].decode("utf-8"))
|
||||
|
||||
last_sopr_sell = None
|
||||
last_asopr_sell = None
|
||||
last_easopr_sell = None
|
||||
last_lth_sopr_sell = None
|
||||
last_sth_sopr_sell = None
|
||||
if self.btc_sopr["last_sopr_sell"] is not None:
|
||||
last_sopr_sell = self.btc_sopr["last_sopr_sell"]
|
||||
# last_sopr_sell = float(self.btc_sopr["last_sopr_sell"].decode("utf-8"))
|
||||
if self.btc_sopr["last_asopr_sell"] is not None:
|
||||
last_asopr_sell = self.btc_sopr["last_asopr_sell"]
|
||||
# last_asopr = float(self.btc_sopr["last_asopr"].decode("utf-8"))
|
||||
if self.btc_sopr["last_easopr_sell"] is not None:
|
||||
last_easopr_sell = self.btc_sopr["last_easopr_sell"]
|
||||
# last_easopr_sell = float(self.btc_sopr["last_easopr_sell"].decode("utf-8"))
|
||||
if self.btc_sopr["last_lth_sopr_sell"] is not None:
|
||||
last_lth_sopr_sell = self.btc_sopr["last_lth_sopr_sell"]
|
||||
# last_lth_sopr_sell = float(self.btc_sopr["last_lth_sopr_sell"].decode("utf-8"))
|
||||
if self.btc_sopr["last_sth_sopr_sell"] is not None:
|
||||
last_sth_sopr_sell = self.btc_sopr["last_sth_sopr_sell"]
|
||||
# last_sth_sopr_sell = float(self.btc_sopr["last_sth_sopr_sell"].decode("utf-8"))
|
||||
|
||||
return last_asol, last_eaasol, last_sopr_buy, last_asopr_buy, last_easopr_buy, last_lth_sopr_buy, last_sth_sopr_buy, last_sopr_sell, last_asopr_sell, last_easopr_sell, last_lth_sopr_sell, last_sth_sopr_sell
|
||||
|
||||
def set_last_btc_sopr(self, last_asol, last_eaasol, last_sopr_buy, last_asopr_buy, last_easopr_buy, last_lth_sopr_buy, last_sth_sopr_buy, last_sopr_sell, last_asopr_sell, last_easopr_sell, last_lth_sopr_sell, last_sth_sopr_sell):
|
||||
self.btc_sopr["last_asol"] = last_asol
|
||||
self.btc_sopr["last_eaasol"] = last_eaasol
|
||||
|
||||
self.btc_sopr["last_sopr_buy"] = last_sopr_buy
|
||||
self.btc_sopr["last_asopr_buy"] = last_asopr_buy
|
||||
self.btc_sopr["last_easopr_buy"] = last_easopr_buy
|
||||
self.btc_sopr["last_lth_sopr_buy"] = last_lth_sopr_buy
|
||||
self.btc_sopr["last_sth_sopr_buy"] = last_sth_sopr_buy
|
||||
self.btc_sopr["last_sopr_sell"] = last_sopr_sell
|
||||
self.btc_sopr["last_asopr_sell"] = last_asopr_sell
|
||||
self.btc_sopr["last_easopr_sell"] = last_easopr_sell
|
||||
self.btc_sopr["last_lth_sopr_sell"] = last_lth_sopr_sell
|
||||
self.btc_sopr["last_sth_sopr_sell"] = last_sth_sopr_sell
|
||||
'''
|
||||
def get_block_time(self, height):
|
||||
block_time = None
|
||||
height_str = str(height)
|
||||
if self.btc_block_time[height_str] is not None:
|
||||
block_time = int(self.btc_block_time[height_str].decode("utf-8"))
|
||||
#block_time = int(self.btc_block_time[height_str].decode("utf-8"))
|
||||
|
||||
return block_time
|
||||
|
||||
def set_block_time(self, height, ts):
|
||||
height_str = str(height)
|
||||
self.btc_block_time[height_str] = ts
|
||||
|
||||
'''
|
||||
def get_last_btc_cdd_days(self):
|
||||
last_cdd = None
|
||||
last_acdd = None
|
||||
last_eacdd = None
|
||||
last_cdd_day1= None
|
||||
last_cdd_day7 = None
|
||||
last_cdd_day30 = None
|
||||
last_cdd_day60 = None
|
||||
last_cdd_day90 = None
|
||||
last_cdd_day180 = None
|
||||
last_cdd_day365 = None
|
||||
last_cdd_day730 = None
|
||||
|
||||
last_date = None
|
||||
last_height = None
|
||||
last_date_str = None
|
||||
|
||||
if self.btc_cdd["last_cdd"] is not None:
|
||||
last_cdd = float(self.btc_cdd["last_cdd"].decode("utf-8"))
|
||||
if self.btc_cdd["last_acdd"] is not None:
|
||||
last_acdd = float(self.btc_cdd["last_acdd"].decode("utf-8"))
|
||||
if self.btc_cdd["last_eacdd"] is not None:
|
||||
last_eacdd = float(self.btc_cdd["last_eacdd"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_cdd_day1"] is not None:
|
||||
last_cdd_day1 = float(self.btc_cdd_days["last_cdd_day1"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_cdd_day7"] is not None:
|
||||
last_cdd_day7 = float(self.btc_cdd_days["last_cdd_day7"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_cdd_day30"] is not None:
|
||||
last_cdd_day30 = float(self.btc_cdd_days["last_cdd_day30"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_cdd_day60"] is not None:
|
||||
last_cdd_day60 = float(self.btc_cdd_days["last_cdd_day60"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_cdd_day90"] is not None:
|
||||
last_cdd_day90 = float(self.btc_cdd_days["last_cdd_day90"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_cdd_day180"] is not None:
|
||||
last_cdd_day180 = float(self.btc_cdd_days["last_cdd_day180"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_cdd_day365"] is not None:
|
||||
last_cdd_day365 = float(self.btc_cdd_days["last_cdd_day365"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_cdd_day730"] is not None:
|
||||
last_cdd_day730 = float(self.btc_cdd_days["last_cdd_day730"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_date"] is not None:
|
||||
last_date = int(self.btc_cdd_days["last_date"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_height"] is not None:
|
||||
last_height = int(self.btc_cdd_days["last_height"].decode("utf-8"))
|
||||
if self.btc_cdd_days["last_date_str"] is not None:
|
||||
last_date_str = self.btc_cdd_days["last_date_str"].decode("utf-8")
|
||||
return last_cdd, last_acdd, last_eacdd, last_cdd_day1, last_cdd_day7, last_cdd_day30, last_cdd_day60, last_cdd_day90, last_cdd_day180, last_cdd_day365, last_cdd_day730, last_date, last_height, last_date_str
|
||||
|
||||
def set_last_btc_cdd_days(self, cdd, acdd, eacdd, day1, day7, day30, day60, day90, day180, day365, day730, dt, height, dtstr):
|
||||
self.btc_cdd["last_cdd"] = cdd
|
||||
self.btc_cdd["last_acdd"] = acdd
|
||||
self.btc_cdd["last_eacdd"] = eacdd
|
||||
self.btc_cdd_days["last_cdd_day1"] = day1
|
||||
self.btc_cdd_days["last_cdd_day7"] = day7
|
||||
self.btc_cdd_days["last_cdd_day30"] = day30
|
||||
self.btc_cdd_days["last_cdd_day60"] = day60
|
||||
self.btc_cdd_days["last_cdd_day90"] = day90
|
||||
self.btc_cdd_days["last_cdd_day180"] = day180
|
||||
self.btc_cdd_days["last_cdd_day365"] = day365
|
||||
self.btc_cdd_days["last_cdd_day730"] = day730
|
||||
self.btc_cdd_days["last_date"] = dt
|
||||
self.btc_cdd_days["last_height"] = height
|
||||
self.btc_cdd_days["last_date_str"] = dtstr
|
||||
'''
|
||||
'''
|
||||
def get_last_btc_cdd(self):
|
||||
last_cdd = None
|
||||
last_date = None
|
||||
last_height = None
|
||||
last_date_str = None
|
||||
if self.btc_cdd["last_cdd"] is not None:
|
||||
last_cdd = float(self.btc_cdd["last_cdd"].decode("utf-8"))
|
||||
if self.btc_cdd["last_date"] is not None:
|
||||
last_date = int(self.btc_cdd["last_date"].decode("utf-8"))
|
||||
if self.btc_cdd["last_height"] is not None:
|
||||
last_height = int(self.btc_cdd["last_height"].decode("utf-8"))
|
||||
if self.btc_cdd["last_date_str"] is not None:
|
||||
last_date_str = self.btc_cdd["last_date_str"].decode("utf-8")
|
||||
return last_cdd, last_date, last_height, last_date_str
|
||||
|
||||
def set_last_btc_cdd(self, cdd, dt, height, dtstr):
|
||||
self.btc_cdd["last_cdd"] = cdd
|
||||
self.btc_cdd["last_date"] = dt
|
||||
self.btc_cdd["last_height"] = height
|
||||
self.btc_cdd["last_date_str"] = dtstr
|
||||
|
||||
def get_last_btc_volume(self):
|
||||
last_volume = None
|
||||
last_date = None
|
||||
last_height = None
|
||||
last_date_str = None
|
||||
if self.btc_volume["last_volume"] is not None:
|
||||
last_volume = float(self.btc_volume["last_volume"].decode("utf-8"))
|
||||
if self.btc_volume["last_date"] is not None:
|
||||
last_date = int(self.btc_volume["last_date"].decode("utf-8"))
|
||||
if self.btc_volume["last_height"] is not None:
|
||||
last_height = int(self.btc_volume["last_height"].decode("utf-8"))
|
||||
if self.btc_volume["last_date_str"] is not None:
|
||||
last_date_str = self.btc_volume["last_date_str"].decode("utf-8")
|
||||
return last_volume, last_date, last_height, last_date_str
|
||||
|
||||
def set_last_btc_volume(self, volume, dt, height, dtstr):
|
||||
self.btc_volume["last_volume"] = volume
|
||||
self.btc_volume["last_date"] = dt
|
||||
self.btc_volume["last_height"] = height
|
||||
self.btc_volume["last_date_str"] = dtstr
|
||||
'''
|
||||
'''
|
||||
def get_last_btc_stats(self):
|
||||
last_fees = None
|
||||
last_date = None
|
||||
last_height = None
|
||||
last_date_str = None
|
||||
last_volume = None
|
||||
if self.btc_stats["last_fees"] is not None:
|
||||
last_fees = float(self.btc_stats["last_fees"].decode("utf-8"))
|
||||
if self.btc_volume["last_volume"] is not None:
|
||||
last_volume = float(self.btc_volume["last_volume"].decode("utf-8"))
|
||||
if self.btc_stats["last_date"] is not None:
|
||||
last_date = int(self.btc_stats["last_date"].decode("utf-8"))
|
||||
if self.btc_stats["last_height"] is not None:
|
||||
last_height = int(self.btc_stats["last_height"].decode("utf-8"))
|
||||
if self.btc_stats["last_date_str"] is not None:
|
||||
last_date_str = self.btc_stats["last_date_str"].decode("utf-8")
|
||||
return last_fees, last_volume, last_date, last_height, last_date_str
|
||||
|
||||
def set_last_btc_stats(self, fees, volume, dt, height, dtstr):
|
||||
self.btc_stats["last_fees"] = fees
|
||||
self.btc_volume["last_volume"] = volume
|
||||
self.btc_stats["last_date"] = dt
|
||||
self.btc_stats["last_height"] = height
|
||||
self.btc_stats["last_date_str"] = dtstr
|
||||
|
||||
|
||||
def get_last_eth_dc(self):
|
||||
last_date = None
|
||||
last_height = None
|
||||
last_date_str = None
|
||||
if self.eth_dc["last_date"] is not None:
|
||||
last_date = int(self.eth_dc["last_date"].decode("utf-8"))
|
||||
if self.eth_dc["last_height"] is not None:
|
||||
last_height = int(self.eth_dc["last_height"].decode("utf-8"))
|
||||
if self.eth_dc["last_date_str"] is not None:
|
||||
last_date_str = self.eth_dc["last_date_str"].decode("utf-8")
|
||||
return last_date, last_height, last_date_str
|
||||
|
||||
def set_last_eth_dc(self, dt, height, dtstr):
|
||||
self.eth_dc["last_date"] = dt
|
||||
self.eth_dc["last_height"] = height
|
||||
self.eth_dc["last_date_str"] = dtstr
|
||||
'''
|
||||
'''
|
||||
def get_last_dv(self):
|
||||
last_dv = None
|
||||
last_date = None
|
||||
last_height = None
|
||||
last_date_str = None
|
||||
if self.dv["last_dv"] is not None:
|
||||
last_dv = float(self.dv["last_dv"].decode("utf-8"))
|
||||
if self.dv["last_date"] is not None:
|
||||
last_date = int(self.dv["last_date"].decode("utf-8"))
|
||||
if self.dv["last_height"] is not None:
|
||||
last_height = int(self.dv["last_height"].decode("utf-8"))
|
||||
if self.dv["last_date_str"] is not None:
|
||||
last_date_str = self.dv["last_date_str"].decode("utf-8")
|
||||
return last_dv, last_date, last_height, last_date_str
|
||||
|
||||
def set_last_dv(self, dv, dt, height, dtstr):
|
||||
self.dv["last_dv"] = dv
|
||||
self.dv["last_date"] = dt
|
||||
self.dv["last_height"] = height
|
||||
self.dv["last_date_str"] = dtstr
|
||||
|
||||
def get_last_bv(self):
|
||||
last_height = None
|
||||
if self.bv["last_height"] is not None:
|
||||
last_height = int(self.bv["last_height"].decode("utf-8"))
|
||||
return last_height
|
||||
|
||||
def set_last_bv(self, height):
|
||||
self.bv["last_height"] = height
|
||||
'''
|
||||
'''
|
||||
def get_last_ind(self):
|
||||
last_csupply = None
|
||||
last_mintusd = None
|
||||
last_sumcsupply = None
|
||||
last_sumcdd = None
|
||||
last_sumeacdd = None
|
||||
last_rprofit = None
|
||||
last_rloss = None
|
||||
last_marketcap = None
|
||||
last_rcap = None
|
||||
last_mvrv = None
|
||||
|
||||
last_earcap = None
|
||||
if self.tx["last_csupply"] is not None:
|
||||
last_csupply = float(self.tx["last_csupply"].decode("utf-8"))
|
||||
if self.tx["last_mintusd"] is not None:
|
||||
last_mintusd = float(self.tx["last_mintusd"].decode("utf-8"))
|
||||
if self.tx["last_sumcsupply"] is not None:
|
||||
last_sumcsupply = float(self.tx["last_sumcsupply"].decode("utf-8"))
|
||||
if self.tx["last_sumcdd"] is not None:
|
||||
last_sumcdd = float(self.tx["last_sumcdd"].decode("utf-8"))
|
||||
if self.tx["last_sumeacdd"] is not None:
|
||||
last_sumeacdd = float(self.tx["last_sumeacdd"].decode("utf-8"))
|
||||
if self.tx["last_rprofit"] is not None:
|
||||
last_rprofit = float(self.tx["last_rprofit"].decode("utf-8"))
|
||||
if self.tx["last_rloss"] is not None:
|
||||
last_rloss = float(self.tx["last_rloss"].decode("utf-8"))
|
||||
if self.tx["last_marketcap"] is not None:
|
||||
last_marketcap = float(self.tx["last_marketcap"].decode("utf-8"))
|
||||
if self.tx["last_rcap"] is not None:
|
||||
last_rcap = float(self.tx["last_rcap"].decode("utf-8"))
|
||||
if self.tx["last_earcap"] is not None:
|
||||
last_earcap = float(self.tx["last_earcap"].decode("utf-8"))
|
||||
if self.tx["last_mvrv"] is not None:
|
||||
last_mvrv = float(self.tx["last_mvrv"].decode("utf-8"))
|
||||
|
||||
|
||||
return last_csupply, last_mintusd, last_sumcsupply, last_sumcdd, last_sumeacdd, last_rprofit, last_rloss, last_marketcap, last_rcap, last_earcap, last_mvrv
|
||||
|
||||
def set_last_ind(self, last_csupply, last_mintusd, last_sumcsupply, last_sumcdd, last_sumeacdd, last_rprofit, last_rloss, last_marketcap, last_rcap, last_earcap, last_mvrv):
|
||||
self.tx["last_csupply"] = last_csupply
|
||||
self.tx["last_mintusd"] = last_mintusd
|
||||
self.tx["last_sumcsupply"] = last_sumcsupply
|
||||
self.tx["last_sumcdd"] = last_sumcdd
|
||||
self.tx["last_sumeacdd"] = last_sumeacdd
|
||||
self.tx["last_rprofit"] = last_rprofit
|
||||
self.tx["last_rloss"] = last_rloss
|
||||
self.tx["last_marketcap"] = last_marketcap
|
||||
self.tx["last_rcap"] = last_rcap
|
||||
self.tx["last_earcap"] = last_earcap
|
||||
self.tx["last_mvrv"] = last_mvrv
|
||||
|
||||
|
||||
def get_last_tx(self):
|
||||
last_profit = None
|
||||
last_fees = None
|
||||
last_newaddr_cnt = None
|
||||
last_newaddr_vol = None
|
||||
last_active_addr_cnt = None
|
||||
last_tx_addr_cnt = None
|
||||
last_rx_addr_cnt = None
|
||||
last_vol_change = None
|
||||
last_vol = None
|
||||
last_avol = None
|
||||
last_date = None
|
||||
last_height = None
|
||||
last_date_str = None
|
||||
last_txs = None
|
||||
last_eatxs = None
|
||||
if self.tx["last_profit_rate"] is not None:
|
||||
last_profit = int(self.tx["last_profit"].decode("utf-8"))
|
||||
if self.tx["last_fees"] is not None:
|
||||
last_fees = int(self.tx["last_fees"].decode("utf-8"))
|
||||
if self.tx["last_txs"] is not None:
|
||||
last_txs = int(self.tx["last_txs"].decode("utf-8"))
|
||||
if self.tx["last_eatxs"] is not None:
|
||||
last_eatxs = int(self.tx["last_eatxs"].decode("utf-8"))
|
||||
if self.tx["last_newaddr_cnt"] is not None:
|
||||
last_newaddr_cnt = int(self.tx["last_newaddr_cnt"].decode("utf-8"))
|
||||
if self.tx["last_newaddr_vol"] is not None:
|
||||
last_newaddr_vol = float(self.tx["last_newaddr_vol"].decode("utf-8"))
|
||||
if self.tx["last_active_addr_cnt"] is not None:
|
||||
last_active_addr_cnt = int(self.tx["last_active_addr_cnt"].decode("utf-8"))
|
||||
if self.tx["last_tx_addr_cnt"] is not None:
|
||||
last_tx_addr_cnt = int(self.tx["last_tx_addr_cnt"].decode("utf-8"))
|
||||
if self.tx["last_rx_addr_cnt"] is not None:
|
||||
last_rx_addr_cnt = int(self.tx["last_rx_addr_cnt"].decode("utf-8"))
|
||||
if self.tx["last_vol_change"] is not None:
|
||||
last_vol_change = float(self.tx["last_vol_change"].decode("utf-8"))
|
||||
if self.tx["last_vol"] is not None:
|
||||
last_vol = float(self.tx["last_vol"].decode("utf-8"))
|
||||
if self.tx["last_avol"] is not None:
|
||||
last_avol = float(self.tx["last_avol"].decode("utf-8"))
|
||||
if self.tx["last_date"] is not None:
|
||||
last_date = int(self.tx["last_date"].decode("utf-8"))
|
||||
if self.tx["last_height"] is not None:
|
||||
last_height = int(self.tx["last_height"].decode("utf-8"))
|
||||
if self.tx["last_date_str"] is not None:
|
||||
last_date_str = self.tx["last_date_str"].decode("utf-8")
|
||||
return last_profit, last_fees, last_txs, last_eatxs, last_newaddr_cnt, last_newaddr_vol, last_active_addr_cnt, last_tx_addr_cnt, last_rx_addr_cnt, last_vol_change, last_vol, last_avol, last_date, last_height, last_date_str
|
||||
|
||||
def set_last_tx(self, last_profit, last_fees, last_txs, last_eatxs, newaddr_cnt, newaddr_vol, active_addr_cnt, tx_addr_cnt, rx_addr_cnt, vol_change, vol, avol, dt, height, dtstr):
|
||||
self.tx["last_profit"] = last_profit
|
||||
self.tx["last_fees"] = last_fees
|
||||
self.tx["last_txs"] = last_txs
|
||||
self.tx["last_eatxs"] = last_eatxs
|
||||
self.tx["last_newaddr_cnt"] = newaddr_cnt
|
||||
self.tx["last_newaddr_vol"] = newaddr_vol
|
||||
self.tx["last_active_addr_cnt"] = active_addr_cnt
|
||||
self.tx["last_tx_addr_cnt"] = tx_addr_cnt
|
||||
self.tx["last_rx_addr_cnt"] = rx_addr_cnt
|
||||
self.tx["last_vol_change"] = vol_change
|
||||
self.tx["last_vol"] = vol
|
||||
self.tx["last_avol"] = avol
|
||||
self.tx["last_date"] = dt
|
||||
self.tx["last_height"] = height
|
||||
self.tx["last_date_str"] = dtstr
|
||||
'''
|
||||
'''
|
||||
def get_last_addr(self):
|
||||
last_daily_cnt = None
|
||||
last_date = None
|
||||
last_height = None
|
||||
last_date_str = None
|
||||
if self.addr["last_daily_cnt"] is not None:
|
||||
last_daily_cnt = int(self.addr["last_daily_cnt"].decode("utf-8"))
|
||||
if self.addr["last_date"] is not None:
|
||||
last_date = int(self.addr["last_date"].decode("utf-8"))
|
||||
if self.addr["last_height"] is not None:
|
||||
last_height = int(self.addr["last_height"].decode("utf-8"))
|
||||
if self.addr["last_date_str"] is not None:
|
||||
last_date_str = self.addr["last_date_str"].decode("utf-8")
|
||||
return last_daily_cnt, last_date, last_height, last_date_str
|
||||
|
||||
def set_last_addr(self, daily_cnt, dt, height, dtstr):
|
||||
self.addr["last_daily_cnt"] = daily_cnt
|
||||
self.addr["last_date"] = dt
|
||||
self.addr["last_height"] = height
|
||||
self.addr["last_date_str"] = dtstr
|
||||
'''
|
||||
|
||||
def is_active_address(self, address):
|
||||
result = address in self.active_address
|
||||
if not result:
|
||||
self.active_address.add(address)
|
||||
return result
|
||||
|
||||
def reset_active_address(self):
|
||||
self.active_address.clear()
|
||||
|
||||
def get_active_address_cnt(self):
|
||||
return len(self.active_address)
|
||||
|
||||
def is_send_address(self, address):
|
||||
result = address in self.send_address
|
||||
if not result:
|
||||
self.send_address.add(address)
|
||||
return result
|
||||
|
||||
def reset_send_address(self):
|
||||
self.send_address.clear()
|
||||
|
||||
def get_send_address_cnt(self):
|
||||
return len(self.send_address)
|
||||
|
||||
def is_receive_address(self, address):
|
||||
result = address in self.receive_address
|
||||
if not result:
|
||||
self.receive_address.add(address)
|
||||
return result
|
||||
|
||||
def reset_receive_address(self):
|
||||
self.receive_address.clear()
|
||||
|
||||
def get_receive_address_cnt(self):
|
||||
return len(self.receive_address)
|
||||
|
||||
def save_addr(self, address, balance):
|
||||
new_balance = balance
|
||||
if address in self.zbalance:
|
||||
new_balance = self.zbalance.score(address) + balance
|
||||
#print("update", self.zbalance.score(address), balance, new_balance)
|
||||
#time.sleep(10)
|
||||
if new_balance < 0.01:
|
||||
del self.zbalance[address]
|
||||
#print("check exist", address, address in self.zbalance)
|
||||
#time.sleep(10)
|
||||
return
|
||||
self.zbalance.add({address: new_balance})
|
||||
|
||||
'''
|
||||
def delete_addr(self, config):
|
||||
self.addr.clear()
|
||||
self.zbalance.clear()
|
||||
'''
|
||||
def is_in_addr(self, address):
|
||||
return address in self.zbalance
|
||||
|
||||
def get_addr_cnt(self):
|
||||
return len(self.zbalance)
|
||||
|
||||
'''
|
||||
def delete_rv(self, config):
|
||||
self.rv.clear()
|
||||
|
||||
def get_last_rv(self):
|
||||
last_rv = None
|
||||
last_date = None
|
||||
last_height = None
|
||||
last_date_str = None
|
||||
if self.rv["last_rv"] is not None:
|
||||
last_rv = float(self.rv["last_rv"].decode("utf-8"))
|
||||
if self.rv["last_date"] is not None:
|
||||
last_date = int(self.rv["last_date"].decode("utf-8"))
|
||||
if self.rv["last_height"] is not None:
|
||||
last_height = int(self.rv["last_height"].decode("utf-8"))
|
||||
if self.rv["last_date_str"] is not None:
|
||||
last_date_str = self.rv["last_date_str"].decode("utf-8")
|
||||
return last_rv, last_date, last_height, last_date_str
|
||||
|
||||
def set_last_rv(self, rv, dt, height, dtstr):
|
||||
self.rv["last_rv"] = rv
|
||||
self.rv["last_date"] = dt
|
||||
self.rv["last_height"] = height
|
||||
self.rv["last_date_str"] = dtstr
|
||||
'''
|
||||
|
||||
def get_all_address(self):
|
||||
return self.zbalance.keys()
|
||||
|
||||
def delete_address_data(self, config):
|
||||
self.zbalance.clear()
|
||||
|
||||
'''
|
||||
def query_from_address(self, start_balance=0, end_balance=0, address="", limit=0):
|
||||
if len(address) > 0:
|
||||
results = []
|
||||
result = {}
|
||||
result["address"] = address
|
||||
balance = self.zbalance.score(address)
|
||||
print(balance)
|
||||
if balance is not None:
|
||||
result["balance"] = balance
|
||||
results.append(result)
|
||||
return results
|
||||
|
||||
match_result = None
|
||||
if start_balance > 0:
|
||||
if end_balance > 0:
|
||||
match_result = self.zbalance.range_by_score(start_balance, end_balance, 0, -1, True, False)
|
||||
else:
|
||||
match_result = self.zbalance.range_by_score(0, start_balance, 0, -1, True, False)
|
||||
else:
|
||||
if end_balance > 0:
|
||||
match_result = self.zbalance.range_by_score(end_balance, 21000000, 0, -1, True, False)
|
||||
|
||||
results = []
|
||||
if match_result is not None:
|
||||
#print(match_result)
|
||||
for addr, balance2 in match_result:
|
||||
address = addr.decode('utf-8')
|
||||
result = {}
|
||||
result["address"] = address
|
||||
result["balance"] = balance2
|
||||
results.append(result)
|
||||
if limit > 0 and len(results) >= limit:
|
||||
break
|
||||
return results
|
||||
'''
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue