/**
  * Extract Album informations from object
  * @access public
  * @static
  * @param  \stdClass $album Object represent Album
  * @return Album
  */
 public static function extractInfos($album)
 {
     // create Album instance
     $albumItem = new self();
     // update informations
     $albumItem->setUri((string) isset($album->href) ? $album->href : '');
     $albumItem->setName((string) isset($album->name) ? $album->name : '');
     // is popularity available ?
     if (isset($album->popularity)) {
         // update popularity
         $albumItem->setPopularity((double) $album->popularity);
     }
     // is released date available ?
     if (isset($album->released)) {
         // update released dates
         $albumItem->setReleased((string) $album->released);
     }
     // is teritories availabality available ?
     if (isset($album->availability) && isset($album->availability->territories)) {
         // update territories availability
         $albumItem->setTerritories(explode(' ', $album->availability->territories));
     }
     // is artists available (from search service) ?
     if (isset($album->artists) && is_array($album->artists)) {
         // setup artists container
         $artists = array();
         // iterate artists
         foreach ($album->artists as $artist) {
             // create Artist and store on container
             $artists[] = Artist::extractInfos($artist);
         }
         // set artists of album
         $albumItem->setArtists($artists);
     }
     // is artists available (from lookup service) ?
     if (isset($album->{'artist-id'}) && isset($album->artist)) {
         // create and store principal artist
         $albumItem->setArtist(Artist::build($album->{'artist-id'}, $album->artist));
     }
     // is tracks available ?
     if (isset($album->tracks) && is_array($album->tracks)) {
         // setup tracks container
         $tracks = array();
         // iterate external ids
         foreach ($album->tracks as $track) {
             // create Track and store on container
             $tracks[] = Track::extractInfos($track);
         }
         // set albums tracks
         $albumItem->setTracks($tracks);
     }
     // is external ids available ?
     if (isset($album->{'external-ids'}) && is_array($album->{'external-ids'})) {
         // setup external ids container
         $externalIds = array();
         // iterate external ids
         foreach ($album->{'external-ids'} as $externalId) {
             // create ExternalId and store on container
             $externalIds[] = ExternalId::extractInfos($externalId);
         }
         // set external ids of album
         $albumItem->setExternalIds($externalIds);
     }
     // return album instance
     return $albumItem;
 }