| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- import math
- import psycopg
- import os
- from datetime import date
- from datetime import timedelta
- from dotenv import load_dotenv
- from pprint import pprint
- from tabulate import tabulate
- import model
- def get_table(new_member=1337627, name=''):
- print(f'new_member: {new_member}')
- text = f'!ph {new_member}'
- print(text)
- load_dotenv(verbose=True)
- use_data = False
- conn_dangercrow = psycopg.connect(
- user=os.getenv('db_dangercrow_user'),
- password=os.getenv('db_dangercrow_password'),
- host=os.getenv('db_host'),
- port=os.getenv('db_port'),
- dbname=os.getenv('db_dangercrow_database'))
- cur_dangercrow = conn_dangercrow.cursor()
- query_dangercrow_now = f"""SELECT
- xanax.timestamp, factions.username, xanax.refills, xanax.activity, networth.networth, xanax.xantaken
- FROM xanax
- LEFT JOIN factions
- ON xanax.id = factions.member_id
- LEFT JOIN networth
- ON xanax.id = networth.member
- WHERE xanax.id = {new_member}
- ORDER BY timestamp DESC LIMIT 1;"""
- timedelta_seven = date.today() - timedelta(days=7)
- query_dangercrow_seven = f"""SELECT
- xanax.timestamp, factions.username, xanax.refills, xanax.activity, networth.networth, xanax.xantaken
- FROM xanax
- LEFT JOIN factions
- ON xanax.id = factions.member_id
- LEFT JOIN networth
- ON xanax.id = networth.member
- WHERE xanax.id = {new_member}
- ORDER BY abs( xanax.timestamp -
- date '{timedelta_seven.strftime('%Y-%m-%d')}')
- LIMIT 1;"""
- timedelta_thirtythree = date.today() - timedelta(days=33)
- query_dangercrow_thirtythree = f"""SELECT
- xanax.timestamp, factions.username, xanax.refills, xanax.activity, networth.networth, xanax.xantaken
- FROM xanax
- LEFT JOIN factions
- ON xanax.id = factions.member_id
- LEFT JOIN networth
- ON xanax.id = networth.member
- WHERE xanax.id = {new_member}
- ORDER BY abs( xanax.timestamp -
- date '{timedelta_thirtythree.strftime('%Y-%m-%d')}')
- LIMIT 1;"""
- result_now = model.database_select(cur_dangercrow, query_dangercrow_now, debug=True)
- if not result_now:
- use_data = True
- print('No data from dangercrow database, trying the prospects database.')
- conn_data = psycopg.connect(
- user=os.getenv('db_data_user'),
- password=os.getenv('db_data_password'),
- host=os.getenv('db_host'),
- dbname=os.getenv('db_data_database'))
- cur_data = conn_data.cursor()
- query_now = f'''SELECT today, data->>'name' as name, data->>'refills' as refills, data->>'networth' as networth, data->>'xantaken' as xantaken
- FROM alldata WHERE member = {new_member}
- ORDER BY today LIMIT 1;'''
- result_now = model.database_select(cur_data, query_now, debug=True)
- if not result_now:
- return 'No data available for this player'
- query_data_seven = f'''SELECT today, data->>'name' as name, data->>'refills' as refills, data->>'networth' as networth, data->>'xantaken' as xantaken
- FROM alldata WHERE member = {new_member}
- ORDER BY abs(today - date '{timedelta_seven.strftime('%Y-%m-%d')}')
- LIMIT 1;'''
- query_data_thirtythree = f'''SELECT today, data->>'name' as name, data->>'refills' as refills, data->>'networth' as networth, data->>'xantaken' as xantaken
- FROM alldata WHERE member = {new_member}
- ORDER BY abs(today - date '{timedelta_thirtythree.strftime('%Y-%m-%d')}')
- LIMIT 1;'''
- pprint(result_now)
- if use_data:
- result_seven = model.database_select(cur_data, query_data_seven, debug=True)
- result_thirtythree = model.database_select(cur_data, query_data_thirtythree, debug=True)
- else:
- result_seven = model.database_select(cur_dangercrow, query_dangercrow_seven, debug=True)
- result_thirtythree = model.database_select(cur_dangercrow, query_dangercrow_thirtythree)
- pprint(result_seven)
- delta_seven = date.today() - result_seven[0][0]
- print(f'delta_seven: {delta_seven}')
- pprint(result_thirtythree)
- delta_thirtythree = date.today() - result_thirtythree[0][0]
- print(f'delta_thirtythree: {delta_thirtythree}')
- millnames = ['', ' K', ' M', ' B', ' T']
- def millify(n):
- n = float(n)
- millidx = max(0,min(len(millnames)-1,
- int(math.floor(0 if n == 0 else math.log10(abs(n))/3))))
- return '{:.0f}{}'.format(n / 10**(3 * millidx), millnames[millidx])
- if result_now[0][1] is None:
- if name != '':
- result_now[0][1] = name
- table = [
- ['', 'Latest', f'Last {delta_seven.days} days', f'Last {delta_thirtythree.days} days'],
- ['date', result_now[0][0].strftime('%Y-%m-%d'), result_seven[0][0].strftime('%Y-%m-%d'), result_thirtythree[0][0].strftime('%Y-%m-%d')],
- ['name', f"{result_now[0][1]} [{new_member}]", '', ''],
- ['refills', result_now[0][2], result_now[0][2] - result_seven[0][2], result_now[0][2] - result_thirtythree[0][2]],
- ['useractivity', millify(result_now[0][3]), millify(result_now[0][3] - result_seven[0][3]), millify(result_now[0][3] - result_thirtythree[0][3])],
- ['networth', millify(result_now[0][4]), millify(result_now[0][4] - result_seven[0][4]), millify((result_now[0][4] - result_thirtythree[0][4]))],
- ['xantaken', result_now[0][5], result_now[0][5] - result_seven[0][5], result_now[0][5] - result_thirtythree[0][5]]
- ]
- return '```\n'+tabulate(table)+'\n```'
- if __name__ == '__main__':
- tests = [1927067, 1337627, 2094410, 1200106, 2135411, 2703120]
- for test in tests:
- print(get_table(test))
|