Kontakt aufnehmen

YouTube API – Videos suchen mit PHP

YouTube API

YouTube API

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&ouml;ffentlicht: 
      <?PHP echo $video->published; ?>
    </p>
    <p>Ge&auml;ndert: 
      <?PHP echo $video->updated; ?>
    </p>
    <p>Autor: 
      <?PHP echo $video->author->name; ?>
    </p>
    <?PHP
  }
?>

Verwandte Themen in anderen Blogs

Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.

Kommentare

Mißfeldt schrieb am 08.04.2010:

Super Hinweis, Danke. Ich werde das bei Gelegenheit mal testen.

3 lesenswerte Blogs &#8211; und 3 Zugaben - tagSeoBlog schrieb am 12.06.2010:

[...] Stefan Wienstr&#246;her ist ja eigentlich ein alter Bloghase. Er hat den Blog auf SteviesWebsite im Januar 2009 gestartet &#8211; genau wie ich :-) . Optisch ist der Blog eher defensiv aufgestellt, aber was ich bei SteviesWebsite wirklich klasse finde ist der Informationsgehalt. Er bloggt wirklich hilfreiche Artikel mit h&#228;ufig konkrete Code-Snippets (zum Beispiel: &#8220;YouTube API – Videos suchen mit PHP&#8220;). [...]

Link zum ersten Youtube Ergebnis - php.de schrieb am 10.08.2010:

[...] YouTube API &#8211; Videos suchen mit PHP Wie kommst du an den MP3-Link? __________________ PHP-Code: echo&nbsp;&quot;Hello&nbsp;World&quot;;&nbsp; [...]

Tobias Laubscher schrieb am 07.10.2011:

Ich verwende deinen Code gerade auf einer Testseite von mir. Vielen Dank, der Code funktioniert so Weit recht gut. Allerdings wäre ein zusätzlicher parameter recht nützlich und zwar: restrictions=DE Dies verhindert das finden von Videos welche in Deutschland nicht abgespielt werden können. Jedoch taucht bei mir ein Problem auf. Innerhalb deiner Funktion habe ich mir mal den Link ausgeben lassen: http://gdata.youtube.com/feeds/api/videos?q=Sunshine+David+Guetta&amp;orderby=relevance&amp;start-index=1&amp;max-results=2&amp;v=2&amp;restriction=DE Dieser liefert mir wie gewünscht zwei Ergebnisse. Die gleiche suche bei Youtube direkt liefert jedoch andere Ergebnisse. Vgl.: https://www.youtube.com/results?search_query=David+Guetta+Sunshine&amp;aq=f&amp;orderby=relevance&amp;start-index=1&amp;max-results=2&amp;v=2&amp;restriction=DE Prinzipiell wäre das nicht schlimm. Aber gerade für den Fall, dass wie hier das erste Ergebniss der API einen Fake liefert ist das doch ziemlich ärgerlich

Maxi schrieb am 25.12.2011:

Hey, funktioniert denn bei euch restriction? Bei mir kommen trotzdem Videos, die in DE nicht verfügbar sind? Grüße Maximilian

Stefan Wienströer schrieb am 25.12.2011:

Hi, ich glaube die kann man nicht auslesen. In der normalen YouTube-Suche stößt du ja auch auf die. Gruß Stefan

Sawascwoolf schrieb am 25.12.2011:

Ich habe eine Möglichkeit gefunden nicht abspielbare Videos herauszufiltern. Ich überprüfe nach dem Suchvorgang das Video ob es abspielbar ist was ich in eine rekursive Funktion gepackt habe, welche mir das erste abspielbare Video liefert. Ich reiche die Funktion noch nach sobald ich wieder am Pc bin. Frohe Weihnachten

Sawascwoolf schrieb am 14.01.2012:

Hallo Leute, Tut mir Leid, dass es so lange gedauert hat bis ich mich gemeldet habe. Aber hier wie versprochen die Möglichkeit die Videos zu überprüfen. Vorrausgesetzt der Server steht ebenfalls in Deutschland ;) Ich habe die hier angebotene Funktion so verändert, das ich ein einzelnes abspielbares Video als Ergebnis erhalte. Und hier der Code: http://pastebin.de/22285

Mike schrieb am 07.01.2013:

Hi, ich suche nach einer solchen möglichkeit das ich alles videos eines youtube benutzerkontos auslese und diese dann auf meiner homepage anzeigen lasse. wie kann ich das verwirklichen??? ein rss feed gibt es ja wo es meine ganzen videos auflistet, nur wie lese ich diesen aus? wäre dankebar wenn ihr mir weiterhelfen könnt... gruß mike

David schrieb am 16.08.2015:

Leider hat youtube die api im april diesen jahre abgeschaltet ein tut für die neue API wäre super (;

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Cookie-Einstellungen

Helfen Sie dabei, uns noch besser zu machen. Wir nutzen Cookies und ähnliche Technologien, um die Website auf Ihre Bedürfnisse anzupassen. Zur Datenschutzerklärung

Auswahl speichern