[python] Pegando dados simples de videos do YouTube
Autor: William Neto | Publicado: 2013-02-17T15:15:00-08:00




Estas últimas semanas tenho me dedicado bastante à um projeto que estou desenvolvendo que envolve videos do YouTube. Não vou falar muito dele mas já tem alguma coisinha no meu github. Dá uma olhada lá se quiser saber exatamente do que se trata. (perdoem a desorganização,é temporário).
A questão é que precisava pegar alguns dados dos videos do YouTube usando Python. Nada de muito complexo,apenas titulo,descrição e o número de views.

Então encontrei definitivamente a Api de Dados do Google para Python. A API possibilita acessar diversos recursos da Google,como a pesquisa,o Google Calendar,e o YouTube.

A última versão da API para Python é a 2.0.17. Você também pode encontrar a api de dados do Google para outras plataformas como Java e .NET.

Você precisa baixar e instalar o pacote. O download da última versão pode ser feito aqui,e a instalação é bem simples. Basta extrair o arquivo que você vai baixar e lá estará o arquivo INSTALL.txt com instruções para instação. Feito isso,você já&nbsp;poderá&nbsp;importar a API no seu código python. Faça um teste chamando:

import gdata

Se nenhum erro ocorrer,tudo está instalado corretamente.
Não fiz grandes utilizações dos recursos para o YouTube. Nada de coisas como upload. Apenas o básico de pegar alguns dados de um video,que é o que vou demostrar aqui.

A imagem lá encima é um exemplo de como pegar o título de um video. Na primeira linha de código você faz a importação da classe YouTubeService que provém vários métodos. Um deles é o GetYouTubeVideoEntry,que retorna um objeto contendo os dados de um video. Este método recebe o parâmetro video_id,que é o id do video no YouTube. Este id é encontrado na url do video:&nbsp;http://www.youtube.com/watch?v=iOe-eVuJdco&nbsp;.

O objeto retornado pelo método GetYouTubeVideoEntry é um YouTubeVideoEntry.
Um dos pontos complicados de lidar com esta API é que ela utiliza diversos objetos internos. Por exemplo,uma categoria de um video é um objeto Category. Então,para obter o nome desta categoria,é preciso chamar a propriedade "term" do objeto Category do video. Estes pequenos detalhes criam algumas complicações pequenas que são superadas com alguma prática.

O atributo que mais utilizei dos objetos YouTubeVideoEntry foi o "media". Com ele,é possível obter uma série de dados sobre o video. Exemplo prático para demonstrar:


from gdata.youtube.service import YouTubeService

# Instancia um objeto para usarmos posteriormente
yt_service = YouTubeService()

# Vamos definir o id de um video para tomar como exemplo
video_id = "fLsBJPlGIDU"

# usando o método para retornar um objeto YouTubeVideoEntry
video = yt_service.GetYouTubeVideoEntry(video_id=video_id)

# Utiliza o atributo title do atributo media do objeto YouTubeVideoEntry para obter o título do video
# O atributo text é comum à muitos elementos,e é o que vai retornar o titulo como uma string
print video.media.title.text

# O atributo description que vai retornar a descrição do video
print video.media.description.text


Infelizmente não achei uma documentação muito vasta sobre a API em português. Há o guia de referência geral&nbsp;que fala detalhadamente sobre os métodos e objetos da API,mas não muito intuitivo e é em inglês.

Vou tentar ir fazendo na medida do possível uma pequena documentação de referência em português. Para detalhar os métodos principais de forma mais explícita.

Mas por enquanto,é só isso. Qualquer coisa me mande um e-mail que agente troca uma ideia sobre o assunto : )