Что нового

[Автоматизация] Определение оставшегося времени до конца видео задания

alex33

Скриптер
Сообщения
1,457
Репутация
186
Здравствуйте. Я пишу бота для сайта.
Там есть видео задания. Вот код.
Код:
<div class="tasks" id="tasklist">
<p>Условие: просмотр видео 2 минуты</p>
<p>Условие: просмотр видео 5 минуты</p>
<p>Условие: просмотр видео 3 мин</p>
<p>Условие: просмотр 40 сек</p>
<p>Условие выполнения: просмотр ролика 1 минута</p>
<p>Условие выполнения: просмотр ролика до конца</p>
<p>Условие получения: Просмотр ролика не менее 2 минут</p>
</div>
<div class="desc"><p>Нажмите на текст с условием, просмотрите ролик указанное время и опять нажмите на условие. После этого на ваш баланс будет зачислен бонус.</p></div>
Ниже находится код флеш плеера Youtube, Rutube, video.Mail.ru и т.д. там типо такого
Код:
<object
<object width="560" height="315"><param name="movie" value="//www.youtube.com/v/%s%?version=3&amp;hl=ru_RU&amp;rel=0&amp;showinfo=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="//www.youtube.com/v/%s%?version=3&amp;hl=ru_RU&amp;rel=0&amp;showinfo=0" type="application/x-shockwave-flash" width="560" height="315" allowscriptaccess="always" allowfullscreen="true"></embed></object>
Ну так вот...
Суть заключается в том, что надо два раза нажать на текст "Условие: просмотр видео..." один раз для начала, второй раз для окончания.
И нужно распарсить время и перевести его в милисекунды для использования в Sleep.
Как это сделать?
Дайте пожалуйста рабочий пример.
Вот мой код. Код полностью работает, всё делает правильно кроме ожидания...
Код:
#include <IE.au3>
_IELoadWaitTimeout(10000)
Global $oIE, $oDiv, $oPs, $sURL = "http://***.ru/index.php?action=videotasks"

$oIE = _IECreate($sURL)
Sleep(1000)
;video_tasks;
$oDiv = _IEGetObjById($oIE, "tasklist")
$oPs = _IETagNameGetCollection($oDiv, "p")
If IsObj($oPs) Then
For $oP In $oPs
_IEAction($oP, "click")
Sleep(5000) ; вот здесь надо определять сколько ждать
_IEAction($oP, "click")
Sleep(1000)
Next
EndIf
 

JIereHga2010

Новичок
Сообщения
68
Репутация
0
Извини, alex33, может я не в тему. Не сильно разбираюсь в Автоит.
Я так понял, что на сайте несколько видов заданий, тобишь:
Код:
<p>Условие: просмотр видео 2 минуты</p>
<p>Условие: просмотр видео 5 минуты</p>
<p>Условие: просмотр видео 3 мин</p>
<p>Условие: просмотр 40 сек</p>
И твой скрипт по очереди их проклацивает.
А что если получить InnerText из того задания, на которое ты клацаешь, потом из этого текста вытащить только цифры. И задать логику, если цифра больше 60 - тогда считать ее минутой. Вот и будет твой слип. Но на счет как просмотреть ролик до конца... тут даже представлений не имею.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
alex33 [?]
Как это сделать?
Код:
$iTime = 0
For $oP In $oPs
   $iTime = StringRegExpReplace($oP.innerText, '.*(\d+).*', '$1')
   _IEAction($oP, "click")
   Sleep($iTime*60*1000) ; вот здесь надо определять сколько ждать
   _IEAction($oP, "click")
   Sleep(1000)
Next
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Ну, и мой вариант.
(да, допиленный вариант Garrettа)
Код:
For $oP In $oPs
   $iMin = StringRegExpReplace($oP.innerText, '.*(\d+)\sмин.*', '$1')
   If @error Then $iMin = 0
   $iSec = StringRegExpReplace($oP.innerText, '.*(\d+)\sсек.*', '$1')
   If @error Then $iSec = 0
   _IEAction($oP, "click")
   Sleep(($iMin*60+$iSec+1)*1000) ; вот здесь надо определять сколько ждать, а +1 - это страховка)
   _IEAction($oP, "click")
   Sleep(1000)
Next
 
Автор
alex33

alex33

Скриптер
Сообщения
1,457
Репутация
186
Всем спасибо за ответы, как будет возможность проверю...
 
Верх