function CommonFooter() { foreach (array('iconv', 'zlib', 'exif', 'mysql', 'dba') as $ext) { $support[] = (extension_loaded($ext) ? '+' : '-') . $ext; } echo xml_gen::br(); echo xml_gen::p('getID3() ' . getid3::VERSION . '.<br>PHP ' . phpversion() . ' (' . implode(xml_gen::space(2), $support) . ').'); echo xml_gen::p(xml_gen::a('http://getid3.sourceforge.net/', 'http://getid3.sourceforge.net')); echo '</body></html>'; }
/** * Generate XML for error paragraph. */ public static function p_err($text) { if (is_array($text)) { $text = implode("<br>", $text); } return xml_gen::p($text, "class='error'"); }
function AnalyzeDirectory() { global $audio_path, $dbh; // Scan $audio_path try { // Build array containing filenames $files = array(); ScanDirectory($audio_path, $files); // Initialize getID3 engine $getid3 = new getID3(); $getid3->encoding = 'UTF-8'; $getid3->option_md5_data = true; $getid3->option_md5_data_source = true; // Scan all files foreach ($files as $filename => $name) { try { $getid3->Analyze($filename); if (!@$getid3->info['audio']) { xml_gen::p($name . ' skipped - not an audio file.'); continue; } // Extract data $filemtime = filemtime($filename); $filesize = filesize($filename); $filename_sls = addslashes(utf8_encode($filename)); $format_name = @$getid3->info['fileformat'] . (@$getid3->info['audio']['dataformat'] != @$getid3->info['fileformat'] ? '/' . @$getid3->info['audio']['dataformat'] : ''); $format_name_id = Lookup($format_name, 'format_name'); $encoder_version_id = Lookup(@$getid3->info['audio']['encoder'], 'encoder_version'); $encoder_options_id = Lookup(@$getid3->info['audio']['encoder_options'], 'encoder_options'); $bitrate_mode_id = Lookup(@$getid3->info['audio']['bitrate_mode'], 'bitrate_mode'); $channel_mode_id = Lookup(@$getid3->info['audio']['channelmode'], 'channel_mode'); $sample_rate = (int) @$getid3->info['audio']['sample_rate']; $bits_per_sample = (int) @$getid3->info['audio']['bits_per_sample']; $lossless = (int) @$getid3->info['audio']['lossless']; $playtime = (double) @$getid3->info['playtime_seconds']; $avg_bit_rate = (double) @$getid3->info['bitrate']; $rg_track_gain = (double) @$getid3->info['replay_gain']['track']['adjustment']; $rg_album_gain = (double) @$getid3->info['replay_gain']['album']['adjustment']; $md5data = addslashes(@$getid3->info['md5_data_source'] ? @$getid3->info['md5_data_source'] : @$getid3->info['md5_data']); // Insert file entry $dbh->query("insert into getid3_file (filename, filemtime, filesize, format_name_id, encoder_version_id, encoder_options_id, bitrate_mode_id, channel_mode_id, sample_rate, bits_per_sample, lossless, playtime, avg_bit_rate, md5data, replaygain_track_gain, replaygain_album_gain) values ('{$filename_sls}', {$filemtime}, {$filesize}, {$format_name_id}, {$encoder_version_id}, {$encoder_options_id}, {$bitrate_mode_id}, {$channel_mode_id}, {$sample_rate}, {$bits_per_sample}, {$lossless}, {$playtime}, {$avg_bit_rate}, '{$md5data}', {$rg_track_gain}, {$rg_album_gain})"); $file_id = $dbh->insert_id(); // Loop thru tags if (@$getid3->info['tags']) { foreach ($getid3->info['tags'] as $tag_name => $tag_data) { // Loop thru fields foreach ($tag_data as $field_name => $values) { // Loop thru values foreach ($values as $value) { $tag_id = Lookup($tag_name, 'tag'); $field_id = Lookup($field_name, 'field'); $value_id = Lookup($value, 'value'); // Insert comments entry $dbh->query("insert into getid3_comment (file_id, tag_id, field_id, value_id) values ({$file_id}, {$tag_id}, {$field_id}, {$value_id})"); } } } } echo xml_gen::p('#' . $file_id . ' - ' . utf8_encode($filename) . ' OK.'); flush(); } catch (Exception $e) { echo xml_gen::p_err($name . ' skipped - getID3() threw the exception: ' . $e->getmessage()); } } } catch (Exception $e) { echo xml_gen::p_err('An error occured: ' . $e->getmessage()); } }
/** * Handle fatal errors. */ protected function fail($msg) { $this->rollback(); $this->head("Fatal Error"); echo xml_gen::p($msg); $this->foot(); }