import spotipy
from spotipy.oauth2 import SpotifyOAuth
import sys

# Replace these with your Spotify developer app credentials
CLIENT_ID = 'a1b29f64bef643b5ade0944830637510'
CLIENT_SECRET = '1d74196e6fec41f9986917afd57df3da'
REDIRECT_URI = 'https://vinyly.couraud.xyz'
SCOPE = 'user-modify-playback-state user-read-playback-state'


def main():
    auth_manager = SpotifyOAuth(client_id=CLIENT_ID,
                                client_secret=CLIENT_SECRET,
                                redirect_uri=REDIRECT_URI,
                                scope=SCOPE,
                                open_browser=False)

    # Check if token already cached; if not, do manual auth
    token_info = auth_manager.get_cached_token()
    if not token_info:
        print("Please scan the QR code and paste the full redirect URL after authorization:")
        redirect_response = input("Redirect URL: ").strip()
        token_info = auth_manager.get_access_token(code=auth_manager.parse_response_code(redirect_response))
        auth_manager.cache_token(token_info)

    sp = spotipy.Spotify(auth_manager=auth_manager)

    if len(sys.argv) < 2:
        print('Usage: python play_spotify.py "song name"')
        sys.exit(1)

    song_name = ' '.join(sys.argv[1:])

    results = sp.search(q=song_name, type='track', limit=1)
    if not results['tracks']['items']:
        print(f'No track found for: {song_name}')
        sys.exit(1)

    track_uri = results['tracks']['items'][0]['uri']

    devices = sp.devices()
    if not devices['devices']:
        print('No active Spotify devices found. Please start playback on a device.')
        sys.exit(1)

    active_device_id = devices['devices'][0]['id']

    sp.start_playback(device_id=active_device_id, uris=[track_uri])
    print(f'Playing "{song_name}" on device ID: {active_device_id}')

if __name__ == '__main__':
    main()