From 9700a5dc7f8c1419382436a415e7df8bf9905576 Mon Sep 17 00:00:00 2001 From: Alfie King Date: Mon, 2 Feb 2026 01:24:14 +0000 Subject: [PATCH] music update --- src/routes/dynamic_routes.py | 3 +-- src/routes/lastfm.py | 26 ++++++++++++++++++++++++++ src/wsgi.py | 3 ++- static/js/base.js | 20 ++++++-------------- templates/index.html | 2 +- 5 files changed, 36 insertions(+), 18 deletions(-) create mode 100644 src/routes/lastfm.py diff --git a/src/routes/dynamic_routes.py b/src/routes/dynamic_routes.py index da4dfda..5fbc3eb 100644 --- a/src/routes/dynamic_routes.py +++ b/src/routes/dynamic_routes.py @@ -1,5 +1,5 @@ # Imports -from flask import Blueprint, render_template, request, abort +from flask import Blueprint, render_template, abort from os import getenv as env import logging, os, re @@ -32,7 +32,6 @@ def catch_all(filename): except Exception as e: os_path = os.path.join(bp.template_folder, 'pages', filename)[3:] - print(os_path) if os.path.isdir(os_path): if not filename.endswith('/'): filename += '/' return render_template('bases/directory.html', directory=filename, pages=ListFiles(os_path)) diff --git a/src/routes/lastfm.py b/src/routes/lastfm.py new file mode 100644 index 0000000..7c7710c --- /dev/null +++ b/src/routes/lastfm.py @@ -0,0 +1,26 @@ +from flask import Blueprint, jsonify +from os import getenv as env +import logging, requests + +# Create blueprint +bp = Blueprint( + 'lastfm', + __name__, + template_folder=env('TEMPLATE_FOLDER', default='../templates'), + static_folder=env('STATIC_FOLDER', default='../static') +) + +# Create logger +log = logging.getLogger(__name__) + +# lastfm info +@bp.route('/info') +def lastfm_info(): + url = f"http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user={env('LASTFM_USER')}&api_key={env('LASTFM_API_KEY')}&format=json&limit=1" + response = requests.get(url).json() + data = { + 'artist': response['recenttracks']['track'][0]['artist']['#text'], + 'track': response['recenttracks']['track'][0]['name'], + 'image': response['recenttracks']['track'][0]['image'][3]['#text'] + } + return jsonify(data) \ No newline at end of file diff --git a/src/wsgi.py b/src/wsgi.py index c5c45b4..1e90942 100644 --- a/src/wsgi.py +++ b/src/wsgi.py @@ -8,6 +8,7 @@ import logging import src.routes.error_handlers import src.routes.dynamic_routes +import src.routes.lastfm # Load env load_dotenv() @@ -42,6 +43,7 @@ Session(app) # Load routes app.register_blueprint(src.routes.error_handlers.bp, url_prefix='/error') +app.register_blueprint(src.routes.lastfm.bp, url_prefix='/lastfm') app.register_blueprint(src.routes.dynamic_routes.bp, url_prefix='/') # Generic routes @@ -57,7 +59,6 @@ def favicon(): def robots(): return send_file('../static/content/other/robots.txt') - # Route for sitemap.xml @app.route('/sitemap.xml') def sitemap(): diff --git a/static/js/base.js b/static/js/base.js index b6774d4..35f4e9c 100644 --- a/static/js/base.js +++ b/static/js/base.js @@ -90,29 +90,21 @@ document.addEventListener('keydown', function(event) { } }); -// Spotify API +// Spotify API (now lastfm) function getSpotify() { - fetch('https://api.alfieking.dev/spotify/nowplaying/xz02oolstlvwxqu1pfcua9exz').then(response => { + fetch('/lastfm/info').then(response => { return response.json(); }).then(data => { - if (data.item == null) { - document.getElementById('spotify').style.backgroundImage = "none"; - document.getElementById('spotify-title').innerHTML = "Spotify is not playing anything"; - document.getElementById('spotify-artist').innerHTML = ":("; - document.getElementById('spotify-link').href = "https://open.spotify.com/"; - return; - } - document.getElementById('spotify').style.backgroundImage = "url(" + data.item.album.images[0].url + ")"; - document.getElementById('spotify-title').innerHTML = data.item.name; - document.getElementById('spotify-artist').innerHTML = data.item.artists[0].name; - document.getElementById('spotify-link').href = data.item.external_urls.spotify; + document.getElementById('spotify').style.backgroundImage = "url(" + data.image + ")"; + document.getElementById('spotify-title').innerHTML = data.track; + document.getElementById('spotify-artist').innerHTML = data.artist; }); } if (document.getElementById('spotify')) { getSpotify(); - setInterval(getSpotify, 15000); + setInterval(getSpotify, 60000); } // load buttons diff --git a/templates/index.html b/templates/index.html index 3bb823c..b11d0a3 100644 --- a/templates/index.html +++ b/templates/index.html @@ -37,7 +37,7 @@
- +