From fa72feb21b51ab2507192fa9cc76a41a8f144b25 Mon Sep 17 00:00:00 2001 From: Alessandro Maggio Date: Sun, 15 Aug 2021 22:47:33 +0200 Subject: [PATCH] Move javascript part to script.js - Implement orderBy feature --- .../classes/AnalyticsServer.py | 43 +++- assets/charts.html | 238 +++++------------- assets/script.js | 208 +++++++++++++++ 3 files changed, 308 insertions(+), 181 deletions(-) create mode 100644 assets/script.js diff --git a/TwitchChannelPointsMiner/classes/AnalyticsServer.py b/TwitchChannelPointsMiner/classes/AnalyticsServer.py index b6a61f5..cc22055 100644 --- a/TwitchChannelPointsMiner/classes/AnalyticsServer.py +++ b/TwitchChannelPointsMiner/classes/AnalyticsServer.py @@ -21,24 +21,38 @@ def streamers_available(): ] -def read_json(streamer): +def read_json(streamer, return_response=True): path = Settings.analytics_path streamer = streamer if streamer.endswith(".json") else f"{streamer}.json" - return Response( - open(os.path.join(path, streamer)) if streamer in streamers_available() else [], - status=200, - mimetype="application/json", + if return_response is True: + return Response( + open(os.path.join(path, streamer)) + if streamer in streamers_available() + else [], + status=200, + mimetype="application/json", + ) + return ( + json.loads(open(os.path.join(path, streamer)).read()) + if streamer in streamers_available() + else [] ) +def get_challenge_points(streamer): + datas = read_json(streamer, return_response=False) + if datas != {}: + return datas["series"][-1]["y"] + return 0 + + def json_all(): - path = Settings.analytics_path return Response( json.dumps( [ { "name": streamer.strip(".json"), - "data": json.load(open(os.path.join(path, streamer))), + "data": read_json(streamer, return_response=False), } for streamer in streamers_available() ] @@ -52,7 +66,19 @@ def index(refresh=5): return render_template( "charts.html", refresh=(refresh * 60 * 1000), - streamers=",".join(streamers_available()), + ) + + +def streamers(): + return Response( + json.dumps( + [ + {"name": s, "points": get_challenge_points(s)} + for s in sorted(streamers_available()) + ] + ), + status=200, + mimetype="application/json", ) @@ -70,6 +96,7 @@ class AnalyticsServer(Thread): static_folder=os.path.join(Path().absolute(), "assets"), ) self.app.add_url_rule("/", "index", index, defaults={"refresh": refresh}) + self.app.add_url_rule("/streamers", "streamers", streamers) self.app.add_url_rule("/json/", "json", read_json) self.app.add_url_rule("/json_all", "json_all", json_all) diff --git a/assets/charts.html b/assets/charts.html index e3b2cf3..9dc5533 100644 --- a/assets/charts.html +++ b/assets/charts.html @@ -3,14 +3,15 @@ - + Twitch-Channel-Points-Miner-v2 - - + + + - +