useMediaMetadata

Fluxlay デスクトップアプリからストリーミングされる、システムで再生中のメディア情報をサブスクライブします。Spotify や Apple Music などのメディアプレーヤーの曲名、アーティスト、アルバムアートワーク、再生状態を取得できます。

インポート

import { useMediaMetadata } from "@fluxlay/react";

シグネチャ

function useMediaMetadata(options?: MediaMetadataOptions): MediaMetadataInfo;

引数

MediaMetadataOptions

プロパティデフォルト説明
intervalMsnumber1000ポーリング間隔(ミリ秒)。

戻り値

プロパティ説明
titlestring | null曲名。
artiststring | nullアーティスト名。
albumstring | nullアルバム名。
artworkstring | nullアートワーク画像の data URL(data:image/...;base64,...)。
durationnumber | null曲の長さ(秒)。
elapsedTimenumber | null経過再生時間(秒)。
playbackRatenumber | null再生速度(0.0 = 一時停止、1.0 = 再生中)。
isPlayingbooleanメディアが再生中かどうか。

最初のイベントを受信するまで全フィールドが nullisPlayingfalse)を返します。

使用例

function Wallpaper() {
  const { title, artist, artwork, isPlaying } = useMediaMetadata({ intervalMs: 1000 });
 
  return (
    <div style={{ display: "flex", alignItems: "center", gap: 16 }}>
      {artwork && <img src={artwork} alt="Album art" width={120} />}
      <div>
        <h2>{title ?? "再生中の曲はありません"}</h2>
        <p>{artist}</p>
        <p>{isPlaying ? "▶ 再生中" : "⏸ 一時停止"}</p>
      </div>
    </div>
  );
}

useProperties と組み合わせる

useProperties と組み合わせることで、エンドユーザーがポーリング間隔を変更できるようになります。

function Wallpaper() {
  const props = useProperties();
  const meta = useMediaMetadata({ intervalMs: props.updateInterval as number });
  // ...
}

備考

  • macOS 15.4 以降では、システムの Now Playing 情報取得に JavaScript for Automation(JXA)ベースのアダプターを使用します。
  • メディア情報はイベント駆動で更新されます(曲変更・再生/停止時)。経過時間はバックエンド側で補間されます。
  • アートワークは data URL 形式(Base64 エンコード済み)で提供されるため、<img> タグの src にそのまま設定できます。
  • このフックは Fluxlay デスクトップアプリ内でのみ動作します。通常のブラウザでは初期値を返します。
  • options の値が変更されると、ストリームが自動的に再接続されます。