feat: Add spotify to curl route
All checks were successful
Build Docker / BuildImage (push) Successful in 48s

This commit is contained in:
2025-10-26 21:14:55 +11:00
parent 3522389422
commit 9809fe0695
4 changed files with 37 additions and 5 deletions

View File

@@ -48,8 +48,6 @@ def refresh_access_token():
TOKEN_EXPIRES = time.time() + token_info.get("expires_in", 3600) TOKEN_EXPIRES = time.time() + token_info.get("expires_in", 3600)
return ACCESS_TOKEN return ACCESS_TOKEN
@spotify_bp.route("/login") @spotify_bp.route("/login")
def login(): def login():
auth_query = ( auth_query = (
@@ -120,3 +118,31 @@ def currently_playing():
"is_playing": data["is_playing"] "is_playing": data["is_playing"]
} }
return json_response(request, {"spotify":track}, 200) return json_response(request, {"spotify":track}, 200)
def get_spotify_track():
"""Internal function to get current playing track without HTTP context."""
token = refresh_access_token()
if not token:
return json_response(request, {"error": "Failed to refresh access token"}, 500)
headers = {"Authorization": f"Bearer {token}"}
response = requests.get(SPOTIFY_CURRENTLY_PLAYING_URL, headers=headers)
if response.status_code == 204:
return {"error": "Nothing is currently playing."}
elif response.status_code != 200:
return {"error": "Spotify API error", "status": response.status_code}
data = response.json()
if not data.get("item"):
return {"error": "Nothing is currently playing."}
track = {
"song_name": data["item"]["name"],
"artist": ", ".join([artist["name"] for artist in data["item"]["artists"]]),
"album_name": data["item"]["album"]["name"],
"album_art": data["item"]["album"]["images"][0]["url"],
"is_playing": data["is_playing"]
}
return track

View File

@@ -3,6 +3,7 @@ from tools import error_response, getAddress, get_tools_data, getClientIP
import os import os
from functools import lru_cache from functools import lru_cache
import requests import requests
from blueprints.spotify import get_spotify_track
def clean_path(path:str): def clean_path(path:str):
@@ -32,7 +33,9 @@ def get_current_project():
repo_name = git["repo"]["name"] repo_name = git["repo"]["name"]
repo_name = repo_name.lower() repo_name = repo_name.lower()
repo_description = git["repo"]["description"] repo_description = git["repo"]["description"]
return f"{repo_name} - {repo_description}" if not repo_description:
return f"{repo_name}"
return f"{repo_name} - {repo_description}"
@lru_cache(maxsize=1) @lru_cache(maxsize=1)
@@ -81,7 +84,7 @@ def curl_response(request):
# Handle special cases # Handle special cases
if path == "index": if path == "index":
# Get current project # Get current project
return render_template("index.ascii",repo=get_current_project(), ip=getClientIP(request)), 200, {'Content-Type': 'text/plain; charset=utf-8'} return render_template("index.ascii",repo=get_current_project(), ip=getClientIP(request), spotify=get_spotify_track()), 200, {'Content-Type': 'text/plain; charset=utf-8'}
if path == "projects": if path == "projects":
# Get projects # Get projects
return render_template("projects.ascii",header=get_header(),projects=get_projects()), 200, {'Content-Type': 'text/plain; charset=utf-8'} return render_template("projects.ascii",header=get_header(),projects=get_projects()), 200, {'Content-Type': 'text/plain; charset=utf-8'}

View File

@@ -24,6 +24,7 @@ I'm also one of the founders of Handshake AU [https://hns.au],
working to grow Handshake adoption across Australia. working to grow Handshake adoption across Australia.
I'm currently working on: {{ repo | safe }} I'm currently working on: {{ repo | safe }}
{% if not spotify.message %}Currently listening to: {{ spotify.song_name }} by {{ spotify.artist }}{% endif %}
─────────────────────────────────────────────── ───────────────────────────────────────────────
 SKILLS   SKILLS 

View File

@@ -5,3 +5,5 @@
{{projects}} {{projects}}
Look at more projects on my Git: https://git.woodburn.au