DEV Community

Cover image for Bot para assistir vídeos no YouTube
msc2020
msc2020

Posted on • Originally published at github.com

Bot para assistir vídeos no YouTube

Neste post, usando ferramentas Python, desenvolvemos um robô (bot) 🤖 que seja capaz de assistir vídeos no Youtube de forma automatizada.

Iniciamos com a instalação do Selenium e falamos um pouco sobre WebDriver. Essas ferramentas são bastante usadas em testes de software. Em seguida, apresentamos o script Python que fizemos para automatizar a tarefa de ver um vídeo no Youtube, ou algo do tipo, por N vezes em M janelas abertas simultaneamente. Falamos "algo do tipo" porque de forma muito semelhante ao que será feito conseguimos criar novas tarefas de acordo com a preferência de cada um.


Instalação do Selenium

Em um computador com Python 3, devemos instalar o Selenium. Para isso usamos o pip install:

pip install selenium
Enter fullscreen mode Exit fullscreen mode

O Selenium é uma ferramentas para automatização de tarefas na web. Serve ainda para as mais diversas tarefas de automação no contexto da famosa área conhecida como RPA (Robotic Process Automation). Ele está disponível para download gratuito em algumas linguagens como Java e Ruby. Aqui usaremos a versão para linguagem Python.

homepage selenium


Chrome Driver

Outra ferramenta bastante usada para automatizar testes na web é o WebDriver. Com ele conseguimos executar inúmeras tarefas para diferentes navegadores web. Aqui usaremos o navegador Chrome.

Pré-requisito: Um pré-requisito para instalar o WebDriver é ter uma versão do Chrome instalado ou algo equivalente a isso. Por ex., Firefox e o Webdriver do Firefox. Clique aqui para saber mais.

Agora devemos criar um diretório para salvar o WebDriver dentro dele. Chamaremos o diretório criado de bot-youtube. Isso pode ser feito pelo terminal, com o código abaixo.

mkdir bot-youtube
Enter fullscreen mode Exit fullscreen mode

Download do driver: Para baixar o Chrome driver (WebDriver) correspondente ao seu navegador Google Chrome veja https://chromedriver.chromium.org/downloads ou https://googlechromelabs.github.io/chrome-for-testing/ (para versões mais recentes, i.e., versão > 115). Aqui usamos, e testamos, para a versão do drive para Linux 64 bits (123.0.6312.58) e mesma versão do navegador Chrome. Clique aqui para baixar o Chrome. Caso use Windows ou outro sistema operacional, basta baixar o driver e navegador Chrome adequados.

Estrutura dos arquivos após o download do WebDriver:

bot-youtube/
│
├── chromedriver_linux64/
│   └── chromedriver

Enter fullscreen mode Exit fullscreen mode

Nota: Se usarmos o WebDriver na versão Windows, o nome padrão da pasta chromedriver_linux64 será outro.


Script Python

Para realizar as tarefas automatizadas, de forma que o bot veja um vídeo no Youtube, usaremos o seguinte script (bot_youtube.py) em Python:

#bot_youtube.py

import random
import time
from selenium import webdriver
from selenium.webdriver.common.by import By

PATH_DRIVER = './chromedriver_linux64/' # path para o driver
DEFAULT_LINK = r'https://www.youtube.com/watch?v=XlGLf7cWOJA' # link para o vídeo
DEFAULT_TIME = 56*60 # duração do vídeo em segundos (s)
DEFAULT_N = 2 # número de vezes que o vídeo será visto
DEFAULT_N_DRIVERS = 3 # número de janelas que serão abertas para ver o vídeo

# input - link do vídeo
url = input(f'\n1. Entre com o link do vídeo no YouTube \n[Sugestão: >>> {DEFAULT_LINK}, entrevista com Cornelius Lanczos]:\n\n>>> ')
# obs: o vídeo do Lanczos tem 55:51 min = ~(56 x 60)s = ~3600 s

# checa input
if not url:
    url = DEFAULT_LINK
print(f'>>> URL escolhida: {url}')

# input - tempo do vídeo
duration = input(f'\n\n2. Entre com a duração do vídeo em segundos\n[Por ex.: >>> {DEFAULT_TIME}, para o vídeo do pq ele tem cerca de 1h, ou seja, 3600 s]:\n\n>>> ')

# checa input
if not duration:
    duration = DEFAULT_TIME
else:
    duration = int(duration)
print(f'>>> Tempo de duração escolhido: {duration}')

# define o número de vezes que o bot verá o vídeo
n = input(f'\n\n3. Entre aqui com o número inteiro N correspondente ao número de vezes que o bot irá abrir a(s) janela(s) no navegador para assistir o vídeo\n[Sugestão: >>> {DEFAULT_N}]:\n\n>>> ')

# checa input
if not n:
    n = DEFAULT_N
else:
    n = int(n)
print(f'>>> N escolhido: {n}')

# define o número de janelas que abrirá
n_drivers = input(f'\n\n4. Entre com o número inteiro M que corresponderá ao total de janelas que serão abertas simultaneamente para assistir o vídeo\n[ Sugestão: >>> {DEFAULT_N_DRIVERS}]:\n\n>>> ')

# checa input
if not n_drivers:
    n_drivers = DEFAULT_N_DRIVERS
else:
    n_drivers = int(n_drivers)
print(f'>>> M escolhido: {n_drivers}')

# assistindo o vídeo N vezes em M janelas abertas
for k in range(n):    
    print(f'\n\n----- {k+1} of {n} times -----')

    time_to_refresh = int(duration+2*n_drivers)

    drivers = []
    print(f'Abrindo {n_drivers} web drivers . . .')

    for i in range(n_drivers):
        drivers.append(webdriver.Chrome(executable_path='chromedriver'))
        drivers[i].get(url)

        time.sleep(random.randint(1, 3))

        video = drivers[i].find_element(By.ID, 'movie_player')

        video.send_keys('k') # hits k        

        time.sleep(random.randint(1, 3))

        #drivers[i].minimize_window()
        print(f'  > Driver aberto [{i}]')

    print(f'  > Assistindo os vídeos [{time_to_refresh} seconds] . . .')
    time.sleep(time_to_refresh)

    print('')
    print(f'Fechando os {n_drivers} web drivers . . .')
    for i in range(n_drivers):
        drivers[i].close()
        print(f'  > Finalizado o browser [{i}]')
Enter fullscreen mode Exit fullscreen mode

Arquivos do projeto após a criação do bot_youtube.py:

bot-youtube/
│
├── chromedriver_linux64/
│   └── chromedriver
│
└── bot_youtube.py
Enter fullscreen mode Exit fullscreen mode

Rodando o bot

Para rodar o script bot_youtube.py que acabamos de criar, basta digitar o seguinte comando no terminal:

python bot_youtube.py
Enter fullscreen mode Exit fullscreen mode

Após rodar o script, é necessário inserirmos as informações referentes ao vídeo que desejamos que nosso bot veja. A seguir temos a sequência de etapas para usar o bot:

1. Insira o link para o vídeo no Youtube.

2. Entre com a duração do vídeo em segundos (s)

3. Escolha o número de vezes que o bot irá assistir o vídeo (por ex., 2x ou 3x para testes)

4. Defina o número de janelas que deverão abrir para assistir o vídeo ao mesmo tempo

5. Aguarde o bot assistir os vídeos ⏳


Próximos passos: Agora que sabemos fazer um bot ver um vídeo na web, será que, com "algumas linhas de código a mais", daria para fazer o bot executar ações como pausar, adiantar ou dar likes nos vídeos?

gif-bot-rodando



⚠️ Alerta: Certas tarefas de automatização devem ser usadas com cautela!!! Uma boa discussão sobre o assunto pode ser encontrada neste post .


Referências

Top comments (0)