auth = $auth;
$this->fullAuth = $fullAuth;
$this->config = $config;
}
/**
* Tag an album using a list of user supplied tags. (Requires full auth)
* @param array $methodVars An array with the following required values: album, artist, tags
* @return boolean
*/
public function addTags($methodVars) {
// Only allow full authed calls
if ( $this->fullAuth == TRUE ) {
// Check for required variables
if ( !empty($methodVars['album']) && !empty($methodVars['artist']) && !empty($methodVars['tags']) ) {
// If the tags variables is an array build a CS list
if ( is_array($methodVars['tags']) ) {
$tags = '';
foreach ( $methodVars['tags'] as $tag ) {
$tags .= $tag.',';
}
$tags = substr($tags, 0, -1);
}
else {
$tags = $methodVars['tags'];
}
$methodVars['tags'] = $tags;
// Set the call variables
$vars = array(
'method' => 'album.addtags',
'api_key' => $this->auth->apiKey,
'sk' => $this->auth->sessionKey
);
$vars = array_merge($vars, $methodVars);
// Generate a call signiture
$sig = $this->apiSig($this->auth->secret, $vars);
$vars['api_sig'] = $sig;
// Do the call and check for errors
if ( $call = $this->apiPostCall($vars) ) {
// If none return true
return TRUE;
}
else {
// If there is return false
return FALSE;
}
}
else {
// Give a 91 error if incorrect variables are used
$this->handleError(91, 'You must include album, artist and tags 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;
}
}
/**
* Get the metadata for an album on Last.fm using the album name or a musicbrainz id
* @param array $methodVars An array with the following required values: album and optional values: artist, mbid
* @return array
*/
public function getInfo($methodVars) {
// Set the call variables
$vars = array(
'method' => 'album.getinfo',
'api_key' => $this->auth->apiKey
);
$vars = array_merge($vars, $methodVars);
$info = array();
if ( $call = $this->apiGetCall($vars) ) {
$info['name'] = (string) $call->album->name;
$info['artist'] = (string) $call->album->artist;
$info['lastfmid'] = (string) $call->album->id;
$info['mbid'] = (string) $call->album->mbid;
$info['url'] = (string) $call->album->url;
$info['releasedate'] = strtotime(trim((string) $call->album->releasedate));
$info['image']['small'] = (string) $call->album->image;
$info['image']['medium'] = (string) $call->album->image[1];
$info['image']['large'] = (string) $call->album->image[2];
$info['listeners'] = (string) $call->album->listeners;
$info['playcount'] = (string) $call->album->playcount;
$i = 0;
foreach ( $call->album->toptags->tag as $tags ) {
$info['toptags'][$i]['name'] = (string) $tags->name;
$info['toptags'][$i]['url'] = (string) $tags->url;
$i++;
}
//et ca commence les corrections
$i=0;
foreach ( $call->album->tracks->track as $track){
$info['tracks'][$i] = array(
'name' => (string) $track->name,
'duration' => (string) $track->duration,
'url' => (string) $track->url
);
$i++;
}
return $info;
}
else {
return FALSE;
}
}
/**
* Get the tags applied by an individual user to an album on Last.fm
* @param array $methodVars An array with the following required values: album, artist
* @return array
*/
public function getTags($methodVars) {
// Only allow full authed calls
if ( $this->fullAuth == TRUE ) {
// Check for required variables
if ( !empty($methodVars['album']) && !empty($methodVars['artist']) ) {
// Set the variables
$vars = array(
'method' => 'album.gettags',
'api_key' => $this->auth->apiKey,
'sk' => $this->auth->sessionKey
);
$vars = array_merge($vars, $methodVars);
// Generate a call signiture
$sig = $this->apiSig($this->auth->secret, $vars);
$vars['api_sig'] = $sig;
$tags = array();
// Make the call
if ( $call = $this->apiGetCall($vars) ) {
if ( count($call->tags->tag) > 0 ) {
$i = 0;
foreach ( $call->tags->tag as $tag ) {
$tags[$i]['name'] = (string) $tag->name;
$tags[$i]['url'] = (string) $tag->url;
$i++;
}
return $tags;
}
else {
$this->handleError(90, 'User has no tags for this artist');
return FALSE;
}
}
else {
return FALSE;
}
}
else {
// Give a 91 error if incorrect variables are used
$this->handleError(91, 'You must include album and artist 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;
}
}
/**
* Remove a user's tag from an album. (Requires full auth)
* @param array $methodVars An array with the following required values: album, artist, tag
* @return boolean
*/
public function removeTag($methodVars) {
// Only allow full authed calls
if ( $this->fullAuth == TRUE ) {
// Check for required variables
if ( !empty($methodVars['album']) && !empty($methodVars['artist']) && !empty($methodVars['tag']) ) {
// Set the variables
$vars = array(
'method' => 'album.removetag',
'api_key' => $this->auth->apiKey,
'sk' => $this->auth->sessionKey
);
$vars = array_merge($vars, $methodVars);
// Generate a call signature
$sig = $this->apiSig($this->auth->secret, $vars);
$vars['api_sig'] = $sig;
// Do the call
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 album, artist and tag 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;
}
}
/**
* Search for an album by name. Returns album matches sorted by relevance
* @param array $methodVars An array with the following required values: album
* @return array
*/
public function search($methodVars) {
// Check for required variables
if ( !empty($methodVars['album']) ) {
$vars = array(
'method' => 'album.search',
'api_key' => $this->auth->apiKey
);
$vars = array_merge($vars, $methodVars);
$searchresults = array();
if ( $call = $this->apiGetCall($vars) ) {
$opensearch = $call->results->children('http://a9.com/-/spec/opensearch/1.1/');
if ( $opensearch->totalResults > 0 ) {
$searchresults['totalResults'] = (string) $opensearch->totalResults;
$searchresults['startIndex'] = (string) $opensearch->startIndex;
$searchresults['itemsPerPage'] = (string) $opensearch->itemsPerPage;
$i = 0;
foreach ( $call->results->albummatches->album as $album ) {
$searchresults['results'][$i]['name'] = (string) $album->name;
$searchresults['results'][$i]['artist'] = (string) $album->artist;
$searchresults['results'][$i]['id'] = (string) $album->id;
$searchresults['results'][$i]['url'] = (string) $album->url;
$searchresults['results'][$i]['streamable'] = (string) $album->streamable;
$searchresults['results'][$i]['image']['small'] = (string) $album->image[0];
$searchresults['results'][$i]['image']['medium'] = (string) $album->image[1];
$searchresults['results'][$i]['image']['large'] = (string) $album->image[2];
$i++;
}
return $searchresults;
}
else {
// No tagsare found
$this->handleError(90, 'No results');
return FALSE;
}
}
else {
return FALSE;
}
}
else {
// Give a 91 error if incorrect variables are used
$this->handleError(91, 'You must include album varialbe in the call for this method');
return FALSE;
}
}
}
?>