Code:
<?php
use App\Music\Album;
use App\Music\Track;
/**
* Class FakeMusicSeeder
*
* Creates a good selection of music tracks and related information for
* use when developing the site.
*/
class FakeMusicSeeder extends Seeder {
protected $moods = ['Angry', 'Carefree', 'Chill', 'Contemplative', 'Ecstatic', 'Eerie', 'Happy', 'Love', 'Peaceful',
'Sad', 'Serious', 'Somber', 'Tense', 'Uplifting'];
protected $keywords = ['Acoustic', 'Aggressive', 'Beach', 'Bouncy', 'Celtic', 'Dance', 'Dark', 'Dramatic', 'Earthy',
'Enchanted', 'Epic', 'Grungy', 'Gypsy', 'Holiday', 'Industrial', 'Mysterious', 'Quirky',
'Suspense', 'Vintage'];
protected $genres = ['Alternative', 'Ambient', 'Blues', 'Cinematic', 'Classical', 'Country', 'Electronic', 'Folk',
'Hip Hop', 'Indie', 'Jazz', 'Pop', 'Post Rock', 'Rock', 'Singer-Songwriter', 'Soul', 'World'];
protected $instruments = ['Acoustic Guitar', 'Banjo', 'Cello', 'Drums', 'Fiddle', 'Harmonica', 'Horns', 'Humming',
'Mandolin', 'Nature Sounds', 'Organ', 'Percussion', 'Piano', 'Rhodes', 'Sound FX'];
protected $track_count = 10;
protected $album_count = 1;
protected $faker;
//--------------------------------------------------------------------
public function __construct()
{
$this->faker = Faker\Factory::create();
$this->faker->addProvider(new Faker\Provider\Company($this->faker));
$this->faker->addProvider(new Faker\Provider\Uuid($this->faker));
$this->faker->addProvider(new Faker\Provider\Color($this->faker));
$this->faker->addProvider(new Faker\Provider\DateTime($this->faker));
$this->faker->addProvider(new Faker\Provider\Lorem($this->faker));
$this->faker->addProvider(new Faker\Provider\en_US\Person($this->faker));
}
//--------------------------------------------------------------------
public function run()
{
for ($i=0; $i < $this->album_count; $i++)
{
$album = $this->createAlbum();
for ($j=0; $j < $this->track_count; $j++)
{
try {
$track = $this->createTrack();
}
catch (Exception $e)
{
// echo "ERROR: ". $e->getMessage();
continue;
}
$album->addTrack($track, $j);
}
}
}
//--------------------------------------------------------------------
protected function createAlbum()
{
$album = new Album();
$album->setUUID( $this->faker->uuid );
$album->setCode( $this->faker->bothify('??####') );
$album->setName( $this->faker->catchPhrase );
$album->setStatus( 'active' );
$album->setFeatured( false );
$album->setReleaseDate( $this->faker->dateTimeThisDecade() );
$album->setOverlayColor( $this->faker->hexColor );
// @todo Create an image for the album cover....
$album->save();
return $album;
}
//--------------------------------------------------------------------
protected function createTrack()
{
$track = new Track();
$track->setUUID( $this->faker->uuid );
$track->setTitle( $this->faker->catchphrase );
$track->setDescription( $this->faker->text );
$track->setBPM( $this->faker->numberBetween(60, 180) );
$track->setPurchaseCount( $this->faker->numberBetween(1, 1000) );
$track->setPlayCount( $this->faker->numberBetween(1, 2500) );
$track->setLengthInSeconds( $this->faker->numberBetween(60, 360) );
// $track->setFrequency();
// $track->setBitrate();
// $track->setTempo();
// $track->setLyrics();
// $track->setVersion();
// $track->setMixout();
$track->setStatus('active');
$track->addArtists( $this->faker->name );
$track->addGenres( $this->faker->randomElements($this->genres, 2) );
$track->addInstruments( $this->faker->randomElements($this->instruments, 3) );
$track->addKeywords( $this->faker->randomElements($this->keywords, 2) );
$track->addMoods( $this->faker->randomElements($this->moods, 2) );
$track->save();
return $track;
}
//--------------------------------------------------------------------
}