santosbio 0 Denunciar post Postado Maio 30, 2011 Então gente, é o seguinte. Estou criando um sistema onde vou buscar por uma determinada hashtag e vou fazer o seguinte: exibir os resultados de 60 em 60; contar todas as ocorrências no twitter da hashtag pesquisada Preciso disso pra fazer algo do tipo: "1258 pessoas já twittaram essa tag. Veja os twits:" Pra fazer a busca, estou fazendo o seguinte: $hash = "%23fama"; // a hashtag que irei buscar $qtde = "99999"; // a quantidade de registros que vai ser resgatado na busca (usei isso com uma dica do William Bruno, aqui do Imasters mesmo) $search = 'http://search.twitter.com/search.json?q='.$hash.'&rpp='.$qtde.'\''; //essa é minha query $json = file_get_contents($search); // pega os resultados da busca em JSON $data = json_decode($json); //transforma os resultados acima em um array $q = 1; //variável que usei para numerar os resultados progressivamente foreach( $data->results AS $post ){ //início do foreach, que exibirá os resultados if($q >= 1){$i = $q++;} //condição que incrementará a variável $q, para gerar o número sequencial $item = $post->text; // seta a variável $item com o conteúdo do campo "texto" do meu array echo "$i - $item <br>"; //exibe o resultado, com o número ordenado à sua esquerda } Alguém consegue me dar uma luz sobre isso? Já tentei fazer diversos tipos de paginação, mas sempre retorna um erro. Obrigado desde já. Compartilhar este post Link para o post Compartilhar em outros sites
santosbio 0 Denunciar post Postado Maio 31, 2011 Então pessoal. Pesquisando pela API, descobri que a paginação de resultados eu consigo fazer através da declaração da variável $page na minha URL. Então, fica assim: $hash = "%23fama"; $qtde = "64"; $pg = $_GET['page']; // pra pegar o valor da página enviado pelo sistema de paginação via GET $search = 'http://search.twitter.com/search.json?q='.$hash.'&rpp='.$qtde.'&page='.$pg.''; Mas eu ainda preciso contar quantos tweets ocorreram com essa hashtag. Alguém sabe de alguma maneira de fazer isso? Compartilhar este post Link para o post Compartilhar em outros sites
santosbio 0 Denunciar post Postado Junho 1, 2011 Olha eu aqui de novo... hahahah Consegui +- fazer uma paginação dos resultados. Meu código tá assim: <?php header('Content-type: text/html; charset=utf-8'); //aqui seto o documento como UTF-8 ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/jquery.tools.min.js"></script> <script type="text/javascript"> $(document).ready(function () { $("div:#ttp-maos").fadeIn("slow"); }); </script> <style type="text/css"> * {margin:0; padding:0; border:0;} #container {width:760px; height:auto; min-height:760px; background:url(img/bg.jpg) no-repeat center top; display:block; margin:0 auto;} #topo {width:760px; height:166px; display:block;} .tooltip { display:none; background:transparent url(img/black_big.png); font-size:12px; height:70px; width:205px; height:100px; padding:15px; display:block; max-width:205px; color:#fff; font-family: Verdana, Arial, Helvetica, sans-serif; } #ttp-maos {display:none; width:760px; height:440px; min-height:440px;} .mao { float:left; width:auto; height:100px; text-align:center; } #setas {float:left; margin-top:0px; position:relative; width:100%;} #setas .seta-left {position:absolute; left:0; display:block; border:none;} #setas .seta-right {position:absolute; right:0; display:block; border:none;} #setas .maozinha {margin:-7px auto; display:block; border:none;} </style> </head> <body> <div id="container"> <div id="topo"> </div> <div id="container-maos"> <?php $hash = "%23fama"; //minha hashtag $qtde = "47"; //quantidade de registros por página $pg = $_GET['page']; //resgata o valor da página atual $search = 'http://search.twitter.com/search.json?q='.$hash.'&rpp='.$qtde.'&page='.$pg.''; // query de onde virão os twitts $json = file_get_contents($search); //resgata os dados da query $data = json_decode($json); //decodifica os dados para um array $q = 1; //essa variável eu estou utilizando apenas para exibir dinamicamente a imagem das mãos no meu mural /***PHP_EOL;***/ echo '<div id="ttp-maos">'.PHP_EOL; foreach( $data->results AS $post ){ if($q >= 1){$i = $q++;} //incremento minha variável $q, pra poder gerar o nome da minha imagem $item = $post->text; //atribuo meu twitt à variável $item $usuario = $post->from_user; //atribuo o nome do usuário à variável $usuário $img_mao = "M".$i."L1.png"; //gero o link da minha imagem dinâmica $resultado = '<div class="mao"><img src="img/'.$img_mao.'" title="<b><u>'.$usuario.':</u></b> '.$item.'"/></div>'.PHP_EOL; //crio a estrutura do meu resultado echo "$resultado"; //exibo meu resultado na tela } echo '</div>'.PHP_EOL; /****aqui eu faço a paginação ***/ $pag = $_GET['page']; if (isset($pag)){ $page = 1; $next = ++$page; $prev = $page; } if ($pag == 1) { $page = 1; $page2 = 1; $next = ++$page; $prev = $page2; $ocultar = 'display: none;'; } if ($pag > 1) { $page = $_GET['page']; $next = ++$page; $page2 = $_GET['page']; $prev = --$page2; } else { $page = 1; $page2 = 1; $next = ++$page; $prev = $page2; $ocultar = 'display: none;'; } ?> </div> <?php /***aqui exibo os links anterior | postar | próximo ***/ echo '<div id="setas">'; echo '<a href="?page='.$prev.'" style="'.$ocultar.'"><img src="img/seta-back.png" border="0" class="seta-left" /></a>'; echo '<a href="?page='.$next.'"><img src="img/seta-fwd.png" border="0" class="seta-right" /></a>'; echo '<img src="img/maozinha.png" border="0" class="maozinha" />'; echo '</div>'; ?> </div> <script type="text/javascript"> $("#ttp-maos img[title]").tooltip(); </script> </body> </html> Só que, qundo chego na última página com conteúdo, o botão de avançar ainda aparece e, quando clicado, gera um erro (pois não há mais conteúdo para se buscar via streaming). Aqui está uma demonstração on-line: http://portifolioadriano.com.br/app/ Tentem colocar a variável page como 99, por exemplo. Esse erro aparece qdo clico em next, e estou na última página. Quando trabalho com banco de dados, acho bem sussa paginar os resultados. Mas como esses estão vindo via streaming, estou com bastante dificuldade em paginar corretamente. Obs.: ainda não consegui contar as ocorrências da hashtag no twitter. #fail É isso, e obrigado pela atenção de todos. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 1, 2011 Obs.: ainda não consegui contar as ocorrências da hashtag no twitter. #fail não sei se isso é completamente possível.pelo menos qndo eu estudei a APi não achei essa informação. trazer 'todos os dados' e contar na mão, me parece ser a unica solução, se não tiver essa resposta pela API Compartilhar este post Link para o post Compartilhar em outros sites
santosbio 0 Denunciar post Postado Junho 1, 2011 Então... pela query, ele só traz 100 resultados (nunca mais que isso)... então, fica meio q impossível contar (e até paginar, pois não sabemos a qtde total de resultados). Pra navegar entre as páginas, a API fala em usar o atributo &page= na query. E estou fazendo assim. Só que quando chego no fim dos resultados, ele retorna um erro (óbvio), por falta de resultados na query. Compartilhar este post Link para o post Compartilhar em outros sites
santosbio 0 Denunciar post Postado Junho 2, 2011 Tô tentando fazer da forma que o william falou. O sistema já tá buscando as ocorrências no banco, masssss... não consigo inserir elas. Meu código mudou só algumas coisinhas: <?php header('Content-type: text/html; charset=utf-8'); //aqui eu conecto coo o DB $conexao = mysql_connect("HOST", "LOGIN", "SENHA") or die ("Erro de conexão!"); $db = mysql_select_db("minhatabela") or die ("Erro ao conectar no banco de dados!"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/jquery.tools.min.js"></script> <script type="text/javascript"> $(document).ready(function () { $("div:#ttp-maos").fadeIn("slow"); }); </script> <style type="text/css"> * {margin:0; padding:0; border:0;} #container {width:760px; height:auto; min-height:760px; background:url(img/bg.jpg) no-repeat center top; display:block; margin:0 auto;} #topo {width:760px; height:166px; display:block;} .tooltip { display:none; background:transparent url(img/black_big.png); font-size:12px; height:70px; width:205px; height:100px; padding:15px; display:block; max-width:205px; color:#fff; font-family: Verdana, Arial, Helvetica, sans-serif; } #ttp-maos {display:none; width:760px; height:440px; min-height:440px;} .mao { float:left; width:auto; height:100px; text-align:center; } #setas {float:left; margin-top:0px; position:relative; width:100%;} #setas .seta-left {position:absolute; left:0; display:block; border:none;} #setas .seta-right {position:absolute; right:0; display:block; border:none;} #setas .maozinha {margin:-7px auto; display:block; border:none;} </style> </head> <body> <div id="container"> <div id="topo"> </div> <div id="container-maos"> <?php $hash = "%23testefator"; $qtde = "47"; $pg = $_GET['page']; $search = 'http://search.twitter.com/search.json?q='.$hash.'&rpp='.$qtde.'&page='.$pg.''; $json = file_get_contents($search); $data = json_decode($json); $q = 1; /***PHP_EOL;***/ echo '<div id="ttp-maos">'.PHP_EOL; foreach( $data->results AS $post ){ if($q >= 1){$i = $q++;} $item = $post->text; $usuario = $post->from_user; $postagem = $post->created_at; $id_post = $post->id_str; $img_mao = "M".$i."L1.png"; $sql = mysql_query("SELECT * FROM tweets WHERE id_post = $id_post"); $numero_linhas = mysql_num_rows($sql); if($numero_linhas == 0) { $sql2 = mysql_query("INSERT INTO tweets (id, usuario, mensagem, data_post, id-post) VALUES ('', '$usuario', '$item', '$postagem', '$id_post')"); } $resultado = '<div class="mao"><img src="img/'.$img_mao.'" title="<b><u>'.$usuario.':</u></b> '.$item.'<br>'.$postagem.'<br><br>'.$id_post.'<br>Quant='.$numero_linhas.'"/></div>'.PHP_EOL; echo "$resultado"; } echo '</div>'.PHP_EOL; $pag = $_GET['page']; if (isset($pag)){ $page = 1; $next = ++$page; $prev = $page; } if ($pag == 1) { $page = 1; $page2 = 1; $next = ++$page; $prev = $page2; $ocultar = 'display: none;'; } if ($pag > 1) { $page = $_GET['page']; $next = ++$page; $page2 = $_GET['page']; $prev = --$page2; } else { $page = 1; $page2 = 1; $next = ++$page; $prev = $page2; $ocultar = 'display: none;'; } ?> </div> <?php echo '<div id="setas">'; echo '<a href="?page='.$prev.'" style="'.$ocultar.'"><img src="img/seta-back.png" border="0" class="seta-left" /></a>'; echo '<a href="?page='.$next.'"><img src="img/seta-fwd.png" border="0" class="seta-right" /></a>'; echo '<img src="img/maozinha.png" border="0" class="maozinha" />'; echo '</div>'; ?> </div> <script type="text/javascript"> $("#ttp-maos img[title]").tooltip(); </script> </body> </html> Então... como podem ver, minha idéia era a seguinte: pegar o código único do tweet, pesquisar se ele já existe no banco e, se não existir, gravar no DB (junto com mais algumas informações que pretendo usar futuramente). Mas não consigo gravar. O único dado q tem lá eu inseri manualmente. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 3, 2011 $sql2 = mysql_query("INSERT INTO tweets (id, usuario, mensagem, data_post, id-post) VALUES ('', '$usuario', '$item', '$postagem', '$id_post')") or die( mysql_error() ); corrija o erro que aparecer. Compartilhar este post Link para o post Compartilhar em outros sites
santosbio 0 Denunciar post Postado Junho 7, 2011 $sql2 = mysql_query("INSERT INTO tweets (id, usuario, mensagem, data_post, id-post) VALUES ('', '$usuario', '$item', '$postagem', '$id_post')") or die( mysql_error() ); corrija o erro que aparecer. Deu certo! faltavam as aspas nos valores. então, ficou assim: $sql2 = mysql_query("INSERT INTO tweets (id, usuario, mensagem, data_post, id-post) VALUES ('', '".$usuario."', '".$item."', '".$postagem."', '".$id_post."')") or die( mysql_error() ); Como sempre, um erro idiota aliado à falta de atenção! Vlw gente! Compartilhar este post Link para o post Compartilhar em outros sites
santosbio 0 Denunciar post Postado Dezembro 22, 2011 Pessoal, sem querer reviver o tópico (mas já revivendo... rsrsr), esse meu projeto do Twitter acabou ficando jogado às traças, pois meu cliente não acreditava (e ainda não acredita) no potencial do Twitter (sim... foi isso mesmo o que vocês leram). Por isso, resolvi disponibilizar o material que desenvolvi pra quem queira estudá-lo ou aplicá-lo em algum projeto. Só peço que, por gentileza, dêem os devidos créditos. Segue o link: http://www.megaupload.com/?d=AS2PT07M Compartilhar este post Link para o post Compartilhar em outros sites
santosbio 0 Denunciar post Postado Dezembro 12, 2012 Atualizando o link: https://docs.google.com/open?id=0BxE9Fzeso1aYVjRDU2dQMFJfOG8 Muita gente tem me procurado pedindo esse script. Aviso a todos que não finalizei o mesmo, pois o projeto no qual trabalhava foi abortado. Qualquer dúvida, é @santosbio no Twitter! (: Compartilhar este post Link para o post Compartilhar em outros sites