NAME
spotify-cli.pl
- Script to interact with Spotify API in various ways.
SYNOPSIS
perl bin/spotify-cli.pl -i
DESCRIPTION
This script allows you to interact with Spotify API in multiple different ways. Providing you with a convinent way to query Spotify API by either the set of predefined commands or inline requests.
OPTIONS
- -c, --client-id=Spotify App Client ID
-
Your registered Spotify Application Client ID Can be set as environment variable client_id
- -s, --client-secret=Spotify APP Client Secret
-
Your registered Spotify Application Client Secret Can be set as environment variable client_secret
- -t, --access-token=Spotify Client Access Token
-
Optional, if passed there will be no need to obtain token and requests can be directly called using it. Can be set as environment variable access_token
- -i, --interactive
-
If exists it will run this script in interactive mode, where it will continuously wait for a command to perform. However manual handling for Authentication process.
- -w, --web-server
-
If exists it will make the script run in interactive mode, with an HTTP Webserver running in background listening to port 80 on localhost. So it can process Spotify
callback
GET requests automatically. and can be extended to receive commands. Note: define http://localhost/callback as a Redirect URI in your Spotify App settings. Also if running in Docker, then run container with -p 127.0.0.1:80:80/tcp option. - -l debug, --log-level=info
-
Log level used. with default being Info.
COMMANDS
Available Commands:
CMD => p uri(optional) device_id(optional)
Play - Player -> start_a_users_playback
CMD => pu
Pause - Player -> pause_a_users_playback
CMD => n
Next - Player -> skip_users_playback_to_next_track
CMD => b
Previous - Player -> skip_users_playback_to_previous_track
CMD => ff seconds
FastForward the current playing track with the passed.
CMD => set_s second
Set the current playing track position to the passed second.
CMD => sh (true)|false
Toggle Shuffle for current Playback context.
CMD => c
Current Track - Player -> get_information_about_the_users_current_playback
CMD => d
Available Devices - Player -> get_a_users_available_devices
CMD => d_select name|ID 1|(0)/play
Selects a device, That will be used for Player API during this session.
CMD => t device_id
Transfer playback to device and start playing.
CMD => v volume_percent
Sets the current active device's volume.
CMD => l
Like the current playing song.
CMD => ul
Remove the current playing song from Liked.
CMD => f
Current track Audio Features.
CMD => fc_dance dance_level(0.6)
Find in Current Contenxt Track with more than the passed danceablitiy leve.
CMD => g
Get a list of available recommendation genres
CMD => i (tracks)|artists s|(m)|l count(2) offset(0)
Get your top tracks | artists. where time_range => s:short_term, m:medium_term, l:long_term
CMD => seed_t ID|(current)
add the track as a seed track (will keep latest selected 2 only)
CMD => seed_a ID|(current)
add the artist as a seed track (will keep latest selected 2 only)
CMD => rng genre(reggae) (auto)|manual acousticness danceability energy instrumentalness liveness loudness speechiness tempo valence
Get you a random track based on passed Genre, Tracks and Artists used as seed, Auto for them to be your top tracks and artists. and manual for selected seeded ones. Also accepts constrains on track features.
CMD => me
Current user Info.
CMD => s string
Search for a track
CMD => pl_ls
List user's playlists.
CMD => pl_add playlist_name public:(true)|false "Description"
Creates a new playlist for user.
CMD => pl_select 1|0(playit?) name|ID
Selects a playlist, passing a second parameter will play it too.
CMD => atp playlistID(default selected)
Adds the current playing track to a playlist. If no PlaylistID passed it will use selected.
CMD => rfp playlistID(default selected)
Removes the current playing track from a playlist. If no PlaylistID passed it will use selected.
CMD => api_name method_name %args
Generic - Where it will take first argument as API name, second would be the method name. And whaterve comes after that would be a key value arguments.