Пример #1
0
 public static DataDBURLJob[] MakeJobs(DataDBAsynchService ddbs, int mode)
 {
     DataDBURLJob[] jobs__ = null;
     try
     {
         string[][] jobs_ = GetJobs(ddbs, mode); //берем данные из строки ParsersJob
         if (jobs_ != null)
         {
             jobs__ = new DataDBURLJob[jobs_.Count()];
             for (int i = 0; i < jobs_.Count(); i++)
             {
                 //string[] job = jobs_[i];
                 Array.Resize(ref jobs_[i], jobs_[i].Count() + 1);
                 jobs__[i] = new DataDBURLJob(i, jobs_[i]);
                 GC.SuppressFinalize(jobs_[i]);
             }
             GC.SuppressFinalize(jobs_);
         }
     }
     catch (Exception e) { Console.WriteLine("Ошибка делания джобов " + e.Message); return null; }
     return jobs__;
 }
Пример #2
0
 public bool AddJobs(DataDBAsynchService ddbs, int mode)
 {
     bool r = false;
     string[][] jobs_ = null;
     try
     {
         jobs_ = GetJobs(ddbs, mode); //берем данные из строки ParsersJob
         if (jobs_ != null)
         {
             if (jobs_.Any())
                 lock (jobs)
                     if (!jobs.Any())
                         jobs.Clear();
             for (int i = 0; i < jobs_.Count(); i++)
             {
                 using (DataDBURLJob temp = new DataDBURLJob(i, jobs_[i]))
                     try
                     {
                         lock (jobs)
                             if (!jobs.Exists(x => x._addressparsing == temp._addressparsing))
                                 jobs.Add(temp);
                     }
                     catch (Exception ex) { ddbs.WriteErrorMessage(ddbs.ConnectionString, 0, "", "ошибка при добавлении заданий " + ex.Message); }
                     finally { if (temp != null) GC.SuppressFinalize(temp); if (jobs_[i] != null) GC.SuppressFinalize(jobs_[i]); }
             }
             
         }
         r = true;
     }
     catch (Exception e) { Console.WriteLine("Ошибка в добавлении объявлений же " + e.Message); }
     finally { if (jobs_!=null) GC.SuppressFinalize(jobs_); }
     return r;
 }
Пример #3
0
 private void got_jobsEnqueue(DataDBURLJob djob)
 {
     lock (got_jobs)
     {
         got_jobs.Enqueue(djob);
     }
     tick();
 }
Пример #4
0
 //функция возвращения задачи в обработку если при скачивании произошло нечто фатальное
 public void Enque(DataDBURLJob d)
 {
     lock (jobs.jobs)
     {
         jobs.jobs.Add(d);
     }
     tick();
 }
Пример #5
0
        private void ProcessOnePage(DataDBURLJob temp)
        {
            int i = 0;
            //если есть задание на обработку страницы
            if (temp != null)
            {
                DirtyApartments t = null;
                arw.RunWithTimeout(() =>
                {
                    DateTime dt = DateTime.Now;
                    try
                    {
                        t = temp.StartProcessPage(ddbs, true);

                    }
                    catch (Exception ex)
                    {
                        if (temp != null)
                        {
                            ddbs.WriteErrorMessage(ddbs.ConnectionString, i, null,
                                                      "Ошибка в задаче обработки страницы " + ex.Message, temp._addressparsing);
                        }
                        else
                            ddbs.WriteErrorMessage(ddbs.ConnectionString, i, null,
                                                      "Ошибка в задаче обработки страницы " + ex.Message, -1);
                    }
                }, 31009, () =>
                {
                    try
                    {
                        if (t != null)
                        {
                            try
                            {
                                if (!String.IsNullOrEmpty(t.Фото) && parse_with_photos && (mode != 2 || !t.Источник.Contains("мирквартир") || !t.Источник.Contains("mail")))
                                {
                                    getphotosfromonepage(t);
                                }
                                else
                                {
                                    lock(ap)
                                        ap.Add(t);
                                    if (temp.status != 1)
                                        temp.status = 1;
                                    statusesadd(temp._addressparsing, temp.status);
                                    GC.SuppressFinalize(temp);

                                }
                            }
                            catch (Exception ex) { Console.WriteLine("Ошибка проводки объявления " + t.Ссылка + " " + ex.Message); }
                            finally { if (t != null) t.Dispose(); if (t != null) GC.SuppressFinalize(t); }
                        }
                        else
                        {
                            if (temp.status < 2)
                                temp.status = 4;
                            statusesadd(temp._addressparsing, temp.status);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("Произошла ошибка в проводке обработанного объявления. Возвращаем его в очередь " + ex.Message);
                        processonepage(temp);
                    }
                });
            }
        }
Пример #6
0
        private void Next()
        {
            SetLabelText(label1, made.Count + "/" + jobs.Count());
            Application.DoEvents();
            if (webBrowser1 != null)
            {
                ProcessAd();

                if (!jobs.Any)
                {
                    SendAll();
                }
                {
                    d = jobs.jobs[0];
                    jobs.jobs.RemoveAt(0);
                    LoadAd();
                }
                Application.DoEvents();
                HtmlElement h = GetWebBrowserElementByClass("phone ");
                if ( h!= null
                    && !h.InnerHtml.Contains("телефон")
                    && h.InnerHtml.Length > 5
                    )
                    Next();
                else
                    MessageBox.Show("Введите капчу");
            }
        }