first premier league stuff added
This commit is contained in:
parent
2d357d9563
commit
29f3f736af
@ -298,7 +298,7 @@ def updateCurrencies(api_key):
|
|||||||
json.dump([base, c_dict], open( "csv/currency.json", 'w+' ))
|
json.dump([base, c_dict], open( "csv/currency.json", 'w+' ))
|
||||||
|
|
||||||
|
|
||||||
def updateSports():
|
def updateSports(api_key):
|
||||||
url = 'https://www.thesportsdb.com/api/v1/json/1/lookuptable.php?l=4328&s=2020-2021' # premier league table
|
url = 'https://www.thesportsdb.com/api/v1/json/1/lookuptable.php?l=4328&s=2020-2021' # premier league table
|
||||||
'https://www.thesportsdb.com/api/v1/json/1/eventsnext.php?id=133602' # next five events by team ID (paid) use this for upcoming team games
|
'https://www.thesportsdb.com/api/v1/json/1/eventsnext.php?id=133602' # next five events by team ID (paid) use this for upcoming team games
|
||||||
'https://www.thesportsdb.com/api/v2/json/APIKEY/livescore.php?l=4380' #live scores
|
'https://www.thesportsdb.com/api/v2/json/APIKEY/livescore.php?l=4380' #live scores
|
||||||
@ -397,6 +397,7 @@ if __name__ == '__main__':
|
|||||||
weather_key = 'bd5d5096a5ba30bbcfb57ead42ab3fee'
|
weather_key = 'bd5d5096a5ba30bbcfb57ead42ab3fee'
|
||||||
|
|
||||||
currency_key = '862dbb6d1101ce0c5136'
|
currency_key = '862dbb6d1101ce0c5136'
|
||||||
|
sports_key = '97436974'
|
||||||
|
|
||||||
updateCurrencies(currency_key)
|
updateCurrencies(currency_key)
|
||||||
|
|
||||||
@ -426,7 +427,7 @@ if __name__ == '__main__':
|
|||||||
updateCurrencies(currency_key)
|
updateCurrencies(currency_key)
|
||||||
updateNews()
|
updateNews()
|
||||||
updateWeather(weather_location, weather_key)
|
updateWeather(weather_location, weather_key)
|
||||||
updateSports()
|
updateSports(sports_key)
|
||||||
|
|
||||||
NY_time = datetime.now(NY_zone)
|
NY_time = datetime.now(NY_zone)
|
||||||
symbols, stock_info = readCSV('csv/tickers.csv', max_stocks)
|
symbols, stock_info = readCSV('csv/tickers.csv', max_stocks)
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
symbol,name,base,current,24hr change
|
symbol,name,base,current,24hr change
|
||||||
BTC,bitcoin,usd,36800,1.9889872710237515
|
BTC,bitcoin,usd,41446,3.248036397011369
|
||||||
ETH,ethereum,gbp,1747.56,-3.706294583596982
|
ETH,ethereum,gbp,1853.43,1.422507551227988
|
||||||
|
|
@ -1 +1 @@
|
|||||||
["USD", {"AUD": [1.2922, 1.29], "CAD": [1.2107, 1.2078], "CHF": [0.89609, 0.89487], "EUR": [0.82142, 0.82001], "GBP": [0.70883, 0.70564], "JPY": [109.54, 109.37], "NZD": [1.3908, 1.3879]}]
|
["USD", {"AUD": [1.3001, 1.2959], "CAD": [1.2189, 1.2167], "CHF": [0.90015, 0.89903], "EUR": [0.8259, 0.82563], "GBP": [0.71151, 0.7092], "JPY": [110.08, 109.77], "NZD": [1.403, 1.4002]}]
|
@ -1 +1 @@
|
|||||||
{"main_weather": "Clouds", "description": "overcast clouds", "temp": 28.57, "min_temp": 27.92, "max_temp": 29.1, "feels_like": 34.55, "humidity": 85, "clouds": 100, "wind_speed": 2.68, "wind_direction": 90, "visibility": 10000, "uv": 0, "rain_chance": 0}
|
{"main_weather": "Clouds", "description": "overcast clouds", "temp": 29.6, "min_temp": 28.91, "max_temp": 30.21, "feels_like": 35.96, "humidity": 78, "clouds": 100, "wind_speed": 0.45, "wind_direction": 332, "visibility": 10000, "uv": 0, "rain_chance": 0.49}
|
@ -1 +1 @@
|
|||||||
[{"main_weather": "Rain", "description": "moderate rain", "min_temp": 27.81, "max_temp": 29.53}, {"main_weather": "Rain", "description": "moderate rain", "min_temp": 27.37, "max_temp": 28.25}, {"main_weather": "Rain", "description": "moderate rain", "min_temp": 27.02, "max_temp": 28.42}, {"main_weather": "Rain", "description": "moderate rain", "min_temp": 27.54, "max_temp": 29.06}, {"main_weather": "Rain", "description": "moderate rain", "min_temp": 27.74, "max_temp": 29.65}, {"main_weather": "Rain", "description": "moderate rain", "min_temp": 28.14, "max_temp": 29.86}, {"main_weather": "Rain", "description": "moderate rain", "min_temp": 28.1, "max_temp": 29.89}, {"main_weather": "Rain", "description": "light rain", "min_temp": 28.42, "max_temp": 29.49}]
|
[{"main_weather": "Rain", "description": "light rain", "min_temp": 28.77, "max_temp": 30.09}, {"main_weather": "Rain", "description": "moderate rain", "min_temp": 28.25, "max_temp": 30.18}, {"main_weather": "Rain", "description": "moderate rain", "min_temp": 28.38, "max_temp": 30.34}, {"main_weather": "Rain", "description": "light rain", "min_temp": 28.71, "max_temp": 30.54}, {"main_weather": "Rain", "description": "light rain", "min_temp": 28.64, "max_temp": 30.36}, {"main_weather": "Rain", "description": "light rain", "min_temp": 28.8, "max_temp": 30.44}, {"main_weather": "Rain", "description": "moderate rain", "min_temp": 27.04, "max_temp": 29.26}, {"main_weather": "Rain", "description": "moderate rain", "min_temp": 26.78, "max_temp": 27.71}]
|
@ -1 +1 @@
|
|||||||
14/06/2021 14:19:22
|
15/06/2021 14:34:09
|
||||||
|
|
40
csv/news.csv
40
csv/news.csv
@ -1,21 +1,21 @@
|
|||||||
headline,source,date,time
|
headline,source,date,time
|
||||||
Manchester United have £67m Jadon Sancho bid rejected by Dortmund - The Guardian,The Guardian,2021-06-10,18:35:00Z
|
Hungary vs Portugal LIVE: Euro 2020 latest score^ goals and updates from fixture today - The Independent,Independent,2021-06-15,16:37:47Z
|
||||||
1 in 5 children struggle with mental health; here's how you can help - IOL,IOL,2021-06-10,18:21:08Z
|
Smash Bros Ultimate DLC reveal: Tekken's Kazuya revealed as next Fighters Pass 2 brawler - Express,Express,2021-06-15,16:32:33Z
|
||||||
State’s uptake of coronavirus vaccines to be among highest worldwide^ says Holohan - The Irish Times,The Irish Times,2021-06-10,18:19:34Z
|
Duterte retains GCQ with restrictions in NCR Plus - The Manila Times,The Manila Times,2021-06-15,16:30:00Z
|
||||||
Manitoba ties vaccination goals to summer holidays but reopening plan short on details - CBC.ca,CBC News,2021-06-10,18:18:14Z
|
Noul sistem de operare mobil pentru care 4 milioane de dezvoltatori dezvolta aplicatii - Dojotech.ro,Dojotech.ro,2021-06-15,16:23:19Z
|
||||||
Biden says US to buy and donate half-billion doses of Pfizer's Covid vaccine: 'We know the tragedy. We also know the path to recovery' - CNN ,CNN,2021-06-10,18:16:00Z
|
SC orders Disini: Pay government ₧1 billion in damages for $2.2-billion nuke plant | Joel R. San Juan - Business Mirror,Businessmirror.com.ph,2021-06-15,16:14:00Z
|
||||||
Boris Johnson hails Biden administration as ‘breath of fresh air’ after first meeting - Evening Standard,Evening Standard,2021-06-10,18:14:23Z
|
MP Yasmin Ratansi put herself in conflict of interest by employing foster sister: ethics commissioner - CBC.ca,CBC News,2021-06-15,16:13:03Z
|
||||||
Study on plant roots challenges nature of ecological trade-offs - EurekAlert,EurekAlert,2021-06-10,18:04:28Z
|
Chicago mass shooting: 8 shot^ 4 fatally^ in Englewood home - Chicago Sun-Times,Suntimes.com,2021-06-15,16:10:07Z
|
||||||
Ethics committee calls for sweeping reforms in wake of WE Charity scandal - CBC.ca,CBC News,2021-06-10,18:02:27Z
|
China^ Its Military Might Expanding^ Accuses NATO of Hypocrisy - The New York Times,New York Times,2021-06-15,16:09:49Z
|
||||||
Microsoft teases new Windows 11 startup sound with 11-minute video - The Verge,The Verge,2021-06-10,18:00:39Z
|
US retail sales fell in May; UK jobless rate drops and payrolls rise – business live - The Guardian,The Guardian,2021-06-15,16:07:54Z
|
||||||
Wife of ‘El Chapo’ Guzmán pleads guilty to aiding husband’s drug trafficking empire - The Washington Post,The Washington Post,2021-06-10,17:59:00Z
|
Beats Studio Buds vs Apple AirPods Pro: the noise-cancelling earbuds compared - TechRadar,TechRadar,2021-06-15,16:06:16Z
|
||||||
No house price fall in sight^ ASB says in quarterly economic forecast - Stuff.co.nz,Stuff.co.nz,2021-06-10,17:58:00Z
|
India vs Afghanistan^ Highlights^ FIFA World Cup 2022 Qualifiers: India held to 1-1 draw - Firstpost,Firstpost,2021-06-15,16:02:53Z
|
||||||
Croatia moves to sanction 'revenge porn' - GMA News,GMA News,2021-06-10,17:54:07Z
|
Cicadas that come out every 17 years may emerge more often in the future - Science Magazine,Science Magazine,2021-06-15,16:00:00Z
|
||||||
England boosted by Rory Burns and Dan Lawrence fifties after New Zealand's six-wicket burst following lunch - Sky Sports,Sky Sports,2021-06-10,17:53:22Z
|
Converge investing P1 billion for new data center - Philstar.com,Philippine Star,2021-06-15,16:00:00Z
|
||||||
Then there were 3: NASA to collaborate on ESA's new Venus mission - Phys.org,Phys.Org,2021-06-10,17:50:17Z
|
Garland announces national strategy to combat domestic terrorism^ invoking US Capitol riot - CNN ,CNN,2021-06-15,15:55:00Z
|
||||||
Fingered for failings he’d forgotten^ Matt Hancock wriggles free - The Guardian,The Guardian,2021-06-10,17:47:00Z
|
Average Canadian house price up 38% compared to last year^ but down from March - CBC.ca,CBC News,2021-06-15,15:48:45Z
|
||||||
COVID-19 live updates: Montrealers share frustrations – and tips – on speeding up second vaccine doses - Montreal Gazette,Montreal Gazette,2021-06-10,17:46:56Z
|
'Pure insanity': Emails detail Trump's pressure on Justice Department to overturn election - NBC News,NBC News,2021-06-15,15:48:26Z
|
||||||
California appeals judge's ruling that overturned state's ban on assault-style weapons - CNN ,CNN,2021-06-10,17:45:00Z
|
UW astronomer redefines the scientific hero as part of The Great Courses - UW News,UW News,2021-06-15,15:46:44Z
|
||||||
Morrisons hit by huge pay revolt The Telegraph - The Telegraph,Telegraph.co.uk,2021-06-10,17:42:00Z
|
Gone Girl actor Lisa Banes dies 10 days after hit-and-run - Independent.ie,Independent.ie,2021-06-15,15:44:00Z
|
||||||
Cricket: Black Caps fight back from slow start on opening day of second test against England - New Zealand Herald,New Zealand Herald,2021-06-10,17:30:35Z
|
Electrons can form a strange 2-D 'Flatland' in a superconductor - Games Bollyinside - BollyInside,Bollyinside.com,2021-06-15,15:43:49Z
|
||||||
Shikhar Dhawan To Lead India In Sri Lanka ODI^ T20I Series As BCCI Names Squad - NDTVSports.com,NDTV News,2021-06-10,17:26:15Z
|
BREAKING | There are no babies^ admits father of ‘Tembisa 10’ - News24,News24,2021-06-15,15:41:38Z
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
name,current,opening
|
name,current,opening
|
||||||
MSFT,258.44,257.9
|
MSFT,258.05,259.775
|
||||||
NFLX,500.93,489.68
|
NFLX,492.27,501.23
|
||||||
GOOG,2508.46,2513.39
|
GOOG,2519.23,2530.44
|
||||||
|
|
10
server.py
10
server.py
@ -320,6 +320,16 @@ def matrix():
|
|||||||
|
|
||||||
|
|
||||||
LastCommand = 'Run display'
|
LastCommand = 'Run display'
|
||||||
|
|
||||||
|
elif "Run League" in request.form:
|
||||||
|
ticker.sendline('K')
|
||||||
|
ticker.sendline('L')
|
||||||
|
|
||||||
|
elif "Run Teams" in request.form:
|
||||||
|
print('teams')
|
||||||
|
ticker.sendline('K')
|
||||||
|
ticker.sendline('t')
|
||||||
|
|
||||||
elif "Stop Display" in request.form:
|
elif "Stop Display" in request.form:
|
||||||
|
|
||||||
print('run display')
|
print('run display')
|
||||||
|
204
stockTicker.py
204
stockTicker.py
@ -85,7 +85,6 @@ class StockTicker():
|
|||||||
#https://groups.google.com/forum/#!topic/cython-users/Dc1ft5W6KM4
|
#https://groups.google.com/forum/#!topic/cython-users/Dc1ft5W6KM4
|
||||||
img_width, img_height = image.size
|
img_width, img_height = image.size
|
||||||
|
|
||||||
print('args', img_width, img_height, offset_x, offset_y, image)
|
|
||||||
self.matrix.SetPixelsPillow(offset_x, offset_y, img_width, img_height, image)
|
self.matrix.SetPixelsPillow(offset_x, offset_y, img_width, img_height, image)
|
||||||
else:
|
else:
|
||||||
# First implementation of a SetImage(). OPTIMIZE_ME: A more native
|
# First implementation of a SetImage(). OPTIMIZE_ME: A more native
|
||||||
@ -237,8 +236,6 @@ class StockTicker():
|
|||||||
|
|
||||||
if matrix_height:
|
if matrix_height:
|
||||||
height = 32
|
height = 32
|
||||||
print(text)
|
|
||||||
print('dims:', width, height)
|
|
||||||
img = Image.new('RGB', (width + buff + 3, height+3))
|
img = Image.new('RGB', (width + buff + 3, height+3))
|
||||||
d = ImageDraw.Draw(img)
|
d = ImageDraw.Draw(img)
|
||||||
|
|
||||||
@ -300,7 +297,7 @@ class StockTicker():
|
|||||||
logos_path = os.path.join(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'logos'), 'news_logos')
|
logos_path = os.path.join(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'logos'), 'news_logos')
|
||||||
|
|
||||||
logo = Image.open(os.path.join(logos_path, 'techcrunch' + '.png'))
|
logo = Image.open(os.path.join(logos_path, 'techcrunch' + '.png'))
|
||||||
print(logo.size)
|
|
||||||
img = Image.new('RGB', (headline_img.size[0], 32))
|
img = Image.new('RGB', (headline_img.size[0], 32))
|
||||||
img.paste(headline_img, (2, -3))
|
img.paste(headline_img, (2, -3))
|
||||||
img.paste(source_img, (2,16))
|
img.paste(source_img, (2,16))
|
||||||
@ -333,7 +330,6 @@ class StockTicker():
|
|||||||
# To iterate through the entire gif
|
# To iterate through the entire gif
|
||||||
i = 0
|
i = 0
|
||||||
while True:
|
while True:
|
||||||
print(gif.tell())
|
|
||||||
try:
|
try:
|
||||||
gif.seek(i)
|
gif.seek(i)
|
||||||
except EOFError:
|
except EOFError:
|
||||||
@ -459,7 +455,6 @@ class StockTicker():
|
|||||||
new_im = Image.new('RGB', (total_width, max_height))
|
new_im = Image.new('RGB', (total_width, max_height))
|
||||||
x_offset = 0
|
x_offset = 0
|
||||||
for im in image_list:
|
for im in image_list:
|
||||||
print(x_offset)
|
|
||||||
new_im.paste(im, (x_offset,0))
|
new_im.paste(im, (x_offset,0))
|
||||||
x_offset += im.size[0]
|
x_offset += im.size[0]
|
||||||
|
|
||||||
@ -510,7 +505,7 @@ class StockTicker():
|
|||||||
|
|
||||||
for i, coin in enumerate(self.coins):
|
for i, coin in enumerate(self.coins):
|
||||||
info = self.coin_info[coin]
|
info = self.coin_info[coin]
|
||||||
print(info)
|
|
||||||
change = float(info[3]) #TEXT
|
change = float(info[3]) #TEXT
|
||||||
ticker = info[0] #TEXT
|
ticker = info[0] #TEXT
|
||||||
current = float(info[2]) #TEXT
|
current = float(info[2]) #TEXT
|
||||||
@ -546,9 +541,9 @@ class StockTicker():
|
|||||||
for i, currency in enumerate(['AUD', 'CAD', 'CHF', 'EUR', 'GBP', 'JPY', 'NZD']):
|
for i, currency in enumerate(['AUD', 'CAD', 'CHF', 'EUR', 'GBP', 'JPY', 'NZD']):
|
||||||
|
|
||||||
current, yesterday = currency_info[currency]
|
current, yesterday = currency_info[currency]
|
||||||
print(current, yesterday)
|
|
||||||
change = 1/current - 1/yesterday
|
change = 1/current - 1/yesterday
|
||||||
print(change)
|
|
||||||
current = 1/current
|
current = 1/current
|
||||||
current = '%.3f' % current
|
current = '%.3f' % current
|
||||||
|
|
||||||
@ -589,13 +584,126 @@ class StockTicker():
|
|||||||
elif updated_img == 2:
|
elif updated_img == 2:
|
||||||
finalDisplayImage.save('final1.ppm')
|
finalDisplayImage.save('final1.ppm')
|
||||||
|
|
||||||
|
|
||||||
|
def getLeagueImage(self):
|
||||||
|
|
||||||
|
img = Image.new('RGB', (10000, 32))
|
||||||
|
league_info = json.load(open('/home/pi/Desktop/stock_ticker/csv/sports/premier_league/past_games.json', 'r'))
|
||||||
|
print(league_info[0].keys())
|
||||||
|
small_font = ImageFont.load("./fonts/5x7.pil")
|
||||||
|
large_font = ImageFont.load("./fonts/10x20.pil")
|
||||||
|
|
||||||
|
|
||||||
|
buff_size = 20
|
||||||
|
x_offset = 0
|
||||||
|
print(len(league_info))
|
||||||
|
|
||||||
|
for match in league_info[-15:]:
|
||||||
|
home_team = match['home_team']
|
||||||
|
away_team = match['away_team']
|
||||||
|
|
||||||
|
home_score = match['home_score']
|
||||||
|
away_score = match['away_score']
|
||||||
|
|
||||||
|
date = match['date']
|
||||||
|
|
||||||
|
rond = match['round']
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
home_logo = Image.open('/home/pi/Desktop/stock_ticker/logos/sports/premier_league/' + home_team +'.png')
|
||||||
|
except:
|
||||||
|
home_logo = self.textImage(home_team.replace(' ', '\n'), small_font, r = 255, g = 255, b = 255)
|
||||||
|
print(home_team)
|
||||||
|
|
||||||
|
try:
|
||||||
|
away_logo = Image.open('/home/pi/Desktop/stock_ticker/logos/sports/premier_league/' + away_team +'.png')
|
||||||
|
except:
|
||||||
|
away_logo = self.textImage(away_team.replace(' ', '\n'), small_font, r = 255, g = 255, b = 255)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
home_timage = self.textImage(home_team, small_font, r = 255, g = 255, b = 255)
|
||||||
|
away_timage = self.textImage(away_team, small_font, r = 255, g = 255, b = 255)
|
||||||
|
date_timage = self.textImage(date, small_font, r = 255, g = 255, b = 0)
|
||||||
|
round_timage = self.textImage('round:' + rond, small_font, r = 255, g = 255, b = 255)
|
||||||
|
|
||||||
|
score_image = self.textImage(home_score + '-' + away_score, large_font, r = 255, g = 255, b = 255)
|
||||||
|
|
||||||
|
img.paste(home_logo, (x_offset,0))
|
||||||
|
|
||||||
|
x_offset += home_logo.size[0] + 2
|
||||||
|
|
||||||
|
#img.paste(home_timage, (x_offset, 0))
|
||||||
|
#img.paste(away_timage, (x_offset, 5))
|
||||||
|
img.paste(date_timage, (x_offset, 0))
|
||||||
|
img.paste(round_timage, (x_offset+ 7, 8))
|
||||||
|
img.paste(score_image, (x_offset+10, 15))
|
||||||
|
|
||||||
|
#x_offset += max(home_timage.size[0], away_timage.size[0], date_timage.size[0], round_timage.size[0], score_image.size[0])
|
||||||
|
x_offset += max( date_timage.size[0], round_timage.size[0], score_image.size[0])
|
||||||
|
|
||||||
|
img.paste(away_logo, (x_offset,0))
|
||||||
|
|
||||||
|
x_offset += away_logo.size[0] + 2
|
||||||
|
x_offset += buff_size
|
||||||
|
img = img.crop((0,0,x_offset ,32))
|
||||||
|
|
||||||
|
return img
|
||||||
|
|
||||||
|
def getTeamsImage(self):
|
||||||
|
img = Image.new('RGB', (10000, 32))
|
||||||
|
team_info = json.load(open('/home/pi/Desktop/stock_ticker/csv/sports/premier_league/team_stats.json', 'r'))
|
||||||
|
|
||||||
|
small_font = ImageFont.load("./fonts/5x7.pil")
|
||||||
|
med_font = ImageFont.load("./fonts/7x14.pil")
|
||||||
|
large_font = ImageFont.load("./fonts/10x20.pil")
|
||||||
|
|
||||||
|
buff_size = 20
|
||||||
|
x_offset = 0
|
||||||
|
for team in team_info:
|
||||||
|
try:
|
||||||
|
logo = Image.open('/home/pi/Desktop/stock_ticker/logos/sports/premier_league/' + team['name'] +'.png')
|
||||||
|
img.paste(logo, (x_offset, 0))
|
||||||
|
x_offset += logo.size[0] + 2
|
||||||
|
except:
|
||||||
|
print('no logo for:', team['name'])
|
||||||
|
|
||||||
|
name_timage = self.textImage(team['name'], med_font, r = 255, g = 255, b = 0)
|
||||||
|
wins_timage = self.textImage('Wins:' + team['wins'], small_font, r = 0, g = 255, b = 0)
|
||||||
|
loss_timage = self.textImage('Losses:' + team['loss'], small_font, r = 255, g = 0, b = 0)
|
||||||
|
draw_timage = self.textImage('Draws:' + team['draw'], small_font, r = 0, g = 0, b = 255)
|
||||||
|
points_timage = self.textImage('Points:' + team['points'], small_font, r = 255, g = 255, b = 255)
|
||||||
|
standing_timage = self.textImage('Standing:' + team['standing'], small_font, r = 255, g = 255, b = 255)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
img.paste(name_timage, (x_offset, -2))
|
||||||
|
img.paste(wins_timage, (x_offset, 11))
|
||||||
|
img.paste(loss_timage, (x_offset, 18))
|
||||||
|
img.paste(draw_timage, (x_offset, 25))
|
||||||
|
|
||||||
|
x_offset += max( wins_timage.size[0], loss_timage.size[0], draw_timage.size[0])
|
||||||
|
img.paste(points_timage, (x_offset, 14))
|
||||||
|
img.paste(standing_timage, (x_offset, 22))
|
||||||
|
|
||||||
|
x_offset += max(points_timage.size[0], standing_timage.size[0]) + buff_size
|
||||||
|
|
||||||
|
|
||||||
|
img = img.crop((0,0,x_offset ,32))
|
||||||
|
|
||||||
|
return img
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def getTodayWeatherImage(self):
|
def getTodayWeatherImage(self):
|
||||||
img = Image.new('RGB', (200, 32))
|
img = Image.new('RGB', (200, 32))
|
||||||
|
|
||||||
f = open( "csv/weather_location.txt", 'r' )
|
f = open( "csv/weather_location.txt", 'r' )
|
||||||
location = f.read()
|
location = f.read()
|
||||||
f.close()
|
f.close()
|
||||||
print(location)
|
|
||||||
|
|
||||||
current_weather = json.load(open('csv/current_weather.json', 'r'))
|
current_weather = json.load(open('csv/current_weather.json', 'r'))
|
||||||
|
|
||||||
@ -624,7 +732,7 @@ class StockTicker():
|
|||||||
img.paste(temp_img, (36,9))
|
img.paste(temp_img, (36,9))
|
||||||
|
|
||||||
deg_img = self.textImage('o', small_font)
|
deg_img = self.textImage('o', small_font)
|
||||||
print(temp_img.size)
|
|
||||||
img.paste(deg_img, (56, 8))
|
img.paste(deg_img, (56, 8))
|
||||||
|
|
||||||
main = current_weather['main_weather']
|
main = current_weather['main_weather']
|
||||||
@ -693,8 +801,6 @@ class StockTicker():
|
|||||||
vtext_img = self.textImage(str(current_weather['visibility']/1000) + 'km', small_font)
|
vtext_img = self.textImage(str(current_weather['visibility']/1000) + 'km', small_font)
|
||||||
img.paste(vtext_img, (168, 22))
|
img.paste(vtext_img, (168, 22))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return img
|
return img
|
||||||
|
|
||||||
def getDailyWeatherImageAlt(self):
|
def getDailyWeatherImageAlt(self):
|
||||||
@ -753,8 +859,6 @@ class StockTicker():
|
|||||||
|
|
||||||
rain_img = Image.open(weather_dir + '/rain-chance.png')
|
rain_img = Image.open(weather_dir + '/rain-chance.png')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
rtext_img = self.textImage(str(int(current_weather['rain_chance']*100)) + '%', extra_small_font)
|
rtext_img = self.textImage(str(int(current_weather['rain_chance']*100)) + '%', extra_small_font)
|
||||||
|
|
||||||
|
|
||||||
@ -773,7 +877,7 @@ class StockTicker():
|
|||||||
|
|
||||||
wtext_img = self.textImage(str(current_weather['wind_speed']) + 'm/s', extra_small_font)
|
wtext_img = self.textImage(str(current_weather['wind_speed']) + 'm/s', extra_small_font)
|
||||||
|
|
||||||
print(temp_img.size)
|
|
||||||
img.paste(location_img, (0,0))
|
img.paste(location_img, (0,0))
|
||||||
img.paste(weather_img, (0,12))
|
img.paste(weather_img, (0,12))
|
||||||
img.paste(temp_img, (30,9))
|
img.paste(temp_img, (30,9))
|
||||||
@ -948,10 +1052,6 @@ class StockTicker():
|
|||||||
vtext_img = self.textImage(str(current_weather['visibility']/1000) + 'km', small_font)
|
vtext_img = self.textImage(str(current_weather['visibility']/1000) + 'km', small_font)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
print(temp_img.size)
|
|
||||||
img.paste(location_img, (0,0))
|
img.paste(location_img, (0,0))
|
||||||
img.paste(weather_img, (0,12))
|
img.paste(weather_img, (0,12))
|
||||||
img.paste(temp_img, (30,9))
|
img.paste(temp_img, (30,9))
|
||||||
@ -1025,12 +1125,6 @@ class StockTicker():
|
|||||||
|
|
||||||
return img1
|
return img1
|
||||||
|
|
||||||
#Send the final stitched image to the display for set amount of time
|
|
||||||
def displayStocks(self):
|
|
||||||
#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(self.displayTime) +" -m "+ str(self.speedDisplay) +" --led-gpio-mapping=adafruit-hat --led-rows=64 --led-cols=64 --led-slowdown-gpio=4 ")
|
|
||||||
self.scrollImageTransition(['final.ppm', 'final.ppm'], offset_x = 0, offset_y = 0)
|
|
||||||
|
|
||||||
|
|
||||||
#Retrieve symbols and stock info from the csv file
|
#Retrieve symbols and stock info from the csv file
|
||||||
def readCSV(self):
|
def readCSV(self):
|
||||||
@ -1068,42 +1162,6 @@ class StockTicker():
|
|||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#Main run definition called by server
|
|
||||||
def runStockTicker(self, runtime, delay, speedtime):
|
|
||||||
|
|
||||||
|
|
||||||
self.getSymbols()
|
|
||||||
|
|
||||||
self.GetfullStockImage()
|
|
||||||
self.keySwapper += 1
|
|
||||||
self.running = True
|
|
||||||
|
|
||||||
|
|
||||||
while (True):
|
|
||||||
if (self.running == True):
|
|
||||||
|
|
||||||
|
|
||||||
#th = threading.Thread(target=self.displayMatrix)
|
|
||||||
#th.start()
|
|
||||||
self.displayMatrix()
|
|
||||||
time.sleep((int(runtime) - int(delay)))
|
|
||||||
self.getfullStockImage()
|
|
||||||
|
|
||||||
#th.join()
|
|
||||||
|
|
||||||
|
|
||||||
else:
|
|
||||||
break;
|
|
||||||
|
|
||||||
#Change running to false stopping refresh at next checkpoint
|
|
||||||
def stopStockTicker(self):
|
|
||||||
|
|
||||||
|
|
||||||
self.keySwapper = 0
|
|
||||||
self.running = False
|
|
||||||
print('MATRIX DISPLAY STOP CALLED')
|
|
||||||
|
|
||||||
def displayDailyWeatherAlt(self):
|
def displayDailyWeatherAlt(self):
|
||||||
img0, img1 = self.getDailyWeatherImageAlt()
|
img0, img1 = self.getDailyWeatherImageAlt()
|
||||||
#img = stock_ticker.getTodayWeatherImage()
|
#img = stock_ticker.getTodayWeatherImage()
|
||||||
@ -1144,10 +1202,9 @@ class StockTicker():
|
|||||||
|
|
||||||
time.sleep(self.delay*1.1)
|
time.sleep(self.delay*1.1)
|
||||||
|
|
||||||
|
def displayStocks(self):
|
||||||
|
|
||||||
|
self.scrollImageTransition(['final.ppm', 'final.ppm'], offset_x = 0, offset_y = 0)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def process_msg(self, msg):
|
def process_msg(self, msg):
|
||||||
|
|
||||||
@ -1209,16 +1266,31 @@ class StockTicker():
|
|||||||
#self.setImage( image)
|
#self.setImage( image)
|
||||||
self.scrollImageTransition(['weather.ppm', 'weather.ppm'], stocks = False)
|
self.scrollImageTransition(['weather.ppm', 'weather.ppm'], stocks = False)
|
||||||
|
|
||||||
|
elif msg == 'L': # league
|
||||||
|
img = self.getLeagueImage()
|
||||||
|
img.save('league.ppm')
|
||||||
|
|
||||||
|
stock_ticker.scrollImageTransition(['league.ppm', 'league.ppm'], stocks = False)
|
||||||
|
|
||||||
|
elif msg == 't': #teams
|
||||||
|
img = self.getTeamsImage()
|
||||||
|
img.save('teams.ppm')
|
||||||
|
|
||||||
|
stock_ticker.scrollImageTransition(['teams.ppm', 'teams.ppm'], stocks = False)
|
||||||
|
|
||||||
|
|
||||||
elif msg == 'K': # kill
|
elif msg == 'K': # kill
|
||||||
self.resetMatrix()
|
self.resetMatrix()
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
||||||
#print(sys.stdin.readlines())
|
|
||||||
with open('log.txt', "w") as log:
|
with open('log.txt', "w") as log:
|
||||||
try:
|
try:
|
||||||
stock_ticker = StockTicker()
|
stock_ticker = StockTicker()
|
||||||
|
#img = stock_ticker.getLeagueImage()
|
||||||
|
#img.save('league.ppm')
|
||||||
|
|
||||||
|
#stock_ticker.scrollImageTransition(['league.ppm', 'league.ppm'], stocks = False)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -14,6 +14,8 @@
|
|||||||
<input type="submit" name="Run News" value="Run News" style="height:50px" >
|
<input type="submit" name="Run News" value="Run News" style="height:50px" >
|
||||||
<input type="submit" name="Run Weather" value="Run Weather" style="height:50px" >
|
<input type="submit" name="Run Weather" value="Run Weather" style="height:50px" >
|
||||||
<input type="submit" name="Run Daily Weather" value="Run Daily Weather" style="height:50px" >
|
<input type="submit" name="Run Daily Weather" value="Run Daily Weather" style="height:50px" >
|
||||||
|
<input type="submit" name="Run League" value="Run League" style="height:50px" >
|
||||||
|
<input type="submit" name="Run Teams" value="Run Teams" style="height:50px" >
|
||||||
<input type="submit" name="Stop Display" value="Stop Display"style="height:50px">
|
<input type="submit" name="Stop Display" value="Stop Display"style="height:50px">
|
||||||
<input type="submit" name="Shutdown the pi" value="Shutdown the pi"style="height:50px">
|
<input type="submit" name="Shutdown the pi" value="Shutdown the pi"style="height:50px">
|
||||||
</form>
|
</form>
|
||||||
|
BIN
weather.ppm
BIN
weather.ppm
Binary file not shown.
Loading…
Reference in New Issue
Block a user