Buscando uma hash tag no search do Twitter

Não tem muito oque explicar.

vou fazer um search no Twitter, procurando por determinada hash tag #wbruno, e então devolver um HTML simples para inserirmos no nosso site.

Usei aqui, algumas funções nativas do php, como file_get_contents(), var_dump(), e json_decode().

O link para mais esclarecimentos do search é: http://dev.twitter.com/doc/get/search

<?php
	header('Content-type: text/html; charset=utf-8');


	$hash = '%23wbruno';//apenas para ficar claro oque é
	$search = 'http://search.twitter.com/search.json?q='.$hash.'&rpp=10';

	$json = file_get_contents( $search );
	/*
		"{"results":[
			{
				"from_user_id_str":"18765280",
				"profile_image_url":"http://a3.twimg.com/profile_images/1318748377/0863ff06d8563514ab26e03e0fad1fa6_normal.jpg",
			...
	*/
	$data = json_decode( $json );
	/*
	object(stdClass)#1 (10) {
	  ["results"]=>
	  array(6) {
		[0]=>
		object(stdClass)#2 (14) {
		  ["from_user_id_str"]=>
		  string(8) "18765280"
		  ["profile_image_url"]=>
		  string(89) "http://a3.twimg.com/profile_images/1318748377/0863ff06d8563514ab26e03e0fad1fa6_normal.jpg"
		  ["created_at"]=>
		  string(31) "Sat, 28 May 2011 13:35:21 +0000"
		  ["from_user"]=>
		  string(8) "tiu_uiLL"
		  ["id_str"]=>
		  string(17) "74468805430087680"
		  ["metadata"]=>
		  object(stdClass)#3 (1) {
			["result_type"]=>
			string(6) "recent"
		  }
		  ["to_user_id"]=>
		  NULL
		  ["text"]=>
		  string(113) "Novo Post: Formulário de busca com filtro dinâmico em MySQL e php http://www.wbruno.com.br/?p=1058 #wbruno"
		  ["id"]=>
		  float(7.4468805430088E+16)
		  ["from_user_id"]=>
		  int(18765280)
		  ["geo"]=>
		  NULL
		  ["iso_language_code"]=>
		  string(2) "pt"
		  ["to_user_id_str"]=>
		  NULL
		  ["source"]=>
		  string(97) "<a href="http://www.wbruno.com.br" rel="nofollow">wbruno</a>"
		}
	*/


	$li = '<ul>'.PHP_EOL;
	foreach( $data->results AS $post ){
		$li .= "\t".'<li><img src="'.$post->profile_image_url.'" alt="'.$post->from_user.'" title="'.$post->from_user.'" />
			'.$post->text.'</li>'.PHP_EOL;
	}
	echo $li,'</ul>';

com isso, a minha saída no instante em que rodei, foi:

<ul>
	<li><img src="http://a3.twimg.com/profile_images/1318748377/0863ff06d8563514ab26e03e0fad1fa6_normal.jpg" alt="tiu_uiLL" title="tiu_uiLL" />
			Novo Post: Formulário de busca com filtro dinâmico em MySQL e php http://www.wbruno.com.br/?p=1058 #wbruno</li>
	<li><img src="http://a3.twimg.com/profile_images/1318748377/0863ff06d8563514ab26e03e0fad1fa6_normal.jpg" alt="tiu_uiLL" title="tiu_uiLL" />
			Acessar função de um iframe, apatir do documento pai http://t.co/MqrYpuf #wbruno</li>
	<li><img src="http://a3.twimg.com/profile_images/1318748377/0863ff06d8563514ab26e03e0fad1fa6_normal.jpg" alt="tiu_uiLL" title="tiu_uiLL" />
			Post Editado: Criando um plugin jQuery - parte 3 - Otimizando http://www.wbruno.com.br/?p=343 #wbruno</li>
	<li><img src="http://a3.twimg.com/profile_images/1318748377/0863ff06d8563514ab26e03e0fad1fa6_normal.jpg" alt="tiu_uiLL" title="tiu_uiLL" />

			Novo Post: Navegação sem refresh – carregando conteúdo com ajax em div 2 http://www.wbruno.com.br/?p=1038 #wbruno</li>
	<li><img src="http://a3.twimg.com/profile_images/1318748377/0863ff06d8563514ab26e03e0fad1fa6_normal.jpg" alt="tiu_uiLL" title="tiu_uiLL" />
			Novo Post: Validando inputs com Expressão Regular com jQuery http://www.wbruno.com.br/?p=1034 #wbruno</li>
	<li><img src="http://a3.twimg.com/profile_images/1318748377/0863ff06d8563514ab26e03e0fad1fa6_normal.jpg" alt="tiu_uiLL" title="tiu_uiLL" />
			Novo Post: Só carregar scripts js, se houver suporte a js http://www.wbruno.com.br/?p=1031 #wbruno</li>
</ul>

Demonstração Online

Deixei um parâmetro, caso vc queria fazer um teste:
http://wbruno.com.br/scripts/search_hash_twitter.php?hash=locaweb

Versão com cURL

	$search = 'http://search.twitter.com/search.json?q='.$hash.'&rpp=10';
	function curl_file($url, $timeout=0){
		$ch = curl_init();
		curl_setopt( $ch, CURLOPT_URL, $url );
		//curl_setopt ($ch, CURLOPT_HEADER, 1);
		curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
		curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
		$content = curl_exec( $ch );
		curl_close( $ch );

		return $content;
	}
	
	$json = curl_file( $search );

7 Comments

  1. Adriano dos Santos

    maio 30, 2011 at 14:03

    Olá William.

    Troquei umas idéias com vc lá no fórum do Imasters hj. Tô com uma dúvida aki agora: como faço pra paginar os resultados desse array?

  2. Fala William,

    Bacana o artigo velho, mas a demonstração deu erro de PHP… configuração no servidor para acessar o file_get_contents();

    Abraços!

    • Opa! obrigado Rodrigo.

      realmente, é que mudei de servidor recentemente, nem adaptei todos os scripts ainda.
      Vlw !

  3. Teria como retornar quantas hashtags foram encontradas?
    tipo.. medir popularidade entre 2 #hashs

  4. Ajudou bastante, mas estou salvando os tweets no mongodb, mas eles sempre são repetidos pois estou tendo problemas com o id do objeto que é um inteiro longo, alguem já teve esse problema?

  5. Ola cara, estou com um probleminha, copiei o codigo e nao esta funcionando aqui, o do seu link roda, mas o que criei aqui nao.

    tem como me mandar o arquivo?

Deixe uma resposta

Your email address will not be published.

*