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 2719 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 261 articles
|BIO_PSEUDO|
Commentaires récents

Publié par mido dans java

si je veut extraire les liens a partir de google searche c'est a dire utiliser la raquette suivante "http://www.google.tn/search?q=" avec java bien sur ..merci d'avance :)

Publié par foufou0406 dans CMS

merci !!!

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 ING_BIO dans CMS

tres bonnes aide merci

Publié par mohammed dans java

Bonjour ,Merci pour ce travail ,juste j'ai une question pour ce qui concerne les textes avec les caracteres speciaux comment faire??