genere la waveforme de la source d'id options : waveform_fg=RRVVBB couleur (notation hexa sans #) de la waveforme waveform_bg=RRVVBB couleur (notation hexa sans #) du fond (par defaut transparent) ### action make_all ------------------- php cli.php sources/waveforms/make_all from=http://domaine.archive.tld archive_root=/fs/path/to/archive/ genere toutes les waveformes options : update=1 force la generation même si une image existe deja waveform_fg=RRVVBB couleur (notation hexa sans #) de la waveforme waveform_bg=RRVVBB couleur (notation hexa sans #) du fond (par defaut transparent) */ public function validate(){ if(PHP_SAPI != "cli"){ return "utilisation en ligne de commande uniquement"; } return true; } public function make(){ $env = $this->env(); $data = $env->data(); $id_source = $_GET[$env->param("id")]; $base_url = $_GET[$env->param("from")]; $document_root = $_GET[$env->param("archive_root")]; $foreground = isset($_GET[$env->param("waveform_fg")]) ? $_GET[$env->param("waveform_fg")] : "383838"; $background = isset($_GET[$env->param("waveform_bg")]) ? $_GET[$env->param("waveform_bg")] : null; if(!$data->init_waveform_dirs()){ debug("impossible de creer les dossiers pour les waveforms"); exit; } if(($source = $data->source($id_source, true)) === false){ debug("impossible de lire les informations de la source"); exit; } $audio_files = array(); $no_files = array(); if(isset($source["documents"])){ $documents = array( "flac" => false, "wav" => false, "ogg" => false, "mp3" => false ); $source_documents = $source["reference"] ? $source["reference"]["documents"] : $source["documents"]; foreach($source_documents as $document){ $file_name = false; if(substr(urldecode($document["url"]), 0, strlen($base_url)) == $base_url){ $file_name = $document_root.substr(urldecode($document["url"]), strlen($base_url)); if(!file_exists($file_name)){ $file_name = false; } } if($file_name){ if(strtolower(substr($document["url"], -5)) === ".flac"){ $documents["flac"] = $file_name; } if(strtolower(substr($document["url"], -4)) === ".wav"){ $documents["wav"] = $file_name; } if(strtolower(substr($document["url"], -4)) === ".ogg"){ $documents["ogg"] = $file_name; } if(strtolower(substr($document["url"], -4)) === ".mp3"){ $documents["mp3"] = $file_name; } } } if($documents["flac"]) $audio_files[$source["id"]] = $documents["flac"]; elseif($documents["wav"]) $audio_files[$source["id"]] = $documents["wav"]; elseif($documents["ogg"]) $audio_files[$source["id"]] = $documents["ogg"]; elseif($documents["mp3"]) $audio_files[$source["id"]] = $documents["mp3"]; else $no_files[$source["id"]] = $source["titre"]; } foreach($audio_files as $id_source => $audio_file){ if( !$data->audio_to_png( array( "audio_file" => $audio_file, "png_file" => $env->path("content")."waveforms/".$id_source.".png", "foreground" => "#".$foreground, "background" => $background ? "#".$background : "" ) ) ){ if(!$data->sox_exists()){ debug("impossible d'executer la commande sox sur le systeme"); } else{ debug("impossible de generer le png pour la source id ".$id_source); } } } } public function make_all(){ $env = $this->env(); $data = $env->data(); $base_url = $_GET[$env->param("from")]; $document_root = $_GET[$env->param("archive_root")]; $UPDATE = isset($_GET[$env->param("update")]) ? $_GET[$env->param("update")] : false; $foreground = isset($_GET[$env->param("waveform_fg")]) ? $_GET[$env->param("waveform_fg")] : "383838"; $background = isset($_GET[$env->param("waveform_bg")]) ? $_GET[$env->param("waveform_bg")] : null; if(!$data->init_waveform_dirs()){ debug("impossible de creer les dossiers pour les waveforms"); exit; } $sources = $data->sources(array()); $audio_files = array(); $no_files = array(); foreach($sources["list"] as $source){ $png_file = $env->path("content")."waveforms/".$source["id"].".png"; if(file_exists($png_file) && !$UPDATE) continue; if(isset($source["documents"])){ $documents = array( "flac" => false, "wav" => false, "ogg" => false, "mp3" => false ); $source_documents = $source["reference"] ? $source["reference"]["documents"] : $source["documents"]; foreach($source_documents as $document){ $file_name = false; if(substr(urldecode($document["url"]), 0, strlen($base_url)) == $base_url){ $file_name = $document_root.substr(urldecode($document["url"]), strlen($base_url)); if(!file_exists($file_name)){ $file_name = false; } } if($file_name){ if(strtolower(substr($document["url"], -5)) === ".flac"){ $documents["flac"] = $file_name; } if(strtolower(substr($document["url"], -4)) === ".wav"){ $documents["wav"] = $file_name; } if(strtolower(substr($document["url"], -4)) === ".ogg"){ $documents["ogg"] = $file_name; } if(strtolower(substr($document["url"], -4)) === ".mp3"){ $documents["mp3"] = $file_name; } } } if($documents["flac"]) $audio_files[$source["id"]] = $documents["flac"]; elseif($documents["wav"]) $audio_files[$source["id"]] = $documents["wav"]; elseif($documents["ogg"]) $audio_files[$source["id"]] = $documents["ogg"]; elseif($documents["mp3"]) $audio_files[$source["id"]] = $documents["mp3"]; else $no_files[$source["id"]] = $source["titre"]; } } foreach($audio_files as $id_source => $audio_file){ if( !$data->audio_to_png( array( "audio_file" => $audio_file, "png_file" => $env->path("content")."waveforms/".$id_source.".png", "foreground" => "#".$foreground, "background" => $background ? "#".$background : "" ) ) ){ if(!$data->sox_exists()){ debug("impossible d'executer la commande sox sur le systeme"); } else{ debug("impossible de generer le png pour la source id ".$id_source); } } } } }