void _sessionManager_PlaybackProgress(object sender, PlaybackProgressEventArgs e) { string key = e.DeviceId + "-" + e.Users[0].Id.ToString("N") + "-" + e.Item.Id.ToString("N"); if (playback_trackers != null && playback_trackers.ContainsKey(key)) { try { //_logger.Info("Playback progress tracker found, processing progress : " + key); PlaybackTracker tracker = playback_trackers[key]; tracker.ProcessProgress(e); if (tracker.TrackedPlaybackInfo != null) { _logger.Debug("Saving playback tracking activity in DB"); _repository.UpdatePlaybackAction(tracker.TrackedPlaybackInfo); } } catch (Exception exp) { playback_trackers.Remove(key); throw new Exception("Error saving playback state: " + exp.Message); } } else { _logger.Debug("Playback progress did not have a tracker : " + key); } }
void _sessionManager_PlaybackProgress(object sender, PlaybackProgressEventArgs e) { string key = e.DeviceId + "-" + e.Users[0].Id.ToString("N") + "-" + e.Item.Id.ToString("N"); if (playback_trackers != null && playback_trackers.ContainsKey(key)) { try { PlaybackTracker tracker = playback_trackers[key]; DateTime now = DateTime.Now; if (now.Subtract(tracker.LastUpdated).TotalSeconds > 20) // update every 20 seconds { tracker.LastUpdated = now; _logger.LogInformation("Processing playback tracker : {Key}", key); List <string> event_log = tracker.ProcessProgress(e); if (event_log.Count > 0) { _logger.LogDebug("ProcessProgress : {Events}", string.Join("", event_log)); } if (tracker.TrackedPlaybackInfo != null) { _repository.UpdatePlaybackAction(tracker.TrackedPlaybackInfo); } } } catch (Exception exp) { playback_trackers.Remove(key); throw new Exception("Error saving playback state: " + exp.Message); } } else { _logger.LogDebug("Playback progress did not have a tracker : {Key}", key); } }