ABS: fix for another unexpected API response (#1994)
authorFabian Munkes <105975993+fmunkes@users.noreply.github.com>
Tue, 4 Mar 2025 21:24:00 +0000 (22:24 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Wed, 5 Mar 2025 20:51:59 +0000 (21:51 +0100)
music_assistant/providers/audiobookshelf/__init__.py
music_assistant/providers/audiobookshelf/manifest.json
music_assistant/providers/audiobookshelf/parsers.py
requirements_all.txt

index 30fc66b307f9ad324e5727e351335c1232e79015..9f7de87b4a385d38e98087632b83144ae5eb7f52 100644 (file)
@@ -574,7 +574,7 @@ class Audiobookshelf(MusicProvider):
         if media_type == MediaType.AUDIOBOOK:
             progress = await self._client.get_my_media_progress(item_id=item_id)
 
-        if progress is not None:
+        if progress is not None and progress.current_time is not None:
             self.logger.debug("Resume position: obtained.")
             return progress.is_finished, int(progress.current_time * 1000)
 
@@ -1097,7 +1097,7 @@ class Audiobookshelf(MusicProvider):
             # timestamp, we do not update again.
             if not self.progress_guard.guard_ok_abs(progress):
                 continue
-            if not progress.current_time >= 30:
+            if progress.current_time is not None and not progress.current_time >= 30:
                 # same as mass default, only > 30s
                 continue
             if progress.library_item_id not in known_ids:
@@ -1113,6 +1113,8 @@ class Audiobookshelf(MusicProvider):
         # helper progress also ensures no useless progress updates,
         # see comment above
         self.progress_guard.add_progress(progress.library_item_id)
+        if progress.current_time is None:
+            return
         mass_audiobook = await self.mass.music.get_library_item_by_prov_id(
             media_type=MediaType.AUDIOBOOK,
             item_id=progress.library_item_id,
@@ -1130,6 +1132,8 @@ class Audiobookshelf(MusicProvider):
         # helper progress also ensures no useless progress updates,
         # see comment above
         self.progress_guard.add_progress(progress.library_item_id, progress.episode_id)
+        if progress.current_time is None:
+            return
         _episode_id = f"{progress.library_item_id} {progress.episode_id}"
         try:
             # need to obtain full podcast, and then search for episode
index 84f410ecc2c0e9205855c618fb6b8f62aaa581d3..83246288d1438d98e67a4d13023980aa96d11c7c 100644 (file)
@@ -7,7 +7,7 @@
     "@fmunkes"
   ],
   "requirements": [
-    "aioaudiobookshelf==0.1.3"
+    "aioaudiobookshelf==0.1.4"
   ],
   "documentation": "https://music-assistant.io/music-providers/audiobookshelf",
   "multi_instance": true
index c017b3914f0748f054ceb93bdff506ca0accd620..c1f2258b0fa5705bb7575aab5577fe8a7ddfec47 100644 (file)
@@ -141,7 +141,7 @@ def parse_podcast_episode(
             [MediaItemImage(type=ImageType.THUMB, path=url_cover, provider=lookup_key)]
         )
 
-    if media_progress is not None:
+    if media_progress is not None and media_progress.current_time is not None:
         mass_episode.resume_position_ms = int(media_progress.current_time * 1000)
         mass_episode.fully_played = media_progress.is_finished
 
@@ -217,7 +217,7 @@ def parse_audiobook(
         mass_audiobook.authors.set([abs_audiobook.media.metadata.author_name])
         mass_audiobook.narrators.set([abs_audiobook.media.metadata.narrator_name])
 
-    if media_progress is not None:
+    if media_progress is not None and media_progress.current_time is not None:
         mass_audiobook.resume_position_ms = int(media_progress.current_time * 1000)
         mass_audiobook.fully_played = media_progress.is_finished
 
index afa499d89c3135908c4ba90b774a8bef31b99249..0cff33677292226c7e29045ed978674bd15063d6 100644 (file)
@@ -1,7 +1,7 @@
 # WARNING: this file is autogenerated!
 
 Brotli>=1.0.9
-aioaudiobookshelf==0.1.3
+aioaudiobookshelf==0.1.4
 aiodns>=3.2.0
 aiofiles==24.1.0
 aiohttp==3.11.12