2010-09-17 19 views
0

J'essaie d'effectuer une recherche sur Twitter en utilisant le package PEAR Services_Twitter. Malheureusement, ce ne retourne qu'un tableau de ids d'état, par exemple (var_dump):Comment effectuer une recherche avec Services_Twitter?

object(stdClass)#88 (2) { 
    ["statuses"]=> 
    array(11) { 
    [0]=> 
    int(49497593539) 
    [1]=> 
    int(49497593851) 
    [2]=> 
    int(49497598001) 
    [3]=> 
    int(49497599055) 
    [4]=> 
    int(49497599597) 
    [5]=> 
    int(49497600733) 
    [6]=> 
    int(49497602607) 
    [7]=> 
    int(49497607031) 
    [8]=> 
    int(49497607453) 
    [9]=> 
    int(49497609577) 
    [10]=> 
    int(49497610605) 
    } 
    ["created_in"]=> 
    float(0.008847) 
} 

Le script que je utilise est similaire à ce script de test je l'ai écrit:

<?php 
//$oAuth = new HTTP_OAuth_Consumer(/** Supply oAuth details here **/); 
$Twitter = new Services_Twitter(); 
//$Twitter->setOAuth($oAuth); 
try { 
    $Response = $Twitter->search(array(
     "q" => "#FF -RT OR #FollowFriday -RT", 
     "rpp" => 10, 
     "since_id" => 23982086000, 
     "result_type" => "recent" 
    )); 
    var_dump($Response); 
    } catch (Exception $e) { 
    fwrite(STDERR, $e->getMessage()); 
    } 
?> 

Depuis que je Je veux balayer les tweets pour certains mots et vouloir savoir quand il a été posté et par qui, je devrais demander tous ces statuts un par un. Mais selon le example response in the Twitter API documentation ils retournent déjà toutes les informations nécessaires sur les tweets (ce qui est un peu évident). Donc, la question est: Comment puis-je accéder à cette information en utilisant Services_Twitter?

Cordialement,

Arno

Répondre

3

Ainsi que je l'ai dit ->search() est enveloppé par Services_Twitter::__call().

Mais voici la mauvaise compréhension!

Deux recherches:

Ceci est source de confusion que search.twitter.com renvoie les résultats que vous souhaitez qu'ils et l'autre méthode API seulement les IDs d'état.

Pour certaines raisons uniquement lorsque vous recherchez des tendances search.twitter.com est utilisé. Sinon, ce sont les méthodes de l'API. Si vous voulez aider, s'il vous plaît ouvrir un billet sur PEAR et je peux essayer de mettre en œuvre cela pour vous.

Un quickfix pour vous est ce script:

<?php 
$uri = 'http://search.twitter.com/search.json?'; 
$uri .= http_build_query(
    array(
     "q"   => "#FF -RT OR #FollowFriday -RT", 
     "rpp"   => 10, 
     "since_id" => 23982086000, 
     "result_type" => "recent" 
)); 

$response = file_get_contents($uri); 
if ($response === false) { 
    fwrite(STDERR, "Could not fetch search result."); 
    exit(1); 
} 

$data = json_decode($response); 
var_dump($data); 
+0

Je vais ajuster mon ticket sur le site PEAR dès que possible. Je voulais utiliser oAuth, pour effectuer plus de recherches/heure (puisque les appels oauth ont une limite de débit plus élevée). Corrigez-moi si je me trompe, cela pourrait être différent pour l'API de recherche. –

+0

Non, non - vous avez probablement raison. Je me demande si l'API oauth'd supporte ce que vous voulez.De ce que je vois, en regardant la demande directe, l'API ne renvoie que ces ID utilisateur. Donc, à son tour, vous devez consulter le message complet - un par un. – Till

0

Utilisez-vous une coutume Services_Twitter, je viens de faire une recherche dans la classe via Pear Documentation et a été incapable de trouver la fonction search. Cependant, il semble que la plupart des retours pour cette classe est un objet simple_xml. Étant donné que je regarderais à travers la documentation là-bas et voir comment vous pouvez extraire ces données. Cela aiderait également à regarder comment Twitter renvoie la réponse au format XML.

+0

Il est enveloppé avec __call()! – Till

+0

Ah, merci d'avoir éclairci ça! –

+0

Btw, la réponse par défaut est JSON. – Till