first commit
This commit is contained in:
53
main.py
Normal file
53
main.py
Normal file
@@ -0,0 +1,53 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user