|
|
@@ -511,7 +511,7 @@ class Scrobble(TimeStampedModel):
|
|
|
ScrobblableItem,
|
|
|
null=True,
|
|
|
on_delete=models.CASCADE,
|
|
|
- related_name="scrobbles",
|
|
|
+ related_name="scrobble_set",
|
|
|
)
|
|
|
media_type = models.CharField(
|
|
|
max_length=14,
|
|
|
@@ -863,8 +863,13 @@ class Scrobble(TimeStampedModel):
|
|
|
return pages_read
|
|
|
|
|
|
@property
|
|
|
- def is_long_play(self) -> bool:
|
|
|
- return self.media_obj.__class__.__name__ in LONG_PLAY_MEDIA.values()
|
|
|
+ def long_play_complete(self) -> bool:
|
|
|
+ if not self.item.is_long_play_media:
|
|
|
+ raise Exception("Is not long play media")
|
|
|
+ if not self.log:
|
|
|
+ return True
|
|
|
+
|
|
|
+ return self.log.get("long_play_complete", False)
|
|
|
|
|
|
@property
|
|
|
def elapsed_time(self) -> int | None:
|
|
|
@@ -894,7 +899,7 @@ class Scrobble(TimeStampedModel):
|
|
|
run_time_secs = self.media_obj.run_time_seconds
|
|
|
percent = int((playback_seconds / run_time_secs) * 100)
|
|
|
|
|
|
- if self.is_long_play:
|
|
|
+ if self.item.is_long_play_media:
|
|
|
long_play_secs = 0
|
|
|
if self.previous and not self.previous.long_play_complete:
|
|
|
long_play_secs = self.previous.long_play_seconds or 0
|