2010-12-11 51 views
0

donc j'utilise YQL pour obtenir le nombre d'abonnés d'un utilisateur youtube.PHP - sélection d'une entrée particulière avec YQL

pour ce faire, je fais une requête en utilisant une URL comme ceci:

$query = 'https://query.yahooapis.com/v1/public/yql?q='.urlencode("SELECT * FROM xml WHERE url='http://gdata.youtube.com/feeds/api/users/{$id}'").'&format=json&callback='; 

alors je décode la réponse et trouve l'entrée de gamme Je cherche comme ceci:

$response = json_decode($response, true); 
    $subscriber_count = $response['query']['results']['entry']['statistics']['subscriberCount']; 

ça marche bien, sauf que je n'aime pas la façon dont je fais ça :) Je veux dire, y at-il un moyen que je peux obtenir la valeur subscriberCount directement à partir de l'URL $query ci-dessus? Je n'ai pas besoin de tout le XML, juste cette entrée.

+0

Que voulez-vous dire par, * "directement à partir de l'URL' $ query' "*? – salathe

+0

bien que l'URL de requête est passée à curl qui fait une demande à yahoo pour le xml. J'espérais qu'il y ait un moyen de demander à yahoo seulement les données dont j'ai besoin, pas la structure xml complète. – Alex

Répondre

1

Ce que vous pouvez faire est de limiter la quantité de données qui est retourné par YQL aux données que vous êtes vraiment intéressé par faire qqch comme ceci:

SELECT statistics.subscriberCount FROM xml WHERE ... 

vous auriez encore quelques XML de structure/JSON éléments autour du nombre qui vous intéresse mais au moins c'est moins (voir ci-dessous). Vous ne savez pas si c'est ce que vous vouliez?

<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" 
    yahoo:count="1" yahoo:created="2011-01-06T23:21:32Z" yahoo:lang="en-US"> 
    <results> 
     <entry xmlns="http://www.w3.org/2005/Atom"> 
      <yt:statistics 
       xmlns:yt="http://gdata.youtube.com/schemas/2007" subscriberCount="7"/> 
     </entry> 
    </results> 
</query>