from spotify_shortcuts.shortcut import Shortcut from spotify_shortcuts.config import load_config from desktop_notifier import DesktopNotifierSync from spotify_shortcuts.run import run_shortcut SCOPES = [ "playlist-modify-public", "playlist-modify-private", "user-read-playback-state", ] class SpotifyPlAdd(Shortcut): def execute(self, client, config): if (playback := client.current_playback()) is None: print("No current playback found.") return if (track_uri := playback.get("item", {}).get("uri", None)) is None: print("No track URI found in current playback.") return if (context_uri := playback.get("context", {}).get("uri", None)) is None: print("No context URI found in current playback.") return client.playlist_add_items(context_uri, items=[track_uri]) if config.notifications: track_name = playback.get("item", {}).get("name", "") artists = ", ".join( a.get("name", "") for a in playback.get("item", {}).get("artists", []) ) playlist_name = (client.playlist(context_uri) or {}).get( "name", "" ) dn = DesktopNotifierSync() dn.send( title="Track Added to Playlist", message=f'Track "{track_name}" by "{artists}" has been added to {playlist_name}.', ) def get_help(self) -> str: return "Add the currently playing track to the current playlist." def get_scopes(self) -> list[str]: return SCOPES def main(): run_shortcut(SpotifyPlAdd(), load_config()) if __name__ == "__main__": main()