commit 0431e449185c0eab45d7208998428ec605f62813 Author: David Rice Date: Mon Nov 24 17:48:40 2025 +0000 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..907b308 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +blah diff --git a/spotify.py b/spotify.py new file mode 100644 index 0000000..6cecca1 --- /dev/null +++ b/spotify.py @@ -0,0 +1,93 @@ +import spotipy +from spotipy.oauth2 import SpotifyOAuth +import os + +client_id = "884910ea1cf64450ad87385ac08787b2" +client_secret = "32778c81ccec4d42a159e0ef890a1900" +redirect_uri = "http://127.0.0.1:8888/callback" + +target_device_name = 'raspotify (murphy)' + +# Set your environment variables first, or replace the `os.environ` calls +# with your actual Client ID, Client Secret, and Redirect URI. +scope = "user-read-playback-state,user-modify-playback-state" + +sp = spotipy.Spotify(auth_manager=SpotifyOAuth( + client_id=client_id, + client_secret=client_secret, + redirect_uri=redirect_uri, + scope=scope +)) + +def get_device_id_by_name(sp_obj, device_name): + """ + Finds a device ID by its name from the list of available devices. + + Args: + sp_obj: The Spotipy authenticated object. + device_name (str): The human-readable name of the device. + + Returns: + str: The device ID if found, otherwise None. + """ + try: + devices = sp_obj.devices() + for device in devices['devices']: + if device['name'] == device_name: + return device['id'] + return None + except spotipy.SpotifyException as e: + print(f"Error fetching devices: {e}") + return None + +# Find an active Spotify Connect device. The Spotify app must be open and playing music on the device. +devices = sp.devices() +if not devices['devices']: + print("No active Spotify devices found. Please start playback on a device.") +else: + # Loop through the devices and print their names and IDs + for d in devices['devices']: + print(f"Device Name: {d['name']}, ID: {d['id']}, Type: {d['type']}") + + #device_id = devices['devices'][0]['id'] + #print(f"Controlling device: {devices['devices'][0]['name']}") + + # Define your search query with specific field filters + artist_name = "[spunge]" + track_name = "Jump On Demand" + query = f'artist:"{artist_name}" track:"{track_name}"' + + # Perform the search + results = sp.search(q=query, type='track', limit=1) + + if not results['tracks']['items']: + print("Track not found.") + + else: + track_uri = results['tracks']['items'][0]['uri'] + print(f"Found track: {results['tracks']['items'][0]['name']}") + print(f"Track URI: {track_uri}") + + # Get the device ID using the function + chosen_device_id = get_device_id_by_name(sp, target_device_name) + + if chosen_device_id: + print(f"Playing on device '{target_device_name}' with ID: {chosen_device_id}") + try: + sp.start_playback(device_id=chosen_device_id, uris=[track_uri]) + print("Playback started successfully.") + except spotipy.SpotifyException as e: + print(f"Error starting playback: {e}") + else: + print(f"Device '{target_device_name}' not found. Please check device name and ensure it's active.") + + # Start playback of the track on the active device + #sp.start_playback(device_id=device_id, uris=[track_uri]) + #print(f"Now playing: {results['tracks']['items'][0]['name']}") + + # Example of other playback controls + #print("\nPausing playback...") + #sp.pause_playback(device_id=device_id) + + #print("Resuming playback...") + #sp.start_playback(device_id=device_id)