Bump pychromecast from 13.1.0 to 14.0.0 (#1122)
authordependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Fri, 22 Mar 2024 13:53:53 +0000 (14:53 +0100)
committerGitHub <noreply@github.com>
Fri, 22 Mar 2024 13:53:53 +0000 (14:53 +0100)
music_assistant/server/providers/chromecast/__init__.py
music_assistant/server/providers/chromecast/helpers.py
music_assistant/server/providers/chromecast/manifest.json
requirements_all.txt

index 0c849de7af5ecc3d6b8e64555f957fb4eae82fc8..a0c4d87b57a6ffdfbddba8374160ed6966c29833 100644 (file)
@@ -241,9 +241,7 @@ class ChromecastProvider(PlayerProvider):
     ) -> None:
         """Handle PLAY MEDIA on given player."""
         castplayer = self.castplayers[player_id]
-        use_flow_mode = await self.mass.config.get_player_config_value(
-            player_id, CONF_FLOW_MODE
-        ) or await self.mass.config.get_player_config_value(player_id, CONF_CROSSFADE)
+        use_flow_mode = await self.mass.config.get_player_config_value(player_id, CONF_FLOW_MODE)
         url = self.mass.streams.resolve_stream_url(
             player_id,
             queue_item=queue_item,
@@ -254,12 +252,13 @@ class ChromecastProvider(PlayerProvider):
             "type": "LOAD",
             "media": self._create_cc_media_item(queue_item, url),
         }
+
         # make sure that the media controller app is launched
         app_id = ALT_APP_ID if use_flow_mode else DEFAULT_APP_ID
         await self._launch_app(castplayer, app_id)
         # send queue info to the CC
         media_controller = castplayer.cc.media_controller
-        await asyncio.to_thread(media_controller.send_message, queuedata, True)
+        await asyncio.to_thread(media_controller.send_message, data=queuedata, inc_session_id=True)
 
     async def enqueue_next_queue_item(self, player_id: str, queue_item: QueueItem) -> None:
         """Handle enqueuing of the next queue item on the player."""
@@ -303,7 +302,7 @@ class ChromecastProvider(PlayerProvider):
         }
         media_controller = castplayer.cc.media_controller
         queuedata["mediaSessionId"] = media_controller.status.media_session_id
-        self.mass.create_task(media_controller.send_message, queuedata, inc_session_id=True)
+        self.mass.create_task(media_controller.send_message, data=queuedata, inc_session_id=True)
         self.logger.debug(
             "Enqued next track (%s) to player %s",
             queue_item.name if queue_item else url,
@@ -559,7 +558,7 @@ class ChromecastProvider(PlayerProvider):
         if castplayer.cc.app_id == app_id:
             return  # already active
 
-        def launched_callback() -> None:
+        def launched_callback(success: bool, response: dict[str, Any] | None) -> None:
             self.mass.loop.call_soon_threadsafe(event.set)
 
         def launch() -> None:
@@ -657,7 +656,9 @@ class ChromecastProvider(PlayerProvider):
                     "metadata": cc_item["metadata"],
                 },
             }
-            self.mass.create_task(media_controller.send_message, queuedata, True)
+            self.mass.create_task(
+                media_controller.send_message, data=queuedata, inc_session_id=True
+            )
 
         if len(getattr(media_controller.status, "items", [])) < 2:
             # In flow mode, all queue tracks are sent to the player as continuous stream.
@@ -686,4 +687,4 @@ class ChromecastProvider(PlayerProvider):
                     }
                 ],
             }
-            self.mass.create_task(media_controller.send_message, msg, inc_session_id=True)
+            self.mass.create_task(media_controller.send_message, data=msg, inc_session_id=True)
index d49a38a635fa2d01124b07370b58c8bc761d2599..ae8724ef808f3e73aa83be1d1d42a6d83959a031 100644 (file)
@@ -3,7 +3,7 @@
 from __future__ import annotations
 
 import urllib.error
-from dataclasses import dataclass
+from dataclasses import asdict, dataclass
 from typing import TYPE_CHECKING, Self
 from uuid import UUID
 
@@ -50,11 +50,11 @@ class ChromecastInfo:
     @classmethod
     def from_cast_info(cls: Self, cast_info: CastInfo) -> Self:
         """Instantiate ChromecastInfo from CastInfo."""
-        return cls(**cast_info._asdict())
+        return cls(**asdict(cast_info))
 
     def update(self, cast_info: CastInfo) -> None:
         """Update ChromecastInfo from CastInfo."""
-        for key, value in cast_info._asdict().items():
+        for key, value in asdict(cast_info).items():
             if not value:
                 continue
             setattr(self, key, value)
@@ -205,9 +205,11 @@ class CastStatusListener:
             "%s got new media_status for group: %s", self.castplayer.player.display_name, group_uuid
         )
 
-    def load_media_failed(self, item, error_code) -> None:
+    def load_media_failed(self, queue_item_id, error_code) -> None:
         """Call when media failed to load."""
-        self.prov.logger.warning("Load media failed: %s - error code: %s", item, error_code)
+        self.prov.logger.warning(
+            "Load media failed: %s - error code: %s", queue_item_id, error_code
+        )
 
     def invalidate(self) -> None:
         """
index f5e843ac1353de7f580f0c99e97060f0e43a1758..2555ef2f3cd14dc6a9e68f7765570a0c2fedfb53 100644 (file)
@@ -7,7 +7,7 @@
     "@music-assistant"
   ],
   "requirements": [
-    "PyChromecast==13.1.0"
+    "PyChromecast==14.0.1"
   ],
   "documentation": "https://music-assistant.io/player-support/google-cast/",
   "multi_instance": false,
index c85e39a24b917fb166264e56d18f47d1a2bebb59..76d6c57388854742e10d0e575ba93916ea4aeb3a 100644 (file)
@@ -26,7 +26,7 @@ pillow==10.2.0
 plexapi==4.15.9
 py-opensonic>=5.0.5
 pyatv==0.14.5
-PyChromecast==13.1.0
+PyChromecast==14.0.1
 pycryptodome==3.20.0
 python-fullykiosk==0.0.12
 python-slugify==8.0.4