Bodieu
Paul VINCENT, un blog full XML au coeur de la Bretagne
Paul VINCENT, un blog full XML au coeur de la Bretagne
mardi 02 décembre 2014
<?php
// CONFIGURATION EDITABLE -------------------------------------------
// Dossier Root (peut aussi être une URL, ex: http://www.monsite.com/gallery)
$root_dir = $PHPSELF.'data/audio'; // ( exemple: data/images )
// --begin preprocessing
$phpself = $_SERVER['PHP_SELF'];
extract($_POST);
// filetypes
$filetypes = array("mp3", "jpeg");
$k = sizeof($filetypes);
for ($i=0; $i<$k; $i++)
{
$filetypes[] = strtoupper($filetypes[$i]);
}
// scanning directory for folders and check if they contain image files
if (!is_dir($root_dir))
{
printError("Aucun répertoire racine. Spécifiez s'il vous plaît un répertoire audio valide dans votre configuration.");
}
$root_handle = opendir($root_dir);
while ($dirname = readdir($root_handle))
{
$var1 = strcmp($dirname,'.');
$var2 = strcmp($dirname,'..');
$var3 = is_dir($root_dir.'/'.$dirname);
if (($var1!=0) && ($var2!=0) && ($var3==1))
{
$dir_handle = opendir($root_dir.'/'.$dirname);
$postmp = 0;
while ($filename = readdir($dir_handle))
{
for ($i=0;$i<sizeof($filetypes);$i++)
{
$postmp = strpos($filename, $filetypes[$i]);
if ($postmp>0)
{
$folders[] = $root_dir.'/'.$dirname;
break 2;
}
}
}
closedir($dir_handle);
}
}
if (!$folders)
{
printError("Les dossiers Recherchés ne contiennent pas mp3! Changez s'il vous plaît \$root_dir.");
}
// !!! if you don't want your folders in reverse order change rsort() to sort()
rsort($folders);
// set initial variable $ordner
if (!isset($ordner))
$ordner = $folders[0];
// scanning directories for image files
if (is_dir($ordner)){
$dir_handle = opendir($ordner);
while ($filename = readdir($dir_handle))
{
for ($i=0; $i<sizeof($filetypes); $i++)
{
$pos = strpos($filename, $filetypes[$i]);
$var1 = strcmp($filename,'.');
$var2 = strcmp($filename,'..');
$var3 = is_file($ordner.'/'.$filename);
if (($var1 != 0) && ($var2 != 0) && ($var3 == 1) && ($pos > 0))
{
$files[] = $filename;
}
}
}
sort($files);
echo" $size";
$size = sizeof($files);
closedir($dir_handle);
closedir($root_handle);
}
else
{
printError("Aucun Dossier trouvé. Copiez s'il vous plaît vos dossiers audio à l'emplacement indiqué dans \$root_dir de votre configuration.");
}
// --end preprocessing
// --begin form
echo "<div id=\"plxGalerie\">\n";
echo "<form id=\"next\" method=\"post\" action=\"#next\">\n";
echo "<h3><strong>Sélectionnez un album de chants dans la liste</strong> <select name=\"ordner\" onchange=\"document.getElementById('next').submit();\">\n";
while ($folder = each($folders))
{
if ($ordner == $folder["value"])
{
echo "<option selected=\"selected\" value=\"$ordner\">";
}
else
{
echo "<option value=\"";
echo $folder["value"];
echo "\">";
}
$text = $folder["value"];
while (strrpos($text,"/"))
{
$text = substr($text, strrpos($text,"/")+1);
}
$text = str_replace("_", " ", $text); // Replace all _ with SPACE
echo $text;
echo " </option>\n";
}
echo "</select></h3>\n";
echo "</form>\n";
// --end form
// --begin print les chants
$count = 0;
echo '<audio tabindex="0" id="player" preload="auto" controls="controls">
<source id="source" src="data/son/Jesu Salvator Mundi - Guegon 16 11 14.mp3">
Votre navigateur ne reconnaît pas la balise audio HTML5
</audio> ';
echo '<ul id="playlist">';
for ($y=0;$y<count($files);$y++)
{
echo "<li>";
$chant=explode("-",$files[$count]) ;
echo "<a href='$ordner/$files[$count]'>$chant[0]</a>";
// $console[]=MediaItemArraySuccess($ordner/$files[$count]) ;
echo "</li>";
$count++;
}
echo "</ul>\n";
echo "<div style=\"clear:both;\"></div>\n";
echo "</div>\n";
?>
<script>
function loadSong(link,playerId)
{
var player=document.getElementById(playerId);
player.getElementsByTagName("source")[0].src=link.href;
player.load();
player.play();
}
function preparePlayer()
{
var links=document.getElementById("playlist").getElementsByTagName("a");
var player=document.getElementById('player');
var z;
for (z=0;z<links.length;z++)
links[z].onclick=function(e)
{
var k,km=links.length;
for (k=0;k<km;k++)
if (this==links[k])
{player.setAttribute("data-0",k);break;}
loadSong(this,"player");
return false;
};
player.addEventListener("play",function() {
var k,km=links.length,x;
x=parseInt(this.getAttribute("data-0"));
links[x].style.color="red";
for (k=0;k<km;k++)
{
if (this.getElementsByTagName("source")[0].src==links[k].href)
{
this.setAttribute("data-k",k);
if (k!=x) links[k].style.color="black";
}
else
{
if (k!=x) links[k].style.color="grey";
}
}
},false);
player.addEventListener("ended",function() {
var k=parseInt(this.getAttribute("data-k"));
if (k<(links.length-1)) k++;else k=0;
loadSong(links[k],"player");
},false);
player.setAttribute("data-0",0);
}
window.addEventListener("load",preparePlayer,false);
</script>
<script>
function onError(response) {
console.log( "The following error occurred: " + response.name);
}
// get the folder list as asynchronous calls
function MediaFolderArray(folders){
len = folders.length
for (var i = 0; i < len; i++) {
if (folders[i].storageType == "INTERNAL") {
folderArray.push(folders[i]);
console.log(i + ":" + " title: " + folders[i].title);
console.log("id: " + folders[i].id);
console.log("path : " + folders[i].folderURI);
console.log("storageType : " + folders[i].storageType);
console.log("modifiedDate : " + folders[i].modifiedDate);
}
}
</script>