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