professional image creation updated

This commit is contained in:
Neythen 2021-10-05 20:29:05 +01:00
parent 65dfcdc321
commit 3fb1ee197a
13 changed files with 106 additions and 75 deletions

View File

@ -1 +1 @@
["Stocks", "Crypto", "Forex", "Current Weather"]
["Custom Images"]

View File

@ -1 +1 @@
{"speed": "medium", "animation": "continuous", "title": true, "pause": "", "images": ["image.png"]}
{"speed": "medium", "animation": "continuous", "title": true, "pause": "", "images": ["ZM.png", "WORK.png"]}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

20
log.txt
View File

@ -1,9 +1,17 @@
'StockTicker' object has no attribute 'readStocksCSV'. file: stockTicker.py. line: 2186. type: <class 'AttributeError'>
[Errno 2] No such file or directory: '/home/pi/Desktop/stock_ticker/ZM.png'. file: stockTicker.py. line: 2230. type: <class 'FileNotFoundError'>
Traceback (most recent call last):
File "stockTicker.py", line 2186, in <module>
stock_ticker.updateMultiple(['Stocks Prof'])
File "stockTicker.py", line 2230, in <module>
stock_ticker.process_msg(msg)
File "stockTicker.py", line 2194, in process_msg
self.scrollFunctionsAnimated(userSettings, animation = 'down')
File "stockTicker.py", line 309, in scrollFunctionsAnimated
self.updateMultiple([options[0]])
File "stockTicker.py", line 276, in updateMultiple
img = self.functions[option]()
File "stockTicker.py", line 927, in getStockProfessional
self.readStocksCSV()
AttributeError: 'StockTicker' object has no attribute 'readStocksCSV'
File "stockTicker.py", line 1953, in getUserImage
image = self.openImage(os.path.join(os.path.dirname(os.path.abspath(__file__)), image))
File "stockTicker.py", line 76, in openImage
image = Image.open(image_file)
File "/usr/lib/python3/dist-packages/PIL/Image.py", line 2634, in open
fp = builtins.open(filename, "rb")
FileNotFoundError: [Errno 2] No such file or directory: '/home/pi/Desktop/stock_ticker/ZM.png'

View File

@ -491,6 +491,7 @@ allFeaturesFileAddBtn.map((value, index) => {
value.addEventListener("click", () => {
var tag = document.createElement("li");
tag.innerHTML = allFeaturesFile[index].files[0].name;
allFeatures[index].appendChild(tag);
changeVarValue();
addEventOnFeaturesList();

View File

@ -702,23 +702,35 @@ class StockTicker():
def getCryptoProfessional(self):
title_img = self.openImage('feature_titles/small_feature_titles/crypto.png')
self.blank = Image.new('RGB', (0, 16))
image_list = [title_img, Image.new('RGB', (5, 16))]
start = time.time()
self.readCryptoCSV()
f = open('csv/crypto_settings.json', 'r')
all_crypto_settings = json.load(f)
f.close()
for i, coin in enumerate(self.coins):
if all_crypto_settings['title']:
title_img = self.openImage('feature_titles/small_feature_titles/crypto.png')
image_list = [title_img]
image_list.append(self.blank)
else:
image_list = []
info = self.coin_info[coin]
change = float(info[3]) #TEXT
ticker = info[0] #TEXT
current = float(info[2]) #TEXT
base = info[1].upper()
if self.points:
coin_info = all_crypto_settings['symbols']
coin_bases = list(coin_info.keys())
for i, cb in enumerate(coin_bases):
ticker, base = cb.split(',')
current = coin_info[cb]["current"]
change = coin_info[cb]["24hr_change"]
if all_crypto_settings["point"]:
# convert percent to points
change = change/100 * current
@ -802,41 +814,42 @@ class StockTicker():
def getForexProfessional(self):
self.blank = Image.new('RGB', (0, 16))
f = open('csv/forex_settings.json', 'r')
all_forex_settings = json.load(f)
f.close()
if all_forex_settings['title']:
title_img = self.openImage('feature_titles/small_feature_titles/forex.png')
self.blank = Image.new('RGB', (0, 16))
image_list = [title_img, Image.new('RGB', (5, 16))]
image_list = [title_img]
image_list.append(self.blank)
else:
image_list = []
base, currency_info = json.load(open('csv/currency.json', 'r'))
currencies = ['AUD', 'CAD', 'CHF', 'EUR', 'GBP', 'JPY', 'NZD']
forex_settings = all_forex_settings['symbols']
for i, currency in enumerate(currencies):
symbol_bases = list(forex_settings.keys())
current, yesterday = currency_info[currency]
change = 1/current - 1/yesterday
for i, sb in enumerate(symbol_bases):
symbol, base = sb.split(',')
current = forex_settings[sb]['current']
change = forex_settings[sb]['24hr_change']
current = 1/current
current = '%.3f' % current
arrow, change = self.getArrow(change, professional = True)
change = '%.6f' % change
midFrame = self.textToImageProf(currency + '(' + base + ')', current, change, arrow, font = ImageFont.load("./fonts/6x10.pil")) #IMAGE THE TEXT
midFrame = self.textToImageProf(symbol + '(' + base + ')', current, change, arrow, font = ImageFont.load("./fonts/6x10.pil")) #IMAGE THE TEXT
try:
logos_path = os.path.join(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'logos'), 'currencies')
logo = Image.open(os.path.join(logos_path, currency.lower() + '.png'))
logo = Image.open(os.path.join(logos_path, symbol.lower() + '.png'))
bse = Image.open(os.path.join(logos_path, base.lower() + '.png'))
new_im = Image.new('RGB', (32, 32))
@ -878,8 +891,7 @@ class StockTicker():
image_list = []
symbols = []
stock_info = {}
stock_info = all_stocks_settings['symbols']
symbols = list(stock_info.keys())
@ -920,6 +932,7 @@ class StockTicker():
return finalDisplayImage
def getStockProfessional(self):
self.blank = Image.new('RGB', (0, 16))
f = open('csv/stocks_settings.json', 'r')
all_stocks_settings = json.load(f)
@ -932,10 +945,11 @@ class StockTicker():
else:
image_list = []
self.readStocksCSV()
self.blank = Image.new('RGB', (0, 16))
for i, symbol in enumerate(self.symbols):
stock_info = all_stocks_settings['symbols']
symbols = list(stock_info.keys())
for i, symbol in enumerate(symbols):
info = stock_info[symbol]
@ -1052,28 +1066,30 @@ class StockTicker():
def getNewsProfessional(self):
headline_font = ImageFont.load("./fonts/6x10.pil")
source_font = ImageFont.load("./fonts/6x10.pil")
all_settings = json.load(open('csv/news_settings.json', 'r'))
if all_settings['title']:
title_img = self.openImage('feature_titles/small_feature_titles/news.png')
image_list = [title_img, Image.new('RGB', (5, 16))]
image_list = [title_img]
headline_font = ImageFont.load("./fonts/6x13.pil")
source_font = ImageFont.load("./fonts/6x13.pil")
headline_info = all_settings['headlines']
headlines = []
source_date_times = []
sources = []
f = open('csv/news.csv', 'r')
CSV = csv.reader(f)
next(CSV)
for row in CSV:
headline, source, date, time = row
headlines.append(headline)
sources.append(source)
f.close()
blank = Image.new('RGB', (0, 16))
for i, headline in enumerate(headlines):
for i, hi in enumerate(headline_info):
headline, source, date_time = hi
date, time = date_time.split('T')
time = time[:-1]
source_date_time = source + ': ' + date + ' ' + time
headline = headline.replace("^", ",")
headline = headline.replace("", "'")
headline = headline.replace("", "'")
@ -1088,7 +1104,7 @@ class StockTicker():
headline = lst[0]
headline_img = self.textImage(headline, headline_font, matrix_height = True)
source_img = self.textImage(sources[i] + ':', source_font, r=255, g=255, b=0, matrix_height = True)
source_img = self.textImage(source_date_time+ ':', source_font, r=255, g=255, b=0, matrix_height = True)
try:
@ -1453,15 +1469,19 @@ class StockTicker():
return self.stitchImage(imgs)
def getTodayWeatherProfessional(self):
f = open( "csv/weather_location.txt", 'r' )
line = next(f)
locations = line.split(',')
f.close()
all_settings = json.load(open('csv/current_weather.json', 'r'))
if all_settings['title']:
title_img = self.openImage('feature_titles/small_feature_titles/weather.png')
image_list = [title_img, Image.new('RGB', (3, 16))]
else:
image_list = []
current_weathers = all_settings['locations']
locations = list(current_weathers.keys())
current_weathers = json.load(open('csv/current_weather.json', 'r'))
weekdays = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
months =['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
month = months[int(datetime.now().strftime('%m'))-1]
@ -1470,10 +1490,11 @@ class StockTicker():
weekday = weekdays[datetime.today().weekday()]
for i, location in enumerate(locations):
img = Image.new('RGB', (1000, 32))
current_weather = current_weathers[i]
current_weather = current_weathers[location]
small_font = ImageFont.load("./fonts/4x6.pil")
font = ImageFont.load("./fonts/6x10.pil")
large_font = ImageFont.load("./fonts/10x20.pil")
@ -1923,21 +1944,22 @@ class StockTicker():
f = open('csv/image_settings.json', 'r')
all_settings = json.load(f)
f.close()
image = self.openImage(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'display_images/user_image.ppm'))
if all_settings['title']:
imgs = [title_img, image]
imgs = [title_img]
else:
imgs = [image]
imgs = []
for image in all_settings['images']:
image = self.openImage(os.path.join(os.path.dirname(os.path.abspath(__file__)), image))
return self.stitchImage(imgs)
def getUserGIF(self):
title_img = self.openImage('feature_titles/gifs.png')
gif = Image.open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'display_images/user_gif.gif'))
gif = Image.open(os.path.join(os.path.dirname(os.path.abspath(__file__)), all_settings['images'][0]))
f = open('csv/GIF_settings.json', 'r')
all_settings = json.load(f)
@ -2191,7 +2213,7 @@ if __name__ == '__main__':
start_image = Image.open('./logos/startup_logo.png')
stock_ticker.updateMultiple(['Stocks Prof', 'Crypto Prof', 'Forex Prof'])
stock_ticker.setImage(start_image)
time.sleep(1)
stock_ticker.resetMatrix()