2013-04-27 5 views
0

Je suis une API JavaScript et YouTube débutantdonnées XML extraire d'une playlist YouTube

J'essaie d'accéder à des données à partir d'un fichier xml. C'est le fichier atom généré à partir d'une playlist YouTube. Je veux être en mesure d'extraire la vignette, videoid et la description de chaque vidéo dans la liste.

Voici quelques js que j'ai bricolé:

$.get("playlist.xml", function(xml){ 
var videos = $.xml2json(xml); 
alert(videos.entry[0].title); 
console.log(videos);  
}); 

playlist.xml contient le fichier généré à partir d'un appel à:

https://gdata.youtube.com/feeds/api/playlists/playlistid?v=2 

où playlistid est un identifiant de liste de lecture valide.

Le fichier contient toutes les xml attendu et il est converti en JSON (via JQuery XML plug-in JSON) avec la ligne:

var videos = $.xml2json(xml); 

Le code en haut me donne le résultat attendu, à savoir: la titre de la première vidéo de la playlist.

Mes problèmes surviennent lorsque j'essaie d'accéder à d'autres données. La vignette, par exemple, se trouve dans le fichier XML ici:

entry[].media:group.media:thumbnail[] 

Il semble que, après conversion en JSON, le « : » sont convertis en « $ », mais je je reçois des erreurs d'erreurs lorsque vous essayez soit:

$.get("playlist.xml", function(xml){ 
var videos = $.xml2json(xml); 
alert(videos.entry[0].media:group.media:thumbnail[0]); 
console.log(videos);  
}); 

ou:

$.get("playlist.xml", function(xml){ 
var videos = $.xml2json(xml); 
alert(videos.entry[0].media$group.media$thumbnail[0]); 
console.log(videos);  
}); 

Les erreurs sont des variations de:

TypeError: videos.entry[0].media$group is undefined 

J'ai l'impression de ne pas comprendre quelque chose de très basique, mais pour la vie de moi je ne sais pas ce que c'est.

Voici une liste de lecture exemple de fichier xml, si cela peut aider: https://gdata.youtube.com/feeds/api/playlists/PLjyIfAzy9xVUWYcLK54OPd1lDXzMROK_5?v=2

Répondre

0

Pourquoi ne pas obtenir l'alimentation comme JSON en premier lieu (le &alt=json à la fin de l'URL)?

https://gdata.youtube.com/feeds/api/playlists/PLjyIfAzy9xVUWYcLK54OPd1lDXzMROK_5?v=2&alt=json 

Vous pouvez ajouter un paramètre callback et ainsi transformer cette demande JSON dans un JSONP, qui vous permet de l'envoyer avec JavaScript pur de clientside.

0

EDIT VOIR EN BAS

Ok, donc j'ajouté le & alt = JSON, mais vous me perdu au rappel pour mettre le JSON en JSONP.Voici mon code actuel:

var ytPlaylist="PLjyIfAzy9xVUWYcLK54OPd1lDXzMROK_5";  
var jsonFileUrl="https://gdata.youtube.com/feeds/api/playlists/"+ytPlaylist+"?v=2&alt=json"; 


$.get(jsonFileUrl, function(data) { 
alert("Data: " + data.logo); 

}); 

Et la zone d'alerte dit que « Données: undefined »

Maintenant, si je

$.get(jsonFileUrl, function(data) { 
alert("Data: " + data); 
}); 

Je reçois tout le fichier affiché dans la zone d'alerte, si les données sont là, je ne peux pas y accéder. J'ai aussi essayé d'y accéder avec des choses comme:

data.feed.logo 
data[0].feed[0].logo 
data[0].logo 
data.logo.$t 

EDIT: Je ne sais pas encore pourquoi, mais (ci-dessous) travaille

$.getJSON(jsonFileUrl, function(response) { 
alert("Data: " + response.feed.entry[0].media$group.media$description.$t); 
}); 
+0

Je ne sais pas pourquoi, mais que cela fonctionne: \t .getJSON $ (jsonFileUrl, fonction (réponse) { \t alerte ("données". + response.feed.entry [0] .media $ group.media $ Description $ t); }); –

+0

je n'avais pas aller assez profondément dans le JSON, en particulier, j'oubliais le t $. En outre, pour une raison quelconque les premières fois que je l'ai essayé, il ne me semble pas que l'utilisation de ces s '$. Maintenant, tout est bon et il fonctionne comme je veux. –

Questions connexes