Parser la nouvelle API Youtube

9 réponses
AuteurMessage

Nautiljon |
Membre

Photo de Nautiljon

Inscrit le : 02/03/2006

# Le 15/11/2009 à 12:15

Hello,

J'ai toujours utilisé l'ancienne api de youtube qui ne renvoi plus rien aujourd'hui.
Avant on l'appelais de la sorte :
http://www.youtube.com/api2_rest?method=youtube.vi...Ouvrir dans une nouvelle fenetre

La nouvelle plus simple c'est :
http://gdata.youtube.com/feeds/api/videos/ID_VIDEOOuvrir dans une nouvelle fenetre

Plus besoin de l'id dev pour les requêtes simples comme récupérer des infos sur une vidéo (thumbnail, duration etc.)

Sauf que le soucis c'est qu'après un simplexml_load_string je ne retrouve pas toutes les infos qu'on voit quand on ouvre le fichier xml que l'api google revoit.

Exemple :
$flux= 'http://gdata.youtube.com/feeds/api/videos/R2tdSjzR_Bg';
$data=file_get_contents($flux);
$xml = simplexml_load_string($data);

Si je var_dump ou print_r mon $xml il me manque plein d'infos que je retrouve dans $data

Plus précisement tout ce qu'il y a en dessous de "author", ce qui m'interesse justement (thumb, duration).

Des idées de pourquoi ça fait ça ?

Merci.

--> Nautiljon.comOuvrir dans une nouvelle fenetre

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 15/11/2009 à 12:23

Hello,

en fait c'est juste un problème d'utilisation de SimpleXML non ?
L'objet renvoyé est "dynamique", c'est à dire qu'à coup de var_dump() / print_r() tu ne vois qu'une très mince partie de ce qu'il contient. Mais si tu essayes d'accéder au contenu ça fonctionnera.

Et en passant, pas besoin de file_get_contents(), simplexml gère directement le chargement si tu lui files le chemin du fichier (ou l'url).

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

Nautiljon | Jonathan
Membre

Photo de Nautiljon

Inscrit le : 02/03/2006

# Le 15/11/2009 à 12:48

mmm, oki, merci en effet ça marche si j'accède directement à l'objet de cette mannière
$thumb = $xml->children('media', true)->group->children('media',true)->thumbnail->attributes()->url;

Merci

Sinon j'ai essayé sans le file_get_contents et il gueule ^^

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Start tag expected, '<' not found

--> Nautiljon.comOuvrir dans une nouvelle fenetre

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 15/11/2009 à 13:28

Normal qu'il râle, c'est simplexml_load_file() qu'il faut utiliser si tu lui donnes directement le chemin d'un fichier.

Sinon je ne sais pas quelle tronche a ton fichier XML, mais es tu sûr d'avoir besoin d'appeler children() à tour de bras comme ça ?

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

Nautiljon | Jonathan
Membre

Photo de Nautiljon

Inscrit le : 02/03/2006

# Le 15/11/2009 à 13:34

Ah oki en effet ça marche bien la

Pour le xml c'est celui ci : http://gdata.youtube.com/feeds/api/videos/R2tdSjzR...Ouvrir dans une nouvelle fenetre

S'il y a moyen de faire plus simple je suis preneur, il me faut juste le 1er thumb et la duration. Actuelement je fais comme ça.

$thumbnail = $xml->children('media', true)->group->children('media',true)->thumbnail->attributes()->url;
$duree = $xml->children('media', true)->group->children('yt',true)->duration->attributes()->seconds;

--> Nautiljon.comOuvrir dans une nouvelle fenetre

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 15/11/2009 à 14:18

J'ai moyennement envie de télécharger le fichier XML moi même, puis le formater, juste pour aider Si tu pouvais au moins en donner la structure, ça aiderait.

Généralement l'utilisation avec simpleXML suit simplement la structure du fichier XML. Un truc du genre $xml->toto->media->thumbnail['url'] me semblerait plus logique.

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

Nautiljon | Jonathan
Membre

Photo de Nautiljon

Inscrit le : 02/03/2006

# Le 15/11/2009 à 15:23

Moi je l'ouvre avec IE mais vu que t'es surement sous linux ça marche pas ^^

Voila la tête du fichier : http://img7.hostingpics.net/pics/21406xml.jpgOuvrir dans une nouvelle fenetre

En faite $xml->id ça marche mais pour les balises avec des : ça ne marche pas :/

--> Nautiljon.comOuvrir dans une nouvelle fenetre

Zalex14 | Alexandre
Modérateur

Photo de Zalex14

Inscrit le : 09/05/2005

# Le 16/11/2009 à 13:00

http://www.ibm.com/developerworks/xml/library/x-yo...Ouvrir dans une nouvelle fenetre

Mieux vaut s'attendre au prévisible que d'être surpris par l'inattendu.

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 16/11/2009 à 13:25

Ah oui effectivement avec les namespaces c'est un poil plus long.

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

Nautiljon | Jonathan
Membre

Photo de Nautiljon

Inscrit le : 02/03/2006

# Le 16/11/2009 à 20:11

Merci Zalex14 je lirais ça

Merci aussi Bool pour le coup de pouce

--> Nautiljon.comOuvrir dans une nouvelle fenetre

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 24/11/2024 0:33:15 | Généré en 5.49ms | Contacts | Mentions légales |