浏览代码

[scrobbles] Refactor run time sec to be blank by default

Colin Powell 2 周之前
父节点
当前提交
a474b5df48
共有 21 个文件被更改,包括 465 次插入4 次删除
  1. 0 0
      data/moods.json
  2. 26 0
      vrobbler/apps/beers/migrations/0006_remove_beer_run_time_seconds_and_more.py
  3. 26 0
      vrobbler/apps/boardgames/migrations/0011_remove_boardgame_run_time_seconds_and_more.py
  4. 39 0
      vrobbler/apps/books/migrations/0032_remove_book_run_time_seconds_and_more.py
  5. 26 0
      vrobbler/apps/bricksets/migrations/0003_remove_brickset_run_time_seconds_and_more.py
  6. 26 0
      vrobbler/apps/foods/migrations/0004_remove_food_run_time_seconds_and_more.py
  7. 26 0
      vrobbler/apps/lifeevents/migrations/0003_remove_lifeevent_run_time_seconds_and_more.py
  8. 26 0
      vrobbler/apps/locations/migrations/0008_remove_geolocation_run_time_seconds_and_more.py
  9. 0 0
      vrobbler/apps/moods/fixtures/moods.json
  10. 26 0
      vrobbler/apps/moods/migrations/0004_remove_mood_run_time_seconds_and_more.py
  11. 26 0
      vrobbler/apps/music/migrations/0029_remove_track_run_time_seconds_and_more.py
  12. 26 0
      vrobbler/apps/podcasts/migrations/0018_remove_podcastepisode_run_time_seconds_and_more.py
  13. 26 0
      vrobbler/apps/puzzles/migrations/0004_remove_puzzle_run_time_seconds_and_more.py
  14. 8 2
      vrobbler/apps/scrobbles/mixins.py
  15. 26 0
      vrobbler/apps/sports/migrations/0016_remove_sportevent_run_time_seconds_and_more.py
  16. 26 0
      vrobbler/apps/tasks/migrations/0005_remove_task_run_time_seconds_and_more.py
  17. 26 0
      vrobbler/apps/trails/migrations/0006_remove_trail_run_time_seconds_and_more.py
  18. 26 0
      vrobbler/apps/videogames/migrations/0013_remove_videogame_run_time_seconds_and_more.py
  19. 2 2
      vrobbler/apps/videogames/models.py
  20. 26 0
      vrobbler/apps/videos/migrations/0024_remove_video_run_time_seconds_and_more.py
  21. 26 0
      vrobbler/apps/webpages/migrations/0006_remove_webpage_run_time_seconds_and_more.py

文件差异内容过多而无法显示
+ 0 - 0
data/moods.json


+ 26 - 0
vrobbler/apps/beers/migrations/0006_remove_beer_run_time_seconds_and_more.py

@@ -0,0 +1,26 @@
+# Generated by Django 4.2.19 on 2025-10-30 01:52
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('beers', '0005_alter_beer_run_time_seconds'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='beer',
+            name='run_time_seconds',
+        ),
+        migrations.RemoveField(
+            model_name='beer',
+            name='run_time_ticks',
+        ),
+        migrations.AddField(
+            model_name='beer',
+            name='base_run_time_seconds',
+            field=models.IntegerField(blank=True, null=True),
+        ),
+    ]

+ 26 - 0
vrobbler/apps/boardgames/migrations/0011_remove_boardgame_run_time_seconds_and_more.py

@@ -0,0 +1,26 @@
+# Generated by Django 4.2.19 on 2025-10-30 01:52
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('boardgames', '0010_boardgame_published_year'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='boardgame',
+            name='run_time_seconds',
+        ),
+        migrations.RemoveField(
+            model_name='boardgame',
+            name='run_time_ticks',
+        ),
+        migrations.AddField(
+            model_name='boardgame',
+            name='base_run_time_seconds',
+            field=models.IntegerField(blank=True, null=True),
+        ),
+    ]

+ 39 - 0
vrobbler/apps/books/migrations/0032_remove_book_run_time_seconds_and_more.py

@@ -0,0 +1,39 @@
+# Generated by Django 4.2.19 on 2025-10-30 01:52
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('books', '0031_book_next_readcomics_url'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='book',
+            name='run_time_seconds',
+        ),
+        migrations.RemoveField(
+            model_name='book',
+            name='run_time_ticks',
+        ),
+        migrations.RemoveField(
+            model_name='paper',
+            name='run_time_seconds',
+        ),
+        migrations.RemoveField(
+            model_name='paper',
+            name='run_time_ticks',
+        ),
+        migrations.AddField(
+            model_name='book',
+            name='base_run_time_seconds',
+            field=models.IntegerField(blank=True, null=True),
+        ),
+        migrations.AddField(
+            model_name='paper',
+            name='base_run_time_seconds',
+            field=models.IntegerField(blank=True, null=True),
+        ),
+    ]

+ 26 - 0
vrobbler/apps/bricksets/migrations/0003_remove_brickset_run_time_seconds_and_more.py

@@ -0,0 +1,26 @@
+# Generated by Django 4.2.19 on 2025-10-30 01:52
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('bricksets', '0002_alter_brickset_run_time_seconds'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='brickset',
+            name='run_time_seconds',
+        ),
+        migrations.RemoveField(
+            model_name='brickset',
+            name='run_time_ticks',
+        ),
+        migrations.AddField(
+            model_name='brickset',
+            name='base_run_time_seconds',
+            field=models.IntegerField(blank=True, null=True),
+        ),
+    ]

+ 26 - 0
vrobbler/apps/foods/migrations/0004_remove_food_run_time_seconds_and_more.py

@@ -0,0 +1,26 @@
+# Generated by Django 4.2.19 on 2025-10-30 01:52
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('foods', '0003_food_calories'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='food',
+            name='run_time_seconds',
+        ),
+        migrations.RemoveField(
+            model_name='food',
+            name='run_time_ticks',
+        ),
+        migrations.AddField(
+            model_name='food',
+            name='base_run_time_seconds',
+            field=models.IntegerField(blank=True, null=True),
+        ),
+    ]

+ 26 - 0
vrobbler/apps/lifeevents/migrations/0003_remove_lifeevent_run_time_seconds_and_more.py

@@ -0,0 +1,26 @@
+# Generated by Django 4.2.19 on 2025-10-30 01:52
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('lifeevents', '0002_alter_lifeevent_run_time_seconds'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='lifeevent',
+            name='run_time_seconds',
+        ),
+        migrations.RemoveField(
+            model_name='lifeevent',
+            name='run_time_ticks',
+        ),
+        migrations.AddField(
+            model_name='lifeevent',
+            name='base_run_time_seconds',
+            field=models.IntegerField(blank=True, null=True),
+        ),
+    ]

+ 26 - 0
vrobbler/apps/locations/migrations/0008_remove_geolocation_run_time_seconds_and_more.py

@@ -0,0 +1,26 @@
+# Generated by Django 4.2.19 on 2025-10-30 01:52
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('locations', '0007_alter_geolocation_run_time_seconds'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='geolocation',
+            name='run_time_seconds',
+        ),
+        migrations.RemoveField(
+            model_name='geolocation',
+            name='run_time_ticks',
+        ),
+        migrations.AddField(
+            model_name='geolocation',
+            name='base_run_time_seconds',
+            field=models.IntegerField(blank=True, null=True),
+        ),
+    ]

文件差异内容过多而无法显示
+ 0 - 0
vrobbler/apps/moods/fixtures/moods.json


+ 26 - 0
vrobbler/apps/moods/migrations/0004_remove_mood_run_time_seconds_and_more.py

@@ -0,0 +1,26 @@
+# Generated by Django 4.2.19 on 2025-10-30 01:52
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('moods', '0003_alter_mood_run_time_seconds'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='mood',
+            name='run_time_seconds',
+        ),
+        migrations.RemoveField(
+            model_name='mood',
+            name='run_time_ticks',
+        ),
+        migrations.AddField(
+            model_name='mood',
+            name='base_run_time_seconds',
+            field=models.IntegerField(blank=True, null=True),
+        ),
+    ]

+ 26 - 0
vrobbler/apps/music/migrations/0029_remove_track_run_time_seconds_and_more.py

@@ -0,0 +1,26 @@
+# Generated by Django 4.2.19 on 2025-10-30 01:52
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('music', '0028_alter_track_albums'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='track',
+            name='run_time_seconds',
+        ),
+        migrations.RemoveField(
+            model_name='track',
+            name='run_time_ticks',
+        ),
+        migrations.AddField(
+            model_name='track',
+            name='base_run_time_seconds',
+            field=models.IntegerField(blank=True, null=True),
+        ),
+    ]

+ 26 - 0
vrobbler/apps/podcasts/migrations/0018_remove_podcastepisode_run_time_seconds_and_more.py

@@ -0,0 +1,26 @@
+# Generated by Django 4.2.19 on 2025-10-30 01:52
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('podcasts', '0017_podcast_podcastindex_id'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='podcastepisode',
+            name='run_time_seconds',
+        ),
+        migrations.RemoveField(
+            model_name='podcastepisode',
+            name='run_time_ticks',
+        ),
+        migrations.AddField(
+            model_name='podcastepisode',
+            name='base_run_time_seconds',
+            field=models.IntegerField(blank=True, null=True),
+        ),
+    ]

+ 26 - 0
vrobbler/apps/puzzles/migrations/0004_remove_puzzle_run_time_seconds_and_more.py

@@ -0,0 +1,26 @@
+# Generated by Django 4.2.19 on 2025-10-30 01:52
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('puzzles', '0003_rename_igdb_id_puzzle_ipdb_id_and_more'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='puzzle',
+            name='run_time_seconds',
+        ),
+        migrations.RemoveField(
+            model_name='puzzle',
+            name='run_time_ticks',
+        ),
+        migrations.AddField(
+            model_name='puzzle',
+            name='base_run_time_seconds',
+            field=models.IntegerField(blank=True, null=True),
+        ),
+    ]

+ 8 - 2
vrobbler/apps/scrobbles/mixins.py

@@ -57,14 +57,20 @@ class ScrobblableMixin(TimeStampedModel):
 
     uuid = models.UUIDField(default=uuid4, editable=False, **BNULL)
     title = models.CharField(max_length=255, **BNULL)
-    run_time_seconds = models.IntegerField(default=900)
-    run_time_ticks = models.PositiveBigIntegerField(**BNULL)
+    base_run_time_seconds = models.IntegerField(**BNULL)
 
     genre = TaggableManager(through=ObjectWithGenres, blank=True)
 
     class Meta:
         abstract = True
 
+    @property
+    def run_time_seconds(self) -> int:
+        run_time = 900
+        if self.base_run_time_seconds:
+            run_time = self.base_run_time_seconds
+        return run_time
+
     @classmethod
     def is_long_play_media(cls) -> bool:
         return False

+ 26 - 0
vrobbler/apps/sports/migrations/0016_remove_sportevent_run_time_seconds_and_more.py

@@ -0,0 +1,26 @@
+# Generated by Django 4.2.19 on 2025-10-30 01:52
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('sports', '0015_alter_sportevent_run_time_seconds'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='sportevent',
+            name='run_time_seconds',
+        ),
+        migrations.RemoveField(
+            model_name='sportevent',
+            name='run_time_ticks',
+        ),
+        migrations.AddField(
+            model_name='sportevent',
+            name='base_run_time_seconds',
+            field=models.IntegerField(blank=True, null=True),
+        ),
+    ]

+ 26 - 0
vrobbler/apps/tasks/migrations/0005_remove_task_run_time_seconds_and_more.py

@@ -0,0 +1,26 @@
+# Generated by Django 4.2.19 on 2025-10-30 01:52
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('tasks', '0004_alter_task_run_time_seconds'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='task',
+            name='run_time_seconds',
+        ),
+        migrations.RemoveField(
+            model_name='task',
+            name='run_time_ticks',
+        ),
+        migrations.AddField(
+            model_name='task',
+            name='base_run_time_seconds',
+            field=models.IntegerField(blank=True, null=True),
+        ),
+    ]

+ 26 - 0
vrobbler/apps/trails/migrations/0006_remove_trail_run_time_seconds_and_more.py

@@ -0,0 +1,26 @@
+# Generated by Django 4.2.19 on 2025-10-30 01:52
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('trails', '0005_trail_alltrails_id_trail_gaiagps_id'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='trail',
+            name='run_time_seconds',
+        ),
+        migrations.RemoveField(
+            model_name='trail',
+            name='run_time_ticks',
+        ),
+        migrations.AddField(
+            model_name='trail',
+            name='base_run_time_seconds',
+            field=models.IntegerField(blank=True, null=True),
+        ),
+    ]

+ 26 - 0
vrobbler/apps/videogames/migrations/0013_remove_videogame_run_time_seconds_and_more.py

@@ -0,0 +1,26 @@
+# Generated by Django 4.2.19 on 2025-10-30 01:52
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('videogames', '0012_alter_videogame_run_time_seconds'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='videogame',
+            name='run_time_seconds',
+        ),
+        migrations.RemoveField(
+            model_name='videogame',
+            name='run_time_ticks',
+        ),
+        migrations.AddField(
+            model_name='videogame',
+            name='base_run_time_seconds',
+            field=models.IntegerField(blank=True, null=True),
+        ),
+    ]

+ 2 - 2
vrobbler/apps/videogames/models.py

@@ -205,7 +205,7 @@ class VideoGame(LongPlayScrobblableMixin):
 
     @property
     def seconds_for_completion(self) -> int:
-        completion_time = self.run_time_ticks
+        completion_time = self.run_time_seconds
         if not completion_time:
             # Default to 10 hours, why not
             completion_time = 10 * 60 * 60
@@ -237,7 +237,7 @@ class VideoGame(LongPlayScrobblableMixin):
         if self.igdb_id:
             load_game_data_from_igdb(self.id, self.igdb_id)
 
-        if (not self.run_time_ticks or force_update) and self.main_story_time:
+        if force_update and self.main_story_time:
             self.run_time_seconds = self.main_story_time
             self.save(update_fields=["run_time_seconds"])
 

+ 26 - 0
vrobbler/apps/videos/migrations/0024_remove_video_run_time_seconds_and_more.py

@@ -0,0 +1,26 @@
+# Generated by Django 4.2.19 on 2025-10-30 01:52
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('videos', '0023_video_tmdb_rating'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='video',
+            name='run_time_seconds',
+        ),
+        migrations.RemoveField(
+            model_name='video',
+            name='run_time_ticks',
+        ),
+        migrations.AddField(
+            model_name='video',
+            name='base_run_time_seconds',
+            field=models.IntegerField(blank=True, null=True),
+        ),
+    ]

+ 26 - 0
vrobbler/apps/webpages/migrations/0006_remove_webpage_run_time_seconds_and_more.py

@@ -0,0 +1,26 @@
+# Generated by Django 4.2.19 on 2025-10-30 01:52
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('webpages', '0005_alter_webpage_run_time_seconds'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='webpage',
+            name='run_time_seconds',
+        ),
+        migrations.RemoveField(
+            model_name='webpage',
+            name='run_time_ticks',
+        ),
+        migrations.AddField(
+            model_name='webpage',
+            name='base_run_time_seconds',
+            field=models.IntegerField(blank=True, null=True),
+        ),
+    ]

部分文件因为文件数量过多而无法显示