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();