# YouTube Videoinformationen per PHP auslesen



## RaTm (2. Juli 2007)

Moin Moin!
Ich würde gerne wissen, ob es möglich ist, die Videoinformationen eines YouTube-Videos - mich interessiert da im Moment eigentlich nur die Länge - automatisch per Script auszulesen?

- Vielen Dank!

Tüs

Rage


----------



## saftmeister (2. Juli 2007)

Du könntest den Artikel auf heise.de interessant finden: http://www.heise.de/open/news/meldung/91967


----------



## unknown_fool (2. Juli 2007)

Die Länge steht ja immer im HTML-Dokument an derselben Stelle... nun musste nur noch mit file_get_contents (oder fopen) und explode, preg_split o.ä. arbeiten.


----------



## RaTm (3. Juli 2007)

Hallo!

Ich möchte eigentlich nur irgendwie die Länge eines Videos herausfinden...
Quasie die Länge die auch zentriert im Flashplayer steht in einer Variable...!

Tüs

Rage


----------



## ByeBye 182971 (3. Juli 2007)

hm müsste per curl z.b. gehen aber das würd recht kompliziert sein weil du dann noch die time rausfiltern musst.


----------



## RaTm (3. Juli 2007)

hmmm...
habe überhaupt keine Ahnung, wie ich aus dem Flashapplet die Zeit rausgefiltert kriege... 
Irgendwie sollte das doch möglich sein...

Tüs


----------



## unknown_fool (3. Juli 2007)

Habs doch in Post #3 beschrieben...  Such nach der Länge im Quelltext (am besten mehrere vergleichen), dann weißt du wo die Länge steht und kannst sie mit PHP rausfiltern.


----------



## Iches (3. Juli 2007)

Ich denke sein Problem ist, dass er den normalen Link zu einen YouTube Video hat, und dabei steht die Zeitangabe nicht im HTML sondern nur in der Flashdatei.


----------



## unknown_fool (3. Juli 2007)

> und dabei steht die Zeitangabe nicht im HTML sondern nur in der Flashdatei.


Die innerhalb der HTML-Datei mit dem Parameter _&l=56..._ (z.B.) verlinkt ist, insofern müsste es doch gehen, oder?

Hab ich vllt auch falsch verstanden.


----------



## RaTm (3. Juli 2007)

OK... ich habe das Problem wohl nicht ausreichend beschrieben...!
Ich habe eine URL zu einem YouTube-Video - zum Beispiel diese hier: http://www.youtube.com/watch?v=zgKIE60BLZY .
Wie kriege ich dann an Hand der URL die dazugehörige Videolänge heraus?

Das ist die Frage 

Eine Beispiel-Applikation wäre Folgende:

Ein "Mouseover" über dem jeweiligen YouTube-Link - zum Beispiel in einem Forum - gibt gleich Auskunft über den Autor und die *Länge* des Filmchens.

Tüs

Kay


----------



## Iches (3. Juli 2007)

Du könntest den gen titel nehmen, den bei youtube suchen lassen, und somit die zeit heraus zubekommen, was meiner Meinung nach aber viel zu rechen intensiv ist.


----------



## saftmeister (3. Juli 2007)

Versuch mal das:


```
<?php
$yt_content = explode("\n", file_get_contents('http://www.youtube.com/watch?v=zgKIE60BLZY'));

foreach($yt_content as $line) {
    if(stristr($line, 'watch_fullscreen')) {
        // Zeile mit den Längeninfos gefunden
        preg_match('/.*l=(\d+?)\&.*/U', $line, $matches);
        echo "Das Video dauert " .floor($matches[1] / 60).':'.($matches[1] % 60)." Min";
    }
}
?>
```

Allerdings nimmt das Auslesen einige Zeit in anspruch...


----------



## unknown_fool (3. Juli 2007)

@saftmeister: Genau das meinte ich


----------



## onkelyves (3. Juli 2007)

Warum einfach, wenn's auch kompliziert geht! *LOL*

Youtube hat doch 'ne super API: http://www.youtube.com/dev_api_ref?m=youtube.videos.get_details

HTML-Code auslesen halte ich für keine gute Idee, weil wenn die mal die Seiten umbauen, funktioniert deine Page nicht mehr. Und das auslesen dauert ja auch lange.


----------



## saftmeister (4. Juli 2007)

Hab ich gar nicht gewusst, das die sowas anbieten. Noja, dann is das ja überhaupt kein Thema, einfach SimpleXML oder DOM verwenden, schwupdiwupp is das ausgelesen:


```
$develid = "[your_developer_id]";
$video = "zgKIE60BLZY";

$url = "http://www.youtube.com/api2_rest?method=youtube.videos.get_details&dev_id=".$develid."&video_id=".$video;

$xml = new SimpleXMLElement(file_get_contents($url));

print($xml->video_details->length_seconds);
```


----------



## RaTm (4. Juli 2007)

Hallo!

Ich habe von SimpleXML und DOM nicht so ganz die Ahnung und würde lieber bei der PHP-Alternative bleiben, bei der man einfach bestimmte Teile des Quellcodes portiert... 
Bräuchte noch den Titel in einer Variable und den Autor...

Ich würde auch gerne wissen, wie ich die ID (in diesem Fall "zgKIE60BLZY") aus der URL übernehmen kann.

Also ich habe die Datei youtube-videoinfo.php auf meinem Webspace http://www.zum-beispiel.de.

(http://www.zum-beispiel.de/youtube-videoinfo.php)

Wie kriege ich jetzt die ID aus der Adresse http://www.youtube.com/watch?v=zgKIE60BLZ?
Wenn man das Video direkt geöffnet hätte (über die Browser-URL-Leiste), könnte man ja einfach $_GET['v'] benutzen... aber wenn ich die Adresse irgendwo im Quelltext deklariere, was dann?

Ich muss auch dazu sagen, dass ich seit nem guten Jahr nichts mehr mit PHP gemacht habe, da ich als Rucksacktourist unterwegs war...


Ich würde auch gerne wissen, in wie fern man die Videos von YouTube benutzen kann - ich  meine die bieten ja auch ein freies Developer-Kit an.

Wäre es rechtlich gesehen möglich, eine Seite zu bauen, auf der sich Leute *- ausschließlich *-ihre lieblings YouTube-Videos mitteilen und man diese dann direkt auf der Seite ansehen kann...?!

Ich sage schonmal vielen Dank für eure Hilfe 

Tüs

Rage


----------



## mewX (4. Juli 2007)

Z.B. so...

```
$url = "http://www.youtube.com/watch?v=zgKIE60BLZ";
$tmp = explode("=", $url);
$video_id = $tmp[1];
// wobei das nicht funktioniert, wenn noch andere parameter davor übergebn wurden, also http://www.youtube.com/watch?bla=bla&v=zgKIE60BLZ  ...
```


----------



## RaTm (4. Juli 2007)

Moin Moin!

Hab mich mal mit SimpleXML auseinander gesetzt und folgendes Script übernommen/nachgebaut:

<?php
$develid = "meine dev-id";
$video = "zgKIE60BLZY";

$url = "http://www.youtube.com/api2_rest?method=youtube.videos.get_details&dev_id=".$develid."&video_id=".$video;

$xml = new SimpleXMLElement(file_get_contents($url));

print($xml->video_details->length_seconds);  
?>

Bekomme dann beim Ausführen folgenden Fehler:

Fatal error: Cannot instantiate non-existent class: simplexmlelement in /var/www/web208/html/index.php on line 7

Ok... was habe ich falsch gemacht!?


----------



## Flex (4. Juli 2007)

Welche PHP Version ist bei dir im Einsatz? ([phpf]phpinfo[/phpf] kann dir da ggf. helfen)
SimpleXML ist erst ab Version 5 verfügbar.

Ansonsten ist es möglich, dass SimpleXML nicht mitkompiliert wurde. 
Dort kann dir ebenfalls o.g. Funktion helfen.


----------



## RaTm (5. Juli 2007)

Moin Moin!

Da liegt das Problem! Auf dem Server läuft Version 4.4.4.

Habe so eben eine Mail an meinen Webspace-Anbieter geschrieben, in der ich auf Umstellung auf Version 5.2 bitte.

Mal sehen ob das was wird...!

Gute Nacht

Rage


----------



## Flex (5. Juli 2007)

Alternativ kannst du auch die DOM XML Funktionen nutzen, die für PHP4 entwickelt wurde.


----------



## RaTm (5. Juli 2007)

Vielen Dank Felix!
Gibt es da irgendeinen simplen Include-Befehl?
So dass ich die Schnittstelle ohne Weiteres nutzen kann?

Gruß


----------



## RaTm (5. Juli 2007)

Hallo!

Mein Webspaceanbieter will PHP nicht updaten... Ich soll ein neues Domain-Paket kaufen... 
Hmmm... das ist blöd... hol mir eventuell wirklich wo anders Webspace... irgendeinen unkomplizierten Anbieter...!

Kann mir nochmal jemand sagen, wie ich DOM XML in meinen Scripts zum laufen kriege?

Tüs

Kay


----------



## saftmeister (5. Juli 2007)

Hier kannst du das nachlesen: http://www.tutorials.de/forum/php-t...infuehrung-xml-mittels-simplexml-und-dom.html


----------

