#include "lastfm.h"
int call = 0;
static GCond* cond = NULL;
void increaseCall()
{
call++;
}
void decreaseCall()
{
call--;
if(call <= 0)
g_cond_broadcast(cond);
}
void void_func(gpointer user_data, GError* error)
{
const char* func_name = user_data;
if(error)
g_printerr("%s: [ERROR] %s\n", func_name, error->message);
else
g_print("%s: [OK]\n", func_name);
decreaseCall();
}
void utf8_func(const gchar* string, gpointer user_data, GError* error)
{
const char* func_name = user_data;
if(error)
g_printerr("%s: [ERROR] %s\n", func_name, error->message);
else
g_print("%s: [OK] %s\n", func_name, string);
decreaseCall();
}
void uint_func(guint count, gpointer user_data, GError* error)
{
const char* func_name = user_data;
if(error)
g_printerr("%s: [ERROR] %s\n", func_name, error->message);
else
g_print("%s: [OK] %u\n", func_name, count);
decreaseCall();
}
void boolean_func(gboolean success, gpointer user_data, GError* error)
{
const char* func_name = user_data;
if(error)
g_printerr("%s: [ERROR] %s\n", func_name, error->message);
else
g_print("%s: [OK] %s\n", func_name, success ? "TRUE" : "FALSE");
decreaseCall();
}
void dt_func(struct tm dt, gpointer user_data, GError* error)
{
const char* func_name = user_data;
if(error)
g_printerr("%s: [ERROR] %s\n", func_name, error->message);
else
{
char time_buffer[256];
strftime(time_buffer, 255, "%a, %d %b %Y %H:%M:%S %z", &dt);
g_print("%s: [OK] %s\n", func_name, time_buffer);
}
decreaseCall();
}
void multi_utf8_func(const gchar* string, gpointer user_data, GError* error, gboolean is_end)
{
if(is_end)
{
decreaseCall();
return;
}
const char* func_name = user_data;
if(error)
g_printerr("%s: [ERROR] %s\n", func_name, error->message);
else
g_print("%s: [OK] %s\n", func_name, string);
}
int main(int argc, const char* args[])
{
lastfm_init();
cond = g_cond_new();
static const char atst[] = "Nine Inch Nails";
increaseCall();
artist_get_musicbrainz_id(atst, utf8_func, "artist_get_musicbrainz_id");
//artist_get_name(atst, utf8_func, "artist_get_name");
//call++;
increaseCall();
artist_get_url(atst, utf8_func, "artist_get_url");
increaseCall();
artist_get_image_url(atst, IMAGE_LARGE, utf8_func, "artist_get_image_url");
increaseCall();
artist_get_play_count(atst, uint_func, "artist_get_play_count");
increaseCall();
artist_get_listener_count(atst, uint_func, "artist_get_listener_count");
increaseCall();
artist_is_streamable(atst, boolean_func, "artist_is_streamable");
increaseCall();
artist_get_summary(atst, utf8_func, "artist_get_summary");
increaseCall();
artist_get_description(atst, utf8_func, "artist_get_description");
increaseCall();
artist_get_published_date_time(atst, dt_func, "artist_get_published_date_time");
increaseCall();
createv(gchar, tags);
addv(gchar, tags, g_strdup("test1"));
addv(gchar, tags, g_strdup("test2"));
artist_add_tags(atst, (const gchar**)tags, void_func, "artist_add_tags");
increaseCall();
artist_remove_tag(atst, tags[0], void_func, "artist_remove_tag");
increaseCall();
artist_remove_tag(atst, tags[1], void_func, "artist_remove_tag");
destroyv(gchar, tags);
static const char albm[] = "With Teeth";
static const char mbid[] = "df025315-4897-4759-ba77-d2cd09b5b4b6";
increaseCall();
album_get_musicbrainz_id(atst, albm, utf8_func, "album_get_musicbrainz_id");
increaseCall();
album_get_name(mbid, utf8_func, "album_get_name");
increaseCall();
album_get_artist_name(mbid, utf8_func, "album_get_artist_name");
increaseCall();
album_get_url(atst, albm, utf8_func, "album_get_url");
increaseCall();
album_get_release_date_time(atst, albm, dt_func, "album_get_release_date_time");
increaseCall();
album_get_image_url(atst, albm, IMAGE_LARGE, utf8_func, "album_get_image_url");
increaseCall();
album_get_listener_count(atst, albm, uint_func, "album_get_listener_count");
increaseCall();
album_get_play_count(atst, albm, uint_func, "album_get_play_count");
increaseCall();
album_get_top_tags(atst, albm, multi_utf8_func, "album_get_top_tags");
GMutex* mutex = g_mutex_new();
g_cond_wait(cond, mutex);
g_mutex_free(mutex);
g_cond_free(cond);
lastfm_destroy();
return 0;
}