public function addArtist(Media $media, $name) { $name = ucfirst(strtolower($name)); $artist = Artist::query()->where('name = :name', ['name' => $name]); if ($artist->count() > 0) { $artist = $artist->first(); } else { $info = true; //Check if the LastFM integration is enabled if ($this->lastfm->isEnabled()) { $data = $this->lastfm->getArtistInfo($name); if ($data === false) { $info = false; } else { $summary = $data['bio']['summary']; $image = $this->downloadImage($data['image']); if ($image === false) { $image = ''; } } } else { $info = false; } if ($info === false) { $summary = ''; $image = ''; } $artist = Artist::create(); $artist->save(['name' => $name, 'summary' => $summary, 'image' => $image]); } //Dirty hack to create an insert query App::db()->createQueryBuilder()->select('1; INSERT INTO @shoutzor_media_artist (media_id, artist_id) VALUES (' . $media->id . ', ' . $artist->id . ') ON DUPLICATE KEY UPDATE media_id=media_id;--')->execute(); return $artist; }