hackerbots-live/app.py
Victoria Fierce c04c09d127
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
app: handle weird json responses
2023-03-21 07:22:58 +01:00

60 lines
1.5 KiB
Python

from flask import Flask, render_template
from flask_json import FlaskJSON, as_json
import requests
from flask_socketio import SocketIO
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
json = FlaskJSON(app)
socketio = SocketIO(app, logger=True, log_output=True)
socketio.init_app(app, cors_allowed_origins="*")
CURRENT_LISTENERS = 0
def parse_stats(stats):
if isinstance(stats, list):
for stream in stats:
if stream['listenurl'] == 'http://hackerbots.net:8000/radio.mp3':
return stream
else:
return stats
def heartbeat():
global CURRENT_LISTENERS
backendFetch = requests.get('http://hackerbots.net:8000/status-json.xsl')
stats = parse_stats(backendFetch.json()['icestats']['source'])
print(stats)
return {
'title': stats.get('title', 'Unknown Track'),
'listeners': CURRENT_LISTENERS,
'show_title': 'Flask Test Show'
}
@socketio.on('live.hello')
def on_hello(*args, **kwargs):
print("Hello!!!")
@socketio.on('connect')
def on_new_listener():
global CURRENT_LISTENERS
CURRENT_LISTENERS += 1
socketio.emit('live.heartbeat', heartbeat())
@socketio.on('disconnect')
def on_new_listener():
global CURRENT_LISTENERS
CURRENT_LISTENERS -= 1
socketio.emit('live.heartbeat', heartbeat())
@app.route("/")
def index():
return render_template('index.html')
@app.route("/status.json")
@as_json
def status():
return heartbeat()
if __name__ == '__main__':
socketio.run(app, port=5000, host='0.0.0.0')