song player figuring out metadata

This commit is contained in:
2026-02-05 23:47:34 -08:00
parent 7ffb71bc40
commit 9ff6f08393

View File

@@ -1,3 +1,7 @@
<script module lang="ts">
let activeMediaToken: symbol | null = null;
</script>
<script lang="ts"> <script lang="ts">
type SongType = 1 | 2 | 3 | number; type SongType = 1 | 2 | 3 | number;
@@ -21,6 +25,9 @@
showPlayer = false, showPlayer = false,
}: SongEntryProps = $props(); }: SongEntryProps = $props();
let paused = $state(true);
const mediaToken = Symbol("song-entry");
const typeLabelMap: Record<number, string> = { const typeLabelMap: Record<number, string> = {
1: "OP", 1: "OP",
2: "ED", 2: "ED",
@@ -51,11 +58,19 @@
const mediaSession = navigator.mediaSession; const mediaSession = navigator.mediaSession;
if (!mediaSession || typeof MediaMetadata === "undefined") return; if (!mediaSession || typeof MediaMetadata === "undefined") return;
mediaSession.metadata = new MediaMetadata({ if (!paused) {
title: songName, activeMediaToken = mediaToken;
artist: mediaArtist, mediaSession.metadata = new MediaMetadata({
album: mediaAlbum, title: songName,
}); artist: mediaArtist,
album: mediaAlbum,
});
return;
}
if (activeMediaToken !== mediaToken) return;
activeMediaToken = null;
mediaSession.metadata = null;
}); });
</script> </script>
@@ -78,6 +93,7 @@
controls controls
preload="metadata" preload="metadata"
title={`${mediaTitle}${songName}${mediaArtist}`} title={`${mediaTitle}${songName}${mediaArtist}`}
bind:paused
> >
<source src={`/cdn/${fileName}`} type="audio/mpeg" /> <source src={`/cdn/${fileName}`} type="audio/mpeg" />
Your browser does not support the audio element. Your browser does not support the audio element.