3 class mw_sources_waveforms extends mw_controller{
7 des actions disponibles en ligne de commande pour génerer des waveforms
8 si sox est executable sur le systeme via php
13 php cli.php sources/waveforms/make from=http://domaine.archive.tld archive_root=/fs/path/to/archive/ id=<id_source>
16 genere la waveforme de la source d'id <id_source>
20 waveform_fg=RRVVBB couleur (notation hexa sans #) de la waveforme
22 waveform_bg=RRVVBB couleur (notation hexa sans #) du fond (par defaut transparent)
28 php cli.php sources/waveforms/make_all from=http://domaine.archive.tld archive_root=/fs/path/to/archive/
31 genere toutes les waveformes
35 update=1 force la generation même si une image existe deja
37 waveform_fg=RRVVBB couleur (notation hexa sans #) de la waveforme
39 waveform_bg=RRVVBB couleur (notation hexa sans #) du fond (par defaut transparent)
44 if(PHP_SAPI != "cli"){
45 return "utilisation en ligne de commande uniquement";
53 $id_source = $_GET[$env->param("id")];
54 $base_url = $_GET[$env->param("from")];
55 $document_root = $_GET[$env->param("archive_root")];
56 $foreground = isset($_GET[$env->param("waveform_fg")]) ? $_GET[$env->param("waveform_fg")] : "383838";
57 $background = isset($_GET[$env->param("waveform_bg")]) ? $_GET[$env->param("waveform_bg")] : null;
58 if(!$data->init_waveform_dirs()){
59 debug("impossible de creer les dossiers pour les waveforms");
62 if(($source = $data->source($id_source, true)) === false){
63 debug("impossible de lire les informations de la source");
66 $audio_files = array();
68 if(isset($source["documents"])){
75 foreach($source["documents"] as $document){
77 if(substr(urldecode($document["url"]), 0, strlen($base_url)) == $base_url){
78 $file_name = $document_root.substr(urldecode($document["url"]), strlen($base_url));
79 if(!file_exists($file_name)){
84 if(strtolower(substr($document["url"], -5)) === ".flac"){
85 $documents["flac"] = $file_name;
87 if(strtolower(substr($document["url"], -4)) === ".wav"){
88 $documents["wav"] = $file_name;
90 if(strtolower(substr($document["url"], -4)) === ".ogg"){
91 $documents["ogg"] = $file_name;
93 if(strtolower(substr($document["url"], -4)) === ".mp3"){
94 $documents["mp3"] = $file_name;
98 if($documents["flac"]) $audio_files[$source["id"]] = $documents["flac"];
99 elseif($documents["wav"]) $audio_files[$source["id"]] = $documents["wav"];
100 elseif($documents["ogg"]) $audio_files[$source["id"]] = $documents["ogg"];
101 elseif($documents["mp3"]) $audio_files[$source["id"]] = $documents["mp3"];
102 else $no_files[$source["id"]] = $source["titre"];
104 foreach($audio_files as $id_source => $audio_file){
106 !$data->audio_to_png(
108 "audio_file" => $audio_file,
109 "png_file" => $env->path("content")."waveforms/".$id_source.".png",
110 "foreground" => "#".$foreground,
111 "background" => $background ? "#".$background : ""
115 if(!$data->sox_exists()){
116 debug("impossible d'executer la commande sox sur le systeme");
119 debug("impossible de generer le png pour la source id ".$id_source);
127 $data = $env->data();
128 $base_url = $_GET[$env->param("from")];
129 $document_root = $_GET[$env->param("archive_root")];
130 $UPDATE = isset($_GET[$env->param("update")]) ? $_GET[$env->param("update")] : false;
131 $foreground = isset($_GET[$env->param("waveform_fg")]) ? $_GET[$env->param("waveform_fg")] : "383838";
132 $background = isset($_GET[$env->param("waveform_bg")]) ? $_GET[$env->param("waveform_bg")] : null;
133 if(!$data->init_waveform_dirs()){
134 debug("impossible de creer les dossiers pour les waveforms");
137 $sources = $data->sources(array());
138 $audio_files = array();
140 foreach($sources["list"] as $source){
141 $png_file = $env->path("content")."waveforms/".$source["id"].".png";
142 if(file_exists($png_file) && !$UPDATE) continue;
143 if(isset($source["documents"])){
150 foreach($source["documents"] as $document){
152 if(substr(urldecode($document["url"]), 0, strlen($base_url)) == $base_url){
153 $file_name = $document_root.substr(urldecode($document["url"]), strlen($base_url));
154 if(!file_exists($file_name)){
159 if(strtolower(substr($document["url"], -5)) === ".flac"){
160 $documents["flac"] = $file_name;
162 if(strtolower(substr($document["url"], -4)) === ".wav"){
163 $documents["wav"] = $file_name;
165 if(strtolower(substr($document["url"], -4)) === ".ogg"){
166 $documents["ogg"] = $file_name;
168 if(strtolower(substr($document["url"], -4)) === ".mp3"){
169 $documents["mp3"] = $file_name;
173 if($documents["flac"]) $audio_files[$source["id"]] = $documents["flac"];
174 elseif($documents["wav"]) $audio_files[$source["id"]] = $documents["wav"];
175 elseif($documents["ogg"]) $audio_files[$source["id"]] = $documents["ogg"];
176 elseif($documents["mp3"]) $audio_files[$source["id"]] = $documents["mp3"];
177 else $no_files[$source["id"]] = $source["titre"];
180 foreach($audio_files as $id_source => $audio_file){
182 !$data->audio_to_png(
184 "audio_file" => $audio_file,
185 "png_file" => $env->path("content")."waveforms/".$id_source.".png",
186 "foreground" => "#".$foreground,
187 "background" => $background ? "#".$background : ""
191 if(!$data->sox_exists()){
192 debug("impossible d'executer la commande sox sur le systeme");
195 debug("impossible de generer le png pour la source id ".$id_source);