<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Paulo Fernandes &#187; Yahoo!</title>
	<atom:link href="http://www.phpaulo.com.br/tag/yahoo/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.phpaulo.com.br</link>
	<description>Tecnologia, Desenvolvimento de Software, Metodologia, Web e etc..</description>
	<lastBuildDate>Tue, 20 Jul 2010 20:55:59 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>A API do Yahoo! meme</title>
		<link>http://www.phpaulo.com.br/desenvolvimento/a-api-do-yahoo-meme/</link>
		<comments>http://www.phpaulo.com.br/desenvolvimento/a-api-do-yahoo-meme/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 02:41:44 +0000</pubDate>
		<dc:creator>Paulo Fernandes</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[meme]]></category>
		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://www.phpaulo.com.br/?p=32</guid>
		<description><![CDATA[Em outubro de 2009 o Yahoo! liberou a versão beta do meme (http://meme.yahoo.com). Para quem não sabe o meme é um serviço de microblog semelhante ao Twitter (http://twitter.com), porém no meme podemos postar vídeos, fotos, links, textos, arquivos de música e não temos um limite de 140 caracteres nas mensagens.
Até a data da escrita desse [...]]]></description>
			<content:encoded><![CDATA[<p>Em outubro de 2009 o Yahoo! liberou a versão <em>beta</em> do <strong><em>meme </em></strong>(<a href="http://meme.yahoo.com/">http://meme.yahoo.com</a>)<strong>. </strong>Para quem não sabe o <strong><em>meme</em></strong> é um serviço de microblog semelhante ao <strong><em>Twitter </em></strong>(<a href="http://twitter.com/">http://twitter.com</a>), porém no <strong><em>meme </em></strong>podemos postar vídeos, fotos, links, textos, arquivos de música e não temos um limite de 140 caracteres nas mensagens.</p>
<p>Até a data da escrita desse artigo, o serviço não era popular e não tinham ferramentas para acesso ao serviço, tudo tinha que ser pelo próprio site do <strong><em>meme</em></strong>. Como o objetivo do artigo é ser técnico não entraremos em detalhes do serviço e sim falaremos da API.</p>
<p><strong>Introdução</strong></p>
<p><strong> </strong>Para usar esta API, você precisa conhecer primeiramente um pouco sobre como o Yahoo! trabalha com suas APIs. O Yahoo! usa a linguagem <strong>YQL ( Yahoo Query Language), </strong>nada muito óbvio não? O <strong>YQL </strong>é uma linguagem baseada na mesma estrutura do <strong>SQL (Structure Query Language), </strong>para essa API do <strong><em>meme</em></strong> passamos os comandos via uma requisição HTTP, REST. O Yahoo! fornece suporte a alguns linguagens, entre elas <strong>Flash</strong>, <strong>Java</strong>, <strong>JavaScript</strong>, <strong>.NET</strong>, <strong>PHP</strong>, <strong>Python</strong>, <strong>Ruby</strong> e <strong>Silverlight</strong>, neste artigo não usaremos nenhuma linguagem, apenas mostraremos como chamar as querys e gerar as chamadas REST.</p>
<p>Abaixo temos um exemplo de como escrever uma query usando o <strong>YQL</strong>, está query é apenas um exemplo e não faz parte da API do <strong><em>meme</em></strong>. O resultado dela é um <strong>XML </strong>com todas as “tabelas” que podemos usar, podemos também fazer o retorno ser via <strong>JSON </strong>ao invés de <strong>XML. </strong>No artigo será trabalhado com <strong>XML</strong>.</p>
<p>Comando: <strong>show tables</strong></p>
<p>Requisição REST gerada: <a href="https://query.yahooapis.com/v1/public/yql?q=show%20tables&amp;format=xml"><strong><em>https://query.yahooapis.com/v1/public/yql?q=show%20tables&amp;format=xml</em></strong></a><strong><em> </em></strong></p>
<p><em> </em>Para testar mais comandos do <strong>YQL, </strong>sugiro que acesse o console de demonstração do Yahoo! <a href="https://developer.yahoo.com/yql/console/">https://developer.yahoo.com/yql/console/</a>. Apenas para comunicar que para muitas coisas, precisaremos estar autenticados com a nossa conta do Yahoo!</p>
<p>Agora que já sabemos um pouco como a API funciona, vamos colocar a mão na massa e trazer alguns resultados mais reais do <strong><em>meme.</em> </strong>A conta usada para os exemplos de requisições do <strong><em>meme</em></strong> será esta: <strong>paulofernandesj.</strong></p>
<p><strong> </strong></p>
<div class="wp-caption aligncenter" style="width: 552px"><a href="http://www.phpaulo.com.br/artigo/images/google-local-figura1.jpg"><img title="Tela Console Yahoo!" src="http://www.phpaulo.com.br/artigo/images/api-yahoo-meme-1.jpg" alt="Tela Console Yahoo!" width="542" height="302" /></a><p class="wp-caption-text">Tela Console Yahoo!</p></div>
<p><strong>O que posso fazer?</strong></p>
<p>Não diferente de algumas APIs do Google, o Yahoo! também pede para que você obtenha uma chave para acesso a API. Para obter essa chave acesse a central dos desenvolvedores <a href="http://developer.yahoo.com/">http://developer.yahoo.com/</a>, isso caso queira criar um aplicativo. O objetivo deste artigo é mostrar as funcionalidades da API do <strong><em>meme</em></strong> através do console fornecido pelo próprio Yahoo!</p>
<p>Agora listaremos diversas querys que podem ser executadas para retornarem os resultados, acrescentaremos uma breve descrição sobre o resultado obtido. Uma coisa que precisamos deixar bem claro antes de iniciarmos o processo de explicação das querys é que nelas sempre constará o valor <strong>VNDIRCXTU6SOYRG2CTBU2D7SCY</strong> para o campo <strong>owner_guid</strong>,<strong> owner_guid</strong> é o campo pelo qual conseguimos trazer as informações de determinada conta do <strong><em>meme</em></strong>, deste que está conta não esteja privada no modo de visualização. Para trazer os resultados da sua conta, basta usar o primeiro comando abaixo e obterá o <strong>XML</strong> com os valores da sua conta, bastando apenas encontrar o campo<strong> owner_guid</strong> e começar a utilizar esta conta para as próximas consultas. Outra forma de obter os dados nas querys é colocar em <strong>owner_guid </strong>o valor <strong>me</strong>, sem aspas, porém este parâmetro trará somente as configurações da sua conta, veja os exemplos abaixo. O padrão para os itens abaixo será:</p>
<p>O que o comando faz</p>
<p>query <strong>YQL</strong></p>
<p>Chamada REST</p>
<p>Explicação mais detalhada (Caso necessário)</p>
<p>Só mais um fato importante que será muito útil para seu aprendizado. O Yahoo! disponibiliza um comando chamado <strong>desc &lt;tabela&gt;</strong>, que nada mais é do que a descrição da tabela que queremos usar. Observe o comando abaixo e teste-o na sua página do console para ver exatamente o seu retorno. Para a informação abaixo eu executei o comando <strong>desc meme.info.</strong></p>
<p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;</p>
<p>&lt;query xmlns:yahoo=&#8221;http://www.yahooapis.com/v1/base.rng&#8221; yahoo:count=&#8221;1&#8243; yahoo:created=&#8221;2009-10-13T08:36:40Z&#8221; yahoo:lang=&#8221;en-US&#8221; yahoo:updated=&#8221;2009-10-13T08:36:40Z&#8221; yahoo:uri=&#8221;https://query.yahooapis.com/v1/yql?q=desc+meme.info&#8221;&gt;</p>
<p>&lt;diagnostics&gt;</p>
<p>&lt;publiclyCallable&gt;true&lt;/publiclyCallable&gt;</p>
<p>&lt;user-time&gt;1&lt;/user-time&gt;</p>
<p>&lt;service-time&gt;0&lt;/service-time&gt;</p>
<p>&lt;build-version&gt;3431&lt;/build-version&gt;</p>
<p>&lt;/diagnostics&gt;</p>
<p>&lt;results&gt;</p>
<p>&lt;table security=&#8221;ANY&#8221;&gt;</p>
<p>&lt;meta&gt;</p>
<p>&lt;author&gt;Yahoo! Inc.&lt;/author&gt;</p>
<p>&lt;documentationURL/&gt;</p>
<p>&lt;sampleQuery&gt;SELECT * FROM meme.info WHERE owner_guid=me&lt;/sampleQuery&gt;</p>
<p>&lt;/meta&gt;</p>
<p>&lt;request&gt;</p>
<p>&lt;select&gt;</p>
<p>&lt;key name=&#8221;owner_guid&#8221;/&gt;</p>
<p>&lt;key name=&#8221;name&#8221;/&gt;</p>
<p>&lt;/select&gt;</p>
<p>&lt;/request&gt;</p>
<p>&lt;/table&gt;</p>
<p>&lt;/results&gt;</p>
<p>&lt;/query&gt;</p>
<p>O interessante nesse comando é que ele mostra muita coisa da estrutura da tabela, como por exemplo, o nível de <strong>segurança</strong> da tabela, exemplos de como podem ser feita as <strong>consultas com essa tabela</strong>, quais <strong>parâmetros</strong> podem ser passados no <strong>where</strong>.</p>
<p><strong>Exemplos</strong></p>
<p>Retornando as informações da sua conta através do <strong>owner_guid=me.</strong></p>
<p><strong>SELECT * FROM meme.info WHERE owner_guid=me</strong></p>
<p><strong><a href="https://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20meme.info%20WHERE%20owner_guid%3Dme&amp;format=xml">https://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20meme.info%20WHERE%20owner_guid%3Dme&amp;format=xml</a></strong></p>
<p>Se reparar no retorno, poderá pegar a sua chave do Yahoo! Acesse a estrutura da árvore do <strong>XML</strong> da seguinte forma <strong>result&gt;meme&gt;guid</strong>, dentro desse campo estará a chave para começar a consultar, repare que para consultar usando <strong>me, </strong>não precisamos de aspas simples, porém para a próximas consultas, usaremos o <strong>guid </strong>e colocaremos as consultas usando aspas simples.</p>
<p>_________________________________________________________________</p>
<p>Retornando os <em>followers</em> de uma conta pública, através do <strong>owner_guid</strong> da conta</p>
<p><strong>SELECT * FROM meme.followers </strong></p>
<p><strong>WHERE owner_guid=&#8217;VNDIRCXTU6SOYRG2CTBU2D7SCY&#8217;</strong></p>
<p><strong><a href="https://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20meme.followers%20WHERE%20owner_guid%3D%27VNDIRCXTU6SOYRG2CTBU2D7SCY%27&amp;format=xml">https://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20meme.followers%20WHERE%20owner_guid%3D&#8217;VNDIRCXTU6SOYRG2CTBU2D7SCY&#8217;&amp;format=xml</a></strong></p>
<p>O retorno dessa chamada REST retornará os dados dos meus <em>followers</em>, com essa informação eu consigo capturar outros dados desses <em>follower</em>, como por exemplo seus <em>posts</em>. Apenas para lembrar que o Yahoo! limita essa chamada a 10 <em>followers</em> para não retornar um XML muito extenso, dando trabalho para processar a requisição.</p>
<p>_________________________________________________________________</p>
<p>Retornando os <em>following</em> de uma conta pública, através do <strong>owner_guid</strong> da conta</p>
<p><strong>SELECT * FROM meme.following </strong></p>
<p><strong>WHERE owner_guid=&#8217;VNDIRCXTU6SOYRG2CTBU2D7SCY&#8217;</strong></p>
<p><strong><a href="https://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20meme.following%20WHERE%20owner_guid%3D%27VNDIRCXTU6SOYRG2CTBU2D7SCY%27&amp;format=xml">https://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20meme.following%20WHERE%20owner_guid%3D&#8217;VNDIRCXTU6SOYRG2CTBU2D7SCY&#8217;&amp;format=xml</a></strong></p>
<p>O retorno dessa chamada é bem parecido com o retorno dos <em>followers</em> a única diferença é que ele retorna os <em>followings</em>.</p>
<p>_________________________________________________________________</p>
<p>Retornando os <em>post</em> de uma conta pública, através do <strong>owner_guid</strong> da conta</p>
<p><strong>SELECT * FROM meme.posts</strong></p>
<p><strong>WHERE owner_guid=&#8217;VNDIRCXTU6SOYRG2CTBU2D7SCY&#8217;;</strong></p>
<p><strong><a href="https://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20meme.posts%20WHERE%20owner_guid%3D%27VNDIRCXTU6SOYRG2CTBU2D7SCY%27%3B&amp;format=xml">https://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20meme.posts%20WHERE%20owner_guid%3D&#8217;VNDIRCXTU6SOYRG2CTBU2D7SCY&#8217;%3B&amp;format=xml</a></strong></p>
<p>Esta chamada retorna os <em>posts</em> do usuário que foi passado como parâmetro, nesse retorno ele traz os comentários, data que foi postado, conteúdo e mais algumas informações.</p>
<p>_________________________________________________________________</p>
<p>Inserindo um novo <em>post</em> em uma conta <strong>autenticada</strong></p>
<p><strong>INSERT INTO meme.user.posts (type, content) VALUES (&#8221;text&#8221;, &#8220;testando a API do meme&#8221;)</strong></p>
<p><strong><a href="https://query.yahooapis.com/v1/yql?q=INSERT%20INTO%20meme.user.posts%20%28type%2C%20content%29%20VALUES%20%28%22text%22%2C%20%22testando%20a%20API%20do%20meme%22%29&amp;format=xml">https://query.yahooapis.com/v1/yql?q=INSERT%20INTO%20meme.user.posts%20(type%2C%20content)%20VALUES%20(%22text%22%2C%20%22testando%20a%20API%20do%20meme%22)&amp;format=xml</a></strong></p>
<p>Este é uma das chamadas mais interessantes, pois ela acessa a sua conta e publica um <em>post</em>. Após a chamada, no próprio retorno ele traz os dados o <em>status</em> da postagem e os dados das informações do <em>post</em>, seria como se postasse e já listasse aquele <em>post</em>.</p>
<p>_________________________________________________________________</p>
<p>Excluindo um <em>post</em> de uma conta <strong>autenticada</strong></p>
<p><strong>DELETE FROM meme.user.posts WHERE pubid = &#8220;1aR2FNB&#8221;</strong></p>
<p><strong><a href="https://query.yahooapis.com/v1/yql?q=DELETE%20FROM%20meme.user.posts%20WHERE%20pubid%20%3D%20%221aR2FNB%22&amp;format=xml">https://query.yahooapis.com/v1/yql?q=DELETE%20FROM%20meme.user.posts%20WHERE%20pubid%20%3D%20%221aR2FNB%22&amp;format=xml</a></strong></p>
<p>Com esta chamada você consegue apagar um <em>post</em>, para isso precisa estar autenticado na conta e saber o <strong>pubid </strong>(<em>string</em> única do <em>post</em>). Para saber o <strong>pubid</strong>, basta usar o comando que lista os <em>posts. </em>Semelhante ao método para postagem ele retorna o status da exclusão, caso tente excluir um <em>post</em>, a chamada REST retorna um erro (<em>undefined</em>).</p>
<p>_________________________________________________________________</p>
<p>Existem outras chamadas que podem ser feitas, como por exemplo, seguir algum usuário, deixar de seguir alguém, e algumas mais.</p>
<p>Sempre que estiver em dúvida utiliza o comando <strong>desc &lt;tabela&gt;. </strong>Ele é de grande utilidade no trabalho com a API do Yahoo!</p>
<p><strong> </strong></p>
<p><strong>Conclusão</strong></p>
<p>Alguns dos comandos apresentados sozinhos não fazem muito sentido, mas a combinação deles pode gerar um resultado bem legal, como por exemplo, criar uma paginação dos <em>followers</em>, combinando a consulta das informações do usuário (tabela <strong>meme.info </strong>) com a listagem dos <em>followers</em>.</p>
<p>O objetivo deste artigo foi divulgar o <strong>YQL </strong>e mostrar os comandos da API do <strong>meme</strong>. Este artigo é bem básico, e mostra somente como realizar as chamadas aos métodos, não especificamos nenhuma linguagem, pois as chamadas são iguais para todas que façam chamadas via REST.</p>
<p>Escolha a linguagem que tem mais facilidade e teste essas chamadas, veja o poder que as chamadas REST e o <strong>YQL</strong> proporcionam.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpaulo.com.br/desenvolvimento/a-api-do-yahoo-meme/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
