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

Основной раздел => Общие вопросы => Topic started by: Alexxx on January 30, 2019, 12:52:32 PM

Title: Парсинг значения времени в браузере
Post by: Alexxx on January 30, 2019, 12:52:32 PM
Здравствуйте. Подскажите, пожалуйста, возможно ли средствами "Clickermann" считывать время со странички браузера и заносить её в переменную? Вот скажем, сайт time100.ru (http://time100.ru) - просто страничка с цифровыми часами, как сделать, что бы переменная ежесекундно изменялась в такт с ними? Буду рад любой помощи.
Title: Re: Парсинг значения времени в браузере
Post by: Alexxx on January 31, 2019, 12:35:45 PM
Спасибо за ответ. Совет интересный, но моя задача несколько сложнее. На страничке идёт обратный отсчёт времени, при достижении нуля нужно кликнуть на кнопку. Кроме этого есть ещё одна меняющаяся цифра, значение которой необходимо сравнивать с предыдущим. Это осложнено тем, что поле с цифрой плавает вверх-вниз. В общем, вопрос тот же - можно ли получать эти цифры в переменные, хотя бы раз в минуту. Это в принципе возможно?
Title: Re: Парсинг значения времени в браузере
Post by: Oraven on January 31, 2019, 02:20:22 PM
Ну так тебе нужно распознавание текста или чисел
http://crapware.aidf.org/forum/index.php?topic=88.msg1571#msg1571 (http://crapware.aidf.org/forum/index.php?topic=88.msg1571#msg1571)
http://crapware.aidf.org/forum/index.php?topic=88.msg16221#msg16221 (http://crapware.aidf.org/forum/index.php?topic=88.msg16221#msg16221)
Title: Re: Парсинг значения времени в браузере
Post by: Alexxx on March 09, 2019, 01:41:07 PM
достаточно один раз  день, в ручную синхронизировать время на своём компе с интересующим сайтом и в дальнейшем пользоваться готовыми системными переменными времени.

Благодарю всех откликнувшихся. Пожалуй, вариант с синхронизацией самый оптимальный, обратный отсчёт запускается стабильно каждую минуту. Но возник другой вопрос: а как, собственно, узнать, что минута прошла и счётчик обнулился? Мне, кроме как вызывать в цикле текущую секунду ($_time_s) и ждать пока она не станет "00" ничего в голову не приходит. Может есть какой то другой способ?
Title: Re: Парсинг значения времени в браузере
Post by: Alexxx on March 12, 2019, 04:24:30 AM
Попалась на глаза такая информация:
Скрипт включает действия в определенное время.
IF_TIME("*:*:*"). Звездочка означает любой час, любую минуту и секунду.

IF_TIME("12:00:00") // сработает в 12:00:00
END_IF

Пример:
Code: [Select]
IF_TIME("12:10:*") // Включаем в 12.10
$t1 = 1
END_IF

IF_TIME("16:10:*") // Отключаем в 16.10
$t1 = 0
END_IF


IF_TIME("16:10:*") // Включаем в 16.10
$t2 = 1
END_IF

IF_TIME("12:10:*") // Отключаем в 12.10
$t2 = 0
END_IF


IF($t1 = 1) // 12.10
// здесь Действие 
// Будет выполняться с 12.10 по 16.10
LOGWRITE("Задание в 12.10")
END_IF

IF($t2 = 1) // 16.10
// здесь Действие
// Будет выполняться с 16.10 по 12.10
LOGWRITE("Задание в 16.10")
END_IF

WAITMS (500)

Вроде бы то, что нужно. Жаль, что в справке про эту команду нет упоминания.
Title: Re: Парсинг значения времени в браузере
Post by: Hito on March 12, 2019, 10:09:12 AM
Вот скажем, сайт time100.ru (http://time100.ru) - просто страничка с цифровыми часами, как сделать, что бы переменная ежесекундно изменялась в такт с ними?
Code: (clickermann) [Select]
$HTML = HTTPGET("https://time100.ru/")
$num =  STRPOS ($HTML, "<span>%H%:%i%:%s</span>")
IF($num ! 0)
   $vremya = STRCUT ($HTML, $num+25, 8)
   LOGWRITE ($vremya)
END_IF
WAITMS(50)

Только в папку кликера надо бросить ssleay32.dll и libeay32.dll. Ну, и запускать 32-битную версию кликера.
Title: Re: Парсинг значения времени в браузере
Post by: Oraven on March 12, 2019, 11:56:42 AM
Вроде бы то, что нужно. Жаль, что в справке про эту команду нет упоминания.

То же самое
Code: (clickermann) [Select]
IF(($_time_h = 12)&($_time_m = 10)&($_time_s = 0)) // сработает в 12:10:00
  // body
END_IF
Title: Re: Парсинг значения времени в браузере
Post by: Alexxx on March 19, 2019, 07:43:24 PM
То же самое
Code: (clickermann) [Select]
IF(($_time_h = 12)&($_time_m = 10)&($_time_s = 0)) // сработает в 12:10:00
  // body
END_IF

Попробовал этот код, добавив в тело "PRINT", всё сработало, но в лог напечаталось порядка 30 сообщений - сколько успел за секунду, видимо. А как сделать, что бы тело однократно выполнилось?
Title: Re: Парсинг значения времени в браузере
Post by: Oraven on March 20, 2019, 06:55:16 AM
То же самое
Code: (clickermann) [Select]
IF(($_time_h = 12)&($_time_m = 10)&($_time_s = 0)) // сработает в 12:10:00
  // body
END_IF

Попробовал этот код, добавив в тело "PRINT", всё сработало, но в лог напечаталось порядка 30 сообщений - сколько успел за секунду, видимо. А как сделать, что бы тело однократно выполнилось?

Добавь задержку в 1 секунду
Code: (clickermann) [Select]
IF(($_time_h = 12)&($_time_m = 10)&($_time_s = 0)) // сработает в 12:10:00
   // body
   WAIT(1)
END_IF

WAITMS(50)
Title: Re: Парсинг значения времени в браузере
Post by: Alexxx on April 04, 2019, 07:51:22 PM
Code: (clickermann) [Select]
IF(($_time_h = 12)&($_time_m = 10)&($_time_s = 0)) // сработает в 12:10:00
  // body
END_IF
Подскажите, а как постоянно вызывать этот код раз в минуту?

Попробовал воспользоваться другим способом, найденым на форуме:
Code: (clickermann) [Select]
GETSCREEN(1031,268,1046,667)
IF($time1 < $_time_t)
   $time1 = $_time_t + 60
   GETSCREEN(1031,268,1046,667)
   IF_PIXEL_IN(1030,267,1045,666, 3823071) // красный
      LOGWRITE ("Красный")
      $peremennaya = 1
   else
      IF_PIXEL_IN(1030,267,1045,666, 7186218) // зеленый
         LOGWRITE ("Зеленый")
         $peremennaya = 0
      END_IF
   END_IF
END_IF
В целом работает, но так как время выполнения тела не нулевое, начало выполнения следующего цикла сдвигается на пару секунд. В общем, прошу помощи - как добиться строгого срабатывания раз в минуту?
Title: Re: Парсинг значения времени в браузере
Post by: Космич on April 04, 2019, 08:32:34 PM
В целом работает, но так как время выполнения тела не нулевое, начало выполнения следующего цикла сдвигается на пару секунд. В общем, прошу помощи - как добиться строгого срабатывания раз в минуту?
ну так присваивай значение перед выходом из условия
Code: (clickermann) [Select]
IF($time1 < $_time_t)
   GETSCREEN(1031,268,1046,667)
   IF_PIXEL_IN(1030,267,1045,666, 3823071) // красный
      LOGWRITE ("Красный")
      $peremennaya = 1
   else
      IF_PIXEL_IN(1030,267,1045,666, 7186218) // зеленый
         LOGWRITE ("Зеленый")
         $peremennaya = 0
      END_IF
   END_IF
   $time1 = $_time_t + 60
END_IF
Title: Re: Парсинг значения времени в браузере
Post by: Космич on April 04, 2019, 08:59:14 PM
Вот так будет точнее

Code: (clickermann) [Select]
IF($time1 <= $_ms)
   GETSCREEN(1031,268,1046,667)
   IF_PIXEL_IN(1030,267,1045,666, 3823071) // красный
      LOGWRITE ("Красный")
      $peremennaya = 1
   else
      IF_PIXEL_IN(1030,267,1045,666, 7186218) // зеленый
         LOGWRITE ("Зеленый")
         $peremennaya = 0
      END_IF
   END_IF
   $time1 = $_ms + 60000
END_IF
Title: Re: Парсинг значения времени в браузере
Post by: Shada on April 05, 2019, 10:25:27 AM
В целом работает, но так как время выполнения тела не нулевое, начало выполнения следующего цикла сдвигается на пару секунд. В общем, прошу помощи - как добиться строгого срабатывания раз в минуту?

В моем понимании вопроса, требуется коррекция задержки между итерациями цикла, которая должна быть строго равна 1 минуте.

Было такое решение однажды. Сам по себе алгоритм красивенный, если вникнуть,  плюс эта коррекция паузы - http://crapware.aidf.org/forum/index.php?topic=3439.msg23552#msg23552

Пример:
Code: (clickermann) [Select]
DEFINE($iteration_time, 1000) // устанавливаем задержку между итерациями цикла, в миллисекундах (1000 ms)

$t = $_ms // время начала итерации

WAITMS(RND(500,800)) // время выполнения тела цикла (всегда разное и должно быть меньше $iteration_time)

// коррекция времени (вычисляем время задержки, перед началом следующей итерации)
WAITMS($iteration_time - ($_ms - $t)) // задержка (вычитаем из задержки "$iteration_time" время, затраченное на выполнение действий в текущей итерации)

LOGWRITE ("Потеря времени: ", $iteration_time - ($_ms - $t), " ms") // 1 миллисекунду спишем на вывод этого сообщения