diff --git a/playlist/static/android-chrome-192x192.png b/playlist/static/android-chrome-192x192.png new file mode 100644 index 0000000..89b6da7 Binary files /dev/null and b/playlist/static/android-chrome-192x192.png differ diff --git a/playlist/static/android-chrome-512x512.png b/playlist/static/android-chrome-512x512.png new file mode 100644 index 0000000..e8e1247 Binary files /dev/null and b/playlist/static/android-chrome-512x512.png differ diff --git a/playlist/static/apple-touch-icon.png b/playlist/static/apple-touch-icon.png new file mode 100644 index 0000000..d31ecee Binary files /dev/null and b/playlist/static/apple-touch-icon.png differ diff --git a/playlist/static/favicon-16x16.png b/playlist/static/favicon-16x16.png new file mode 100644 index 0000000..df5713b Binary files /dev/null and b/playlist/static/favicon-16x16.png differ diff --git a/playlist/static/favicon-32x32.png b/playlist/static/favicon-32x32.png new file mode 100644 index 0000000..c579ded Binary files /dev/null and b/playlist/static/favicon-32x32.png differ diff --git a/playlist/static/favicon.ico b/playlist/static/favicon.ico new file mode 100644 index 0000000..e1c9e4b Binary files /dev/null and b/playlist/static/favicon.ico differ diff --git a/playlist/static/favicon_io.zip b/playlist/static/favicon_io.zip new file mode 100644 index 0000000..ca2070c Binary files /dev/null and b/playlist/static/favicon_io.zip differ diff --git a/playlist/static/site.webmanifest b/playlist/static/site.webmanifest new file mode 100644 index 0000000..45dc8a2 --- /dev/null +++ b/playlist/static/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/playlist/static/style.css b/playlist/static/style.css index 873e05a..319d2ad 100644 --- a/playlist/static/style.css +++ b/playlist/static/style.css @@ -1,3 +1,7 @@ +body { + background-color: #01817F; +} + .window:not([role="tabpanel"]) { position: fixed; z-index:99; diff --git a/playlist/tasks.py b/playlist/tasks.py index 204ce76..c159e97 100644 --- a/playlist/tasks.py +++ b/playlist/tasks.py @@ -1,46 +1,54 @@ from celery import shared_task from .models import Track +import os import dotenv -import os -import requests - -import time import json -from random import choice +from requests import get, post +from requests.exceptions import ConnectionError dotenv.load_dotenv() -UPDATE_FREQ = 10 # How often to save to database - @shared_task def get_banter(id): + """ + Requests an AI model for some banter. + Currently expects an ollama instance to be running, + but might be possible to use OpenAI API in future. + """ track = Track.objects.get(pk=id) - r = requests.post( - os.getenv('AI_ENDPOINT'), - json={ - 'model': os.getenv('AI_MODEL'), - 'prompt': str(track) - }, - stream=True - ) - r.raise_for_status() - token = 0 + try: + get(os.getenv('AI_ENDPOINT')) + except ConnectionError: + track.banter = "Error" + track.banter_done = True + track.save() + return f"{track}: AI endpoint not available." - for line in r.iter_lines(): - body = json.loads(line) - response_part = body.get('response', '') - token += 1 - track.banter += response_part + try: + r = post( + os.getenv('AI_ENDPOINT'), + json={ + 'model': os.getenv('AI_MODEL'), + 'prompt': str(track) + }, + stream=True + ) + r.raise_for_status() - if 'error' in body: - raise Exception(body['error']) + for line in r.iter_lines(): + body = json.loads(line) + if 'error' in body: + raise Exception(body['error']) + track.banter += body.get('response', '') - if body.get('done', False): - track.banter_done = True - track.save() - return body['context'] - elif token % UPDATE_FREQ == 0: - track.save() + if body.get('done', False): + track.banter_done = True + track.save() + return f"{track}: {body['context']}" + except Exception as e: + track.banter_done = True + track.save() + return f"{track}: {e}" diff --git a/playlist/templates/Base.html b/playlist/templates/Base.html index 8e94d36..c44ab41 100644 --- a/playlist/templates/Base.html +++ b/playlist/templates/Base.html @@ -1,17 +1,10 @@ +{% load static %} - {% load static %} - - - - - - - - + {% include "head.html" %} - -
+ +
{% block window-title %}{% endblock %} @@ -42,14 +35,12 @@
{% block clippy %}{% endblock %} + + + + + + + + +HD Muzak: {{ request.path }} + \ No newline at end of file diff --git a/playlist/utils.py b/playlist/utils.py index 4f36393..f0ef518 100644 --- a/playlist/utils.py +++ b/playlist/utils.py @@ -11,7 +11,7 @@ def from_json(cls, json): def get_unvoted(user): votes = set(Vote.objects.filter(user=user).values_list('track_id', flat=True)) - tracks = set(Track.objects.values_list('pk', flat=True)) + tracks = set(Track.objects.filter(banter_done=True).values_list('pk', flat=True)) seed(user.username) try: random_track = choice(list(tracks - votes))