Page 1 sur 1

formulaire saisie url youtube

Posté : 18 févr. 2011, 11:56
par olivxii
bonjour, j'essaie de faire un formulaire de saisie d'url youtube afin de placer la video directement sur mon site avec l'url, mais j'ai une erreur :
Warning: file_get_contents(http://www.youtube.com/watch?v=uttrX1YZ63U) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found in /home/www/yout.php on line 31
1#L'adresse est invalide. Veuillez entrez uniquement l'URL de la page
(ex: http://www.youtube.com/watch?v=uttrX3YZ63W).#
le code :
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" >
</head>
<body>

<?php

        $lang['video']['0'] = '';
        $lang['video']['1'] = 'L\'adresse est invalide. Veuillez entrez uniquement l\'URL de la page<br />(ex: http://www.youtube.com/watch?v=uttrX3YZ63W).';
        $lang['video']['3'] = 'Un problème technique est survenu. Un administrateur a été averti et le problème devrait être résolu rapidement.';
        $lang['video']['4'] = 'Le propriétaire de cette vidéo n\'a pas souhaité qu\'elle puisse apparaître sur d\'autres sites.';

function video_getcode($url){
   
    $error_nb = 0;
    $code = '';
       
    if($url = parse_url($url)){
       
        $host = explode('.', $url['host']);
       
        switch($host[count($host) - 2].'.'.$host[count($host) - 1]){
           
            case 'youtube.com':
               
                if($html = file_get_contents($_POST['url'])){

                    $html = explode ('<input id="embed_code" name="embed_code" type="text" value="', $html);

                    if(isset($html[1])){
                       
                        $html = explode ('"', $html[1]);

                        $html = $html[0];
                       
                        if(strpos($html, '<object') !== false){
                           
                            $code = $html;
                           
                        }
                        else {
                            $error_nb = 4;
                        }
                    }
                    else {
                        $error_nb = 3;
                    }
                }
                else {
                    $error_nb = 1;
                }
               
                break;
           
            case 'dailymotion.com':
               
                break;
           
            default: $error_nb = 1;
        }
    }
    else {
        $error_nb = 1;
    }
   
    if($error_nb != 0){
        //WARN ADMINISTRATOR
    }
   
    return array('error_nb' => $error_nb, 'source' => $host[count($host) - 2], 'code' => $code);
}

//pour tester :
$_POST['url'] = 'http://www.youtube.com/watch?v=uttrX1YZ63U';

if(isset($_POST['url'])){
    $result = video_getcode($_POST['url']);
    echo $result['error_nb'].'#'.$lang['video'][$result['error_nb']].'#'.$result['code'];
}

?>
</body>
</html>

Re: formulaire saisie url youtube

Posté : 18 févr. 2011, 11:58
par xTG
Et si tu essayais avec une vidéo qui existe ?
Car normal sinon de tomber sur une erreur 404. ;)

Re: formulaire saisie url youtube

Posté : 18 févr. 2011, 12:00
par olivxii
j'ai essaye mais je n'est meme pas le formulaire pour entré l'url .

http://www.sharemovies.fr/yout.php

la ligne 31 : $html = explode ('<input id="embed_code" name="embed_code" type="text" value="', $html);

Re: formulaire saisie url youtube

Posté : 18 févr. 2011, 12:02
par xTG
Abérant comme réponse... As-tu regardé le code que tu n'as visiblement pas rédigé ?
Il y a pourtant un commentaire qui montre en tout point d'où provient l'erreur. ;)

Ensuite pour ton formulaire... Il serait bon de lire des cours sur le HTML, car ici on offre de l'aide pour les questions et les bugs, pas pour faire le code à votre place. :)

Re: formulaire saisie url youtube

Posté : 18 févr. 2011, 12:32
par stealth35
tu sais que t'as la fonction parse_url et parse_str qui existe :wink:

Re: formulaire saisie url youtube

Posté : 20 févr. 2011, 04:07
par olivxii
suite a mes erreurs, j'ai modifier un script, j'arrive a uploader un lien url youtube sur mon serveur, mais j'aimerais uploader la video car en fait je me retrouve uniquement avec le lien de l'url modifier et non la video.

ex video1 = 123 000 ko et en lien 123 ko

j'ai deux code php :

yt.php
<?php

function get_video_url_youtube($page)
{
	$url = $page.'&';
	$regex = '/v=(.+?)&+/';
	preg_match($regex, $url, $vid_code);
	$input = file_get_contents($page);
	$regex = '/&t=(.+?)&+/';
	preg_match($regex, $input, $vid_t);
	return 'http://www.youtube.com/watch?v='.$vid_code[1].'';
}
?>

<font color="grey" size="2px">v0.3.<font size="1px">5</font></font>
<font size="1px" color="grey" ><a href="http://www.sharemovies.fr/members/[var.user_name]"><font size="1px" color="#043779" "bold"><!--[var.user_name;ope=max:18;comm]--></font></a>


<center>
<img src="images/youtube.png" width="130" height="110"/>
<?php

if (!isset($_POST['lien'])) 
{
echo '
<form enctype="multipart/form-data"  method="POST"> <font color="grey" size="2px">
Lien de la video : <input type="text" name="lien" /><br /><br/>Entrez uniquement l\'url Youtube<br/><br/>
<font color="black">ex : <b>http://www.youtube.com/watch?v=vpML-eXgwBo</b></font><br/><br/>
Format de sortit : <input type="radio" name="format" value="flv" checked="checked" />FLV<input type="radio" name="format" value="mp4" />MP4<br /><br/>
Telecharger sur votre profil : <input type="radio" name="down" value="oui" checked="checked" />Oui <input type="radio" name="down" value="non" />Non<br /><br /><br/>
<input type="submit" value="GO" /></font>
</form> ';
}
else // Le formulaire est rempli
{
	// On recupere les variables
	$lien = $_POST['lien']; // Le lien de la video
	$down = $_POST['down']; // Si la vidéo est telecharger sur le serveur
	$format = $_POST['format']; // Format desire
	
	// On recupere les lien de la video
	$lien_yt_flv = get_video_url_youtube($lien); // La video en flv
	$lien_yt_mp4 = $lien_yt_flv.'&fmt=18'; // La video en mp4
	
	// Si on demande le telechargement de la video  On la copie sur le serveur
	if ($down == "oui")
	{
		if ($format == "flv") // Le format est en FLV
		{
		    
			$newname = 'uploads/avi/'.time().'.flv'; // On donne un nouveau nom et on ajoute l extention
			copy($lien_yt_flv, $newname);
			
		}
		else // Le format est en MP4
		{
		    
			$newname = 'uploads/avi/'.time().'.mp4'; // On donne un nouveau nom et on ajoute l extention
			copy($lien_yt_mp4, $newname);
		}
	}
	
	// Pour obtenir l id de la video
	$url = $lien.'&';
	$regex = '/v=(.+?)&+/';
	preg_match($regex, $url, $vid_code);
	//On affiche l'image
	
	echo '<br/><img src="http://i1.ytimg.com/vi/'.$vid_code[1].'/default.jpg" widht="130" heigth="97"><br /><br/>';
	        
	
	// On teste d abord si on a demande de copier la video sur notre serveur
	if ($down == "oui")
	{
		if ($format == "flv") // Le format est en FLV
		{
			echo '<a href ="'.$newname.'"><font color="grey" size="2px">Partager sur sharemovies</font></a><br /><br/>';
			echo '<a href ="http://www.youtube.com/watch?v='.$vid_code[1].'" target="_blank"><font color="grey" size="2px">Voir la video sur youtube</font></a><br /><br/>';
			
			
			echo '<a href ="#"><font color="grey" size="2px">Annuler la video</font></a>&nbsp;<font color="red" size="2px">(action definitive)<br /><br/></font>';
		}
		
	}
	

}


?>
lien.php
<?php

function get_video_url_youtube($page) 
{
	$url = $page.'&';
	$regex = '/v=(.+?)&+/';
	preg_match($regex, $url, $vid_code);
	$input = file_get_contents($page);
	$regex = '/&t=(.+?)&+/';
	preg_match($regex, $input, $vid_t);
	return 'http://www.youtube.com/watch?v='.$vid_code[1].'';
}

// récupère les variables
$id = $_GET['id'];
$type = $_GET['type'];

$lien = 'http://www.youtube.com/watch?v='.$id;

$lien_yt_flv = get_video_url_youtube($lien); // La vidéo en flv
$lien_yt_mp4 = $lien_yt_flv.'&fmt=18'; // La vidéo en mp4
	

if ($type == "flv") // On vérifie le type
{
	header("Location: $lien_yt_flv"); // Puis on redirege vers le lien de téléchargement
}
else
{
	header("Location: $lien_yt_mp4"); // idem en cas de mp4
}
?>
j'ai bien la video (lien modifier) uploader sur mon serveur ce qui veut dire qu'avec le lien plus le lecteur de youtube je peu la lire mais je voudrais que ce soit la video au complet et non le lien qui soit uploader.

merci

Re: formulaire saisie url youtube

Posté : 21 févr. 2011, 11:27
par stealth35
t'as pas vu mon message ?