Back-End

3 mar, 2009

Listando os Meus Favoritos do YouTube

Publicidade

É tão comum você ver uns exemplos com PHP, uma linguagem bem objetiva e de extrema clareza, mas que depende do programador. Isso serve também para os que programam em ASP. Seja claro e objetivo!

O YouTube oferece a você várias API´s para se comunicar, RSS também. Escolhi um acesso via API não propriamente dito.

Existe um link que lista os mais recentes vídeos do seus Favoritos, é um link como esse, que vem com tags XML:

http://gdata.youtube.com/feeds/api/users/nome_do_seu_usuario/favorites

O que você precisa é:

O nome do seu usuário;

Como formatar o XML para mostrar na tela.

Vamos fazer um exemplo com o usuário tedk. Criaremos uma classe e colocarmos as informações básicas:

<%
class YouTube
    private objXML
    private objLista
    private usuario
    private url
   
    private sub objetosXML()
        set objXML = server.createObject("MSXML2.DOMDocument.3.0")
            objXML.async = false
            objXML.setProperty "ServerHTTPRequest", true
            objXML.validateOnParse = false
            objXML.load(url)
        set objLista = objXML.getElementsByTagName("*")
    end sub
   
    public sub carregarURL()
        usuario = "tedk"
        url = "http://gdata.youtube.com/feeds/api/users/"&usuario&"/favorites"
        call objetosXML()
    end sub
end class
%>

Criei um Objeto de acesso que é o DOM, no caso o “MSXML2.DOMDocument.3.0” e setando como verdadeira a sua propriedade “Server HTTP Request

Na SUB “objetosXML” criei o Objeto DOM e na SUB “carregarURL” coloquei o nome do meu usuário no YouTube. A url de acesso ao Feed API e a chamada da SUB onde contém o Objeto DOM

O restante do código foi só contar quantas Tags XML temos até começar a estrutura dos vídeos. Contei 16 e fiz o FOR. Usei uma “mini-função” para tratar a URL de vídeo para colocar no EMBED.

Coloquei um CASE para buscar as Tags que tenho como objetivo, que é o link do vídeo, o título e a descrição.

Vamos ver o código completo:

<%
class YouTube
    private objXML
    private objLista
    private usuario
    private url
    private id, i
    private nome_objeto
   
    private sub objetosXML()
        set objXML = server.createObject("MSXML2.DOMDocument.3.0")
            objXML.async = false
            objXML.setProperty "ServerHTTPRequest", true
            objXML.validateOnParse = false
            objXML.load(url)
        set objLista = objXML.getElementsByTagName("*")
    end sub
   
    public sub carregarURL()
        usuario = "nome_do_seu_usuario"
        url = "http://gdata.youtube.com/feeds/api/users/"&usuario&"/favorites"
        call objetosXML()
               
        for i = 16 to (objLista.length - 1)           
            select case (objLista.item(i).nodeName)
                case "id"
                    nome_objeto = objLista.item(i).text
                    id = right(nome_objeto, len(nome_objeto) - instrRev(nome_objeto,"/"))
                   
                    tabela = tabela & "<table width=""494"" border=""0"" cellspacing=""0"" cellpadding=""0"">"
                    tabela = tabela & "<tr><td colspan=""2"">"
                    tabela = tabela & "<object width=225 height=144><param name=movie value=http://www.youtube.com/v/"&id&"></param>"
                    tabela = tabela & "<param name=allowFullScreen value=true></param>"
                    tabela = tabela & "<param name=allowscriptaccess value=always></param>"
                    tabela = tabela & "<embed src=http://www.youtube.com/v/"&id&" type=application/x-shockwave-flash allowscriptaccess=always allowfullscreen=true width=225 height=144></embed>"
                    tabela = tabela & "</object>"
                    tabela = tabela & "</td></tr>"
                   
                case "title"
                    tabela = tabela & "<tr><td width=""92"" valign=""top"" style=""font: 11px Arial;""><strong>TÍTULO:</strong></td>"
                    tabela = tabela & "<td width=""402"" valign=""top"" style=""font: 11px Arial;"">"&objLista.item(i).text&"</td></tr>"
                   
                case "content"
                    tabela = tabela & "<tr><td valign=""top"" style=""text-align: justify; font: 11px Arial;""><strong>DESCRIÇÃO:</strong></td>"
                    tabela = tabela & "<td valign=""top"" style=""font: 11px Arial;"">"&objLista.item(i).text&"</td></tr>"
                    tabela = tabela & "</table><br><br>"
            end select
        next
       
        response.write(tabela)
    end sub
end class
%>

OBS: Eu poderia usar o XSL para formatar as tabelas e mostra na tela, mas para um webdesigner modificar o código seria bastante complicado, então a idéia é facilitar!

O resultado é esse: