code: def update(self, data):
          
          if not data.get('status', []):
              return
  
          status_data = data['status'][0]
          media_data = status_data.get('media') or {}
          volume_data = status_data.get('volume', {})
  
          self.current_time = status_data.get('currentTime', self.current_time)
          self.content_id = media_data.get('contentId', self.content_id)
          self.content_type = media_data.get('contentType', self.content_type)
          self.duration = media_data.get('duration', self.duration)
          self.stream_type = media_data.get('streamType', self.stream_type)
          self.idle_reason = status_data.get('idleReason', self.idle_reason)
          self.media_session_id = status_data.get(
              'mediaSessionId', self.media_session_id)
          self.playback_rate = status_data.get(
              'playbackRate', self.playback_rate)
          self.player_state = status_data.get('playerState', self.player_state)
          self.supported_media_commands = status_data.get(
              'supportedMediaCommands', self.supported_media_commands)
          self.volume_level = volume_data.get('level', self.volume_level)
          self.volume_muted = volume_data.get('muted', self.volume_muted)
          self.media_custom_data = media_data.get(
              'customData', self.media_custom_data)
          self.media_metadata = media_data.get('metadata', self.media_metadata)
          self.subtitle_tracks = media_data.get('tracks', self.subtitle_tracks)
          self.current_subtitle_tracks = status_data.get(
              'activeTrackIds', self.current_subtitle_tracks)
          self.last_updated = datetime.utcnow()
docs: New data will only contain the changed attributes.