Exemplo n.º 1
0
        public static void Main(string[] args)
        {
            var parameters = new ConsoleParameters();

            if (!CommandLine.Parser.Default.ParseArguments(args, parameters))
            {
                return;
            }

            var directory        = ConfigurationManager.AppSettings["output"];
            var contentValidator = new Validator(new List <IConstraintRule>
            {
                new ExtensionConstraint(parameters.ContentExtensions)
            });
            var logger         = new Logger();
            var siteSaver      = new SiteSaver(directory, logger);
            var siteDownloader = new SiteDownloader(logger, siteSaver, contentValidator);
            var urlValidator   = new Validator(new List <IConstraintRule>
            {
                new SchemeConstraint(),
                new DomainConstraint(new Uri(parameters.BaseUrl), parameters.DomainRestriction)
            });
            var siteManager = new SiteManager(siteDownloader, urlValidator, logger);
            var listUrl     = new List <Uri> {
                new Uri(parameters.BaseUrl)
            };
            var countLevel = 0;

            try
            {
                siteManager.Start(listUrl, parameters.MaxDeepLevel, countLevel);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            Console.WriteLine(@"Введите глубину анализа ссылок:");
            int deepLevel = int.Parse(Console.ReadLine());

            Console.WriteLine(@"Ограничения на переходы в другие домены (1 - без ограничений, 2 - внутри текущего домена, 3 - не выше пути в исходном URL):");
            var constr = Console.ReadLine();
            DomainLimitations domainLimit = (DomainLimitations)Enum.Parse(typeof(DomainLimitations), constr);

            Console.WriteLine(@"Ограничения на расширения скачиваемых ресурсов (например: gif,jpeg,jpg,pdf):");
            var extensions = Console.ReadLine();
            var extList    = GetConstraints(extensions);

            Console.WriteLine("Стартовый URL:");
            var rootUrl = Console.ReadLine();

            Console.WriteLine("Корневой файловый каталог:");
            var rootDirectory = Console.ReadLine();

            if (!Directory.Exists(rootDirectory))
            {
                Directory.CreateDirectory(rootDirectory);
            }

            bool tracingMode;

            Console.WriteLine("Отображать трассировку? (0 - нет, 1 -да)");
            if (Console.ReadLine() == "0")
            {
                tracingMode = false;
            }
            else
            {
                tracingMode = true;
            }
            var logger           = new Logger();
            var contentValidator = new Validator(new List <IConstraintRule>
            {
                new ExtensionConstraint(extList)
            });

            var siteSaver      = new SiteSaver(rootDirectory, logger, tracingMode);
            var siteDownloader = new SiteDownloader(logger, siteSaver, contentValidator, tracingMode);
            var urlValidator   = new Validator(new List <IConstraintRule>
            {
                new SchemeConstraint(),
                new DomainConstraint(new Uri(rootUrl), domainLimit)
            });
            var siteManager = new SiteManager(siteDownloader, logger, urlValidator, tracingMode);
            var listUrl     = new List <Uri> {
                new Uri(rootUrl)
            };

            var countLevel = 0;

            try
            {
                siteManager.Start(listUrl, deepLevel, countLevel);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            Console.WriteLine("Finish!");
            Console.ReadKey();
        }