Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Spotify for the Terminal Written in Rust (github.com)
212 points by keliris 7 days ago | hide | past | web | favorite | 28 comments

Another interesting one is


This actually implements the reverse-engineered Spotify protocol and authenticates as a Spotify Connect device. To avoid Spotify being mad and potential legal problems, they implemented artificial limitations that block you from extracting the audio files unencrypted or using premium features on free accounts. A skilled Rustecean could probably deal with those pretty quickly, though.

This is very nice. I might use this.

By the way with puppeteer you can login and intercept the bearer auth token to masquerade as the web player.

Not Spotify, but for Pandora nothing beats pianobar[1]. I've been using it for years and it's just a delight. No bloated interface, simple and quick to use.

1: https://6xq.net/pianobar/ or https://github.com/PromyLOPh/pianobar

Oh man, Pandora is still around? It was my favorite online radio for so long starting in 2007, but they made it increasingly difficult to access their service from Europe and they never did roll it out here. Ended up being too much effort. Still miss it though.

pianobar was quite receptive to my small patches. lovely software, definitely stretched the lifetime of pandora for me

Reminder that there is also CMUS[1] for those of us who prefer pointing to a library of MP3s.

1: https://cmus.github.io/

Now that you bring console music players to the discussion, I admit that I have never understood how to use ncmpc/ncmpcpp.

Pretend it’s like emacs or vim for music.

Also a shoutout to xmms2: https://en.wikipedia.org/wiki/XMMS2

This is awesome! I've been looking for an alternative to the bloated Electron mess that is Spotify's UI for a long time. It leaks memory like a sieve on Linux and is generally a pain to use.

I'll try this out later.

As a light weight alternative to the official client, you can try https://github.com/Spotifyd/spotifyd

`spotify-tui` uses the Spotify Web API, which doesn't handle streaming itself, so as of now you'll need a spotify client that handles streaming.

In the future, I'll see if I can integrate this into the project for a more complete package.

I don't find it to be more of a mess than any other electron application though. So that's.. something.

My main issue with the snap install (debian) browsing for songs became slow initially. The UI will be there but it'll just show 'no results' for basically any search until after a minute or so.

My issue with the snap installed (Ubuntu in my case) is that Spotify still doesn't handle scaling properly, so I keep having to modify the launcher to add a command line switch for the scaling factor. Of course, every time the app updates, snap overwrites my changes...

You need to have the official Spotify app open in order to play songs

Or spotifyd, which provides the necessary shimmage to do the streaming.

The Spotify client is indeed an ugly bloated mess but is it not based on Electron and never has been. It's using Chromium Embedded Framework (aka CEF): https://en.wikipedia.org/wiki/Chromium_Embedded_Framework

Might as well plug my similar project here: https://github.com/mrmekon/connectr

A minimal Spotify controller for the menubar/systray. I mostly play on speakers, though sometimes librespot on my desktop to avoid running the hog of the Spotify app. The main feature for me, though, is the alarm clock; I set a raspberry pi to push a new release playlist to one of my speakers every morning.

Aside, but another annoying thing about Spotify's native macOS client does not use the Apple API for "Open on login" toggle (that is exposed when you right-click on the app icon in the Dock) and instead has it buried in their own preferences. I uninstalled it yesterday because their web player is decent enough and I didn't have the patience to figure out how to disable this open on startup option.

> You need to have the official Spotify app open in order to play songs, but you can control all your devices with this app.

Will it ever be possible to have it work without the app open?

Yes? Spotify dropped their support for libspotify a long time ago so the community had to develop their own replacement.


Is there any extra value that "it is written in Rust"?

Yes! I love this - I’m surprised that I haven’t seen more clever Spotify integrations floating about in the dev community.

+1 on Spotify memory/CPU bloat

We also integrated Spotify into Pragli to show “show your status”. If I can see that you’re listening to Spotify, you could be heads down but you’re definitely not on a call. Also could be useful as a social signal if you decide to decide to add a social component to your app

Late to the party, but this is super cool. This fits my workflow perfectly by letting the me change tracks without leaving the command line.

It would be cool to see separate commands for simple operations like stop, play, and skip without having to even open the tui

Does anyone happen to know if there is an Apple music terminal client now that they have an official web UI? A quick search did not reveal anything.

Is this news? There’s already a Spotify client for Emacs.

Imagine living in a world where "spotify client for emacs" is supposed to common knowledge and not news. I envy you (no sarcasm!).

Emacs is about the only cross-platform environment I can think of that makes Electron look efficient ;)

It's the perfect operating system. A shame it's missing a good text editor.

More seriously, though: the heaviest of my Emacs processes right now is at around 28k of resident memory, while Rambox (Electron wrapper around Gmail and GCal, among potentially other things) is at 395MB + 195MB (presumably for the Gmail and GCal tabs) + some other more negligible subprocesses, and Slack is at 265MB. Total virtual/mapped memory is much higher for all of those (Emacs is still the lowest, at 541MB for the biggest process, while Rambox's are around 1GB each and Slack's is at a "mere" 20.8GB).

Granted, my Emacs processes are doing a bit less than any of the Electron processes, but I still think you've got things the wrong way round :)

wow, no.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact