# Copyright 2024 (c) Anna Schumaker. """Convert a db.track.Track to a liblistenbrainz.Listen.""" import datetime import dateutil.tz import liblistenbrainz from .. import db from .. import gsetup class Listen(liblistenbrainz.Listen): """A single ListenBrainz Listen.""" def __init__(self, track: db.tracks.Track, *, listenid: int = None, listened_at: datetime.datetime = None): """Initialize our Listen class.""" album = track.get_medium().get_album() artists = [a.mbid for a in track.get_artists() if len(a.mbid) > 0] album_mbid = album.mbid if len(album.mbid) > 0 else None super().__init__(track.title, track.artist, release_name=album.name, artist_mbids=artists, release_group_mbid=album_mbid, tracknumber=track.number, additional_info={"media_player": f"emmental{gsetup.DEBUG_STR}"}) self.listenid = listenid if listened_at is not None: when = listened_at.replace(tzinfo=dateutil.tz.tzutc()) self.listened_at = when.astimezone().timestamp()