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 $source_documents = $source["reference"] ? $source["reference"]["documents"] : $source["documents"];
76 foreach($source_documents as $document){
78 if(substr(urldecode($document["url"]), 0, strlen($base_url)) == $base_url){
79 $file_name = $document_root.substr(urldecode($document["url"]), strlen($base_url));
80 if(!file_exists($file_name)){
85 if(strtolower(substr($document["url"], -5)) === ".flac"){
86 $documents["flac"] = $file_name;
88 if(strtolower(substr($document["url"], -4)) === ".wav"){
89 $documents["wav"] = $file_name;
91 if(strtolower(substr($document["url"], -4)) === ".ogg"){
92 $documents["ogg"] = $file_name;
94 if(strtolower(substr($document["url"], -4)) === ".mp3"){
95 $documents["mp3"] = $file_name;
99 if($documents["flac"]) $audio_files[$source["id"]] = $documents["flac"];
100 elseif($documents["wav"]) $audio_files[$source["id"]] = $documents["wav"];
101 elseif($documents["ogg"]) $audio_files[$source["id"]] = $documents["ogg"];
102 elseif($documents["mp3"]) $audio_files[$source["id"]] = $documents["mp3"];
103 else $no_files[$source["id"]] = $source["titre"];
105 foreach($audio_files as $id_source => $audio_file){
107 !$data->audio_to_png(
109 "audio_file" => $audio_file,
110 "png_file" => $env->path("content")."waveforms/".$id_source.".png",
111 "foreground" => "#".$foreground,
112 "background" => $background ? "#".$background : ""
116 if(!$data->sox_exists()){
117 debug("impossible d'executer la commande sox sur le systeme");
120 debug("impossible de generer le png pour la source id ".$id_source);
128 $data = $env->data();
129 $base_url = $_GET[$env->param("from")];
130 $document_root = $_GET[$env->param("archive_root")];
131 $UPDATE = isset($_GET[$env->param("update")]) ? $_GET[$env->param("update")] : false;
132 $foreground = isset($_GET[$env->param("waveform_fg")]) ? $_GET[$env->param("waveform_fg")] : "383838";
133 $background = isset($_GET[$env->param("waveform_bg")]) ? $_GET[$env->param("waveform_bg")] : null;
134 if(!$data->init_waveform_dirs()){
135 debug("impossible de creer les dossiers pour les waveforms");
138 $sources = $data->sources(array());
139 $audio_files = array();
141 foreach($sources["list"] as $source){
142 $png_file = $env->path("content")."waveforms/".$source["id"].".png";
143 if(file_exists($png_file) && !$UPDATE) continue;
144 if(isset($source["documents"])){
151 $source_documents = $source["reference"] ? $source["reference"]["documents"] : $source["documents"];
152 foreach($source_documents as $document){
154 if(substr(urldecode($document["url"]), 0, strlen($base_url)) == $base_url){
155 $file_name = $document_root.substr(urldecode($document["url"]), strlen($base_url));
156 if(!file_exists($file_name)){
161 if(strtolower(substr($document["url"], -5)) === ".flac"){
162 $documents["flac"] = $file_name;
164 if(strtolower(substr($document["url"], -4)) === ".wav"){
165 $documents["wav"] = $file_name;
167 if(strtolower(substr($document["url"], -4)) === ".ogg"){
168 $documents["ogg"] = $file_name;
170 if(strtolower(substr($document["url"], -4)) === ".mp3"){
171 $documents["mp3"] = $file_name;
175 if($documents["flac"]) $audio_files[$source["id"]] = $documents["flac"];
176 elseif($documents["wav"]) $audio_files[$source["id"]] = $documents["wav"];
177 elseif($documents["ogg"]) $audio_files[$source["id"]] = $documents["ogg"];
178 elseif($documents["mp3"]) $audio_files[$source["id"]] = $documents["mp3"];
179 else $no_files[$source["id"]] = $source["titre"];
182 foreach($audio_files as $id_source => $audio_file){
184 !$data->audio_to_png(
186 "audio_file" => $audio_file,
187 "png_file" => $env->path("content")."waveforms/".$id_source.".png",
188 "foreground" => "#".$foreground,
189 "background" => $background ? "#".$background : ""
193 if(!$data->sox_exists()){
194 debug("impossible d'executer la commande sox sur le systeme");
197 debug("impossible de generer le png pour la source id ".$id_source);