Exemplo n.º 1
0
/**
 * createRadioSongPlaylist function.
 *
 * @access public
 * @param mixed $w
 * @param mixed $track_name
 * @param mixed $track_uri
 * @param mixed $artist_name
 * @return void
 */
function createRadioSongPlaylist($w, $track_name, $track_uri, $artist_name)
{
    //
    // Read settings from JSON
    //
    $settings = getSettings($w);
    $radio_number_tracks = $settings->radio_number_tracks;
    $userid = $settings->userid;
    $echonest_api_key = $settings->echonest_api_key;
    $country_code = $settings->country_code;
    $is_public_playlists = $settings->is_public_playlists;
    //
    // Read settings from JSON
    //
    $settings = getSettings($w);
    $radio_number_tracks = $settings->radio_number_tracks;
    $userid = $settings->userid;
    $echonest_api_key = $settings->echonest_api_key;
    $country_code = $settings->country_code;
    $is_public_playlists = $settings->is_public_playlists;
    $public = false;
    if ($is_public_playlists) {
        $public = true;
    }
    $tmp = explode(':', $track_uri);
    if ($tmp[1] == 'local') {
        // local track, look it up online
        // spotify:local:The+D%c3%b8:On+My+Shoulders+-+Single:On+My+Shoulders:318
        // spotify:local:Damien+Rice:B-Sides:Woman+Like+a+Man+%28Live%2c+Unplugged%29:284
        $query = 'track:' . urldecode(strtolower($tmp[4])) . ' artist:' . urldecode(strtolower($tmp[2]));
        $results = searchWebApi($w, $country_code, $query, 'track', 1);
        if (count($results) > 0) {
            // only one track returned
            $track = $results[0];
            $track_uri = $track->uri;
        } else {
            logMsg("Could not find track from uri: {$track_uri}");
            return false;
        }
    }
    $json = doJsonRequest($w, 'http://developer.echonest.com/api/v4/playlist/static?api_key=' . $echonest_api_key . '&song_id=' . $track_uri . '&format=json&results=' . $radio_number_tracks . '&distribution=focused&type=song-radio&bucket=id:spotify&bucket=tracks');
    $response = $json->response;
    $newplaylisttracks = array();
    foreach ($response->songs as $song) {
        foreach ($song->tracks as $track) {
            $foreign_id = $track->foreign_id;
            $tmp = explode(':', $foreign_id);
            $newplaylisttracks[] = $tmp[2];
            // only take one
            break;
        }
    }
    if (count($newplaylisttracks) > 0) {
        try {
            $api = getSpotifyWebAPI($w);
            $json = $api->createUserPlaylist($userid, array('name' => 'Song radio for ' . escapeQuery($track_name) . ' by ' . escapeQuery($artist_name), 'public' => $public));
        } catch (SpotifyWebAPI\SpotifyWebAPIException $e) {
            logMsg("Error(createUserPlaylist): radio song " . escapeQuery($track_name) . " (exception " . print_r($e) . ")");
            handleSpotifyWebAPIException($w, $e);
            return false;
        }
        $ret = addTracksToPlaylist($w, $newplaylisttracks, $json->uri, $json->name, false, false);
        if (is_numeric($ret) && $ret > 0) {
            refreshLibrary($w);
            return;
        } elseif (is_numeric($ret) && $ret == 0) {
            displayNotificationWithArtwork('Playlist ' . $json->name . ' cannot be added', './images/warning.png', 'Error!');
            return;
        }
    } else {
        displayNotificationWithArtwork('Track was not found in Echo Nest', './images/warning.png', 'Error!');
        return false;
    }
    return true;
}
Exemplo n.º 2
0
                                         if (file_exists($w->data() . '/update_library_in_progress')) {
                                             displayNotificationWithArtwork("Cannot modify library while update is in progress", './images/warning.png', 'Error!');
                                             return;
                                         }
                                         updateLibrary($w);
                                         if ($userid != 'vdesabou') {
                                             stathat_ez_count('AlfredSpotifyMiniPlayer', 'update library', 1);
                                         }
                                         return;
                                     } else {
                                         if ($other_action == "refresh_library") {
                                             if (file_exists($w->data() . '/update_library_in_progress')) {
                                                 displayNotificationWithArtwork("Cannot modify library while update is in progress", './images/warning.png', 'Error!');
                                                 return;
                                             }
                                             refreshLibrary($w);
                                             if ($userid != 'vdesabou') {
                                                 stathat_ez_count('AlfredSpotifyMiniPlayer', 'update library', 1);
                                             }
                                             return;
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
 }