Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как отслеживать длительность просмотра видео в реальном времени?

selenium
webdriver
Теги: #<Tag:0x00007f7b6d6007d0> #<Tag:0x00007f7b6d600690>

(It Ot) #1

Как отследить длительность просмотра видео на ютуб в реальном времени?
Сценарий:

  1. Проигрывается видео (ютуб) в обычном браузере (или браузере созданном на базе C#).
  2. Считывается секундомер длительности просмотра видео.
  3. Секундомер выводится на окно Виндовс формы.

Т.е. время просмотра синхронно с плеером отображается в форме.

Прилагаю скрин http://prntscr.com/conq3o


(ex3me0) #2

Боюсь Вы не учли время загрузки самого ролика, а лаг может быть как на стороне клиента, так и на стороне сервера (большая нагрузка, долгое время сервинга).
Таймер в таком случае - совсем не показателен и проще обратиться к объекту плеера (в случае с HTML5) и выдрать счетчик оттуда: //span[@class=“ytp-time-current”]


(It Ot) #3

Это я и предполагал, но подумал, что может, что похитрее есть…

А какова логика предложенного вами процесса в виде кода?
Сделать цикл, который будет считывать каждую секунду с “//span[@class=“ytp-time-current””?


(ex3me0) #4

Да, теперь увидел. Неверно истолковал Ваш пост изначально, сорри.
Это будет самый достоверный способ, в случае UI тестирования.
Вообще зависит от того, что я ожидаю получить на выходе, и для чего мне эти данные. Если мы говорим “в общем” в контексте вебдрайвера, то пайтоновская реализация имеет заготовленный wait.until(condition), аналогичное есть точно в Java, так что думаю и в C# найдется что-то подобное.


(It Ot) #5

Имеется:

  1. База данных:
    1.1 - Перечень видео для просмотра
    1.2 - Длительность для просмотра 2 - требуемая длительность для просмотра

Предполагается следующий сценарий:

  1. Длительность просмотра 1 извлекается из видео.
  2. Длительность просмотра 2 извлекается из базы данных Ексель.
  3. Если Длительность просмотра 1 > Длительность просмотра 2, то видео останавливается.

(ex3me0) #6

Ожидаемый результат - это отправная точка.
Поэтому сначала извлечь Длительность_просмотра_2 из базы, а потом wait.until(Длительность_просмотра_2 < int(driver.find_element_by_xpath("//span[@class=“ytp-time-current”]/text())))
Ну или на свой лад переписать, более красиво. Правильным путем идете, как по мне


(It Ot) #7

Формат извлекаемых данных будет мм:сс
Т.е.
Длительность_просмотра_2 - мм:сс
//span[@class="ytp-time-current- мм:сс

  1. Будет ли выполняться сравнение (> или <) Длительность_просмотра_2 и //span[@class="ytp-time-current в таких форматах?
    Или нужно переформатировать?

  2. Всё таки по какому направлению лучше двигаться?
    Парсер, который каждую секунду будет извлекать и //span[@class="ytp-time-current?

P.S.
C# пока осваиваю, поэтому вопросы могут быть немного некорректные.
Приношу извинения.