Example #1
0
function CleanUpFileName($filename)
{
    $DirectoryName = dirname($filename);
    $FileExtension = fileextension(basename($filename));
    $BaseFilename = basename($filename, '.' . $FileExtension);
    $BaseFilename = strtolower($BaseFilename);
    $BaseFilename = str_replace('_', ' ', $BaseFilename);
    //$BaseFilename = str_replace('-', ' - ', $BaseFilename);
    $BaseFilename = str_replace('(', ' (', $BaseFilename);
    $BaseFilename = str_replace('( ', '(', $BaseFilename);
    $BaseFilename = str_replace(')', ') ', $BaseFilename);
    $BaseFilename = str_replace(' )', ')', $BaseFilename);
    $BaseFilename = str_replace(' \'\'', ' “', $BaseFilename);
    $BaseFilename = str_replace('\'\' ', '” ', $BaseFilename);
    $BaseFilename = str_replace(' vs ', ' vs. ', $BaseFilename);
    while (strstr($BaseFilename, '  ') !== false) {
        $BaseFilename = str_replace('  ', ' ', $BaseFilename);
    }
    $BaseFilename = trim($BaseFilename);
    return $DirectoryName . '/' . BetterUCwords($BaseFilename) . '.' . strtolower($FileExtension);
}
     // symbolic-link-resolution enhancements by davidbullock@tech-center.com
     $TargetObject = realpath($currentfilename);
     // Find actual file path, resolve if it's a symbolic link
     $TargetObjectType = filetype($TargetObject);
     // Check file type without examining extension
     if ($TargetObjectType == 'dir') {
         $DirectoryContents["{$currentfulldir}"]['dir']["{$file}"]['filesize'] = '-';
         $DirectoryContents["{$currentfulldir}"]['dir']["{$file}"]['playtime_string'] = '-';
     } else {
         if ($TargetObjectType == 'file') {
             $fileinformation = GetAllMP3info($currentfilename, FALSE);
             if (!isset($fileinformation['fileformat']) || $fileinformation['fileformat'] == '') {
                 // auto-detect couldn't find the file format (probably corrupt header?), re-scan based on extension, if applicable
                 $formatExtensions = array('mp3' => 'mp3', 'ogg' => 'ogg', 'zip' => 'zip', 'wav' => 'riff', 'avi' => 'riff', 'mid' => 'midi', 'mpg' => 'mpeg', 'jpg' => 'image', 'gif' => 'image', 'png' => 'image');
                 if (isset($formatExtensions[fileextension($currentfilename)])) {
                     $fileinformation = GetAllMP3info($currentfilename, $formatExtensions[fileextension($currentfilename)]);
                 }
             }
             if (isset($fileinformation['fileformat']) && $fileinformation['fileformat']) {
                 $DirectoryContents["{$currentfulldir}"]['known']["{$file}"] = $fileinformation;
             } else {
                 $DirectoryContents["{$currentfulldir}"]['other']["{$file}"]['filesize'] = filesize($currentfilename);
                 $DirectoryContents["{$currentfulldir}"]['other']["{$file}"]['playtime_string'] = '-';
             }
         }
     }
 }
 $endtime = getmicrotime();
 closedir($handle);
 echo 'done<BR>';
 echo 'Directory scanned in ' . number_format($endtime - $starttime, 2) . ' seconds.<BR>';
/////////////////////////////////////////////////////////////////
echo '<HTML><HEAD><STYLE>BODY, TD, TH { font-family: sans-serif; font-size: 10pt; }</STYLE></HEAD><BODY>';
// include getID3() library (can be in a different directory if full path is specified)
require_once 'getid3.php';
$DirectoryToScan = '.';
$dir = opendir($DirectoryToScan);
// change to whatever directory you want to scan
while (($file = readdir($dir)) !== false) {
    $FullFileName = realpath($DirectoryToScan . '/' . $file);
    if (is_file($FullFileName)) {
        set_time_limit(30);
        $ThisFileInfo = GetAllFileInfo($FullFileName, '', true, true, true);
        // re-scan file more aggressively if file is corrupted somehow and first scan did not correctly identify
        if (empty($ThisFileInfo['fileformat']) || $ThisFileInfo['fileformat'] == 'id3') {
            if (isset($formatExtensions[strtolower(fileextension($FullFileName))])) {
                $ThisFileInfo = GetAllFileInfo($FullFileName, $formatExtensions[strtolower(fileextension($FullFileName))], true, true, true);
            }
        }
        // output desired information in whatever format you want
        echo $ThisFileInfo['filenamepath'] . '<BR>';
        if (!empty($ThisFileInfo['comments']['artist'])) {
            echo implode(', ', $ThisFileInfo['comments']['artist']) . '<BR>';
        }
        if (!empty($ThisFileInfo['audio']['bitrate'])) {
            echo round($ThisFileInfo['audio']['bitrate'] / 1000) . ' kbps<BR>';
        }
        if (!empty($ThisFileInfo['playtime_string'])) {
            echo $ThisFileInfo['playtime_string'] . '<BR>';
        }
        echo '<HR>';
    }
        echo '<TD><A HREF="getid3.demo.check.php?filename=' . rawurlencode($row['filename']) . '">' . $row['filename'] . '</A></TD>';
        echo '</TR>';
    }
    echo '</TABLE><HR>';
} elseif (!empty($_REQUEST['fileextensions'])) {
    $SQLquery = 'SELECT filename, fileformat, audio_dataformat, video_dataformat, tags';
    $SQLquery .= ' FROM files';
    $SQLquery .= ' ORDER BY filename ASC';
    $result = safe_mysql_query($SQLquery);
    $invalidextensionfiles = 0;
    $invalidextensionline = '<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="4">';
    $invalidextensionline .= '<TR><TH>file</TH><TH>audio</TH><TH>video</TH><TH>tags</TH><TH>actual</TH><TH>correct</TH><TH>filename</TH></TR>';
    while ($row = mysql_fetch_array($result)) {
        set_time_limit(30);
        $acceptableextensions = AcceptableExtensions($row['fileformat'], $row['audio_dataformat'], $row['video_dataformat']);
        $actualextension = strtolower(fileextension($row['filename']));
        if ($acceptableextensions && !in_array($actualextension, $acceptableextensions)) {
            $invalidextensionfiles++;
            $invalidextensionline .= '<TR>';
            $invalidextensionline .= '<TD>' . $row['fileformat'] . '</TD>';
            $invalidextensionline .= '<TD>' . $row['audio_dataformat'] . '</TD>';
            $invalidextensionline .= '<TD>' . $row['video_dataformat'] . '</TD>';
            $invalidextensionline .= '<TD>' . $row['tags'] . '</TD>';
            $invalidextensionline .= '<TD>' . $actualextension . '</TD>';
            $invalidextensionline .= '<TD>' . implode('; ', $acceptableextensions) . '</TD>';
            $invalidextensionline .= '<TD><A HREF="getid3.demo.check.php?filename=' . rawurlencode($row['filename']) . '">' . $row['filename'] . '</A></TD>';
            $invalidextensionline .= '</TR>';
        }
    }
    $invalidextensionline .= '</TABLE><HR>';
    echo number_format($invalidextensionfiles) . ' files with incorrect filename extension:<BR>';
                 $DirectoryContents["{$currentfulldir}"]['dir']["{$file}"]['filename'] = $ParentDir;
                 break;
             case '.':
                 // ignore
                 break;
             default:
                 $DirectoryContents["{$currentfulldir}"]['dir']["{$file}"]['filename'] = $file;
                 break;
         }
     } elseif ($TargetObjectType == 'file') {
         $fileinformation = GetAllFileInfo($currentfilename, false, isset($_REQUEST['ShowMD5']), isset($_REQUEST['ShowMD5']));
         if (empty($fileinformation['fileformat'])) {
             // auto-detect couldn't find the file format (probably corrupt header?), re-scan based on extension, if applicable
             $formatExtensions = array('mp3' => 'mp3', 'ogg' => 'ogg', 'zip' => 'zip', 'wav' => 'riff', 'avi' => 'riff', 'mid' => 'midi', 'mpg' => 'mpeg', 'jpg' => 'image', 'gif' => 'image', 'png' => 'image');
             if (isset($formatExtensions[fileextension($currentfilename)])) {
                 $fileinformation = GetAllFileInfo($currentfilename, $formatExtensions[fileextension($currentfilename)], isset($_REQUEST['ShowMD5']), isset($_REQUEST['ShowMD5']));
             }
         }
         if (!empty($fileinformation['fileformat'])) {
             $DirectoryContents["{$currentfulldir}"]['known']["{$file}"] = $fileinformation;
         } else {
             $DirectoryContents["{$currentfulldir}"]['other']["{$file}"] = $fileinformation;
             $DirectoryContents["{$currentfulldir}"]['other']["{$file}"]['playtime_string'] = '-';
         }
     }
 }
 $endtime = getmicrotime();
 closedir($handle);
 echo 'done<BR>';
 echo 'Directory scanned in ' . number_format($endtime - $starttime, 2) . ' seconds.<BR>';
 flush();