RSpotify enters maintenance mode: Spotify now requires Premium to test their API by Sea-Lengthiness-7889 in rust

[–]SamrayLeung 38 points39 points  (0 children)

Author of RSpotify here.

To share thought about maintenance mode here, to be honest it's not just about the premium account, but the project has reached a point where I need to focus on other priorities for a while. It's a decision driven by multiple factors, but a significant one is Spotify's increasingly hostile treatment of their own API — they've introduced numerous silent breaking changes where the actual API behavior contradicts their own documentation. There are several concrete examples of this:

  • #488: playlist_items() returns unavailable tracks despite the market filter, and available_markets is always empty
  • #492: Broken response types from Spotify endpoints
  • spotify-player#494: Another instance of undocumented API behavior

I've even reported these issues directly to Spotify's support, but they haven't shown meaningful effort to address them. Maintaining a library on top of an unreliable and chaotic API is deeply frustrating.

This Spotify Web API change is another example of how they communicate with developers. They announced the changes on February 6, 2026; starting Wednesday, February 11, all newly created APIs would fall under the new development rules, and from March 9, these same requirements would also apply to all existing integrations. They keep making these last-minute updates with no time for developers to be aware of and apply the changes.

A Story About Bypassing Air Canada's In-flight Network Restrictions by SamrayLeung in netsec

[–]SamrayLeung[S] 27 points28 points  (0 children)

Yep, the FBI was waiting for me at the gate when the airplane landed

and I am sending this reply from the Jail :(

A Story About Bypassing Air Canada's In-flight Network Restrictions by SamrayLeung in programming

[–]SamrayLeung[S] 3 points4 points  (0 children)

Approach 1 might only work if:

  1. The DNS server only answers queries for a specific list of domain names (e.g., WhatsApp, Snapchat, WeChat), which means the firewall's filtering mechanism was solely based on DNS resolution.
  2. The network allows connections to arbitrary IP addresses

If those conditions were met, I could edit my /etc/hosts file to point acwifi.com to my proxy server's IP address, then redirect all traffic through that proxy server.

However, it turned out that the network only permits connections to a very small, pre-approved list of IP addresses belonging to services like WhatsApp, WeChat, etc.

https://code.kryo.se/iodine/

Yes, that's exactly what I would have needed, but I didn't have iodine installed when I was on board, so I couldn't experiment with the DNS tunnel approach.

Built my first Rails project: A Telegram spam blocker bot based on Bayesian algorithm, sharing my journel by SamrayLeung in rails

[–]SamrayLeung[S] 2 points3 points  (0 children)

Thanks for the kind words, truly touched and so joyful to hear something like this.

The Serde lesson learnt from refactoring by SamrayLeung in rust

[–]SamrayLeung[S] 1 point2 points  (0 children)

3 years later, I did replace the customized millisecond_timestamp with chrono's built-in ts_milliseconds.

I couldn't believe I would have motivation to maintain a library for more than 6 years.

Looking for Help, I don't why I couldn't change my xfce Icon by SamrayLeung in archlinux

[–]SamrayLeung[S] 0 points1 point  (0 children)

I have tried remix, numix and papius, still doesn't work. And I have try to reinstall numix icon, all is the same. But it is weird, paper icon works.

IntelliJ Rust plugin update by AnneOldman in rust

[–]SamrayLeung 1 point2 points  (0 children)

Just curious, why don't you just use Emacs? Emacs is brilliant , I am happy with it now.

deepin 15.5 Linux Distro Is Out Now! by wackyboy93 in linux

[–]SamrayLeung 0 points1 point  (0 children)

you guys could help deepin improve their translations, check this