オープンソース
Show HN: Web APIのレート制限なしのSpotify TUI/GUI、Spotatui
Show HN: Spotatui, a Spotify TUI/GUI without web API rate limits (github.com)
要約
Spotatuiは、SpotifyのWeb APIレート制限の問題を解決するために開発されたTUI/GUIクライアントです。librespotのフォークを使用し、公式クライアントの内部APIからメタデータや再生情報を取得することで、レート制限を回避しています。TUIとGUIの両方が提供されており、LuaスクリプトやAI連携機能も備えています。
全文翻訳
約11ヶ月前、私は素晴らしいものの残念ながらメンテナンスされていなかったspotify-tuiを復活させました。それ以来、私はほぼノンストップで取り組んでおり、その過程で多くの問題に直面しました。
私が直面した主な問題の1つは、SpotifyのWeb APIのレート制限でした。spotatuiのようなサードパーティ製クライアントは、Spotify開発者ダッシュボードで作成された開発者アプリに依存していますが、これはレート制限が多く、Spotifyは徐々にエンドポイントを非推奨にしています。これに対する回避策は、ncspotから共有クライアントIDを使用することでしたが、残念ながらそれもレート制限されました。そこで、YouTube、Navidrome/Subsonic、約30,000局のインターネットラジオ、ローカルファイル、ロスレスオーディオのためのQobuz、macOSのみのApple Music(音楽アプリをリモートで制御)など、他の再生ソースを追加し始めました。
私は1つのソリューションで、非推奨のエンドポイントとレート制限の両方を修正しました。バックエンドでは私のspotatui固有のフォークであるlibrespotを引き続き使用していますが、再生だけでなくすべてのデータをlibrespotから取得しています。データは公式クライアントの内部APIから取得され、そのAPIはメタデータ、プレイリスト、ユーザーライブラリ、デバイス、歌詞、オーディオ分析を提供します。検索にはPathfinder、つまり内部GraphQL APIを使用します。
共有アプリのクォータがないため、Web APIのレート制限はありません。各ユーザーは、公式クライアントであるかのように独自のセッションを使用します。唯一の潜在的な問題は、SpotifyがこのAPIを文書化していないため、Spotify側の変更があれば壊れる可能性があることです。私はそれらの問題が発生次第、修正するつもりです。
すべては2019年のTUIとして始まりましたが、それ以来GUIも追加しました。GUIはまだ機能面でTUIに遅れをとっており、現時点ではSpotifyのみを搭載していますが、TUIとGUI間の完全な同等性は間もなく実現します。その後、公式クライアントとの完全な同等性が次に来ます。だからこそ、GUIの見た目を公式クライアントとほぼ同じにしたのです。そうすれば、私にとってもユーザーにとっても、不足している機能を見つけやすくなります。
SpotatuiはLuaスクリプトサポート、spotatui.comのオプションのWebコンパニオン、そしてChatGPT CodexやClaude CodeのようなAIコーディングエージェントがあれば、話すだけでAIがあなたのパーソナルDJになるMCPツールを有効にすることもできます。
Rustで書かれており、ターミナルUIにはratatuiを、GUIにはTauri 2を使用しています。Rustコアは、localhostで小さなWebサーバーを起動し、GUIがそれをサーブします。両方のフロントエンドは、同じ再生ロジック、同じログイン、同じSpotifyコードを共有しています。唯一の違いは、ユーザーがどのように操作するかです。
初回起動時にWebブラウザが開き、Spotifyプレミアムアカウントでログインする必要があります(プレミアムは必須です)。これでセットアップは完了です。発生したバグや追加してほしい機能について、どんなフィードバックでもいただけると嬉しいです。
これらすべてを可能にしてくれたlibrespotに感謝します。