search.c

The search.c example shows how you can use search functions. It is part of the spshell program

#include <string.h>

#include "spshell.h"
#include "cmd.h"


static void print_album(sp_album *album)
{
    printf("  Album \"%s\" (%d)\n",
           sp_album_name(album),
           sp_album_year(album));
}

static void print_artist(sp_artist *artist)
{
    printf("  Artist \"%s\"\n", sp_artist_name(artist));
}

static void print_search(sp_search *search)
{
    int i;

    printf("Query          : %s\n", sp_search_query(search));
    printf("Did you mean   : %s\n", sp_search_did_you_mean(search));
    printf("Tracks in total: %d\n", sp_search_total_tracks(search));
    puts("");

    for (i = 0; i < sp_search_num_tracks(search); ++i)
        print_track(sp_search_track(search, i));

    puts("");

    for (i = 0; i < sp_search_num_albums(search); ++i)
        print_album(sp_search_album(search, i));

    puts("");

    for (i = 0; i < sp_search_num_artists(search); ++i)
        print_artist(sp_search_artist(search, i));

    puts("");

    for (i = 0; i < sp_search_num_playlists(search); ++i) {
        // print some readily available metadata, the rest will
        // be available from the sp_playlist object loaded through
        // sp_search_playlist().
        printf("  Playlist \"%s\"\n", sp_search_playlist_name(search, i));
    }
}

static void SP_CALLCONV search_complete(sp_search *search, void *userdata)
{
    if (sp_search_error(search) == SP_ERROR_OK)
        print_search(search);
    else
        fprintf(stderr, "Failed to search: %s\n",
                sp_error_message(sp_search_error(search)));

    sp_search_release(search);
    cmd_done();
}



static void search_usage(void)
{
    fprintf(stderr, "Usage: search <query>\n");
}


int cmd_search(int argc, char **argv)
{
    char query[1024];
    int i;

    if (argc < 2) {
        search_usage();
        return -1;
    }

    query[0] = 0;
    for(i = 1; i < argc; i++)
        snprintf(query + strlen(query), sizeof(query) - strlen(query), "%s%s",
             i == 1 ? "" : " ", argv[i]);

    sp_search_create(g_session, query, 0, 100, 0, 100, 0, 100, 0, 100, SP_SEARCH_STANDARD, &search_complete, NULL);
    return 0;
}


int cmd_whatsnew(int argc, char **argv)
{
    sp_search_create(g_session, "tag:new", 0, 0, 0, 250, 0, 0, 0, 0, SP_SEARCH_STANDARD, &search_complete, NULL);
    return 0;
}

Generated on Wed Jun 13 2012 14:22:40.
Copyright © 2006–2012 Spotify Ltd