/** * 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; }
$ret = addTracksToPlaylist($w, getThePlaylistTracks($w, $playlist_uri), $setting[1], $setting[2], false); if ($userid != 'vdesabou') { stathat_ez_count('AlfredSpotifyMiniPlayer', 'add_or_remove', 1); } if (is_numeric($ret) && $ret > 0) { displayNotificationWithArtwork('Playlist ' . $playlist_name . ' added to ' . $setting[2] . ' playlist', $playlist_artwork_path, 'Add Playlist to Playlist'); return; } else { if (is_numeric($ret) && $ret == 0) { displayNotificationWithArtwork('Playlist ' . $playlist_name . ' is already in ' . $setting[2] . ' playlist', './images/warning.png', 'Error!'); return; } } } elseif ($album_uri != '') { $album_artwork_path = getTrackOrAlbumArtwork($w, $album_uri, true); $ret = addTracksToPlaylist($w, getTheAlbumTracks($w, $album_uri), $setting[1], $setting[2], false); if ($userid != 'vdesabou') { stathat_ez_count('AlfredSpotifyMiniPlayer', 'add_or_remove', 1); } if (is_numeric($ret) && $ret > 0) { displayNotificationWithArtwork('Album ' . $album_name . ' added to ' . $setting[2] . ' playlist', $album_artwork_path, 'Add Album to Playlist'); return; } else { if (is_numeric($ret) && $ret == 0) { displayNotificationWithArtwork('Album ' . $album_name . ' is already in ' . $setting[2] . ' playlist', './images/warning.png', 'Error!'); return; } } } } else { if ($setting[0] == "REMOVE_FROM_PLAYLIST") {