commit 086b22e776e79c132c6a32a982ed0ea2da80520e Author: Neythen Date: Mon Apr 26 19:51:21 2021 +0100 initial commit - old code diff --git a/EncodeSans.ttf b/EncodeSans.ttf new file mode 100644 index 0000000..c48388b Binary files /dev/null and b/EncodeSans.ttf differ diff --git a/__pycache__/stockTicker.cpython-37.pyc b/__pycache__/stockTicker.cpython-37.pyc new file mode 100644 index 0000000..8c0201e Binary files /dev/null and b/__pycache__/stockTicker.cpython-37.pyc differ diff --git a/csv/.DS_Store b/csv/.DS_Store new file mode 100644 index 0000000..a82d1d8 Binary files /dev/null and b/csv/.DS_Store differ diff --git a/csv/._.DS_Store b/csv/._.DS_Store new file mode 100644 index 0000000..0347b5d Binary files /dev/null and b/csv/._.DS_Store differ diff --git a/csv/._new b/csv/._new new file mode 100644 index 0000000..e28521c Binary files /dev/null and b/csv/._new differ diff --git a/csv/._tickers.csv b/csv/._tickers.csv new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/csv/._tickers.csv differ diff --git a/csv/tickers.csv b/csv/tickers.csv new file mode 100644 index 0000000..d8e7b1e --- /dev/null +++ b/csv/tickers.csv @@ -0,0 +1,3 @@ +MSFT,NFLX,GOOG,TSLA,AAPL,INTC,TXN,HPQ,HOG,LUV,WMT +MSFT,NFLX,GOOG,TSLA,AAPL,INTC,TXN,HPQ,HOG,LUV,WMT +MSFT,NFLX,GOOG,TSLA,AAPL,INTC,TXN,HPQ,HOG,LUV,WMT \ No newline at end of file diff --git a/demo b/demo new file mode 100755 index 0000000..1fbd3c0 Binary files /dev/null and b/demo differ diff --git a/final.ppm b/final.ppm new file mode 100644 index 0000000..4b29671 Binary files /dev/null and b/final.ppm differ diff --git a/logos/._AAPL.png b/logos/._AAPL.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._AAPL.png differ diff --git a/logos/._ADSK.png b/logos/._ADSK.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._ADSK.png differ diff --git a/logos/._AMZN.png b/logos/._AMZN.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._AMZN.png differ diff --git a/logos/._BABA.png b/logos/._BABA.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._BABA.png differ diff --git a/logos/._BIDU.png b/logos/._BIDU.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._BIDU.png differ diff --git a/logos/._COST.png b/logos/._COST.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._COST.png differ diff --git a/logos/._DIS.png b/logos/._DIS.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._DIS.png differ diff --git a/logos/._DNKN.png b/logos/._DNKN.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._DNKN.png differ diff --git a/logos/._FB.png b/logos/._FB.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._FB.png differ diff --git a/logos/._FDX.png b/logos/._FDX.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._FDX.png differ diff --git a/logos/._GILD.png b/logos/._GILD.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._GILD.png differ diff --git a/logos/._GOOG.png b/logos/._GOOG.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._GOOG.png differ diff --git a/logos/._HOG.png b/logos/._HOG.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._HOG.png differ diff --git a/logos/._HPQ.png b/logos/._HPQ.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._HPQ.png differ diff --git a/logos/._INTC.png b/logos/._INTC.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._INTC.png differ diff --git a/logos/._JPM.png b/logos/._JPM.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._JPM.png differ diff --git a/logos/._KO.png b/logos/._KO.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._KO.png differ diff --git a/logos/._LULU.png b/logos/._LULU.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._LULU.png differ diff --git a/logos/._LUV.png b/logos/._LUV.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._LUV.png differ diff --git a/logos/._MMM.png b/logos/._MMM.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._MMM.png differ diff --git a/logos/._MSFT.png b/logos/._MSFT.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._MSFT.png differ diff --git a/logos/._NFLX.png b/logos/._NFLX.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._NFLX.png differ diff --git a/logos/._NKE.png b/logos/._NKE.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._NKE.png differ diff --git a/logos/._PYPL.png b/logos/._PYPL.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._PYPL.png differ diff --git a/logos/._RCL.png b/logos/._RCL.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._RCL.png differ diff --git a/logos/._ROKU.png b/logos/._ROKU.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._ROKU.png differ diff --git a/logos/._SBUX.png b/logos/._SBUX.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._SBUX.png differ diff --git a/logos/._TSLA.png b/logos/._TSLA.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._TSLA.png differ diff --git a/logos/._TWTR.png b/logos/._TWTR.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._TWTR.png differ diff --git a/logos/._TXN.png b/logos/._TXN.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._TXN.png differ diff --git a/logos/._W.png b/logos/._W.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._W.png differ diff --git a/logos/._WM.png b/logos/._WM.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._WM.png differ diff --git a/logos/._WMT.png b/logos/._WMT.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._WMT.png differ diff --git a/logos/._blank.png b/logos/._blank.png new file mode 100644 index 0000000..df7e8f6 Binary files /dev/null and b/logos/._blank.png differ diff --git a/logos/._default.png b/logos/._default.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._default.png differ diff --git a/logos/._down.png b/logos/._down.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._down.png differ diff --git a/logos/._up.png b/logos/._up.png new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/logos/._up.png differ diff --git a/logos/AAPL.png b/logos/AAPL.png new file mode 100644 index 0000000..e103f03 Binary files /dev/null and b/logos/AAPL.png differ diff --git a/logos/ADSK.png b/logos/ADSK.png new file mode 100644 index 0000000..5965dd1 Binary files /dev/null and b/logos/ADSK.png differ diff --git a/logos/AMZN.png b/logos/AMZN.png new file mode 100644 index 0000000..f09ffe9 Binary files /dev/null and b/logos/AMZN.png differ diff --git a/logos/BABA.png b/logos/BABA.png new file mode 100644 index 0000000..725065b Binary files /dev/null and b/logos/BABA.png differ diff --git a/logos/BIDU.png b/logos/BIDU.png new file mode 100644 index 0000000..d040c2f Binary files /dev/null and b/logos/BIDU.png differ diff --git a/logos/COST.png b/logos/COST.png new file mode 100644 index 0000000..4ce53ea Binary files /dev/null and b/logos/COST.png differ diff --git a/logos/DIS.png b/logos/DIS.png new file mode 100644 index 0000000..ab11393 Binary files /dev/null and b/logos/DIS.png differ diff --git a/logos/DNKN.png b/logos/DNKN.png new file mode 100644 index 0000000..d76eade Binary files /dev/null and b/logos/DNKN.png differ diff --git a/logos/FB.png b/logos/FB.png new file mode 100644 index 0000000..1dfff7c Binary files /dev/null and b/logos/FB.png differ diff --git a/logos/FDX.png b/logos/FDX.png new file mode 100644 index 0000000..afcbe20 Binary files /dev/null and b/logos/FDX.png differ diff --git a/logos/GILD.png b/logos/GILD.png new file mode 100644 index 0000000..cd29693 Binary files /dev/null and b/logos/GILD.png differ diff --git a/logos/GOOG.png b/logos/GOOG.png new file mode 100644 index 0000000..bec9f02 Binary files /dev/null and b/logos/GOOG.png differ diff --git a/logos/HOG.png b/logos/HOG.png new file mode 100644 index 0000000..af88cc9 Binary files /dev/null and b/logos/HOG.png differ diff --git a/logos/HPQ.png b/logos/HPQ.png new file mode 100644 index 0000000..4bd29b5 Binary files /dev/null and b/logos/HPQ.png differ diff --git a/logos/INTC.png b/logos/INTC.png new file mode 100644 index 0000000..b40ea49 Binary files /dev/null and b/logos/INTC.png differ diff --git a/logos/JPM.png b/logos/JPM.png new file mode 100644 index 0000000..6baa59f Binary files /dev/null and b/logos/JPM.png differ diff --git a/logos/KO.png b/logos/KO.png new file mode 100644 index 0000000..4ee3e61 Binary files /dev/null and b/logos/KO.png differ diff --git a/logos/LULU.png b/logos/LULU.png new file mode 100644 index 0000000..b06082d Binary files /dev/null and b/logos/LULU.png differ diff --git a/logos/LUV.png b/logos/LUV.png new file mode 100644 index 0000000..1205eef Binary files /dev/null and b/logos/LUV.png differ diff --git a/logos/MMM.png b/logos/MMM.png new file mode 100644 index 0000000..ce0bfc4 Binary files /dev/null and b/logos/MMM.png differ diff --git a/logos/MSFT.png b/logos/MSFT.png new file mode 100644 index 0000000..4b3ed85 Binary files /dev/null and b/logos/MSFT.png differ diff --git a/logos/NFLX.png b/logos/NFLX.png new file mode 100644 index 0000000..2b658fd Binary files /dev/null and b/logos/NFLX.png differ diff --git a/logos/NKE.png b/logos/NKE.png new file mode 100644 index 0000000..5b9ac68 Binary files /dev/null and b/logos/NKE.png differ diff --git a/logos/PYPL.png b/logos/PYPL.png new file mode 100644 index 0000000..728541c Binary files /dev/null and b/logos/PYPL.png differ diff --git a/logos/RCL.png b/logos/RCL.png new file mode 100644 index 0000000..54fe27f Binary files /dev/null and b/logos/RCL.png differ diff --git a/logos/ROKU.png b/logos/ROKU.png new file mode 100644 index 0000000..8410ba3 Binary files /dev/null and b/logos/ROKU.png differ diff --git a/logos/SBUX.png b/logos/SBUX.png new file mode 100644 index 0000000..0c11de9 Binary files /dev/null and b/logos/SBUX.png differ diff --git a/logos/TSLA.png b/logos/TSLA.png new file mode 100644 index 0000000..10b8994 Binary files /dev/null and b/logos/TSLA.png differ diff --git a/logos/TWTR.png b/logos/TWTR.png new file mode 100644 index 0000000..d271c66 Binary files /dev/null and b/logos/TWTR.png differ diff --git a/logos/TXN.png b/logos/TXN.png new file mode 100644 index 0000000..65f981f Binary files /dev/null and b/logos/TXN.png differ diff --git a/logos/W.png b/logos/W.png new file mode 100644 index 0000000..1b0d5ba Binary files /dev/null and b/logos/W.png differ diff --git a/logos/WM.png b/logos/WM.png new file mode 100644 index 0000000..e986b03 Binary files /dev/null and b/logos/WM.png differ diff --git a/logos/WMT.png b/logos/WMT.png new file mode 100644 index 0000000..06d2696 Binary files /dev/null and b/logos/WMT.png differ diff --git a/logos/blank.png b/logos/blank.png new file mode 100644 index 0000000..0f2bb3d Binary files /dev/null and b/logos/blank.png differ diff --git a/logos/default.png b/logos/default.png new file mode 100644 index 0000000..3cbeb15 Binary files /dev/null and b/logos/default.png differ diff --git a/logos/down.png b/logos/down.png new file mode 100644 index 0000000..276ac4c Binary files /dev/null and b/logos/down.png differ diff --git a/logos/up.png b/logos/up.png new file mode 100644 index 0000000..adb3c95 Binary files /dev/null and b/logos/up.png differ diff --git a/server.py b/server.py new file mode 100644 index 0000000..8dadc72 --- /dev/null +++ b/server.py @@ -0,0 +1,148 @@ +# Copyright (C) 2020 Daniel Richardson richardson.daniel@hotmail.co.uk +# +# This file is part of stockTicker project for justinodunn. +# +# stockTicker can not be copied and/or distributed without the express +# permission of Daniel Richardson + +from flask import Flask, render_template, request +from stockTicker import runStockTicker, stopStockTicker +from werkzeug.utils import secure_filename +import os +import datetime +import threading +import csv +command = 300 +tickerList = 0 +DelayTime = 20 +LastCommand = '' +speedTime = 25 + +LOGO_FOLDER = 'logos/' +CSV_FOLDER = 'csv/new/' +ALLOWED_EXTENSIONS = {'csv', 'png'} + +def allowed_file(filename): + return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS + +def process_file(path, filename): + default_csv = csv.writer(open('csv/tickers.csv', 'w')) + new_csv = csv.reader(open((path), 'r')) + + for row in new_csv: + default_csv.writerow(row) + +def ShutdownPI(): + print('SHUTTING DOWN') + os.system("sudo shutdown --poweroff") + +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') + templateData = { + 'title' : 'Stock Ticker Control Panel', + 'time': timeString, + 'runtime': command, + 'tickers': tickerList, + 'logofiles':LogoList, + 'lastcommand':LastCommand, + 'delay':DelayTime, + 'speedtime':speedTime + } + return render_template('index.html', **templateData) + +@app.route("/Runtime", methods=['POST']) +def Runtime(): + global command + command = request.form['text'] + print(command) + global LastCommand + LastCommand = 'Change runtime' + return hello() + +@app.route("/Delay", methods=['POST']) +def Delay(): + global DelayTime + DelayTime = request.form['text'] + print(DelayTime) + global LastCommand + LastCommand = 'Change Delay' + return hello() + +@app.route("/Speed", methods=['POST']) +def Speed(): + global speedTime + speedTime = request.form['text'] + print(speedTime) + global LastCommand + LastCommand = 'Change Speed' + return hello() + +@app.route("/Ticker", methods=['POST']) +def Ticker(): + if request.method == 'POST': + if 'file' not in request.files: + print('No file attached in request') + return hello() + file = request.files['file'] + if file.filename == '': + print('No file selected') + return hello() + if file and allowed_file(file.filename): + filename = secure_filename(file.filename) + file.save(os.path.join(CSV_FOLDER, filename)) + process_file(os.path.join(CSV_FOLDER, filename), filename) + global LastCommand + LastCommand = 'Change CSV file' + return hello() + return hello() + +@app.route("/AddLogo", methods=['POST']) +def AddLogo(): + if request.method == 'POST': + if 'file' not in request.files: + print('No file attached in request') + return hello() + file = request.files['file'] + if file.filename == '': + print('No file selected') + return hello() + if file and allowed_file(file.filename): + filename = secure_filename(file.filename) + file.save(os.path.join(LOGO_FOLDER, filename)) + global LastCommand + LastCommand = 'Add a new logo file' + return hello() + return hello() + +@app.route("/matrix", methods=['POST']) +def matrix(): + global LastCommand + if "Run Display" in request.form: + pass + runStockTicker(command, DelayTime, speedTime) + LastCommand = 'Run display' + elif "Stop Display (at next refresh)" in request.form: + pass + try: + stopStockTicker() + LastCommand = 'Stop display at next checkpoint' + except: + print("none running") + elif "Shutdown the pi" in request.form: + pass + try: + LastCommand = 'shutdown' + ShutdownPI() + except: + print("couldn't shutdown") + return hello() + +if __name__ == "__main__": + app.run(host='0.0.0.0', port=1024, debug=True) + + #sudo ./demo -D1 final.ppm -t 50 -m 25 --led-gpio-mapping=adafruit-hat --led-rows=32 --led-cols=256 diff --git a/static/._style.css b/static/._style.css new file mode 100644 index 0000000..10d488b Binary files /dev/null and b/static/._style.css differ diff --git a/static/style.css b/static/style.css new file mode 100644 index 0000000..34f2b4c --- /dev/null +++ b/static/style.css @@ -0,0 +1,11 @@ +body { + background: black; + color: white; + + @font-face { + font-family: Encode; + src: EncodeSans.ttf; + } + + font-family: Encode; +} \ No newline at end of file diff --git a/stockTicker.py b/stockTicker.py new file mode 100644 index 0000000..da50a5f --- /dev/null +++ b/stockTicker.py @@ -0,0 +1,238 @@ +# Copyright (C) 2020 Daniel Richardson richardson.daniel@hotmail.co.uk +# +# This file is part of stockTicker project for justinodunn. +# +# stockTicker can not be copied and/or distributed without the express +# permission of Daniel Richardson + +from twelvedata import TDClient +import sys +import os +import threading +from PIL import Image, ImageDraw, ImageFont +import time +import csv + +#Define global resources +symbols = [] +ApiKeys = [["b1be6696d54342bdb5c8f59a052854fd","237d183faf984e7eba708a647c55153a","3012b3cb19784ed4be2b02e9907e53cb"],["f835e85df2a74df1904fe6dc53bcc17a","41ec268496744c34a96e3c408081300b","2d566fc71ade46d688713b13730c5219"]] +#ApiKeys = [["6172b84d1f464ad88b95ed52e4391bce","979f9b8c9ee748fbbb57cb490ccaaf42","593fa818a44144699b75433aafd92d15"] +retrievedList = [] +greenORred = (255, 255, 255) +ListStocks = [] +blank = Image.open('logos/blank.png') +ApiCalledError = False +keySwapper = 0 +displayTime = 60 +speedDisplay = 25 +running = True +Delay = 20 +parseCSV = 0 +symbolLength = 0 + +#Get the logo from file that is the same as ticker name +def getLogo(Ticker): + try: + Logo = Image.open('logos/' + Ticker + '.png') + except: + print('Could not find logo for: ' + Ticker + ' using default') + Logo = Image.open('logos/default.png') + return Logo + +#Using change between min and day price give appropriate arrow +#and set the overall change colour +def getArrow(CHANGE): + global greenORred + if(CHANGE>0): + Arrow = Image.open('logos/up.png') + greenORred = (0, 255, 0) + return Arrow, CHANGE + Arrow = Image.open('logos/down.png') + greenORred = (255, 0, 0) + CHANGE = (CHANGE * -1) + return Arrow, CHANGE + +def get_text_dimensions(text_string, font): + canvas = Image.new('RGB', (100,100)) + + draw = ImageDraw.Draw(canvas) + monospace = font + + text = text_string + white = (255,255,255) + draw.text((10, 10), text, font=monospace, fill=white) + + bbox = canvas.getbbox() + width = bbox[2]-bbox[0] + height = bbox[3]-bbox[1] + + return width,height + +#Draw Ticker, current and change onto one image +def textToImage(TICKER, CURRENT, CHANGE, ARROW): + font = ImageFont.truetype("EncodeSans.ttf", 18) + img = Image.new('RGB', (150, 32)) + d = ImageDraw.Draw(img) + + d.text((4, -4), TICKER, fill=(255, 255, 255), font=font) + d.text((4, 13), CURRENT, fill=greenORred, font=font) + + text_width_current, text_height = get_text_dimensions(CURRENT, font) + + img.paste(ARROW, ((text_width_current + 9),18)) + d.text(((text_width_current+29), 13), CHANGE, fill=greenORred, font=font) + + text_width_change, text_height = get_text_dimensions(CHANGE, font) + + newWidth = (text_width_current+29) + (text_width_change) + + img.crop((0,0,newWidth,32)) + return img + +#Stitch the logo & prices picture into one image +def stitchImage(IMAGES): + widths, heights = zip(*(i.size for i in IMAGES)) + total_width = sum(widths) + max_height = max(heights) + new_im = Image.new('RGB', (total_width, max_height)) + x_offset = 0 + for im in IMAGES[0:2]: + new_im.paste(im, (x_offset,0)) + x_offset += im.size[0] + return new_im + +#Display the image onto the matrix +def displayImage(IMAGE): + print('k') + return 0 + +#Get current prices and day prices for the ticker then format the response into an array +def getStockPrices(APIKEY, SYMBOLS): + global ApiCalledError + try: + symbols_list = SYMBOLS.split(",") + td = TDClient(apikey=APIKEY) + tmin = td.time_series(symbol=SYMBOLS, interval="1min", outputsize='1').as_json() + tday = td.time_series(symbol=SYMBOLS, interval="1day", outputsize='2').as_json() + for i in range(len(symbols_list)): + currentMinPriceList = tmin[symbols_list[i]] + currentDayPriceList = list(tday[symbols_list[i]]) + del currentDayPriceList[0] + currentMinPriceClose = tmin[symbols_list[i]][0]['close'] + currentDayPriceClose = currentDayPriceList[0]['close'] + retrievedList.append([]) + retrievedList[i].append(symbols_list[i]) + retrievedList[i].append(currentMinPriceClose) + retrievedList[i].append(currentDayPriceClose) + except: + ApiCalledError = True + print("Could not fetch data - API CALLS REACHED? - Will display old image") + +#Connect all the pieces togeather creating 1 long final stock image +def GetfullStockImage(): + global ListStocks + global retrievedList + global ApiCalledError + ApiCalledError = False + ListStocks = [] + retrievedList = [] + start = time.time() + print('elapsed time: ' + str((time.time()-start))) + j=0 + while (j<3): + print('API KEY: ' + str(ApiKeys[keySwapper][j])) + + getStockPrices(ApiKeys[keySwapper][j], symbols[(j+parseCSV)][0]) + + if (ApiCalledError == False): + j+=1 + print('elapsed time after api call: ' + str((time.time()-start))) + for i in range(len(retrievedList)): + print('elapsed timethrough loop: ' + str((time.time()-start))) + Change = float(retrievedList[i][1])-float(retrievedList[i][2]) #TEXT + Ticker = retrievedList[i][0] #TEXT + Current = '%.2f' % float(retrievedList[i][1]) #TEXT + + Logo = getLogo(retrievedList[i][0]) + Arrow, Change = getArrow(Change) + Change = '%.2f' % Change + MidFrame = textToImage(Ticker, Current, Change, Arrow) #IMAGE THE TEXT + + StitchedStock = stitchImage([Logo,MidFrame]) + ListStocks.append(blank) + ListStocks.append(StitchedStock) + retrievedList = [] + else: + break + + print('elapsed time loop ended: ' + str((time.time()-start))) + if (ApiCalledError == False): + FinalDisplayImage = stitchImage(ListStocks) + FinalDisplayImage.save('final.ppm') + print(retrievedList) + +#Send the final stitched image to the display for set amount of time +def displayMatrix(): + #os.system("sudo ./demo -D1 final.ppm -t " + str(displayTime) +" -m "+ str(speedDisplay) +" --led-gpio-mapping=adafruit-hat --led-rows=32 --led-cols=256") + os.system("sudo ./demo -D1 final.ppm -t " + str(displayTime) +" -m "+ str(speedDisplay) +" --led-gpio-mapping=adafruit-hat --led-rows=64 --led-cols=64") + +#Retrieve symbols from the CSV file +def GetSymbols(): + global symbols + symbols = [] + CSV = csv.reader(open('csv/tickers.csv', 'r')) + z = 0 + for row in CSV: + symbols.append([]) + endLine = str(row[0]+','+row[1]+','+row[2]+','+row[3]+','+row[4]+','+row[5]+','+row[6]+','+row[7]+','+row[8]+','+row[9]+','+row[10]) + symbols[z].append(endLine) + z+=1 + print(symbols) + +#Main run definition called by server +def runStockTicker(RUNTIME, DELAY, SPEEDTIME): + global keySwapper + global running + global displayTime + global symbolLength + global parseCSV + global Delay + global speedDisplay + + parseCSV = 0 + Delay = DELAY + displayTime = RUNTIME + speedDisplay = SPEEDTIME + GetSymbols() + symbolLength = (len(symbols) - 3) + GetfullStockImage() + keySwapper += 1 + running = True + parseCSV += 3 + + while (True): + if (running == True): + if (keySwapper<=1): + if(parseCSV <= symbolLength): + th = threading.Thread(target=displayMatrix) + th.start() + #displayMatrix() + time.sleep((int(displayTime) - int(Delay))) + GetfullStockImage() + keySwapper += 1 + th.join() + parseCSV += 3 + else: + parseCSV = 0 + else: + keySwapper = 0 + else: + break; + +#Change running to false stopping refresh at next checkpoint +def stopStockTicker(): + global running + global keySwapper + keySwapper = 0 + running = False + print('MATRIX DISPLAY STOP CALLED') diff --git a/stockTicker.pyc b/stockTicker.pyc new file mode 100644 index 0000000..f55248d Binary files /dev/null and b/stockTicker.pyc differ diff --git a/templates/._index.html b/templates/._index.html new file mode 100644 index 0000000..9ac6490 Binary files /dev/null and b/templates/._index.html differ diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..54b3e41 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,66 @@ + + + + {{ title }} + + + +
+

Stock Ticker Control Panel

+

Time of last page reload
{{ time }}

+
+

Last command sent: {{ lastcommand }}

+
+ +

Runtime: {{ runtime }}s & API call: {{ delay }}s before refresh
displayed at a speed of {{ speedtime }}m/s

+

Set the amount of time each image is displayed before a refresh in seconds

+
+ + +
+

Set the amount of time before next image refresh that the stocks are updated

+
+ + +
+

Set the speed the image scrolls across the screen (m/s, lower is faster)

+
+ + +
+ +

+

Tickers to display

+

To change the tickers displayed please upload a CSV (comma separated value) file with 11 tickers on each row e.g

+

MSFT,NFLX,GOOG,TSLA,AAPL,INTC,TXN,HPQ,HOG,LUV,WMT

+

WMT,LUV,HOG,HPQ,TXN,INTC,AAPL,TSLA,GOOG,NFLX,MSFT

+
+

+ +

+ +

+

Logos

+

Upload logo images (e.g "TICKER.png") or change the default images here

+

1) logos must be 32px in height and can be any width

+

2) "blank.png" is the space between stocks, default of 10x32px

+

3) "default.png" is the default logo to be used if no logo can be found

+

4) arrows (up/down.png) must be 16x14px

+
+

+ +

+

Logos currently in file:

+

{{ logofiles }}

+ +

+
+ + + +
+

+

+
+ + \ No newline at end of file