// // available at http://getid3.sourceforge.net /// ///////////////////////////////////////////////////////////////// // // // getid3.zip.php - part of getID3() // // Sample script for checking remote and local files and // // displaying information returned by getID3() // // See getid3.readme.txt for more details // // // ///////////////////////////////////////////////////////////////// require_once('getid3.php'); require_once(GETID3_INCLUDEPATH.'getid3.functions.php'); // Function library echo ''; echo 'getID3() - getid3.check.php (sample script)'; echo ''; echo ''; if (isset($_REQUEST['deletefile'])) { if (file_exists($_REQUEST['deletefile'])) { if (unlink($_REQUEST['deletefile'])) { echo ''; } else { echo ''; } } else { echo ''; } } if (isset($_REQUEST['filename'])) { $starttime = getmicrotime(); if (isset($_REQUEST['assumeFormat'])) { $ThisFileInfo = GetAllFileInfo($_REQUEST['filename'], $_REQUEST['assumeFormat'], true, (filesize($_REQUEST['filename']) < 52428800)); // auto-get md5_data if filesize < 50MB } else { $ThisFileInfo = GetAllFileInfo($_REQUEST['filename'], '', true, (filesize($_REQUEST['filename']) < 52428800)); // auto-get md5_data if filesize < 50MB if (!isset($ThisFileInfo['fileformat']) || ($ThisFileInfo['fileformat'] == '') || ($ThisFileInfo['fileformat'] == 'id3')) { $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($_REQUEST['filename'])])) { $ThisFileInfo = GetAllFileInfo($_REQUEST['filename'], $formatExtensions[fileextension($_REQUEST['filename'])], true, (filesize($_REQUEST['filename']) < 52428800)); // auto-get md5_data if filesize < 50MB } } } $listdirectory = dirname(SafeStripSlashes($_REQUEST['filename'])); $listdirectory = realpath($listdirectory); // get rid of /../../ references if (substr(php_uname(), 0, 7) == 'Windows') { // this mostly just gives a consistant look to Windows and *nix filesystems // (windows uses \ as directory seperator, *nix uses /) $listdirectory = str_replace('\\', '/', $listdirectory.'/'); } if (strstr($_REQUEST['filename'], 'http://') || strstr($_REQUEST['filename'], 'ftp://')) { echo 'Cannot browse remote filesystems
'; } else { echo 'Browse: '.$listdirectory.'
'; } echo 'Parse this file as: '; $allowedFormats = array('zip', 'ogg', 'riff', 'mpeg', 'midi', 'aac', 'mp3'); foreach ($allowedFormats as $possibleFormat) { if (isset($_REQUEST['assumeFormat']) && ($_REQUEST['assumeFormat'] == $possibleFormat)) { echo ''.$possibleFormat.' | '; } else { echo ''.$possibleFormat.' | '; } } if (isset($_REQUEST['assumeFormat'])) { echo 'default
'; } else { echo 'default
'; } echo table_var_dump($ThisFileInfo); $endtime = getmicrotime(); echo 'File parsed in '.number_format($endtime - $starttime, 3).' seconds.
'; } else { $listdirectory = (isset($_REQUEST['listdirectory']) ? SafeStripSlashes($_REQUEST['listdirectory']) : '.'); $listdirectory = realpath($listdirectory); // get rid of /../../ references $currentfulldir = $listdirectory.'/'; if (substr(php_uname(), 0, 7) == 'Windows') { // this mostly just gives a consistant look to Windows and *nix filesystems // (windows uses \ as directory seperator, *nix uses /) $currentfulldir = str_replace('\\', '/', $listdirectory.'/'); } if ($handle = @opendir($listdirectory)) { echo str_repeat(' ', 300); // IE buffers the first 300 or so chars, making this progressive display useless - fill the buffer with spaces echo 'Processing'; $starttime = getmicrotime(); while ($file = readdir($handle)) { set_time_limit(30); // allocate another 30 seconds to process this file - should go much quicker than this unless intense processing (like bitrate histogram analysis) is enabled echo ' .'; // progress indicator dot flush(); // make sure the dot is shown, otherwise it's useless $currentfilename = $listdirectory.'/'.$file; // 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') { switch ($file) { case '..': $ParentDir = realpath($file.'/..').'/'; if (substr(php_uname(), 0, 7) == 'Windows') { $ParentDir = str_replace('\\', '/', $ParentDir); } $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
'; echo 'Directory scanned in '.number_format($endtime - $starttime, 2).' seconds.
'; flush(); $columnsintable = 13; echo ''; echo ''; $rowcounter = 0; foreach ($DirectoryContents as $dirname => $val) { if (is_array($DirectoryContents["$dirname"]['dir'])) { uksort($DirectoryContents["$dirname"]['dir'], 'MoreNaturalSort'); foreach ($DirectoryContents["$dirname"]['dir'] as $filename => $fileinfo) { echo ''; if ($filename == '..') { echo ''; } else { echo ''; } echo ''; } } echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; if (isset($_REQUEST['ShowMD5'])) { echo ''; echo ''; } else { echo ''; } echo ''; echo ''; echo ''; echo ''; echo ''; if (isset($DirectoryContents["$dirname"]['known']) && is_array($DirectoryContents["$dirname"]['known'])) { uksort($DirectoryContents["$dirname"]['known'], 'MoreNaturalSort'); foreach ($DirectoryContents["$dirname"]['known'] as $filename => $fileinfo) { echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; if (isset($_REQUEST['ShowMD5'])) { echo ''; echo ''; } else { echo ''; } echo ''; echo ''; echo ''; echo ''; echo ''; } } if (isset($DirectoryContents["$dirname"]['other']) && is_array($DirectoryContents["$dirname"]['other'])) { uksort($DirectoryContents["$dirname"]['other'], 'MoreNaturalSort'); foreach ($DirectoryContents["$dirname"]['other'] as $filename => $fileinfo) { echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; // Artist echo ''; // Title echo ''; // MD5_data echo ''; // Tags echo ''; // Warning/Error echo ''; // Edit echo ''; echo ''; } } } echo '
Files in '.$currentfulldir.'
Parent directory: '; if (substr(php_uname(), 0, 7) == 'Windows') { echo str_replace('\\', '/', realpath($dirname.$filename)); } else { echo realpath($dirname.$filename); } echo '/'.$filename.'
FilenameFile SizeFormatPlaytimeBitrateArtistTitleMD5 Data (disable)MD5 File (disable)MD5 Data (enable)TagsErrorsEditDelete
'.$filename.' '.number_format($fileinfo['filesize']).' '.NiceDisplayFiletypeFormat($fileinfo).' '.(isset($fileinfo['playtime_string']) ? $fileinfo['playtime_string'] : '-').' '.(isset($fileinfo['bitrate']) ? BitrateText($fileinfo['bitrate'] / 1000) : '-').' '.(isset($fileinfo['comments']['artist']) ? implode("\n", $fileinfo['comments']['artist']) : '').' '.(isset($fileinfo['comments']['title']) ? implode("\n", $fileinfo['comments']['title']) : '').''.(isset($fileinfo['md5_data']) ? $fileinfo['md5_data'] : '').''.(isset($fileinfo['md5_file']) ? $fileinfo['md5_file'] : '').'- '.implode(', ', $fileinfo['tags']).' '; if (!empty($fileinfo['warning'])) { echo 'warning
'; } if (!empty($fileinfo['error'])) { echo '
error
'; } echo '
 '; if (in_array('id3v1', $fileinfo['tags']) || in_array('id3v2', $fileinfo['tags'])) { echo 'edit ID3'; } elseif (in_array('vorbiscomment', $fileinfo['tags'])) { echo 'edit tags'; } echo ' delete
'.$filename.' '.(isset($fileinfo['filesize']) ? number_format($fileinfo['filesize']) : '-').' '.NiceDisplayFiletypeFormat($fileinfo).' '.(isset($fileinfo['playtime_string']) ? $fileinfo['playtime_string'] : '-').' '.(isset($fileinfo['bitrate']) ? BitrateText($fileinfo['bitrate'] / 1000) : '-').'       delete
'; } else { echo 'ERROR: Could not open directory: '.$currentfulldir.'
'; } } echo PoweredBygetID3(); echo ''; function NiceDisplayFiletypeFormat(&$fileinfo) { if (empty($fileinfo['fileformat'])) { return '-'; } $output = $fileinfo['fileformat']; if (empty($fileinfo['video']['dataformat']) && empty($fileinfo['audio']['dataformat'])) { return $output; // 'gif' } if (empty($fileinfo['video']['dataformat']) && !empty($fileinfo['audio']['dataformat'])) { if ($fileinfo['fileformat'] == $fileinfo['audio']['dataformat']) { return $output; // 'mp3' } $output .= '.'.$fileinfo['audio']['dataformat']; // 'ogg.flac' return $output; } if (!empty($fileinfo['video']['dataformat']) && empty($fileinfo['audio']['dataformat'])) { if ($fileinfo['fileformat'] == $fileinfo['video']['dataformat']) { return $output; // 'mpeg' } $output .= '.'.$fileinfo['video']['dataformat']; // 'riff.avi' return $output; } if ($fileinfo['video']['dataformat'] == $fileinfo['audio']['dataformat']) { if ($fileinfo['fileformat'] == $fileinfo['video']['dataformat']) { return $output; // 'real' } $output .= '.'.$fileinfo['video']['dataformat']; // any examples? return $output; } $output .= '.'.$fileinfo['video']['dataformat']; $output .= '.'.$fileinfo['audio']['dataformat']; // asf.wmv.wma return $output; } ?>