mirror of
https://github.com/aljazceru/satshkd-vercel.git
synced 2025-12-17 21:24:23 +01:00
121 lines
3.2 KiB
Python
121 lines
3.2 KiB
Python
from datetime import date
|
|
import json
|
|
import yaml
|
|
import logging
|
|
import requests
|
|
#import os
|
|
|
|
logging.basicConfig(filename='satshkd.log', level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
|
logging.getLogger('satslogger').setLevel(level=logging.WARNING)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def del_years(d, years):
|
|
"""
|
|
Return a date that's `years` years after the date (or datetime)
|
|
object `d`. Return the same calendar date (month and day) in the
|
|
destination year, if it exists, otherwise use the following day
|
|
(thus changing February 29 to March 1).
|
|
|
|
"""
|
|
try:
|
|
return d.replace(year = d.year - years)
|
|
except ValueError:
|
|
return d + (date(d.year + years, 1, 1) - date(d.year, 1, 1))
|
|
|
|
|
|
# generate 10 year historical prices based on today's date
|
|
def get_10year(lang):
|
|
# path = '/home/bitkarrot/satshkd/static/hkd_historical'
|
|
path = './public/static/hkd_historical'
|
|
filep = open(path)
|
|
historical = json.load(filep)
|
|
hist_entries = []
|
|
|
|
datelist = []
|
|
years = list(range(1,11))
|
|
for i in years:
|
|
adate = str(del_years(date.today(), i))
|
|
datelist.append(adate)
|
|
|
|
for entry in historical:
|
|
if entry['date'] in datelist:
|
|
hist_entries.append(entry)
|
|
hist_entries.reverse()
|
|
|
|
final_list = []
|
|
today_sats = get_bitfinex_rate()
|
|
|
|
i = 1
|
|
text_array = []
|
|
if lang == 'zh-cn' or lang == 'zh-hk':
|
|
text_array.append('年前')
|
|
text_array.append('年前')
|
|
elif lang =='en':
|
|
text_array.append("year ago")
|
|
text_array.append("years ago")
|
|
|
|
|
|
for entry in hist_entries:
|
|
year = entry['date']
|
|
rawsat = entry['sathkd_rate']
|
|
sats = "{:,}".format(rawsat)
|
|
percentage = -100 * (rawsat - today_sats)/rawsat
|
|
strp = "{:.3f}".format(percentage) + "%"
|
|
# print(f'year: {year} sats: {sats} percent: {strp}')
|
|
if i == 1:
|
|
aset = {'year' : f"{i} {text_array[0]}", 'sats': sats + " sats", 'percent': strp}
|
|
else:
|
|
aset = {'year' : f"{i} {text_array[1]}", 'sats': sats + " sats", 'percent': strp}
|
|
final_list.append(aset)
|
|
i = i + 1
|
|
return final_list
|
|
|
|
|
|
def get_bitfinex_rate():
|
|
try:
|
|
path = "./"
|
|
rates_file = path + 'rates.yml'
|
|
|
|
with open(rates_file, 'rb') as f:
|
|
doc = yaml.load(f, Loader=yaml.FullLoader)
|
|
sort_file = yaml.dump(doc, sort_keys=True)
|
|
f.close()
|
|
|
|
hkdrate = doc['hkdrate']
|
|
|
|
satDenominator = 100000000
|
|
btcDataURL = "https://api-pub.bitfinex.com/v2/ticker/tBTCUSD"
|
|
|
|
'''
|
|
cmd = "wget " + btcDataURL
|
|
print("command: " + cmd)
|
|
ret = os.system(cmd)
|
|
print('returned value: ', ret)
|
|
'''
|
|
|
|
btcRates = requests.get(btcDataURL).json()
|
|
btcLastPrice = btcRates[6]
|
|
|
|
sathkd = round((1/btcLastPrice)*satDenominator*hkdrate)
|
|
# print(f'bitfinex last price: {btcLastPrice}, current sat rate: {sathkd}')
|
|
return sathkd
|
|
|
|
except Exception as e:
|
|
print("Exception" + e )
|
|
logger.info(e)
|
|
|
|
|
|
|
|
# initial test
|
|
# rate = get_bitfinex_rate()
|
|
# print(f'getting bitfinex rate - initial test: {rate}')
|
|
|
|
|
|
lang = 'zh-cn'
|
|
lang = 'zh-hk'
|
|
lang = 'en'
|
|
final = get_10year(lang)
|
|
print(final)
|
|
|