persistant settings added

This commit is contained in:
Neythen 2021-05-05 16:22:01 +01:00
parent ea1e2bd7fb
commit fa91bc4a9b
8 changed files with 140 additions and 74 deletions

45
api_caller.py Normal file
View File

@ -0,0 +1,45 @@
import finnhub
import time
import csv
APIkey = "c24qddqad3ickpckgg80"
sandboxAPIkey = "sandbox_c24qddqad3ickpckgg8g"
finnhubClient = finnhub.Client(api_key=APIkey)
def getStockPrices():
apiCalledError = False
stock_info = []
symbols = []
f = open('csv/tickers.csv', 'r')
CSV = csv.reader(f)
for row in CSV:
symbol = row[0]
symbols.append(symbol)
f.close()
try:
quotes = [finnhubClient.quote(symbol) for symbol in symbols]
current_prices = [quote['c'] for quote in quotes]
opening_prices = [quote['o'] for quote in quotes]
CSV = open('csv/tickers.csv', 'w+')
for i, symbol in enumerate(symbols):
symbol + ',' + str(current_prices[i]) + ',' + str(opening_prices[i]) + '\n'
CSV.write(symbol + ',' + str(current_prices[i]) + ',' + str(opening_prices[i]) + '\n')
CSV.close()
print('API called successfully')
except Exception as e:
print("Could not fetch data - API CALLS REACHED? - Will display old image")
print(e)
apiCalledError = True
return stock_info, apiCalledError
if __name__ == '__main__':
sleeptime = 2 #minutes
while True:
getStockPrices()
time.sleep(sleeptime*60)

1
csv/settings.csv Normal file
View File

@ -0,0 +1 @@
f,9
1 f 9

View File

@ -1,20 +1,20 @@
MSFT,248.515,249.06
NFLX,503.82,504.99
GOOG,2370,2368.42
TSLA,679.15,681.06
AAPL,129.681,129.2
INTC,56.995,56.96
TXN,182.05,181.01
HPQ,34.155,34.24
HOG,48.61,48.33
LUV,61.255,60.77
WMT,140.61,140.71
BJ,44.9502,45.17
ETSY,187.4508,190.99
G,46.86,47.25
GDDY,82.7339,83.24
GNRC,316.745,318.9
PEP,143.83,143.715
MSFT,248.15,249.06
NFLX,502.34,504.99
GOOG,2366.54,2368.42
TSLA,676.818,681.06
AAPL,129.675,129.2
INTC,56.94,56.96
TXN,182.07,181.01
HPQ,34.315,34.24
HOG,49.62,48.33
LUV,61.46,60.77
WMT,140.6,140.71
BJ,45.18,45.17
ETSY,187.8,190.99
G,47.02,47.25
GDDY,82.985,83.24
GNRC,320.425,318.9
PEP,143.65,143.715
STMYELP,0,0
XRAY,67.405,68.92
ZTS,173.086,174.2
XRAY,67.68,68.92
ZTS,172.4995,174.2

1 MSFT 248.515 248.15 249.06
2 NFLX 503.82 502.34 504.99
3 GOOG 2370 2366.54 2368.42
4 TSLA 679.15 676.818 681.06
5 AAPL 129.681 129.675 129.2
6 INTC 56.995 56.94 56.96
7 TXN 182.05 182.07 181.01
8 HPQ 34.155 34.315 34.24
9 HOG 48.61 49.62 48.33
10 LUV 61.255 61.46 60.77
11 WMT 140.61 140.6 140.71
12 BJ 44.9502 45.18 45.17
13 ETSY 187.4508 187.8 190.99
14 G 46.86 47.02 47.25
15 GDDY 82.7339 82.985 83.24
16 GNRC 316.745 320.425 318.9
17 PEP 143.83 143.65 143.715
18 STMYELP 0 0 0
19 XRAY 67.405 67.68 68.92
20 ZTS 173.086 172.4995 174.2

BIN
final.ppm

Binary file not shown.

View File

@ -46,13 +46,15 @@ def process_file(path, filename):
for row in new_csv:
default_csv.writerow(row)
app = Flask(__name__)
@app.route("/", methods=['GET', 'POST'])
def hello():
global command
now = datetime.datetime.now()
timeString = now.strftime("%Y-%m-%d %H:%M")
LogoList = os.listdir('logos')
@ -88,10 +90,20 @@ def Delay():
@app.route("/Speed", methods=['POST'])
def Speed():
global speedTime
speedTime = request.form['text']
print(speedTime)
ticker.sendline(speedTime)
global speed
speed = request.form['text']
print(speed)
ticker.sendline(speed)
f = open('csv/settings.csv', 'r')
CSV = csv.reader(f)
for line in CSV:
_, brightness = line
f.close()
f = open('csv/settings.csv', 'w+')
f.write(str(speed) + ',' + brightness)
f.close()
global LastCommand
LastCommand = 'Change Speed'
return hello()
@ -102,6 +114,17 @@ def Brightness():
brightness = int(request.form['text'])-1
print(brightness)
ticker.sendline(str(brightness))
f = open('csv/settings.csv', 'r')
CSV = csv.reader(f)
for line in CSV:
speed, _ = line
f.close()
f = open('csv/settings.csv', 'w+')
f.write(str(speed) + ',' + str(brightness))
f.close()
global LastCommand
LastCommand = 'Change Brightness'
return hello()

View File

@ -136,14 +136,7 @@ class StockTicker():
kill = True
break
elif msg == 's':
stock_ticker.delay = 0.03
elif msg == 'm':
stock_ticker.delay = 0.01
elif msg == 'f':
stock_ticker.delay = 0.005
elif msg in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
self.brightness = min(1.0, float(msg)/10 + 0.1)
self.process_msg(msg)
except KeyboardInterrupt:
@ -326,16 +319,50 @@ class StockTicker():
#Change running to false stopping refresh at next checkpoint
def stopStockTicker(self):
self.keySwapper = 0
self.running = False
print('MATRIX DISPLAY STOP CALLED')
def process_msg(self, msg):
if msg == 'S':
self.getFullStockImage()
self.displayMatrix()
elif msg == 's':
self.delay = 0.03
elif msg == 'm':
self.delay = 0.01
elif msg == 'f':
self.delay = 0.005
elif msg in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
self.brightness = min(1.0, float(msg)/10 + 0.1)
if __name__ == '__main__':
#print(sys.stdin.readlines())
stock_ticker = StockTicker()
f = open('csv/settings.csv')
CSV = csv.reader(f)
for row in CSV:
speed, brightness = row
print(speed, brightness)
stock_ticker.process_msg(brightness)
stock_ticker.process_msg(speed)
print(stock_ticker.delay, stock_ticker.brightness)
#t = time.time()
#api_caller = pexpect.spawn("sudo -E python3 api_caller.py")
#print('time to call api', time.time()-t)
@ -345,19 +372,7 @@ if __name__ == '__main__':
while True:
msg = getInput()
if msg == 'S':
stock_ticker.getFullStockImage()
stock_ticker.displayMatrix()
elif msg == 's':
stock_ticker.delay = 0.03
elif msg == 'm':
stock_ticker.delay = 0.01
elif msg == 'f':
stock_ticker.delay = 0.005
elif msg in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
stock_ticker.brightness = min(1.0, float(msg)/10 + 0.1)
stock_ticker.process_msg(msg)

View File

@ -7,23 +7,17 @@
<body>
<center>
<h2>Stock Ticker Control Panel</h2>
<h3>Time of last page reload <br> {{ time }}</h3>
<hr width=70% size=3 noshade>
<p>Last command sent: {{ lastcommand }}</p>
<br>
<h3>Runtime: {{ runtime }}s & API call: {{ delay }}s before refresh <br> displayed at a speed of {{ speedtime }}m/s</h3>
<p>Set the amount of time each image is displayed before a refresh in seconds</p>
<form action="/Runtime" method="POST">
<input name="text" placeholder="300"style="height:24px">
<input type="submit" value="Runtime"style="height:30px">
<br><br>
<form action="/matrix" method="POST">
<input type="submit" name="Run Display" value="Run Display" style="height:50px" >
<input type="submit" name="Stop Display (at next refresh)" value="Stop Display"style="height:50px">
<input type="submit" name="Shutdown the pi" value="Shutdown the pi"style="height:50px">
</form>
<p>Set the amount of time before next image refresh that the stocks are updated</p>
<form action="/Delay" method="POST">
<input name="text" placeholder="20"style="height:24px">
<input type="submit" value="Delay"style="height:30px">
</form>
<p>Set the speed the image scrolls across the screen (s, m of f for slow, medium or fast)</p>
<br><br>
<br><br>
<p>Set the speed the image scrolls across the screen (s, m of f for slow, medium or fast)</p>
<form action="/Speed" method="POST">
<input name="text" placeholder="m"style="height:24px">
<input type="submit" value="Speed"style="height:30px">
@ -34,7 +28,7 @@
<input name="text" placeholder="10"style="height:24px">
<input type="submit" value="Brightness"style="height:30px">
</form>
<br><br>
<h3>Tickers to display</h3>
<p>To change the tickers displayed please upload a CSV (comma separated value) file with 11 tickers on each row e.g</p>
@ -44,7 +38,7 @@
<p><input type=file name=file style="height:30px">
<input type=submit value=Upload style="height:30px">
</form>
<br><br>
<h3>Logos</h3>
<p>Upload logo images (e.g "TICKER.png") or change the default images here</p>
@ -57,18 +51,6 @@
<input type=submit value=Upload style="height:30px">
</form>
<br><br>
<form action="/matrix" method="POST">
<input type="submit" name="Run Display" value="Run Display" style="height:50px" >
<input type="submit" name="Stop Display (at next refresh)" value="Stop Display (at next refresh)"style="height:50px">
<input type="submit" name="Shutdown the pi" value="Shutdown the pi"style="height:50px">
</form>
<br><br>
<br><br>
<p>Logos currently in file:</p>
<p>{{ logofiles }}</p>
</center>
</body>
</html>