first commit
This commit is contained in:
93
spotify.py
Normal file
93
spotify.py
Normal file
@@ -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)
|
||||||
Reference in New Issue
Block a user