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