Apple MusicのネイティブWindowsアプリ向けのDiscord Rich Presenceクライアントです。また、Last.FMのscrobblingもサポートしています!
リリースはこちらで見つけることができます。
もし、.NET7.0ランタイムをインストールしているか、インストール可能であれば、NoRuntime リリースをダウンロードできます。
それ以外の場合は、NoRuntimeとラベル付されていない別のリリースをダウンロードしてください。 このリリースは、アプリケーションの実行に必要な.NET 7.0のコンポーネントをバンドルしているため、ファイルサイズが大きくなっています。
Apple MusicのMicrosoft Storeバージョン のみがサポートされています。 iTunes、Apple Music via WSA、またはサードパーティのプレイヤーには対応していません。
このアプリはバックグラウンドで実行され、システムトレイに最小化されます。アプリを閉じるには、トレイアイコンを右クリックして「Exit」を選択します。 リッチプレゼンスを表示するためには、Apple Musicアプリが開いており、音楽が再生中である必要があります(一時停止していない状態)。
お好みでアプリをWindows起動時に自動的に実行する設定を行うこともできます。これはトレイアイコンをダブルクリックして設定を変更することで行えます。
Last.FMへのScrobblingがサポートされています。Last.FMのAPI KeyとSecret Keyを取得する必要があります。これを生成するには、https://www.last.fm/api にアクセスし、「Get an API account」を選択してください。これらの情報とLast.FMのユーザー名とパスワードを使用してください:
Last.FMのパスワードは、ローカルWindowsアカウントのWindows資格情報マネージャに保存されています。
このScrobbling実装ではオフラインScrobblingをサポートしていないため、インターネットに接続していない状態で聴いた曲は失われます。
## どのように動作しているのでしょうか?
(技術的な詳細が続きます)
この最大の課題は、Apple Musicアプリから曲の情報を抽出できるようにすることです。
これは.NETのUI オートメーションを使用して実現されます。これにより、ユーザーのデスクトップ上の任意のウィンドウのUI要素にアクセスできます。
一般的なプロセスは次のとおりです:
- デスクトップ上でApple Musicウィンドウを探します。
- 次に、我々は望んでいる情報を保持する既知のUIコントロールに移動します(たとえば、曲名など)。
- この情報を抽出し、Discord RPCを処理するプログラムの一部に送信します。
もう1つの問題は、曲のカバーアートを取得することです。
あまり文書化されていませんが、Discord RPCではassets keyの代わりに画像の URL を送信することで、任意の画像を指定できるようになりました。)
私の知る限り、UI オートメーションを使用してウィンドウに表示されている画像を取得することはできません。代わりに、Apple MusicのウェブサイトにHTTPリクエストを送信し、そこから曲を検索してカバー画像のURLを取得しようとします。理想的ではありませんが、ほとんどの場合、我々が求めているものを提供してくれます。