示例#1
0
文件: functions.php 项目: bycEEE/env
/**
 * 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;
}
示例#2
0
         $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") {