Vos twitts sur votre site web simplement (via Curl/PHP)
Publié le 20 February 2009, par Babozor dans la catégorie OutilsVoilà un moyen super simple pour afficher vos différents tweets sur votre site web via l’API de Twitter et Curl
la fonction de récupération des twitts:
function twitter_status($twitter_id, $hyperlinks = true) {
$c = curl_init();
curl_setopt($c, CURLOPT_URL, "http://twitter.com/statuses/
user_timeline/$twitter_id.xml");
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 3);
curl_setopt($c, CURLOPT_TIMEOUT, 5);
$response = curl_exec($c);
$responseInfo = curl_getinfo($c);
curl_close($c);
if (intval($responseInfo['http_code']) == 200) {
if (class_exists('SimpleXMLElement')) {
$xml = new SimpleXMLElement($response);
return $xml;
} else {
return $response;
}
} else {
return false;
}
}
Pour afficher le résultat:
Exemple ici du twitter de busineo affiché sur busineo.com (les trois derniers twitts)
$twitter_xml=twitter_status('BUSINEO');
for($i=0;$i<3;$i++)
{
$twitt=$twitter_xml->status[$i]->text;
$twitt=preg_replace("/(http:\/\/|www|[a-zA-Z0-9-]+\.|
[a-zA-Z0-9\.-]+@)(([a-zA-Z0-9-][a-zA-Z0-9-]+\.)+[a-zA-Z0-9
-\.\/\_\?\%\#\&\=\;\~\!\(\)]+)/","\\1\\2",$twitt);
echo $twitt.' - '.date('d/m/Y H.i',strtotime($twitter_xml->
status[$i]->created_at)).'<br />';
}
Et vous d’autres méthodes?


le 20 February 2009 à 11h49
Je couplerais ça avec un système de cache …
Sinon ça va faire mal à ton site si quand Twitter plante
le 20 February 2009 à 11h50
( Pas de faute de frappe dans mon dernier Twitt, le html n’est pas pris en compte, zut ! )
le 20 February 2009 à 11h53
+1 pour Darklg, sans cache ça ralenti pas mal ta page et en ça la met en péril quand twitter est down (donc régulièrement ?).
Perso j’adhère pas à l’intégration au milieu de la home. De plus, êtes vous certains que le public cible de busineo est vraiment utilisateur de twitter (je pense pas mais bon…) ? Vous ne twittez que des trucs intéressants pour les gens qui arrivent sur Busineo ? Parce que sinon ça peut vite faire tâche..
le 20 February 2009 à 12h12
Je pense que le plus intéressant c’est au moins de filtrer. Les replies sont rarement intéressantes pour qui n’est pas de la communauté Twitter. Alors que les RT soun souvent très utiles.
Donc faudrait faire un filtre pour n’afficher que les tweets, retweets, et enlever les replies.
Je songeais à m’en coder aussi, mais ai eu la flemme de m’y mettre
le 20 February 2009 à 12h54
Un système de cache serait appréciable en effet, ou alors un chargement parallèle via XHR (ça permet de ne pas bloquer le reste de la page le temps que les tweets soient chargés)
Pour ce qui est du filtrage, afficher les RT sur le site ne me parait pas une bonne idée. Tout dépend de comment est intégré l’affichage des tweets, mais tout le monde ne connait pas twitter, et le module sera vu par certains comme un moyen de broadcast, et pas de discussion. Un RT ou un @reply sera super déroutant pour ces personnes
le 20 February 2009 à 14h08
( Au fait, l’API est pas limitée à 100req / heures ? )
Que se passe-t’il si on charge + de 100x la page sans système de cache ?
le 20 February 2009 à 18h35
J’avais fais ça moi :
function getLastTweet ($pseudo)
{
$tweet = simplexml_load_file(’http://twitter.com/statuses/user_timeline/’.$pseudo.’.xml?count=1′);
return $tweet->status->text;
}
http://p4bl0.net/blog/post/My-last-Tweet.html
Après faut traiter le retour de la fonction avec un str_replace(array(’&’, ”), array(’&’, ‘<’, ‘>’), ); ça peut aussi se faire dans la fonction directement, mais j’avais besoin de le récupérer propre aussi :-).
Comme ça pas de regexp (c’est lent).
Sinon pour “echo $twitt.’ - ‘.date(’d/m/Y H.i’,s…;” dans le post, il vaut mieux utiliser des ‘,’ pour echo-er plusieurs trucs que le ‘.’. Parce que avec le ‘.’ il y a d’abord une concaténation qui a lieu, et c’est coûteux. Alors qu’avec la ‘,’ c’est juste comme une succession de “echo”, et donc c’est plus rapide et ça bouffe moins de mémoire qu’avec une concaténation. :-).
le 22 February 2009 à 17h53
Perso moi j’utilise cette petite classe php qui rend bien des services:
http://twitter.slawcup.com/twitter.class.phps
et simplement comme ca apres
$t= new twitter();
$t->username=’username’;
$t->password=’password’;
$status = $t->userTimeline()
sinon avant on pouvais aussi avec jquery en faisant
$.getJson(’http://twitter.com/statuses/user_timeline/busineo.json?callback=?’,function(data) {
/*votre code ici*/
})
mais je crois que ce n’est plus autorise sans etre logged.
le 27 February 2009 à 09h48
Sinon il reste l’interrogation du flux RSS :
http://utilisateur:mot_de_passe@twitter.com/statuses/friends_timeline.rss
En passant par l’intermédiaire de Simple Pie, Magpie ou fetch_rss() de WP. De cette façon on est moins dépendant de la bonne santé de Twitter tout en profitant d’un système de cache.
le 28 February 2009 à 11h58
Il y a aussi la possibilité de ne pas passer par un backend serveur et de tout faire sur le client en js.
http://remysharp.com/2007/05/18/add-twitter-to-your-blog-step-by-step/
fait sur sebcreme.fr.