siobhyb Posted March 6, 2011 Share Posted March 6, 2011 Hi, I'm working with the YouTube API to echo a feed based on a user's query. My current code is below. With this code, a whole list of videos is retrieved. However, in order to present the feed as I wish to... I need to return each video in the feed individually. I am unsure how to do this and any advice would be really appreciated. $feedURL = "http://gdata.youtube.com/feeds/api/videos/-/$youtubeQuery?orderby=viewCount&max-results=10"; // read feed into SimpleXML object $sxml = simplexml_load_file($feedURL); // iterate over entries in resultset // print each entry's details foreach ($sxml->entry as $entry) { // get nodes in media: namespace for media information $media = $entry->children('http://search.yahoo.com/mrss/'); // get video player URL $attrs = $media->group->player->attributes(); $watch = $attrs['url']; // get video thumbnail $attrs = $media->group->thumbnail[0]->attributes(); $thumbnail = $attrs['url']; // get <yt:duration> node for video length $yt = $media->children('http://gdata.youtube.com/schemas/2007'); $attrs = $yt->duration->attributes(); $length = $attrs['seconds']; // get video title $title = $media->group->title; // get <gd:rating> node for video ratings $gd = $entry->children('http://schemas.google.com/g/2005'); if ($gd->rating) { $attrs = $gd->rating->attributes(); $rating = $attrs['average']; } else { $rating = 0; } } ?> Link to comment https://forums.phpfreaks.com/topic/229781-working-with-the-youtube-api/ Share on other sites More sharing options...
gerkintrigg Posted March 6, 2011 Share Posted March 6, 2011 Im not sure about the output from the feedURL variable (and I'm on my iPhone now so I can't test it) but if you could use echo "<pre>".file_get_contents($feedURL)."</pre>" That would at least tell you what you're dealing with. You may have nested arrays which you can then deal with easily. Link to comment https://forums.phpfreaks.com/topic/229781-working-with-the-youtube-api/#findComment-1183632 Share on other sites More sharing options...
siobhyb Posted March 9, 2011 Author Share Posted March 9, 2011 Hi, I'm still a bit stuck with this. I've got the original code... $feedURL = "http://gdata.youtube.com/feeds/api/videos/-/royalwedding?orderby=viewCount&max-results=10"; // read feed into SimpleXML object $sxml = simplexml_load_file($feedURL); // iterate over entries in resultset // print each entry's details foreach ($sxml->entry as $entry) { // get nodes in media: namespace for media information $media = $entry->children('http://search.yahoo.com/mrss/'); // get video player URL $attrs = $media->group->player->attributes(); $watch = $attrs['url']; // get video thumbnail $attrs = $media->group->thumbnail[0]->attributes(); $thumbnail = $attrs['url']; // get <yt:duration> node for video length $yt = $media->children('http://gdata.youtube.com/schemas/2007'); $attrs = $yt->duration->attributes(); $length = $attrs['seconds']; // get video title $title = $media->group->title; // get <gd:rating> node for video ratings $gd = $entry->children('http://schemas.google.com/g/2005'); if ($gd->rating) { $attrs = $gd->rating->attributes(); $rating = $attrs['average']; } else { $rating = 0; } If I echo the following code... // print record echo "<div class=fvid><a href=\"{$watch}\"><img src=\"$thumbnail\"/></a></div>"; echo "<ul class='vidselector'><li><a href=\"{$watch}\">{$media->group->title}</span></a></li></ul>"; Then the last video in the feed in printed out. If I put the same code in the "For" loop then all the videos in the feed are printed out. I want to find a way of choosing which videos in the feed I want to display. For example, maybe just the third, fourth and sixth. I don't know how to begin doing this. Any advice would be really appreciated. Thank you. Link to comment https://forums.phpfreaks.com/topic/229781-working-with-the-youtube-api/#findComment-1184969 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.