All Projects → fabiofalci → Sconsify

fabiofalci / Sconsify

Licence: apache-2.0
A spotify console application

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Sconsify

Shpotify
A command-line interface to Spotify.
Stars: ✭ 1,782 (+211.54%)
Mutual labels:  command-line, spotify
Spicetify Cli
Commandline tool to customize Spotify client. Supports Windows, MacOS and Linux.
Stars: ✭ 9,316 (+1528.67%)
Mutual labels:  command-line, spotify
Ncbi Genome Download
Scripts to download genomes from the NCBI FTP servers
Stars: ✭ 494 (-13.64%)
Mutual labels:  command-line
Csvtk
A cross-platform, efficient and practical CSV/TSV toolkit in Golang
Stars: ✭ 566 (-1.05%)
Mutual labels:  command-line
Shiori
Simple bookmark manager built with Go
Stars: ✭ 5,315 (+829.2%)
Mutual labels:  command-line
Pyspotify
Python bindings for libspotify
Stars: ✭ 502 (-12.24%)
Mutual labels:  spotify
Cli
A command-line interface for Hetzner Cloud
Stars: ✭ 542 (-5.24%)
Mutual labels:  command-line
Wow
😮❗️❗️ Wow❗️ now my Go commandline app is spinning with 🌈 and 🐴
Stars: ✭ 494 (-13.64%)
Mutual labels:  command-line
Googler
🔍 Google from the terminal
Stars: ✭ 5,594 (+877.97%)
Mutual labels:  command-line
Spotifyd
A spotify daemon
Stars: ✭ 5,690 (+894.76%)
Mutual labels:  spotify
Homehost
self-hosted, Netflix-like app made for streaming
Stars: ✭ 564 (-1.4%)
Mutual labels:  spotify
Git Labelmaker
🎏 Manage your GitHub labels from the command line!
Stars: ✭ 534 (-6.64%)
Mutual labels:  command-line
Telegram Send
Send messages and files over Telegram from the command-line.
Stars: ✭ 519 (-9.27%)
Mutual labels:  command-line
Spotifyadblock
Protect your privacy by blocking all annoying Spotify ads & analytics in Linux, OSX and Windows with hosts file.
Stars: ✭ 540 (-5.59%)
Mutual labels:  spotify
Macports Base
The MacPorts command-line client
Stars: ✭ 502 (-12.24%)
Mutual labels:  command-line
Shellout
Easily run shell commands from a Swift script or command line tool
Stars: ✭ 566 (-1.05%)
Mutual labels:  command-line
Tauonmusicbox
The Linux desktop music player from the future! 🌆
Stars: ✭ 494 (-13.64%)
Mutual labels:  spotify
Nve
Run any command on specific Node.js versions
Stars: ✭ 531 (-7.17%)
Mutual labels:  command-line
Tosheets
Send your stdin to google sheets
Stars: ✭ 536 (-6.29%)
Mutual labels:  command-line
Broot
A new way to see and navigate directory trees : https://dystroy.org/broot
Stars: ✭ 6,362 (+1012.24%)
Mutual labels:  command-line

A spotify console app

Join the chat at https://gitter.im/fabiofalci/sconsify

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

alt tag

Modes

There are 2 modes:

  • Console user interface mode: it presents a text user interface with playlists and tracks.

  • No user interface mode: 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.

  • space or enter: 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.

  • PageUp PageDown Home End.

  • Control C or q: exit.

Vi navigation style:

  • h j k l for navigation.

  • Nj and Nk where N is a number: repeat the command N times.

  • gg: go to first element.

  • G: go to last element.

  • Ngg and NG where N is a number: go to element at position N.

  • Temporary playlist. Type c in 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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].