Record Spotify API calls via api_call_tracker

Instrument web_server.py to record Spotify API usage by calling core.api_call_tracker.api_call_tracker.record_call before various Spotify SDK calls. Added local imports and record_call invocations around artist, playlist, playlist_tracks_page, current_user_saved_tracks, artists_batch, track and related endpoints across functions such as get_artist_image, get_playlist_tracks, watchlist_artist_config, enrich_similar_artists, get_your_artist_info, get_artist_map_explore, import_album_process and import_singles_process. This enables per-endpoint monitoring and helps with rate-limit tracking while keeping the import local to avoid top-level dependency issues.
pull/295/head
Broque Thomas 1 month ago
parent 0edd8f5c81
commit e1c8620928

@ -10410,6 +10410,8 @@ def get_artist_image(artist_id):
return jsonify({"success": True, "image_url": image_url})
elif spotify_client and spotify_client.is_spotify_authenticated() and source_override != 'itunes':
# Use Spotify directly
from core.api_call_tracker import api_call_tracker
api_call_tracker.record_call('spotify', endpoint='artist')
artist_data = spotify_client.sp.artist(artist_id)
if artist_data and artist_data.get('images'):
image_url = artist_data['images'][0]['url'] if artist_data['images'] else None
@ -31382,6 +31384,8 @@ def get_playlist_tracks(playlist_id):
while True:
if _spotify_rate_limited():
return jsonify({"error": "Spotify is currently rate limited. Please try again later."}), 429
from core.api_call_tracker import api_call_tracker
api_call_tracker.record_call('spotify', endpoint='current_user_saved_tracks')
results = spotify_client.sp.current_user_saved_tracks(limit=limit, offset=offset)
if not results or 'items' not in results:
@ -31424,6 +31428,8 @@ def get_playlist_tracks(playlist_id):
if _spotify_rate_limited():
return jsonify({"error": "Spotify is currently rate limited. Please try again later."}), 429
# Fetch raw playlist data to preserve full album objects
from core.api_call_tracker import api_call_tracker
api_call_tracker.record_call('spotify', endpoint='playlist')
playlist_data = spotify_client.sp.playlist(playlist_id)
# Fetch all tracks with full album data
@ -31480,7 +31486,11 @@ def get_playlist_tracks(playlist_id):
'spotify_track_id': track_data['id'] # Also include as spotify_track_id for consistency
})
results = spotify_client.sp.next(results) if results['next'] else None
if results.get('next'):
api_call_tracker.record_call('spotify', endpoint='playlist_tracks_page')
results = spotify_client.sp.next(results)
else:
results = None
# Convert playlist to dict
playlist_dict = {
@ -39791,6 +39801,8 @@ def watchlist_artist_config(artist_id):
artist_info = None
if not is_itunes_artist and spotify_client and spotify_client.is_authenticated() and spotify_id and not _spotify_rate_limited():
try:
from core.api_call_tracker import api_call_tracker
api_call_tracker.record_call('spotify', endpoint='artist')
artist_data = spotify_client.sp.artist(spotify_id)
if artist_data:
artist_info = {
@ -41094,6 +41106,8 @@ def enrich_similar_artists():
if uncached_ids:
if source == 'spotify' and spotify_client and spotify_client.is_authenticated() and not _spotify_rate_limited():
try:
from core.api_call_tracker import api_call_tracker
api_call_tracker.record_call('spotify', endpoint='artists_batch')
batch_result = spotify_client.sp.artists(uncached_ids[:50])
if batch_result and 'artists' in batch_result:
for sp_artist in batch_result['artists']:
@ -42800,6 +42814,8 @@ def get_your_artist_info(artist_id):
# 3. Try Spotify API directly (genres, image, followers)
try:
if spotify_client and spotify_client.is_spotify_authenticated() and not artist_id.isdigit():
from core.api_call_tracker import api_call_tracker
api_call_tracker.record_call('spotify', endpoint='artist')
artist_data = spotify_client.sp.artist(artist_id)
if artist_data:
result.update({
@ -43785,6 +43801,8 @@ def get_artist_map_explore():
if not n['image_url'] and n.get('spotify_id'):
try:
if spotify_client and spotify_client.is_spotify_authenticated():
from core.api_call_tracker import api_call_tracker
api_call_tracker.record_call('spotify', endpoint='artist')
artist_data = spotify_client.sp.artist(n['spotify_id'])
if artist_data and artist_data.get('images'):
n['image_url'] = artist_data['images'][0]['url']
@ -51567,6 +51585,9 @@ def import_album_process():
artist_genres = album.get('genres', [])
if not artist_genres and artist_id and not _spotify_rate_limited():
try:
from core.api_call_tracker import api_call_tracker
if hasattr(spotify_client, 'sp') and spotify_client.sp:
api_call_tracker.record_call('spotify', endpoint='artist')
sp_artist = spotify_client.sp.artist(artist_id) if hasattr(spotify_client, 'sp') and spotify_client.sp else None
if sp_artist:
artist_genres = sp_artist.get('genres', [])
@ -51747,7 +51768,11 @@ def import_singles_process():
if spotify_override and spotify_override.get('id'):
try:
override_id = spotify_override['id']
sp_track = (spotify_client.sp.track(override_id) if hasattr(spotify_client, 'sp') and spotify_client.sp and not _spotify_rate_limited() else None)
sp_track = None
if hasattr(spotify_client, 'sp') and spotify_client.sp and not _spotify_rate_limited():
from core.api_call_tracker import api_call_tracker
api_call_tracker.record_call('spotify', endpoint='track')
sp_track = spotify_client.sp.track(override_id)
if sp_track:
sp_track_artists = sp_track.get('artists', [])
spotify_track_data = {
@ -51780,7 +51805,11 @@ def import_singles_process():
'genres': []
}
try:
sp_a = (spotify_client.sp.artist(album_artists[0]['id']) if hasattr(spotify_client, 'sp') and spotify_client.sp and not _spotify_rate_limited() else None)
sp_a = None
if hasattr(spotify_client, 'sp') and spotify_client.sp and not _spotify_rate_limited():
from core.api_call_tracker import api_call_tracker
api_call_tracker.record_call('spotify', endpoint='artist')
sp_a = spotify_client.sp.artist(album_artists[0]['id'])
if sp_a:
spotify_artist_data['genres'] = sp_a.get('genres', [])
except Exception:
@ -51824,7 +51853,11 @@ def import_singles_process():
'genres': []
}
try:
sp_a = (spotify_client.sp.artist(sp_artists[0]['id']) if hasattr(spotify_client, 'sp') and spotify_client.sp and not _spotify_rate_limited() else None)
sp_a = None
if hasattr(spotify_client, 'sp') and spotify_client.sp and not _spotify_rate_limited():
from core.api_call_tracker import api_call_tracker
api_call_tracker.record_call('spotify', endpoint='artist')
sp_a = spotify_client.sp.artist(sp_artists[0]['id'])
if sp_a:
spotify_artist_data['genres'] = sp_a.get('genres', [])
except Exception:

Loading…
Cancel
Save