Clean up lastfm importing

This commit is contained in:
2023-02-16 22:31:46 -05:00
parent 9568726bf3
commit bb9936af65
7 changed files with 89 additions and 31 deletions

View File

@ -82,7 +82,8 @@ class AudioScrobblerTSVImport(TimeStampedModel):
class LastFmImport(TimeStampedModel):
user = models.ForeignKey(User, on_delete=models.DO_NOTHING, **BNULL)
uuid = models.UUIDField(editable=False, default=uuid4)
processed_on = models.DateTimeField(**BNULL)
processing_started = models.DateTimeField(**BNULL)
processed_finished = models.DateTimeField(**BNULL)
process_log = models.TextField(**BNULL)
process_count = models.IntegerField(**BNULL)
@ -91,8 +92,10 @@ class LastFmImport(TimeStampedModel):
def process(self, import_all=False):
"""Import scrobbles found on LastFM"""
if self.processed_on:
logger.info(f"{self} already processed on {self.processed_on}")
if self.processed_finished:
logger.info(
f"{self} already processed on {self.processed_finished}"
)
return
last_import = None
@ -111,7 +114,10 @@ class LastFmImport(TimeStampedModel):
lastfm = LastFM(self.user)
last_processed = None
if last_import:
last_processed = last_import.processed_on
last_processed = last_import.processed_finished
self.processing_started = timezone.now()
self.save(update_fields=['processing_started'])
scrobbles = lastfm.import_from_lastfm(last_processed)
self.process_log = ""
@ -124,19 +130,22 @@ class LastFmImport(TimeStampedModel):
self.process_log += log_line
self.process_count = len(scrobbles)
else:
self.process_log = f"Created no new scrobbles"
self.process_count = 0
self.processed_on = timezone.now()
self.processed_finished = timezone.now()
self.save(
update_fields=['processed_on', 'process_count', 'process_log']
update_fields=[
'processed_finished',
'process_count',
'process_log',
]
)
def undo(self, dryrun=False):
"""Undo import of scrobbles from LastFM"""
LastFM.undo_lastfm_import(self.process_log, dryrun)
self.processed_on = None
self.save(update_fields=['processed_on'])
self.processed_finished = None
self.save(update_fields=['processed_finished'])
class ChartRecord(TimeStampedModel):