|
@@ -1,80 +0,0 @@
|
|
|
-import database
|
|
|
|
|
-import psycopg2.extras
|
|
|
|
|
-import stocks
|
|
|
|
|
-# from dotenv import load_dotenv
|
|
|
|
|
-import os
|
|
|
|
|
-import sys
|
|
|
|
|
-from pprint import pprint
|
|
|
|
|
-from datetime import datetime
|
|
|
|
|
-# from urllib.request import Request, urlopen
|
|
|
|
|
-import requests
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-def broadcast(name, timestamp, price, quantity, this_drop):
|
|
|
|
|
- # development only
|
|
|
|
|
- # load_dotenv()
|
|
|
|
|
- url = os.environ["BROADCAST_URL"]
|
|
|
|
|
- # Create the string
|
|
|
|
|
- time = datetime.utcfromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S')
|
|
|
|
|
- print(time)
|
|
|
|
|
- this_drop_decimal = float(this_drop / 1e9)
|
|
|
|
|
- string = "{}: {} dropped {} shares at ${:.2f} for a grand total of ${:.1f}B".format(
|
|
|
|
|
- time, name, quantity, price, this_drop_decimal)
|
|
|
|
|
- json = {'content': string}
|
|
|
|
|
- response = requests.post(url, json=json)
|
|
|
|
|
- if response.status_code in [200, 204]:
|
|
|
|
|
- print("Webhook executed")
|
|
|
|
|
- else:
|
|
|
|
|
- print("status code {}: {}".format(response.status_code, response.content.decode("utf-8")))
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-# Retrieve last and second to last timestamp from the serverS
|
|
|
|
|
-db = database.db
|
|
|
|
|
-cursor = db.cursor(cursor_factory=psycopg2.extras.NamedTupleCursor)
|
|
|
|
|
-query = """SELECT DISTINCT timestamp FROM stocks ORDER BY stocks.timestamp DESC LIMIT 1 OFFSET 1;"""
|
|
|
|
|
-cursor.execute(query)
|
|
|
|
|
-res = cursor.fetchone()
|
|
|
|
|
-timestamp_previous = res.timestamp
|
|
|
|
|
-query = """SELECT DISTINCT timestamp FROM stocks ORDER BY stocks.timestamp DESC LIMIT 1;"""
|
|
|
|
|
-cursor.execute(query)
|
|
|
|
|
-res = cursor.fetchone()
|
|
|
|
|
-timestamp_latest = res.timestamp
|
|
|
|
|
-
|
|
|
|
|
-with open('/home/rgiskard/npc-drops/timestamp.txt', 'r') as f:
|
|
|
|
|
- timestamp_stored = f.read()
|
|
|
|
|
- # print("timestamp_stored: {}".format(timestamp_stored))
|
|
|
|
|
- # print("timestamp_latest: {}".format(timestamp_latest))
|
|
|
|
|
- if timestamp_latest == int(timestamp_stored):
|
|
|
|
|
- # print(timestamp_latest)
|
|
|
|
|
- # Exit when there is nothing to do
|
|
|
|
|
- sys.exit()
|
|
|
|
|
-
|
|
|
|
|
-with open('/home/rgiskard/npc-drops/timestamp.txt', 'w') as f:
|
|
|
|
|
- f.write("{}".format(timestamp_latest))
|
|
|
|
|
-
|
|
|
|
|
-print(timestamp_previous)
|
|
|
|
|
-print(timestamp_latest)
|
|
|
|
|
-
|
|
|
|
|
-for stock in stocks.stocks:
|
|
|
|
|
- query = """SELECT current_price, available_shares FROM stocks WHERE stock_id = %s AND timestamp = %s"""
|
|
|
|
|
- cursor.execute(query, (stock[1], timestamp_latest))
|
|
|
|
|
- data_latest = cursor.fetchone()
|
|
|
|
|
- cursor.execute(query, (stock[1], timestamp_previous))
|
|
|
|
|
- data_previous = cursor.fetchone()
|
|
|
|
|
-
|
|
|
|
|
- pprint(data_latest)
|
|
|
|
|
- pprint(data_previous)
|
|
|
|
|
- # Calculations
|
|
|
|
|
-
|
|
|
|
|
- available_latest = int(data_latest.available_shares * data_latest.current_price)
|
|
|
|
|
- available_previous = int(data_previous.available_shares * data_previous.current_price)
|
|
|
|
|
- print(available_latest)
|
|
|
|
|
- print(available_previous)
|
|
|
|
|
-
|
|
|
|
|
- drop = available_latest - available_previous
|
|
|
|
|
- # broadcast(stock[0], timestamp_latest, data_latest.current_price, data_latest.available_shares, drop)
|
|
|
|
|
- if drop > stock[3] * 1e9:
|
|
|
|
|
- broadcast(stock[0], timestamp_latest, data_latest.current_price, data_latest.available_shares, drop)
|
|
|
|
|
-
|
|
|
|
|
-cursor.close()
|
|
|
|
|
-db.close()
|
|
|