This commit has no recorded session.
diff
commit 5ac4625af9246a594e79194e85377d7390fc93abAuthor: Colin Powell <colin@unbl.ink>Date: Thu Jun 11 19:06:37 2026 -0400 [books] Fix bug in scrobbling comic books@@ -88,7 +88,7 @@ fetching and simple saving. *** Metadata sources **** Scraper -* Backlog [0/14] :vrobbler:project:personal:+* Backlog [1/15] :vrobbler:project:personal: ** TODO [#C] Create small utility to clean up tracks scrobbled with wonky playback times :vrobbler:personal:bug:music:scrobbles: :PROPERTIES: :ID: 702462cf-d54b-48c6-8a7c-78b8de751deb@@ -518,6 +518,17 @@ log a warning and move on. We should have a global view `/favorites/` that shows the logged in users's favorited media objects. +** DONE [#A] Fix scrobbling comic books :books:scrobbles:bug:+:PROPERTIES:+:ID: 8dfbff19-3fa4-f3b8-21c7-7a416498000c+:END:++*** Description++At some point logdata and log got confused, and now when you try+to scrobble a comic book, it just throws errors. We should look+into where the confusion happened and fix it.+ * Version 51.0 [3/3] ** DONE [#B] Fix koreader scrobble imports to use DST properly :bug:books:imports: :PROPERTIES:@@ -225,7 +225,9 @@ class KoReaderImport(BaseFileImportMixin): self.mark_started() try:- scrobbles = process_koreader_sqlite_file(self.upload_file_path, self.user.id)+ scrobbles = process_koreader_sqlite_file(+ self.upload_file_path, self.user.id+ ) self.record_log(scrobbles) except Exception as e: self.record_error(f"Import failed: {e}")@@ -272,7 +274,9 @@ class AudioScrobblerTSVImport(BaseFileImportMixin): self.mark_started() try:- scrobbles = import_audioscrobbler_tsv_file(self.upload_file_path, self.user.id)+ scrobbles = import_audioscrobbler_tsv_file(+ self.upload_file_path, self.user.id+ ) self.record_log(scrobbles) except Exception as e: self.record_error(f"Import failed: {e}")@@ -936,6 +940,8 @@ class Scrobble(TimeStampedModel): logdata_cls = logdata.BaseLogData log_dict = self.log+ if isinstance(log_dict, logdata.BaseLogData):+ log_dict = log_dict.asdict if isinstance(self.log, str): # There's nothing stopping django from saving a string in a JSONField :( logger.warning(@@ -1440,7 +1446,7 @@ class Scrobble(TimeStampedModel): start_ts=int(timezone.now().timestamp()), ) }- )+ ).asdict logger.info( f"[scrobbling] creating new scrobble",@@ -1455,7 +1461,7 @@ class Scrobble(TimeStampedModel): "calories", None ): if media.calories:- scrobble_data["log"] = FoodLogData(calories=media.calories)+ scrobble_data["log"] = FoodLogData(calories=media.calories).asdict scrobble = cls.create(scrobble_data) return scrobble@@ -1778,7 +1784,7 @@ class Scrobble(TimeStampedModel): return False def calculate_reading_stats(self, commit=True):- page_data = self.log.get("page_data")+ page_data = self.logdata.page_data if page_data: if isinstance(page_data, dict):@@ -1838,9 +1844,7 @@ class FavoriteMedia(TimeStampedModel): birding_location = models.ForeignKey( BirdingLocation, on_delete=models.CASCADE, **BNULL )- media_type = models.CharField(- max_length=20, choices=Scrobble.MediaType.choices- )+ media_type = models.CharField(max_length=20, choices=Scrobble.MediaType.choices) sent_to_mopidy = models.BooleanField(default=False) class Meta: