Implemented full api via flask

- moves runner.py to app.py
- implements flask api routing & interface for app.py
- updates the various ui elements to reflect full data load
This commit is contained in:
Ariana Giroux 2022-07-22 17:14:19 -06:00
parent 5632957041
commit 15030d01c8
2 changed files with 55 additions and 12 deletions

53
app.py
View File

@ -4,18 +4,24 @@ import chevron
import requests
import json
from pprint import pprint
from flask import Flask, request
stream_data = json.load(open('resources/data.json', 'r'))
session = requests.Session()
session.auth = ('admin', stream_data['stream_key'])
app = Flask(__name__)
def render(data={}):
return chevron.render(template=open('index.html', 'r'), data=data)
def getStatus():
response = requests.get(stream_data['stream_url'] + '/api/yp')
@app.route("/api/serverstatus", methods=['GET'])
def getServerStatus():
response = session.get(stream_data['stream_url'] + '/api/yp')
response_data = response.json()
return {
return json.dumps({
'name': response_data['name'],
'online': response_data['online'],
'overallMaxViewerCount': response_data['overallMaxViewerCount'],
@ -23,11 +29,46 @@ def getStatus():
'streamTitle': response_data['streamTitle'],
'viewerCount': response_data['viewerCount'],
'description': response_data['description'],
}
'tags': response_data['tags'],
'nsfw': response_data['nsfw'],
})
@app.route("/api/update/streamtitle", methods=['POST'])
def updateStreamTitle():
pass
response = session.post(
stream_data['stream_url'] + '/api/admin/config/streamtitle',
data=json.dumps({'value': request.json()})
)
print(response.json())
return response.status_code
print(render(getStatus()))
@app.route('/api/update/servertags', methods=['POST'])
def updateServerTags(tags_list: list):
response = session.post(
stream_data['stream_url'] + '/api/admin/config/tags',
data=json.dumps({
'value': tags_list
})
)
return response.status_code, json.loads(response.text)
@app.route('/api/update/nsfw', methods=['POST'])
def updateServerNSFW(boolean: bool):
response = session.post(
stream_data['stream_url'] + '/api/admin/config/nsfw',
data=json.dumps({
'value': boolean
})
)
return response.status_code, json.loads(response.text)
@app.route("/")
def index():
return render(json.loads(getServerStatus()))
print(getServerStatus()[1])

View File

@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<title>{{name}}</title>
<title id="streamName">{{name}}</title>
<meta name="author" content="Your Name">
<meta name="description" content="{{description}}">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
@ -15,12 +15,14 @@
<header>
</header>
<main>
<h2 class="stream-title">{{streamTitle}}</h2>
<p>Stream online? <span>{{online}}</span></p>
<h2 id="streamTitle">{{streamTitle}}</h2>
<p>Stream online? <span id="streamOnline">{{online}}</span></p>
<hr>
<p>Current Viewers: <span>{{viewerCount}}</span></p>
<p>Session Max Viewers: <span>{{sessionMaxViewerCount}}</span></p>
<p>Overall Max Viewers: <span>{{overallMaxViewerCount}}</span></p>
<p>Current Viewers: <span id="currentViewers">{{viewerCount}}</span></p>
<p>Session Max Viewers: <span id="sessionMaxViewerCount">{{sessionMaxViewerCount}}</span></p>
<p>Overall Max Viewers: <span id="overallMaxViewerCount">{{overallMaxViewerCount}}</span></p>
<hr>
<p>Current tags: <span id="tags"></span></p>
</main>
<footer>
</footer>