Update long play to use seconds

This commit is contained in:
2023-03-06 10:21:27 -05:00
parent 551e6f4f7e
commit 73c72ef465
3 changed files with 31 additions and 7 deletions

View File

@ -0,0 +1,22 @@
# Generated by Django 4.1.5 on 2023-03-06 15:20
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("scrobbles", "0028_scrobble_video_game_minutes_played"),
]
operations = [
migrations.RemoveField(
model_name="scrobble",
name="video_game_minutes_played",
),
migrations.AddField(
model_name="scrobble",
name="long_play_seconds",
field=models.BigIntegerField(blank=True, null=True),
),
]

View File

@ -418,7 +418,7 @@ class Scrobble(TimeStampedModel):
# Fields for keeping track long content like books and games # Fields for keeping track long content like books and games
book_pages_read = models.IntegerField(**BNULL) book_pages_read = models.IntegerField(**BNULL)
video_game_minutes_played = models.IntegerField(**BNULL) long_play_seconds = models.BigIntegerField(**BNULL)
long_play_complete = models.BooleanField(**BNULL) long_play_complete = models.BooleanField(**BNULL)
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
@ -601,7 +601,7 @@ class Scrobble(TimeStampedModel):
"Syncing long play media playback time to elapsed time since start" "Syncing long play media playback time to elapsed time since start"
) )
now = timezone.now() now = timezone.now()
updated_playback = (now - self.timestamp).seconds / 60 updated_playback = (now - self.timestamp).seconds
media_filter = models.Q(video_game=self.video_game) media_filter = models.Q(video_game=self.video_game)
if class_name == "Book": if class_name == "Book":
@ -612,20 +612,21 @@ class Scrobble(TimeStampedModel):
played_to_completion=True, played_to_completion=True,
long_play_complete=False, long_play_complete=False,
).last() ).last()
self.video_game_minutes_played = int(updated_playback) self.long_play_seconds = int(updated_playback)
if last_scrobble: if last_scrobble:
self.video_game_minutes_played = ( self.long_play_seconds = (
int(last_scrobble.playback_position) + updated_playback int(last_scrobble.playback_position) + updated_playback
) )
self.playback_position = int(updated_playback) self.playback_position = int(updated_playback)
self.playback_position_ticks = int(updated_playback) * 1000
self.played_to_completion = True self.played_to_completion = True
self.save( self.save(
update_fields=[ update_fields=[
"playback_position", "playback_position",
"playback_position_ticks", "playback_position_ticks",
"played_to_completion", "played_to_completion",
"video_game_minutes_played", "long_play_seconds",
] ]
) )
return return

View File

@ -6,8 +6,9 @@ register = template.Library()
@register.filter @register.filter
def natural_duration(value): def natural_duration(value):
value = int(value) value = int(value)
hours = int(value / 60) total_minutes = int(value / 60)
minutes = value - (hours * 60) hours = int(total_minutes / 60)
minutes = total_minutes - (hours * 60)
value_str = "" value_str = ""
if minutes: if minutes:
value_str = f"{minutes} minutes" value_str = f"{minutes} minutes"