{"id":13425122,"url":"https://github.com/fabiofalci/sconsify","last_synced_at":"2025-03-15T19:32:37.736Z","repository":{"id":18526029,"uuid":"21726337","full_name":"fabiofalci/sconsify","owner":"fabiofalci","description":"A spotify console application","archived":false,"fork":false,"pushed_at":"2021-10-19T10:30:10.000Z","size":496,"stargazers_count":566,"open_issues_count":46,"forks_count":26,"subscribers_count":32,"default_branch":"master","last_synced_at":"2024-10-28T03:39:19.063Z","etag":null,"topics":["command-line","go","golang","spotify","spotify-console"],"latest_commit_sha":null,"homepage":"https://fabiofalci.github.io/sconsify","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fabiofalci.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-07-11T07:30:22.000Z","updated_at":"2024-08-23T13:18:18.000Z","dependencies_parsed_at":"2022-08-05T00:00:16.985Z","dependency_job_id":null,"html_url":"https://github.com/fabiofalci/sconsify","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabiofalci%2Fsconsify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabiofalci%2Fsconsify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabiofalci%2Fsconsify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabiofalci%2Fsconsify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fabiofalci","download_url":"https://codeload.github.com/fabiofalci/sconsify/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243781846,"owners_count":20347156,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["command-line","go","golang","spotify","spotify-console"],"created_at":"2024-07-31T00:01:05.397Z","updated_at":"2025-03-15T19:32:37.350Z","avatar_url":"https://github.com/fabiofalci.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"A spotify console app\n---------------------\n\n[![Join the chat at https://gitter.im/fabiofalci/sconsify](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/fabiofalci/sconsify?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\nImportant notice: [libspotify](https://developer.spotify.com/technologies/libspotify/) is no longer available for download. If you have installed, then sconsify should be working. Unfortunately, we don't know for how long.\n\nA very early stage of a spotify console application.\n\nRequirements: [Libspotify SDK](https://developer.spotify.com/technologies/libspotify/) \u0026 [PortAudio](http://www.portaudio.com/) \u0026 Spotify user subscribed to the Premium tier of the Spotify Service ([Libspotify SDK terms of use](https://developer.spotify.com/developer-terms-of-use/)).\n\n\nInstallation\n------------\n\n* Download current version [0.5.0](https://github.com/fabiofalci/sconsify/releases) \n\n* Install dependencies:\n\n`Archlinux`\n\n\t$ pacman -S portaudio\n\t$ yaourt -S libspotify\n\n`Ubuntu` \u0026 `debian`\n\n\t$ curl http://apt.mopidy.com/mopidy.gpg | sudo apt-key add - \u0026\u0026 sudo curl -o /etc/apt/sources.list.d/mopidy.list http://apt.mopidy.com/mopidy.list\n\t$ sudo apt-get update \u0026\u0026 sudo apt-get install -y libportaudio2 libspotify12 --no-install-recommends \n\n`Fedora Workstation`\n\nInstall libspotify-devel from rpmfusion-nonfree. [Install instructions](https://rpmfusion.org/Configuration/)\n\n\t$ sudo dnf install libspotify portaudio\n\n`OSX`\n\nInstall [brew, the missing package manager for OS X](http://brew.sh/) and\n\n\t$ brew tap homebrew/binary\n\t$ brew install portaudio\n\nThen, download `libspotify` 12.1.51 for Mac OS X/Darwin\nUncompress the file and copy libspotify.framework to /Library/Frameworks (optional)\n\t\n\t$ wget https://developer.spotify.com/download/libspotify/libspotify-12.1.51-Darwin-universal.zip\n\t$ sudo cp -R ./libspotify-12.1.51-Darwin-universal/libspotify.framework /Library/Frameworks\n\t\nsconsify will load libspotify from `/usr/local/opt/libspotify/lib/libspotify`. User should create a symbolic link to `/usr/local/opt/libspotify/lib/libspotify`\n\n\t$ mkdir -p /usr/local/opt/libspotify/lib\n\t$ ln -s /Library/Frameworks/libspotify.framework/libspotify /usr/local/opt/libspotify/lib\n\n* Run `./sconsify`\n\n![alt tag](https://raw.githubusercontent.com/wiki/fabiofalci/sconsify/sconsify.png)\n\nModes\n-----\n\nThere are 2 modes: \n\n* `Console user interface` mode: it presents a text user interface with playlists and tracks.\n\n* `No user interface` mode: it doesn't present user interface and just shuffle tracks.\n\n\nParameters\n----------\n\n* `-username=\"\"`: Spotify username. If not present username will be asked.\n\n* 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.\n\n* `-ui=true/false`: Run Sconsify with Console User Interface. If false then no User Interface will be presented and it'll only shuffle tracks.\n\n* `-playlists=\"\"`: Select just some playlists to play. Comma separated list.\n\n\nNo UI Parameters\n----------------\n\n* `-noui-repeat-on=true/false`: Play your playlist and repeat it after the last track.\n\n* `-noui-silent=true/false`: Silent mode when no UI is used.\n\n* `-noui-shuffle=true/false`: Shuffle tracks or follow playlist order.\n\n\nUI mode keyboard \n----------------\n\n* \u0026larr; \u0026darr; \u0026uarr; \u0026rarr; for navigation.\n\n* `space` or `enter`: play selected track.\n\n* `\u003e`: play next track.\n\n* `p`: pause.\n\n* `/`: open a search field.\n\nSearch fields: `album, artist or track`. \n\n```\n    album:help\n    artist:the beatles\n    track:let it be\n```\n\nAliases `al` = `album`, `ar` = `artist`, `tr` = `track`:\n\n```\n    al:help\n    ar:the beatles\n    tr:let it be\n```\n\n* `s`: shuffle tracks from current playlist. Press again to go back to normal mode.\n\n* `S`: shuffle tracks from all playlists. Press again to go back to normal mode.\n\n* `u`: queue selected track to play next.\n\n* `r`: repeat the playing track.\n\n* `dd`: delete selected element (playlist, track) from the UI (it doesn't save the change to spotify playlist).\n\n* `D`: delete all tracks from the queue if the focus is on the queue.\n\n* `PageUp` `PageDown` `Home` `End`. \n\n* `Control C` or `q`: exit.\n\nVi navigation style:\n\n* `h` `j` `k` `l` for navigation.\n\n* `Nj` and `Nk` where N is a number: repeat the command N times.\n\n* `gg`: go to first element. \n\n* `G`: go to last element.\n\n* `Ngg` and `NG` where N is a number: go to element at position N. \n\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.\n\n\nNo UI mode keyboard \n-------------------\n\n* `\u003e`: play next track.\n\n* `Control C`: exit.\n\nInterprocess commands\n--------------------\n\nSconsify starts a server for interprocess commands using `sconsify -command \u003ccommand\u003e`. Available commands: `replay, play_pause, next, pause`. \n\n[i3](http://i3wm.org/) bindings for multimedia keys:\n\n```\n    bindsym XF86AudioPrev exec sconsify -command replay\n    bindsym XF86AudioPlay exec sconsify -command play_pause\n    bindsym XF86AudioNext exec sconsify -command next\n\n    # pause when locking computer with i3lock\n    bindsym Control+Mod1+l exec \"i3lock -c 000000 \u0026\u0026 sconsify -command pause\"\n```\n\n`macOS`: create a new service in `Automator`. Then pick `Library \u003e Utilities \u003e 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 \u003e 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`).\n\nIf you prefer doing this within tmux, you can put the following lines to your `.tmux.conf` file:\n\n```tmux\nbind-key F7 run-shell 'sconsify -command replay'\nbind-key F8 run-shell 'sconsify -command play_pause'\nbind-key F9 run-shell 'sconsify -command next'\n```\n\nsconsifyrc\n----------\n\nSimilar to [.ackrc](http://beyondgrep.com/documentation/) you can define default parameters in `~/.sconsify/sconsifyrc`:\n\n\t-username=your-username\n\t-noui-silent=true \n\t-noui-repeat-on=false\n\n\nHow to build\n---------------------------------\n\nInstall go (same version from Dockerfile), [glide](https://glide.sh/) and get a Spotify application key and copy as a byte array to `/sconsify/spotify/spotify_key_array.key`.\n\n\tvar key = []byte{\n\t    0x02, 0xA2, ...\n\t    ...\n\t    0xA1}\n\n* osx only: `brew install pkgconfig`\n\n* `make build`\n\nWhen 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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabiofalci%2Fsconsify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffabiofalci%2Fsconsify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabiofalci%2Fsconsify/lists"}