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

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 Sophie dans tuto

Merci pour cette explication claire qui m'aide grandement... JS et moi, on est pas encore copain !

Publié par Fobec dans java

Les images statiques sont aussi devenues payantes chez Google. Donc sans compte et une cle, l'image ne se chargera pas.
Je vous conseille de passer sur un autre fournisseur de carte, le code re...

Publié par hisy dans java

Merci pour le script mais si un champ text contient un ";" ...

Publié par BIBAK dans CMS

merci infiniment, ce sont des beau icons::: :)