私は最近、セルフホスティングとホームラボに少し興味があるので、手元にあるハードウェアを最大限に活用しようとしています。最近、Kindle は消費電力が低く、美しい E-Ink ディスプレイを備えているため、優れたダッシュボードになることに気づきました。ということで、私はSpotifyのリモコンとダッシュボードとして使ってきました。
私の最初の Kindle ダッシュボードは生産性タイマーでした
私は半分のラップトップ (画面のない半分のトップ) を横に置いていて、それを小さなサーバーに変えて、その上でたくさんのアプリをホストしました。それらのアプリの 1 つが Timetagger で、私はこれを勤務時間を追跡するために使用しています。それは素晴らしいことですが、タスクに取り組んでいる時間を確認するにはタブを切り替える必要があります。一目でわかるようにする方法が欲しかったです。最初は、Timetagger からのタイマー出力を携帯電話に表示できると考えましたが、何時間も画面を表示し続けるとバッテリーを消耗しすぎます。そのとき、私の Kindle がこの仕事に最適であると思いつきました。
Timetagger が提供する API を使用してタイマー情報を取得しました。次に、Timetagger コンテナと同じサーバー上で実行される単純な bash スクリプトを作成しました。 Bash スクリプトは、数秒ごとに更新される HTML ページを生成します。ハーフトップは、ローカル ネットワーク上の特定のポートでそのページを提供します。このポートには、内蔵 Web ブラウザを使用して Kindle でアクセスできます。ページは、更新されたタイマー データで数秒ごとに自動的に更新されます。
このシンプルなダッシュボード設定は私の目的に非常にぴったりだったので、Kindle に表示できる他のものを考え始めました。私が最初に考えたのは、Spotify クライアントのリモート コントロールをセットアップすることでした。そうすれば、デスクで作業中にタイマーを確認したり、音楽再生を制御したりするためにアプリを切り替える必要がなくなります。
無料のアプリを見つけましたが、Spotify Premium でのみ機能します
まさにこの仕事に対応したアプリがすでに存在していることがわかりました。それはKindlifyという無料のウェブアプリです。 Kindle ブラウザで Kindlify.co Web サイトを開き、携帯電話で QR コードをスキャンし、Spotify にログインして、何かを再生します。次に Kindle に戻ると、アルバム カバー、シークバー、トラック名とアーティスト名、再生コントロールを備えた美しいインターフェイスが表示されるはずです。
Kindle に接続されている Bluetooth デバイスを介して音楽を再生することはできません。ただのリモコンです。実際にどのクライアントが実行されていても、音楽は引き続き再生されます。
残念ながら、Spotify はプレミアム アカウントとのみ Web API を共有するため、これを機能させるにはプレミアム Spotify サブスクリプションが必要です。 Spotify は、他のクライアントやデーモンが再生を引き継ぐことができる「Spotify Connect」機能も制限しました。それで、自分でやることにしました。
ラップトップ半分と軽量スクリプトを使用して Spotify ダッシュボードを構築しました
API を取得できず、ヘッドレス デーモンを使用して Spotify にアクセスできなかったため、Spotify プレーヤーと対話する 3 番目の方法が必要でした。
幸いなことに、Linux が私を助けてくれました。アプリが相互に通信できるようにする内部「D-Bus」システムがあります。したがって、通常の Spotify クライアントをサーバーにインストールし、D-Bus インターフェイスを使用して制御するだけで済みます。という軽量ツールがあります playerctl これにより、D-Bus とのやり取りが簡素化されます。すべてを自動的に処理してくれるため、何もコーディングする必要はありません。たとえば、playerctl は次のようなコマンドを使用して Spotify の再生を一時停止できます。
playerctl -p spotify pause
next、resume、メタデータ、または title を引数として渡すこともできます。
ハーフトップはすでに Linux を実行していたため、セットアップは必要ありませんでした。 Spotify と通信するためのシンプルな CLI ツールができたので、次のステップはスクリプト内でシェル コマンドを使用することでした。このスクリプトは、3 つのことを実行する Web サーバーになります。
-
Web ページを提供します (リモート コントロール インターフェイスが表示されます)
-
Web ページから送信されたリクエスト (次のトラックを再生するリクエストなど) をリッスンします。
-
実行します
playerctlWeb ページから受信したリクエストに基づいてコマンドを実行します。
以来 playerctl 複雑さがすべて抽象化されているため、スクリプトはシンプルです。私はクロードに、これらすべてを実行できる基本的な Python スクリプトを生成してもらいました。クロードはこう書きました playerctl() 関連して実行される関数 playerctl コマンドを実行し、その出力を印刷します。
Pythonには組み込み機能があります http.server このライブラリは、任意のフォルダーを HTTP リクエストを処理できる単純な Web サーバーに変えることができます。クロードはこれをスクリプトに組み込み、Web サーバーとして実行します。私はローカル ネットワーク経由でのみこの Spotify リモートにアクセスするつもりなので、この設定は私の目的には適しています。
実際に動作するとこんな感じです
Web サーバーを起動した後は、すべてをまとめてクリックするために Spotify クライアントが動作する必要がありました。同じハーフトップに Spotify をインストールして実行しました。ログインしてトラックを再生した後、セットアップをテストします。
最初のバージョンはかなり基本的なものでした。トラックの一時停止、再開、スキップを行うのは 3 つのボタンだけです。機能的には良かったのですが、見た目はあまり良くありませんでした。本物のダッシュボードのようなものが欲しかった。そこでバージョン 2 では、プログレス バー、カバー アート、トラック、アーティスト、アルバムの詳細を備えたミニマリストの白黒インターフェイスを作成するようクロードに依頼しました。
手動で少し調整した後、これが今のものです。ページは数秒ごとに自動的に更新され、現在の「再生中」画面が表示されます。
私の携帯電話でも同じリモコンが使えるので、Spotify の再生を制御する方法が 2 つあります。ただし、Kindle は何時間も画面を表示し続けるためのバッテリーの消耗が少ないため、完璧なダッシュボードになります。目にも優しいです。