Exemple #1
0
        public Decision IsSatisfiedBy(RemoteMovie subject, SearchCriteriaBase searchCriteria)
        {
            var torrentInfo = subject.Release as TorrentInfo;

            IIndexerSettings indexerSettings = null;

            try {
                indexerSettings = _indexerFactory.Get(subject.Release.IndexerId)?.Settings as IIndexerSettings;
            }
            catch (Exception e)
            {
                _logger.Debug("Indexer with id {0} does not exist, skipping minimum seeder checks.", subject.Release.IndexerId);
            }


            if (torrentInfo == null || indexerSettings == null)
            {
                return(Decision.Accept());
            }

            if (indexerSettings is ITorrentIndexerSettings torrentIndexerSettings)
            {
                var minimumSeeders = torrentIndexerSettings.MinimumSeeders;

                if (torrentInfo.Seeders.HasValue && torrentInfo.Seeders.Value < minimumSeeders)
                {
                    _logger.Debug("Not enough seeders: {0}. Minimum seeders: {1}", torrentInfo.Seeders, minimumSeeders);
                    return(Decision.Reject("Not enough seeders: {0}. Minimum seeders: {1}", torrentInfo.Seeders, minimumSeeders));
                }
            }

            return(Decision.Accept());
        }
 private void GivenIndexerSettings(IIndexerSettings indexerSettings)
 {
     Mocker.GetMock <IIndexerFactory>().Setup(f => f.Get(It.IsAny <int>())).Returns(new IndexerDefinition
     {
         Settings = indexerSettings
     });
 }
 public TwitAnalyzer(
     ITwitIndexer twitIndexer,
     IIndexerSettings settings,
     BayesAnalyzer bayesAnalyzer,
     MachineLearningAnalyzer <LinearRegressionEstimatorProvider> linearRegressionAnalyzer,
     MachineLearningAnalyzer <RandomForestEstimatorProvider> randomForestAnalyzer)
 {
     _twitIndexer              = twitIndexer;
     _settings                 = settings;
     _bayesAnalyzer            = bayesAnalyzer;
     _linearRegressionAnalyzer = linearRegressionAnalyzer;
     _randomForestAnalyzer     = randomForestAnalyzer;
 }
        public Decision IsSatisfiedBy(RemoteMovie subject, SearchCriteriaBase searchCriteria)
        {
            var torrentInfo = subject.Release;

            IIndexerSettings indexerSettings = null;

            try
            {
                indexerSettings = _indexerFactory.Get(subject.Release.IndexerId)?.Settings as IIndexerSettings;
            }
            catch (Exception)
            {
                _logger.Debug("Indexer with id {0} does not exist, skipping required indexer flags specs.", subject.Release.IndexerId);
            }

            if (torrentInfo == null || indexerSettings == null)
            {
                return(Decision.Accept());
            }

            if (indexerSettings is ITorrentIndexerSettings torrentIndexerSettings)
            {
                var requiredFlags = torrentIndexerSettings.RequiredFlags;
                var requiredFlag  = (IndexerFlags)0;

                if (requiredFlags == null || !requiredFlags.Any())
                {
                    return(Decision.Accept());
                }

                foreach (var flag in requiredFlags)
                {
                    if (torrentInfo.IndexerFlags.HasFlag((IndexerFlags)flag))
                    {
                        return(Decision.Accept());
                    }

                    requiredFlag |= (IndexerFlags)flag;
                }

                _logger.Debug("None of the required indexer flags {0} where found. Found flags: {1}", requiredFlag, torrentInfo.IndexerFlags);
                return(Decision.Reject("None of the required indexer flags {0} where found. Found flags: {1}", requiredFlag, torrentInfo.IndexerFlags));
            }

            return(Decision.Accept());
        }
Exemple #5
0
        public ParsedMovieInfo AugmentMovieInfo(ParsedMovieInfo movieInfo, object helper)
        {
            if (helper is ReleaseInfo releaseInfo)
            {
                IIndexerSettings indexerSettings = null;
                try
                {
                    indexerSettings = _indexerFactory.Value.Get(releaseInfo.IndexerId)?.Settings as IIndexerSettings;
                }
                catch (Exception)
                {
                    //_logger.Debug("Indexer with id {0} does not exist, skipping minimum seeder checks.", subject.Release.IndexerId);
                }                // First, let's augment the language!

                var languageTitle = movieInfo.SimpleReleaseTitle;
                if (movieInfo.PrimaryMovieTitle.IsNotNullOrWhiteSpace())
                {
                    if (languageTitle.ToLower().Contains("multi") && indexerSettings?.MultiLanguages?.Any() == true)
                    {
                        foreach (var i in indexerSettings.MultiLanguages)
                        {
                            var language = (Language)i;
                            if (!movieInfo.Languages.Contains(language))
                            {
                                movieInfo.Languages.Add(language);
                            }
                        }
                    }
                }

                //Next, let's add other useful info to the extra info dict
                if (!movieInfo.ExtraInfo.ContainsKey("Size"))
                {
                    movieInfo.ExtraInfo["Size"] = releaseInfo.Size;
                }

                movieInfo.ExtraInfo["IndexerFlags"] = releaseInfo.IndexerFlags;
            }

            return(movieInfo);
        }