/** * Get the top albums tagged by this tag, ordered by tag count. * * @param string $tag the tag name * @param int $limit the number of results to fetch per page. Defaults to 50 * @param int $page the page number to fetch. Defaults to first page */ public function getTopAlbums($tag, $limit = null, $page = null) { $response = $this->call(array('method' => 'tag.getTopAlbums', 'tag' => $tag, 'limit' => $limit, 'page' => $page)); $albums = array(); if (!empty($response->topalbums->album)) { foreach ($response->topalbums->album as $album) { $albums[(int) $album->attributes()->rank] = LastfmModel\Album::createFromResponse($album); } } return $albums; }
public function testCreateFromResponse() { $mockResponse = $this->createMockResponse('MockAlbumResponse'); $album = Album::createFromResponse($mockResponse); $this->assertInstanceOf('BinaryThinking\\LastfmBundle\\Lastfm\\Model\\Album', $album, 'object created is not an instance of Album'); $this->assertNotEmpty($album->getId(), 'empty album id'); $this->assertNotEmpty($album->getName(), 'empty album name'); $this->assertNotEmpty($album->getArtist(), 'empty album artist'); $this->assertNotEmpty($album->getUrl(), 'empty album url'); $this->assertNotEmpty($album->getMbid(), 'empty album mbid'); $this->assertNotEmpty($album->getReleaseDate(), 'empty album release date'); $this->assertNotEmpty($album->getListeners(), 'empty album listeners'); $this->assertNotEmpty($album->getPlayCount(), 'empty album play count'); $this->assertNotEmpty($album->getImages(), 'empty album images'); $this->assertNotEmpty($album->getStreamable(), 'empty album streamable'); $this->assertNotEmpty($album->getTopTags(), 'empty album top tags'); $this->assertNotEmpty($album->getTracks(), 'empty album tracks'); }
/** * Search for an album by name. Returns album matches sorted by relevance. * * @param string $album the album name * @param int $limit the number of results to fetch per page. Defaults to 30. * @param int $page the page number to fetch. Defaults to first page. */ public function search($album, $limit = null, $page = null) { $response = $this->call(array('method' => 'album.search', 'album' => $album, 'limit' => $limit, 'page' => $page)); $albums = array(); if (!empty($response->results->albummatches->album)) { foreach ($response->results->albummatches->album as $albumMatch) { $album = LastfmModel\Album::createFromResponse($albumMatch); $albums[$album->getId()] = $album; } } return $albums; }
public static function createFromResponse(\SimpleXMLElement $response) { $album = new Album(); $album->setRawResponse($response); $album->setId((int) $response->id); $album->setName((string) $response->name); $artisNodeCount = count($response->artist->children()); if (!empty($artisNodeCount)) { $artist = Artist::createFromResponse($response->artist); } else { $artist = new Artist(); $artist->setName((string) $response->artist); } $album->setArtist($artist); $album->setUrl((string) $response->url); $images = array(); foreach ($response->image as $image) { $images[] = (string) $image; } $album->setImages($images); $album->setStreamable((bool) $response->streamable); $album->setMbid((string) $response->mbid); $album->setReleaseDate((string) $response->releasedate); $album->setListeners((int) $response->listeners); $album->setPlayCount((int) $response->playcount); $album->setStreamable((int) $response->streamable); $topTags = array(); foreach ($response->toptags as $topTag) { $topTags[] = $topTag; } $album->setTopTags($topTags); $tracks = array(); if (!empty($response->tracks->track)) { foreach ($response->tracks->track as $track) { $tracks[] = Track::createFromResponse($track); } $album->setTracks($tracks); } return $album; }
/** * Get the top albums for an artist on Last.fm, ordered by popularity. * * @param string $artist the artist name * @param string $mbid the musicbrainz id for the artist * @param int $limit the number of results to fetch per page. Defaults to 50 * @param int $page the page number to fetch. Defaults to first page * @param bool $autocorrect transform misspelled artist names into correct artist names */ public function getTopAlbums($artist, $mbid = null, $limit = null, $page = null, $autocorrect = true) { $response = $this->call(array('method' => 'artist.getTopAlbums', 'artist' => $artist, 'mbid' => $mbid, 'autocorrect' => $autocorrect, 'limit' => $limit, 'page' => $page)); $albums = array(); if (!empty($response->topalbums->album)) { foreach ($response->topalbums->album as $topAlbum) { $topAlbumAttributes = $topAlbum->attributes(); $topAlbum = LastfmModel\Album::createFromResponse($topAlbum); $albums[(int) $topAlbumAttributes->rank] = $topAlbum; } } return $albums; }