Vous êtes ici Codes PHP et MySQL > Vidéos > Récupérer les informations d'une vidéos Youtube,...

 

Récupérer les informations d'une vidéos Youtube, dailymotion, vimeo ou google vidéo

Cette fonction analyse l'url donné en argument et renvoi un tableau contenant les informations suivante à propos de la vidéo :
- id
- type (youtube, google, vimeo, dailymotion)
- titre
- description
- img
- code (code HTML embed)

Renvoi false si le "type" de vidéo n'a pas été détecté.
 
mercier133
Site de l'auteur voir
[18] sources en PHP voir
Code vu 6384 fois
Enregistré le 12 Oct 2010
  • Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute Récupérer les informations d'une vidéos Youtube, dailymotion, vimeo ou google vidéo
  • Partage ce code sur Facebook
 
 
 
 

Code Source


01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
 
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Récupérer les informations d'une vidéos Youtube,...       */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts607-PHP.htm              */
/* Auteur         : mercier133                                                */
/* Date édition   : 12 Oct 2010                                               */
/* Website auteur : http://www.servicesgratis.net                             */
/*                                                                            */
/******************************************************************************/
 

function getVideoInfo($url){
    $type "";
    $id = -1;
    $titre "no title";
    $description "no description";
    $code "no code";
    $img "no image";
    //Détermination du "type" de vidéo : 
    if(eregi("youtube",$url))            $type="youtube";
    else if(eregi("dailymotion",$url))    $type="dailymotion";
    else if(eregi("google",$url))        $type="google";
    else if(eregi("vimeo",$url))        $type="vimeo";
    else return false;
    
    //Détermination de l'"ID" de la vidéo :
    if($type=="youtube"){
        $debut_id explode("v=",$url,2);
        $id_et_fin_url explode("&",$debut_id[1],2);
        $id $id_et_fin_url[0];
    }
    else if($type=="dailymotion"){
        $debut_id explode("/video/",$url,2);
        $id_et_fin_url explode("_",$debut_id[1],2);
        $id $id_et_fin_url[0];
    }
    else if($type=="google"){
        $debut_id =  explode("docid=",$url,2);
        $id_et_fin_url explode("&",$debut_id[1],2);
        $id $id_et_fin_url[0];
    }
    else if($type=="vimeo"){
        $l_ideregi("([0-9]+)$",$url,$lid);
        $id $lid[0];
    }
    
    //Analyse et stockage des informations de la vidéo
    if($type=="youtube"){
        $xml = @file_get_contents("http://gdata.youtube.com/feeds/api/videos/".
$id);
        //titre
        preg_match('#<title(.*?)>(.*)<\/title>#is',$xml,$resultTitre);
        $titre $resultTitre[count($resultTitre)-1];
        //description
        preg_match('#<content(.*?)>(.*)<\/content>#is',$xml,$resultDescription);
        $description $resultDescription[count($result)-1];
        //Image
        $img "http://img.youtube.com/vi/".$id."/1.jpg";
        //Code HTML
        $code '<object width="425" height="355"><param name="movie"' .
' value="http://www.youtube.com/v/'.$id.
'&hl=fr"></param><param name="wmode" value="transparent"></param><embed' .
' src="http://www.youtube.com/v/'.$id.
'&hl=fr" type="application/x-shockwave-flash" wmode="transparent" width="425"' .
' height="355"></embed></object>';
    }
    else if ($type=="dailymotion"){
        $tags get_meta_tags("http://www.dailymotion.com/video/".$id);
        //titre
        $titre htmlspecialchars(trim(str_replace("Dailymotion -","",$tags[
"title"])));
        //description
        $description $tags["description"];
        //image 
        $img "http://www.dailymotion.com/thumbnail/160x120/video/".$id;
        // code HTML
        $code '<div><object width="420" height="357"><param name="movie"' .
' value="http://www.dailymotion.com/swf/'.$id.
'&v3=1&related=1"></param><param name="allowFullScreen"' .
' value="true"></param><param name="allowScriptAccess" value="always"></param>' .
'<embed src="http://www.dailymotion.com/swf/'.$id.
'&v3=1&related=1" type="application/x-shockwave-flash" width="420"' .
' height="357" allowFullScreen="true" allowScriptAccess="always"></embed></obj' .
'ect></div>';
    }
    else if ($type=="google"){
        $xml_string = @file_get_contents(
"http://video.google.com/videofeed?docid=".$id);
        //titre
        $xml_title_debut explode("<title>",$xml_string,2);
        $xml_title_fin explode("</title>",$xml_title_debut[1],2);
        $titre $xml_title_fin[0];
        //description
        $xml_description_debut explode("<description>",$xml_string,2);
        $xml_description_fin explode("</description>",$xml_description_debut[1
],2);
        $description $xml_description_fin[0];
        //image
        $xml_image_debut explode('&lt;img src="',$xml_string,2);
        $xml_image_fin explode('" width="',$xml_image_debut[1],2);
        $img $xml_image_fin[0];
        //code HTML 
        $code '<embed style="width:400px; height:326px;" id="VideoPlayback"' .
' type="application/x-shockwave-flash" src="http://video.google.com/googleplay' .
'er.swf?docId='.$id.'&hl=fr" flashvars=""> </embed>';
    }
    else if ($type=="vimeo"){
        $xml_string = @file_get_contents("http://vimeo.com/api/clip/".$id.".xml"
);
        //titre
        $xml_title_debut explode("<title>",$xml_string,2);
        $xml_title_fin explode("</title>",$xml_title_debut[1],2);
        $titre $xml_title_fin[0];
        //description
        $xml_description_debut explode("<caption>",$xml_string,2);
        $xml_description_fin explode("</caption>",$xml_description_debut[1],2)
;
        $description $xml_description_fin[0];
        //image
        $xml_image_debut explode("<thumbnail_large>",$xml_string,2);
        $xml_image_fin explode("</thumbnail_large>",$xml_image_debut[1],2);
        $img $xml_image_fin[0];
        //code HTML
        $xml_code = @file_get_contents(
"http://vimeo.com/api/oembed.xml?url=http%3A//vimeo.com/".$id);
        $xml_code_debut explode("<html>",$xml_code,2);
        $xml_code_fin explode("</html>",$xml_code_debut[1],2);
        $code str_replace("<![CDATA[","",str_replace("]]>","",$xml_code_fin[0]
));
    }
    
    return array("id"=>$id,"type"=>$type,"titre"=>$titre,"description"=>
$description,"img"=>$img,"code"=>$code);
}
?>

 

Fonctions du code

: Recherche par expression rationnelle insensible à la casse - (PHP 4, PHP 5)
: Coupe une chaîne en segments - (PHP 4, PHP 5)
: Lit tout un fichier dans une chaîne - (PHP 4 >= 4.3.0, PHP 5)
: Expression rationnelle standard - (PHP 4, PHP 5)
: Compte le nombre d'éléments d'un tableau ou le nombre de propriétés...
: Extrait toutes les balises méta d'un fichier HTML - (PHP 4, PHP 5)
: Convertit les caractères spéciaux en entités HTML - (PHP 4, PHP 5)
: Remplace toutes les occurrences dans une chaîne - (PHP 4, PHP 5)
: - (PHP 4, PHP 5)
: Crée un tableau - (PHP 4, PHP 5)
Commentaires
Utile mais par contre bcp d'erreurs !
ligne 53 :
    else if($type=="vimeo")){
une ) en trop
ligne 38 :
    if($type=="youtube")){
Même chose
 $titre $resultTitre[count($result)-1];
=>
 $titre $resultTitre[count($resultTitre)-1];
 $description $resultDescription[count($result)-1];
=>
$description $resultDescription[count($resultDescription)-1];
 $description $metatags["description"];
=>
$description $tags["description"];
Je n'ai pas encore fait le tour des erreurs mais en voilà déjà 5.
 
On pourrait également noter que l'utilisation des fonctions de recherche par expression rationnelle de type ereg() est dépréciée :)
 

Avec un hébergement gratuit sur free.fr, on ne peut pas utiliser l'API de Vimeo,  car la fonction du php file_get_contents semble être désactivée et provoque une erreur comme ceci :

Fatal error: file_get_contents(http://vimeo.com/api/v2/video/3823051.xml) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden

 
Merci !
J'ai corrigé les quelques erreurs mentionnées ...
(Par contre je n'ai pas encore changé ereg par preg_match [que je ne connais pas très bien...])
 
bonjour, il aurait été bien d'apprendre aux débutants a utiliser cette fonction.

je ne sais pas la faire fonctionner. merci s'il vous plait de me donner les directives.
 
Bonjour, s'il vous plait pouvez-vous nous expliquer la marche a suivre pour que ça fonctionne? un petit exemple serait bienvenu.

Merci infiniment d'avance.
 
Bonjour voici un petit exemple basique d'utilisation de la fonction :
<?php
$urlVideo = "http://URLdeLAVideoEnQuestion/";
$infosVideo = getVideoInfo($urlVideo);
echo 'ID : '.$infosVideo["id"].'</br>';
echo 'Titre : '.$infosVideo["titre"].'</br>';
echo 'Type :'.$infosVideo["type"].'</br>';
echo 'Description : '.$infosVideo["description"].'<br />';
echo 'Image de la vidéo : <img alt="Image de la video" src="'.$infosVideo["img"].'"/> <br />';
echo 'Vidéos : '.$infosVideo["code"].'<br />';
?>
J'espère que cela répondra à votre question ;-)
 
Pour le problème du file_get_contents chez Free il y a pas vraiment de solution à part changer d'hébergeur (ou réclamer chez Free mais il y a peu de chance qu'ils activent la fonction...)
 
  merci infiniment c'est tres gentil
 
Ce code est excellent et fonctionne parfaitement, je vous en remercie.
J'ai cependant une petite question correspondant aux méta données des vidéos. Avez-vous les autres méta données que contiennent les vidéos ? J'imagine qu'il doit y en avoir d'autre que les génériques ?
En fait je cherche un indice me permettant de savoir si la vidéo a été supprimer de dailymotion et donc de mon blog afin de ne pas avoir des playres sans vidéos.
Vous remerciant par avance.
 
Une vidéo supprimé te renverra une erreur 404 lorsque tu voudra charger le fichier
$url = http://www.dailymotion.com/video/ID_DE_TA_VIDEO
J'ai trouvé ceci :
<?php
if (@fclose(@fopen($url, "r"))) {
     print("L'URL existe.");
} else {
     print("L'URL n'existe pas.");
}
?>

Tu peux par exemple remplacer
print("L'URL n'existe pas.");
par un
@mail("ton adresse","Erreur video detectée","La vidéo ".$url." n'existe sans doute plus");
Regarde ceci : http://forum.webrankinfo.com/detection-site-inexistant-erreur-404-php-t6312.html
ou ceci http://robert.arlesnet.com/2008/01/20/betwittered-php-and-file_get_contents
ou ... (une petite recherche sur la détection des erreurs 404 en php te donnera surement + d'infos)
 
Bonjour a tous,
Désolé de répondre tardivement a votre dernier message, mais je souhaitais vous remercier pour vos éléments de réponses. Je n'avais pas pensé au 404... Cependant, jute pour ma culture, il y a une redirection établie sur certaines viédo pour les lire seulement sur dailymotion. Est ce une meta ou pas qui est indiqué pour effctuer une redirection ?
Merci par avance,
 
Je n'en ai pas la moindre idée ... Si tu as une vidéo où c'est le cas il te suffit de regarder le code source de la page de la vidéo en question et le comparer au code source d'une autre vidéo «partageable»
 
Note : Je viens de constater que dailymotion propose un flux xml (et un flux json) permettant d'extraire les infos plus rapidement, il s'agit de cette adresse :
http://www.dailymotion.com/services/oembed?url=URL_DE_LA_VIDEO&format=xml
Il serait donc judicieux de modifier le code pour en tenir compte ! (mais je n'ai pas le temps de le faire maintenant ... )
 
Bonjour et merci pour ce script!
J'utilisais ce script et il marchait très bien.
Par contre, depuis ce matin, il ne récupère plus l'image ni le titre ni ladescription des vidéos depuis VIMEO.
Est ce que quelqu'un peut me confirmer ce changement de comportement?
Merci beaucoup.
 
bonjour, pas mal la function mais je ferais plutot une class...
et aussi utliser la fonction simplexml_load_file()  au lieu de file_get_contents()
un bout de la modif pour dailymotion :
$url_video = "http://www.dailymotion.com/video/".$id;
$xml = simplexml_load_file('http://www.dailymotion.com/services/oembed?url='.$url_video.'&format=xml');
$description = get_meta_tags($url_video);
$titre = $xml->title;
$description = $description["description"];
$imageLarge = $xml->thumbnail_url;
 
la description de la video youtube ne saffiche pas :( , sinon tres bonne fonction !
 
Woooo..... sa viens de me sauver des heure de travail..... http://www.phpsources.org c'est rendu mon meilleur ami :) ..
merci 1000 fois
 
Daimymotion a récement changé le fonctionnement de récupération des vignettes des vidéos.
Obligé de passer par l'API avec un peu de Json, l'url http direct de l'image avec l'ID de la vidéo concaténé ne fonctionne plus.
Avec ça, ça marche :
        //image
        $json_img_api_url = "https://api.dailymotion.com/video/".$id."?fields=thumbnail_medium_url";
        $json = file_get_contents($json_img_api_url,0,null,null);
        $json_output = json_decode($json);
        $img = $json_output->thumbnail_medium_url;
 
bonjour, je ne comprend pas comment utilisé la fonction ! est ce en fesant un simple:
 
echo getVideoInfo();
 
???
 
Bonjour,
Merci et bravo pour toutes ces astuces. En tant que novice absolu, j'espère pouvoir trouver un nouveau code propre qui prennent en compte toutes les remarques ci-dessus.

Pour ma part, je cherche à récuperer facilement et rapidement les informations suivantes sur les vidéos:
Titre
Date de publication
Lien html
Tags
Nombre de vues
Nombre de commentaires
Nombre de favoris
Nombre de 'likes' (Facebook, Google plus et twitter)

Quelqu'un peut m'aider ?
Merci d'avance !
 
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 
Librairie PHP

Connexion

 
 

Vidéos

 
 

PHP

 
 
 
 
    Offres d'emploi

Plus de 500 offres d'emploi PHP/MySQL

Offres d'emploi
 
    Editeur PHP
 
        Publicité