public function testInjectApi()
 {
     $client = new EchoNest_Client();
     $artistApiMock = $this->getMockBuilder('EchoNest_ApiInterface')->getMock();
     $client->setApi('artist', $artistApiMock);
     $this->assertSame($artistApiMock, $client->getArtistApi());
 }
예제 #2
0
 protected static function get_images($artist_name)
 {
     $images = array();
     if (AmpConfig::get('echonest_api_key')) {
         $echonest = new EchoNest_Client(new EchoNest_HttpClient_Requests());
         $echonest->authenticate(AmpConfig::get('echonest_api_key'));
         try {
             $images = $echonest->getArtistApi()->setName($artist_name)->getImages();
         } catch (Exception $e) {
             debug_event('echonest', 'EchoNest artist images error: ' . $e->getMessage(), '1');
         }
     }
     foreach (Plugin::get_plugins('get_photos') as $plugin_name) {
         $plugin = new Plugin($plugin_name);
         if ($plugin->load($GLOBALS['user'])) {
             $images += $plugin->_plugin->get_photos($artist_name);
         }
     }
     return $images;
 }
예제 #3
0
 public function __construct(EchoNest_HttpClientInterface $httpClient = null)
 {
     parent::__construct($httpClient);
 }
예제 #4
0
 public function load_all($track_details = true)
 {
     $mb = new MusicBrainz(new RequestsMbClient());
     $this->songs = array();
     try {
         $group = $mb->lookup('release-group', $this->mbid, array('releases'));
         // Set fresh data
         $this->name = $group->title;
         $this->year = date("Y", strtotime($group->{'first-release-date'}));
         // Load from database if already cached
         $this->songs = Song_preview::get_song_previews($this->mbid);
         if (count($group->releases) > 0) {
             $this->release_mbid = $group->releases[0]->id;
             if ($track_details && count($this->songs) == 0) {
                 // Use the first release as reference for track content
                 $release = $mb->lookup('release', $this->release_mbid, array('recordings'));
                 foreach ($release->media as $media) {
                     foreach ($media->tracks as $track) {
                         $song = array();
                         $song['disk'] = $media->position;
                         $song['track'] = $track->number;
                         $song['title'] = $track->title;
                         $song['mbid'] = $track->id;
                         if ($this->artist) {
                             $song['artist'] = $this->artist;
                         }
                         $song['artist_mbid'] = $this->artist_mbid;
                         $song['session'] = session_id();
                         $song['album_mbid'] = $this->mbid;
                         if (AmpConfig::get('echonest_api_key')) {
                             $echonest = new EchoNest_Client(new EchoNest_HttpClient_Requests());
                             $echonest->authenticate(AmpConfig::get('echonest_api_key'));
                             $enSong = null;
                             try {
                                 $enProfile = $echonest->getTrackApi()->profile('musicbrainz:track:' . $track->id);
                                 $enSong = $echonest->getSongApi()->profile($enProfile['song_id'], array('id:7digital-US', 'audio_summary', 'tracks'));
                             } catch (Exception $e) {
                                 debug_event('echonest', 'EchoNest track error on `' . $track->id . '` (' . $track->title . '): ' . $e->getMessage(), '1');
                             }
                             // Wans't able to get the song with MusicBrainz ID, try a search
                             if ($enSong == null) {
                                 if ($this->artist) {
                                     $artist = new Artist($this->artist);
                                     $artist_name = $artist->name;
                                 } else {
                                     $wartist = Wanted::get_missing_artist($this->artist_mbid);
                                     $artist_name = $wartist['name'];
                                 }
                                 try {
                                     $enSong = $echonest->getSongApi()->search(array('results' => '1', 'artist' => $artist_name, 'title' => $track->title, 'bucket' => array('id:7digital-US', 'audio_summary', 'tracks')));
                                 } catch (Exception $e) {
                                     debug_event('echonest', 'EchoNest song search error: ' . $e->getMessage(), '1');
                                 }
                             }
                             if ($enSong != null) {
                                 $song['file'] = $enSong[0]['tracks'][0]['preview_url'];
                                 debug_event('echonest', 'EchoNest `' . $track->title . '` preview: ' . $song['file'], '1');
                             }
                         }
                         $this->songs[] = new Song_Preview(Song_preview::insert($song));
                     }
                 }
             }
         }
     } catch (Exception $e) {
         $this->songs = array();
     }
     foreach ($this->songs as $song) {
         $song->f_album = $this->name;
         $song->format();
     }
 }
예제 #5
0
<?php

error_reporting(E_ALL);
require_once __DIR__ . '/lib/EchoNest/Autoloader.php';
EchoNest_Autoloader::register();
$musixapikey = '4cc9e7ad04391df298f95ede0ba7b286';
$email = $_REQUEST['email'] ? $_REQUEST['email'] : '*****@*****.**';
$start_date = $_REQUEST['start_date'] ? $_REQUEST['start_date'] : 0;
$end_date = $_REQUEST['end_date'] ? $_REQUEST['end_date'] : time();
$echonest = new EchoNest_Client();
$echonest->authenticate('R9RBK9MF4OKHSIVRW');
$html = file_get_contents('http://widget.soundwave.com/?feedType=feed&email=' . $email);
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXpath($dom);
$result = $xpath->query('//div/ul/li/div[@class="media-body"]');
$frequency = 0;
if ($result->length > 0) {
    $lyrics = '';
    for ($i = 0; $i < $result->length; $i++) {
        $trackHtml = $result->item($i)->childNodes;
        $time = $trackHtml->item(0)->textContent;
        $timeVal = substr($time, -1);
        switch ($timeVal) {
            case "m":
                $timeDiff = substr($time, 0, strlen($time) - 1) * 60;
                break;
            case "h":
            default:
                $timeDiff = substr($time, 0, strlen($time) - 1) * 60 * 60;
                break;
예제 #6
0
 /**
  * Get song preview.
  * @param string $track_mbid
  * @param string $artist_name
  * @param string $title
  * @return array
  */
 public function get_song_preview($track_mbid, $artist_name, $title)
 {
     $file = null;
     $echonest = new EchoNest_Client(new EchoNest_HttpClient_Requests());
     $echonest->authenticate(AmpConfig::get('echonest_api_key'));
     $enSong = null;
     try {
         $enProfile = $echonest->getTrackApi()->profile('musicbrainz:track:' . $track_mbid);
         $enSong = $echonest->getSongApi()->profile($enProfile['song_id'], array('id:7digital-US', 'audio_summary', 'tracks'));
     } catch (Exception $e) {
         debug_event('echonest', 'EchoNest track error on `' . $track_mbid . '` (' . $title . '): ' . $e->getMessage(), '1');
     }
     // Wans't able to get the song with MusicBrainz ID, try a search
     if ($enSong == null) {
         try {
             $enSong = $echonest->getSongApi()->search(array('results' => '1', 'artist' => $artist_name, 'title' => $title, 'bucket' => array('id:7digital-US', 'audio_summary', 'tracks')));
         } catch (Exception $e) {
             debug_event('echonest', 'EchoNest song search error: ' . $e->getMessage(), '1');
         }
     }
     if ($enSong != null) {
         $file = $enSong[0]['tracks'][0]['preview_url'];
         debug_event('echonest', 'EchoNest `' . $title . '` preview: ' . $file, '1');
     }
     return $file;
 }