From 0984bf95711890d54ed6dc59ed95be30fc112cc2 Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Wed, 26 Jun 2024 21:25:33 -0700 Subject: add channel milestone API endpoint --- app.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/app.py b/app.py index a096729..785d5fe 100644 --- a/app.py +++ b/app.py @@ -1,4 +1,4 @@ -from flask import Flask, send_file, jsonify +from flask import Flask, send_file, jsonify, request from flask_cors import CORS from sql.pg_handler import PostgresHandler import fileutil as fs @@ -76,6 +76,30 @@ def api_subscribers_channel_7d(channel_name): seen_dates.add(date_string) return jsonify({"labels": labels[-7:], "datasets": data_points[-7:]}) +@app.route("/api/subscribers//milestones") +def get_channel_milestones(channel_name): + server = create_database_connection() + milestone_multiple = request.args.get("q") + if not milestone_multiple: + milestone_multiple = 10000 + query = """ + SELECT name, subscriber_count, MIN(timestamp) + FROM subscriber_data_historical + WHERE name = %s AND MOD(subscriber_count, %s) = 0 + GROUP BY name, subscriber_count + ORDER BY subscriber_count, MIN(timestamp) + LIMIT 10 + """ + data = server.execute_query(query, (channel_name, milestone_multiple,)) + dates = [] + milestones = [] + for row in data: + date_string = row[2].strftime("%Y-%m-%d") + dates.append(date_string) + milestones.append(row[1]) + return jsonify({"milestones": milestones, "dates": dates}) + + @app.route("/api/channel/") def get_channel_information(channel_name): def find_next_milestone(subscriber_count): -- cgit v1.2.3