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:
parent
5632957041
commit
15030d01c8
2 changed files with 55 additions and 12 deletions
53
app.py
53
app.py
|
@ -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])
|
||||
|
|
14
index.html
14
index.html
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue