Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: Stereotipchik on September 16, 2016, 09:01:16 AM

Title: IF_PICTURE_IN Сложный скрипт
Post by: Stereotipchik on September 16, 2016, 09:01:16 AM
Здравствуйте, помогите пожалуйста составить сложнейший скрипт открытия Яндекса и вписывания поисковых запросов.

Нужно что бы Кликерман открывал текстовый файл ( вначале в коде он открывает текстовый файл с запросами), копировал строчку в файле, удалял строчку, закрывал текстовый файл ( здесь это инклюд zakrit.cms), открывал браузер, вписывал URL, вписывал поисковой запрос, искал пиксел определённого цвета ( ЕСЛИ подходит идёт дальше, ЕСЛИ нет нажимал Print screen, кликал по программе на рабочем столе (скайп), вставлял картинку в сообщение, ждал пока пиксель сменится, копировал текст сообщения, открывал браузер, вставлял текст в поле) , искал фав иконку и переходил по ссылке ( ЕСЛИ не нашёл прокручивал колёсико мыши, повторял поиск фавиконки (4 раза (крутить мышь и искать)), поиск другой картинки, клик по картинке, повтор (4 раза (крутить мышь и искать)), закрывал браузер, открывал текстовый файл брал следующую поисковую фразу и зациклился 10 раз ( то есть 10 поисковых фраз набрал )

Код не доделан, потому что не знаю как сделать цикл несколько раз

Code: [Select]
LCLICK(RND(7,29), RND(101,110))
WAITMS(500)
KEYDOWN(#Ctrl)
KEYPRESS(#C)
KEYUP(#Ctrl)
WAITMS(500)
#include "zakrit.cms"
WAITMS(1500)
DBLCLICK(RND(29,47), RND(170,190))//Firefox open
WAIT(7)
LCLICK(RND(234,255), RND(37,51))
WAITMS(1500)
KEYSTRING("yandex.ru")
WAITMS(1500)
KEYPRESS(#ENTER)
WAIT(12)
KEYDOWN(#Ctrl)
KEYPRESS(#V)
KEYUP(#Ctrl)
WAITMS(1500)
KEYPRESS(#ENTER)
WAIT(8)
MOVE(RND(679,1003), RND(107,731))
WAITMS(1500)
GETSCREEN
WAITMS(1500)
IF_PICTURE_IN(51,160,169,734, "fav_shevrons.bmp")
WAITMS(1500)
LCLICK($_return1,$_return2)
Else
WHEELDOWN
WAITMS(300)
WHEELDOWN
WAITMS(300)
WHEELDOWN
WAITMS(300)
WHEELDOWN
WAITMS(300)
WAIT(1)
GETSCREEN
WAITMS(1500)
IF_PICTURE_IN(51,160,169,734, "fav_shevrons.bmp")
WAITMS(1500)
LCLICK($_return1,$_return2)
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Vint on September 16, 2016, 10:23:19 AM
Всё писать не буду. Покажу только часть.
Вот это, как минимум
Code: [Select]
копировал строчку в файле, удалял строчку,
  закрывал текстовый файл ( здесь это инклюд zakrit.cms),
    открывал браузер,
     вписывал URL,
      вписывал поисковой запрос,
...
ЕСЛИ нет нажимал Print screen,
...
закрывал браузер (вкладку)

можно написать гораздо проще:
Code: (clickermann) [Select]
$brawser = "firefox.exe"

SUB(close) //===================================================================
    KEYDOWN (#CTRL)
    WAITMS (50)
    KEYDOWN (#W)
    WAITMS (50)
    KEYUP (#W)
    KEYUP (#CTRL)
    WAITMS(500)
END_SUB
//==============================================================================

SUB(read_zapros) //=============================================================
    $zapros = TFREAD("zaprosi.txt", 1)
    WAITMS(50)
    TFDELETE("zaprosi.txt", 1)
    WAITMS(50)
END_SUB
//==============================================================================

SUB(open_find) //===============================================================
    $zapros = STRREPLACE ($zapros, " ", "%20")   // лечение пробелов
    $param = STRCONCAT("yandex.ru/yandsearch?rpt=rad&text=", $zapros)
    EXECUTE($brawser, $param)
    WAITMS(2500)
END_SUB
//==============================================================================


FOR($iter=0, $iter < 10)
    read_zapros()  // читаем строку
    open_find()    // ищем в Яндексе
   
    // ищем пиксель
    GETSCREEN
    IF_PIXEL_IN(0,0,$_xmax,$_ymax, 255)
// нашёл ....
    ELSE
        KEYPRESS(#PRINTSCREEN)
        WAITMS(700)
        // дальше скайпы всякие
    END_IF


    close()   // закрываем вкладку   
END_CYC
HALT

С остальным не всё прозрачно, не понятна очерёдность и вложенность.
В описании поиск пикселя, в примере поиск картинки...
И всякие " ЕСЛИ подходит идёт дальше" куда дальше?  вносят непонятки.
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Stereotipchik on September 16, 2016, 10:51:04 AM
"ЕСЛИ подходит идёт дальше" то есть если находит пиксель дальше идёт то действие что идёт после скобок, в данном случае искал фавиконку. ТЗ составлено так что то что в скобках это уловия, то что после скобок это действие после данного условия
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Vint on September 16, 2016, 11:58:52 AM
Понятно. Без разделения на строки весь текст в одну строку не спасли даже скобки.  ;D Мешанина не воспринялась.
При разбитии стало чуть ясней.
Но всё равно. Одна левая скобка лишняя, ломает вторую половину.

Вот эти вещи:
Code: [Select]
кликал по программе на рабочем столе (скайп), вставлял картинку в сообщение, ждал пока пиксель сменится, копировал текст сообщения, открывал браузер, вставлял текст в поле)проще делать сразу на месте, активно работая с координатами. И там сразу будет видно что пропущено в описании. Где выбор собеседника?

Code: [Select]
открывал браузер, вставлял текст в поле)тоже не понятно, какое поле.

Это не придирки. В любом случае если кто будет делать эти вопросы должен спросить. Если не спросит, то это халтура.
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Stereotipchik on September 16, 2016, 02:10:16 PM
Подскажите пожалуйста как максимально уменьшить код хотябы начала, допустим урлы должны браться из текстового файла ( допустим их 10). Можно ли в этой части скрипта сделать переменную которая бы брала урлы с файла ?

Code: [Select]
EXECUTE("Firefox.exe","yandex.ru")
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: i0 on September 16, 2016, 02:28:10 PM
разом в массив:
Code: (clickermann) [Select]
TFReadArr("urls.txt", $aUrls)
logwrite("считано ",arrsize($aUrls), "строк")
дальше в цикле по элементам

или через  одну переменную в цикле:
Code: (clickermann) [Select]
for($nStr= 0, TFCount("urls.txt"))
   $sStr= StrReadln("urls.txt", $nStr+1)
   logwrite("считанНая строка: <", $sStr, ">")
   // ...
   // действия со строкой]
   // ...
end_cyc

все ф-ции в справке есть, читайте
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Stereotipchik on September 16, 2016, 02:56:44 PM
Code: [Select]
for($nStr= 0, TFCount("urls.txt"))
   $sStr= StrReadln("urls.txt", $nStr+1)
   logwrite("считано строк: <", $sStr, ">")
   KEYDOWN(#Ctrl)
   KEYPRESS(#C)
   KEYUP(#Ctrl)
   EXECUTE("Firefox.exe",$sStr)
end_cyc
Так попробовал, открывается окно с ошибкой
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: i0 on September 16, 2016, 03:13:23 PM
извиняюсь, ошибся чуть:
for($nStr= 0, $nStr < TFCount("urls.txt") )

Code: (clickermann) [Select]
KEYDOWN(#Ctrl)
KEYPRESS(#C)
KEYUP(#Ctrl)
- копирует выделенный на экране текст в буфер? а что у Вас там выделено?
может вы хотите считанную из файла строку в буфер обмена вставить?
тогда toclip($sStr)
только непонятно, зачем.
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Stereotipchik on September 17, 2016, 06:20:37 AM
извиняюсь, ошибся чуть:
for($nStr= 0, $nStr < TFCount("urls.txt") )

Code: (clickermann) [Select]
KEYDOWN(#Ctrl)
KEYPRESS(#C)
KEYUP(#Ctrl)
- копирует выделенный на экране текст в буфер? а что у Вас там выделено?
может вы хотите считанную из файла строку в буфер обмена вставить?
тогда toclip($sStr)
только непонятно, зачем.
Ctrl C лишние оказались, думал что нужно будет копировать строку в буфер и из буфера вставлять в браузер.

Скрипт заработал, но нужно что бы в текстовом файле 1, за один раз открывался первый урл ( яндекс),
в строку поисковика яндекса вписывались фразы из текстового файла 2 (сначала первая строка, в последующих циклах следующие строки)

Если яндекс решит что я спамер и предложит решить капчу, нажать клавишу Print Screen, открыть скайп, вставить картинку в сообщение другому человеку и ждать ответа, как только поступит ответ скопировать текст его сообщения и вставить в строку яндекс капчи ( не предлагайте антигейт, данный метод хоть и долгий но бесплатный )

Ищется фав иконка сайта в яндексе по всей странице

Если не нашло на первой странице, переходит на следующую кликом по слову далее ( наверно лучше это сделать через ещё один IF_PICTURE_IN )

Нашёл фав иконку, кликает со смещением курсора на область текста ссылки

Далее идёт инклюд с действиями на сайте

Закрывает браузер

Далее инклюд с чистилкой реестра

Открывает браузер и на последующих циклах вписывает следующую поисковую фразу в текстовом файле 2, действия те же что вначале. Закрывает браузер чистит реестр инклюдом


======================================================


Открывает браузер, вписывает следующую строку в текстовом файле 1 (google)
Действия те же что и с циклом яндекса, кроме отправки капчи по скайпу.
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Vint on September 17, 2016, 11:17:38 AM
Скрипт заработал, но нужно что бы в текстовом файле 1, за один раз открывался первый урл ( яндекс),
в строку поисковика яндекса вписывались фразы из текстового файла 2 (сначала первая строка, в последующих циклах следующие строки)
Я же это уже написал в своём первом сообщении.
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Stereotipchik on September 17, 2016, 01:16:19 PM
Скрипт заработал, но нужно что бы в текстовом файле 1, за один раз открывался первый урл ( яндекс),
в строку поисковика яндекса вписывались фразы из текстового файла 2 (сначала первая строка, в последующих циклах следующие строки)
Я же это уже написал в своём первом сообщении.
Пробовал его, тоже работает, но больше строк кода, у скрипта IO меньше строк.
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: i0 on September 17, 2016, 02:00:17 PM
так у меня только ответ на маленький конкретный вопрос. ответил, не глянув, что Vint выше написал)
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Stereotipchik on September 19, 2016, 03:28:18 AM
Code: [Select]
SUB(read_zapros) //=============================================================
    $zapros = TFREAD("zaprosi.txt", 1)
    WAITMS(50)
    TFDELETE("zaprosi.txt", 1)
    WAITMS(50)
END_SUB
А как в этой части кода не удалять строчку, а идти последовательно от 1 до последнего запроса без удаления строчек ?

Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Vint on September 19, 2016, 08:06:32 AM
А как в этой части кода не удалять строчку, а идти последовательно от 1 до последнего запроса без удаления строчек ?
Писал именно так, как просил. Было лень объяснять, что читать и удалять строку это плохой и неудобный способ.
Скажем, даже устал объяснять. Лучше подождать пока человек сам до этого дойдёт. (прям анекдот вспомнился).

Code: (clickermann) [Select]
$brawser = "firefox.exe"

SUB(close) //===================================================================
    KEYDOWN (#CTRL)
    WAITMS (50)
    KEYDOWN (#W)
    WAITMS (50)
    KEYUP (#W)
    KEYUP (#CTRL)
    WAITMS(500)
END_SUB
//==============================================================================

SUB(open_find) //===============================================================
    $zapros = STRREPLACE ($zapros, " ", "%20")   // лечение пробелов
    $param = STRCONCAT("yandex.ru/yandsearch?rpt=rad&text=", $zapros)
    EXECUTE($brawser, $param)
    WAITMS(2500)
END_SUB
//==============================================================================

// перебираем все строки файла "zaprosi.txt"
FOR($iter=1, $iter < TFCount("zaprosi.txt") + 1)
    $zapros = TFREAD("zaprosi.txt", $iter) // читаем строку
    WAITMS(50)
    open_find()    // ищем в Яндексе
   
    // ищем пиксель
    GETSCREEN
    IF_PIXEL_IN(0,0,$_xmax,$_ymax, 255)
        // нашёл ....
    ELSE
        KEYPRESS(#PRINTSCREEN)
        WAITMS(700)
        // дальше скайпы всякие
    END_IF
   
    close()   // закрываем вкладку
END_CYC
HALT
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Stereotipchik on September 19, 2016, 08:43:01 AM
Наверно задолбаю вас своими вопросами.
А как сделать что бы не по порядку шли запросы, а рандомно.
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Vint on September 19, 2016, 09:17:50 AM
Наверно задолбаю вас своими вопросами.
А как сделать что бы не по порядку шли запросы, а рандомно.
Я думаю вопрос не окончательный  :D поэтому писать ответ рано.
Нужен просто рандомный или рандомный, но чтоб не повторялся?
Там было упоминание о 10 запросах, где применяется это число 10? Или это уже устарело.
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Stereotipchik on September 19, 2016, 09:32:52 AM
Рандом без повторений. А если запросы каждый раз добавляются, нельзя сделать что бы не было конкретного числа, или если не сложно укажите в коде что нужно будет поменять если количество меняется.
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Stereotipchik on September 19, 2016, 09:38:28 AM
И ещё вопрос, как сделать так что бы был клик по текстовой форме сайта LCLICK(10,10), далее в эту форму вставлялись данные из текстового файла рандомная строчка без повтора.
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Stereotipchik on September 20, 2016, 10:43:43 AM
По частям кое что известно, совместите всё вместе и добавьте что должно быть в коде если не трудно.

Открывает текстовый файл копирует 1 строчку в файле открывает браузер, вписывает яндекс с запросом,

Code: (clickermann) [Select]
$brawser = "firefox.exe"
SUB(close) //===================================================================
    KEYDOWN (#CTRL)
    WAITMS (50)
    KEYDOWN (#W)
    WAITMS (50)
    KEYUP (#W)
    KEYUP (#CTRL)
    WAITMS(500)
END_SUB
//==============================================================================
 
SUB(read_zapros) //=============================================================
    $zapros = TFREAD("zaprosi.txt", 1)
    WAITMS(50)
    TFDELETE("zaprosi.txt", 1)
    WAITMS(50)
END_SUB
//==============================================================================
 
SUB(open_find) //===============================================================
    $zapros = STRREPLACE ($zapros, " ", "%20")   // лечение пробелов
    $param = STRCONCAT("yandex.ru/yandsearch?rpt=rad&text=", $zapros)
    EXECUTE($brawser, $param)
    WAITMS(2500)
END_SUB
FOR($iter=0, $iter < 10)
    read_zapros()  // читаем строку
    open_find()    // ищем в Яндексе

Ищет пиксел определённого цвета ( ЕСЛИ подходит идёт дальше, ЕСЛИ нет нажимал Print screen, кликал по программе на рабочем столе (скайп), вставлял картинку в сообщение, ждал пока пиксель сменится, копировал текст сообщения, открывал браузер, вставлял текст в поле) ,

Code: (clickermann) [Select]
GETSCREEN
    IF_PIXEL_IN(0,0,$_xmax,$_ymax, 255)
// нашёл ....
    ELSE
        KEYPRESS(#PRINTSCREEN)
        WAITMS(700)
        #include "skype.cms"// скайп
    END_IF

Если не нашёл пиксель определённого цвета ищет фав иконку и переходит по ссылке ( ЕСЛИ не нашёл прокручивает колёсико мыши, повторяет поиск фавиконки (4 раза (крутит мышь и ищет)), поиск другой картинки, клик по картинке, повтор (4 раза (крутить мышь и искать)),

Code: (clickermann) [Select]
FOR($i=0, $i < 5)
   LCLICK(52,482)
   GETSCREEN
   IF_PICTURE_IN(59,100,173,735, "fav_1.bmp")
      $i = 10
      LCLICK($_return1 + RND(27,200), $_return2 + RND(3,10))
      WAITMS(500)
      #include "Shevrons_xp_firefox_sokr.cms"//Заходит на сайт и делает определённые действия
   ELSE
      WHEELDOWN(4)
      WAITMS(700)
   END_IF
END_CYC

IF($i ! 10)
   GETSCREEN
   IF_PICTURE_IN(125,215,680,300, "dalee.bmp")
      LCLICK(RND($_return1,$_return1+50),RND($_return2,$_return2+10))
      WAIT(7)
   END_IF
END_IF

Закрываем браузер, открываем текстовый файл берём следующую поисковую фразу и зациклился 10 раз ( то есть 10 поисковых фраз набрал )

Code: (clickermann) [Select]
    close()   // закрываем вкладку
   
   
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Vint on September 20, 2016, 12:19:10 PM
Code: (clickermann) [Select]
//==============================================================================
SUB(close) //-------------------------------------------------------------------
    KEYDOWN (#CTRL)
    WAITMS (50)
    KEYDOWN (#W)
    WAITMS (50)
    KEYUP (#W)
    KEYUP (#CTRL)
    WAITMS(500)
END_SUB

SUB(open_find) //---------------------------------------------------------------
    $zapros = STRREPLACE ($zapros, " ", "%20")   // лечение пробелов
    $param = STRCONCAT("yandex.ru/yandsearch?rpt=rad&text=", $zapros)
    EXECUTE($brawser, $param)
    WAITMS(2500)
END_SUB

SUB(zaprosi_ini) //-------------------------------------------------------------
    // заполняем массив номерами строк
    $count1 = 1
    $count2 = TFCOUNT("links.txt")
    WHILE($count1 < $count2+1)
        ARRPUSH($ARR, $count1)
        INC($count1, 1)
    END_CYC
   
    // перемешиваем
    $ARR_SIZE = ARRSIZE($ARR)
    FOR ($i, $i<$ARR_SIZE*2)
        $n1 = RND(0,$ARR_SIZE-1)
        $n2 = RND(0,$ARR_SIZE-1)
        $R = $ARR[$n1]
        $ARR[$n1] = $ARR[$n2]
        $ARR[$n2] = $R
    END_CYC
END_SUB
//==============================================================================


$brawser = "firefox.exe"
zaprosi_ini()

FOR($iter=0, $iter < 10)
    $zapros = ARRPOP($ARR)   // получаем строку
    open_find()              // ищем в Яндексе
   
    GETSCREEN
    IF_PIXEL_IN(0,0,$_xmax,$_ymax, 255)
    ELSE
        KEYPRESS(#PRINTSCREEN)
        WAITMS(700)
        #include "skype.cms"// скайп
    END_IF
   
    FOR($i=0, $i < 5)
        LCLICK(52,482)
        GETSCREEN
        IF_PICTURE_IN(59,100,173,735, "fav_1.bmp")
            $i = 10
            LCLICK($_return1 + RND(27,200), $_return2 + RND(3,10))
            WAITMS(500)
            #include "Shevrons_xp_firefox_sokr.cms"//Заходит на сайт и делает определённые действия
        ELSE
            WHEELDOWN(4)
            WAITMS(700)
        END_IF
    END_CYC
   
    IF($i ! 10)
        GETSCREEN
        IF_PICTURE_IN(125,215,680,300, "dalee.bmp")
            LCLICK(RND($_return1,$_return1+50),RND($_return2,$_return2+10))
            WAIT(7)
        END_IF
    END_IF
   
    close()   // закрываем вкладку
END_CYC
HALT
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Stereotipchik on September 20, 2016, 12:38:52 PM
Code: (clickermann) [Select]
//==============================================================================
SUB(close) //-------------------------------------------------------------------
    KEYDOWN (#CTRL)
    WAITMS (50)
    KEYDOWN (#W)
    WAITMS (50)
    KEYUP (#W)
    KEYUP (#CTRL)
    WAITMS(500)
END_SUB

SUB(open_find) //---------------------------------------------------------------
    $zapros = STRREPLACE ($zapros, " ", "%20")   // лечение пробелов
    $param = STRCONCAT("yandex.ru/yandsearch?rpt=rad&text=", $zapros)
    EXECUTE($brawser, $param)
    WAITMS(2500)
END_SUB

SUB(zaprosi_ini) //-------------------------------------------------------------
    // заполняем массив номерами строк
    $count1 = 1
    $count2 = TFCOUNT("links.txt")
    WHILE($count1 < $count2+1)
        ARRPUSH($ARR, $count1)
        INC($count1, 1)
    END_CYC
   
    // перемешиваем
    $ARR_SIZE = ARRSIZE($ARR)
    FOR ($i, $i<$ARR_SIZE*2)
        $n1 = RND(0,$ARR_SIZE-1)
        $n2 = RND(0,$ARR_SIZE-1)
        $R = $ARR[$n1]
        $ARR[$n1] = $ARR[$n2]
        $ARR[$n2] = $R
    END_CYC
END_SUB
//==============================================================================


$brawser = "firefox.exe"
zaprosi_ini()

FOR($iter=0, $iter < 10)
    $zapros = ARRPOP($ARR)   // получаем строку
    open_find()              // ищем в Яндексе
   
    GETSCREEN
    IF_PIXEL_IN(0,0,$_xmax,$_ymax, 255)
    ELSE
        KEYPRESS(#PRINTSCREEN)
        WAITMS(700)
        #include "skype.cms"// скайп
    END_IF
   
    FOR($i=0, $i < 5)
        LCLICK(52,482)
        GETSCREEN
        IF_PICTURE_IN(59,100,173,735, "fav_1.bmp")
            $i = 10
            LCLICK($_return1 + RND(27,200), $_return2 + RND(3,10))
            WAITMS(500)
            #include "Shevrons_xp_firefox_sokr.cms"//Заходит на сайт и делает определённые действия
        ELSE
            WHEELDOWN(4)
            WAITMS(700)
        END_IF
    END_CYC
   
    IF($i ! 10)
        GETSCREEN
        IF_PICTURE_IN(125,215,680,300, "dalee.bmp")
            LCLICK(RND($_return1,$_return1+50),RND($_return2,$_return2+10))
            WAIT(7)
        END_IF
    END_IF
   
    close()   // закрываем вкладку
END_CYC
HALT
Вместо запросов в файле открывается сначала 1 вместо запроса, проходит 2.5 секунды потом 2.
Он не успевает проверить есть ли фавикон и сразу идёт к другому запросу
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Vint on September 20, 2016, 12:53:16 PM
Code: (clickermann) [Select]
//==============================================================================
SUB(close) //-------------------------------------------------------------------
    KEYDOWN (#CTRL)
    WAITMS (50)
    KEYDOWN (#W)
    WAITMS (50)
    KEYUP (#W)
    KEYUP (#CTRL)
    WAITMS(500)
END_SUB

SUB(open_find) //---------------------------------------------------------------
    $zapros = STRREPLACE ($zapros, " ", "%20")   // лечение пробелов
    $param = STRCONCAT("yandex.ru/yandsearch?rpt=rad&text=", $zapros)
    EXECUTE($brawser, $param)
    WAITMS(2500)
END_SUB

SUB(zaprosi_ini) //-------------------------------------------------------------
    // заполняем массив номерами строк
    $count1 = 1
    $count2 = TFCOUNT("links.txt")
    WHILE($count1 < $count2+1)
        ARRPUSH($ARR, $count1)
        INC($count1, 1)
    END_CYC
   
    // перемешиваем
    $ARR_SIZE = ARRSIZE($ARR)
    FOR ($i, $i<$ARR_SIZE*2)
        $n1 = RND(0,$ARR_SIZE-1)
        $n2 = RND(0,$ARR_SIZE-1)
        $R = $ARR[$n1]
        $ARR[$n1] = $ARR[$n2]
        $ARR[$n2] = $R
    END_CYC
END_SUB
//==============================================================================


$brawser = "firefox.exe"
zaprosi_ini()

FOR($iter=0, $iter < 10)
    $zapros = TFREAD("zaprosi.txt", ARRPOP($ARR)) // читаем строку
    WAITMS(100)
    open_find()    // ищем в Яндексе
   
    GETSCREEN
    IF_PIXEL_IN(0,0,$_xmax,$_ymax, 255)
    ELSE
        KEYPRESS(#PRINTSCREEN)
        WAITMS(700)
        #include "skype.cms"// скайп
    END_IF
   
    FOR($i=0, $i < 5)
        LCLICK(52,482)
        GETSCREEN
        IF_PICTURE_IN(59,100,173,735, "fav_1.bmp")
            $i = 10
            LCLICK($_return1 + RND(27,200), $_return2 + RND(3,10))
            WAITMS(500)
            #include "Shevrons_xp_firefox_sokr.cms"//Заходит на сайт и делает определённые действия
        ELSE
            WHEELDOWN(4)
            WAITMS(700)
        END_IF
    END_CYC
   
    IF($i ! 10)
        GETSCREEN
        IF_PICTURE_IN(125,215,680,300, "dalee.bmp")
            LCLICK(RND($_return1,$_return1+50),RND($_return2,$_return2+10))
            WAIT(7)
        END_IF
    END_IF
   
    close()   // закрываем вкладку
END_CYC
HALT

Чтение строки поправил.
А что там с "не успевает" я не в курсе. Задержки нужно править. Тем более там два чёрных ящика под #include
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Stereotipchik on September 20, 2016, 01:21:24 PM
Теперь лучше с запросом, но всё равно ошибка с нахождением фавикона,
он крутит мышь несколько раз (даже не доходит до конца страницы), не находит. Далее накладывается второй запрос.
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Vint on September 20, 2016, 02:24:23 PM
он крутит мышь несколько раз (даже не доходит до конца страницы), не находит. Далее накладывается второй запрос.
Ну так больше поставь.
И вместо WHEELDOWN удобней использовать Page Down. Потому как прокрутка СКМ зависит от того, где находится курсор мыши.

не находит
Проверь нахождение отдельно. Стабильно ли находит образец там где нужно.
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Stereotipchik on September 21, 2016, 06:08:42 AM
Поставил больше прокруток (7), теперь он крутит первую страницу, не находит переходит к следующей странице, закрывает браузер не найдя фавикон ( нужно что бы это действие зациклилось пока не найдёт фавиконку не важно на какой странице она будет первой или 40й )
Переходит к следующей поисковой фразе.

Отдельно инклюд идёт отлично. Но даже если убрать все инклюды всё равно проблема остаётся. Курсор не мешает поиску фавикона
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Vint on September 21, 2016, 09:07:55 AM
Поставил больше прокруток (7), теперь он крутит первую страницу, не находит переходит к следующей странице, закрывает браузер не найдя фавикон (
Как ты написал, так оно и делает.

Если не нашёл пиксель определённого цвета ищет фав иконку и переходит по ссылке ( ЕСЛИ не нашёл прокручивает колёсико мыши, повторяет поиск фавиконки (4 раза (крутит мышь и ищет)), поиск другой картинки, клик по картинке, повтор (4 раза (крутить мышь и искать)),

Закрываем браузер, открываем текстовый файл берём следующую поисковую фразу и зациклился 10 раз ( то есть 10 поисковых фраз набрал )
Можешь вот это нормально переписать, чтобы стало понятно что нужно. Были понятны все циклы и условия.

( нужно что бы это действие зациклилось пока не найдёт фавиконку не важно на какой странице она будет первой или 40й )
А если не найдёт совсем? Ни на 40-й ни на сотой?
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Stereotipchik on September 21, 2016, 10:15:24 AM
Открытие браузера и написание поисковой фразы отлично сделано.
Цикл
Нужно что бы действие с поиском фавикона и переход к следующей странице зациклилось допустим 50 раз, кликнул со сдвигом, далее инклюд
Условие
если не нашёл вообще фавикон на 50 раз то закрыл браузер и перешёл к следующей поисковой фразе.
Условие закрыто
Цикл закрыт
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Vint on September 21, 2016, 11:29:00 AM
Code: (clickermann) [Select]
$brawser = "firefox.exe"
$max_count = 50  // столько страниц ищем

zaprosi_ini()

FOR($iter=0, $iter < 10)
    $zapros = TFREAD("zaprosi.txt", ARRPOP($ARR)) // читаем строку
    WAITMS(100)
    open_find()    // ищем в Яндексе
   
    GETSCREEN
    IF_PIXEL_IN(0,0,$_xmax,$_ymax, 255)
    ELSE
        KEYPRESS(#PRINTSCREEN)
        WAITMS(700)
        #include "skype.cms"// скайп
    END_IF
   
    $find_count = 0
    WHILE($find_count < $max_count)
        INC($find_count)
        FOR($i=0, $i < 5)
            LCLICK(52,482)
            GETSCREEN
            IF_PICTURE_IN(59,100,173,735, "fav_1.bmp")
                $find_count = $max_count + 100
                $i = 10
                LCLICK($_return1 + RND(27,200), $_return2 + RND(3,10))
                WAITMS(500)
                #include "Shevrons_xp_firefox_sokr.cms"//Заходит на сайт и делает определённые действия
            ELSE
                WHEELDOWN(4)
                WAITMS(700)
            END_IF
        END_CYC
       
        IF($find_count < $max_count)
            GETSCREEN
            IF_PICTURE_IN(125,215,680,300, "dalee.bmp")
                LCLICK(RND($_return1,$_return1+50),RND($_return2,$_return2+10))
                WAIT(7)
            END_IF
        END_IF   
    END_CYC
    close()   // закрываем вкладку
END_CYC

HALT
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Stereotipchik on September 22, 2016, 03:58:21 AM
Часть с инклюдом скайпа, не работает.
Специально сделал в условии нахождение пикселя которого нет вообще на этом месте, а он всё равно якобы его нашёл и продолжает часть скрипта которая должна быть при появлении этого пикселя (такого цвета там не может быть точно)
Code: (clickermann) [Select]
//==============================================================================
SUB(close) //-------------------------------------------------------------------
    KEYDOWN (#CTRL)
    WAITMS (50)
    KEYDOWN (#W)
    WAITMS (50)
    KEYUP (#W)
    KEYUP (#CTRL)
    WAITMS(500)
END_SUB
 
SUB(open_find) //---------------------------------------------------------------
    $zapros = STRREPLACE ($zapros, " ", "%20")   // лечение пробелов
    $param = STRCONCAT("yandex.ru/yandsearch?rpt=rad&text=", $zapros)
    EXECUTE($brawser, $param)
    WAITMS(10000)
END_SUB
 
SUB(zaprosi_ini) //-------------------------------------------------------------
    // заполняем массив номерами строк
    $count1 = 1
    $count2 = TFCOUNT("1.txt")
    WHILE($count1 < $count2+1)
        ARRPUSH($ARR, $count1)
        INC($count1, 1)
    END_CYC
 
    // перемешиваем
    $ARR_SIZE = ARRSIZE($ARR)
    FOR ($i, $i<$ARR_SIZE*2)
        $n1 = RND(0,$ARR_SIZE-1)
        $n2 = RND(0,$ARR_SIZE-1)
        $R = $ARR[$n1]
        $ARR[$n1] = $ARR[$n2]
        $ARR[$n2] = $R
    END_CYC
END_SUB
//==============================================================================
$brawser = "Firefox.exe"
$max_count = 50  // столько страниц ищем

zaprosi_ini()

FOR($iter=0, $iter < 10)
   $zapros = TFREAD("2.txt", ARRPOP($ARR)) // читаем строку
   WAITMS(100)
   open_find()    // ищем в Яндексе
   WAIT(5)
   
   GETSCREEN
   IF_PIXEL_IN(3,101,15,108, 3667543)
   ELSE
      KEYPRESS(#PRINTSCREEN)
      LCLICK(1013,14)
      WAITMS(700)
      #include "skype.cms"// скайп
   END_IF
   
   $find_count = 0
   WHILE($find_count < $max_count)
      INC($find_count)
      FOR($i=0, $i < 5)
         LCLICK(52,482)
         GETSCREEN
         IF_PICTURE_IN(46,159,174,737, "logo_shevrons.bmp")
            $find_count = $max_count + 100
            $i = 10
            LCLICK($_return1 + RND(27,200), $_return2 + RND(3,10))
            WAITMS(500)
            #include "Shevrons_xp_firefox_sokr.cms"//Заходит на сайт и делает определённые действия
         ELSE
            WHEELDOWN(7)
            WAITMS(700)
         END_IF
      END_CYC
     
      IF($find_count < $max_count)
         GETSCREEN
         IF_PICTURE_IN(6,155,1003,734, "dalee.bmp")
            LCLICK(RND($_return1,$_return1+50),RND($_return2,$_return2+10))
            WAIT(7)
         END_IF
      END_IF
   END_CYC
   close()   // закрываем вкладку
END_CYC

HALT
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Vint on September 22, 2016, 09:11:54 AM
И что нужно понять из повторенного скрипта?
Ты хоть предметно укажи, что и где не так выполняется.
Избегай общих терминов: "этого пикселя", "пиксел определённого цвета", "поиск другой картинки",  "клик по картинке".
Это прокатывает только при самой элементарной задаче и пока в обсуждении нет никакого кода.

Раз запостил скрипт, так и пиши (пример): при ненахождении пиксела в строке 51, должны выполняться строки такие-то и такие-то..., а выполняются строки №..., №... и т.д.

Специально сделал в условии нахождение пикселя которого нет вообще на этом месте, а он всё равно якобы его нашёл и продолжает часть скрипта которая должна быть при появлении этого пикселя (такого цвета там не может быть точно)
Должно, не должно... точно не точно... как показывает практика, человек некоторые вещи склонен упускать, а некоторые додумывать.
Ты проставь строки вывода в лог и увидишь где выполняется и где нет. Что точно находит, а что не находит. Без предположений. Это и есть отладка это нормальный процесс.

Часть с инклюдом скайпа, не работает.
Ну так возможна проблема и внутри этого "невидимого" инклюда.


Просто вот в этом куске кода:
Code: (clickermann) [Select]
   GETSCREEN
   IF_PIXEL_IN(3,101,15,108, 3667543)
   ELSE
      KEYPRESS(#PRINTSCREEN)
      LCLICK(1013,14)
      WAITMS(700)
      #include "skype.cms"// скайп
   END_IF

путаться особо нечему. Если пиксел находит, он пропускает условие и переходит на выполнение строки 59.
если не находит, то давит #PRINTSCREEN, кликает в (1013,14), выполняет #include и дальше переходит на стр. 59



Сори, но очень тяжело с такими описаниями. С некоторыми людьми легко обсуждать написание скрипта по поставленной задаче. С некоторыми сложно. А с некоторыми бывает невозможно. Замечу, что все они далеки от написания кода в равной степени. Речь только о формулировке задачи. Наверно это только от склада ума зависит. Техники там, гуманитарии... может ещё какие классы придумали.
Как решать этот вопрос я не знаю. Но при неблагоприятном сочетании времени уходит просто уйма.
Stereotipchik  это не тебе лично, это общее философствование. Сори что в этой теме. Просто пока мысленно погрузился.


Страшная история.
[spoiler]Месяца три назад, взялся я помочь с маленьким... хм... вопросом человеку. Связанному с распознаванием чисел в его задаче.
Ну так пол дня у меня ушло, чтобы добиться и он прислал мне хоть один скрин в несжатом виде. +как всегда объяснение почему через ВК нужно присылать PNG только как документ.
Попросил прислать образцы чисел, чтоб собрать варианты ВСЕХ цифр.
С самого начала просил, чтобы скринов было много и каждая цифра встречалась хотя бы в 2-3 вариантах, для подбора колормода и %.

После ещё одного ЦЕЛОГО ДНЯ мучений я наконец то получил штук 15 скринов чисел (и то не хватало двух цифр совсем ;D и пара была в 1 экземпляре).
Человек упорно путал числа и цифры. После двух объяснений, он ответил что он всё правильно понимает и знает разницу, но до конца общения он так и не переставал путать одно с другим.

Ладно, 1.5 дня минус. Коту под хвост, а мы ещё только в точке старта  ;D
Рассчитал те что были, выслал правленый скрипт и опять напомнил, что 2 цифры наладить не могу, т.к. их он мне до сих пор не прислал. Он отписался что находит нормально но на некоторых ошибается, как раз тех что не хватает. И опять ждёт. Я ему опять говорю, вышли мол 8 и 6.

Тут важный момент №1. Колормод подходил только уровня 7.
Наконец-то присылает мне ещё штук 20 скринов, но числа на них красного цвета, а были до сих пор жёлтого. И работали и подбирали под эти жёлтые.

... что, как, моё недоумение... ответ: это есть не один сайт, а несколько и могут быть то жёлтые, то красные, но работать должно на всех. Ну для начала хотя бы на жёлтых.  :-\ :o

После мудоханья (иначе не назовёшь) со вторым набором, пришёл к выводу, что что-то не так, у цифр разные режимы сглаживания. Спрашиваю скрины делались на одной системе и браузере или на разных.
 - На разных.
Оказалось, что 50% скринов подделаны автором!!! Т.е. Он просто часть цифр в фотошопе размножил и наложил на другие скрины при этом с разных источников и со сдвигами.

В итоге дня три мы прос... потратили впустую. Там делов то было на пару часов с перекурами.
После этого я месяц шарахался от любых просьб. А от  платных шарахаюсь до сих пор.
Сразу представляю, что в том случае возникают требования заказчика. А помощи и предоставления данных никакой.[/spoiler]

Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Stereotipchik on September 22, 2016, 10:56:53 AM
Не поверите, но всё заработало, поменял в проверке цвета пикселя на другой цвет, спасибо большое ! И конечно спасибо за терпение !!!
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Vint on September 22, 2016, 11:08:37 AM
Почему же, поверим  :D ;D
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Stereotipchik on September 22, 2016, 02:21:28 PM
Проверил с запросом в котором 2 слова - работает. С запросом в 3 слова получается так что в первой вкладке открывает 2 слова, во второй 3 слово которое не влезло. Как исправить подскажите.
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Vint on September 22, 2016, 04:27:59 PM
Проверил с запросом в котором 2 слова - работает. С запросом в 3 слова получается так что в первой вкладке открывает 2 слова, во второй 3 слово которое не влезло. Как исправить подскажите.

Продублировать строку
Code: (clickermann) [Select]
$zapros = STRREPLACE ($zapros, " ", "%20")   // лечение пробелов

А лучше заменить на лечение любого количества пробелов так
Code: (clickermann) [Select]
// лечение пробелов
WHILE(STRPOS($zapros, " ") > 0)
    $zapros = STRREPLACE ($zapros, " ", "%20")
END_CYC
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: i0 on September 22, 2016, 05:04:52 PM
последний вариант не рабочий, Vint походу с другим языком спутал.
strpos же возвращает позицию первого вхождения, не количество оных
____
потом мой пост сотри безжалостно
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Vint on September 22, 2016, 05:51:14 PM
последний вариант не рабочий, Vint походу с другим языком спутал.
strpos же возвращает позицию первого вхождения, не количество оных
____
потом мой пост сотри безжалостно

Да, точно. Последний убрал из ответа.
Title: Re: IF_PICTURE_IN Сложный скрипт
Post by: Stereotipchik on September 23, 2016, 11:00:26 AM
Спасибо, помогло