def media_image_url(self) -> Optional[str]: """Image url of current playing media.""" state_var = self._state_variable("AVT", "CurrentTrackMetaData") if state_var is None: return None xml = state_var.value if not xml or xml == "NOT_IMPLEMENTED": return None items = didl_lite.from_xml_string(xml, strict=False) if not items: return None device_url = self.device.device_url for item in items: # Some players use Item.albumArtURI, # though not found in the UPnP-av-ConnectionManager-v1-Service spec. if hasattr(item, "album_art_uri"): return absolute_url(device_url, item.album_art_uri) for res in item.resources: protocol_info = res.protocol_info if protocol_info.startswith("http-get:*:image/"): return absolute_url(device_url, res.url) return None
def dms_device_mock(upnp_factory_mock: Mock) -> Iterable[Mock]: """Mock the async_upnp_client DMS device, initially connected.""" with patch( "homeassistant.components.dlna_dms.dms.DmsDevice", autospec=True ) as constructor: device = constructor.return_value device.on_event = None device.profile_device = upnp_factory_mock.async_create_device.return_value device.icon = MOCK_DEVICE_BASE_URL + "/icon.jpg" device.udn = "device_udn" device.manufacturer = "device_manufacturer" device.model_name = "device_model_name" device.name = "device_name" device.get_absolute_url.side_effect = lambda url: absolute_url( MOCK_DEVICE_BASE_URL, url ) yield device