29 lines
1.1 KiB
Python
29 lines
1.1 KiB
Python
# 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()
|