config->item('base_url')?>public/scripts/audio-player/audio-player.js">
____________________
* 5. Paste the following wherever you want the MP3 player embedded in your theme templates:
____________________
has_audio()): ?>
get_audio()?>
____________________
*/
class Last_fm {
function pre_db($item, $original)
{
//Get Title, break up, set artist and track name
$track_info = explode(' – ', $item->item_title);
$encoded_artist = urlencode($track_info[0]);
$encoded_track = urlencode($track_info[1]);
$api_key = "b289b45792952ec5faf60e486c64e8aa";
//Form Last.fm API call URL using track info
$lastfm_URL = "http://ws.audioscrobbler.com/2.0/?method=track.getinfo&api_key=$api_key&artist=$encoded_artist&track=$encoded_track";
//Get Last.fm track XML
$c1 = curl_init();
curl_setopt($c1, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c1, CURLOPT_URL, $lastfm_URL);
$lastfm_xml = curl_exec($c1);
curl_close($c1);
$lastfm_track = new SimpleXMLElement($lastfm_xml);
//Track details
$item->item_data['track_title'] = (string)($lastfm_track->track->name);
$item->item_data['track_url'] = (string)($lastfm_track->track->url);
$item->item_data['duration'] = (string)($lastfm_track->track->duration);
$item->item_data['listeners'] = (string)($lastfm_track->track->listeners);
$item->item_data['playcount'] = (string)($lastfm_track->track->playcount);
$item->item_data['streamable'] = (bool)($lastfm_track->results->trackmatches->track->streamable);
//Artist details
$item->item_data['artist'] = (string)($lastfm_track->track->artist->name);
$item->item_data['artist_url'] = (string)($lastfm_track->track->artist->url);
//Album details
$item->item_data['album_title'] = (string)($lastfm_track->track->album[0]->title);
$item->item_data['album_url'] = (string)($lastfm_track->track->album[0]->url);
$item->item_data['image_url_small'] = (string)($lastfm_track->track->album[0]->image[0]);
$item->item_data['image_url_medium'] = (string)($lastfm_track->track->album[0]->image[1]);
$item->item_data['image_url_large'] = (string)($lastfm_track->track->album[0]->image[2]);
//Tags
for ($i = 0; $i < 5; $i++) {
$item->item_data['tags'][$i] = (string)($lastfm_track->track->toptags->tag[$i]->name);
}
//Wiki entry
$item->item_data['wiki_summary'] = (string)($lastfm_track->track->wiki->summary);
$item->item_data['wiki_entry'] = (string)($lastfm_track->track->wiki->content);
$item->item_data['wiki_publish_date'] = (string)($lastfm_track->track->wiki->published);
//Markdown content
$item->item_content = '['.$item->item_data['track_title'].']('.$item->item_data['track_url'].') by ['.$item->item_data['artist'].']('.$item->item_data['artist_url'].')';
//OR HTML content (uncomment the line below and comment out the line above)
//$item->item_content = ''.$item->item_data['track_title'].' by '.$item->item_data['artist'].'';
//Form Seeqpod API call URL using encoded track info
$seeqpod_uid = "476fca868e51f0ac7821118f4c277cb9abd97573";
$seeqpod_URL = "http://www.seeqpod.com/api/v0.2/$seeqpod_uid/music/search/$encoded_artist+$encoded_track";
//Get Seeqpod search results XML
$c2 = curl_init();
curl_setopt($c2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c2, CURLOPT_URL, $seeqpod_URL);
$seeqpod_xml = curl_exec($c2);
curl_close($c2);
$seeqpod_tracks = new SimpleXMLElement($seeqpod_xml);
//Loop through Seeqpod MP3 URLs testing whether broken link
for ($i = 0; $i < 10; $i++)
{
$mp3_URL = (string)($seeqpod_tracks->trackList->track[$i]->location);
$mp3_URL = str_replace(" ", "%20", $mp3_URL);
$c3 = curl_init();
curl_setopt($c3, CURLOPT_URL, $mp3_URL);
curl_setopt($c3, CURLOPT_HEADER, true);
curl_setopt($c3, CURLOPT_NOBODY, true);
curl_setopt($c3, CURLOPT_RETURNTRANSFER, true);
$header = curl_exec($c3);
curl_close($c3);
//For the first good MP3 found, store its URL and break loop
if(strpos($header, "Content-Type: audio/mpeg"))
{
//MP3 File
$item->item_data['audio'] = $mp3_URL;
break;
}
}
return $item;
}
function pre_display($item)
{
//If no album art, set images as blank last.fm fall-backs
if(!$item->item_data['image_url_small'])
{
//Doesn't seem to be a small fall-back?
$item->item_data['image_url_small'] = "http://cdn.last.fm/flatness/catalogue/noimage/2/default_album_medium.png";
$item->item_data['image_url_medium'] = "http://cdn.last.fm/flatness/catalogue/noimage/2/default_album_large.png";
$item->item_data['image_url_large'] = "http://cdn.last.fm/flatness/catalogue/noimage/2/default_album_large.png";
}
//Change this to the image size you want
$item->item_data['image'] = $item->item_data['image_url_medium'];
//Prepare flash mp3 player
if($item->item_data['audio'])
{
$item->item_data['audio'] = '
';
}
return $item;
}
}
?>