commit 7425b2c84ed4359fbcc7608c54958c71c36e5471 Author: rintyuu Date: Thu Jul 11 14:38:22 2024 -0700 upload main.py, .env files reqd to run properly (of course) diff --git a/.env b/.env new file mode 100644 index 0000000..bd97fdc --- /dev/null +++ b/.env @@ -0,0 +1,4 @@ +SPOTIPY_CLIENT_ID='' +SPOTIPY_CLIENT_SECRET='' +SPOTIPY_REDIRECT_URI='' +DISCORD_WEBHOOK_URL="" \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..02d3cfb --- /dev/null +++ b/main.py @@ -0,0 +1,68 @@ +import os +import requests +import spotipy +from spotipy.oauth2 import SpotifyOAuth +from dotenv import load_dotenv + +# Load environment variables from .env file +load_dotenv() + +# Set up Spotipy with authentication +scope = "user-read-currently-playing user-read-playback-state" +sp = spotipy.Spotify(auth_manager=SpotifyOAuth( + client_id=os.getenv('SPOTIPY_CLIENT_ID'), + client_secret=os.getenv('SPOTIPY_CLIENT_SECRET'), + redirect_uri=os.getenv('SPOTIPY_REDIRECT_URI'), + scope=scope +)) + +# Get the currently playing track information +response = sp.current_playback() + +# Discord webhook URL +discord_webhook_url = os.getenv('DISCORD_WEBHOOK_URL') + +# Check if a track is currently playing +if response is not None and response.get('is_playing', False): + track = response['item'] + track_name = track['name'] + album_name = track['album']['name'] + artists = ', '.join([artist['name'] for artist in track['artists']]) + album_art_url = track['album']['images'][0]['url'] + track_url = track['external_urls']['spotify'] + + # Initialize playlist_url + playlist_url = None + + # Check if the track is from a context (playlist) + if response.get('context') and response['context'].get('type') == 'playlist': + playlist_uri = response['context']['uri'] + playlist_id = playlist_uri.split(':')[-1] + playlist = sp.playlist(playlist_id) + playlist_name = playlist['name'] + playlist_url = playlist['external_urls']['spotify'] + + # Format the message + description = f"**Artists**\n{artists}\n**Album**\n{album_name}\n\n[Listen on Spotify]({track_url})" + if playlist_name and playlist_url: + description += f" | [{playlist_name}]({playlist_url})" + + message = { + "embeds": [ + { + "title": track_name, + "description": description, + "thumbnail": {"url": album_art_url} + } + ] + } + + # Send the message to the Discord webhook + response = requests.post(discord_webhook_url, json=message) + + if response.status_code == 204: + print("Message sent to Discord successfully.") + else: + print(f"Failed to send message to Discord. Status code: {response.status_code}") +else: + print("No track is currently playing.")