Author Topic: Поиск картинки в невидимой части страницы  (Read 2425 times)

0 Members and 1 Guest are viewing this topic.

bulgachevarada

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Доброго дня помогите пожалуйста с макросом надо реализовать  поиск иконки кнопки репоста в вк через картинку и нажатие на нее, так как записи бывают разного размера картинку надо искать по всей странице в невидимой части экрана в том числе где без прокрутки не добраться возможно ли как то проще это сделать? или прокрутку обязательно и как вообще написать макрос, чтоб картинка находилась по любому цвету выставить диапазон неограниченный, так как цвет изменится если уже сделан был репост, а кнопку надо находить несколько раз не обновляя страницу...
И второе как если нашел такую страницу просто остановить макрос или повторять действие пока картинка не будет найдена с определенным интервалом. Спасибо. Заранее прошу прощения если повтор, но из всех тем что нашла никак не получалось реализовать, возможно из за смены цветовых гамм картинки
« Last Edit: October 20, 2017, 04:22:38 PM by bulgachevarada »

Атеист

  • Guest
Доброго дня. Как вариант, кнопку можно закрепить в нужном месте видимой части сайта. Потребуется установить расширение для браузера типа Stylish. Пример из прошлой темы http://crapware.aidf.org/forum/index.php?topic=3143.msg21149#msg21149

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Для борьбы с изменяющейся графикой применяй цветокоррекцию
Code: (clickermann) [Select]
// Получение скриншота с цветокоррекцией (фильтр 6)
GETSCREEN
COLORMODE(6)
SCREENSHOT
HALT

Нужно вырезать из этого скриншота картинку рупора.

Вот цикл поиска картинки. Если не найдено прокручиваем страницу. цикл ограничен 20ю секундами, если за это время не найдет то цикл завершится, если найдет то кликаем и завершаем цикл.
Code: (clickermann) [Select]
$time = $_time_t + 20 // таймер на 20 секунд
WHILE($time > $_time_t)
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 70) // поиск картинки с 70% процентов совпадения
      $time = 0
      LCLICK($_return1+2, $_return2+2)
      WAITMS(100)
   ELSE
      WHEELDOWN
      WAITMS(500)
   END_IF
END_CYC

А вот как выглядит поиск двух картинок "1.bmp" или "2.bmp"
Code: (clickermann) [Select]
$time = $_time_t + 10 // таймер на 20 секунд
WHILE($time > $_time_t)
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 80)
      $time = 0
      LCLICK($_return1+2, $_return2+2)
      WAITMS(100)
   ELSE
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 80)
         $time = 0
         LCLICK($_return1+2, $_return2+2)
         WAITMS(100)
      ELSE
         WHEELDOWN
         WAITMS(500)
      END_IF
   END_IF
END_CYC
« Last Edit: October 22, 2017, 08:25:05 AM by Oraven »

bulgachevarada

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Для борьбы с изменяющейся графикой применяй цветокоррекцию
Code: (clickermann) [Select]
// Получение скриншота с цветокоррекцией (фильтр 6)
GETSCREEN
COLORMODE(6)
SCREENSHOT
HALT

Нужно вырезать из этого скриншота картинку рупора.

Вот цикл поиска картинки. Если не найдено прокручиваем страницу. цикл ограничен 20ю секундами, если за это время не найдет то цикл завершится, если найдет то кликаем и завершаем цикл.
Code: (clickermann) [Select]
$time = $_time_t + 20 // таймер на 20 секунд
WHILE($time > $_time_t)
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 70) // поиск картинки с 70% процентов совпадения
      $time = 0
      LCLICK($_return1+2, $_return2+2)
      WAITMS(100)
   ELSE
      WHEELDOWN
      WAITMS(500)
   END_IF
END_CYC

А вот как выглядит поиск двух картинок "1.bmp" или "2.bmp"
Code: (clickermann) [Select]
$time = $_time_t + 10 // таймер на 20 секунд
WHILE($time > $_time_t)
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 80)
      $time = 0
      LCLICK($_return1+2, $_return2+2)
      WAITMS(100)
   ELSE
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 80)
         $time = 0
         LCLICK($_return1+2, $_return2+2)
         WAITMS(100)
      ELSE
         WHEELDOWN
         WAITMS(500)
      END_IF
   END_IF
END_CYC

Спасибо большое! все проделую, но не ищет ничего почему то, скрин через COLORMODE(6), открываю через пейнт выделяю рупор уменьшаю оставляя только нужный єлемент сохраняя в том же формате как бы просто сохранить все указываю как вы описали прокрутка идет а фотку никак не находит, уже и браузера меняла все никак в чем может быть проблема? изменяю процент на меньше ловит все подрят и текст но не то что надо...(

Атеист

  • Guest
Вот что остается от страницы после применения css стилей...



На картинке каждый пиксель в красной полоске это ссылка на которую нужно кликать (рупор). Синий кружок добавляет ссылки из невидимой части страницы сайта. Это как бы прокрутка страницы. После первого клика по кружку можно жмякать пробел. Если ссылок на странице много, то красная полоска будет расти,  построчно заполняя всю страницу и далее. Я выбрал страницу где очень много ссылок, даже не знаю сколько, устал прокручивать пробелом и бросил. На моем мониторе с разрешением 1440x900 уместится больше миллиона таких ссылок. Если отключить в браузере загрузку изображений, то это еще больше облегчит жизнь компу и Кликерману. Стили прилагаю.

[spoiler=Стили для ВК]
Code: (css) [Select]
#page_layout, #page_body {
margin: 0;
padding: 0;
width: 100% !important;
}
.page_header_cont, .side_bar, .page_block, .post_header, .wall_text, .post_full_like > a:not([class="post_share _share_wrap "]), .replies, .post_views, .post_share_count, .blind_label, .post_share_icon._icon {
display: none;
}
._post.post.page_block.all.own {
box-shadow: none;
margin: 0;
}
.wall_posts.own {
display: flex;
flex-wrap: wrap;
margin: 5px;
width: 100vw;
}
.tt_w {
display: none !important;
}
.wall_posts.own > div * {
margin: 0;
padding: 0;
}
.post_full_like_wrap {
border: none;
}
.post_share {
background: #FF00DC;
border-radius: 0;
height: 1px;
width: 1px;
}
#wall_more_link {
background: blue;
border-radius: 50%;
color: transparent;
height: 10px;
margin: 5px;
overflow: hidden;
padding: 0;
width: 10px;
}
[/spoiler]

psyzum

  • Зашел в гости
  • *
  • Posts: 19
    • View Profile
//GETSCREEN
//COLORMODE(7)
//SCREENSHOTEX(99,90, 107,97, "vge7", 0)
//HALT

THREAD(name, 1)
GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 255)
   LCLICK($_return1, $_return2)
   WAITMS(100)
GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 255)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
END_IF
END_THREAD

THREAD(name, 2)
GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 255)
   LCLICK($_return1, $_return2)
   WAITMS(100)
GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 255)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
END_IF
END_THREAD

\\===============================
IF(pxl(55, 22) = 777)
$_return1+2
$y = $_return2+2
print( "  +")
//postmessage($hwnd, 0x0200, 0, $xp + ($yp*65536))
WAITMS(rnd(100,200))
postmessage($hwnd, 0x0201, 0x0001, $x + ($y*65536))
postmessage($hwnd, 0x0202, 0x0000, $x + ($y*65536))
ELSE
END_IF
кусочек себе ре и           я спать