VB .NET - Acessando e executando vídeos do YouTube com a API YouTube SDK
Neste artigo eu vou mostrar como podemos acessar localmente ou remotamente vídeos do YouTube, e, executá-los usando a API YouTube SDK em uma aplicação Windows Forms com a linguagem VB .NET. |
Para poder acessar vídeos do YouTube
eu vou usar a API Youtube SDK. Será necessário também possuir uma chave
de desenvolvedor do YouTube.
Acompanhe o artigo e veja passo a passo como acessar exibir vídeos do YouTube usando VB .NET.
Recursos usados:
Preparando o ambiente
A primeira coisa que você deve fazer é baixar a API YouTube SDK ( Software Development Kit ) neste link: https://code.google.com/p/google-gdata/downloads/list
Ao acessar a página selecione a versão mais atual : YouTube_SDK_2.2.0.0.msi
Após baixar, ao executar a instalação você verá a seguinte janela:
Apenas confirme e prossiga até o final, lembrando do local onde os arquivos foram instalados, pois teremos que referenciá-los em nosso projeto.
Nota: Para se familiarizar com a API acesse a documentação no link: https://developers.google.com/youtube/2.0/developers_guide_protocol?csw=1
Após essa etapa teremos que obter uma chave de desenvolvedor para o Youtube, e, fazemos isso acessando esse link: http://code.google.com/apis/youtube/dashboard/gwt/index.html
Você verá a janela abaixo onde deverá informar os seus dados e efetuar o registro:
A seguir defina o nome da aplicação que irá criar para obter a chave do desenvolvedor:
Após encerrar essa etapa copie a sua chave de desenvolvedor para poder usá-la mais adiante na aplicação.
Criando o projeto no Visual Studio 2013 Express for windows desktop
Abra o VS 2013 Express for windows desktop e clique em New Project;
Selecione a linguagem Visual Basic e o template Windows Forms Application;
Informe o nome Videos_YouTube e clique no botão OK;
Antes de prosseguir vamos incluir um outro formulário no projeto chamado frmProcurar que será usado para o usuário definir o critério para buscar o vídeo.
No menu PROJECT clique em Add Windows Forms e informe o nome frmProcurar. A seguir inclua os seguintes controles no formulário:
1 Label
1 TextBox - txtProcurar
1 Button - btnOK
1 Button - btnCancelar
Disponha os controles conforme o leiaute da figura abaixo:
No evento Click do botão OK inclua o código abaixo:
Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
Me.DialogResult = DialogResult.OK
Me.Hide()
End Sub
|
No evento Click do botão Cancelar inclua o código abaixo:
Private Sub btnCancelar_Click(sender As Object, e As EventArgs) Handles btnCancelar.Click
Me.DialogResult = DialogResult.Cancel
Me.Hide()
End Sub
|
Pronto ! É tudo que precisamos nesse formulário.
Vamos agora incluir uma referência ao componente Flash Player -> AxShockwaveFlash no projeto.
Clique com o botão direito sobre TOOLBOX e a seguir clique em Choose Items;
Na janela Choose Toolbox Items localize o componente AxShockwaveFlash (se não localizar você deverá instalar o Flash Player no seu computador)
A seguir vamos referenciar os arquivos da API YouTube SDK no projeto.
No menu PROJECT clique em Add Reference;
A seguir clique na guia Browse, e, localize onde você instalou os arquivos do YouTube SDK;
Selecione os arquivos na pasta Samples conforme abaixo e clique no botão Add;
Agora vamos continuar com o nosso projeto selecionando o formulário form1.vb e incluindo a partir da TOOLBOX os seguintes controles:
1 ShockWave Flash Object - Flashmedia
1 OpenFileDialog - ofd1
1 ListBox - lbResultados
1 MenuStrip : Defina a seguinte estrutura de menu:
Arquivo
Procurar Localmente - PC
Procurar no YouTube
-----------------------
Sair
Vídeo
Executar
Disponha os controles conforme o leiaute da figura abaixo:
Agora vamos definir o código do formulário form1.vb iniciando com a declaração dos namespaces antes do início do formulário:
'Imports Necessarios para o Youtube e Google Libraries
A seguir no início do formulário (após a declaração Public Class Form1) vamos declarar as variáveis abaixo que iremos usar no projeto:
'Cria um novo objeto YouTubeRequestSettings para armazenar a App e a Key Private strSettings As YouTubeRequestSettings 'Novo objeto YouTubeRequest para armazenar as configurações do objeto Private strRequest As YouTubeRequest 'Array para manipuar os IDs dos Vídeos Private arrVideoIDs() As String 'Nome aplicação Const strAppName = "Videos_Youtube" 'Seu código de desenvolvedor Key Const strKey = "AI39si6DBFpn0wMAE informe a sua chave M4LIoMAv_muycqIV2U71DlwFwAwrPFKzw"No evento Load do formulário form1.vb inclua o código abaixo que cria um novo requeste baseado nos detalhes definidos no objeto YouTubeRequestSettings usando o nome da sua aplicação e a sua chave de desenvolvedor do YouTube:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
'Armazenar detalhes e nome da APP
strSettings = New YouTubeRequestSettings(strAppName, "Vídeos Youtube", strKey)
'Cria um novo request baseado em meu Detalhes acima
strRequest = New YouTubeRequest(strSettings)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
|
No link Click do menu Procurar no YouTube inclua o código abaixo que irá procurar o vídeo no YouTube:
Private Sub ProcurarNoYouTubeToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ProcurarNoYouTubeToolStripMenuItem.Click
'limpa o listbox
lbResultados.Items.Clear()
'Inicializa a formulário para procurar vídeos no youtube
Dim frmProc As New frmProcurar
'Se a procura foi valida então obtem a string inforamda no formulário
If frmProc.ShowDialog = DialogResult.OK Then
'Texto de critério do formulário frmProcurar
Dim strQuery As String = frmProc.txtProcurar.Text
'Cria um serviço YouTube
Dim ytsService As YouTubeService = New YouTubeService(strAppName, strKey)
'Procura no Youtube
Dim urlEntryUrl As Uri = New Uri("http://gdata.youtube.com/feeds/api/videos?q=" + strQuery)
'Obtem os resultados
Dim fqResults As FeedQuery = New FeedQuery()
Try
fqResults.Uri = urlEntryUrl
'Obtem a lista de vídeos
Dim vidFeed As Feed(Of Video) = New Feed(Of Video)(ytsService, fqResults)
'contador
Dim intCounter As Integer
'Para cada vídeo encontrado
For Each vidEntry As Video In vidFeed.Entries
'exibe o titulo na listbox
lbResultados.Items.Add(vidEntry.Title.ToString)
'armazena no array
ReDim Preserve arrVideoIDs(intCounter)
'pega o ID do vídeo
arrVideoIDs(intCounter) = vidEntry.Id.ToString
'Extrai somente o ID do vídeo
arrVideoIDs(intCounter) = arrVideoIDs(intCounter).Substring(arrVideoIDs(intCounter).LastIndexOf(":") + 1)
intCounter += 1
Next
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End If
End Sub |
Nesse código
estamos realizando uma busca no YouTube, anexando o nosso texto informando no
formulário frmProcurar na caixa de texto txtProcurar na URL
http://gdata.youtube.com/feeds/api/videos?q=.
Teremos assim um conjunto de resultados, que precisamos percorrer extrair cada
item obtendo o nome do vídeo e exibindo na listbox- lbResultados.
No link Click do menu Procurar Localmente - PC inclua o código abaixo que irá procurar o vídeo no seu computador:
Private Sub ProcurarLocalmentePCToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ProcurarLocalmentePCToolStripMenuItem.Click
'nome do arquivo
Dim strFileName As String 'FileName
'Filtro para o OpenFileDialog (ofd1)
ofd1.Filter = "FLA Files|*.fla|ShockWave Files|*.swf|All Files|*.*"
Try
'Procura no PC pelos arquivos
strFileName = ofd1.FileName
If ofd1.ShowDialog = Windows.Forms.DialogResult.OK Then 'se encontrou
flashmedia.LoadMovie(0, strFileName) 'Load
flashmedia.Play() 'Play
ExecutarToolStripMenuItem.Text = "Pausar" 'Altera 'Play' para 'Pause'
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
|
Agora no evento SelectedIndexChanged do controle ListBox defina o código abaixo que irá obter o ID do vídeo selecionado:
Private Sub lbResultados_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lbResultados.SelectedIndexChanged
'Obtem o´vídeo selecionado
Try
Dim videoID As String = "http://www.youtube.com/watch?v=" & arrVideoIDs(lbResultados.SelectedIndex)
videoID = videoID.Replace("/watch?v=", "/v/")
flashmedia.Movie = videoID
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
|
A grande sacada é
identificar o vídeo. A URL completa de um vídeo do YouTube se parece com
algo como: http://www.youtube.com/watch?v=tGWVVdVbnJc.
Agora, o último texto após v= é o ID do vídeo. O ID é o que precisamos
para executar o vídeo, daí a nossa manipulação de seqüência de nossa matriz.
Uma vez que temos IDs próprios e os nomes listados, podemos reproduzir o vídeo.
No evento Click da opção do menu Vídeo-> Executar defina o código para alterar o texto quando executa a mídia:
Private Sub ExecutarToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExecutarToolStripMenuItem.Click
Try
If ExecutarToolStripMenuItem.Text = "Executar" Then 'Tocar
flashmedia.Play()
ExecutarToolStripMenuItem.Text = "Pausar" 'Pausar
Else
ExecutarToolStripMenuItem.Text = "Executar" 'Tocar
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub |
Executando o projeto e clicando na opção Procurar no YouTube:
Teremos o formulário frmPrincipal exibido para informar o critério de busca na caixa de texto txtProcurar:
Informando um critério e clicando no botão OK será feita uma busca no Youtube e os resultados serão exibidos no ListBox conforme abaixo:
Basta selecionar o vídeo e executar.
Pegue o projeto completo aqui: Videos_Youtube.zip
Na
palavra da verdade, no poder de Deus, pelas armas da justiça, à direita e à
esquerda,
Por honra e por desonra, por infâmia e por boa fama; como enganadores, e sendo
verdadeiros;
Como desconhecidos, mas sendo bem conhecidos; como morrendo, e eis que vivemos;
como castigados, e não mortos;
Como contristados, mas sempre alegres; como pobres, mas enriquecendo a muitos;
como nada tendo, e possuindo tudo.
2 Coríntios 6:7-10
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: