Author Topic: IF_PICTURE_IN Сложный скрипт  (Read 7204 times)

0 Members and 1 Guest are viewing this topic.

Stereotipchik

  • Освоившийся
  • **
  • Posts: 33
    • View Profile
    • Шевроны, нашивки, вышивка на форму военных
IF_PICTURE_IN Сложный скрипт
« 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)

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: IF_PICTURE_IN Сложный скрипт
« Reply #1 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

С остальным не всё прозрачно, не понятна очерёдность и вложенность.
В описании поиск пикселя, в примере поиск картинки...
И всякие " ЕСЛИ подходит идёт дальше" куда дальше?  вносят непонятки.


Stereotipchik

  • Освоившийся
  • **
  • Posts: 33
    • View Profile
    • Шевроны, нашивки, вышивка на форму военных
Re: IF_PICTURE_IN Сложный скрипт
« Reply #2 on: September 16, 2016, 10:51:04 AM »
"ЕСЛИ подходит идёт дальше" то есть если находит пиксель дальше идёт то действие что идёт после скобок, в данном случае искал фавиконку. ТЗ составлено так что то что в скобках это уловия, то что после скобок это действие после данного условия

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: IF_PICTURE_IN Сложный скрипт
« Reply #3 on: September 16, 2016, 11:58:52 AM »
Понятно. Без разделения на строки весь текст в одну строку не спасли даже скобки.  ;D Мешанина не воспринялась.
При разбитии стало чуть ясней.
Но всё равно. Одна левая скобка лишняя, ломает вторую половину.

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

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

Это не придирки. В любом случае если кто будет делать эти вопросы должен спросить. Если не спросит, то это халтура.


Stereotipchik

  • Освоившийся
  • **
  • Posts: 33
    • View Profile
    • Шевроны, нашивки, вышивка на форму военных
Re: IF_PICTURE_IN Сложный скрипт
« Reply #4 on: September 16, 2016, 02:10:16 PM »
Подскажите пожалуйста как максимально уменьшить код хотябы начала, допустим урлы должны браться из текстового файла ( допустим их 10). Можно ли в этой части скрипта сделать переменную которая бы брала урлы с файла ?

Code: [Select]
EXECUTE("Firefox.exe","yandex.ru")

i0

  • Оплот сообщества
  • ****
  • Posts: 353
  • CMann 4.13.014 final, ie, presto, win7 x86, x64
    • View Profile
Re: IF_PICTURE_IN Сложный скрипт
« Reply #5 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

все ф-ции в справке есть, читайте

Stereotipchik

  • Освоившийся
  • **
  • Posts: 33
    • View Profile
    • Шевроны, нашивки, вышивка на форму военных
Re: IF_PICTURE_IN Сложный скрипт
« Reply #6 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
Так попробовал, открывается окно с ошибкой

i0

  • Оплот сообщества
  • ****
  • Posts: 353
  • CMann 4.13.014 final, ie, presto, win7 x86, x64
    • View Profile
Re: IF_PICTURE_IN Сложный скрипт
« Reply #7 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)
только непонятно, зачем.
« Last Edit: September 16, 2016, 03:19:49 PM by i0 »

Stereotipchik

  • Освоившийся
  • **
  • Posts: 33
    • View Profile
    • Шевроны, нашивки, вышивка на форму военных
Re: IF_PICTURE_IN Сложный скрипт
« Reply #8 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)
Действия те же что и с циклом яндекса, кроме отправки капчи по скайпу.
« Last Edit: September 17, 2016, 06:23:21 AM by Stereotipchik »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: IF_PICTURE_IN Сложный скрипт
« Reply #9 on: September 17, 2016, 11:17:38 AM »
Скрипт заработал, но нужно что бы в текстовом файле 1, за один раз открывался первый урл ( яндекс),
в строку поисковика яндекса вписывались фразы из текстового файла 2 (сначала первая строка, в последующих циклах следующие строки)
Я же это уже написал в своём первом сообщении.


Stereotipchik

  • Освоившийся
  • **
  • Posts: 33
    • View Profile
    • Шевроны, нашивки, вышивка на форму военных
Re: IF_PICTURE_IN Сложный скрипт
« Reply #10 on: September 17, 2016, 01:16:19 PM »
Скрипт заработал, но нужно что бы в текстовом файле 1, за один раз открывался первый урл ( яндекс),
в строку поисковика яндекса вписывались фразы из текстового файла 2 (сначала первая строка, в последующих циклах следующие строки)
Я же это уже написал в своём первом сообщении.
Пробовал его, тоже работает, но больше строк кода, у скрипта IO меньше строк.

i0

  • Оплот сообщества
  • ****
  • Posts: 353
  • CMann 4.13.014 final, ie, presto, win7 x86, x64
    • View Profile
Re: IF_PICTURE_IN Сложный скрипт
« Reply #11 on: September 17, 2016, 02:00:17 PM »
так у меня только ответ на маленький конкретный вопрос. ответил, не глянув, что Vint выше написал)

Stereotipchik

  • Освоившийся
  • **
  • Posts: 33
    • View Profile
    • Шевроны, нашивки, вышивка на форму военных
Re: IF_PICTURE_IN Сложный скрипт
« Reply #12 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 до последнего запроса без удаления строчек ?


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: IF_PICTURE_IN Сложный скрипт
« Reply #13 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
« Last Edit: September 19, 2016, 08:09:59 AM by Vint »


Stereotipchik

  • Освоившийся
  • **
  • Posts: 33
    • View Profile
    • Шевроны, нашивки, вышивка на форму военных
Re: IF_PICTURE_IN Сложный скрипт
« Reply #14 on: September 19, 2016, 08:43:01 AM »
Наверно задолбаю вас своими вопросами.
А как сделать что бы не по порядку шли запросы, а рандомно.