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.