Example #1
0
 /**
  * Search an album by his title.
  *
  * @param string $albumTitle
  *
  * @return bool|array Albums collection or false on failure
  */
 public function searchAlbumByTitle($albumTitle)
 {
     //set valid request
     $this->endpoint .= '2/release/';
     $this->queryParameters['query'] = "release:{$albumTitle};";
     //execute the request
     $response = $this->executeCall();
     if ($response === false) {
         //error on response
         return false;
     }
     if ($response->count === 0) {
         $this->errorMessage = 'No album found';
         //no release matched
         return array();
     }
     //order by score
     $musicBrainzReleases = $response->releases;
     usort($musicBrainzReleases, array('MusicBrainz', 'orderByScore'));
     //get high score and apply a 90% ratio
     $thresholdScore = $musicBrainzReleases[0]->score * 0.9;
     $albums = array();
     //transform MusicBrainz albums into WMP albums
     require_once $_SERVER['DOCUMENT_ROOT'] . '/server/lib/Album.php';
     foreach ($musicBrainzReleases as $musicBrainzRelease) {
         if ($musicBrainzRelease->score >= $thresholdScore) {
             $album = new Album();
             $album->mbid = $musicBrainzRelease->id;
             $album->name = $musicBrainzRelease->title;
             if (property_exists($musicBrainzRelease, 'date')) {
                 $album->year = substr($musicBrainzRelease->date, 0, 4);
             }
             if (property_exists($musicBrainzRelease, 'country')) {
                 $album->country = $musicBrainzRelease->country;
             }
             if (property_exists($musicBrainzRelease, 'artist-credit') && count($musicBrainzRelease->{'artist-credit'}) > 0) {
                 $artists = $musicBrainzRelease->{'artist-credit'};
                 $album->artistName = $artists[0]->artist->name;
             }
             $album->mbidGroup = $musicBrainzRelease->{'release-group'}->id;
             $status = '?';
             $packaging = '?';
             $type = '?';
             $media = '?';
             if (property_exists($musicBrainzRelease, 'status')) {
                 $status = $musicBrainzRelease->status;
             }
             if (property_exists($musicBrainzRelease, 'packaging')) {
                 $packaging = $musicBrainzRelease->packaging;
             }
             if (property_exists($musicBrainzRelease->{'release-group'}, 'primary-type')) {
                 $type = $musicBrainzRelease->{'release-group'}->{'primary-type'};
             }
             if (count($musicBrainzRelease->media) > 0 && property_exists($musicBrainzRelease->media[0], 'format')) {
                 $media = $musicBrainzRelease->media[0]->format;
             }
             $album->description = $type . ' - ' . $status . ' - ' . $packaging . ' - ' . $media;
             //propose a cover URL with Cover Art Archive
             require_once $_SERVER['DOCUMENT_ROOT'] . '/server/lib/CoverArtArchive.php';
             $coverArtArchive = new CoverArtArchive();
             $album->coverPath = $coverArtArchive->getCoverURL($musicBrainzRelease->id);
             $album->structureData();
             unset($album->id, $album->tracks, $album->disk);
             array_push($albums, $album);
         }
     }
     //return albums
     return $albums;
 }
Example #2
0
        }
        $album = new Album($id);
        if (!$album->populate(['id' => $id])) {
            $api->output(404, 'Album not found');
            //indicate the album was not found
            return;
        }
        //store previous MBID
        $previousMBID = $album->mbid;
        //adapt and validate object received
        $updatedAlbum = $api->query['body'];
        if (!$album->validateModel($updatedAlbum, $errorMessage)) {
            $api->output(400, 'Album is not valid: ' . $errorMessage);
            //provided album is not valid
            return;
        }
        if (!$album->update($errorMessage)) {
            $api->output(500, 'Error during album update' . $errorMessage);
            //something gone wrong :(
            return;
        }
        //if MBID has changed, update cover
        if ($previousMBID !== $album->mbid) {
            $album->deleteCoverImage();
            $album->getCoverImage();
        }
        $album->populate(['id' => $id]);
        $album->getTracks();
        $api->output(200, $album->structureData());
        break;
}