Tutoriel Vidéo PHP : Afficher son dernier Tweet

Dans ce tutoriel vidéo vous apprendrez comment utiliser Curl et SimpleXMLElement pour récupérer et afficher votre dernier Tweet sur votre site. En plus de cela, un système de "cache" permettra d'optimiser la rapidité de cet affichage en créant un fichier permettant de sauvegarder le fichier XML distant.


Télécharger la vidéo
(Réservé aux premiums)

Télécharger les sources
(Réservé aux premiums)


Après avoir appris sur Internet quoi de plus normal que de partager à son tour ? Passionné par le web depuis un peu plus de 5 ans maintenant j'aime partager mes compétences et mes découvertes avec les personnes qui ont cette même passion pour le web : Vous.

Vous aimerez aussi

Les namespaces

Les namespaces
12m

Dans ce tutoriel vidéo vous apprendrez à utiliser les namespace ou...

API LastFM

API LastFM
35m

Dans ce tutoriel vidéo vous apprendrez comment utiliser l'API de...

29 commentaires
Ajouter un commentaire

windcom.fr Il y a 3 jours Répondre

Super tuto qui fonctionne parfaitement pour moi, mais j'adorerai pouvoir récuperer l'URL postée dans un tweet, sous forme de lien et non pas sous forme de texte ? directement depuis l'api twitter ou plutot avec une regex sur le contenu texte du tweet récupéré ?

fmetro Il y a 1 mois Répondre

Coucou ! Dans mon cas aussi: filemtime merci de l'astuce.

SRC25 Il y a 8 mois Répondre

A quel endroit peut on récupérer le fichier xml twitter ?

GamiChan Il y a 7 mois - Répondre

http://www.twitter.com/statuses/user_timeline/TonNo ùTwitter.xml?count=NombreDeFeeRssAAfficher

KaKuZa` Il y a 9 mois Répondre

J'ai fait comme sur la vidéo.

Mais j'ai une erreur:
Fatal error: Call to undefined function curl_init() in C:\wamp\www\site\index.php on line 2
[code]<?php
$twitter = curl_init();
curl_setopt($twitter,CURLOPT_URL,"http://twitter.com/statuses/user_timeline/297865780.rss?count=1 ");
curl_setopt($twitter,CURLOPT_TIMEOUT,2);
curl_setopt($twitter,CURLOPT_RETURNTRANSFER,true);
$contenu = curl_exec($twitter);
echo $contenu;
?>
[/code]

GamiChan Il y a 7 mois - Répondre

<?php
function parse($text)
{
$text = preg_replace('#http:// [a-z0-9._/-]+#i', '<a href="$0">$0</a>', $text);
$text = preg_replace('#@([a-z0-9_]+)#i', '@<a href="http://twitter.com/ $1">$1</a>', $text);
$text = preg_replace('# \#([a-z0-9_-]+)#i', ' #<a href="http://search.twitter.com/search?q=%23 $1">$1</a>', $text);
return $text;
}

$user = "TonNomTwitter"; /* Nom d'utilisateur sur Twitter */
$count = 8; /* Nombre de message à afficher */
$date_format = 'd M Y, H:i:s'; /* Format de la date à afficher */
$url = 'http://twitter.com/statuses/user_timeline/ '.$user.'.xml?count='.$count;
$oXML = simplexml_load_file( $url );

echo '<ul>';
foreach( $oXML->status as $oStatus )
{
$datetime = date_create($oStatus->created_at);
$date = date_format($datetime, $date_format)."\n";
echo '<li>'.parse(utf8_decode($oStatus->text));
echo ' (<a href="http://twitter.com/ '.$user.'/status/'.$oStatus->id.'">'.$date.'</a>)</li>';
}
echo '</ul>';
?>

loikkk Il y a 9 mois Répondre

Salut à tous,

J'ai fait différemment, je tente d'apporter ma contribution.

<?php
//Gestion nombre affichage du flux RSS
$i = 0;
$limite_affichage = 4; //Nombre de tweets à afficher
$mon_espace = "URL COMPTE TWITTER"; //URL de votre espace twitter
$flux_rss = 'URL'; //URL du flux RSS à définir
//Chargement du flux RSS
if($flux = simplexml_load_file($flux_rss))
{
$donnee = $flux->channel;
//Lecture des données
foreach($donnee->item as $valeur)
{
//Contrôle nombre affichage du flux RSS
if ($i < $limite_affichage) {
//Affichages des données
echo '<p>Tweets du '.date("d/m/Y, à G:i",strtotime($valeur->pubDate));
echo "<br/>$valeur->description<br/><a href='$valeur->link' target="_blank">En savoir plus</a></p>";
$i++;
}

}
echo "<a href=$mon_espace target="_blank">Découvrez mon espace twitter</a>";
}
else echo 'Pas de flux RSS disponible';
?>

Adrien Il y a 11 mois Répondre

Salut à tous,
Je rencontre un petit soucis actuellement,
J'ai mon script va toujours chercher le xml de twitter car je suis tjrs au dessus des tempo pour le cache.
J'ai fait un echo de la différence et j'ai environ 9600s soit 2h... comment faire ?

Adrien Il y a 11 mois

Bon dans mon cas ce n'est pas fileatime mais filemtime que je devais utiliser.
Allez savoir pourquoi

Adrien Il y a 11 mois - Répondre

Pour ceux que ça intéresse, j'ai fait une fonction
<pre>
function urlclick($url)
{
$url=preg_replace('`(((https?|ftp)://(w{3}\.)?)(?<!www)(\w+-?)*\.([a-z]{2,4}))`',
'<a href="$1" target="_blank">$1</a>',$url);
return $url;
}

function myTwiter($account, $nb_tweet, $timeout, $home_site, $cache_folder, $cache_filename, $cache_lifetime)
{

$resultat = '';
if(time()-filemtime($home_site.$cache_folder.'/'.$cache_filename) > $cache_lifetime)
{ // Si le cache est supérieur a la durée spécifée, on charge le xml de sur le site twitter
$url = "http://twitter.com/statuses/user_timeline/ $account.xml?count=$nb_tweet";
$twitter = curl_init();
curl_setopt($twitter,CURLOPT_URL,$url);
curl_setopt($twitter,CURLOPT_TIMEOUT,$timeout);
curl_setopt($twitter,CURLOPT_RETURNTRANSFER,true);
$content = curl_exec($twitter);
if($content == false) //Si le chargement du xml se passe mal, on charge le cache
$content = file_get_contents($home_site.$cache_folder.'/'.$cache_filename);
else // Sinon on enregistre le chargement dans le cache
file_put_contents($home_site.$cache_folder.'/'.$cache_filename,$content);
}
else
{
# Sinon on charge le cache...
$content = file_get_contents($home_site.$cache_folder.'/'.$cache_filename);
}
$xml = new SimpleXMLElement($content);

$resultat .= '<div id="twitter">';
foreach($xml->status as $mes_tweet)
{
$resultat .= '<div class="tweet">';
$resultat .= '<div class="avatar_twitter">';
$resultat .= '<img src='.$mes_tweet->user->profile_image_url.'>';
$resultat .= '</div>';
$resultat .= '<div class="tweet">';
$resultat .= '<p><a href="http://fr.twitter.com/ #!/'.$mes_tweet->user->screen_name.'"><span class="gras">'.$mes_tweet->user->name.'</span></a> : '.urlclick($mes_tweet->text).'</p>';
$resultat .= '</div>';
$resultat .= '</div>';
}
$resultat .= '</div>';
return $resultat;
}
</pre>

vallou Il y a 11 mois Répondre

Bonjour,
J'obtiens l'erreur suivante dans le cache.xml : <error>Rate limit exceeded. Clients may not make more than 150 requests per hour.</error>.
Quelqu'un a-t-il rencontré le problèmé et aurait éventuellement une solution?
Je vous remercie :-)

Doccc Il y a 1 an Répondre

Bonjour,
Merci pour le tutorial, super bien expliqué.
Je voulais savoir si il était possible de faire un retour a la ligne lors de l'affichage du tweet ?

Merci

miu2rennes Il y a 1 an Répondre

A priori, je suis le seul concerné mais comment ça se passe pour les Re-Tweets?
Ils ne s'affichent pas sur le fichier xml de twitter mais si je retweete, il est quand même comptabilisé en tant que tweet et donc n'affiche rien.
Cela pourrait-il venir de mon fichier cache.xml?
Je sais pas si j'ai été très clair...

Alwin Il y a 2 ans Répondre

Je n'ai pas regardé le tutoriel en entier ( juste quelques passages ) mais il me semble que tu as oublié de libérer la ressource cURL à la fin du script avec curl_close($twitter); .

Les ressources sont libérée à la fin du script, lorsque le chargement est terminé, mais c'est une bonne habitude à prendre que de libérer systématiquement des ressources qui ne sont plus utilisée.

steph Il y a 2 ans Répondre

Merci pour ce tuto.
Comment afficher des liens cliquables comme toi ?
Dans ce tuto les liens des tweet qui s'affichent ne sont pas cliquable !
Merci

Quent1du58 Il y a 2 ans

Pour cela, il faut utiliser les regexp.

Ico Il y a 10 mois - Répondre

Voici comment j'ai codé la chose :

$regex = '@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@';
$texte = preg_replace($regex, '<a href="$1">$1</a>', $texte);
echo $texte;

Hugo Il y a 2 ans Répondre

J'ai un petit problème avec cette ligne:
$xml= new SimpleXMLElement($contenu)
Ca m'affiche plein plein d'erreur...
Une solution ?

vincmac Il y a 2 ans Répondre

Oups le timer du cache ne marche pas en local chez moi, c'est comme si l'ordi considérai comme écriture le fait de lire le fichier cache.xml.
Je regarde ça et je posterai ici si je trouve une solution fiable ou juste une réponse. p.s : je suis sous mac os, la gestion des fichiers n'est peu être pas la même que windows, Je vais essayer de mettre mon test en ligne pour voir ce que cela donne.

vincmac Il y a 2 ans Répondre

Vraiment merci!
En plus tes explications sont vraiment très claires.

AndroWiiid Il y a 2 ans Répondre

Bonsoir,

D'abord merci pour ce tutoriel claire et précis qui m'a beaucoup aidé dans l'affichage de mes Tweets sur mon site. Cependant, j'ai testé d'afficher en plus de ça l'heure exacte à laquelle j'ai posté mon annonce et j'éprouve quelques soucis.

Je me doute que pour obtenir la date, je dois utiliser ceci pour l'obtenir : $xml->status->created_at
Mais j'aimerais pouvoir modifier son contenu. Savez-vous comment on s'y prend ?

Merci d'avance !

musicalitymaker Il y a 2 ans Répondre

Bonjour à vous tous...
J'ai essayer de faire afficher mon dernier "tweet" sur ma page web, mais le problème est que dans mon serveur local le module "curl" n'est pas activé alors, il ne afficher pas le document xml de mes "tweet". Pour vous aidez à mieux comprendre ma situation de mon problème je vous donne quelque information :

J'utilise "MAMP" pour le serveur local et je suis sur mac pour mon serveur local. J'aimerais savoir comment je puisse activé le module ou la valeur "Curl" dans mon serveur locale. Car par défaut, il est inactif. Voici la portsion de code php que j'ai écrit sur ma page php :

<?php
$twitter = curl_init();
curl_setopt($twitter,CURLOPT_URL,"http://twitter.com/statuses/user_timeline/mupassionate.xml?count=1 ");
curl_setopt($twitter,CURLOPT_TIMEOUT,2);
curl_setopt($twitter,CURLOPT_RETURNRTRANSFER,true);
$NewsContent = curl_exec($twitter);
echo $NewsContent;
?>
Merci de votre aide.

jj31 Il y a 2 ans Répondre

Cool. Cependant de mon coté, aussi bien en local qu'en ligne fileatime() renvoie toujours la même valeur, et j'ai vérifié le fichier.xml est bien reécrit à chaque fois ... donc le système de cache ne fonctionne pas pour moi ... snif

Dimix Il y a 2 ans Répondre

Super tuto,
Comme toujours !

Fedora Il y a 2 ans Répondre

Bonjour Grafikart, je voudrais savoir , pour tes tutoriels , tu utilise quel logiciel pour améliorer la qualité du son ( votre voix sur les tuto). est ce que t'enregistre le voix à coté et le vidéo à coté ou en même temps.

David Il y a 2 ans Répondre

Salut,
Super tuto comme d'habitude.
J'aimerai récupéré par exemple l'avatar et l'url de mon dernier statut, mais impossible de les insérer sur mon site

Tof06 Il y a 2 ans Répondre

Est-il possible de faire de même pour Facebook ? Peut-on avoir accès à ce type de fichier XML, qui donnerai nos derniers statuts..

Jutix Il y a 2 ans Répondre

Merci ça va sûrement me servir !
Bonne continuation Grafikart =)

Ly3s Il y a 2 ans Répondre

C'est plus rapide de le faire en jQuery avec AJAX:

$.getJSON("http://twitter.com/statuses/user_timeline/vous.json?callback=? ", function(data) {
$("#tweet").html(data[0].text);
});

DoDo021 Il y a 2 ans Répondre

Salut !!!
Pourquoi ne pas avoir utiliser json pour récupérer les données ?

Si non très bon tuto comme d'habitude =)

likeo Il y a 2 ans Répondre

Bravo pour cette 100ème vidéo

Harry Il y a 2 ans

91e vidéo (:
En fait, c'est juste l'ID 100 (dans la BDD) mais il en a supprimé certains ^^

Grafikart Il y a 2 ans - Répondre

Effectivement ce n'est pas la 100ème

leknoppix Il y a 2 ans Répondre

Vraiment génial comme toujours.

dechuck Il y a 2 ans Répondre

Ça fait longtemps que j'attendais un tuto de la sorte!! Pour le moment sur mon site j'avais mis l'objet javascript que fourni twitter, mais je le trouve pas très élégant!! :P

LimeCitrus Il y a 2 ans Répondre

Merci pour ce tuto!

N_aya Il y a 2 ans Répondre

Yeah thx!
- Etape 1 : Ce tuto + voler un slip
- Etape 2 : ?
- Etape 3 : http://popurls.com/ + profit

Laisser un commentaire

Si vous avez une question il est conseillé d'utiliser le forum si vous voulez une réponse sûre.