Funçãozinha do domingo: Seguidores do Twitter

Tudo começou com uma pergunta do meu amigo @AJEsperanca. Ele queria uma lista de seguidores simples, com a imagem de exibição linkada para o perfil do Twitter.

Com isso em mente, resolvi testar meus conhecimentos e fiz uma função que retorna um array gerado à partir de um JSON fornecido pelo Twitter.

A função é esta:

<?php

  function getSeguidores($twitter, $n_seguidores = 20){
    /*
     * @author Rafael Toledo
     * http://www.rvpt.net
     */
     
    $json = "http://api.twitter.com/1/statuses/followers/{$twitter}.json";
    
    if (!function_exists('curl_init')){
      die('CURL is not installed!');
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $json);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
    curl_close($ch);
    
    $obj = json_decode($output);
    
    if(!is_array($obj)){
      return false;
    }
  
    $pos_atual = range(0,count($obj));
    shuffle($pos_atual);
    $pos_atual = array_slice($pos_atual,0,$n_seguidores);
  
    for($i=0;$i<$n_seguidores;$i++){
      $current = $obj[$pos_atual[$i]];
      if(is_object($current)){
        $seguidores[$i]['nome'] = $current->name;
        $seguidores[$i]['avatar'] = $current->profile_image_url;
        $seguidores[$i]['url'] = "http://www.twitter.com/{$current->screen_name}";
      }      
    }

    return $seguidores;
  }
  
?>
									

Esta função recebe como parâmetro obrigatório a @ do usuário, opcionalmente podendo fornecer o número de seguidores que deseja recuperar do Twitter.

O Twitter devolve um objeto JSON com todos os seguidores da conta. Dentro da função gero um array com posições aleatórias, para que a cada execução, a listagem de seguidores seja alterada.

A função é chamada da seguinte forma:

getSeguidores("rafamd",30)
									

O retorno é um array, em que cada posição é um array com os seguintes índices: nome, avatar e url.

Ele pode ser usado da seguinte forma:

<ul>
  <?php
    $seguidores = getSeguidores("rafamd",30);
    if($seguidores){
    foreach($seguidores as $seguidor){
  ?>
  <li>
    <a href="<?=$seguidor['url']?>" title="<?=$seguidor['nome']?>">
    <img src="<?=$seguidor['avatar']?>" alt="<?=$seguidor['nome']?>" />
    </a>
  </li>
  <?php
    }
    } else {
  ?>
  <li>Ocorreu um erro!</li>
  <?php } ?>
</ul>
									

Aí está, dá para estender a função de diversas maneiras… O API é o limite… Ou não 😛