summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPinapelz <yukais@pinapelz.com>2024-06-26 21:25:33 -0700
committerPinapelz <yukais@pinapelz.com>2024-06-26 21:25:50 -0700
commit0984bf95711890d54ed6dc59ed95be30fc112cc2 (patch)
tree0f6c7bb4f461437b441442e6aec18597c70a6fa2
parentdacfd759ff79a4be74500671d7adbec7c2447aa5 (diff)
add channel milestone API endpoint
-rw-r--r--app.py26
1 files changed, 25 insertions, 1 deletions
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/<channel_name>/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/<channel_name>")
def get_channel_information(channel_name):
def find_next_milestone(subscriber_count):
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage