Amazon Musicで再生中の曲の情報をDiscordに表示できる「Amazon Music Rich Presence」を公開しました

Amazon Musicで再生中の楽曲の情報をDiscordのプロフィールに表示できる「Amazon Music Rich Presence」を公開しました!
目次
Amazon Musicの情報をDiscordに表示したい
DiscordにはRich Presenceという仕組みがあり、これを利用することでプレイ中のゲームや再生中の楽曲の情報などをアカウントのプロフィールに表示できます。主要な音楽再生サービスでは、Spotifyはデフォルトでこの機能に対応しており、YouTube Musicの非公式デスクトップクライアントは組み込みのプラグインを有効化することで利用できます。
Amazon MusicはRich Presenceに対応していないのですが、以前から筆者はAmazon Musicで再生中の楽曲の情報をDiscordに表示したいと考えていました。
Amazon MusicをDiscordのRich Presenceに対応させるツールを探していたところ、Amazon Music RPCというツールを見つけました。
しかし、実際に利用してみたところいくつかの課題が見えてきました。
まず、筆者としては再生中の楽曲の情報をDiscordに表示できれば十分なのですが、Amazon Music RPCでは非常に多くの設定があり、筆者の用途ではオーバースペックに感じました。また、Amazon Music RPCは、非Microsoft Store版のAmazon Musicでは動作しないどころか、UIを破壊してしまうことが判明しました。
Amazon Musicのデスクトップクライアントには、Microsoft Storeからインストールできるものと、Amazonの公式サイトからインストールできるものの2種類があります。Microsoft Store版ではシステムトレイに最小化してバックグラウンド再生する機能を利用できないため、筆者は非Microsoft Store版を利用しています。ところが、Amazon Music RPCではMicrosoft Store版の利用が推奨されています。

このような経緯があり、Amazon Music RPCの仕組みを参考にして、非Microsoft Store版のAmazon Music用のシンプルなツールを開発しました。
Amazon Music Rich Presenceの特徴
Amazon Music Rich PresenceはAmazon Music RPCの仕組みを参考にしていますが、プログラムは筆者がゼロから製作しています。Amazon Music Rich Presenceのおもな機能は次のとおりです。
- Amazon Musicで現在再生中の楽曲の情報と再生位置をDiscordのプロフィールにRich Presenceとして表示
- Amazon Musicの非Microsoft Store版のデスクトップクライアントに対応
- 機能を最小限に絞ったシンプルなUI
- システムトレイへの最小化に対応
- 自動アップデートとPC起動時のスタートアップに対応(設定で有効化した場合)
Amazon Music Rich Presenceは、このようにシンプルなUIを採用しています。

Discordのプロフィールには、再生中の楽曲の情報がこのように表示されます。
![[Amazon Music Rich Presenceを再生中]と書かれた画面のスクリーンショット](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Famazon-music-rech-presence-discord.png&w=1080&q=75)
Amazon Music Rich Presenceでは、再生中の楽曲の曲名、歌手、アルバム、再生位置を表示できます。また、自分自身でプロフィールを閲覧した際には表示されませんが、ほかのユーザーが閲覧した際には[Listen on Amazon Music]というボタンが表示されるようになっています。
Amazon Music Rich Presenceの使い方
Amazon Music Rich Presenceを利用するには、GitHubのリリースページからインストーラーをダウンロードし、実行してください。記事執筆時点では、x64のWindows 11にのみ対応しています。
Amazon Music Rich Presenceをインストールして起動したら、画面中央にある[Launch Amazon Music]ボタンをクリックするとAmazon Musicが起動します。あとはAmazon Musicで音楽を再生するだけで、Discordのプロフィールに曲の情報が表示されるようになります。
Discordのプロフィールに表示される曲名か、Amazon Music Rich Presenceに表示されている音楽プレイヤー風のUIをクリックすると、Web版のAmazon Musicでその楽曲を表示できます。
なお、技術的な制約により、Amazon Music Rich Presenceの[Launch Amazon Music]ボタンからAmazon Musicを起動する必要があります。Amazon Music Rich Presenceを経由せずにAmazon Musicを直接起動した場合には、再生中の楽曲の情報を取得できません。
技術的な話
Amazon MusicのデスクトップクライアントはElectronで構築されているため、Chrome DevTools Protocol(CDP)を有効化した状態で起動すると、再生中の楽曲の情報を取得できます。CDPはデフォルトで無効化されているため、再生中の楽曲の情報を取得するにはAmazon Music Rich Presence経由でAmazon Musicを起動する必要があるわけです。
また、Amazon Music Rich Presenceの開発にはElectrobunを利用してみました。Electrobunは、ElectronのようにWebの技術でデスクトップアプリを開発できるフレームワークです。ただし、Electronとは異なり、システムのWebViewを利用するためバンドルサイズが小さかったり、差分アップデートに対応していたりします。
Electrobunを開発に活用してみた感想として、現時点でのElectrobunはシンプルなツールの開発には便利な一方で、細部にこだわろうとすると機能不足やバグが目立つという印象を受けました。今年3月の時点では高DPIディスプレイに対応していなかったり、タイトルバーがダークモードに対応していなかったりしましたが、現在ではそれらは改善しており、今後も次々と改善が進むことが期待できます。
余談ですが、Web版のAmazon MusicはWeb Componentsベースで構築されているのに対して、デスクトップクライアントはVue 2で構築されているようです。さらに、デスクトップクライアントはMicorsoft版と非Microsoftストア版で微妙に挙動が異なるので、AmazonはPC向けに実質的に3種類の異なるクライアントを保守しているようです。
ユーザーのリージョンのAmazon Musicにリダイレクトする仕組み
Amazonのサービスは、実はユーザーのリージョンごとに分離されています。たとえば、アメリカのAmazonはamazon.comですが、日本のAmazonはamazon.co.jpです。Amazon Musicも同様で、アメリカ版はmusic.amazon.com、日本版はmusic.amazon.co.jpとなっており、アカウントの互換性はありません。
Amazon Music Rich Presenceを利用しているユーザーのリージョンは、Amazon Musicのクライアントから特定できます。しかし、Discordのプロフィールに楽曲のリンクを表示する場合、そのリンクをクリックするユーザーのリージョンを事前に知る方法はありません。
Amazonが広告に使っているURLなどをChatGPTに分析してもらったところ、次の形式のURLを使うと、ユーザーのリージョンのAmazon Musicに自動でリダイレクトできることが判明しました。
https://musicapp.amazon.com/albums/<アルバムID>?trackAsin=<トラックID>この形式のURLをデスクトップで開くと、そのユーザーのリージョンのAmazon Musicにリダイレクトされます。スマホの場合は、Amazon Musicアプリがインストールされていればアプリが開き、インストールされていなければアプリストアが開きます。
スマホでアプリがインストールされていない場合に、アプリストアではなくWeb版のAmazon Musicを開くようにしたい場合は、たとえば次のような形式のURLを利用できます。
https://am.app.link/?$deeplink_path=tracks/<トラックID>&$fallback_url=https://music.amazon.com/tracks/<トラックID>&$fallback_url_jp=https://music.amazon.co.jp/tracks/<トラックID>AmazonはBranchという短縮URLサービスを利用しているようで、am.app.linkはBranchのパラメーターを受け付けます。
$fallback_urlや$fallback_url_jpといったパラメーターでは、スマホにアプリがインストールされていない場合のフォールバックのリダイレクト先を指定できます。Branchではユーザーのリージョンごとにフォールバックを指定できるものの、一括では指定できず、リージョンごとに個別に指定する必要があります。$fallback_url_jpは日本ユーザー向けのフォールバックで、$fallback_urlはいずれのフォールバックにも当てはまらない場合のフォールバック(フォールバックのフォールバック)です。
Amazon Music Rich PresenceがDiscordに表示するリンクは、Amazon Musicの利用者数の上位5つのリージョンのフォールバックを指定しています。いずれにも当てはまらないユーザーは、music.amazon.comにリダイレクトされます。
まとめ
Amazon Musicで再生中の楽曲の情報をDiscordのプロフィールに表示できる「Amazon Music Rich Presence」を公開しました。
Windowsの非Microsoft Store版のAmazon Musicにしか対応していないという制約はありますが、シンプルさを目指したソフトなので興味のある方はぜひインストールしてみてください。
すべてのソースコードはGitHubから確認できます。
記事をシェア
フォローして最新情報を入手
Googleの優先ソースに追加すると、このサイトの記事をGoogleで見つけやすくなります。また、ぜひXやRSSフィードもフォローしてください。
次の記事
-1.png&w=1080&q=75)
生まれた時から、母国語よりも先にJavaScriptを使っていました。ネットの海のどこにもいなくてどこにでもいます。
Webフロントエンドプログラマーとして、TypeScriptを用いたWebアプリやブラウザー拡張機能を制作。Xのシャドウバン検知ツール「Shadowban Scanner」やリンクカード復活ツール「Restore Link Card」を公開し、国内外のメディアで紹介されました。iGEM 2023ではJapan-UnitedチームのWikiを制作してGrand Prizeの獲得に貢献。ブログではXやSNSの最新ニュース、不具合の検証と対処法、フロントエンド開発の知見を発信しています。



![npmのパッケージの設定画面のスクリーンショット。[Trusted Publisher]セクションの[Select your publisher]に[GitHub Actions]と[GitLab CI/CD]の2つのボタンが表示されている](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fnpm-trusted-publishing-settings.png&w=3840&q=75)






