Etichette

martedì 15 novembre 2011

Ricercare file Audio

Allora il titolo sembra banale, fare un programmino di ricerca è banale con qualsiasi strumento software, ma il mio intento era diverso.

I sistemi windows  riconoscono la tipologia di file dall'estensione, o meglio nel sistemi windows  riconosciamo se è un file audio o meno da la sigla che troviamo in fondo al file dopo il punto, al cosi detta estensione, un modo semplice e chiaro, direi quasi user friendly, ma che succede se io prendo un file .doc e lo rinomino in .mp3? niente, l'unica cosa fastidiosa è che  il nostro pc tenterà di aprire un file doc con un lettore di file mp3! avete mai provato!!
Mentre nei sistemi *NIX,  il riconoscimento si basa sui i primi byte che vengono  incontrati  nella lettura del file, ogni file è codificato da un "MAGIC NUMBER".
L'intento del programma che sto per mostrarvi è proprio quello di ricercare i file audio tramite la propria codifica e non tramite estensione.
Per esempio molto utile è se dovete cercare un file tra i file temporanei di un broswer oppure nella directory temp di windows dove vengono cacheati  i file in lavorazione.
Vi posto il listato:


<?php


$path_to_search_s = "/mnt/HD12";
echo "Start...." . "\n";
cercaFile(($path_to_search_s));


function cercaFile($path_to_search) {
    //echo "ENTRATA FUNZIONE...\n";
    //echo $path_to_search . "\n";


    if (is_dir($path_to_search)) {
      //echo $path_to_search . " 2\n";
        $tree = scandir($path_to_search);
        foreach ($tree as $item) {
            if (strtoupper($path_to_search) != strtoupper(($item)) && $item != "." && $item != ".." && $item !="Dati applicazioni" && $item!="Application Data") {
                $item = $path_to_search . "/" . $item;
                //echo "Sono pronto prima " . $item . "\n";
                //$item=realpath($item);
                //echo "Sono pronto" . $item . "\n";


                if (is_dir($item)) {


                   // echo "Dir:" . ($item) . "\n";
                    cercaFile(($item));
                } else {


                    if (is_file(($item)) && ($item) != "") {
                        //echo "Debug file:" . ($item) . "\n";
                        //é un file percui dobbiamo analizzarlo in tutti i modi possibili
                          $finfo = finfo_open(FILEINFO_MIME_TYPE);
                          $type=finfo_file($finfo, realpath($item));
                          finfo_close($finfo);
                          if (strrpos($type, "audio")!==false)
                          echo "Audio:".realpath($item)." ".$type."\n"; 
                    }
                }
            }
        }
    } else {
        echo "<p class=\"error\">Path is not a directory</p>";
    }
}


?>


Lo script è in php, semplicemente perchè era l'unico modo di farlo girare sia su sistemi windows sia su sistemi *Nix.


Cambiando  semplicemente il path dove cercare $path_to_search_s = puoi fare ricerche ovunque crediate.
Altro punto importante, cambiando if (strrpos($type, "audio")!==false) potreste tentare di cercare qualsiasi altra tipologia di file, il valore in $type e il valore mime  per cui nel nostro caso è "audio/mp3", ma per una ricerca  di file word è text/word, per cui basterà sostituire word alla parola audio es:  if (strrpos($type, "word")!==false).


Ovviamente il sistema di ricerca sfrutta la ricorsione!

Nessun commento:

Posta un commento