Пример #1
0
        public override void Execute(IDictionary <string, object> input)
        {
            var indexerType = input.Get <IndexerType>(INDEXER_TYPE);
            var folder      = input.Get <string>(FOLDER);
            var patterns    = input.Get <string>(PATTERNS);

            var             patternList = patterns.Split(",").ToList();
            var             indexer     = _indexerFactory.GetInstance(indexerType);
            IndexingOptions options     = new()
            {
                Folder            = folder,
                AllowedExtensions = patternList,
                RecreateIndex     = true
            };

            indexer.Index(options);
        }
    }
Пример #2
0
        public override void Execute(IDictionary <string, object> input)
        {
            var folder = input.Get <string>(FOLDER);
            var search = input.Get <string>(SEARCH);

            var indexer = _indexerFactory.GetInstance(IndexerType.Lucene);
            var options = new SearchingOptions
            {
                DataDir    = folder,
                SearchTerm = search,
                DocCount   = 20
            };
            var result = indexer.Search(options);

            foreach (var item in result)
            {
                _console.WriteLine("{0}\t{1} ({2})", item.Score, item.Path, item.Modified);
            }
        }
Пример #3
0
        public void Index(string folder, string target)
        {
            if (!Directory.Exists(folder))
            {
                Console.WriteLine("Document directory '" + folder + "' does not exist or is not readable, " +
                                  "please check the path");
                return;
            }

            if (Directory.Exists(target))
            {
                Directory.Delete(target, true);
            }
            //Console.WriteLine("Cannot save index to '" + target + "' directory, please delete it first");
            //return;

            var start = DateTime.Now;

            try
            {
                var indexer = _indexerFactory.GetInstance(IndexerType.Manual);
                var options = new IndexingOptions
                {
                    Folder = folder
                };
                indexer.Index(options);

                var end = DateTime.Now;
                var ts  = end - start;

                Console.WriteLine("Time spent: , {0:dd\\.hh\\:mm\\:ss\\.fffff}", ts);
            }
            catch (IOException e)
            {
                Console.WriteLine(" caught a " + e.GetType() + "\n with message: " + e.Message);
            }
        }
Пример #4
0
        public async Task SendReportToClient(ReleaseInfo release, string source, string host, bool redirect)
        {
            var downloadTitle  = release.Title;
            var downloadClient = _downloadClientProvider.GetDownloadClient(release.DownloadProtocol);

            if (downloadClient == null)
            {
                throw new DownloadClientUnavailableException($"{release.DownloadProtocol} Download client isn't configured yet");
            }

            // Get the seed configuration for this release.
            // remoteMovie.SeedConfiguration = _seedConfigProvider.GetSeedConfiguration(remoteMovie);

            // Limit grabs to 2 per second.
            if (release.DownloadUrl.IsNotNullOrWhiteSpace() && !release.DownloadUrl.StartsWith("magnet:"))
            {
                var url = new HttpUri(release.DownloadUrl);
                _rateLimitService.WaitAndPulse(url.Host, TimeSpan.FromSeconds(2));
            }

            var indexer = _indexerFactory.GetInstance(_indexerFactory.Get(release.IndexerId));

            string downloadClientId;

            try
            {
                downloadClientId = await downloadClient.Download(release, redirect, indexer);

                _downloadClientStatusService.RecordSuccess(downloadClient.Definition.Id);
                _indexerStatusService.RecordSuccess(release.IndexerId);
            }
            catch (ReleaseUnavailableException)
            {
                _logger.Trace("Release {0} no longer available on indexer.", release);
                _eventAggregator.PublishEvent(new IndexerDownloadEvent(release.IndexerId, false, source, host, release.Title, release.DownloadUrl, redirect));
                throw;
            }
            catch (DownloadClientRejectedReleaseException)
            {
                _logger.Trace("Release {0} rejected by download client, possible duplicate.", release);
                _eventAggregator.PublishEvent(new IndexerDownloadEvent(release.IndexerId, false, source, host, release.Title, release.DownloadUrl, redirect));
                throw;
            }
            catch (ReleaseDownloadException ex)
            {
                var http429 = ex.InnerException as TooManyRequestsException;
                if (http429 != null)
                {
                    _indexerStatusService.RecordFailure(release.IndexerId, http429.RetryAfter);
                }
                else
                {
                    _indexerStatusService.RecordFailure(release.IndexerId);
                }

                _eventAggregator.PublishEvent(new IndexerDownloadEvent(release.IndexerId, false, source, host, release.Title, release.DownloadUrl, redirect));

                throw;
            }

            _logger.ProgressInfo("Report sent to {0}. {1}", downloadClient.Definition.Name, downloadTitle);

            _eventAggregator.PublishEvent(new IndexerDownloadEvent(release.IndexerId, true, source, host, release.Title, release.DownloadUrl, redirect));
        }