|
@@ -39,8 +39,11 @@ from videogames import retroarch
|
|
from videogames.models import VideoGame
|
|
from videogames.models import VideoGame
|
|
from videos.models import Series, Video
|
|
from videos.models import Series, Video
|
|
from scrobbles.dataclasses import (
|
|
from scrobbles.dataclasses import (
|
|
|
|
+ BoardGameMetadata,
|
|
|
|
+ LifeEventMetadata,
|
|
ScrobbleMetadataDecoder,
|
|
ScrobbleMetadataDecoder,
|
|
ScrobbleMetadataEncoder,
|
|
ScrobbleMetadataEncoder,
|
|
|
|
+ VideoMetadata,
|
|
)
|
|
)
|
|
from webpages.models import WebPage
|
|
from webpages.models import WebPage
|
|
from lifeevents.models import LifeEvent
|
|
from lifeevents.models import LifeEvent
|
|
@@ -602,6 +605,25 @@ class Scrobble(TimeStampedModel):
|
|
},
|
|
},
|
|
)
|
|
)
|
|
|
|
|
|
|
|
+ @property
|
|
|
|
+ def metadata(self):
|
|
|
|
+ metadata_cls = None
|
|
|
|
+ if self.media_type == self.MediaType.LIFE_EVENT:
|
|
|
|
+ metadata_cls = LifeEventMetadata
|
|
|
|
+ if self.media_type == self.MediaType.BOARD_GAME:
|
|
|
|
+ metadata_cls = BoardGameMetadata
|
|
|
|
+ if self.media_type == self.MediaType.VIDEO:
|
|
|
|
+ metadata_cls = VideoMetadata
|
|
|
|
+
|
|
|
|
+ if not metadata_cls:
|
|
|
|
+ logger.warn(
|
|
|
|
+ f"Media type has no metadata class",
|
|
|
|
+ extra={"media_type": self.media_type, "scrobble_id": self.id},
|
|
|
|
+ )
|
|
|
|
+ return None
|
|
|
|
+
|
|
|
|
+ return metadata_cls(**self.log)
|
|
|
|
+
|
|
@property
|
|
@property
|
|
def tzinfo(self):
|
|
def tzinfo(self):
|
|
return pytz.timezone(self.timezone)
|
|
return pytz.timezone(self.timezone)
|