[scrobbles] Add tagging from labels
This commit is contained in:
@ -0,0 +1,26 @@
|
||||
# Generated by Django 4.2.29 on 2026-03-24 14:14
|
||||
|
||||
from django.db import migrations
|
||||
import taggit.managers
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("taggit", "0004_alter_taggeditem_content_type_alter_taggeditem_tag"),
|
||||
("scrobbles", "0073_delete_chartrecord"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="scrobble",
|
||||
name="tags",
|
||||
field=taggit.managers.TaggableManager(
|
||||
blank=True,
|
||||
help_text="A comma-separated list of tags.",
|
||||
through="taggit.TaggedItem",
|
||||
to="taggit.Tag",
|
||||
verbose_name="Tags",
|
||||
),
|
||||
),
|
||||
]
|
||||
@ -12,8 +12,9 @@ import pytz
|
||||
from beers.models import Beer
|
||||
from boardgames.models import BoardGame
|
||||
from books.koreader import process_koreader_sqlite_file
|
||||
from books.models import Book, Paper, BookPageLogData, BookLogData
|
||||
from books.models import Book, BookLogData, BookPageLogData, Paper
|
||||
from bricksets.models import BrickSet
|
||||
from charts.utils import build_charts
|
||||
from dataclass_wizard.errors import ParseError
|
||||
from django.conf import settings
|
||||
from django.contrib.auth import get_user_model
|
||||
@ -42,15 +43,15 @@ from profiles.utils import (
|
||||
from puzzles.models import Puzzle
|
||||
from scrobbles import dataclasses as logdata
|
||||
from scrobbles.constants import (
|
||||
AUTO_FINISH_MEDIA,
|
||||
LONG_PLAY_MEDIA,
|
||||
MEDIA_END_PADDING_SECONDS,
|
||||
AUTO_FINISH_MEDIA,
|
||||
)
|
||||
from scrobbles.importers.lastfm import LastFM
|
||||
from scrobbles.notifications import ScrobbleNtfyNotification
|
||||
from charts.utils import build_charts
|
||||
from scrobbles.utils import get_file_md5_hash, media_class_to_foreign_key
|
||||
from sports.models import SportEvent
|
||||
from taggit.managers import TaggableManager
|
||||
from tasks.models import Task
|
||||
from trails.models import Trail
|
||||
from videogames import retroarch
|
||||
@ -447,6 +448,7 @@ class Scrobble(TimeStampedModel):
|
||||
decoder=logdata.ScrobbleLogDataDecoder,
|
||||
)
|
||||
timezone = models.CharField(max_length=50, **BNULL)
|
||||
tags = TaggableManager(blank=True)
|
||||
|
||||
# Fields for keeping track of video game data
|
||||
videogame_save_data = models.FileField(
|
||||
@ -1296,6 +1298,8 @@ class Scrobble(TimeStampedModel):
|
||||
]
|
||||
)
|
||||
|
||||
self._add_labels_as_tags()
|
||||
|
||||
class_name = self.media_obj.__class__.__name__
|
||||
if class_name in LONG_PLAY_MEDIA.values():
|
||||
self.finish_long_play()
|
||||
@ -1313,6 +1317,11 @@ class Scrobble(TimeStampedModel):
|
||||
},
|
||||
)
|
||||
|
||||
def _add_labels_as_tags(self) -> None:
|
||||
if self.logdata and hasattr(self.logdata, "labels") and self.logdata.labels:
|
||||
for label in self.logdata.labels:
|
||||
self.tags.add(label)
|
||||
|
||||
def pause(self) -> None:
|
||||
if self.is_paused:
|
||||
logger.warning(f"{self.id} - already paused - {self.source}")
|
||||
|
||||
Reference in New Issue
Block a user