Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - r-thomas

Pages: [1]
1
Если быть проще  и пофиг рейтинг, то можно написать скрипт сортирующий строки по мере возрастания контрольных сумм и маску сравнивающую не контрольные суммы полностью, а их цифры последовательно, сначала должны совпасть первые, затем вторые и т.д.  Это ускорит поиск в много тысяч раз. Учитывая, что поиск может быть ежедневным, а количество груп в текстовом документе огромным это лишним не будет.
Вариант с рейтингом думаю, что мне не подойдет, а вот это интересно, сейчас подумаю, как реализовать

2
Спасибо, я все учту, особенно, что касается задержек и getscreen. В цикле ставил задержки, и Print тоже, чтобы отследить, что творится вообще, а потом также ставил и print($v_massive), после чего понял свою ошибку. Что касается остальных задержек, то читал, что нужно их ставить, чтобы не нагружать процессор, возможно что-то не правильно понял. То есть их нужно ставить после каких-то нажатий клавиатуры и мыши, в остальных случаях не нужно? Какие они должны быть?

3
Code: (clickermann) [Select]
   IF($count1 = $sravni)    //  сравниваем
      goto(start)           // если видим совпадение, идем в начало
   END_IF
Ты выпрыгиваешь из цикла (что не очень хорошо), при этом не обнуляя массив, но если цикл завершится сам то обнулять уже будет нечего, ведь ARRPOP извлекает и удаляет последний элемент массива. Также в этом цикле не нужны задержки, лишние тормоза.

Разумнее всего каким либо образом предварительно сграбить все ссылки, обработать их удалив дубликаты (например в Akel Pad есть такие инструменты) и уж потом гонять по страницам.
спасибо за ответ, сам только что нашел. И за совет тоже спасибо!

4
Суть этого сценария заключается в том, что он на страницах типа этой https://vk.com/wall-36231266?offset=20 ищет ссылки на группы ВК и открывает их на новой вкладке, а дальше вступает в группу и т.д. Это только часть сценария (только открываем новую вкладку, в группу не вступает и дальнейшие действия не делает), именно в этой части проблема. Тот момент, о котором я спрашивал нужен для того, чтобы не открывались одни и те же группы по нескольку раз, так как там публикуют свою рекламу по много раз. То есть смотрим на миниатюру, считаем сумму пикселов, если такое уже открывали (такая сумма пикселов уже встречалась), пропускаем. Если смотреть на лог во время работы программы, видно, что цикл бывает крутится либо несколько раз, либо бывает бесконечно (именно в этот момент кажется, что программа остановилась)


Code: (clickermann) [Select]
$numb_click=WNDFIND ("Clickermann")  // определяем номер окна кликера
waitms(10)
SETKBLAYOUT ($numb_click, 1049)     // устанавливаем русский для кликера
waitms(100)
$numb_okn=WNDFIND ("google chrome")  // определяем номер окна Хрома
waitms(50)
WNDSIZE ($numb_okn, 1380, 742)      //устанавливаем размер окна Хрома
waitms(100)
HSET ($numb_okn, 1)   // привязываемся к Хрому
waitms(50)

start:
//прокручиваем страницу вниз
LCLICK(1156,329) // кликаем в пустое место страницы
keypress(#down)
waitms(10)
keypress(#down)
waitms(100)
GETSCREEN
IF_PICTURE_IN (415,85, 480,260, "line.bmp",-1,90)  //ищем отделяющую линию
   //записывем координаты
   $x1=$_return1
   waitms(10)
   $y1=$_return2
   WAITMS(100)
else
   goto(start)   //если не нашли, возвращаемся
END_IF
waitms(50)
GETSCREEN
IF_PICTURE_IN ($x1+10,$y1+10, 1130,730, "like.bmp", -1, 90) //ищем лайк
   //записывем координаты
   $x2=$_return1
   waitms(10)
   $y2=$_return2
   WAITMS(100)
END_IF
waitms(100)

GETSCREEN
$count1 = PXLCRC ($x1,$y1+12, $x1+10, $y1+20)  // считаем сумму пикселов в миниатюре под отделяющей линией
waitms(10)

TFREADARR ("file_mass.txt", $arr)   // считываем из текстового файла все предыдущие суммы пикселов и помещаем их в массив
waitms(100)


$v_massive= ARRSIZE($arr)     // $v_massive = число элементов в массиве
FOR($a=0,$a<$v_massive)      // цикл извлечение элементов массива
   waitms(10)
   $sravni=INT(ARRPOP($arr))
print($sravni)     // извлекается и преобразуется в число последний элемент массива ( массив уменьшается на 1 элемент)
   waitms(20)
   IF($count1 = $sravni)    //  сравниваем
      goto(start)           // если видим совпадение, идем в начало
   END_IF
END_CYC
waitms(10)
UNDEFINE($arr)  // очищаем массив

waitms(100)

GETSCREEN
IF_picture_IN($x1,$y1, $x2,$y2, "vk.bmp")   //ищем ссылку вконтакта
   waitms(100)
   mclick($_return1+1,$_return2+1)      // если нашли ее, открываем на фоновой вкладке
   WAITMS(500)
   
   LCLICK(300,30)    // кликаем на открытую вкладку
   
   waitms(10)
   TFWRITE("file_mass.txt", $control)     //записываем в массив сумму пикселов миниатюрки аватара человека, разместившего ссылку
else
   goto(start)  // идем в начало, если не нашли ссылку
end_if
P.S. Ошибся, когда редактировал текст для того, чтобы опубликовать тут. В 72 строке вместо $control должен быть $count1

5
Суть этого сценария заключается в том, что он на страницах типа этой https://vk.com/wall-36231266?offset=20 ищет ссылки на группы ВК и открывает их на новой вкладке, а дальше вступает в группу и т.д. Это только часть сценария (только открываем новую вкладку, в группу не вступает и дальнейшие действия не делает), именно в этой части проблема. Тот момент, о котором я спрашивал нужен для того, чтобы не открывались одни и те же группы по нескольку раз, так как там публикуют свою рекламу по много раз. То есть смотрим на миниатюру, считаем сумму пикселов, если такое уже открывали (такая сумма пикселов уже встречалась), пропускаем. Если смотреть на лог во время работы программы, видно, что цикл бывает крутится либо несколько раз, либо бывает бесконечно (именно в этот момент кажется, что программа остановилась)


Code: (clickermann) [Select]
$numb_click=WNDFIND ("Clickermann")  // определяем номер окна кликера
waitms(10)
SETKBLAYOUT ($numb_click, 1049)     // устанавливаем русский для кликера
waitms(100)
$numb_okn=WNDFIND ("google chrome")  // определяем номер окна Хрома
waitms(50)
WNDSIZE ($numb_okn, 1380, 742)      //устанавливаем размер окна Хрома
waitms(100)
HSET ($numb_okn, 1)   // привязываемся к Хрому
waitms(50)

start:
//прокручиваем страницу вниз
LCLICK(1156,329) // кликаем в пустое место страницы
keypress(#down)
waitms(10)
keypress(#down)
waitms(100)
GETSCREEN
IF_PICTURE_IN (415,85, 480,260, "line.bmp",-1,90)  //ищем отделяющую линию
   //записывем координаты
   $x1=$_return1
   waitms(10)
   $y1=$_return2
   WAITMS(100)
else
   goto(start)   //если не нашли, возвращаемся
END_IF
waitms(50)
GETSCREEN
IF_PICTURE_IN ($x1+10,$y1+10, 1130,730, "like.bmp", -1, 90) //ищем лайк
   //записывем координаты
   $x2=$_return1
   waitms(10)
   $y2=$_return2
   WAITMS(100)
END_IF
waitms(100)

GETSCREEN
$count1 = PXLCRC ($x1,$y1+12, $x1+10, $y1+20)  // считаем сумму пикселов в миниатюре под отделяющей линией
waitms(10)

TFREADARR ("file_mass.txt", $arr)   // считываем из текстового файла все предыдущие суммы пикселов и помещаем их в массив
waitms(100)


$v_massive= ARRSIZE($arr)     // $v_massive = число элементов в массиве
FOR($a=0,$a<$v_massive)      // цикл извлечение элементов массива
   waitms(10)
   $sravni=INT(ARRPOP($arr))
print($sravni)     // извлекается и преобразуется в число последний элемент массива ( массив уменьшается на 1 элемент)
   waitms(20)
   IF($count1 = $sravni)    //  сравниваем
      goto(start)           // если видим совпадение, идем в начало
   END_IF
END_CYC
waitms(10)
UNDEFINE($arr)  // очищаем массив

waitms(100)

GETSCREEN
IF_picture_IN($x1,$y1, $x2,$y2, "vk.bmp")   //ищем ссылку вконтакта
   waitms(100)
   mclick($_return1+1,$_return2+1)      // если нашли ее, открываем на фоновой вкладке
   WAITMS(500)
   
   LCLICK(300,30)    // кликаем на открытую вкладку
   
   waitms(10)
   TFWRITE("file_mass.txt", $control)     //записываем в массив сумму пикселов миниатюрки аватара человека, разместившего ссылку
else
   goto(start)  // идем в начало, если не нашли ссылку
end_if

6
дело не в цикле, а в символах ваших строк, можете проверить скармливая кусками всего по 5 строк, спотыкаться будет именно на нечитаемых символах одних и тех же строк независимо от размера массива.
Но у меня в массиве числа (например такие 50067651), никаких символов, кириллицы и прочего нет, или я что-то не правильно понял?

7
У меня еще вопрос появился.  Когда в массиве около 50 строк, программа, начинает подтормаживать, и наступает момент, когда вообще останавливается. Перезапуск помогает, но после 20-30 циклов скрипта опять тормозит и останавливается. (то есть перезапуск не означает, что массив пустой стал, он сразу же из файла наполняется до прежнего вида) Получается, что если в массиве много элементов, цикл работает некорректно. В чем может быть проблема? Для clickermanna 50 элементов в массиве - это много?

8
Спасибо всем огромное, очень мне помогли!

9
Приветствую, подскажите пожалуйста новичку. Есть задача сравнить определенную переменную со всеми элементами массива, и если найдется совпадение, сделать определенное действие. И еще один вопрос, можно ли очищать массив, а то я считываю элементы с txt файла, и с каждым циклом программы, к предыдущим элементам добавляются новые, а хотелось бы чтобы, каждый цикл создавался новый массив. Заранее благодарен.

Pages: [1]