Como baixar descrições de vídeos do Youtube

O Youtube é uma plataforma de compartilhamento de vídeos, que possuem título e descrição para que o usuário obtenha informações textuais além do apresentado em vídeo (imagem e/ou áudio). Para baixar e salvar essas informações de um ou mais links de um modo automatizado, é possível usar alguns métodos em python através de um script. Para montar a lista de links cujas informações serão obtidas, pode-se editar manualmente (pule para o passo 2) ou fazer uso de um programa que roda em terminal Linux.

0) youtube-dl

O programa “youtube-dl” é um grande aliado para trabalhar com os vídeos do Youtube. Ele funciona diretamente no terminal Linux e tem várias funcionalidades. Para instalá-lo, é preciso ter o gerenciador de pacotes do python, o PIP. Seguem os comandos para instalar o PIP via repositório (para python3) e o youtube-dl:

sudo apt install python3-pip
sudo pip3 install youtube-dl

Esse programa gera novas versões quase toda semana para continuar funcionando, devido a mudanças no site do Youtube. Para atualizar, use o mesmo comando do pip3 acrescido do parâmetro “–upgrade” antes do nome do pacote. Veja mais algumas opções de uso:

# Baixar um vídeo
youtube-dl http://link_do_video
# Baixar um canal completo
youtube-dl -citw ytuser:nome_do_canal
# Baixar um playlist
youtube-dl -cit http://link_da_playlist
# Baixar somente o áudio em formato MP3
youtube-dl --extract-audio --audio-format mp3 http://link_do_video

Para forçar o download com a melhor resolução disponível, utilizar a opção “-f bestvideo+bestaudio/best”.

1) Arquivo com links

O primeiro pasos é montar um arquivo (chamado urls_youtube.txt) com uma URL (Uniform Resource Locator, também conhecido como link) de cada vídeo em cada linha. A sugestão a seguir é para obter todas as as URLs de um único canal.

A URL de um vídeo do Youtube é formada pelo domínio seguido de “watch?v=” e da ID (identification) do vídeo. Para baixar todas as IDs de um canal, pode-se usar o programa “youtube-dl” diretamente no terminal Linux e redirecionando a saída para um arquivo temporário, conforme segue:

youtube-dl --get-id http://link_da_playlist -i > urls.txt
sed -e 's/^/https:\/\/www.youtube.com\/watch\?v\=/' urls.txt > urls_youtube.txt

O comando seguinte é para incluir o restante da URL no início de cada ID, gerando o arquivo final.

2) Script em python para obter título e descrição dos vídeos

O pacote “BeautifulSoup” permite analisar páginas HTML e extrair informações de campos específicos. No conda, ele pode ser instalado através do seguinte comando:

conda install beautifulsoup4

O script a seguir lê o arquivo “urls_youtube.txt”, fazendo um loop com as URLS dos vídeos (uma em cada linha). Para cada uma delas, a função “get_video_info” organiza as informações da página e extrai os campos de título (“title”) e de descrição (“description”) – mais opções podem ser vistas no post How to Extract YouTube Data in Python. Por fim, ele grava o conteúdo em uma data frame para ser salvo em um arquivo CSV (chamado title_desc.csv).

Em vez de colocar tudo em uma única data frame para salvar no final, o script foi adaptado para adicionar uma nova linha no arquivo CSV a cada nova informação obtida. Desse modo, se der algum problema em uma URL, o trabalho feito até então já está salvo.

3) (EXTRA) Juntar duas listas em uma

Depois de gerar um arquivo CSV com as colunas “title” e “description” do Youtube (title_desc.csv), aqui também foi feita uma união com outros dois arquivos:

  • list1.csv – lista com várias músicas contendo as colunas “autor,titulo,descricao”
  • list2.txt – arquivo texto puro com o seguinte padrão: título (1ª linha), descrição (2ª linha) e linha em branco

A última coluna do primeiro arquivo deverá ser preenchida com as descrições dos outros dois arquivos. Todos os arquivos são carregados como dataframes pelo pandas.

O script pega o título de cada música do arquivo “lista1.csv” e busca a linha onde a respectiva coluna das outras duas data frames contém a string de título (Case-INsensitive), para então pegar as descrições. Caso não tenha de uma das data frames, só pega da outra, e se não tiver nada, só imprime uma mensagem na tela. No final, a data frame é salva como um arquivo CSV.

Para visualizar o resultado em uma planilha do Google Sheets, vá para o Google Drive, crie uma nova planilha e importe o CSV. Se quiser torná-lo público, vá em “File -> Publish to the web” e clique em “Publish” – na sequência, será exibido o link para compartilhamento.

Compartilhe :)

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.