Die YouTube API baut hauptsächlich auf Feeds aus. Wir werden uns heute darum kümmern, ein Video mithilfe von PHP über die API zu finden.
Damit wir diese auch später verwenden können bauen wir eine schöne Funktion damit. Darin können wir natürlich den Suchbegriff eingeben. Weitere Parameter sind die Sortierung, der Start-Index und die Anzahl der Elemente.
Bedingung dafür, dass das ganze Funktioniert ist, dass man vom Webspace externe Dateien laden kann. Dieses ist aus Sicherheitsgründen bei manchen Webspace-Anbietern (standardmäßig) ausgeschaltet. Ich hab das ganze auf meinem Testsystem gemacht (deswegen kann ich euch auch keine Testseite zur Verfügung stellen).
Über simplexml_load_file laden wir uns das Feed (was wie wir wissen aus XML besteht) . Danach suchen wir uns da die videos raus und geben sie zurück. Das sieht dann so aus:
<?php function getYouTubeVideos($search,$orderby,$start,$count){ $search = urlencode($search); $orderby = urlencode($orderby); $xml = simplexml_load_file('http://gdata.youtube.com/feeds/api/videos?q='.$search.'&orderby='.$orderby.'&start-index='.$start.'&max-results='.$count.'&v=2'); foreach($xml->entry as $video){ $res[] = $video; } return $res; } ?>
Die einzelnen Videos bauen noch auf XML auf, so dass man dort die passenden Einträge auslesen muss. Am besten sieht man den Aufbau, wenn man folgende Schleife macht:
<?php foreach(getYouTubeVideos("Video","published",1,10) as $video){ print_r($video); } ?>
Die wichtigsten Einträge sind wohl der Titel und der Link zu YouTube. Ich habe außerdem noch den Autor, das Veröfftlichs- und Änderungsdatum ausgelesen. Das sieht dann so aus:
<?PHP foreach(getYouTubeVideos("Video","published",1,10) as $video){ ?> <h2> <a href="<?PHP echo $video->link['href']; ?>"> <?PHP echo $video->title; ?> </a> </h2> <p>Veröffentlicht: <?PHP echo $video->published; ?> </p> <p>Geändert: <?PHP echo $video->updated; ?> </p> <p>Autor: <?PHP echo $video->author->name; ?> </p> <?PHP } ?>






Super Hinweis, Danke. Ich werde das bei Gelegenheit mal testen.
Kommentar von Mißfeldt — 8. April 2010 @ 00:07