示例#1
0
        public ActionResult VideoSearch(string hosting)
        {
            logger.Info($"Got hosting {hosting}");
            IParser parser;

            switch (hosting)
            {
            case HostNames.Yandex:
                parser = new YandexParser();
                break;

            case HostNames.Youtube:
                parser = new YoutubeParser();
                break;

            default:
                throw new NotImplementedException();
            }

            var results = parser.Parse();

            logger.Info("Results parsed");
            SaveToDatabase(results);
            logger.Info($"Results saved to DB, count is {results.Count}");
            return(View(results));
        }
示例#2
0
 public override void TimerTick()
 {
     Task.Factory.StartNew(() => {
         var nextHour = NextHour;
         var nowHour  = GetNowHour();
         if (nowHour.BetweenInclude(_updateHours.First(), _updateHours.Last()) && nowHour == nextHour)
         {
             YandexParser.UpdatePositions();
             _nextHour = GetNextHour(nowHour);
         }
     });
 }
示例#3
0
        private static void Parse()
        {
            Params.GetParams();


            using (StreamWriter sw = new StreamWriter(Directory.GetCurrentDirectory() + "\\db.db", true, System.Text.Encoding.Default, 2048))
            {
                Console.WriteLine(@"[{0}]: Начало итерации", DateTime.Now.ToString());
                if (Params.Yandex == 1)
                {
                    YandexParser.Parse(sw);
                }
                Console.Write("10%");
                if (Params.Mail == 1)
                {
                    MailParser.Parse(sw);
                }
                Console.Write("20%");
                if (Params.AccuWeather == 1)
                {
                    AccuParser.Parse(sw);
                }
                Console.Write("30%");
                if (Params.Weather == 1)
                {
                    WeatherParser.Parse(sw);
                }
                Console.Write("40%");
                if (Params.GisMeteo == 1)
                {
                    GismeteoParser.Parse(sw);
                }
                Console.Write("50%");
                if (Params.Fobos == 1)
                {
                    FobosParser.Parse(sw);
                }
                Console.Write("60%");
                if (Params.Foreca == 1)
                {
                    ForecaParser.Parse(sw);
                }
                Console.WriteLine("100%");
                Console.WriteLine(@"[{0}]: Итерация закончена", DateTime.Now.ToString());
            }
        }
示例#4
0
        private static void CourseLInks()
        {
            var courses = new SpecialistDataContext().Courses
                          .Where(x => x.IsActive && x.UrlName != null && !x.IsTrack.GetValueOrDefault())
                          .Select(x => new { x.Course_TC, x.UrlName }).ToList().Select(x =>
                                                                                       Tuple.Create(x, "http://www.specialist.ru/course/" + x.UrlName));
            var url =
                "https://siteexplorer.search.yahoo.com/export;_ylt=A0oG7zEOG5xOZc8AUFfbl8kF?p={0}&bwm=i&fr=sfp";
            var doneUrls = Directory.GetFiles("links").Select(Path.GetFileName).ToList();
            var courses2 = courses.Where(x => !doneUrls.Contains(x.Item1.UrlName)).ToList();

            foreach (var course in courses2)
            {
                var fullurl = url.FormatWith(HttpUtility.UrlEncode(course.Item2));
                var text    = YandexParser.GetHtml(fullurl);
                File.WriteAllText("links/" + course.Item1.UrlName, text);
            }
        }
示例#5
0
        public override void TimerTick()
        {
            var db = YandexParser.GetYandexCompetitorDB();

            if (db.Items.Count > 0 && db.Items.First().Date == DateTime.Today)
            {
                return;
            }
            Task.Factory.StartNew(() => {
                for (int i = 0; i < Phrases.YandexCompetitors.Count; i++)
                {
                    var competitor = YandexParser.GetYandexCompetitors(i);
                    db.Add(competitor);
                    Thread.Sleep(60000);
                }
                db.Save();
            });
        }
示例#6
0
 public ActionResult Competitors(int?phraseId)
 {
     if (phraseId.HasValue)
     {
         var positions = YandexParser.GetSavedPositions().Where(x => x.PhraseId == phraseId);
         var model     = new JsTableVM {
             Title   = Phrases.ForCompetitors[phraseId.Value - 1],
             Columns = { { "Дата", "date-rus" }, { "1", null }, { "2", null }, { "3", null } },
             Rows    = positions.Select(x => {
                 var sites = x.Sites.Split(',');
                 return(_.List <object>(
                            x.Date.ToString("dd.MM.yy HH:mm"),
                            sites.ElementAtOrDefault(0),
                            sites.ElementAtOrDefault(1),
                            sites.ElementAtOrDefault(2)));
             })
         };
         return(View(ViewNames.JsTable, model));
     }
     return(View());
 }
示例#7
0
        public ActionResult SeCompetitors()
        {
            var db    = YandexParser.GetYandexCompetitorDB();
            var model = new JsTableVM {
                Columns = { { "Дата",    "date-rus" },
                            { "Фраза",   null       },
                            { "Директ",  null       },
                            { "Яндекс",  null       },
                            { "AdWords", null       },
                            { "Google",  null       } },
                Title = "Конкуренты",
                Rows  = db.Items.Select(x => _.List <object>(
                                            x.Date.ToString("dd.MM.yy"),
                                            Phrases.YandexCompetitors[x.PhraseId],
                                            x.Direct.JoinWith("<br/>"),
                                            GetList(x.YandexSearch),
                                            x.AdWords.JoinWith("<br/>"),
                                            GetList(x.GoogleSearch)
                                            ))
            };

            return(View(ViewNames.JsTable, model));
        }