This worked nicely for me. But as I've drifted more and more to a mousless world
thanks to Emacs and StumpWM, I became more and more frustrated every time I've
had to change songs, add a song to my favorites or just browse an artist
page. This back and forth between the browser and Emacs got tiring after a
while. Besides, a few years back, last.fm dumped its old system where it used
it's own database to play songs and just played the songs directly from
youtube. This got me thinking that maybe I can use last.fm's huge dataset to
create my own playlists based on similarities between artists and even browse an
artist page as I would do in a browser, only inside Emacs. And since youtube is
available to everybody, and mpv can play youtube links and can even do searches,
I've started playing with this idea.
Another pain point that I've had is lyrics. Sure, if I can get the above thing
working, Emacs will know what song I'm currently playing, and fetching the
lyrics and displaying them in a new buffer would be a no brainer. But, lots of
times I'm having trouble finding the song FROM the lyrics and not the other way
around. Especially if I'm not remembering so many words from the song. So why
not keeping a local database with all the lyrics I'm interested in and do a
local search, from Emacs, and not from Google. Since counsel and helm are such
nice tools, I can use those to browse through the results, hit enter, and play
my song. No leaving the Emacsland required.
I've tried to implement this first in Common Lisp and call it directly from the
window manager (StumpWM). It worked, but it was somehow hard to use. I then
tried to implement it directly in Emacs. The first package was lastfm.el with
which I can have access to the whole last.fm database. All artist's songs,
similarities, user top tracks, everything. With authentication, the user can
also add loved tracks, scrobble tracks and all that. In short, everything you
can do from the last.fm page, you can now do from Emacs. This was a nice first
step. The second step was to implement the lyrics functionality. This is another
And the last step is this package, vuiet.el. It brings together lastfm.el and
versuri.el with mpv.el for playing songs and some org-mode for displaying and
browsing artists and genres. I've gone wild with the playlists and created more
options for them than what is available by default on last.fm. I can pick a
random artist from my loved songs list, for example, and then play a random song
from a random artist similar to it, ad infinitum. Or, when browsing an artist
page, I can do a search first and let counsel guide my way as to the exact name
of the artist. Maybe I'm lazy, maybe I forget. All in all, it has been a great
tool to listen and discover new music, for the lazy people.
I got mostly positive first impressions until now, and I'm sure there are more exciting features to explore with this tool which I cannot think of right
now. Improvements and features are waiting to happen, in short. Some bugs are
also lurking in there, for sure. But I'm using it for approximately two months
already and I really like it. I'm curious how others would use it, what features do they
miss, what bugs do they find, etc.
Thanks for trying it out and happy listening!
And incidentally, things like this are one of the (many) reasons I love Emacs.
In my nonexistent free time, I'm very slowly learning Lisp. (well, mostly emacs lisp) I love seeing these sorts of Emacs projects, because I can read through the source and figure out a little bit more about this strange and wonderful language.
This brings to mind one of the reasons I love Emacs so much now. It's the editor with the smallest barrier to learning and extending it, since everything is Lisp, you configure it with Lisp, you customize it with Lisp, and packages are written in Lisp.
Anyway, a long-winded roundabout way of saying: Thank you for sharing this!
Me: “Emacs.” /s
Wanna-be hard-core Emacs user here. Tried this out today, worked beautifully. A few glitches (I’ll send a bug report if I can reproduce) but splendid by and large.
There is something to be said for using Emacs an application platform. It is the ultimate IDE, and a self-contained marvel of hackage that somehow works.
Thanks for posting this!
I wish it was a general CLI, instead of relying on Emacs. Or, I wish I felt comfortable enough in Emacs to give this a shot.
> emacsclient -e '(vuiet-play-artist "queen")'
You can then turn it into a full CLI tool for interacting with vuiet with some nice wrappers around the above command, and similar ones. I would be glad if someone gives it a try. I, for one, feel very comfortable inside Emacs.
Thanks for your nice words! I really appreciate it.
I know it's often the most boring bit but an installation and quickstart guide on the readme would be super appreciated!
Thanks for all the work