import os import sys import json # Change to server directory sys.path.insert(0, '/Volumes/SamMgmt/Containers/SamCloud Music App/server') os.chdir('/Volumes/SamMgmt/Containers/SamCloud Music App/server') # Load environment from dotenv import load_dotenv load_dotenv('/Volumes/SamMgmt/Containers/SamCloud Music App/server/.env') print("Environment loaded:") print(f"SPOTIFY_CLIENT_ID: {os.getenv('SPOTIFY_CLIENT_ID', 'NOT_FOUND')[:10]}...") print(f"SPOTIFY_CLIENT_SECRET: {os.getenv('SPOTIFY_CLIENT_SECRET', 'NOT_FOUND')[:10]}...") # Test direct spotipy import spotipy from spotipy.oauth2 import SpotifyClientCredentials client_id = os.getenv('SPOTIFY_CLIENT_ID') client_secret = os.getenv('SPOTIFY_CLIENT_SECRET') credentials_manager = SpotifyClientCredentials(client_id=client_id, client_secret=client_secret) sp = spotipy.Spotify(client_credentials_manager=credentials_manager) print("\nšŸ” Testing direct Spotify API...") direct_results = sp.search(q='drake', limit=10, type='track') direct_tracks = direct_results['tracks']['items'] print(f"Direct API: {len(direct_tracks)} tracks found") # Check for preview URLs in direct results preview_count = 0 for track in direct_tracks: if track.get('preview_url'): preview_count += 1 print(f" Track with preview: {track['name']} - {track['preview_url']}") print(f"Tracks with preview URLs: {preview_count}/{len(direct_tracks)}") # Now test with our app classes print("\nšŸ” Testing app classes...") from app import Config, SpotifyService config = Config() spotify_service = SpotifyService(config) search_req = {'query': 'drake', 'type': 'track'} app_results = spotify_service.perform_spotify_search(search_req) print(f"App results type: {type(app_results)}") print(f"App results keys: {list(app_results.keys()) if isinstance(app_results, dict) else 'Not dict'}") if isinstance(app_results, dict): for key, value in app_results.items(): print(f"{key}: {len(value) if isinstance(value, list) else value}") if isinstance(value, list) and value: print(f" First {key} item: {value[0] if value else 'None'}") # Check for preview URLs in app results preview_count = 0 for item in value[:5]: # Check first 5 items if item.get('preview_url'): preview_count += 1 print(f" Track with preview: {item['name']} - {item['preview_url']}") print(f" Tracks with preview URLs: {preview_count}/{min(5, len(value))}")