auth = $auth; $this->fullAuth = $fullAuth; $this->config = $config; } /** * Add an album to a user's Last.fm library (Requires full auth) * @param array $methodVars An array with the following required values: artist, album * @return boolean */ public function addAlbum($methodVars) { // Only allow full authed calls if ( $this->fullAuth == TRUE ) { // Check for required variables if ( !empty($methodVars['artist']) && !empty($methodVars['album']) ) { $vars = array( 'method' => 'library.addalbum', 'api_key' => $this->auth->apiKey, 'sk' => $this->auth->sessionKey ); $vars = array_merge($vars, $methodVars); $sig = $this->apiSig($this->auth->secret, $vars); $vars['api_sig'] = $sig; if ( $call = $this->apiPostCall($vars) ) { return TRUE; } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include artist and album varialbes in the call for this method'); return FALSE; } } else { // Give a 92 error if not fully authed $this->handleError(92, 'Method requires full auth. Call auth.getSession using lastfmApiAuth class'); return FALSE; } } /** * Add an artist to a user's Last.fm library (Requires full auth) * @param array $methodVars An array with the following required values: artist * @return boolean */ public function addArtist($methodVars) { // Only allow full authed calls if ( $this->fullAuth == TRUE ) { // Check for required variables if ( !empty($methodVars['artist']) ) { $vars = array( 'method' => 'library.addartist', 'api_key' => $this->auth->apiKey, 'sk' => $this->auth->sessionKey ); $vars = array_merge($vars, $methodVars); $sig = $this->apiSig($this->auth->secret, $vars); $vars['api_sig'] = $sig; if ( $call = $this->apiPostCall($vars) ) { return TRUE; } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include artist varialbe in the call for this method'); return FALSE; } } else { // Give a 92 error if not fully authed $this->handleError(92, 'Method requires full auth. Call auth.getSession using lastfmApiAuth class'); return FALSE; } } /** * Add a track to a user's Last.fm library (Requires full auth) * @param array $methodVars An array with the following required values: artist, track * @return boolean */ public function addTrack($methodVars) { // Only allow full authed calls if ( $this->fullAuth == TRUE ) { // Check for required variables if ( !empty($methodVars['artist']) && !empty($methodVars['track']) ) { $vars = array( 'method' => 'library.addtrack', 'api_key' => $this->auth->apiKey, 'sk' => $this->auth->sessionKey ); $vars = array_merge($vars, $methodVars); $sig = $this->apiSig($this->auth->secret, $vars); $vars['api_sig'] = $sig; if ( $call = $this->apiPostCall($vars) ) { return TRUE; } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include artist and track varialbes in the call for this method'); return FALSE; } } else { // Give a 92 error if not fully authed $this->handleError(92, 'Method requires full auth. Call auth.getSession using lastfmApiAuth class'); return FALSE; } } /** * A paginated list of all the albums in a user's library, with play counts and tag counts * @param array $methodVars An array with the following required values: user and optional values: page, limit * @return array */ public function getAlbums($methodVars) { // Check for required variables if ( !empty($methodVars['user']) ) { $vars = array( 'method' => 'library.getalbums', 'api_key' => $this->auth->apiKey ); $vars = array_merge($vars, $methodVars); if ( $call = $this->apiGetCall($vars) ) { $albums['page'] = (string) $call->albums['page']; $albums['perPage'] = (string) $call->albums['perPage']; $albums['totalPages'] = (string) $call->albums['totalPages']; $i = 0; foreach ( $call->albums->album as $album ) { $albums['results'][$i]['name'] = (string) $album->name; // THIS DOESN'T WORK AS DOCUMENTED --- $albums['results'][$i]['rank'] = (string) $album['rank']; $albums['results'][$i]['playcount'] = (string) $album->playcount; $albums['results'][$i]['tagcount'] = (string) $album->tagcount; $albums['results'][$i]['mbid'] = (string) $album->mbid; $albums['results'][$i]['url'] = (string) $album->url; $albums['results'][$i]['artist']['name'] = (string) $album->artist->name; $albums['results'][$i]['artist']['mbid'] = (string) $album->artist->mbid; $albums['results'][$i]['artist']['url'] = (string) $album->artist->url; $albums['results'][$i]['image']['small'] = (string) $album->image[0]; $albums['results'][$i]['image']['medium'] = (string) $album->image[1]; $albums['results'][$i]['image']['large'] = (string) $album->image[2]; $i++; } return $albums; } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include a user variable in the call for this method'); return FALSE; } } /** * A paginated list of all the artists in a user's library, with play counts and tag counts * @param array $methodVars An array with the following required values: user and optional values: page, limit * @return array */ public function getArtists($methodVars) { // Check for required variables if ( !empty($methodVars['user']) ) { $vars = array( 'method' => 'library.getartists', 'api_key' => $this->auth->apiKey ); $vars = array_merge($vars, $methodVars); if ( $call = $this->apiGetCall($vars) ) { $artists['page'] = (string) $call->artists['page']; $artists['perPage'] = (string) $call->artists['perPage']; $artists['totalPages'] = (string) $call->artists['totalPages']; $i = 0; foreach ( $call->artists->artist as $artist ) { $artists['results'][$i]['name'] = (string) $artist->name; // THIS DOESN'T WORK AS DOCUMENTED --- $artists['results'][$i]['rank'] = (string) $artist['rank']; $artists['results'][$i]['playcount'] = (string) $artist->playcount; $artists['results'][$i]['tagcount'] = (string) $artist->tagcount; $artists['results'][$i]['mbid'] = (string) $artist->mbid; $artists['results'][$i]['url'] = (string) $artist->url; $artists['results'][$i]['streamable'] = (string) $artist->streamable; $artists['results'][$i]['image']['small'] = (string) $artist->image[0]; $artists['results'][$i]['image']['medium'] = (string) $artist->image[1]; $artists['results'][$i]['image']['large'] = (string) $artist->image[2]; $i++; } return $artists; } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include a user variable in the call for this method'); return FALSE; } } /** * A paginated list of all the tracks in a user's library, with play counts and tag counts * @param array $methodVars An array with the following required values: user and optional values: page, limit * @return array */ public function getTracks($methodVars) { // Check for required variables if ( !empty($methodVars['user']) ) { $vars = array( 'method' => 'library.gettracks', 'api_key' => $this->auth->apiKey ); $vars = array_merge($vars, $methodVars); if ( $call = $this->apiGetCall($vars) ) { $tracks['page'] = (string) $call->tracks['page']; $tracks['perPage'] = (string) $call->tracks['perPage']; $tracks['totalPages'] = (string) $call->tracks['totalPages']; $i = 0; foreach ( $call->tracks->track as $track ) { $tracks['results'][$i]['name'] = (string) $track->name; // THIS DOESN'T WORK AS DOCUMENTED --- $tracks['results'][$i]['rank'] = (string) $track['rank']; $tracks['results'][$i]['playcount'] = (string) $track->playcount; $tracks['results'][$i]['tagcount'] = (string) $track->tagcount; $tracks['results'][$i]['url'] = (string) $track->url; $tracks['results'][$i]['streamable'] = (string) $track->streamable; $tracks['results'][$i]['fulltrack'] = (string) $track->streamable['fulltrack']; $tracks['results'][$i]['artist']['name'] = (string) $track->artist->name; $tracks['results'][$i]['artist']['mbid'] = (string) $track->artist->mbid; $tracks['results'][$i]['artist']['url'] = (string) $track->artist->url; $tracks['results'][$i]['image']['small'] = (string) $track->image[0]; $tracks['results'][$i]['image']['medium'] = (string) $track->image[1]; $tracks['results'][$i]['image']['large'] = (string) $track->image[2]; $i++; } return $tracks; } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include a user variable in the call for this method'); return FALSE; } } } ?>