Author Topic: Парсинг значения времени в браузере  (Read 4735 times)

0 Members and 2 Guests are viewing this topic.

Alexxx

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Здравствуйте. Подскажите, пожалуйста, возможно ли средствами "Clickermann" считывать время со странички браузера и заносить её в переменную? Вот скажем, сайт time100.ru - просто страничка с цифровыми часами, как сделать, что бы переменная ежесекундно изменялась в такт с ними? Буду рад любой помощи.

Alexxx

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: Парсинг значения времени в браузере
« Reply #1 on: January 31, 2019, 12:35:45 PM »
Спасибо за ответ. Совет интересный, но моя задача несколько сложнее. На страничке идёт обратный отсчёт времени, при достижении нуля нужно кликнуть на кнопку. Кроме этого есть ещё одна меняющаяся цифра, значение которой необходимо сравнивать с предыдущим. Это осложнено тем, что поле с цифрой плавает вверх-вниз. В общем, вопрос тот же - можно ли получать эти цифры в переменные, хотя бы раз в минуту. Это в принципе возможно?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Парсинг значения времени в браузере
« Reply #2 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.msg16221#msg16221

Alexxx

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: Парсинг значения времени в браузере
« Reply #3 on: March 09, 2019, 01:41:07 PM »
достаточно один раз  день, в ручную синхронизировать время на своём компе с интересующим сайтом и в дальнейшем пользоваться готовыми системными переменными времени.

Благодарю всех откликнувшихся. Пожалуй, вариант с синхронизацией самый оптимальный, обратный отсчёт запускается стабильно каждую минуту. Но возник другой вопрос: а как, собственно, узнать, что минута прошла и счётчик обнулился? Мне, кроме как вызывать в цикле текущую секунду ($_time_s) и ждать пока она не станет "00" ничего в голову не приходит. Может есть какой то другой способ?

Alexxx

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: Парсинг значения времени в браузере
« Reply #4 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)

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

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Парсинг значения времени в браузере
« Reply #5 on: March 12, 2019, 10:09:12 AM »
Вот скажем, сайт 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-битную версию кликера.
« Last Edit: March 12, 2019, 10:11:10 AM by Hito »
Я не ду... Потому и не бу...

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Парсинг значения времени в браузере
« Reply #6 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

Alexxx

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: Парсинг значения времени в браузере
« Reply #7 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 сообщений - сколько успел за секунду, видимо. А как сделать, что бы тело однократно выполнилось?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Парсинг значения времени в браузере
« Reply #8 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)

Alexxx

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: Парсинг значения времени в браузере
« Reply #9 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
В целом работает, но так как время выполнения тела не нулевое, начало выполнения следующего цикла сдвигается на пару секунд. В общем, прошу помощи - как добиться строгого срабатывания раз в минуту?

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Re: Парсинг значения времени в браузере
« Reply #10 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
« Last Edit: April 04, 2019, 08:35:34 PM by Космич »
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Re: Парсинг значения времени в браузере
« Reply #11 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
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Shada

  • Освоившийся
  • **
  • Posts: 24
    • View Profile
Re: Парсинг значения времени в браузере
« Reply #12 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 миллисекунду спишем на вывод этого сообщения