New version of Emacs package Helm-spotify
Switch branches/tags
Nothing to show
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
README.md explanation about client id and secret on the code Jan 7, 2018
helm-spotify-plus.el fix the need for authentication. Jan 7, 2018

README.md

Helm Spotify Plus

A search & play interface for Spotify

There are several changes to the prior Helm-spotify package.

Helm is used here to only narrow the candidates we got from Spotify API requests.

How to install

You can installed this package from MELPA.

M-x package-refresh-contents
M-x package-install RET helm-spotify-plus

If you prefer a manual installation. Clone the repo:

cd ~/.emacs.d/site-packages
git clone submodule add https://github.com/wandersoncferreira/helm-spotify-plus
(add-to-list 'load-path "~/emacs.d/site-packages/helm-spotify-plus")
(require 'helm-spotify-plus)

Dependencies:

+ [Helm](https://github.com/emacs-helm/helm)
+ [Multi](https://github.com/kurisuwhyte/emacs-multi)

Spotify Web API request client ID

Since the change from Spotify API there are some bugs with this package (https://developer.spotify.com/news-stories/2017/01/27/removing-unauthenticated-calls-to-the-web-api/). However, I fixed the problem by exposing the client ID and secret from this web app only, which I don't see as a major problem due to the nature of our requests. I don't need to use any private data from Spotify, so I don't see why I should bother you to go there and make your own Client ID and Secrets.

The current state of this package is fully functional and has zero impact on the previous user experience. Everything should be working as expected. If you have any point to discuss about this topic, plase I would love to hear from you. Thanks and sorry for taking so long to fix it.

How to use it

There are one basic command helm-spotify-plus that will ask you for an input string:

Enter the (partial/full) name of a Track/Artist:

A list of 250 candidates will popup using a Helm interface.

There is also a concept of keywords which are tokens to explicitly organize your query and increase the hit/miss performance of the requests.

Example of query strings using keywords:

Input Action
master of If no identifier is given, the request will use a free Track search
a: metallica Only pass the author
t: master of puppets Only the track
a: metallica t: master Explicitly write the Artist and the Track (partially is allowed)
a: john m: US m informs the market region (it can be used in any search)

Press TAB in Helm to see Actions over it as well.

More features

As there are no downsides for adding quick DBUS control over Spotify from Emacs, there are some small commands such as helm-spotify-plus-pause, helm-spotify-plus-play, helm-spotify-plus-next available from M-x.

Some already fixed bugs

  • Helm-spotify works when your buffer is visiting a remote machine.
  • Encoding.
  • Difficulty to interact with Spotify API directly through Helm interface.
  • Album play was only playing the first song of the album. Now its fixed.
  • Artist a: keyword indeed filters the result to match artist field.

Recommended keybindings

(global-set-key (kbd "C-c s s") 'helm-spotify-plus)  ;; s for SEARCH
(global-set-key (kbd "C-c s f") 'helm-spotify-plus-next)
(global-set-key (kbd "C-c s b") 'helm-spotify-plus-previous)
(global-set-key (kbd "C-c s p") 'helm-spotify-plus-play) 
(global-set-key (kbd "C-c s g") 'helm-spotify-plus-pause) ;; g cause you know.. C-g stop things :)

Credits

The original script was created by Kris Jenkis in 2013.

Contributions

Any contribution is very welcome! Request of features, bug reports and documentation. Just drop us a line using the Github issues feature.