/// <summary> /// /// </summary> /// <param name="item"></param> /// <param name="eventType"></param> public void QueueItem(BaseItem item, EventType eventType) { if (item == null) { throw new ArgumentNullException("item"); } if (_queueTimer == null) { _logger.Info("Creating queue timer"); _queueTimer = new Timer(20000); // fire every 20 seconds _queueTimer.Elapsed += QueueTimerElapsed; } else if (_queueTimer.Enabled) { // If enabled then multiple LibraryManager events are firing. Restart the timer _logger.Info("Resetting queue timer"); _queueTimer.Stop(); _queueTimer.Start(); } if (!_queueTimer.Enabled) { _logger.Info("Starting queue timer"); _queueTimer.Enabled = true; } var users = Plugin.Instance.PluginConfiguration.TraktUsers; if (users == null || users.Length == 0) { return; } // we need to process the video for each user foreach (var user in users) { _logger.Info("Creating library event for " + item.Name); // we have a match, this user is watching the folder the video is in. Add to queue and they // will be processed when the next timer elapsed event fires. var libraryEvent = new LibraryEvent { Item = item, TraktUser = user, EventType = eventType }; _queuedEvents.Add(libraryEvent); } }
/// <summary> /// /// </summary> /// <param name="item"></param> /// <param name="eventType"></param> public void QueueItem(BaseItem item, EventType eventType) { if (item == null) throw new ArgumentNullException("item"); if (_queueTimer == null) { _logger.Info("Creating queue timer"); _queueTimer = new Timer(20000); // fire every 20 seconds _queueTimer.Elapsed += QueueTimerElapsed; } else if (_queueTimer.Enabled) { // If enabled then multiple LibraryManager events are firing. Restart the timer _logger.Info("Resetting queue timer"); _queueTimer.Stop(); _queueTimer.Start(); } if (!_queueTimer.Enabled) { _logger.Info("Starting queue timer"); _queueTimer.Enabled = true; } var users = Plugin.Instance.PluginConfiguration.TraktUsers; if (users == null || users.Length == 0) return; // we need to process the video for each user foreach (var user in users) { foreach ( var location in user.TraktLocations.Where(location => _fileSystem.ContainsSubPath(location, item.Path))) { _logger.Info("Creating library event for " + item.Name); // we have a match, this user is watching the folder the video is in. Add to queue and they // will be processed when the next timer elapsed event fires. var libraryEvent = new LibraryEvent {Item = item, TraktUser = user, EventType = eventType}; _queuedEvents.Add(libraryEvent); } } }
/// <summary> /// /// </summary> /// <param name="item"></param> /// <param name="eventType"></param> public void QueueItem(BaseItem item, EventType eventType) { if (item == null) { throw new ArgumentNullException(nameof(item)); } if (_queueTimer == null) { _queueTimer = new Timer( OnQueueTimerCallback, null, TimeSpan.FromMilliseconds(20000), Timeout.InfiniteTimeSpan); } else { _queueTimer.Change(TimeSpan.FromMilliseconds(20000), Timeout.InfiniteTimeSpan); } var users = Plugin.Instance.PluginConfiguration.TraktUsers; if (users == null || users.Length == 0) { return; } // we need to process the video for each user foreach (var user in users.Where(x => _traktApi.CanSync(item, x))) { // we have a match, this user is watching the folder the video is in. Add to queue and they // will be processed when the next timer elapsed event fires. var libraryEvent = new LibraryEvent { Item = item, TraktUser = user, EventType = eventType }; _queuedEvents.Add(libraryEvent); } }
/// <summary> /// /// </summary> /// <param name="item"></param> /// <param name="eventType"></param> public void QueueItem(BaseItem item, EventType eventType) { if (item == null) throw new ArgumentNullException("item"); if (_queueTimer == null) { _queueTimer = new Timer(20000); // fire every 20 seconds _queueTimer.Elapsed += QueueTimerElapsed; } else if (_queueTimer.Enabled) { // If enabled then multiple LibraryManager events are firing. Restart the timer _queueTimer.Stop(); _queueTimer.Start(); } if (!_queueTimer.Enabled) { _queueTimer.Enabled = true; } var users = Plugin.Instance.PluginConfiguration.TraktUsers; if (users == null || users.Length == 0) return; // we need to process the video for each user foreach (var user in users.Where(x => _traktApi.CanSync(item, x))) { // we have a match, this user is watching the folder the video is in. Add to queue and they // will be processed when the next timer elapsed event fires. var libraryEvent = new LibraryEvent {Item = item, TraktUser = user, EventType = eventType}; _queuedEvents.Add(libraryEvent); } }