From e1e17d0df2bc41893dbbac65bf088c756ee0f675 Mon Sep 17 00:00:00 2001 From: Neythen Date: Mon, 22 Nov 2021 19:08:14 +0000 Subject: [PATCH] professional diaply working --- csv/crypto_settings.json | 2 +- csv/current_weather.json | 2 +- csv/daily_weather.json | 2 +- csv/display_settings.json | 2 +- csv/last_updates.json | 2 +- csv/live_games.json | 2 +- csv/past_games.json | 2 +- csv/settings.csv | 2 +- csv/stocks_settings.json | 2 +- csv/upcoming_games.json | 2 +- display_images/Crypto Prof.ppm | Bin 46862 -> 48014 bytes display_images/Crypto.ppm | Bin 67022 -> 67022 bytes display_images/Current Weather.ppm | Bin 95054 -> 95054 bytes display_images/Daily Forecast.ppm | Bin 136527 -> 136527 bytes display_images/Forex Prof.ppm | Bin 27950 -> 27950 bytes display_images/Forex.ppm | Bin 32462 -> 32462 bytes display_images/News Prof.ppm | Bin 1272784 -> 1270672 bytes display_images/Stocks Prof.ppm | Bin 27278 -> 27854 bytes display_images/Stocks.ppm | Bin 41006 -> 41006 bytes log.txt | 13 +++++ server.py | 91 ++++++++++++++++------------- static/app.js | 37 ++++++++++-- stockTicker.py | 51 ++++++++-------- templates/index.html | 27 +++++++-- 24 files changed, 148 insertions(+), 91 deletions(-) diff --git a/csv/crypto_settings.json b/csv/crypto_settings.json index f3deb41..8220eb7 100644 --- a/csv/crypto_settings.json +++ b/csv/crypto_settings.json @@ -1 +1 @@ -{"feature": "Stocks", "speed": "medium", "animation": "down", "percent": false, "point": false, "logos": true, "chart": false, "title": true, "symbols": {"NEO,USD": {"current": 41.17, "24hr_change": -0.8456587230187674}, "BTC,USD": {"current": 58006, "24hr_change": 0.3176129592444612}, "ETH,BTC": {"current": 0.07311235, "24hr_change": 0.7542195107438717}, "ADA,GBP": {"current": 1.4, "24hr_change": 1.2844510982491046}}} \ No newline at end of file +{"feature": "Stocks", "speed": "medium", "animation": "down", "percent": false, "point": false, "logos": true, "chart": false, "title": true, "symbols": {"NEO,USD": {"current": 40.18, "24hr_change": -5.751214034292039}, "BTC,USD": {"current": 56312, "24hr_change": -5.868224745675183}, "ETH,BTC": {"current": 0.07319404, "24hr_change": -5.605857292449335}, "ADA,GBP": {"current": 1.33, "24hr_change": -5.444920011868605}}} \ No newline at end of file diff --git a/csv/current_weather.json b/csv/current_weather.json index 86f632a..269e272 100644 --- a/csv/current_weather.json +++ b/csv/current_weather.json @@ -1 +1 @@ -{"feature": "Current Weather", "speed": "medium", "animation": "down", "temp": "celsius", "wind_speed": "miles/sec", "colour": "white", "city_colour": "yellow", "title": true, "locations": {"Beijing": {"main_weather": "Clouds", "description": "overcast clouds", "temp": 3.94, "min_temp": 3.94, "max_temp": 8.81, "feels_like": 3.94, "humidity": 51, "clouds": 100, "wind_speed": 1.24, "wind_direction": 139, "visibility": 10000, "uv": 0, "rain_chance": 0.03}, "London": {"main_weather": "Clouds", "description": "overcast clouds", "temp": 10.09, "min_temp": 8.65, "max_temp": 11.15, "feels_like": 9.32, "humidity": 83, "clouds": 90, "wind_speed": 3.6, "wind_direction": 280, "visibility": 10000, "uv": 0.15, "rain_chance": 0}, "Tokyo": {"main_weather": "Clouds", "description": "few clouds", "temp": 12.97, "min_temp": 12.97, "max_temp": 16.47, "feels_like": 12.2, "humidity": 72, "clouds": 20, "wind_speed": 0.89, "wind_direction": 78, "visibility": 10000, "uv": 0, "rain_chance": 0}, "Moscow": {"main_weather": "Clouds", "description": "overcast clouds", "temp": 1.24, "min_temp": 0.15, "max_temp": 1.24, "feels_like": -4.66, "humidity": 91, "clouds": 100, "wind_speed": 7.86, "wind_direction": 321, "visibility": 10000, "uv": 0, "rain_chance": 0.9}}, "current_weather": true} \ No newline at end of file +{"feature": "Current Weather", "speed": "medium", "animation": "down", "temp": "celsius", "wind_speed": "miles/sec", "colour": "white", "city_colour": "yellow", "title": true, "locations": {"Beijing": {"main_weather": "Clear", "description": "clear sky", "temp": -7.06, "min_temp": -7.06, "max_temp": 7.02, "feels_like": -10.16, "humidity": 24, "clouds": 0, "wind_speed": 1.69, "wind_direction": 301, "visibility": 10000, "uv": 0, "rain_chance": 0}, "Moscow": {"main_weather": "Clouds", "description": "broken clouds", "temp": -2.92, "min_temp": -3.71, "max_temp": -0.38, "feels_like": -7.99, "humidity": 77, "clouds": 72, "wind_speed": 4.16, "wind_direction": 298, "visibility": 10000, "uv": 0, "rain_chance": 0}, "London": {"main_weather": "Clouds", "description": "overcast clouds", "temp": 5.62, "min_temp": 4.84, "max_temp": 9.55, "feels_like": 5.62, "humidity": 89, "clouds": 100, "wind_speed": 0.45, "wind_direction": 58, "visibility": 10000, "uv": 0, "rain_chance": 0}, "Tokyo": {"main_weather": "Clouds", "description": "broken clouds", "temp": 13.22, "min_temp": 12.06, "max_temp": 15.34, "feels_like": 12.06, "humidity": 56, "clouds": 75, "wind_speed": 3.13, "wind_direction": 326, "visibility": 10000, "uv": 0, "rain_chance": 0}}, "current_weather": true} \ No newline at end of file diff --git a/csv/daily_weather.json b/csv/daily_weather.json index 30342c1..7ad3dc7 100644 --- a/csv/daily_weather.json +++ b/csv/daily_weather.json @@ -1 +1 @@ -{"feature": "Current Weather", "speed": "medium", "animation": "continuous", "temp": "celsius", "wind_speed": "miles/sec", "colour": "white", "city_colour": "yellow", "title": true, "locations": {"Beijing": [{"main_weather": "Clouds", "description": "overcast clouds", "min_temp": 3.94, "max_temp": 8.81}, {"main_weather": "Rain", "description": "light rain", "min_temp": 2.45, "max_temp": 7.54}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 0.17, "max_temp": 3.41}, {"main_weather": "Clear", "description": "clear sky", "min_temp": -0.49, "max_temp": 7.39}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 1.3, "max_temp": 7.49}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 3.47, "max_temp": 10.49}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 3.41, "max_temp": 9.49}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 1.39, "max_temp": 6.74}], "London": [{"main_weather": "Clouds", "description": "overcast clouds", "min_temp": 8.65, "max_temp": 11.15}, {"main_weather": "Clouds", "description": "few clouds", "min_temp": 4.85, "max_temp": 9.55}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 4.65, "max_temp": 9.51}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 5.93, "max_temp": 8.97}, {"main_weather": "Clouds", "description": "overcast clouds", "min_temp": 5.56, "max_temp": 8.24}, {"main_weather": "Clouds", "description": "overcast clouds", "min_temp": 5.06, "max_temp": 8.16}, {"main_weather": "Clouds", "description": "broken clouds", "min_temp": 2.55, "max_temp": 5.05}, {"main_weather": "Rain", "description": "light rain", "min_temp": 2.76, "max_temp": 6.97}], "Tokyo": [{"main_weather": "Rain", "description": "light rain", "min_temp": 12.97, "max_temp": 16.47}, {"main_weather": "Rain", "description": "moderate rain", "min_temp": 14.97, "max_temp": 19.03}, {"main_weather": "Rain", "description": "light rain", "min_temp": 13.66, "max_temp": 15.7}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 10.62, "max_temp": 14.74}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 9.8, "max_temp": 14.25}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 10.77, "max_temp": 15.55}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 11.35, "max_temp": 17.33}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 10.32, "max_temp": 13.98}], "Moscow": [{"main_weather": "Snow", "description": "rain and snow", "min_temp": 0.15, "max_temp": 1.24}, {"main_weather": "Snow", "description": "snow", "min_temp": 0.23, "max_temp": 1.38}, {"main_weather": "Snow", "description": "light snow", "min_temp": -5.68, "max_temp": 0.51}, {"main_weather": "Clouds", "description": "few clouds", "min_temp": -6.8, "max_temp": -4.63}, {"main_weather": "Snow", "description": "light snow", "min_temp": -6.12, "max_temp": 0.48}, {"main_weather": "Snow", "description": "light snow", "min_temp": 0.48, "max_temp": 2.15}, {"main_weather": "Snow", "description": "light snow", "min_temp": -1.78, "max_temp": 2.11}, {"main_weather": "Snow", "description": "light snow", "min_temp": -5.05, "max_temp": -3.1}]}, "current_weather": true} \ No newline at end of file +{"feature": "Current Weather", "speed": "medium", "animation": "continuous", "temp": "celsius", "wind_speed": "miles/sec", "colour": "white", "city_colour": "yellow", "title": true, "locations": {"Beijing": [{"main_weather": "Clear", "description": "clear sky", "min_temp": -7.06, "max_temp": 7.02}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 1.15, "max_temp": 8.89}, {"main_weather": "Clouds", "description": "few clouds", "min_temp": 2.62, "max_temp": 9.18}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 3.78, "max_temp": 10.53}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 3.22, "max_temp": 9.12}, {"main_weather": "Clouds", "description": "overcast clouds", "min_temp": 4.77, "max_temp": 9.55}, {"main_weather": "Rain", "description": "light rain", "min_temp": 2.55, "max_temp": 7.18}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 2, "max_temp": 7.95}], "Moscow": [{"main_weather": "Clouds", "description": "broken clouds", "min_temp": -3.71, "max_temp": -0.38}, {"main_weather": "Clouds", "description": "broken clouds", "min_temp": -6.45, "max_temp": -3.11}, {"main_weather": "Snow", "description": "snow", "min_temp": -5.88, "max_temp": 0.57}, {"main_weather": "Clouds", "description": "overcast clouds", "min_temp": 0.8, "max_temp": 1.59}, {"main_weather": "Clouds", "description": "scattered clouds", "min_temp": -0.24, "max_temp": 1.77}, {"main_weather": "Snow", "description": "light snow", "min_temp": -0.44, "max_temp": 1.89}, {"main_weather": "Snow", "description": "rain and snow", "min_temp": 0.19, "max_temp": 2.4}, {"main_weather": "Rain", "description": "light rain", "min_temp": 0.79, "max_temp": 2.9}], "London": [{"main_weather": "Clear", "description": "clear sky", "min_temp": 4.84, "max_temp": 9.55}, {"main_weather": "Clouds", "description": "broken clouds", "min_temp": 4.53, "max_temp": 9.03}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 4.25, "max_temp": 8.04}, {"main_weather": "Clouds", "description": "broken clouds", "min_temp": 3.91, "max_temp": 6.74}, {"main_weather": "Rain", "description": "light rain", "min_temp": 1.82, "max_temp": 6.47}, {"main_weather": "Snow", "description": "rain and snow", "min_temp": 2.03, "max_temp": 3.64}, {"main_weather": "Rain", "description": "light rain", "min_temp": 2.3, "max_temp": 4.59}, {"main_weather": "Rain", "description": "light rain", "min_temp": 1.9, "max_temp": 8.71}], "Tokyo": [{"main_weather": "Rain", "description": "light rain", "min_temp": 12.06, "max_temp": 15.34}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 10.48, "max_temp": 15.59}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 10.66, "max_temp": 15.5}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 10.38, "max_temp": 14.9}, {"main_weather": "Rain", "description": "light rain", "min_temp": 10.57, "max_temp": 13.45}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 8.53, "max_temp": 13.12}, {"main_weather": "Clear", "description": "clear sky", "min_temp": 8.1, "max_temp": 13.65}, {"main_weather": "Rain", "description": "light rain", "min_temp": 10.92, "max_temp": 17.44}]}, "current_weather": true} \ No newline at end of file diff --git a/csv/display_settings.json b/csv/display_settings.json index 1fe7727..b80146d 100755 --- a/csv/display_settings.json +++ b/csv/display_settings.json @@ -1 +1 @@ -["Stocks", "Crypto"] +["Professional", [["Daily Forecast", "News", "Stocks"], ["Crypto"]]] \ No newline at end of file diff --git a/csv/last_updates.json b/csv/last_updates.json index c60d5b1..807eda5 100644 --- a/csv/last_updates.json +++ b/csv/last_updates.json @@ -1 +1 @@ -{"stocks": "20/11/2021 10:13:08", "crypto": "20/11/2021 10:23:46", "news": "20/11/2021 10:13:16", "weather": "20/11/2021 10:13:13", "forex": "20/11/2021 16:13:20", "sports": "20/11/2021 10:13:17"} \ No newline at end of file +{"stocks": "22/11/2021 14:06:10", "crypto": "22/11/2021 14:04:13", "news": "22/11/2021 14:04:16", "weather": "22/11/2021 14:04:14", "forex": "22/11/2021 20:04:19", "sports": "22/11/2021 14:04:16"} \ No newline at end of file diff --git a/csv/live_games.json b/csv/live_games.json index b5bd2f7..e245487 100644 --- a/csv/live_games.json +++ b/csv/live_games.json @@ -1 +1 @@ -{"feature": "Sports (Live Games)", "speed": "medium", "animation": "down", "title": true, "leagues": {"NFL": [{"date": "2021-11-19", "time": "21:37", "progess": "Final", "status": null, "home_team": "Atlanta Falcons", "home_score": "0", "away_team": "New England Patriots", "away_score": "25"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Buffalo Bills", "home_score": "0", "away_team": "Indianapolis Colts", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Chicago Bears", "home_score": "0", "away_team": "Baltimore Ravens", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Cleveland Browns", "home_score": "0", "away_team": "Detroit Lions", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Tennessee Titans", "home_score": "0", "away_team": "Houston Texans", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Minnesota Vikings", "home_score": "0", "away_team": "Green Bay Packers", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "New York Jets", "home_score": "0", "away_team": "Miami Dolphins", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Philadelphia Eagles", "home_score": "0", "away_team": "New Orleans Saints", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Carolina Panthers", "home_score": "0", "away_team": "Washington", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Jacksonville Jaguars", "home_score": "0", "away_team": "San Francisco 49ers", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Las Vegas Raiders", "home_score": "0", "away_team": "Cincinnati Bengals", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Kansas City Chiefs", "home_score": "0", "away_team": "Dallas Cowboys", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Seattle Seahawks", "home_score": "0", "away_team": "Arizona Cardinals", "away_score": "0"}, {"date": "2021-11-22", "time": "21:37", "progess": "pre", "status": null, "home_team": "Los Angeles Chargers", "home_score": "0", "away_team": "Pittsburgh Steelers", "away_score": "0"}, {"date": "2021-11-23", "time": "21:37", "progess": "pre", "status": null, "home_team": "Tampa Bay Buccaneers", "home_score": "0", "away_team": "New York Giants", "away_score": "0"}], "NBA": [{"date": "2021-11-19", "time": "21:37", "progess": "Final", "status": null, "home_team": "Atlanta Falcons", "home_score": "0", "away_team": "New England Patriots", "away_score": "25"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Buffalo Bills", "home_score": "0", "away_team": "Indianapolis Colts", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Chicago Bears", "home_score": "0", "away_team": "Baltimore Ravens", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Cleveland Browns", "home_score": "0", "away_team": "Detroit Lions", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Tennessee Titans", "home_score": "0", "away_team": "Houston Texans", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Minnesota Vikings", "home_score": "0", "away_team": "Green Bay Packers", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "New York Jets", "home_score": "0", "away_team": "Miami Dolphins", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Philadelphia Eagles", "home_score": "0", "away_team": "New Orleans Saints", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Carolina Panthers", "home_score": "0", "away_team": "Washington", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Jacksonville Jaguars", "home_score": "0", "away_team": "San Francisco 49ers", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Las Vegas Raiders", "home_score": "0", "away_team": "Cincinnati Bengals", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Kansas City Chiefs", "home_score": "0", "away_team": "Dallas Cowboys", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Seattle Seahawks", "home_score": "0", "away_team": "Arizona Cardinals", "away_score": "0"}, {"date": "2021-11-22", "time": "21:37", "progess": "pre", "status": null, "home_team": "Los Angeles Chargers", "home_score": "0", "away_team": "Pittsburgh Steelers", "away_score": "0"}, {"date": "2021-11-23", "time": "21:37", "progess": "pre", "status": null, "home_team": "Tampa Bay Buccaneers", "home_score": "0", "away_team": "New York Giants", "away_score": "0"}], "Premier League": [{"date": "2021-11-19", "time": "21:37", "progess": "Final", "status": null, "home_team": "Atlanta Falcons", "home_score": "0", "away_team": "New England Patriots", "away_score": "25"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Buffalo Bills", "home_score": "0", "away_team": "Indianapolis Colts", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Chicago Bears", "home_score": "0", "away_team": "Baltimore Ravens", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Cleveland Browns", "home_score": "0", "away_team": "Detroit Lions", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Tennessee Titans", "home_score": "0", "away_team": "Houston Texans", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Minnesota Vikings", "home_score": "0", "away_team": "Green Bay Packers", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "New York Jets", "home_score": "0", "away_team": "Miami Dolphins", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Philadelphia Eagles", "home_score": "0", "away_team": "New Orleans Saints", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Carolina Panthers", "home_score": "0", "away_team": "Washington", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Jacksonville Jaguars", "home_score": "0", "away_team": "San Francisco 49ers", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Las Vegas Raiders", "home_score": "0", "away_team": "Cincinnati Bengals", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Kansas City Chiefs", "home_score": "0", "away_team": "Dallas Cowboys", "away_score": "0"}, {"date": "2021-11-21", "time": "21:37", "progess": "pre", "status": null, "home_team": "Seattle Seahawks", "home_score": "0", "away_team": "Arizona Cardinals", "away_score": "0"}, {"date": "2021-11-22", "time": "21:37", "progess": "pre", "status": null, "home_team": "Los Angeles Chargers", "home_score": "0", "away_team": "Pittsburgh Steelers", "away_score": "0"}, {"date": "2021-11-23", "time": "21:37", "progess": "pre", "status": null, "home_team": "Tampa Bay Buccaneers", "home_score": "0", "away_team": "New York Giants", "away_score": "0"}]}} \ No newline at end of file +{"feature": "Sports (Live Games)", "speed": "medium", "animation": "down", "title": true, "leagues": {"NFL": [{"date": "2021-11-23", "time": "22:00", "progess": "pre", "status": null, "home_team": "Tampa Bay Buccaneers", "home_score": "0", "away_team": "New York Giants", "away_score": "0"}, {"date": "2021-11-19", "time": "22:00", "progess": "Final", "status": null, "home_team": "Atlanta Falcons", "home_score": "0", "away_team": "New England Patriots", "away_score": "25"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Buffalo Bills", "home_score": "15", "away_team": "Indianapolis Colts", "away_score": "41"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Chicago Bears", "home_score": "13", "away_team": "Baltimore Ravens", "away_score": "16"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Cleveland Browns", "home_score": "13", "away_team": "Detroit Lions", "away_score": "10"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Tennessee Titans", "home_score": "13", "away_team": "Houston Texans", "away_score": "22"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Minnesota Vikings", "home_score": "34", "away_team": "Green Bay Packers", "away_score": "31"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "New York Jets", "home_score": "17", "away_team": "Miami Dolphins", "away_score": "24"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Philadelphia Eagles", "home_score": "40", "away_team": "New Orleans Saints", "away_score": "29"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Carolina Panthers", "home_score": "21", "away_team": "Washington", "away_score": "27"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Jacksonville Jaguars", "home_score": "10", "away_team": "San Francisco 49ers", "away_score": "30"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Las Vegas Raiders", "home_score": "13", "away_team": "Cincinnati Bengals", "away_score": "32"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Kansas City Chiefs", "home_score": "19", "away_team": "Dallas Cowboys", "away_score": "9"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Seattle Seahawks", "home_score": "13", "away_team": "Arizona Cardinals", "away_score": "23"}, {"date": "2021-11-22", "time": "22:00", "progess": "Final", "status": null, "home_team": "Los Angeles Chargers", "home_score": "41", "away_team": "Pittsburgh Steelers", "away_score": "37"}], "NBA": [{"date": "2021-11-23", "time": "22:00", "progess": "pre", "status": null, "home_team": "Tampa Bay Buccaneers", "home_score": "0", "away_team": "New York Giants", "away_score": "0"}, {"date": "2021-11-19", "time": "22:00", "progess": "Final", "status": null, "home_team": "Atlanta Falcons", "home_score": "0", "away_team": "New England Patriots", "away_score": "25"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Buffalo Bills", "home_score": "15", "away_team": "Indianapolis Colts", "away_score": "41"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Chicago Bears", "home_score": "13", "away_team": "Baltimore Ravens", "away_score": "16"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Cleveland Browns", "home_score": "13", "away_team": "Detroit Lions", "away_score": "10"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Tennessee Titans", "home_score": "13", "away_team": "Houston Texans", "away_score": "22"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Minnesota Vikings", "home_score": "34", "away_team": "Green Bay Packers", "away_score": "31"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "New York Jets", "home_score": "17", "away_team": "Miami Dolphins", "away_score": "24"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Philadelphia Eagles", "home_score": "40", "away_team": "New Orleans Saints", "away_score": "29"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Carolina Panthers", "home_score": "21", "away_team": "Washington", "away_score": "27"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Jacksonville Jaguars", "home_score": "10", "away_team": "San Francisco 49ers", "away_score": "30"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Las Vegas Raiders", "home_score": "13", "away_team": "Cincinnati Bengals", "away_score": "32"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Kansas City Chiefs", "home_score": "19", "away_team": "Dallas Cowboys", "away_score": "9"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Seattle Seahawks", "home_score": "13", "away_team": "Arizona Cardinals", "away_score": "23"}, {"date": "2021-11-22", "time": "22:00", "progess": "Final", "status": null, "home_team": "Los Angeles Chargers", "home_score": "41", "away_team": "Pittsburgh Steelers", "away_score": "37"}], "Premier League": [{"date": "2021-11-23", "time": "22:00", "progess": "pre", "status": null, "home_team": "Tampa Bay Buccaneers", "home_score": "0", "away_team": "New York Giants", "away_score": "0"}, {"date": "2021-11-19", "time": "22:00", "progess": "Final", "status": null, "home_team": "Atlanta Falcons", "home_score": "0", "away_team": "New England Patriots", "away_score": "25"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Buffalo Bills", "home_score": "15", "away_team": "Indianapolis Colts", "away_score": "41"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Chicago Bears", "home_score": "13", "away_team": "Baltimore Ravens", "away_score": "16"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Cleveland Browns", "home_score": "13", "away_team": "Detroit Lions", "away_score": "10"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Tennessee Titans", "home_score": "13", "away_team": "Houston Texans", "away_score": "22"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Minnesota Vikings", "home_score": "34", "away_team": "Green Bay Packers", "away_score": "31"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "New York Jets", "home_score": "17", "away_team": "Miami Dolphins", "away_score": "24"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Philadelphia Eagles", "home_score": "40", "away_team": "New Orleans Saints", "away_score": "29"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Carolina Panthers", "home_score": "21", "away_team": "Washington", "away_score": "27"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Jacksonville Jaguars", "home_score": "10", "away_team": "San Francisco 49ers", "away_score": "30"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Las Vegas Raiders", "home_score": "13", "away_team": "Cincinnati Bengals", "away_score": "32"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Kansas City Chiefs", "home_score": "19", "away_team": "Dallas Cowboys", "away_score": "9"}, {"date": "2021-11-21", "time": "22:00", "progess": "Final", "status": null, "home_team": "Seattle Seahawks", "home_score": "13", "away_team": "Arizona Cardinals", "away_score": "23"}, {"date": "2021-11-22", "time": "22:00", "progess": "Final", "status": null, "home_team": "Los Angeles Chargers", "home_score": "41", "away_team": "Pittsburgh Steelers", "away_score": "37"}]}} \ No newline at end of file diff --git a/csv/past_games.json b/csv/past_games.json index c21a849..3716a70 100644 --- a/csv/past_games.json +++ b/csv/past_games.json @@ -1 +1 @@ -{"feature": "Sports (Past Games)", "speed": "medium", "animation": "down", "title": true, "leagues": {"NFL": [{"date": "2021-11-19", "time": "01:20:00", "round": "11", "home_team": "Atlanta Falcons", "home_score": "0", "away_team": "New England Patriots", "away_score": "25"}, {"date": "2021-11-16", "time": "01:15:00", "round": "10", "home_team": "San Francisco 49ers", "home_score": "31", "away_team": "Los Angeles Rams", "away_score": "10"}, {"date": "2021-11-15", "time": "01:20:00", "round": "10", "home_team": "Las Vegas Raiders", "home_score": "14", "away_team": "Kansas City Chiefs", "away_score": "41"}, {"date": "2021-11-14", "time": "21:25:00", "round": "10", "home_team": "Green Bay Packers", "home_score": "17", "away_team": "Seattle Seahawks", "away_score": "0"}, {"date": "2021-11-14", "time": "21:25:00", "round": "10", "home_team": "Denver Broncos", "home_score": "13", "away_team": "Philadelphia Eagles", "away_score": "30"}, {"date": "2021-11-14", "time": "21:05:00", "round": "10", "home_team": "Los Angeles Chargers", "home_score": "20", "away_team": "Minnesota Vikings", "away_score": "27"}, {"date": "2021-11-14", "time": "21:05:00", "round": "10", "home_team": "Arizona Cardinals", "home_score": "10", "away_team": "Carolina Panthers", "away_score": "34"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "Washington", "home_score": "29", "away_team": "Tampa Bay Buccaneers", "away_score": "19"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "Tennessee Titans", "home_score": "23", "away_team": "New Orleans Saints", "away_score": "21"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "Pittsburgh Steelers", "home_score": "16", "away_team": "Detroit Lions", "away_score": "16"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "New York Jets", "home_score": "17", "away_team": "Buffalo Bills", "away_score": "45"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "New England Patriots", "home_score": "45", "away_team": "Cleveland Browns", "away_score": "7"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "Indianapolis Colts", "home_score": "23", "away_team": "Jacksonville Jaguars", "away_score": "17"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "Dallas Cowboys", "home_score": "43", "away_team": "Atlanta Falcons", "away_score": "3"}, {"date": "2021-11-12", "time": "01:20:00", "round": "10", "home_team": "Miami Dolphins", "home_score": "22", "away_team": "Baltimore Ravens", "away_score": "10"}], "NBA": [{"date": "2021-11-19", "time": "01:20:00", "round": "11", "home_team": "Atlanta Falcons", "home_score": "0", "away_team": "New England Patriots", "away_score": "25"}, {"date": "2021-11-16", "time": "01:15:00", "round": "10", "home_team": "San Francisco 49ers", "home_score": "31", "away_team": "Los Angeles Rams", "away_score": "10"}, {"date": "2021-11-15", "time": "01:20:00", "round": "10", "home_team": "Las Vegas Raiders", "home_score": "14", "away_team": "Kansas City Chiefs", "away_score": "41"}, {"date": "2021-11-14", "time": "21:25:00", "round": "10", "home_team": "Green Bay Packers", "home_score": "17", "away_team": "Seattle Seahawks", "away_score": "0"}, {"date": "2021-11-14", "time": "21:25:00", "round": "10", "home_team": "Denver Broncos", "home_score": "13", "away_team": "Philadelphia Eagles", "away_score": "30"}, {"date": "2021-11-14", "time": "21:05:00", "round": "10", "home_team": "Los Angeles Chargers", "home_score": "20", "away_team": "Minnesota Vikings", "away_score": "27"}, {"date": "2021-11-14", "time": "21:05:00", "round": "10", "home_team": "Arizona Cardinals", "home_score": "10", "away_team": "Carolina Panthers", "away_score": "34"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "Washington", "home_score": "29", "away_team": "Tampa Bay Buccaneers", "away_score": "19"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "Tennessee Titans", "home_score": "23", "away_team": "New Orleans Saints", "away_score": "21"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "Pittsburgh Steelers", "home_score": "16", "away_team": "Detroit Lions", "away_score": "16"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "New York Jets", "home_score": "17", "away_team": "Buffalo Bills", "away_score": "45"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "New England Patriots", "home_score": "45", "away_team": "Cleveland Browns", "away_score": "7"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "Indianapolis Colts", "home_score": "23", "away_team": "Jacksonville Jaguars", "away_score": "17"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "Dallas Cowboys", "home_score": "43", "away_team": "Atlanta Falcons", "away_score": "3"}, {"date": "2021-11-12", "time": "01:20:00", "round": "10", "home_team": "Miami Dolphins", "home_score": "22", "away_team": "Baltimore Ravens", "away_score": "10"}], "Premier League": [{"date": "2021-11-19", "time": "01:20:00", "round": "11", "home_team": "Atlanta Falcons", "home_score": "0", "away_team": "New England Patriots", "away_score": "25"}, {"date": "2021-11-16", "time": "01:15:00", "round": "10", "home_team": "San Francisco 49ers", "home_score": "31", "away_team": "Los Angeles Rams", "away_score": "10"}, {"date": "2021-11-15", "time": "01:20:00", "round": "10", "home_team": "Las Vegas Raiders", "home_score": "14", "away_team": "Kansas City Chiefs", "away_score": "41"}, {"date": "2021-11-14", "time": "21:25:00", "round": "10", "home_team": "Green Bay Packers", "home_score": "17", "away_team": "Seattle Seahawks", "away_score": "0"}, {"date": "2021-11-14", "time": "21:25:00", "round": "10", "home_team": "Denver Broncos", "home_score": "13", "away_team": "Philadelphia Eagles", "away_score": "30"}, {"date": "2021-11-14", "time": "21:05:00", "round": "10", "home_team": "Los Angeles Chargers", "home_score": "20", "away_team": "Minnesota Vikings", "away_score": "27"}, {"date": "2021-11-14", "time": "21:05:00", "round": "10", "home_team": "Arizona Cardinals", "home_score": "10", "away_team": "Carolina Panthers", "away_score": "34"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "Washington", "home_score": "29", "away_team": "Tampa Bay Buccaneers", "away_score": "19"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "Tennessee Titans", "home_score": "23", "away_team": "New Orleans Saints", "away_score": "21"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "Pittsburgh Steelers", "home_score": "16", "away_team": "Detroit Lions", "away_score": "16"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "New York Jets", "home_score": "17", "away_team": "Buffalo Bills", "away_score": "45"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "New England Patriots", "home_score": "45", "away_team": "Cleveland Browns", "away_score": "7"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "Indianapolis Colts", "home_score": "23", "away_team": "Jacksonville Jaguars", "away_score": "17"}, {"date": "2021-11-14", "time": "18:00:00", "round": "10", "home_team": "Dallas Cowboys", "home_score": "43", "away_team": "Atlanta Falcons", "away_score": "3"}, {"date": "2021-11-12", "time": "01:20:00", "round": "10", "home_team": "Miami Dolphins", "home_score": "22", "away_team": "Baltimore Ravens", "away_score": "10"}]}} \ No newline at end of file +{"feature": "Sports (Past Games)", "speed": "medium", "animation": "down", "title": true, "leagues": {"NFL": [{"date": "2021-11-21", "time": "21:25:00", "round": "11", "home_team": "Seattle Seahawks", "home_score": "13", "away_team": "Arizona Cardinals", "away_score": "23"}, {"date": "2021-11-21", "time": "21:25:00", "round": "11", "home_team": "Kansas City Chiefs", "home_score": "19", "away_team": "Dallas Cowboys", "away_score": "9"}, {"date": "2021-11-21", "time": "21:05:00", "round": "11", "home_team": "Las Vegas Raiders", "home_score": "13", "away_team": "Cincinnati Bengals", "away_score": "32"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Tennessee Titans", "home_score": "13", "away_team": "Houston Texans", "away_score": "22"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Philadelphia Eagles", "home_score": "40", "away_team": "New Orleans Saints", "away_score": "29"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "New York Jets", "home_score": "17", "away_team": "Miami Dolphins", "away_score": "24"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Minnesota Vikings", "home_score": "34", "away_team": "Green Bay Packers", "away_score": "31"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Jacksonville Jaguars", "home_score": "10", "away_team": "San Francisco 49ers", "away_score": "30"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Cleveland Browns", "home_score": "13", "away_team": "Detroit Lions", "away_score": "10"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Chicago Bears", "home_score": "13", "away_team": "Baltimore Ravens", "away_score": "16"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Carolina Panthers", "home_score": "21", "away_team": "Washington", "away_score": "27"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Buffalo Bills", "home_score": "15", "away_team": "Indianapolis Colts", "away_score": "41"}, {"date": "2021-11-19", "time": "01:20:00", "round": "11", "home_team": "Atlanta Falcons", "home_score": "0", "away_team": "New England Patriots", "away_score": "25"}, {"date": "2021-11-16", "time": "01:15:00", "round": "10", "home_team": "San Francisco 49ers", "home_score": "31", "away_team": "Los Angeles Rams", "away_score": "10"}, {"date": "2021-11-15", "time": "01:20:00", "round": "10", "home_team": "Las Vegas Raiders", "home_score": "14", "away_team": "Kansas City Chiefs", "away_score": "41"}], "NBA": [{"date": "2021-11-21", "time": "21:25:00", "round": "11", "home_team": "Seattle Seahawks", "home_score": "13", "away_team": "Arizona Cardinals", "away_score": "23"}, {"date": "2021-11-21", "time": "21:25:00", "round": "11", "home_team": "Kansas City Chiefs", "home_score": "19", "away_team": "Dallas Cowboys", "away_score": "9"}, {"date": "2021-11-21", "time": "21:05:00", "round": "11", "home_team": "Las Vegas Raiders", "home_score": "13", "away_team": "Cincinnati Bengals", "away_score": "32"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Tennessee Titans", "home_score": "13", "away_team": "Houston Texans", "away_score": "22"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Philadelphia Eagles", "home_score": "40", "away_team": "New Orleans Saints", "away_score": "29"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "New York Jets", "home_score": "17", "away_team": "Miami Dolphins", "away_score": "24"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Minnesota Vikings", "home_score": "34", "away_team": "Green Bay Packers", "away_score": "31"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Jacksonville Jaguars", "home_score": "10", "away_team": "San Francisco 49ers", "away_score": "30"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Cleveland Browns", "home_score": "13", "away_team": "Detroit Lions", "away_score": "10"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Chicago Bears", "home_score": "13", "away_team": "Baltimore Ravens", "away_score": "16"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Carolina Panthers", "home_score": "21", "away_team": "Washington", "away_score": "27"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Buffalo Bills", "home_score": "15", "away_team": "Indianapolis Colts", "away_score": "41"}, {"date": "2021-11-19", "time": "01:20:00", "round": "11", "home_team": "Atlanta Falcons", "home_score": "0", "away_team": "New England Patriots", "away_score": "25"}, {"date": "2021-11-16", "time": "01:15:00", "round": "10", "home_team": "San Francisco 49ers", "home_score": "31", "away_team": "Los Angeles Rams", "away_score": "10"}, {"date": "2021-11-15", "time": "01:20:00", "round": "10", "home_team": "Las Vegas Raiders", "home_score": "14", "away_team": "Kansas City Chiefs", "away_score": "41"}], "Premier League": [{"date": "2021-11-21", "time": "21:25:00", "round": "11", "home_team": "Seattle Seahawks", "home_score": "13", "away_team": "Arizona Cardinals", "away_score": "23"}, {"date": "2021-11-21", "time": "21:25:00", "round": "11", "home_team": "Kansas City Chiefs", "home_score": "19", "away_team": "Dallas Cowboys", "away_score": "9"}, {"date": "2021-11-21", "time": "21:05:00", "round": "11", "home_team": "Las Vegas Raiders", "home_score": "13", "away_team": "Cincinnati Bengals", "away_score": "32"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Tennessee Titans", "home_score": "13", "away_team": "Houston Texans", "away_score": "22"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Philadelphia Eagles", "home_score": "40", "away_team": "New Orleans Saints", "away_score": "29"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "New York Jets", "home_score": "17", "away_team": "Miami Dolphins", "away_score": "24"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Minnesota Vikings", "home_score": "34", "away_team": "Green Bay Packers", "away_score": "31"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Jacksonville Jaguars", "home_score": "10", "away_team": "San Francisco 49ers", "away_score": "30"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Cleveland Browns", "home_score": "13", "away_team": "Detroit Lions", "away_score": "10"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Chicago Bears", "home_score": "13", "away_team": "Baltimore Ravens", "away_score": "16"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Carolina Panthers", "home_score": "21", "away_team": "Washington", "away_score": "27"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Buffalo Bills", "home_score": "15", "away_team": "Indianapolis Colts", "away_score": "41"}, {"date": "2021-11-19", "time": "01:20:00", "round": "11", "home_team": "Atlanta Falcons", "home_score": "0", "away_team": "New England Patriots", "away_score": "25"}, {"date": "2021-11-16", "time": "01:15:00", "round": "10", "home_team": "San Francisco 49ers", "home_score": "31", "away_team": "Los Angeles Rams", "away_score": "10"}, {"date": "2021-11-15", "time": "01:20:00", "round": "10", "home_team": "Las Vegas Raiders", "home_score": "14", "away_team": "Kansas City Chiefs", "away_score": "41"}]}} \ No newline at end of file diff --git a/csv/settings.csv b/csv/settings.csv index 2a9a10f..d1d3353 100644 --- a/csv/settings.csv +++ b/csv/settings.csv @@ -1,2 +1,2 @@ speed,brightness -f,9 \ No newline at end of file +f,3 \ No newline at end of file diff --git a/csv/stocks_settings.json b/csv/stocks_settings.json index 689edbd..e4a4168 100644 --- a/csv/stocks_settings.json +++ b/csv/stocks_settings.json @@ -1 +1 @@ -{"feature": "Stocks", "speed": "medium", "animation": "down", "percent": true, "point": true, "logos": false, "chart": false, "title": true, "symbols": {"MSFT": {"current": 343.2, "opening": 342.74}, "GOOG": {"current": 2999.02, "opening": 3020.64}}} \ No newline at end of file +{"feature": "Stocks", "speed": "medium", "animation": "down", "percent": true, "point": true, "logos": false, "chart": false, "title": true, "symbols": {"MSFT": {"current": 343.04, "opening": 344.57}, "GOOG": {"current": 2957, "opening": 3006.525}}} \ No newline at end of file diff --git a/csv/upcoming_games.json b/csv/upcoming_games.json index 35c5a86..c3dfd6d 100644 --- a/csv/upcoming_games.json +++ b/csv/upcoming_games.json @@ -1 +1 @@ -{"feature": "Sports (Upcoming Games)", "speed": "medium", "animation": "down", "title": true, "leagues": {"NFL": [{"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Buffalo Bills", "home_score": "0", "away_team": "Indianapolis Colts", "away_score": "0"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Carolina Panthers", "home_score": "0", "away_team": "Washington", "away_score": "0"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Chicago Bears", "home_score": "0", "away_team": "Baltimore Ravens", "away_score": "0"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Cleveland Browns", "home_score": "0", "away_team": "Detroit Lions", "away_score": "0"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Jacksonville Jaguars", "home_score": "0", "away_team": "San Francisco 49ers", "away_score": "0"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Minnesota Vikings", "home_score": "0", "away_team": "Green Bay Packers", "away_score": "0"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "New York Jets", "home_score": "0", "away_team": "Miami Dolphins", "away_score": "0"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Philadelphia Eagles", "home_score": "0", "away_team": "New Orleans Saints", "away_score": "0"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Tennessee Titans", "home_score": "0", "away_team": "Houston Texans", "away_score": "0"}, {"date": "2021-11-21", "time": "21:05:00", "round": "11", "home_team": "Las Vegas Raiders", "home_score": "0", "away_team": "Cincinnati Bengals", "away_score": "0"}, {"date": "2021-11-21", "time": "21:25:00", "round": "11", "home_team": "Kansas City Chiefs", "home_score": "0", "away_team": "Dallas Cowboys", "away_score": "0"}, {"date": "2021-11-21", "time": "21:25:00", "round": "11", "home_team": "Seattle Seahawks", "home_score": "0", "away_team": "Arizona Cardinals", "away_score": "0"}, {"date": "2021-11-22", "time": "01:20:00", "round": "11", "home_team": "Los Angeles Chargers", "home_score": "0", "away_team": "Pittsburgh Steelers", "away_score": "0"}, {"date": "2021-11-23", "time": "01:15:00", "round": "11", "home_team": "Tampa Bay Buccaneers", "home_score": "0", "away_team": "New York Giants", "away_score": "0"}, {"date": "2021-11-25", "time": "17:30:00", "round": "12", "home_team": "Detroit Lions", "home_score": null, "away_team": "Chicago Bears", "away_score": null}], "NBA": [{"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Buffalo Bills", "home_score": "0", "away_team": "Indianapolis Colts", "away_score": "0"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Carolina Panthers", "home_score": "0", "away_team": "Washington", "away_score": "0"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Chicago Bears", "home_score": "0", "away_team": "Baltimore Ravens", "away_score": "0"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Cleveland Browns", "home_score": "0", "away_team": "Detroit Lions", "away_score": "0"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Jacksonville Jaguars", "home_score": "0", "away_team": "San Francisco 49ers", "away_score": "0"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Minnesota Vikings", "home_score": "0", "away_team": "Green Bay Packers", "away_score": "0"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "New York Jets", "home_score": "0", "away_team": "Miami Dolphins", "away_score": "0"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Philadelphia Eagles", "home_score": "0", "away_team": "New Orleans Saints", "away_score": "0"}, {"date": "2021-11-21", "time": "18:00:00", "round": "11", "home_team": "Tennessee Titans", "home_score": "0", "away_team": "Houston Texans", "away_score": "0"}, {"date": "2021-11-21", "time": "21:05:00", "round": "11", "home_team": "Las Vegas Raiders", "home_score": "0", "away_team": "Cincinnati Bengals", "away_score": "0"}, {"date": "2021-11-21", "time": "21:25:00", "round": "11", "home_team": "Kansas City Chiefs", "home_score": "0", "away_team": "Dallas Cowboys", "away_score": "0"}, {"date": "2021-11-21", "time": "21:25:00", "round": "11", "home_team": "Seattle Seahawks", "home_score": "0", "away_team": "Arizona Cardinals", "away_score": "0"}, {"date": "2021-11-22", "time": "01:20:00", "round": "11", "home_team": "Los Angeles Chargers", "home_score": "0", "away_team": "Pittsburgh Steelers", "away_score": "0"}, {"date": "2021-11-23", "time": "01:15:00", "round": "11", "home_team": "Tampa Bay Buccaneers", "home_score": "0", "away_team": "New York Giants", "away_score": "0"}, {"date": "2021-11-25", "time": "17:30:00", "round": "12", "home_team": "Detroit Lions", "home_score": null, "away_team": "Chicago Bears", "away_score": null}]}} \ No newline at end of file +{"feature": "Sports (Upcoming Games)", "speed": "medium", "animation": "down", "title": true, "leagues": {"NFL": [{"date": "2021-11-22", "time": "01:20:00", "round": "11", "home_team": "Los Angeles Chargers", "home_score": "41", "away_team": "Pittsburgh Steelers", "away_score": "37"}, {"date": "2021-11-23", "time": "01:15:00", "round": "11", "home_team": "Tampa Bay Buccaneers", "home_score": "0", "away_team": "New York Giants", "away_score": "0"}, {"date": "2021-11-25", "time": "17:30:00", "round": "12", "home_team": "Detroit Lions", "home_score": null, "away_team": "Chicago Bears", "away_score": null}, {"date": "2021-11-25", "time": "21:30:00", "round": "12", "home_team": "Dallas Cowboys", "home_score": null, "away_team": "Las Vegas Raiders", "away_score": null}, {"date": "2021-11-26", "time": "01:20:00", "round": "12", "home_team": "New Orleans Saints", "home_score": null, "away_team": "Buffalo Bills", "away_score": null}, {"date": "2021-11-28", "time": "18:00:00", "round": "12", "home_team": "Cincinnati Bengals", "home_score": null, "away_team": "Pittsburgh Steelers", "away_score": null}, {"date": "2021-11-28", "time": "18:00:00", "round": "12", "home_team": "Houston Texans", "home_score": null, "away_team": "New York Jets", "away_score": null}, {"date": "2021-11-28", "time": "18:00:00", "round": "12", "home_team": "Indianapolis Colts", "home_score": null, "away_team": "Tampa Bay Buccaneers", "away_score": null}, {"date": "2021-11-28", "time": "18:00:00", "round": "12", "home_team": "Jacksonville Jaguars", "home_score": null, "away_team": "Atlanta Falcons", "away_score": null}, {"date": "2021-11-28", "time": "18:00:00", "round": "12", "home_team": "Miami Dolphins", "home_score": null, "away_team": "Carolina Panthers", "away_score": null}, {"date": "2021-11-28", "time": "18:00:00", "round": "12", "home_team": "New England Patriots", "home_score": null, "away_team": "Tennessee Titans", "away_score": null}, {"date": "2021-11-28", "time": "18:00:00", "round": "12", "home_team": "New York Giants", "home_score": null, "away_team": "Philadelphia Eagles", "away_score": null}, {"date": "2021-11-28", "time": "21:05:00", "round": "12", "home_team": "Denver Broncos", "home_score": null, "away_team": "Los Angeles Chargers", "away_score": null}, {"date": "2021-11-28", "time": "21:25:00", "round": "12", "home_team": "Green Bay Packers", "home_score": null, "away_team": "Los Angeles Rams", "away_score": null}, {"date": "2021-11-28", "time": "21:25:00", "round": "12", "home_team": "San Francisco 49ers", "home_score": null, "away_team": "Minnesota Vikings", "away_score": null}], "NBA": [{"date": "2021-11-22", "time": "01:20:00", "round": "11", "home_team": "Los Angeles Chargers", "home_score": "41", "away_team": "Pittsburgh Steelers", "away_score": "37"}, {"date": "2021-11-23", "time": "01:15:00", "round": "11", "home_team": "Tampa Bay Buccaneers", "home_score": "0", "away_team": "New York Giants", "away_score": "0"}, {"date": "2021-11-25", "time": "17:30:00", "round": "12", "home_team": "Detroit Lions", "home_score": null, "away_team": "Chicago Bears", "away_score": null}, {"date": "2021-11-25", "time": "21:30:00", "round": "12", "home_team": "Dallas Cowboys", "home_score": null, "away_team": "Las Vegas Raiders", "away_score": null}, {"date": "2021-11-26", "time": "01:20:00", "round": "12", "home_team": "New Orleans Saints", "home_score": null, "away_team": "Buffalo Bills", "away_score": null}, {"date": "2021-11-28", "time": "18:00:00", "round": "12", "home_team": "Cincinnati Bengals", "home_score": null, "away_team": "Pittsburgh Steelers", "away_score": null}, {"date": "2021-11-28", "time": "18:00:00", "round": "12", "home_team": "Houston Texans", "home_score": null, "away_team": "New York Jets", "away_score": null}, {"date": "2021-11-28", "time": "18:00:00", "round": "12", "home_team": "Indianapolis Colts", "home_score": null, "away_team": "Tampa Bay Buccaneers", "away_score": null}, {"date": "2021-11-28", "time": "18:00:00", "round": "12", "home_team": "Jacksonville Jaguars", "home_score": null, "away_team": "Atlanta Falcons", "away_score": null}, {"date": "2021-11-28", "time": "18:00:00", "round": "12", "home_team": "Miami Dolphins", "home_score": null, "away_team": "Carolina Panthers", "away_score": null}, {"date": "2021-11-28", "time": "18:00:00", "round": "12", "home_team": "New England Patriots", "home_score": null, "away_team": "Tennessee Titans", "away_score": null}, {"date": "2021-11-28", "time": "18:00:00", "round": "12", "home_team": "New York Giants", "home_score": null, "away_team": "Philadelphia Eagles", "away_score": null}, {"date": "2021-11-28", "time": "21:05:00", "round": "12", "home_team": "Denver Broncos", "home_score": null, "away_team": "Los Angeles Chargers", "away_score": null}, {"date": "2021-11-28", "time": "21:25:00", "round": "12", "home_team": "Green Bay Packers", "home_score": null, "away_team": "Los Angeles Rams", "away_score": null}, {"date": "2021-11-28", "time": "21:25:00", "round": "12", "home_team": "San Francisco 49ers", "home_score": null, "away_team": "Minnesota Vikings", "away_score": null}]}} \ No newline at end of file diff --git a/display_images/Crypto Prof.ppm b/display_images/Crypto Prof.ppm index 4b65ac368eacb4013ef86199d6559a62ff8fac92..a0d3c4bac66a7ffbc82acb9dd127db133edec1bd 100755 GIT binary patch literal 48014 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 delta 1688 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 delta 5621 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 diff --git a/display_images/Forex Prof.ppm b/display_images/Forex Prof.ppm index 4a0a5cb51cf5a5afab203916a4a0144c124bfac4..07d43f8641e409fc688b3f8a78dae0f2551b0518 100755 GIT binary patch delta 860 zcmah{&5qJw6df|9OtGd=C8;){Efk97ul$G2(2a57Le|DnR>qB?3**WtK7kWX+_*42 z!GwhMB=`id9vAWkx^d%T##4%k3v?DY{rY|P+;i_e=jw zY`Khzh?OH_(opyw;w(HXt5|v(%$mj-H7xD%wYZ^>W{)<4WFJFKnHIm`tE*vH(y^?H z_*FbXL=}!H@%#WoA&HR_(XNxJZJTC6MNpUVq^;t-D(%6&2+Ly`m#{9#)1ppR1)mQ^ z%yL<7<`ce`)oGW_H&h%qWX#JCIlP1q{QtweHf~KV?mi*FYsW)9gsX#t16;N5;wBfk zsY&cw-iKcpl~*y2rE<$ML&0V3IbPRQ46Nub+~gy=!0&idE_2pYxKL?VSNmuBrgV%T zK_L!hY;=WVg`>$>-4>BDboh7p6>JJFVI!i4luJa%OS%@YbJ!E;pnU@MW}Dkino z_Ab@TVp7uZpWKDnI*QSy65iDr9hDB2cg{MZqca$E=?vS2*QNWqPDGaGtaR_Z*Z&L4 X9E+Mz>Zf_}8r*xBt@Fja_qOvJjTRa5 delta 837 zcmZuw&ui0Q7^bZIM)bpP4F;ppq_J(Xrfr(a+UaG#n7j?;Bgt?|S$NL1j>8ZCU=#9{q4-V(jlph&rCc6v2`VroL@7go20IhF&9ToV!5s$xWWFK zEW&KPz;i01>C?2WkidRUMuZXLSq8I;xnhbEEo5eqaOM-Y*d}-;3J7E@3x8a7kY-FCE6qG(HPnegCYt(9%lF4`iBVrvm4_D?YL{Rj40 z(P&=T_79LYB@Zk1K~nPL!RyAky9wptbnm(6`#I-+&t*-xtO;(%BnoZKu$Ei!o=|Oe z0k*2!%s@5D!;k!)iNlzOOlJTrqQlptIzbJkcHQX;z#R#oZ(M^Be}%g%VIXDN?3_Re znH>fBr9s@!$;c*USV;x)^bIvKsfmv4l!7;{aVq_OXWVdtBE8Dq=Zq$RZC^Y4!+75s z#1wUFkRc)^l!6M%WBg8E5i!C7u!dAh6+EX^uX(nK<5$SfF2ap!4M%4*xVMfMx;6ML z8CBJ6;G^Dix<0YOrO3ty$Vb?juh{GeY(hmX9i|;bdDTgUQJyn?%$9yJ3SKfAnU&~# zu-P%eG9DK{{#|j1Kn0N)-;{{^`0u-R%C-fsyuytvL~M3aACg}Rp+LH9Ql&8Xo0nNW z5YV0wakutF%Q8^je6g8MHGe&|)>W=MWjO)GoCwSEqq=eXEp<}8a82p2bXV|-IbZ7+ D$N12g delta 533 zcmYk3%}X0m6vcTKMuv`=Vc=CU7~bF%OBzwCh(aMlbm1axLTd*hAq^@R(n3dqU?4&^ zu4{7sfh)54NR|a#Im=z+traRUlK+} zaZg2kYYrdZ#UTpuhWJhZlgv>#85Mtde^qD38bawaC3;c3`}dp?XYJ^c^2HO~(*wpn&f(}fL$2b!*>q*U9uR1$$!voY5A(3Gu~ z)I>vQsVNa3X28sWCpCT0GzO=%Fs;$BM1#hsNsRx}Y?J;NV^h$izL?;-Gqbxui}Gxk zY|fl>@7;U8^PQhDzdx*ed00v}yBm^?$!0m(=x%Ika>M0%HUha9Sue;lVg!yR$qq0j z-Us?=64K7_K}eOeqPt~zi}Qo`Q>1##{3doq85tm|d}699=ANq3$W+y-b6^Jf@apSA z)U<>Lq_8ML?g&dD*IOQd!N*v)WM8|*dZ-RJMb;bA#@e?7K*20wq~UI zn0qg*3)Ac;VOZ=C_Q*CCJ138l#;NDZuF|YiS3%?CPfX1ijah`f=LmuOZJY-(kFTU) z?cM0XcJh#7sMpG5q}gxi*UCPpNqz>C>^IEuvLR%o@bxhodTOi=QNfwcOz`i-Y8c7^7BM1z$VxhxUq!5)3!3+6cIRcs9aug$M z@ZXBE9p3$pwXh`D$3nRP1lSa!Ot{u1G{dbZZe?gqRT zc!7osq+c7xBF@&+k@Peh0BM2q7>b{amAtk>>ZIU<%n%<|W#2}f6hmX?Nju2<3Ffm- zh=cwIhGkBYs}qnoiosX|GCk`F(Yp)N5@%C{cwzB6AA#(BL895Th$>NPn=7Ri7A*BJ z+q7y@3G!`hutK>ZRakR&ZDCr&kls%R+sBA1{Vk74zaxlXevR&OS(1c7Kh{9zlJyUv z7UaMAT}I+5VS3!|4u#GO{3=F4;_%N(5Q)Pc4}c!S3$bmykUK=&4(c@+SH^+5Wx~?) zuDx`gAiWQ;8!|t#NX8tkWyyt=)`WGryc^*pDqSIC_O@_-0`f6rFZUb9vg*5ukvd=1 z5*)--sK-L?ovK{NG|sxkYK9K;`~}x}Rep=McC#()6(7i#*t4p9*Lvebu3@xRE~?7U z;@5G^obNL5-1Mj_|6nK|i3&@<|FuSDn>eQ7;dVO1H^n9gn{}|+2AiYc|1$|y`Q|?t CI`W$U delta 6693 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 + Traceback (most recent call last): + File "stockTicker.py", line 2480, in + stock_ticker.process_msg(msg) + File "stockTicker.py", line 2439, in process_msg + self.scrollProfessionalAnimated(userSettings[1]) + File "stockTicker.py", line 452, in scrollProfessionalAnimated + image1 = self.openImage('./display_images/' + top[i1 % len(top)] +' Prof.ppm') + File "stockTicker.py", line 87, 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: './display_images/Daily Forecast Prof.ppm' diff --git a/server.py b/server.py index 0c205dd..80951f9 100644 --- a/server.py +++ b/server.py @@ -56,34 +56,45 @@ def process_file(path, filename): app = Flask(__name__) @app.route("/", methods=['GET', 'POST']) def index(): - global command - all_features = ['Current Weather','Daily Forecast','News', 'Sports (Upcoming Games)','Sports (Past Games)','Sports (Live Games)', + global command + all_features = ['Current Weather','Daily Forecast','News', 'Sports (Upcoming Games)','Sports (Past Games)','Sports (Live Games)', 'Sports (Team Stats)','Custom Images', 'Custom GIFs', 'Custom Messages', 'Stocks', 'Crypto', 'Forex'] - - currently_displaying = json.load(open('csv/display_settings.json', 'r')) - not_displaying = [f for f in all_features if f not in currently_displaying] - - now = datetime.datetime.now() - timeString = now.strftime("%Y-%m-%d %H:%M") - logos_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'logos') - LogoList = os.listdir(logos_path) - - stocks_settings = json.load(open('csv/stocks_settings.json', 'r')) - crypto_settings = json.load(open('csv/crypto_settings.json', 'r')) - forex_settings = json.load(open('csv/forex_settings.json', 'r')) - current_weather= json.load(open('csv/current_weather.json', 'r')) - daily_weather = json.load(open('csv/daily_weather.json', 'r')) - news_settings = json.load(open('csv/news_settings.json', 'r')) - upcoming_games = json.load(open('csv/upcoming_games.json', 'r')) - live_games = json.load(open('csv/live_games.json', 'r')) - past_games = json.load(open('csv/past_games.json', 'r')) - team_stats = json.load(open('csv/league_tables.json', 'r')) - image_settings = json.load(open('csv/image_settings.json', 'r')) - GIF_settings = json.load(open('csv/GIF_settings.json', 'r')) - message_settings = json.load(open('csv/message_settings.json', 'r')) - - - templateData = { + + global professional + + feature_settings = json.load(open('csv/display_settings.json', 'r')) + + if not professional: + currently_displaying = json.load(open('csv/display_settings.json', 'r'))[1] + not_displaying = [f for f in all_features if f not in currently_displaying] + + elif professional: + currently_displaying = json.load(open('csv/display_settings.json', 'r'))[1] + not_displaying = [f for f in all_features if f not in currently_displaying[0] and f not in currently_displaying[1]] + + + + now = datetime.datetime.now() + timeString = now.strftime("%Y-%m-%d %H:%M") + logos_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'logos') + LogoList = os.listdir(logos_path) + + stocks_settings = json.load(open('csv/stocks_settings.json', 'r')) + crypto_settings = json.load(open('csv/crypto_settings.json', 'r')) + forex_settings = json.load(open('csv/forex_settings.json', 'r')) + current_weather= json.load(open('csv/current_weather.json', 'r')) + daily_weather = json.load(open('csv/daily_weather.json', 'r')) + news_settings = json.load(open('csv/news_settings.json', 'r')) + upcoming_games = json.load(open('csv/upcoming_games.json', 'r')) + live_games = json.load(open('csv/live_games.json', 'r')) + past_games = json.load(open('csv/past_games.json', 'r')) + team_stats = json.load(open('csv/league_tables.json', 'r')) + image_settings = json.load(open('csv/image_settings.json', 'r')) + GIF_settings = json.load(open('csv/GIF_settings.json', 'r')) + message_settings = json.load(open('csv/message_settings.json', 'r')) + + + templateData = { 'currently_displaying': currently_displaying, 'not_displaying': not_displaying, 'stocks_settings': stocks_settings, @@ -98,9 +109,10 @@ def index(): 'team_stats': team_stats, 'image_settings':image_settings, 'GIF_settings':GIF_settings, - 'message_settings':message_settings + 'message_settings':message_settings, + 'professional':professional } - return render_template('index.html', **templateData) + return render_template('index.html', **templateData) @@ -110,6 +122,7 @@ def start(): global displaying_screensaver global ticker global api_caller + global professional if displaying_screensaver: screensaver_p.close() api_caller = pexpect.spawn("sudo -E python3 api_caller.py") @@ -117,7 +130,7 @@ def start(): displaying_screensaver = False - print(professional) + data = str(request.data) all_settings = ['Stocks', 'Crypto', 'Forex', 'Current Weather', 'Daily Forecast', 'News', 'Sports (Upcoming Games)', 'Sports (Past Games)', @@ -126,21 +139,15 @@ def start(): if professional: all_settings = ['Stocks', 'Crypto', 'Forex', 'Current Weather', 'News'] - + print(professional) positions = [] display_settings = [] + data = str(request.data.decode('utf-8')) - for setting in all_settings: - pos = data.find(setting) - if pos != -1: - if professional: - setting += ' Prof' - display_settings.append(setting) - positions.append(pos) - - # sort settings by display - inds = np.argsort(positions) - display_settings = np.array(display_settings)[inds] + input_settings = json.loads(data) + + s = "Professional" if professional else "Standard" + display_settings = [s] + [input_settings] with open('csv/display_settings.json', 'w+') as f: json.dump(list(display_settings), f) diff --git a/static/app.js b/static/app.js index 053aa67..3d1b8a9 100644 --- a/static/app.js +++ b/static/app.js @@ -794,11 +794,38 @@ allFeaturesTextAddBtn.map((value, index) => { var startButton = document.getElementById("start-btn"); // start the display startButton.addEventListener("click", () => { - var HTML = document.getElementById("display-format").innerHTML; - fetch("/start", { - method: "PUT", - body: JSON.stringify(HTML), - }); + + let opt = getSelected(displayFormats); + + if (opt.includes("Standard")) { + var list_el = document.getElementById("display-format"); + + let features = getListItems(list_el); + fetch("/start", { + method: "PUT", + body: JSON.stringify(features), + }); + } else if (opt.includes("Professional")) { + + var top_list_el = document.getElementById("display-format"); + + let top_features = getListItems(top_list_el); + + + var bot_list_el = document.getElementById("display-format-2"); + + let bot_features = getListItems(bot_list_el); + + + let features = [top_features, bot_features]; + + + fetch("/start", { + method: "PUT", + body: JSON.stringify(features), + }); + + } }); var brightnessButton = document.getElementById("brightness-btn"); diff --git a/stockTicker.py b/stockTicker.py index 35b0855..8e1359f 100644 --- a/stockTicker.py +++ b/stockTicker.py @@ -45,17 +45,11 @@ class StockTicker(): self.blank = Image.new('RGB', (10, 32)) self.running = True - settings = open('csv/settings.csv') line = settings.readlines()[1] - - self.brightness = (float(line[2])+1)*10 - - - # Configuration for the matrix options = RGBMatrixOptions() options.rows = 32 @@ -440,32 +434,35 @@ class StockTicker(): # scrolls trhough all functions with animation. Updates functions and remakes images when each function not being dispplayed + top = options[0] + bottom = options[1] + - self.updateMultiple(options[0:2]) + self.updateMultiple([top[0], bottom[0]]) kill = False i1 = 0 # keep track of which image we are displaying - i2 = 1 # keep track of which image we are displaying + i2 = 0 # keep track of which image we are displaying self.double_buffer = self.matrix.CreateFrameCanvas() - update_process = Process(target = self.updateMultiple, args = ([options[(max(i1,i2)+1) % len(options)]],)) + update_process = Process(target = self.updateMultiple, args = ([top[(i1+1) % len(top)]+ ' Prof', bottom[(i2+1) % len(bottom)]+ ' Prof' ],)) update_process.start() - image1 = self.openImage('./display_images/' + options[i1 % len(options)] +'.ppm') + image1 = self.openImage('./display_images/' + top[i1 % len(top)] +' Prof.ppm') image1 = image1.convert('RGB') - print(options[i2 % len(options)]) - image2 = self.openImage('./display_images/' + options[i2 % len(options)] +'.ppm') + + image2 = self.openImage('./display_images/' + bottom[i2 % len(bottom)] +' Prof.ppm') image2 = image2.convert('RGB') - settings1 = json.load(open(self.JSONs[options[0]])) + settings1 = json.load(open(self.JSONs[top[i1 % len(top)]])) delay_t1 = self.set_delay(settings1['speed']) animation1 = settings1['animation'].lower() - settings2 = json.load(open(self.JSONs[options[1]])) + settings2 = json.load(open(self.JSONs[bottom[i2 % len(bottom)] ])) delay_t2 = self.set_delay(settings2['speed']) animation2 = settings2['animation'].lower() @@ -491,15 +488,13 @@ class StockTicker(): img_width2, img_height2 = image2.size kill = False - delay_t1 = 0.02 - delay_t2 = 0.025 update_t1 = time.time() update_t2 = time.time() while True: if offset_x1 < -(img_width1+1): - i1 = max(i1, i2) + 1 - settings1 = json.load(open(self.JSONs[options[i1 % len(options)]])) + i1 += 1 + settings1 = json.load(open(self.JSONs[top[i1 % len(top)]])) delay_t1 = self.set_delay(settings1['speed']) animation1 = settings1['animation'].lower() @@ -512,15 +507,15 @@ class StockTicker(): offset_x1 = 0 update_process.join() - update_process = Process(target = self.updateMultiple, args = ([options[i1 % len(options)]],)) + update_process = Process(target = self.updateMultiple, args = ([top[i1 % len(top)]+ ' Prof'],)) update_process.start() - image1 = self.openImage('./display_images/' + options[i1 % len(options)] +'.ppm') + image1 = self.openImage('./display_images/' + top[i1 % len(top)] +' Prof.ppm') image1 = image1.convert('RGB') img_width1, img_height1 = image1.size if offset_x2 < -(img_width2+1): - i2 = max(i1, i2) + 1 - settings2 = json.load(open(self.JSONs[options[(i2) % len(options)]])) + i2 += 1 + settings2 = json.load(open(self.JSONs[bottom[(i2) % len(bottom)]])) delay_t2 = self.set_delay(settings2['speed']) animation2 = settings2['animation'].lower() @@ -533,9 +528,9 @@ class StockTicker(): update_process.join() - update_process = Process(target = self.updateMultiple, args = ([options[i2 % len(options)]],)) + update_process = Process(target = self.updateMultiple, args = ([bottom[i2 % len(bottom)]+ ' Prof'],)) update_process.start() - image2 = self.openImage('./display_images/' + options[i2 % len(options)] +'.ppm') + image2 = self.openImage('./display_images/' + bottom[i2 % len(bottom)] +' Prof.ppm') image2 = image2.convert('RGB') img_width2, img_height2 = image2.size @@ -2440,10 +2435,10 @@ class StockTicker(): #userSettings = ['crypto', 'stocks'] # these wil be read from csv, just for demo #userSettings = [ 'display_image', 'news'] # these wil be read from csv, just for demo userSettings = json.load(open('csv/display_settings.json')) - if len(userSettings)>0 and 'Prof' in userSettings[0] : #if professional display - self.scrollProfessionalAnimated(userSettings) - elif len(userSettings)>0: - self.scrollFunctionsAnimated(userSettings, animation = 'down') + if len(userSettings[1][0])>0 and len(userSettings[1][1])>0 and 'Professional'==userSettings[0] : #if professional display + self.scrollProfessionalAnimated(userSettings[1]) + elif len(userSettings[1])>0 and 'Standard'==userSettings[0]: + self.scrollFunctionsAnimated(userSettings[1], animation = 'down') elif msg == 'b': userSettings = json.load(open('csv/display_settings.json')) diff --git a/templates/index.html b/templates/index.html index 2c792d8..f52e01b 100644 --- a/templates/index.html +++ b/templates/index.html @@ -272,9 +272,20 @@ id="display-format" class="display-features-list text-dark" > - {% for f in currently_displaying %} -

  • {{f}}
  • - {% endfor%} + + {%if not professional%} + {% for f in currently_displaying %} +
  • {{f}}
  • + {% endfor%} + {%endif%} + + {%if professional%} + {% for f in currently_displaying[0] %} +
  • {{f}}
  • + {% endfor%} + {%endif%} + + @@ -347,6 +358,12 @@
      {{f}} + {% endfor%} + {%endif%} + >
    @@ -492,9 +509,7 @@ type="checkbox" value="" id="flexCheckChecked" - {% - if - stocks_settings.percent%} + {%if stocks_settings.percent%} checked {%endif%} />