The browse.c example shows how you can use the album, artist, and browse functions. The example also include some rudimentary playlist browsing. It is part of the spshell program
#include "spshell.h"
#include "cmd.h"
{
char url[256];
int i;
#if WIN32
#else
#endif
printf("Track %s [%d:%02d] has %d artist(s), %d%% popularity",
duration / 60000,
(duration / 1000) % 60,
printf(", %d on disc %d",
printf("\n");
}
printf("\t\t%s\n", url);
}
{
int i;
printf("Album browse of \"%s\" (%d)\n",
puts("");
puts("");
}
{
int i;
puts("");
puts("");
}
static void SP_CALLCONV browse_album_callback(
sp_albumbrowse *browse,
void *userdata)
{
print_albumbrowse(browse);
else
fprintf(stderr, "Failed to browse album: %s\n",
cmd_done();
}
static void SP_CALLCONV browse_artist_callback(
sp_artistbrowse *browse,
void *userdata)
{
print_artistbrowse(browse);
else
fprintf(stderr, "Failed to browse artist: %s\n",
cmd_done();
}
static void track_browse_try(void)
{
print_track(track_browse);
break;
return;
default:
break;
}
metadata_updated_fn = NULL;
cmd_done();
}
static void playlist_browse_try(void)
{
int i, tracks;
metadata_updated_fn = playlist_browse_try;
printf("\tPlaylist not loaded\n");
return;
}
for(i = 0; i < tracks; i++) {
return;
}
printf("\tPlaylist and metadata loaded\n");
for(i = 0; i < tracks; i++) {
printf(" %5d: ", i + 1);
print_track(t);
}
playlist_browse = NULL;
metadata_updated_fn = NULL;
cmd_done();
}
int num_tracks, int position, void *userdata)
{
printf("\t%d tracks added\n", num_tracks);
}
static void SP_CALLCONV pl_tracks_removed(
sp_playlist *pl,
const int *tracks,
int num_tracks, void *userdata)
{
printf("\t%d tracks removed\n", num_tracks);
}
static void SP_CALLCONV pl_tracks_moved(
sp_playlist *pl,
const int *tracks,
int num_tracks, int new_position, void *userdata)
{
printf("\t%d tracks moved\n", num_tracks);
}
static void SP_CALLCONV pl_renamed(
sp_playlist *pl,
void *userdata)
{
}
static void SP_CALLCONV pl_state_change(
sp_playlist *pl,
void *userdata)
{
playlist_browse_try();
}
pl_tracks_added,
pl_tracks_removed,
pl_tracks_moved,
pl_renamed,
pl_state_change,
};
{
playlist_browse = pl;
playlist_browse_try();
}
static void browse_usage(void)
{
fprintf(stderr, "Usage: browse <spotify-uri>\n");
}
int cmd_browse(int argc, char **argv)
{
if (argc != 2) {
browse_usage();
return -1;
}
if (!link) {
fprintf(stderr, "Not a spotify link\n");
return -1;
}
default:
fprintf(stderr, "Can not handle link");
return -1;
break;
break;
metadata_updated_fn = track_browse_try;
track_browse_try();
break;
break;
}
return 0;
}