diff options
| author | Pinapelz <yukais@pinapelz.com> | 2024-06-26 21:25:33 -0700 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2024-06-26 21:25:33 -0700 |
| commit | dfc4ca04b5f4a13438527a2a6cfdbd7a361288d2 (patch) | |
| tree | 00b7bf7c424857b1dc5098f39d669bc8e7244fba | |
| parent | 4e61fd6eade5adbb07732357ea74e3d02cedf1f9 (diff) | |
add channel milestone API endpoint
| -rw-r--r-- | app.py | 26 |
1 files changed, 25 insertions, 1 deletions
@@ -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): |
