"
Pour envoyer directement des vidéos sur un compte Youtube, l’API Youtube est disponible.
Premièrement, il vous faut télécharger le package ZendPHP
Ensuite, le principe est simple.
- Vous demandez un code (token) à Youtube
- Puis, vous envoyer la vidéo avec ce token
- Vous vérifiez que la vidéo est bien passée
1 – Demander un Token à Youtube
require_once ‘Zend/Gdata/YouTube.php’;
require_once ‘Zend/Gdata/ClientLogin.php’;
// configuration et identifiants
$authenticationURL = $GLOBALS["googleyoutube_authenticationURL"];
$developerKey = $GLOBALS["googleyoutube_developerKey"];
$applicationId = $GLOBALS["googleyoutube_applicationId"];
$clientId = $GLOBALS["googleyoutube_clientId"];
$username = $GLOBALS["googleyoutube_username"];
$password = $GLOBALS["googleyoutube_password"];
// authentification via la méthode HTTP
ob_start();
$httpClient = @Zend_Gdata_ClientLogin::getHttpClient(
$username,$password,’youtube’,null,’MonSiteWeb’,null,null,$authenticationURL
);
$yt = new Zend_Gdata_YouTube($httpClient, $applicationId, $clientId, $developerKey);
$connexion = ob_get_contents();
ob_end_clean();
// création d’un nouvel objet video
$myVideoEntry = new Zend_Gdata_YouTube_VideoEntry();
// on donne des informations sur notre vidéo
$myVideoEntry->setVideoTitle($titre);
$myVideoEntry->setVideoDescription($description);
$myVideoEntry->setVideoCategory(‘Travel’); // La catégorie doit correspondre a une catégorie YouTube
$myVideoEntry->SetVideoTags($tags);
$myVideoEntry->SetVideoDeveloperTags(array(‘votrenom’));
// Optionally set the video’s location
if(is_numeric($geolat) && is_numeric($geolong)){
$yt->registerPackage(‘Zend_Gdata_Geo’);
$yt->registerPackage(‘Zend_Gdata_Geo_Extension’);
$where = $yt->newGeoRssWhere();
$position = $yt->newGmlPos($geolat.’ ‘.$geolong);
$where->point = $yt->newGmlPoint($position);
$myVideoEntry->setWhere($where);
}
//V-C. Récupération du token****************************************************
// Récupération du token
$tokenHandlerUrl = ‘http://gdata.youtube.com/action/GetUploadToken’;
$tokenArray = $yt->getFormUploadToken($myVideoEntry, $tokenHandlerUrl);
$tokenValue = $tokenArray['token'];
$postUrl = $tokenArray['url'];
//V-D. Envoi de la vidéo******************************************************
// Page sur laquelle sera renvoyé l’utilisateur apres la validation
// du formulaire (URL de retour)
$urlyoutube =”";
// Affichage du formulaire
$form = ‘<form action=”‘. htmlspecialchars($postUrl, ENT_QUOTES) .’?&nexturl=’
. urlencode($nextUrl) . ‘” method=”post” enctype=”multipart/form-data”>
Fichier vidéo : <input name=”file” type=”file”/>
<input name=”token” type=”hidden” value=”‘. $tokenValue .’”/>
<input value=”Envoyer la vidéo” type=”submit” />
</form>’;
echo $form;
"
require_once ‘Zend/Gdata/YouTube.php’;
require_once ‘Zend/Gdata/ClientLogin.php’;if(isset($_GET['status']) AND $_GET['status']==200) {
// configuration et identifiants
$authenticationURL = $GLOBALS["googleyoutube_authenticationURL"]; $developerKey = $GLOBALS["googleyoutube_developerKey"]; $applicationId = $GLOBALS["googleyoutube_applicationId"];
$clientId = $GLOBALS["googleyoutube_clientId"];
$username = $GLOBALS["googleyoutube_username"];
$password = $GLOBALS["googleyoutube_password"];
// authentification via la méthode HTTP
$httpClient = Zend_Gdata_ClientLogin::getHttpClient( $username,$password,’youtube’,null,’MonSiteWeb’,null,null,$authenticationURL );
$yt = new Zend_Gdata_YouTube($httpClient, $applicationId, $clientId, $developerKey);
$videoId = $_GET['token'];
$location = ‘http://gdata.youtube.com/feeds/api/users/’.$username.’/uploads/’ . $videoId;
$message=”;
$retour=1;
require_once ‘Zend/Gdata/YouTube.php’;
$yt = new Zend_Gdata_YouTube();
$myVideoEntry = $yt->getVideoEntry(null, $location);
$videoControl = $myVideoEntry->getControl();
$videoState = $myVideoEntry->getVideoState();
if($videoControl==null) {
$message = “Votre vidéo a été enregistrée avec succes”;
}
elseif($videoState) {
$videoStateName = $videoState->getName();
switch($videoStateName) {
case ‘rejected’ :
if($videoState->getText()==’Duplicate video’) {
$message = “Cette vidéo a déja été envoyée. Merci de choisir
un autre fichier.”;
$retour=2;
} else {
$message = “Votre vidéo n’a pas été acceptée car elle ne
respecte pas les conditions d’utilisation de YouTube.
Peut-etre est-elle trop longue ou ne respecte pas certains
droits d’auteur.”;
$retour=3;
}
break;
case ‘failed’ :
if($videoState->getText()==’Unable to convert video file’) {
$message = “Echec lors de l’envoi : Impossible de convertir
le fichier vidéo. Vérifier qu’il s’agit bien d’un fichier
vidéo.”;
$retour=4;
}
else {
$message = “Votre vidéo n’a pas été acceptée car elle ne
respecte pas les conditions d’utilisation de YouTube.
Peut-etre est-elle trop longue ou ne respecte pas certains
droits d’auteur.”;
$retour=5;
}
break;
case ‘processing’ : $message = “Votre vidéo a bien été envoyée. Elle
est désormais en cours de traitement et sera
publiée d’ici quelques heures.”;
$retour=10;
break;
default: $message = “Votre vidéo a bien été envoyée. Elle est
désormais en cours de traitement et sera publiée d’ici
quelques heures.”;
$retour=10;
}
}
else {
$message = “Votre vidéo a bien été envoyée. Elle est désormais en cours
de traitement et sera publiée d’ici quelques heures.”;
$retour=10;
}
}
else {
switch($upload_code) {
case ‘DUPLICATE’ :
$message = “Cette vidéo a déja été envoyée. Merci de choisir un autre fichier.”;
break;
case ‘FILE_MISSING’ :
$message = “Veuillez sélectionner un fichier vidéo”;
break;
default :
$message = “Une erreur s’est produite lors de l’upload du fichier.
Merci de contacter le webmaster si ce probleme persiste”;
}}