Twitter: visualizzare la nostra lista preferiti
This entry was posted on January 22nd, 2010 and is filed under php.
Qualche tempo fa mi sono occupato di uno script per visualizzare la nostra ultima twitterata sul nostro sito.
In questi giorni per motivi di praticità mi è stato necessario recuperare e catalogare la mia ormai interminabile lista dei preferiti su Twitter ed ho quindi deciso di realizzare un comodo script anzichè fare copia-incolla per ognuno.
Le API messe a disposizione dal noto social limitano a 20 per volta il numero di preferiti da scaricare, gli stessi che vediamo nella nostra pagina. Lo script che presento oggi si limita a recuperare quindi i primi 20 ma, con una piccola modifica alla funzione e un semplice ciclo while che controlla la dimensione dell’array, ci sarà possibile recuperarli tutti.
Vediamo la funzione:
function getTwitterFavorites($page = 0) {
//Username e password
$user = 'dymissy';
$pwd = '*******';
$curl = curl_init("http://twitter.com/favorites.xml?page=" . $page);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl,CURLOPT_TIMEOUT, 30);
curl_setopt($curl,CURLOPT_USERPWD,$user . ":" . $pwd);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 0);
$result=curl_exec ($curl);
$data = strstr($result, '<?');
$xml= new SimpleXMLElement($data);
return $xml;
}
La funzione prende in ingresso come parametro la pagina da recuperare; se omesso il parametro, prenderà i primi 20 risultati.
Un semplice esempio di funzione che stampa l’elenco potrebbe essere la seguente che, ovviamente, dovrà essere adattata alle vostre esigenze:
function printTwitterFavorites() {
$xml = getTwitterFavorites();
$text = Array();
echo "<ul>";
for($i=0; $i< sizeof($xml->status) ;$i++) {
//replace @,# and links
$xml->status[$i]->text = preg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)?)@', '<a href="$1">$1</a>', $xml->status[$i]->text);
$xml->status[$i]->text = preg_replace("/@(\w+)/", '<a href="http://twitter.com/$1">@$1</a>', $xml->status[$i]->text);
$xml->status[$i]->text = preg_replace("/#(\w+)/", '<a href="http://twitter.com/search?q=#$1">#$1</a>', $xml->status[$i]->text);
$xml->status[$i]->user->screen_name = preg_replace("/(\w+)/", '<a href="http://twitter.com/$1">@$1</a>', $xml->status[$i]->user->screen_name);
echo "<li><strong>". $xml->status[$i]->user->screen_name . "</strong> - " . $xml->status[$i]->text . "</li>";
}
echo "</ul>";
}
printTwitterFavorites();
Mi raccomando di non abusare troppo nell’uso delle API di Twitter perchè non è possibile effettuare più di 150 richieste per ora.









