feat: add first listened to dates for media items

This commit is contained in:
Gabe Farrell 2025-11-18 19:49:13 -05:00
parent 300bac0e19
commit cb32cd4509
12 changed files with 134 additions and 2 deletions

View file

@ -256,6 +256,7 @@ type Track = {
album_id: number
musicbrainz_id: string
time_listened: number
first_listen: number
}
type Artist = {
id: number
@ -265,6 +266,7 @@ type Artist = {
listen_count: number
musicbrainz_id: string
time_listened: number
first_listen: number
is_primary: boolean
}
type Album = {
@ -276,6 +278,7 @@ type Album = {
artists: SimpleArtists[]
musicbrainz_id: string
time_listened: number
first_listen: number
}
type Alias = {
id: number

View file

@ -44,6 +44,7 @@ export default function Album() {
subContent={<div className="flex flex-col gap-2 items-start">
{album.listen_count && <p>{album.listen_count} play{ album.listen_count > 1 ? 's' : ''}</p>}
{<p title={Math.floor(album.time_listened / 60) + " minutes"}>{timeListenedString(album.time_listened)}</p>}
{<p title={new Date(album.first_listen * 1000).toLocaleString()}>Listening since {new Date(album.first_listen * 1000).toLocaleDateString()}</p>}
</div>}
>
<div className="mt-10">

View file

@ -50,6 +50,7 @@ export default function Artist() {
subContent={<div className="flex flex-col gap-2 items-start">
{artist.listen_count && <p>{artist.listen_count} play{ artist.listen_count > 1 ? 's' : ''}</p>}
{<p title={Math.floor(artist.time_listened / 60) + " minutes"}>{timeListenedString(artist.time_listened)}</p>}
{<p title={new Date(artist.first_listen * 1000).toLocaleString()}>Listening since {new Date(artist.first_listen * 1000).toLocaleDateString()}</p>}
</div>}
>
<div className="mt-10">

View file

@ -46,7 +46,8 @@ export default function Track() {
subContent={<div className="flex flex-col gap-2 items-start">
<Link to={`/album/${track.album_id}`}>appears on {album.title}</Link>
{track.listen_count && <p>{track.listen_count} play{ track.listen_count > 1 ? 's' : ''}</p>}
{<p title={Math.floor(track.time_listened / 60) + " minutes"}>{timeListenedString(track.time_listened)}</p>}
{<p title={Math.floor(track.time_listened / 60) + " minutes"}>{timeListenedString(track.time_listened)}</p>}
{<p title={new Date(track.first_listen * 1000).toLocaleString()}>Listening since {new Date(track.first_listen * 1000).toLocaleDateString()}</p>}
</div>}
>
<div className="mt-10">