// gcc -o test test.c `pkg-config --cflags --libs grilo-0.2` #include static GrlKeyID GRL_VIDEO_GAMES_SYSTEM_TYPE = GRL_METADATA_KEY_INVALID; static GrlKeyID register_metadata_key (GrlRegistry *registry, const char *name, const char *blurb) { GParamSpec *spec; GrlKeyID key; spec = g_param_spec_string (name, name, blurb, NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); key = grl_registry_register_metadata_key (registry, spec, NULL); g_param_spec_unref (spec); if (key == GRL_METADATA_KEY_INVALID) { key = grl_registry_lookup_metadata_key (registry, name); if (grl_metadata_key_get_type (key) != G_TYPE_STRING) { key = GRL_METADATA_KEY_INVALID; } } return key; } int main (int argc, char **argv) { GrlRegistry *reg; GrlSource *source; GrlMedia *media; GrlOperationOptions *options; GList *keys; GList *sources; grl_init (&argc, &argv); reg = grl_registry_get_default (); /* Create the key type for the system */ GRL_VIDEO_GAMES_SYSTEM_TYPE = register_metadata_key (reg, "video-games-system-type", "A string representing the system type"); g_setenv ("GRL_LUA_SOURCES_PATH", ".", TRUE); grl_registry_load_plugin_by_id (reg, "grl-lua-factory", NULL); sources = grl_plugin_get_sources (grl_registry_lookup_plugin (reg, "grl-lua-factory")); if (!sources) { g_warning ("No games related Lua sources available"); return 1; } /* Our source will be the first one */ source = sources->data; g_list_free (sources); /* Create our test media */ media = grl_media_new (); grl_media_set_title (media, "Sonic the Hedgehog"); grl_data_add_string (GRL_DATA (media), GRL_VIDEO_GAMES_SYSTEM_TYPE, "GEN"); keys = grl_metadata_key_list_new (GRL_METADATA_KEY_DESCRIPTION, GRL_METADATA_KEY_THUMBNAIL, GRL_METADATA_KEY_RATING, NULL); options = grl_operation_options_new (NULL); /* FIXME: * Here, we could also use GRL_RESOLVE_FULL, to look up using * every possible script */ grl_operation_options_set_flags (options, GRL_RESOLVE_NORMAL); grl_source_resolve_sync (source, media, keys, options, NULL); g_message ("description: %s", grl_media_get_description (media)); g_message ("thumbnail URL: %s", grl_media_get_thumbnail (media)); g_message ("rating: %f", grl_media_get_rating (media)); return 0; }