API de developpement Dailymotion pour l'Upload de Vidéos
Voici un exemple d'intégration de l'API Dailymotion.
Cette API permet d'Uploader des Vidéos depuis votre propre site vers Dailymotion, via l'Uploader.
La liste de vos vidéos, ainsi que les informations concernant votre profil Dailymotion sont ensuite récupérées par des Flux RSS.
L'API en détails : http://www.dailymotion.com/api
Dans notre exemple, le flux RSS est récupéré, puis enregistré en base de donnée afin de s'en reservir au sein de notre CMS, mais on peut imaginer récupérer le flux et l'afficher directement.
L'Uploader Dailymotion est appellé dans une IFRAME, l'ID de l'Iframe vous permettra d'y Attribuer des styles CSS, poru lui donner une taille par exemple. (le code fourni par Dailymotion n'était pas tout à fait propre...).
La fonction affiche_player() génère le code du player Dailymotion, de manière "propre", valide W3C.
-- -- Structure de la table `stream_videos`
-- CREATE TABLE `stream_videos` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(100) NOT NULL,
`file_id` varchar(50) NOT NULL,
`author` varchar(50) NOT NULL,
`pub_date` varchar(100) NOT NULL,
`url` varchar(200) NOT NULL,
`obj_code` text NOT NULL,
`thumb` text NOT NULL,
`site` varchar(30) NOT NULL,
`sync_date` datetime NOT NULL,
`categorie` varchar(30) NOT NULL,
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ;
Notre Script nécessite MagPIE RSS pour Parser le Flux RSS : http://magpierss.sourceforge.net/
Voici le code du script :
ATTENTION : pensez à ajouter le code de connexion à votre base de donnée si vous voulez stocker le résultat, le code ci-dessous est extrait d'un module de notre CMS, il aura peut être besoin d'être completé pour fonctionner chez vous.
<?
$tablestreamvideos = 'stream_videos';
$pseudo_dailymotion = 'votre_pseudo';
// domaine qui sera enregistré en référence, pour retrtouver les vidéos dans la table
$site = 'dailymotion.com';
$feed = 'http://www.dailymotion.com/rss/'.$pseudo_dailymotion.'/1';
## FONCTIONNEMENT DU SCRIPT ########
/*
1 - on récupère le Flux Rss, on le parse avec MagPie
2 - Si l'array Magpie est bien généré, on lance le traitement
3 - Reset champ SYNC, avoir de faire le test en fin de traitement
4 - Test si vidéo Existe, et traitement en fonction (INSERT / UPDATE)
5 - En fin de traitement, on supprime les items dont le champ SYNC n'a pas bougé
*/
?>
<div>
<p>Liste des Vidéos de votre espace DailyMotion (Récupération automatique). Pseudo DailyMotion utilisé : <b><?=$pseudo_dailymotion?></b></p>
<?php
function affiche_player($id, $width, $height)
{
$player = '<object type="application/x-shockwave-flash" width="'.$width.'" height="'.$height.'" data="http://www.dailymotion.com/swf/'.$id.'">
<param name="movie" value="http://www.dailymotion.com/swf/'.$id.'"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowScriptAccess" value="always"></param>
</object>';
return $player;
}
// Affichage du Array Principal
$DM_galerie = array();
// Lecture du Flux #1
$rss = fetch_rss($feed);
// print_r($rss->items);
// $items = array_slice($rss->items, 0, 10);
if (is_array($rss->items))
{
// On vide la colonne sync_date
$sql_sync = 'UPDATE `'.$tablestreamvideos.'` SET `sync_date`="0000-00-00 00:00:00" WHERE `site`="'.$site.'"';
$req_sync = mysql_query($sql_sync);
// Boucle sur tous les éléments
foreach ($rss->items as $item)
{
$title = $item['title'];
$file_id = $item['dm']['id'];
$author = $item['dm']['author'];
$pub_date = $item['pubdate'];
$url = $item['guid'];
$obj_code = addslashes($item['media']['player']);
$thumb = addslashes($item['media']['thumbnail']);
$sync_date = now();
$postvars_stream = array('', $title, $file_id, $author, $pub_date, $url, $obj_code, $thumb, $site, $sync_date, $categorie);
$sql_test = 'SELECT `id` FROM `'.$tablestreamvideos.'` WHERE `file_id`="'.$file_id.'"';
$test_file_id = mysql_evaluate($sql_test);
if (is_numeric($test_file_id))
{
// Mise à jour de l'item
$update = 'UPDATE `'.$tablestreamvideos.'`
SET
`title` = "'.$title.'",
`file_id` = "'.$file_id.'",
`author` = "'.$author.'",
`pub_date` = "'.$pub_date.'",
`url` = "'.$url.'",
`obj_code` = "'.$obj_code.'",
`thumb` = "'.$thumb.'",
`site` = "'.$site.'",
`sync_date` = "'.$sync_date.'"
WHERE `id` = "'.$test_file_id.'"
';
$save = mysql_query($update);
if ($save==true)
{
$updated[] = $test_file_id;
}
}
else
{
// Enregistrement de l'item
$save = enregistre_dyn($postvars_stream, $tablestreamvideos,'');
$saved[] = $save;
}
$test_file_id = '';
$title = '';
$file_id = '';
$author = '';
$pub_date = '';
$obj_code = '';
$thumb = '';
$sync_date = '';
$update = '';
$save = '';
}
// supprime les items dont la date de SYNC est vide (non synchronisé)
$sql_delete = 'DELETE FROM `'.$tablestreamvideos.'` WHERE `sync_date`="0000-00-00 00:00:00" AND `site`="'.$site.'"';
$req_delete = mysql_query($sql_delete);
}
$nb_maj = count($updated);
$nb_insert = count($saved);
echo 'Mises à jour : '.$nb_maj.' / Ajoutées : '.$nb_insert;
echo '<hr />';
$affiche_thumbs = '<div id="galerie_videos">';
/// AFFICHAGE DES MINIATURES
$sql_load = 'SELECT * FROM `'.$tablestreamvideos.'` WHERE `site`="'.$site.'"';
$req_load = mysql_query($sql_load);
while ($video = mysql_fetch_assoc($req_load))
{
$affiche_thumbs .= '<div class="stream">';
$affiche_thumbs .= '<div class="title">'.$video['title'].'</div>';
$affiche_thumbs .= '<div class="thumb">'.affiche_player($video['file_id'], '200px', '150px').'</div>';
$affiche_thumbs .= '<div class="id">ID : <input value="'.$video['file_id'].'"/></div>';
$affiche_thumbs .= '<div class="buttons"></div>';
$affiche_thumbs .= '</div>';
}
$affiche_thumbs .= '</div>';
echo $affiche_thumbs;
?>
</div>
<!-- APPEL DE L'UPLOADER DAILYMOTION //-->
<iframe id="dm_uploader_iframe"
src="http://www.dailymotion.com/widget/upload/?skin=default&web=1">
</iframe>







