Sconsify
A spotify console application
Install / Use
/learn @fabiofalci/SconsifyREADME
A spotify console app
Important notice: libspotify is no longer available for download. If you have installed, then sconsify should be working. Unfortunately, we don't know for how long.
A very early stage of a spotify console application.
Requirements: Libspotify SDK & PortAudio & Spotify user subscribed to the Premium tier of the Spotify Service (Libspotify SDK terms of use).
Installation
-
Download current version 0.5.0
-
Install dependencies:
Archlinux
$ pacman -S portaudio
$ yaourt -S libspotify
Ubuntu & debian
$ curl http://apt.mopidy.com/mopidy.gpg | sudo apt-key add - && sudo curl -o /etc/apt/sources.list.d/mopidy.list http://apt.mopidy.com/mopidy.list
$ sudo apt-get update && sudo apt-get install -y libportaudio2 libspotify12 --no-install-recommends
Fedora Workstation
Install libspotify-devel from rpmfusion-nonfree. Install instructions
$ sudo dnf install libspotify portaudio
OSX
Install brew, the missing package manager for OS X and
$ brew tap homebrew/binary
$ brew install portaudio
Then, download libspotify 12.1.51 for Mac OS X/Darwin
Uncompress the file and copy libspotify.framework to /Library/Frameworks (optional)
$ wget https://developer.spotify.com/download/libspotify/libspotify-12.1.51-Darwin-universal.zip
$ sudo cp -R ./libspotify-12.1.51-Darwin-universal/libspotify.framework /Library/Frameworks
sconsify will load libspotify from /usr/local/opt/libspotify/lib/libspotify. User should create a symbolic link to /usr/local/opt/libspotify/lib/libspotify
$ mkdir -p /usr/local/opt/libspotify/lib
$ ln -s /Library/Frameworks/libspotify.framework/libspotify /usr/local/opt/libspotify/lib
- Run
./sconsify

Modes
There are 2 modes:
-
Console user interfacemode: it presents a text user interface with playlists and tracks. -
No user interfacemode: it doesn't present user interface and just shuffle tracks.
Parameters
-
-username="": Spotify username. If not present username will be asked. -
Password will be asked. To not be asked you can set an environment variable with your password
export SCONSIFY_PASSWORD=password. Be aware your password will be exposed as plain text. -
-ui=true/false: Run Sconsify with Console User Interface. If false then no User Interface will be presented and it'll only shuffle tracks. -
-playlists="": Select just some playlists to play. Comma separated list.
No UI Parameters
-
-noui-repeat-on=true/false: Play your playlist and repeat it after the last track. -
-noui-silent=true/false: Silent mode when no UI is used. -
-noui-shuffle=true/false: Shuffle tracks or follow playlist order.
UI mode keyboard
-
← ↓ ↑ → for navigation.
-
spaceorenter: play selected track. -
>: play next track. -
p: pause. -
/: open a search field.
Search fields: album, artist or track.
album:help
artist:the beatles
track:let it be
Aliases al = album, ar = artist, tr = track:
al:help
ar:the beatles
tr:let it be
-
s: shuffle tracks from current playlist. Press again to go back to normal mode. -
S: shuffle tracks from all playlists. Press again to go back to normal mode. -
u: queue selected track to play next. -
r: repeat the playing track. -
dd: delete selected element (playlist, track) from the UI (it doesn't save the change to spotify playlist). -
D: delete all tracks from the queue if the focus is on the queue. -
PageUpPageDownHomeEnd. -
Control Corq: exit.
Vi navigation style:
-
hjklfor navigation. -
NjandNkwhere N is a number: repeat the command N times. -
gg: go to first element. -
G: go to last element. -
NggandNGwhere N is a number: go to element at position N. -
Temporary playlist. Type
cin the queue view, type a name and then a temporary playlist will appear containing all songs in the queue view.
No UI mode keyboard
-
>: play next track. -
Control C: exit.
Interprocess commands
Sconsify starts a server for interprocess commands using sconsify -command <command>. Available commands: replay, play_pause, next, pause.
i3 bindings for multimedia keys:
bindsym XF86AudioPrev exec sconsify -command replay
bindsym XF86AudioPlay exec sconsify -command play_pause
bindsym XF86AudioNext exec sconsify -command next
# pause when locking computer with i3lock
bindsym Control+Mod1+l exec "i3lock -c 000000 && sconsify -command pause"
macOS: create a new service in Automator. Then pick Library > Utilities > Run Shell Script. Drag it to the workflow. Pick no input and then add to the script /path/to/sconsify -command replay, save it. Go to Keyboard Shortcuts > Services in System Settings, find the service you've just saved and type the desired shortcut. Repeat for each command (replay, play_pause, next, pause).
If you prefer doing this within tmux, you can put the following lines to your .tmux.conf file:
bind-key F7 run-shell 'sconsify -command replay'
bind-key F8 run-shell 'sconsify -command play_pause'
bind-key F9 run-shell 'sconsify -command next'
sconsifyrc
Similar to .ackrc you can define default parameters in ~/.sconsify/sconsifyrc:
-username=your-username
-noui-silent=true
-noui-repeat-on=false
How to build
Install go (same version from Dockerfile), glide and get a Spotify application key and copy as a byte array to /sconsify/spotify/spotify_key_array.key.
var key = []byte{
0x02, 0xA2, ...
...
0xA1}
-
osx only:
brew install pkgconfig -
make build
When building for OSX you may face an issue where it doesn't get your application key. Just retry the build that eventually it will get the key.
Related Skills
node-connect
343.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
xurl
343.1kA CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.
frontend-design
90.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
