コード例 #1
0
ListResponse<PlaylistInfo*>* SpotifyPlaylistContainer::listPlaylists(
		PlaylistTask* task) {
	ListResponse<PlaylistInfo*>* response = new ListResponse<PlaylistInfo*>();
	response->setListType(ListTypePlaylist);
	CommandInfo info = task->getCommandInfo();
	bool sendName = ((info.ListFlags & Name) == Name);
	bool sendNumTracks = ((info.ListFlags & NumTracks) == NumTracks);
	bool sendDescription = ((info.ListFlags & Description) == Description);

	int numPlaylists = sp_playlistcontainer_num_playlists(playlistContainer);
	for (int i = 0; i < numPlaylists; i++) {
		if (sp_playlistcontainer_playlist_type(playlistContainer, i)
				== SP_PLAYLIST_TYPE_PLAYLIST) {
			sp_playlist* playlist = sp_playlistcontainer_playlist(
					playlistContainer, i);
			const char* name = sp_playlist_name(playlist);

			if (!(name[0] == '_' && name[1] == '_')) {
				PlaylistInfo* playlistInfo = new PlaylistInfo();
				playlistInfo->id = i;

				if (sendName) {
					playlistInfo->name = name;
				}
				if (sendNumTracks) {
					playlistInfo->numTracks = sp_playlist_num_tracks(playlist);
				}
				if (sendDescription) {
					playlistInfo->description = sp_playlist_get_description(
							playlist);
				}
				response->addMember(playlistInfo);
			}
		}
	}
	return response;
}
コード例 #2
0
ファイル: playlist.c プロジェクト: DaanMeijer/libspotify-php
PHP_METHOD(SpotifyPlaylist, getDescription)
{
	spotifyplaylist_object *p = (spotifyplaylist_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
	RETURN_STRING(sp_playlist_get_description(p->playlist), 1);
}
コード例 #3
0
json_t *playlist_to_json(sp_playlist *playlist, json_t *object) {
  assert(sp_playlist_is_loaded(playlist));

  // Owner
  sp_user *owner = sp_playlist_owner(playlist);
  const char *username = sp_user_display_name(owner);
  sp_user_release(owner);
  json_object_set_new_nocheck(object, "creator",
                              json_string_nocheck(username));

  // URI
  size_t playlist_uri_len = strlen("spotify:user:"******":playlist:") +
                            strlen("284on3DVWeAxWkgVuzZKGt");
  char *playlist_uri = malloc(playlist_uri_len);

  if (playlist_uri == NULL) {
    return NULL;
  }

  sp_link *playlist_link = sp_link_create_from_playlist(playlist);
  sp_link_as_string(playlist_link, playlist_uri, playlist_uri_len);
  sp_link_release(playlist_link);
  json_object_set_new(object, "uri", 
                      json_string_nocheck(playlist_uri));
  free(playlist_uri);

  // Title
  const char *title = sp_playlist_name(playlist);
  json_object_set_new(object, "title",
                      json_string_nocheck(title));

  // Collaborative
  playlist_to_json_set_collaborative(playlist, object);

  // Description
  const char *description = sp_playlist_get_description(playlist);

  if (description != NULL) {
    json_object_set_new(object, "description",
                        json_string_nocheck(description));
  }

  // Number of subscribers
  int num_subscribers = sp_playlist_num_subscribers(playlist);
  json_object_set_new(object, "subscriberCount",
                      json_integer(num_subscribers));

  // Tracks
  json_t *tracks = json_array();
  json_object_set_new(object, "tracks", tracks);
  char track_uri[kTrackLinkLength];

  for (int i = 0; i < sp_playlist_num_tracks(playlist); i++) {
    sp_track *track = sp_playlist_track(playlist, i);
    sp_link *track_link = sp_link_create_from_track(track, 0);
    sp_link_as_string(track_link, track_uri, kTrackLinkLength);
    json_array_append(tracks, json_string_nocheck(track_uri));
    sp_link_release(track_link);
  }

  return object;
}