/// <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);
                }
            }

        }
Пример #3
0
        /// <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);
            }

        }