auth = $auth; $this->fullAuth = $fullAuth; $this->config = $config; } /** * Get a list of upcoming events that this user is attending * @param array $methodVars An array with the following required values: user * @return array */ public function getEvents($methodVars) { // Check for required variables if ( !empty($methodVars['user']) ) { $vars = array( 'method' => 'user.getevents', 'api_key' => $this->auth->apiKey ); $vars = array_merge($vars, $methodVars); if ( $call = $this->apiGetCall($vars) ) { if ( $call->events['total'] > 0 ) { $i = 0; foreach ( $call->events->event as $event ) { $events[$i]['id'] = (string) $event->id; $events[$i]['title'] = (string) $event->title; $ii = 0; foreach ( $event->artists->artist as $artist ) { $events[$i]['artists'][$ii] = (string) $artist; $ii++; } $events[$i]['headliner'] = (string) $event->artists->headliner; $events[$i]['venue']['name'] = (string) $event->venue->name; $events[$i]['venue']['location']['city'] = (string) $event->venue->location->city; $events[$i]['venue']['location']['country'] = (string) $event->venue->location->country; $events[$i]['venue']['location']['street'] = (string) $event->venue->location->street; $events[$i]['venue']['location']['postalcode'] = (string) $event->venue->location->postalcode; $geoPoints = $event->venue->location->children('http://www.w3.org/2003/01/geo/wgs84_pos#'); $events[$i]['venue']['location']['geopoint']['lat'] = (string) $geoPoints->point->lat; $events[$i]['venue']['location']['geopoint']['long'] = (string) $geoPoints->point->long; $events[$i]['venue']['timezone'] = (string) $event->venue->location->timezone; $events[$i]['startDate'] = strtotime(trim((string) $event->startDate)); $events[$i]['description'] = (string) $event->description; $events[$i]['images']['small'] = (string) $event->image[0]; $events[$i]['images']['medium'] = (string) $event->image[1]; $events[$i]['images']['large'] = (string) $event->image[2]; $events[$i]['attendance'] = (string) $event->attendance; $events[$i]['reviews'] = (string) $event->reviews; $events[$i]['tag'] = (string) $event->tag; $events[$i]['url'] = (string) $event->url; $i++; } return $events; } else { $this->handleError(90, 'This user has no events'); return FALSE; } } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include artist variable in the call for this method'); return FALSE; } } /** * Get a list of the user's friends on Last.fm * @param array $methodVars An array with the following required values: user * @return array */ public function getFriends($methodVars) { // Check for required variables if ( !empty($methodVars['user']) ) { $vars = array( 'method' => 'user.getfriends', 'api_key' => $this->auth->apiKey ); $vars = array_merge($vars, $methodVars); if ( $call = $this->apiGetCall($vars) ) { if ( count($call->friends->user) > 0 ) { $i = 0; foreach ( $call->friends->user as $user ) { $friends[$i]['name'] = (string) $user->name; $friends[$i]['images']['small'] = (string) $user->image[0]; $friends[$i]['images']['medium'] = (string) $user->image[1]; $friends[$i]['images']['large'] = (string) $user->image[2]; $friends[$i]['url'] = (string) $user->url; if ( !empty($recentTracks) ) { $friends[$i]['recenttrack']['artist']['name'] = (string) $user->recenttrack->artist->name; $friends[$i]['recenttrack']['artist']['mbid'] = (string) $user->recenttrack->artist->mbid; $friends[$i]['recenttrack']['artist']['url'] = (string) $user->recenttrack->artist->url; $friends[$i]['recenttrack']['name'] = (string) $user->recenttrack->name; $friends[$i]['recenttrack']['mbid'] = (string) $user->recenttrack->mbid; $friends[$i]['recenttrack']['url'] = (string) $user->recenttrack->url; } $i++; } return $friends; } else { $this->handleError(90, 'This user has no friends'); return FALSE; } } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include artist variable in the call for this method'); return FALSE; } } /** * Get information about a user profile (Requires full auth) * @param array $methodVars An array with the following required values: user * @return array */ public function getInfo($methodVars = Array()) { // Only allow full authed calls if ( $this->fullAuth == TRUE ) { $vars = array( 'method' => 'user.getinfo', 'api_key' => $this->auth->apiKey, 'sk' => $this->auth->sessionKey ); $vars = array_merge($vars, $methodVars); $apiSig = $this->apiSig($this->auth->secret, $vars); $vars['api_sig'] = $apiSig; if ( $call = $this->apiGetCall($vars) ) { $info['name'] = (string) $call->user->name; $info['url'] = (string) $call->user->url; $info['image'] = (string) $call->user->image; $info['lang'] = (string) $call->user->lang; $info['country'] = (string) $call->user->country; $info['age'] = (string) $call->user->age; $info['gender'] = (string) $call->user->gender; $info['subscriber'] = (string) $call->user->subscriber; $info['playcount'] = (string) $call->user->playcount; $info['playlists'] = (string) $call->user->playlists; return $info; } else { 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; } } /** * Get the last 50 tracks loved by a user * @param array $methodVars An array with the following required values: user * @return array */ public function getLovedTracks($methodVars) { // Check for required variables if ( !empty($methodVars['user']) ) { $vars = array( 'method' => 'user.getlovedtracks', 'api_key' => $this->auth->apiKey ); $vars = array_merge($vars, $methodVars); if ( $call = $this->apiGetCall($vars) ) { if ( count($call->lovedtracks->track) > 0 ) { $i = 0; foreach ( $call->lovedtracks->track as $track ) { $lovedTracks[$i]['name'] = (string) $track->name; $lovedTracks[$i]['mbid'] = (string) $track->mbid; $lovedTracks[$i]['url'] = (string) $track->url; $lovedTracks[$i]['date'] = (string) $track->date['uts']; $lovedTracks[$i]['artist']['name'] = (string) $track->artist->name; $lovedTracks[$i]['artist']['mbid'] = (string) $track->artist->mbid; $lovedTracks[$i]['artist']['url'] = (string) $track->artist->url; $lovedTracks[$i]['images']['small'] = (string) $track->image[0]; $lovedTracks[$i]['images']['medium'] = (string) $track->image[1]; $lovedTracks[$i]['images']['large'] = (string) $track->image[2]; $i++; } return $lovedTracks; } else { $this->handleError(90, 'This user has no loved tracks'); return FALSE; } } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include artist variable in the call for this method'); return FALSE; } } /** * Get a list of a user's neighbours on Last.fm * @param array $methodVars An array with the following required values: user * @return array */ public function getNeighbours($methodVars) { // Check for required variables if ( !empty($methodVars['user']) ) { $vars = array( 'method' => 'user.getneighbours', 'api_key' => $this->auth->apiKey ); $vars = array_merge($vars, $methodVars); if ( !empty($methodVars['limit']) ) { $vars['limit'] = $methodVars['limit']; } if ( $call = $this->apiGetCall($vars) ) { if ( count($call->neighbours->user) > 0 ) { $i = 0; foreach ( $call->neighbours->user as $user ) { $neighbours[$i]['name'] = (string) $user->name; $neighbours[$i]['url'] = (string) $user->url; $neighbours[$i]['image'] = (string) $user->image; $neighbours[$i]['match'] = (string) $user->match; $i++; } return $neighbours; } else { $this->handleError(90, 'This user has no neighbours'); return FALSE; } } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include artist variable in the call for this method'); return FALSE; } } /** * Get a paginated list of all events a user has attended in the past * @param array $methodVars An array with the following required values: user * @return array */ public function getPastEvents($methodVars) { // Check for required variables if ( !empty($methodVars['user']) ) { $vars = array( 'method' => 'user.getpastevents', 'api_key' => $this->auth->apiKey ); $vars = array_merge($vars, $methodVars); if ( $call = $this->apiGetCall($vars) ) { if ( $call->events['total'] > 0 ) { $i = 0; foreach ( $call->events->event as $event ) { $pastEvents[$i]['id'] = (string) $event->id; $pastEvents[$i]['title'] = (string) $event->title; $ii = 0; foreach ( $event->artists->artist as $artist ) { $pastEvents[$i]['artists'][$ii] = (string) $artist; $ii++; } $pastEvents[$i]['headliner'] = (string) $event->artists->headliner; $pastEvents[$i]['venue']['name'] = (string) $event->venue->name; $pastEvents[$i]['venue']['location']['city'] = (string) $event->venue->location->city; $pastEvents[$i]['venue']['location']['country'] = (string) $event->venue->location->country; $pastEvents[$i]['venue']['location']['street'] = (string) $event->venue->location->street; $pastEvents[$i]['venue']['location']['postalcode'] = (string) $event->venue->location->postalcode; $geoPoints = $event->venue->location->children('http://www.w3.org/2003/01/geo/wgs84_pos#'); $pastEvents[$i]['venue']['location']['geopoint']['lat'] = (string) $geoPoints->point->lat; $pastEvents[$i]['venue']['location']['geopoint']['long'] = (string) $geoPoints->point->long; $pastEvents[$i]['startDate'] = strtotime(trim((string) $event->startDate)); $pastEvents[$i]['description'] = (string) $event->description; $pastEvents[$i]['images']['small'] = (string) $event->image[0]; $pastEvents[$i]['images']['medium'] = (string) $event->image[1]; $pastEvents[$i]['images']['large'] = (string) $event->image[2]; $pastEvents[$i]['attendance'] = (string) $event->attendance; $pastEvents[$i]['reviews'] = (string) $event->reviews; $pastEvents[$i]['tag'] = (string) $event->tag; $pastEvents[$i]['url'] = (string) $event->url; $i++; } return $pastEvents; } else { $this->handleError(90, 'This user has no past events'); return FALSE; } } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include artist variable in the call for this method'); return FALSE; } } /** * Get a list of a user's playlists on Last.fm * @param array $methodVars An array with the following required values: user * @return array */ public function getPlaylists($methodVars) { // Check for required variables if ( !empty($methodVars['user']) ) { $vars = array( 'method' => 'user.getplaylists', 'api_key' => $this->auth->apiKey ); $vars = array_merge($vars, $methodVars); if ( $call = $this->apiGetCall($vars) ) { if ( count($call->playlists->playlist) > 0 ) { $i = 0; foreach ( $call->playlists->playlist as $playlist ) { $playlists[$i]['id'] = (string) $playlist->id; $playlists[$i]['title'] = (string) $playlist->title; $playlists[$i]['date'] = strtotime(trim((string) $playlist->date)); $playlists[$i]['size'] = (string) $playlist->size; $playlists[$i]['streamalbe'] = (string) $playlist->streamable; $playlists[$i]['creator'] = (string) $playlist->creator; $i++; } return $playlists; } else { $this->handleError(90, 'This user has no past events'); return FALSE; } } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include artist variable in the call for this method'); return FALSE; } } /** * Get a list of the recent tracks listened to by this user. Indicates now playing track if the user is currently listening * @param array $methodVars An array with the following required values: user * @return array */ public function getRecentTracks($methodVars) { // Check for required variables if ( !empty($methodVars['user']) ) { $vars = array( 'method' => 'user.getrecenttracks', 'api_key' => $this->auth->apiKey ); $vars = array_merge($vars, $methodVars); if ( $call = $this->apiGetCall($vars) ) { if ( count($call->recenttracks->track) > 0 ) { $i = 0; foreach ( $call->recenttracks->track as $track ) { $recentTracks[$i]['name'] = (string) $track->name; if ( isset($track['nowplaying']) ) { $recentTracks[$i]['nowplaying'] = TRUE; } $recentTracks[$i]['mbid'] = (string) $track->mbid; $recentTracks[$i]['url'] = (string) $track->url; $recentTracks[$i]['date'] = (string) $track->date['uts']; $recentTracks[$i]['streamable'] = (string) $track->streamable; $recentTracks[$i]['artist']['name'] = (string) $track->artist; $recentTracks[$i]['artist']['mbid'] = (string) $track->artist['mbid']; $recentTracks[$i]['album']['name'] = (string) $track->album; $recentTracks[$i]['album']['mbid'] = (string) $track->album['mbid']; $recentTracks[$i]['images']['small'] = (string) $track->image[0]; $recentTracks[$i]['images']['medium'] = (string) $track->image[1]; $recentTracks[$i]['images']['large'] = (string) $track->image[2]; $i++; } return $recentTracks; } else { $this->handleError(90, 'This user has no recent tracks'); return FALSE; } } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include artist variable in the call for this method'); return FALSE; } } /** * Get Last.fm artist recommendations for a user (Requires full auth) * @param array $methodVars An array with the following optional values: limit, page * @return array */ public function getRecommendedArtists($methodVars = Array()) { // Only allow full authed calls if ( $this->fullAuth == TRUE ) { $vars = array( 'method' => 'user.getrecommendedartists', 'api_key' => $this->auth->apiKey, 'sk' => $this->auth->sessionKey ); $vars = array_merge($vars, $methodVars); $apiSig = $this->apiSig($this->auth->secret, $vars); $vars['api_sig'] = $apiSig; if ( $call = $this->apiGetCall($vars) ) { if ( count($call->recommendations->artist) > 0 ) { $reccomendedArtists['user'] = (string) $call->recommendations['user']; $reccomendedArtists['page'] = (string) $call->recommendations['page']; $reccomendedArtists['perPage'] = (string) $call->recommendations['perPage']; $reccomendedArtists['totalPages'] = (string) $call->recommendations['totalPages']; $reccomendedArtists['total'] = (string) $call->recommendations['total']; $i = 0; foreach ( $call->recommendations->artist as $artist ) { $reccomendedArtists['artists'][$i]['name'] = (string) $artist->name; $reccomendedArtists['artists'][$i]['mbid'] = (string) $artist->mbid; $reccomendedArtists['artists'][$i]['url'] = (string) $artist->url; $reccomendedArtists['artists'][$i]['streamable'] = (string) $artist->streamable; $reccomendedArtists['artists'][$i]['image']['small'] = (string) $artist->image[0]; $reccomendedArtists['artists'][$i]['image']['medium'] = (string) $artist->image[1]; $reccomendedArtists['artists'][$i]['image']['large'] = (string) $artist->image[2]; $i++; } return $reccomendedArtists; } else { $this->handleError(90, 'This user has no recommendations'); return FALSE; } } else { 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; } } /** * Get a paginated list of all events recommended to a user by Last.fm, based on their listening profile (Requires full auth) * @param array $methodVars An array with the following optional values: page, limit * @return array */ public function getRecommendedEvents($methodVars = Array()) { // Only allow full authed calls if ( $this->fullAuth == TRUE ) { $vars = array( 'method' => 'user.getrecommendedevents', 'api_key' => $this->auth->apiKey, 'sk' => $this->auth->sessionKey ); $vars = array_merge($vars, $methodVars); $apiSig = $this->apiSig($this->auth->secret, $vars); $vars['api_sig'] = $apiSig; if ( $call = $this->apiGetCall($vars) ) { if ( count($call->events->event) > 0 ) { $reccomendedEvents['user'] = (string) $call->events['user']; $reccomendedEvents['page'] = (string) $call->events['page']; $reccomendedEvents['perPage'] = (string) $call->events['perPage']; $reccomendedEvents['totalPages'] = (string) $call->events['totalPages']; $reccomendedEvents['total'] = (string) $call->events['total']; $i = 0; foreach ( $call->events->event as $event ) { $reccomendedEvents['events'][$i]['id'] = (string) $event->id; $reccomendedEvents['events'][$i]['title'] = (string) $event->title; $ii = 0; foreach ( $event->artists->artist as $artist ) { $reccomendedEvents['events'][$i]['artists'][$ii] = (string) $artist; $ii++; } $reccomendedEvents['events'][$i]['headliner'] = (string) $event->artists->headliner; $reccomendedEvents['events'][$i]['venue']['name'] = (string) $event->venue->name; $reccomendedEvents['events'][$i]['venue']['location']['city'] = (string) $event->venue->location->city; $reccomendedEvents['events'][$i]['venue']['location']['country'] = (string) $event->venue->location->country; $reccomendedEvents['events'][$i]['venue']['location']['street'] = (string) $event->venue->location->street; $reccomendedEvents['events'][$i]['venue']['location']['postcode'] = (string) $event->venue->location->postalcode; $geopoint = $event->venue->location->children('http://www.w3.org/2003/01/geo/wgs84_pos#'); $reccomendedEvents['events'][$i]['venue']['location']['geopoint']['lat'] = (string) $geopoint->point->lat; $reccomendedEvents['events'][$i]['venue']['location']['geopoint']['long'] = (string) $geopoint->point->long; $reccomendedEvents['events'][$i]['venue']['location']['timezone'] = (string) $event->venue->location->timezone; $reccomendedEvents['events'][$i]['venue']['url'] = (string) $call->venue->url; $reccomendedEvents['events'][$i]['startdate'] = strtotime(trim((string) $event->startDate)); $reccomendedEvents['events'][$i]['description'] = (string) $event->description; $reccomendedEvents['events'][$i]['image']['small'] = (string) $event->image[0]; $reccomendedEvents['events'][$i]['image']['medium'] = (string) $event->image[1]; $reccomendedEvents['events'][$i]['image']['large'] = (string) $event->image[2]; $reccomendedEvents['events'][$i]['attendance'] = (string) $event->attendance; $reccomendedEvents['events'][$i]['reviews'] = (string) $event->reviews; $reccomendedEvents['events'][$i]['tag'] = (string) $event->tag; $reccomendedEvents['events'][$i]['url'] = (string) $event->url; $i++; } return $reccomendedEvents; } else { $this->handleError(90, 'This user has no recommendations'); return FALSE; } } else { 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; } } /** * Get shouts for this user * @param array $methodVars An array with the following required values: user * @return array */ public function getShouts($methodVars) { if ( !empty($methodVars['user']) ) { $vars = array( 'method' => 'user.getshouts', 'api_key' => $this->auth->apiKey ); $vars = array_merge($vars, $methodVars); if ( $call = $this->apiGetCall($vars) ) { $shouts['user'] = (string)$call->shouts['user']; $shouts['total'] = (string)$call->shouts['total']; $i = 0; foreach ( $call->shouts->shout as $shout ) { $shouts['shouts'][$i]['body'] = (string)$shout->body; $shouts['shouts'][$i]['author'] = (string)$shout->author; $shouts['shouts'][$i]['date'] = strtotime((string)$shout->date); $i++; } return $shouts; } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include artist variable in the call for this method'); return FALSE; } } /** * Get the top albums listened to by a user. You can stipulate a time period. Sends the overall chart by default * @param array $methodVars An array with the following required values: user and optional value: period * @return array */ public function getTopAlbums($methodVars) { // Check for required variables if ( !empty($methodVars['user']) ) { $vars = array( 'method' => 'user.gettopalbums', 'api_key' => $this->auth->apiKey ); $vars = array_merge($vars, $methodVars); if ( $call = $this->apiGetCall($vars) ) { if ( count($call->topalbums->album) > 0 ) { $i = 0; foreach ( $call->topalbums->album as $album ) { $topalbums[$i]['name'] = (string) $album->name; $topalbums[$i]['playcount'] = (string) $album->playcount; $topalbums[$i]['mbid'] = (string) $album->mbid; $topalbums[$i]['url'] = (string) $album->url; $topalbums[$i]['artist']['name'] = (string) $album->artist->name; $topalbums[$i]['artist']['mbid'] = (string) $album->artist->mbid; $topalbums[$i]['artist']['url'] = (string) $album->artist->url; $topalbums[$i]['images']['small'] = (string) $album->image[0]; $topalbums[$i]['images']['medium'] = (string) $album->image[1]; $topalbums[$i]['images']['large'] = (string) $album->image[2]; $i++; } return $topalbums; } else { $this->handleError(90, 'This user has no top albums'); return FALSE; } } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include artist variable in the call for this method'); return FALSE; } } /** * Get the top artists listened to by a user. You can stipulate a time period. Sends the overall chart by default * @param array $methodVars An array with the following required values: user and optional value: period * @return array */ public function getTopArtists($methodVars) { // Check for required variables if ( !empty($methodVars['user']) ) { $vars = array( 'method' => 'user.gettopartists', 'api_key' => $this->auth->apiKey ); $vars = array_merge($vars, $methodVars); if ( $call = $this->apiGetCall($vars) ) { if ( count($call->topartists->artist) > 0 ) { $i = 0; foreach ( $call->topartists->artist as $artist ) { $topartists[$i]['name'] = (string) $artist->name; $topartists[$i]['rank'] = (string) $artist['rank']; $topartists[$i]['playcount'] = (string) $artist->playcount; $topartists[$i]['mbid'] = (string) $artist->mbid; $topartists[$i]['url'] = (string) $artist->url; $topartists[$i]['streamable'] = (string) $artist->streamable; $topartists[$i]['images']['small'] = (string) $artist->image[0]; $topartists[$i]['images']['medium'] = (string) $artist->image[1]; $topartists[$i]['images']['large'] = (string) $artist->image[2]; $i++; } return $topartists; } else { $this->handleError(90, 'This user has no top artists'); return FALSE; } } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include artist variable in the call for this method'); return FALSE; } } /** * Get the top tags used by this user * @param array $methodVars An array with the following required values: user and optional value: limit * @return array */ public function getTopTags($methodVars) { // Check for required variables if ( !empty($methodVars['user']) ) { $vars = array( 'method' => 'user.gettoptags', 'api_key' => $this->auth->apiKey ); $vars = array_merge($vars, $methodVars); if ( $call = $this->apiGetCall($vars) ) { if ( count($call->toptags->tag) > 0 ) { $i = 0; foreach ( $call->toptags->tag as $tag ) { $toptags[$i]['name'] = (string) $tag->name; $toptags[$i]['count'] = (string) $tag->count; $toptags[$i]['url'] = (string) $tag->url; $i++; } return $toptags; } else { $this->handleError(90, 'This user has no top tags'); return FALSE; } } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include artist variable in the call for this method'); return FALSE; } } /** * Get the top tracks listened to by a user. You can stipulate a time period. Sends the overall chart by default * @param array $methodVars An array with the following required values: user and optional value: period * @return array */ public function getTopTracks($methodVars) { // Check for required variables if ( !empty($methodVars['user']) ) { $vars = array( 'method' => 'user.gettoptracks', 'api_key' => $this->auth->apiKey ); $vars = array_merge($vars, $methodVars); if ( $call = $this->apiGetCall($vars) ) { if ( count($call->toptracks->track) > 0 ) { $i = 0; foreach ( $call->toptracks->track as $track ) { $toptracks[$i]['name'] = (string) $track->name; $toptracks[$i]['rank'] = (string) $track['rank']; $toptracks[$i]['playcount'] = (string) $track->playcount; $toptracks[$i]['mbid'] = (string) $track->mbid; $toptracks[$i]['url'] = (string) $track->url; $toptracks[$i]['streamable'] = (string) $track->streamable; $toptracks[$i]['fulltrack'] = (string) $track->streamable['fulltrack']; $toptracks[$i]['artist']['name'] = (string) $track->artist->name; $toptracks[$i]['artist']['mbid'] = (string) $track->artist->mbid; $toptracks[$i]['artist']['url'] = (string) $track->artist->url; $toptracks[$i]['images']['small'] = (string) $track->image[0]; $toptracks[$i]['images']['medium'] = (string) $track->image[1]; $toptracks[$i]['images']['large'] = (string) $track->image[2]; $i++; } return $toptracks; } else { $this->handleError(90, 'This user has no top tracks'); return FALSE; } } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include artist variable in the call for this method'); return FALSE; } } /** * Get an album chart for a user profile, for a given date range. If no date range is supplied, it will return the most recent album chart for this user * @param array $methodVars An array with the following required values: user and optional values: to, from * @return array */ public function getWeeklyAlbumChart($methodVars) { // Check for required variables if ( !empty($methodVars['user']) ) { $vars = array( 'method' => 'user.getweeklyalbumchart', 'api_key' => $this->auth->apiKey ); $vars = array_merge($vars, $methodVars); if ( $call = $this->apiGetCall($vars) ) { $i = 0; foreach ( $call->weeklyalbumchart->album as $album ) { $weeklyalbums[$i]['name'] = (string) $album->name; $weeklyalbums[$i]['rank'] = (string) $album['rank']; $weeklyalbums[$i]['artist']['name'] = (string) $album->artist; $weeklyalbums[$i]['artist']['mbid'] = (string) $album->artist['mbid']; $weeklyalbums[$i]['mbid'] = (string) $album->mbid; $weeklyalbums[$i]['playcount'] = (string) $album->playcount; $weeklyalbums[$i]['url'] = (string) $album->url; $i++; } return $weeklyalbums; } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include artist variable in the call for this method'); return FALSE; } } /** * Get an artist chart for a user profile, for a given date range. If no date range is supplied, it will return the most recent artist chart for this user * @param array $methodVars An array with the following required values: user and optional values: to, from * @return array */ public function getWeeklyArtistChart($methodVars) { // Check for required variables if ( !empty($methodVars['user']) ) { $vars = array( 'method' => 'user.getweeklyartistchart', 'api_key' => $this->auth->apiKey ); $vars = array_merge($vars, $methodVars); if ( $call = $this->apiGetCall($vars) ) { $i = 0; foreach ( $call->weeklyartistchart->artist as $artist ) { $weeklyartists[$i]['name'] = (string) $artist->name; $weeklyartists[$i]['rank'] = (string) $artist['rank']; $weeklyartists[$i]['mbid'] = (string) $artist->mbid; $weeklyartists[$i]['playcount'] = (string) $artist->playcount; $weeklyartists[$i]['url'] = (string) $artist->url; $i++; } return $weeklyartists; } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include artist variable in the call for this method'); return FALSE; } } /** * Get a list of available charts for this user, expressed as date ranges which can be sent to the chart services * @param array $methodVars An array with the following required values: user * @return array */ public function getWeeklyChartList($methodVars) { // Check for required variables if ( !empty($methodVars['user']) ) { $vars = array( 'method' => 'user.getweeklychartlist', 'api_key' => $this->auth->apiKey ); $vars = array_merge($vars, $methodVars); if ( $call = $this->apiGetCall($vars) ) { $i = 0; foreach ( $call->weeklychartlist->chart as $chart ) { $weeklychartlist[$i]['from'] = (string) $chart['from']; $weeklychartlist[$i]['to'] = (string) $chart['to']; $i++; } return $weeklychartlist; } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include artist variable in the call for this method'); return FALSE; } } /** * Get a track chart for a user profile, for a given date range. If no date range is supplied, it will return the most recent track chart for this user * @param array $methodVars An array with the following required values: user and optional values: to, from * @return array */ public function getWeeklyTrackChart($methodVars) { // Check for required variables if ( !empty($methodVars['user']) ) { $vars = array( 'method' => 'user.getweeklytrackchart', 'api_key' => $this->auth->apiKey ); $vars = array_merge($vars, $methodVars); if ( $call = $this->apiGetCall($vars) ) { $i = 0; foreach ( $call->weeklytrackchart->track as $track ) { $weeklytracks[$i]['name'] = (string) $track->name; $weeklytracks[$i]['rank'] = (string) $track['rank']; $weeklytracks[$i]['artist']['name'] = (string) $track->artist; $weeklytracks[$i]['artist']['mbid'] = (string) $track->artist['mbid']; $weeklytracks[$i]['mbid'] = (string) $track->mbid; $weeklytracks[$i]['playcount'] = (string) $track->playcount; $weeklytracks[$i]['url'] = (string) $track->url; $i++; } return $weeklytracks; } else { return FALSE; } } else { // Give a 91 error if incorrect variables are used $this->handleError(91, 'You must include artist variable in the call for this method'); return FALSE; } } /** * Shout on this user's shoutbox (Requires full auth) * @param array $methodVars An array with the following required values: user, message * @return boolean */ public function shout($methodVars) { // Only allow full authed calls if ( $this->fullAuth == TRUE ) { // Check for required variables if ( !empty($methodVars['user']) && !empty($methodVars['message']) ) { $vars = array( 'method' => 'user.shout', '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 user and message variables 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; } } } ?>