protected function execute($arguments = array(), $options = array()) { // initialize the database connection $databaseManager = new sfDatabaseManager($this->configuration); $environment = $this->configuration instanceof sfApplicationConfiguration ? $this->configuration->getEnvironment() : 'all'; $connection = $databaseManager->getDatabase($options['connection'])->getConnection(); $media_scanner = new MediaScan(); $fill_words = file_get_contents(dirname(__FILE__) . '/fill_words.txt'); $fill_words = explode(' ', str_replace(array("\r", "\n", "\t", ",", "."), '', $fill_words)); $fwslots = count($fill_words) - 9; if (!$options['no-confirmation'] && !$this->askConfirmation(array_merge(array(sprintf('This command will append data in the following "%s" connection(s):', $options['env']), ''), array('', 'Are you sure you want to proceed? (y/N)')), 'QUESTION_LARGE', false)) { exit; } $counter = 1; for ($i = 0; $i < (int) $options['count']; $i++) { if ($counter >= $group_size) { $start_index = mt_rand(0, $fwslots); $artist_name = join(' ', array_slice($fill_words, $start_index, mt_rand(1, 8))); $start_index = mt_rand(0, $fwslots); $album_name = join(' ', array_slice($fill_words, $start_index, mt_rand(1, 8))); $start_index = mt_rand(0, $fwslots); $genre_name = join(' ', array_slice($fill_words, $start_index, mt_rand(1, 8))); $start_index = mt_rand(0, $fwslots); $label_name = join(' ', array_slice($fill_words, $start_index, mt_rand(1, 8))); $group_size = mt_rand(1, (int) $options['max_album_size']); $bitrate = mt_rand(48, 512); $yearpublished = mt_rand(1900, 2069); $counter = 1; } $start_index = mt_rand(0, $fwslots); $song_name = join(' ', array_slice($fill_words, $start_index, mt_rand(1, 8))); $song_array = array(); @($song_array['artist_name'] = $artist_name); @($song_array['album_name'] = $album_name); @($song_array['song_name'] = $song_name); @($song_array['song_length'] = mt_rand(0, 60) . ':' . mt_rand(11, 60)); @($song_array['accurate_length'] = mt_rand(1, 30409092)); @($song_array['genre_name'] = $genre_name); @($song_array['filesize'] = mt_rand(256, 3141592653)); @($song_array['bitrate'] = $bitrate); @($song_array['yearpublished'] = $yearpublished); @($song_array['tracknumber'] = $counter); @($song_array['label'] = $label_name); @($song_array['mtime'] = mt_rand(1, 3141592653)); @($song_array['atime'] = mt_rand(1, 3141592653)); @($song_array['filename'] = 'file://localhost/home/user/' . $artist_name . '/' . $album_name . '/' . $song_name . '.mp3'); $media_scanner->add_song($song_array); $counter++; } echo sprintf('Filled Database %s with %d record%s', $options['env'], $i, $i == 1 ? '' : 's'); echo "\r\n"; }
$valid_test_song = array('artist_name' => 'Gorillaz', 'album_name' => 'Gorillaz Compilation', 'genre_name' => 'Electronic', 'song_name' => 'Clint Eastwood', 'song_length' => '2:05', 'accurate_length' => '125000', 'filesize' => 3000024, 'bitrate' => 128, 'yearpublished' => 2010, 'tracknumber' => 7, 'label' => 'EMI', 'mtime' => 1293300000, 'atime' => 1293300011, 'filename' => 'file://localhost/home/notroot/music/test.mp3'); $utf8_test_song = array('artist_name' => 'Sigur Rós', 'album_name' => 'með suð í eyrum við spilum endalaust', 'genre_name' => 'Русский', 'song_name' => 'dót widget', 'song_length' => '3:05', 'accurate_length' => 185000, 'filesize' => 3002332, 'bitrate' => 128, 'yearpublished' => 2005, 'tracknumber' => 1, 'label' => 'ンスの映像を世界に先がけて', 'mtime' => 1293300023, 'atime' => 1293300011, 'filename' => 'file://localhost/home/notroot/music/Fließgewässer.mp3'); $media_scan = new MediaScan(); $t->comment('->construct()'); $t->like($media_scan->get_last_scan_id(), '/\\d+/', 'Entered a new scan id successfully.'); $t->comment('->is_scanned()'); $t->is($media_scan->is_scanned('file://localhost/home/notroot/music/test.mp3', '1293300000'), false, 'Song should not exist yet'); $first_insert_id = $media_scan->add_song($valid_test_song); $t->like($first_insert_id, '/\\d+/', 'Successfully added a song to the database'); $t->comment('->add_song()'); $media_scan = new MediaScan(); $second_insert_id = $media_scan->add_song($utf8_test_song); $t->like($second_insert_id, '/\\d+/', 'Successfully added a UTF-8 Song entry.'); $t->is($media_scan->is_scanned('file://localhost/home/notroot/music/test.mp3', '1293300000'), true, 'Updated old record to new scan id number'); $media_scan = new MediaScan(); $second_insert_id = $media_scan->add_song($utf8_test_song); //Test Data Integrity after add $song_integrity_test = Doctrine_Core::getTable('Song')->find(2); $artist_integrity_test = Doctrine_Core::getTable('Artist')->find(2); $album_integrity_test = Doctrine_Core::getTable('Album')->find(2); $genre_integrity_test = Doctrine_Core::getTable('Genre')->find(127); $t->is($song_integrity_test->id, 2, 'integrity: primary id'); $t->is($song_integrity_test->scan_id, 2, 'integrity: last_scan_id id'); $t->is($song_integrity_test->artist_id, 2, 'integrity: artist_id'); $t->is($artist_integrity_test->name, 'Sigur Rós', 'integrity: artist_name'); $t->is($song_integrity_test->album_id, 2, 'integrity: album_id'); $t->is($album_integrity_test->name, 'með suð í eyrum við spilum endalaust', 'integrity: album_name'); $t->is($genre_integrity_test->name, 'Русский', 'integrity: album_name'); $t->is($song_integrity_test->length, '3:05', 'integrity: song length '); $t->is($song_integrity_test->accurate_length, 185000, 'integrity: song length in milliseconds'); $t->is($song_integrity_test->filesize, 3002332, 'integrity: file size in bytes ');
$seconds = '00'; } //create an array of song information $song_array = array(); $song_array['artist_name'] = @$value['Artist']; $song_array['album_name'] = @$value['Album']; $song_array['song_name'] = @$value['Name']; $song_array['song_length'] = @$minutes . ':' . $seconds; $song_array['accurate_length'] = @$value['Total Time']; $song_array['genre_name'] = @$value['Genre']; $song_array['filesize'] = @$value['Size']; $song_array['bitrate'] = @$value['Bit Rate']; $song_array['yearpublished'] = @$value['Year']; $song_array['tracknumber'] = @$value['Track Number']; $song_array['label'] = @null; //not available from itunes xml $song_array['mtime'] = @strtotime($value['Date Modified']); $song_array['atime'] = @strtotime($value['Date Added']); $song_array['filename'] = @$value['Location']; if (is_readable($location)) { //it checks out, add the song $media_scanner->add_song($song_array); } else { echo sprintf('File %s is unreadable', $value['Location']) . "\r\n"; } } //finalize the scan $media_scanner->finalize_scan(); //summarize the results of the scan echo "\r\n"; echo $media_scanner->get_summary();