Publié le 04/05/2011
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 plus
2 commentaires

Effectuer une recherche avec l'API Twitter

Le système de microblogging et la communauté Twitter n'est plus à présenter, le phénomène est devenu une outil de communication à part entière. Parmi les milliers de Tweet emis tous les jours, voyons comment utiliser l'API Twitter en PHP pour effectuer une recherche.

TwitterSearch, class de communication avec l'API Twitter

Une recherche sur Twitter se compose de l'envoi d'une requête puis le traitement des réponses au format XML ou JSON. La class TwitterSearch prend en charge ces opérations et propose 2 options:
- setTweetcount(): fixer le nombre de tweets à retourner,
- setLang(): sélectionner la langue des Tweets.
<?php
/**
 * Effectuer une recherche avec l'API Twitter
 * @copyright Fobec 2011
 */
class TwitterSearch {
    //réponse de l'API
    private $atom='';
    //nombre de tweet
    private $tweetcount=10;
    //langue
    private $lang='';
 
    /**
     * Lancer une requete sur Twitter
     * @param string $keyword mot clé
     */
    public function query($keyword) {
        $url='http://search.twitter.com/search.atom?';
        //url de la page
        $url.='q='.urlencode($keyword);
        //nombre de tweet
        if (!empty($this->tweetcount)) {
            $url.='&rpp='.$this->tweetcount;
        }
        if (!empty($this->tweetcount)) {
            $url.='&lang='.$this->lang;
        }
 
        $this->atom=file_get_contents($url);
    }    
    /**
     * Extraire les données sous forme d'un tableau
     * @return array
     */
    public function parseAsArray() {
        $out=array();
        $line=array('date'=>0, 'link'=>'', 'twimg'=>'', 'title'=>'', 'content'=>'');
        $xml=simplexml_load_string($this->atom);
 
        foreach($xml->entry as $item) {
            $line['date']=date("d-m-Y H:i:s",strtotime($item->published));
            $line['link']=(String)$item->link[0]["href"];
            $line['twimg']=(String)$item->link[1]["href"];
            $line['title']=(String)$item->title;
            $line['content']=(String)$item->content;
 
            $out[]=$line;
        }        
        return $out;
    }    
    /**
     * Fixer le nombre de Twwet à retourner
     * @param int $count 
     */
    public function setTweetcount($count) {
        $this->tweetcount=$count;
    }    
    /**
     * Fixer la langue des Tweet
     * @param string $lang 
     */
    public function setLang($lang) {
        $this->lang=$lang;
    }
}
?>

Exemple 1: recherche les derniers Tweets sur un thème

A l'aide la class TwitterSearch, effectuons la recherche suivante:
- mot clé: "Blackberry",
- nombre: 5 derniers Tweets,
- langue: francais.

Les résultats de la recherche sont affichés sous forme d'un tableau reprenant l'avatar, le contenu et la date du tweet.
<?php
/**
 * Exemple1: rechercher les derniers Tweet sur Blackberry
 */
$twittersearch=new TwitterSearch();
$twittersearch->setLang('fr');
$twittersearch->setTweetcount(5);
$twittersearch->query('blackberry');
$tweets=$twittersearch->parseAsArray();
foreach($tweets as $tweet) {
    $buf='<table border="0" width="500"><tr><td width="50" rowspan="2" style="border-top:1px solid #C0C0C0">';
    $buf.='<a href="'.$tweet['link'].'">';
    $buf.='<img src="'.$tweet['twimg'].'" style="border:0px"></a></td>';
    $buf.='<td width="450" style="border-top:1px solid #C0C0C0">'.$tweet['content'].'</td></tr>';
    $buf.='<tr><td width="450">'.$tweet['date'].'</td></tr></table>';
    echo $buf;
}
?>
Résultat:
twitterapi

Exemple 2: recherche les backlinks sur Twitter

Webmaster d'un site, voyons comment trouver les Tweets dans lesquels notre site web est cité Par exemple pour le site "developpez.com":
- mot clé: "developpez.com",
- nombre: 5 derniers Tweets,
- langue: toutes les langues.
<?php
/**
 * Exemple2: rechercher les derniers Tweet qui référencent Developpez.com
 */
$twittersearch=new TwitterSearch();
$twittersearch->setTweetcount(5);
$twittersearch->query('developpez.com');
$tweets=$twittersearch->parseAsArray();
foreach($tweets as $tweet) {
    $buf='<table border="0" width="500"><tr><td width="50" rowspan="2" style="border-top:1px solid #C0C0C0">';
    $buf.='<a href="'.$tweet['link'].'">';
    $buf.='<img src="'.$tweet['twimg'].'" style="border:0px"></a></td>';
    $buf.='<td width="450" style="border-top:1px solid #C0C0C0">'.$tweet['content'].'</td></tr>';
    $buf.='<tr><td width="450">'.$tweet['date'].'</td></tr></table>';
    echo $buf;
}
?>
Résultats:
twitterapi_seo

Conclusion sur l'API Twitter

Au travers des exemples Blackberry et recherche de bakclink, nous avons vu 2 illustrations de l'API de Twitter. En fait, ces fonctionnalités peuvent être utilisées dans de nombreuses applications autour de la plateforme de Twitter.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.
avatar PizzaToy

Publié par PizzaToy

le 02/07/2013 à 18:32:34

Salut,
super Class mais elle a fait son temps. Il faut maintenant passer la version 1.1 de l'API Twitter search et son authentification !

avatar Fobec

Publié par Fobec

le 04/07/2013 à 18:32:34

En effet, Twitter a modifie la structure de son API. P'etre qu'un jour, on trouve le temps pour finaliser un wrapper pour la version 1.1

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
php5 - class
Mise a jour
04/05/2011
Visualisation
vu 2971 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 261 articles
|BIO_PSEUDO|
Commentaires récents

Publié par claude77 dans tuto

Super application, fonctionne bien
exemple sur une image

Publié par Coll dans java

Excuse moi, mais pourrais tu expliquer un peu plus precisement ce que tu fais lorsque tu convertis en gris je comprends l'idee mais pas ce que chaque action fait precisement et le cacth a la fin. Parc...

Publié par eldiablo dans java

Après recherches, il manquait simplement une ligne à cette classe et à la mienne. Il suffit d'ajouter
df.setLenient(false);
juste après
SimpleDateFormat df = new...

Publié par coramarr dans java

Peut-on trouver des infos sur cette suite qui serait utilise en statistiques. Des documents ou ouvrages qui relatent les divers possibilites d'utilisation de cette suite.
Je suis un particulier ni...

Publié par robbie dans tuto

desole pour le message en multiple j'ai eu un ptit beug