Получение длины видео в Python Selenium - PullRequest
0 голосов
/ 04 октября 2019

Я создаю бота в Python Selenium, который может записаться на бесплатные курсы с самым высоким рейтингом в Udemy. Я также хочу, чтобы бот воспроизводил видео для меня, и когда видео закончится, оно может перейти к следующему видео. Ранее я искал в Google и нашел несколько ответов о том, как получить длину видео для видеофайла, но они не работают на видео курса Udemy.

Что я действительно хочу, так это получить общую длинувидео в секундах или минутах, пока бот будет постоянно отслеживать время, и когда воспроизводимое время становится равным общей длине видео, оно может затем перейти к следующему видео ... Ниже приведен код, которым я являюсьиспользуя который войдите только в учетную запись и зарегистрируйтесь на одном из бесплатных курсов на Udemy.

from selenium.webdriver.common.by import By
import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver

email='huaaddty8339@gmail.com'
password='kulningkswoymama7'

browser = webdriver.Firefox()
browser.get('https://www.udemy.com')
time.sleep(25)
browser.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div[4]/div[6]').click()
time.sleep(9)

browser.find_element_by_xpath('//*[@id="email--1"]').send_keys(email)
time.sleep(4)

browser.find_element_by_xpath('//*[@id="id_password"]').send_keys(password)
time.sleep(2)

browser.find_element_by_xpath('//*[@id="submit-id-submit"]').click()
time.sleep(16)

browser.find_element_by_xpath('//*[@id="header-search-field"]').send_keys("Python")
time.sleep(15)

WebDriverWait(browser,20).until(EC.element_to_be_clickable((By.XPATH,"//button[.//span[text()='All 
Filters']]"))).click()


time.sleep(5)
WebDriverWait(browser,20).until(EC.element_to_be_clickable((By.XPATH,"//label[@title and 
.//span/span[text()='Free']]"))).click()
time.sleep(5)

browser.execute_script("window.open('');") 
time.sleep(5)
browser.switch_to.window(browser.window_handles[1])
time.sleep(5)
browser.get("https://www.udemy.com/course/kypython-101/")
time.sleep(30)
try:

 browser.find_element_by_xpath("//html/body/div[2]/div[3]/div[3]/div[1]/div[2]/div[3]/div[1]/div/div/button").click()
 time.sleep(3)

except:
 WebDriverWait(browser, 30).until(EC.element_to_be_clickable((By.XPATH,"/html/body/div[2]/div[3]/div[4]/div/div[2]/div[2]/div/div[1]/div[2]/div[1]/div/div[5]/div/div/div/button"))).click()

1 Ответ

0 голосов
/ 04 октября 2019

Вы можете сделать следующее:

  1. Идентификатор анализа тега видео, содержащего требуемое видео
  2. Выполнить код JavaScript на странице, например document.getElementById('playerId__4399364_html5_api').duration, которая будет возвращать длительность в секундах,Не забудьте изменить id на соответствующий вашему делу.

PS - Вы можете узнать больше о выполнении JS здесь: Запуск javascript в Selenium с использованием Python

PPS - Здесь вы можете найти больше свойств video, которые могут помочь вам в ваших задачах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...