Merge pull request #1 from scoobybejesus/master

Adds Now Playing w/ websocket and <head> script
This commit is contained in:
Sander 2021-08-12 02:01:43 +02:00 committed by GitHub
commit 628279f78a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 56 additions and 2 deletions

View file

@ -4,6 +4,8 @@
from datetime import datetime
from typing import Tuple, Optional
from quart import request, render_template, abort, jsonify
import asyncio
import json
import settings
from ircradio.factory import app
@ -108,3 +110,24 @@ async def user_library():
by_karma = []
return await render_template("library.html", name=name, by_date=by_date, by_karma=by_karma)
@app.websocket("/ws")
async def np():
last_song = ""
while True:
"""get current song from history"""
history = Radio.history()
val = ""
if not history:
val = f"Nothing is playing?!"
else:
song = history[0]
val = song.title
if val != last_song:
data = json.dumps({"now_playing": val})
await websocket.send(f"{data}")
last_song = val
await asyncio.sleep(5)

View file

@ -30,6 +30,26 @@
<title>IRC!Radio</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script>
var ws = new WebSocket('wss://' + document.domain + ':' + location.port + '/ws');
ws.onmessage = function (event) {
// console.log(event.data);
json = JSON.parse(event.data);
np = json.now_playing;
document.querySelector("#now_playing").innerText = np;
// console.log(np);
return false;
};
ws.onclose = function(event) {
console.log("WebSocket is closed now.");
};
</script>
</head>
<body>

View file

@ -12,6 +12,9 @@
<p>Enjoy the music :)</p>
<hr>
<audio controls src="/{{ settings.icecast2_mount }}">Your browser does not support the<code>audio</code> element.</audio>
<p> </p>
<h5>Now playing: </h5>
<div id="now_playing">Nothing here yet</div>
<hr>
<h4>Command list:</h4>

View file

@ -45,4 +45,12 @@ server {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /ws {
proxy_pass http://{{ host }}:{{ port }}/ws;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
}