From e095b1dec9d0a6413df5bd9e825f58b597912be0 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Thu, 4 Mar 2010 17:10:15 +0100 Subject: [podcasts] Set media id when storing new podcasts. Minor code refactoring. --- src/podcasts/grl-podcasts.c | 79 ++++++++++++++++++++++----------------------- 1 file changed, 38 insertions(+), 41 deletions(-) diff --git a/src/podcasts/grl-podcasts.c b/src/podcasts/grl-podcasts.c index bec5145..ba721ef 100644 --- a/src/podcasts/grl-podcasts.c +++ b/src/podcasts/grl-podcasts.c @@ -767,6 +767,7 @@ store_podcast (sqlite3 *db, GrlContentMedia *podcast, GError **error) const gchar *title; const gchar *url; const gchar *desc; + gchar *id; g_debug ("store_podcast"); @@ -807,6 +808,10 @@ store_podcast (sqlite3 *db, GrlContentMedia *podcast, GError **error) } sqlite3_finalize (sql_stmt); + + id = g_strdup_printf ("%llu", sqlite3_last_insert_rowid (db)); + grl_content_media_set_id (podcast, id); + g_free (id); } static void @@ -1083,40 +1088,52 @@ read_feed_cb (gchar *xmldata, gpointer user_data) } } -static void -produce_podcast_contents (OperationSpec *os) +static sqlite3_stmt * +get_podcast_info (sqlite3 *db, const gchar *podcast_id) { gint r; sqlite3_stmt *sql_stmt = NULL; - sqlite3 *db; - GError *error = NULL; gchar *sql; - gchar *url; - g_debug ("produce_podcast_contents"); + g_debug ("get_podcast_info"); - /* First we get some information about the podcast */ - db = GRL_PODCASTS_SOURCE (os->source)->priv->db; - sql = g_strdup_printf (GRL_SQL_GET_PODCAST_BY_ID, os->media_id); + sql = g_strdup_printf (GRL_SQL_GET_PODCAST_BY_ID, podcast_id); g_debug ("%s", sql); r = sqlite3_prepare_v2 (db, sql, strlen (sql), &sql_stmt, NULL); g_free (sql); if (r != SQLITE_OK) { g_warning ("Failed to retrieve podcast '%s': %s", - os->media_id, sqlite3_errmsg (db)); - error = g_error_new (GRL_ERROR, - os->error_code, - "Failed to retrieve podcast information"); - os->callback (os->source, os->operation_id, NULL, 0, os->user_data, error); - g_error_free (error); - g_free (os); - return; + podcast_id, sqlite3_errmsg (db)); + return NULL; } while ((r = sqlite3_step (sql_stmt)) == SQLITE_BUSY); if (r == SQLITE_ROW) { + return sql_stmt; + } else { + g_warning ("Failed to retrieve podcast information: %s", + sqlite3_errmsg (db)); + sqlite3_finalize (sql_stmt); + return NULL; + } +} + +static void +produce_podcast_contents (OperationSpec *os) +{ + sqlite3_stmt *sql_stmt = NULL; + sqlite3 *db; + GError *error; + gchar *url; + + g_debug ("produce_podcast_contents"); + + /* First we get some information about the podcast */ + db = GRL_PODCASTS_SOURCE (os->source)->priv->db; + sql_stmt = get_podcast_info (db, os->media_id); + if (sql_stmt) { gchar *lr_str; GTimeVal lr; GTimeVal now; @@ -1138,9 +1155,8 @@ produce_podcast_contents (OperationSpec *os) produce_podcast_contents_from_db (os); g_free (os); } + sqlite3_finalize (sql_stmt); } else { - g_warning ("Failed to retrieve podcast information: %s", - sqlite3_errmsg (db)); error = g_error_new (GRL_ERROR, os->error_code, "Failed to retrieve podcast information"); @@ -1149,7 +1165,6 @@ produce_podcast_contents (OperationSpec *os) g_free (os); } - sqlite3_finalize (sql_stmt); } static void @@ -1287,11 +1302,9 @@ stream_metadata (GrlMediaSourceMetadataSpec *ms) static void podcast_metadata (GrlMediaSourceMetadataSpec *ms) { - gint r; sqlite3_stmt *sql_stmt = NULL; sqlite3 *db; GError *error = NULL; - gchar *sql; const gchar *id; g_debug ("podcast_metadata"); @@ -1306,26 +1319,12 @@ podcast_metadata (GrlMediaSourceMetadataSpec *ms) return; } - sql = g_strdup_printf (GRL_SQL_GET_PODCAST_BY_ID, id); - g_debug ("%s", sql); - r = sqlite3_prepare_v2 (db, sql, strlen (sql), &sql_stmt, NULL); - g_free (sql); + sql_stmt = get_podcast_info (db, id); - if (r != SQLITE_OK) { - g_warning ("Failed to get podcast: %s", sqlite3_errmsg (db)); - error = g_error_new (GRL_ERROR, - GRL_ERROR_METADATA_FAILED, - "Failed to get podcast metadata"); - ms->callback (ms->source, ms->media, ms->user_data, error); - g_error_free (error); - return; - } - - while ((r = sqlite3_step (sql_stmt)) == SQLITE_BUSY); - - if (r == SQLITE_ROW) { + if (sql_stmt) { build_media_from_stmt (ms->media, sql_stmt, TRUE); ms->callback (ms->source, ms->media, ms->user_data, NULL); + sqlite3_finalize (sql_stmt); } else { g_warning ("Failed to get podcast: %s", sqlite3_errmsg (db)); error = g_error_new (GRL_ERROR, @@ -1334,8 +1333,6 @@ podcast_metadata (GrlMediaSourceMetadataSpec *ms) ms->callback (ms->source, ms->media, ms->user_data, error); g_error_free (error); } - - sqlite3_finalize (sql_stmt); } static gboolean -- cgit v1.2.1 From 7bc2e785b4d1c13fdf0ceb9e02d599e00d3e30a7 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Thu, 4 Mar 2010 17:15:44 +0100 Subject: [bookmarks] Set media id when storing new bookmarks. --- src/bookmarks/grl-bookmarks.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/bookmarks/grl-bookmarks.c b/src/bookmarks/grl-bookmarks.c index 8b3c1aa..5248206 100644 --- a/src/bookmarks/grl-bookmarks.c +++ b/src/bookmarks/grl-bookmarks.c @@ -570,6 +570,7 @@ store_bookmark (sqlite3 *db, const gchar *mime; gchar *date; guint type; + gchar *id; g_debug ("store_bookmark"); @@ -646,6 +647,10 @@ store_bookmark (sqlite3 *db, } sqlite3_finalize (sql_stmt); + + id = g_strdup_printf ("%llu", sqlite3_last_insert_rowid (db)); + grl_content_media_set_id (bookmark, id); + g_free (id); } /* ================== API Implementation ================ */ -- cgit v1.2.1 From 52601702de0996997f53577ab83fb466139bf3cf Mon Sep 17 00:00:00 2001 From: "Juan A. Suarez Romero" Date: Tue, 2 Mar 2010 17:34:53 +0100 Subject: Use the new plugin_init() api It have a configuration to be used by plugin. --- src/apple-trailers/grl-apple-trailers.c | 6 ++++-- src/bookmarks/grl-bookmarks.c | 3 ++- src/fake-metadata/grl-fake-metadata.c | 6 ++++-- src/filesystem/grl-filesystem.c | 6 ++++-- src/flickr/grl-flickr.c | 6 ++++-- src/jamendo/grl-jamendo.c | 6 ++++-- src/lastfm-albumart/grl-lastfm-albumart.c | 6 ++++-- src/podcasts/grl-podcasts.c | 3 ++- src/shoutcast/grl-shoutcast.c | 6 ++++-- src/upnp/grl-upnp.c | 7 +++++-- src/youtube/grl-youtube.c | 6 ++++-- 11 files changed, 41 insertions(+), 20 deletions(-) diff --git a/src/apple-trailers/grl-apple-trailers.c b/src/apple-trailers/grl-apple-trailers.c index f0bb2d7..4c4bde6 100644 --- a/src/apple-trailers/grl-apple-trailers.c +++ b/src/apple-trailers/grl-apple-trailers.c @@ -73,7 +73,8 @@ typedef struct { static GrlAppleTrailersSource *grl_apple_trailers_source_new (void); gboolean grl_apple_trailers_plugin_init (GrlPluginRegistry *registry, - const GrlPluginInfo *plugin); + const GrlPluginInfo *plugin, + const GrlContentConfig *config); static const GList *grl_apple_trailers_source_supported_keys (GrlMetadataSource *source); @@ -87,7 +88,8 @@ static void grl_apple_trailers_source_cancel (GrlMediaSource *source, gboolean grl_apple_trailers_plugin_init (GrlPluginRegistry *registry, - const GrlPluginInfo *plugin) + const GrlPluginInfo *plugin, + const GrlContentConfig *config) { g_debug ("apple_trailers_plugin_init\n"); diff --git a/src/bookmarks/grl-bookmarks.c b/src/bookmarks/grl-bookmarks.c index 5248206..d39a46d 100644 --- a/src/bookmarks/grl-bookmarks.c +++ b/src/bookmarks/grl-bookmarks.c @@ -177,7 +177,8 @@ static void grl_bookmarks_source_remove (GrlMediaSource *source, static gboolean grl_bookmarks_plugin_init (GrlPluginRegistry *registry, - const GrlPluginInfo *plugin) + const GrlPluginInfo *plugin, + const GrlContentConfig *config) { g_debug ("grl_bookmarks_plugin_init\n"); diff --git a/src/fake-metadata/grl-fake-metadata.c b/src/fake-metadata/grl-fake-metadata.c index d0bacae..e6690b1 100644 --- a/src/fake-metadata/grl-fake-metadata.c +++ b/src/fake-metadata/grl-fake-metadata.c @@ -55,14 +55,16 @@ static const GList *grl_fake_metadata_source_key_depends (GrlMetadataSource *sou GrlKeyID key_id); gboolean grl_fake_metadata_source_plugin_init (GrlPluginRegistry *registry, - const GrlPluginInfo *plugin); + const GrlPluginInfo *plugin, + const GrlContentConfig *config); /* =================== GrlFakeMetadata Plugin =============== */ gboolean grl_fake_metadata_source_plugin_init (GrlPluginRegistry *registry, - const GrlPluginInfo *plugin) + const GrlPluginInfo *plugin, + const GrlContentConfig *config) { g_debug ("grl_fake_metadata_source_plugin_init"); GrlFakeMetadataSource *source = grl_fake_metadata_source_new (); diff --git a/src/filesystem/grl-filesystem.c b/src/filesystem/grl-filesystem.c index db3bc6a..12e8943 100644 --- a/src/filesystem/grl-filesystem.c +++ b/src/filesystem/grl-filesystem.c @@ -79,7 +79,8 @@ typedef struct { static GrlFilesystemSource *grl_filesystem_source_new (void); gboolean grl_filesystem_plugin_init (GrlPluginRegistry *registry, - const GrlPluginInfo *plugin); + const GrlPluginInfo *plugin, + const GrlContentConfig *config); static const GList *grl_filesystem_source_supported_keys (GrlMetadataSource *source); @@ -94,7 +95,8 @@ static void grl_filesystem_source_browse (GrlMediaSource *source, gboolean grl_filesystem_plugin_init (GrlPluginRegistry *registry, - const GrlPluginInfo *plugin) + const GrlPluginInfo *plugin, + const GrlContentConfig *config) { g_debug ("filesystem_plugin_init\n"); diff --git a/src/flickr/grl-flickr.c b/src/flickr/grl-flickr.c index 4c52b16..9fa4196 100644 --- a/src/flickr/grl-flickr.c +++ b/src/flickr/grl-flickr.c @@ -77,7 +77,8 @@ struct _GrlFlickrSourcePrivate { static GrlFlickrSource *grl_flickr_source_new (void); gboolean grl_flickr_plugin_init (GrlPluginRegistry *registry, - const GrlPluginInfo *plugin); + const GrlPluginInfo *plugin, + const GrlContentConfig *config); static const GList *grl_flickr_source_supported_keys (GrlMetadataSource *source); @@ -91,7 +92,8 @@ static void grl_flickr_source_search (GrlMediaSource *source, gboolean grl_flickr_plugin_init (GrlPluginRegistry *registry, - const GrlPluginInfo *plugin) + const GrlPluginInfo *plugin, + const GrlContentConfig *config) { g_debug ("flickr_plugin_init\n"); diff --git a/src/jamendo/grl-jamendo.c b/src/jamendo/grl-jamendo.c index 5137c3c..9ee4004 100644 --- a/src/jamendo/grl-jamendo.c +++ b/src/jamendo/grl-jamendo.c @@ -141,7 +141,8 @@ typedef struct { static GrlJamendoSource *grl_jamendo_source_new (void); gboolean grl_jamendo_plugin_init (GrlPluginRegistry *registry, - const GrlPluginInfo *plugin); + const GrlPluginInfo *plugin, + const GrlContentConfig *config); static const GList *grl_jamendo_source_supported_keys (GrlMetadataSource *source); @@ -164,7 +165,8 @@ static void grl_jamendo_source_cancel (GrlMediaSource *source, gboolean grl_jamendo_plugin_init (GrlPluginRegistry *registry, - const GrlPluginInfo *plugin) + const GrlPluginInfo *plugin, + const GrlContentConfig *config) { g_debug ("jamendo_plugin_init\n"); diff --git a/src/lastfm-albumart/grl-lastfm-albumart.c b/src/lastfm-albumart/grl-lastfm-albumart.c index 8a2dbc3..312f70b 100644 --- a/src/lastfm-albumart/grl-lastfm-albumart.c +++ b/src/lastfm-albumart/grl-lastfm-albumart.c @@ -69,14 +69,16 @@ static const GList *grl_lastfm_albumart_source_key_depends (GrlMetadataSource *s GrlKeyID key_id); gboolean grl_lastfm_albumart_source_plugin_init (GrlPluginRegistry *registry, - const GrlPluginInfo *plugin); + const GrlPluginInfo *plugin, + const GrlContentConfig *config); /* =================== Last.FM-AlbumArt Plugin =============== */ gboolean grl_lastfm_albumart_source_plugin_init (GrlPluginRegistry *registry, - const GrlPluginInfo *plugin) + const GrlPluginInfo *plugin, + const GrlContentConfig *config) { g_debug ("grl_lastfm_albumart_source_plugin_init"); GrlLastfmAlbumartSource *source = grl_lastfm_albumart_source_new (); diff --git a/src/podcasts/grl-podcasts.c b/src/podcasts/grl-podcasts.c index ba721ef..00262b3 100644 --- a/src/podcasts/grl-podcasts.c +++ b/src/podcasts/grl-podcasts.c @@ -236,7 +236,8 @@ static void grl_podcasts_source_remove (GrlMediaSource *source, static gboolean grl_podcasts_plugin_init (GrlPluginRegistry *registry, - const GrlPluginInfo *plugin) + const GrlPluginInfo *plugin, + const GrlContentConfig *config) { g_debug ("podcasts_plugin_init\n"); diff --git a/src/shoutcast/grl-shoutcast.c b/src/shoutcast/grl-shoutcast.c index 041799e..f7347a6 100644 --- a/src/shoutcast/grl-shoutcast.c +++ b/src/shoutcast/grl-shoutcast.c @@ -85,7 +85,8 @@ typedef struct { static GrlShoutcastSource *grl_shoutcast_source_new (void); gboolean grl_shoutcast_plugin_init (GrlPluginRegistry *registry, - const GrlPluginInfo *plugin); + const GrlPluginInfo *plugin, + const GrlContentConfig *config); static const GList *grl_shoutcast_source_supported_keys (GrlMetadataSource *source); @@ -105,7 +106,8 @@ static void grl_shoutcast_source_cancel (GrlMediaSource *source, gboolean grl_shoutcast_plugin_init (GrlPluginRegistry *registry, - const GrlPluginInfo *plugin) + const GrlPluginInfo *plugin, + const GrlContentConfig *config) { g_debug ("shoutcast_plugin_init\n"); diff --git a/src/upnp/grl-upnp.c b/src/upnp/grl-upnp.c index 815ec13..28a15a1 100644 --- a/src/upnp/grl-upnp.c +++ b/src/upnp/grl-upnp.c @@ -102,7 +102,8 @@ static gchar *build_source_id (const gchar *udn); static GrlUpnpSource *grl_upnp_source_new (const gchar *id, const gchar *name); gboolean grl_upnp_plugin_init (GrlPluginRegistry *registry, - const GrlPluginInfo *plugin); + const GrlPluginInfo *plugin, + const GrlContentConfig *config); static void grl_upnp_source_finalize (GObject *plugin); @@ -134,7 +135,9 @@ static GHashTable *filter_key_mapping = NULL; /* =================== UPnP Plugin =============== */ gboolean -grl_upnp_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin) +grl_upnp_plugin_init (GrlPluginRegistry *registry, + const GrlPluginInfo *plugin, + const GrlContentConfig *config) { GError *error = NULL; GUPnPContext *context; diff --git a/src/youtube/grl-youtube.c b/src/youtube/grl-youtube.c index 7521aa4..323a057 100644 --- a/src/youtube/grl-youtube.c +++ b/src/youtube/grl-youtube.c @@ -189,7 +189,8 @@ typedef enum { static GrlYoutubeSource *grl_youtube_source_new (void); gboolean grl_youtube_plugin_init (GrlPluginRegistry *registry, - const GrlPluginInfo *plugin); + const GrlPluginInfo *plugin, + const GrlContentConfig *config); static const GList *grl_youtube_source_supported_keys (GrlMetadataSource *source); @@ -241,7 +242,8 @@ CategoryInfo *categories_dir = NULL; gboolean grl_youtube_plugin_init (GrlPluginRegistry *registry, - const GrlPluginInfo *plugin) + const GrlPluginInfo *plugin, + const GrlContentConfig *config) { g_debug ("youtube_plugin_init\n"); -- cgit v1.2.1 From 64898bfb1f372b31835f3239f405a52e393e019b Mon Sep 17 00:00:00 2001 From: "Juan A. Suarez Romero" Date: Tue, 2 Mar 2010 17:45:29 +0100 Subject: [flickr] Use configuration to set credentials Credentials come in the plugin configuration. If there are no credentials, then flickr will not run. --- src/flickr/grl-flickr.c | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/src/flickr/grl-flickr.c b/src/flickr/grl-flickr.c index 9fa4196..cb083d6 100644 --- a/src/flickr/grl-flickr.c +++ b/src/flickr/grl-flickr.c @@ -43,13 +43,6 @@ #undef G_LOG_DOMAIN #define G_LOG_DOMAIN "grl-flickr" -/* ----- Security tokens ---- */ - -#define FLICKR_KEY "fa037bee8120a921b34f8209d715a2fa" -#define FLICKR_SECRET "9f6523b9c52e3317" -#define FLICKR_FROB "416-357-743" -#define FLICKR_TOKEN "72157623286932154-c90318d470e96a29" - /* --- Plugin information --- */ #define PLUGIN_ID "grl-flickr" @@ -95,17 +88,33 @@ grl_flickr_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, const GrlContentConfig *config) { + const gchar *flickr_key; + const gchar *flickr_secret; + const gchar *flickr_token; + g_debug ("flickr_plugin_init\n"); - GrlFlickrSource *source = grl_flickr_source_new (); - if (source) { - grl_plugin_registry_register_source (registry, - plugin, - GRL_MEDIA_PLUGIN (source)); - return TRUE; - } else { + if (!config) { + g_warning ("Missing configuration"); + return FALSE; + } + + flickr_key = grl_content_config_get_api_key (config); + flickr_token = grl_content_config_get_api_token (config); + flickr_secret = grl_content_config_get_api_secret (config); + + if (!flickr_key || ! flickr_token || !flickr_secret) { + g_warning ("Required configuration keys not set up"); return FALSE; } + + GrlFlickrSource *source = grl_flickr_source_new (); + source->priv->flickr = g_flickr_new (flickr_key, flickr_token, flickr_secret); + + grl_plugin_registry_register_source (registry, + plugin, + GRL_MEDIA_PLUGIN (source)); + return TRUE; } GRL_PLUGIN_REGISTER (grl_flickr_plugin_init, @@ -149,7 +158,6 @@ static void grl_flickr_source_init (GrlFlickrSource *source) { source->priv = GRL_FLICKR_SOURCE_GET_PRIVATE (source); - source->priv->flickr = g_flickr_new (FLICKR_KEY, FLICKR_TOKEN, FLICKR_SECRET); } G_DEFINE_TYPE (GrlFlickrSource, grl_flickr_source, GRL_TYPE_MEDIA_SOURCE); -- cgit v1.2.1 From c58f8ddd5c599debd8052fc4fb9b6779436c46d8 Mon Sep 17 00:00:00 2001 From: "Juan A. Suarez Romero" Date: Thu, 4 Mar 2010 21:21:58 +0100 Subject: Rename Content to Data Rename from GrlContent/grl_content to GrlData/grl_data. As Config will inherit from it, makes more sense using a generic Data name than a Content name. --- src/apple-trailers/grl-apple-trailers.c | 34 +++++------ src/bookmarks/grl-bookmarks.c | 56 +++++++++--------- src/fake-metadata/grl-fake-metadata.c | 34 +++++------ src/filesystem/grl-filesystem.c | 48 ++++++++-------- src/flickr/grl-flickr.c | 34 +++++------ src/jamendo/grl-jamendo.c | 94 +++++++++++++++---------------- src/lastfm-albumart/grl-lastfm-albumart.c | 18 +++--- src/podcasts/grl-podcasts.c | 82 +++++++++++++-------------- src/shoutcast/grl-shoutcast.c | 52 ++++++++--------- src/upnp/grl-upnp.c | 52 ++++++++--------- src/youtube/grl-youtube.c | 78 ++++++++++++------------- test/main.c | 54 +++++++++--------- 12 files changed, 318 insertions(+), 318 deletions(-) diff --git a/src/apple-trailers/grl-apple-trailers.c b/src/apple-trailers/grl-apple-trailers.c index 4c4bde6..3d6e85d 100644 --- a/src/apple-trailers/grl-apple-trailers.c +++ b/src/apple-trailers/grl-apple-trailers.c @@ -74,7 +74,7 @@ static GrlAppleTrailersSource *grl_apple_trailers_source_new (void); gboolean grl_apple_trailers_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlContentConfig *config); + const GrlDataConfig *config); static const GList *grl_apple_trailers_source_supported_keys (GrlMetadataSource *source); @@ -89,7 +89,7 @@ static void grl_apple_trailers_source_cancel (GrlMediaSource *source, gboolean grl_apple_trailers_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlContentConfig *config) + const GrlDataConfig *config) { g_debug ("apple_trailers_plugin_init\n"); @@ -191,10 +191,10 @@ runtime_to_seconds (const gchar *runtime) return seconds; } -static GrlContentMedia * +static GrlDataMedia * build_media_from_movie (xmlNodePtr node) { - GrlContentMedia * media; + GrlDataMedia * media; gchar *movie_author; gchar *movie_date; gchar *movie_description; @@ -205,7 +205,7 @@ build_media_from_movie (xmlNodePtr node) gchar *movie_title; gchar *movie_url; - media = grl_content_video_new (); + media = grl_data_video_new (); movie_id = (gchar *) xmlGetProp (node, (const xmlChar *) "id"); @@ -225,17 +225,17 @@ build_media_from_movie (xmlNodePtr node) movie_url = get_node_value (node_dup, "/movieinfo/preview/large"); xmlFreeDoc (xml_doc); - grl_content_media_set_id (media, movie_id); - grl_content_media_set_author (media, movie_author); - grl_content_media_set_date (media, movie_date); - grl_content_media_set_description (media, movie_description); - grl_content_media_set_duration (media, runtime_to_seconds (movie_duration)); - grl_content_media_set_title (media, movie_title); - grl_content_set_string (GRL_CONTENT (media), - GRL_METADATA_KEY_GENRE, - movie_genre); - grl_content_media_set_thumbnail (media, movie_thumbnail); - grl_content_media_set_url (media, movie_url); + grl_data_media_set_id (media, movie_id); + grl_data_media_set_author (media, movie_author); + grl_data_media_set_date (media, movie_date); + grl_data_media_set_description (media, movie_description); + grl_data_media_set_duration (media, runtime_to_seconds (movie_duration)); + grl_data_media_set_title (media, movie_title); + grl_data_set_string (GRL_DATA (media), + GRL_METADATA_KEY_GENRE, + movie_genre); + grl_data_media_set_thumbnail (media, movie_thumbnail); + grl_data_media_set_url (media, movie_url); g_free (movie_id); g_free (movie_author); @@ -253,7 +253,7 @@ build_media_from_movie (xmlNodePtr node) static gboolean send_movie_info (OperationData *op_data) { - GrlContentMedia *media; + GrlDataMedia *media; gboolean last = FALSE; if (op_data->cancelled) { diff --git a/src/bookmarks/grl-bookmarks.c b/src/bookmarks/grl-bookmarks.c index d39a46d..c5c43d0 100644 --- a/src/bookmarks/grl-bookmarks.c +++ b/src/bookmarks/grl-bookmarks.c @@ -178,7 +178,7 @@ static void grl_bookmarks_source_remove (GrlMediaSource *source, static gboolean grl_bookmarks_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlContentConfig *config) + const GrlDataConfig *config) { g_debug ("grl_bookmarks_plugin_init\n"); @@ -314,10 +314,10 @@ mime_is_audio (const gchar *mime) return mime && strstr (mime, "audio") != NULL; } -static GrlContentMedia * -build_media_from_stmt (GrlContentMedia *content, sqlite3_stmt *sql_stmt) +static GrlDataMedia * +build_media_from_stmt (GrlDataMedia *content, sqlite3_stmt *sql_stmt) { - GrlContentMedia *media = NULL; + GrlDataMedia *media = NULL; gchar *id; gchar *title; gchar *url; @@ -342,30 +342,30 @@ build_media_from_stmt (GrlContentMedia *content, sqlite3_stmt *sql_stmt) if (!media) { if (type == BOOKMARK_TYPE_CATEGORY) { - media = GRL_CONTENT_MEDIA (grl_content_box_new ()); + media = GRL_DATA_MEDIA (grl_data_box_new ()); } else if (mime_is_audio (mime)) { - media = GRL_CONTENT_MEDIA (grl_content_media_new ()); + media = GRL_DATA_MEDIA (grl_data_media_new ()); } else if (mime_is_video (mime)) { - media = GRL_CONTENT_MEDIA (grl_content_media_new ()); + media = GRL_DATA_MEDIA (grl_data_media_new ()); } else { - media = GRL_CONTENT_MEDIA (grl_content_media_new ()); + media = GRL_DATA_MEDIA (grl_data_media_new ()); } } - grl_content_media_set_id (media, id); - grl_content_media_set_title (media, title); + grl_data_media_set_id (media, id); + grl_data_media_set_title (media, title); if (url) { - grl_content_media_set_url (media, url); + grl_data_media_set_url (media, url); } if (desc) { - grl_content_media_set_description (media, desc); + grl_data_media_set_description (media, desc); } if (date) { - grl_content_media_set_date (media, date); + grl_data_media_set_date (media, date); } if (type == BOOKMARK_TYPE_CATEGORY) { - grl_content_box_set_childcount (GRL_CONTENT_BOX (media), childcount); + grl_data_box_set_childcount (GRL_DATA_BOX (media), childcount); } return media; @@ -385,10 +385,10 @@ bookmark_metadata (GrlMediaSourceMetadataSpec *ms) db = GRL_BOOKMARKS_SOURCE (ms->source)->priv->db; - id = grl_content_media_get_id (ms->media); + id = grl_data_media_get_id (ms->media); if (!id) { /* Root category: special case */ - grl_content_media_set_title (ms->media, ""); + grl_data_media_set_title (ms->media, ""); ms->callback (ms->source, ms->media, ms->user_data, NULL); return; } @@ -431,7 +431,7 @@ produce_bookmarks_from_sql (OperationSpec *os, const gchar *sql) gint r; sqlite3_stmt *sql_stmt = NULL; sqlite3 *db; - GrlContentMedia *media; + GrlDataMedia *media; GError *error = NULL; GList *medias = NULL; guint count = 0; @@ -476,7 +476,7 @@ produce_bookmarks_from_sql (OperationSpec *os, const gchar *sql) medias = g_list_reverse (medias); iter = medias; while (iter) { - media = GRL_CONTENT_MEDIA (iter->data); + media = GRL_DATA_MEDIA (iter->data); os->callback (os->source, os->operation_id, media, @@ -557,8 +557,8 @@ remove_bookmark (sqlite3 *db, const gchar *bookmark_id, GError **error) static void store_bookmark (sqlite3 *db, - GrlContentBox *parent, - GrlContentMedia *bookmark, + GrlDataBox *parent, + GrlDataMedia *bookmark, GError **error) { gint r; @@ -575,17 +575,17 @@ store_bookmark (sqlite3 *db, g_debug ("store_bookmark"); - title = grl_content_media_get_title (bookmark); - url = grl_content_media_get_url (bookmark); - desc = grl_content_media_get_description (bookmark); - mime = grl_content_media_get_mime (bookmark); + title = grl_data_media_get_title (bookmark); + url = grl_data_media_get_url (bookmark); + desc = grl_data_media_get_description (bookmark); + mime = grl_data_media_get_mime (bookmark); g_get_current_time (&now); date = g_time_val_to_iso8601 (&now); if (!parent) { parent_id = "0"; } else { - parent_id = grl_content_media_get_id (parent); + parent_id = grl_data_media_get_id (parent); } if (!parent_id) { parent_id = "0"; @@ -606,7 +606,7 @@ store_bookmark (sqlite3 *db, g_debug ("URL: '%s'", url); - if (GRL_IS_CONTENT_BOX (bookmark)) { + if (GRL_IS_DATA_BOX (bookmark)) { type = BOOKMARK_TYPE_CATEGORY; } else { type = BOOKMARK_TYPE_STREAM; @@ -650,7 +650,7 @@ store_bookmark (sqlite3 *db, sqlite3_finalize (sql_stmt); id = g_strdup_printf ("%llu", sqlite3_last_insert_rowid (db)); - grl_content_media_set_id (bookmark, id); + grl_data_media_set_id (bookmark, id); g_free (id); } @@ -696,7 +696,7 @@ grl_bookmarks_source_browse (GrlMediaSource *source, os = g_new0 (OperationSpec, 1); os->source = bs->source; os->operation_id = bs->browse_id; - os->media_id = grl_content_media_get_id (bs->container); + os->media_id = grl_data_media_get_id (bs->container); os->count = bs->count; os->skip = bs->skip; os->callback = bs->callback; diff --git a/src/fake-metadata/grl-fake-metadata.c b/src/fake-metadata/grl-fake-metadata.c index e6690b1..a1c44a8 100644 --- a/src/fake-metadata/grl-fake-metadata.c +++ b/src/fake-metadata/grl-fake-metadata.c @@ -56,7 +56,7 @@ static const GList *grl_fake_metadata_source_key_depends (GrlMetadataSource *sou gboolean grl_fake_metadata_source_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlContentConfig *config); + const GrlDataConfig *config); /* =================== GrlFakeMetadata Plugin =============== */ @@ -64,7 +64,7 @@ gboolean grl_fake_metadata_source_plugin_init (GrlPluginRegistry *registry, gboolean grl_fake_metadata_source_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlContentConfig *config) + const GrlDataConfig *config) { g_debug ("grl_fake_metadata_source_plugin_init"); GrlFakeMetadataSource *source = grl_fake_metadata_source_new (); @@ -118,37 +118,37 @@ G_DEFINE_TYPE (GrlFakeMetadataSource, /* ======================= Utilities ==================== */ static void -fill_metadata (GrlContentMedia *media, GrlKeyID key_id) +fill_metadata (GrlDataMedia *media, GrlKeyID key_id) { switch (key_id) { case GRL_METADATA_KEY_AUTHOR: - grl_content_media_set_author (media, "fake author"); + grl_data_media_set_author (media, "fake author"); break; case GRL_METADATA_KEY_ARTIST: - grl_content_set_string (GRL_CONTENT (media), - GRL_METADATA_KEY_ARTIST, "fake artist"); + grl_data_set_string (GRL_DATA (media), + GRL_METADATA_KEY_ARTIST, "fake artist"); break; case GRL_METADATA_KEY_ALBUM: - grl_content_set_string (GRL_CONTENT (media), - GRL_METADATA_KEY_ALBUM, "fake album"); + grl_data_set_string (GRL_DATA (media), + GRL_METADATA_KEY_ALBUM, "fake album"); break; case GRL_METADATA_KEY_GENRE: - grl_content_set_string (GRL_CONTENT (media), - GRL_METADATA_KEY_GENRE, "fake genre"); + grl_data_set_string (GRL_DATA (media), + GRL_METADATA_KEY_GENRE, "fake genre"); break; case GRL_METADATA_KEY_DESCRIPTION: - grl_content_media_set_description (media, "fake description"); + grl_data_media_set_description (media, "fake description"); break; case GRL_METADATA_KEY_DURATION: - grl_content_media_set_duration (media, 99); + grl_data_media_set_duration (media, 99); break; case GRL_METADATA_KEY_DATE: - grl_content_set_string (GRL_CONTENT (media), - GRL_METADATA_KEY_DATE, "01/01/1970"); + grl_data_set_string (GRL_DATA (media), + GRL_METADATA_KEY_DATE, "01/01/1970"); break; case GRL_METADATA_KEY_THUMBNAIL: - grl_content_media_set_thumbnail (media, - "http://fake.thumbnail.com/fake-image.jpg"); + grl_data_media_set_thumbnail (media, + "http://fake.thumbnail.com/fake-image.jpg"); break; default: break; @@ -213,7 +213,7 @@ grl_fake_metadata_source_resolve (GrlMetadataSource *source, iter = rs->keys; while (iter) { GrlKeyID key_id = POINTER_TO_GRLKEYID (iter->data); - fill_metadata (GRL_CONTENT_MEDIA (rs->media), key_id); + fill_metadata (GRL_DATA_MEDIA (rs->media), key_id); iter = g_list_next (iter); } diff --git a/src/filesystem/grl-filesystem.c b/src/filesystem/grl-filesystem.c index 12e8943..646faf7 100644 --- a/src/filesystem/grl-filesystem.c +++ b/src/filesystem/grl-filesystem.c @@ -80,7 +80,7 @@ static GrlFilesystemSource *grl_filesystem_source_new (void); gboolean grl_filesystem_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlContentConfig *config); + const GrlDataConfig *config); static const GList *grl_filesystem_source_supported_keys (GrlMetadataSource *source); @@ -96,7 +96,7 @@ static void grl_filesystem_source_browse (GrlMediaSource *source, gboolean grl_filesystem_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlContentConfig *config) + const GrlDataConfig *config) { g_debug ("filesystem_plugin_init\n"); @@ -236,7 +236,7 @@ file_is_valid_content (const gchar *path, gboolean fast) static void set_container_childcount (const gchar *path, - GrlContentMedia *media, + GrlDataMedia *media, gboolean fast) { GDir *dir; @@ -278,15 +278,15 @@ set_container_childcount (const gchar *path, g_dir_close (dir); - grl_content_box_set_childcount (GRL_CONTENT_BOX (media), count); + grl_data_box_set_childcount (GRL_DATA_BOX (media), count); } -static GrlContentMedia * -create_content (GrlContentMedia *content, +static GrlDataMedia * +create_content (GrlDataMedia *content, const gchar *path, gboolean only_fast) { - GrlContentMedia *media = NULL; + GrlDataMedia *media = NULL; gchar *str; const gchar *mime; GError *error = NULL; @@ -306,7 +306,7 @@ create_content (GrlContentMedia *content, if (error) { g_warning ("Failed to get info for file '%s': %s", path, error->message); if (!media) { - media = grl_content_media_new (); + media = grl_data_media_new (); } /* Title */ @@ -314,56 +314,56 @@ create_content (GrlContentMedia *content, if (!str) { str = (gchar *) path; } - grl_content_media_set_title (media, str); + grl_data_media_set_title (media, str); g_error_free (error); } else { mime = g_file_info_get_content_type (info); if (!media) { if (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY) { - media = GRL_CONTENT_MEDIA (grl_content_box_new ()); + media = GRL_DATA_MEDIA (grl_data_box_new ()); } else { if (mime_is_video (mime)) { - media = grl_content_video_new (); + media = grl_data_video_new (); } else if (mime_is_audio (mime)) { - media = grl_content_audio_new (); + media = grl_data_audio_new (); } else if (mime_is_image (mime)) { - media = grl_content_image_new (); + media = grl_data_image_new (); } else { - media = grl_content_media_new (); + media = grl_data_media_new (); } } } - if (!GRL_IS_CONTENT_BOX (media)) { - grl_content_media_set_mime (GRL_CONTENT (media), mime); + if (!GRL_IS_DATA_BOX (media)) { + grl_data_media_set_mime (GRL_DATA (media), mime); } /* Title */ str = (gchar *) g_file_info_get_display_name (info); - grl_content_media_set_title (media, str); + grl_data_media_set_title (media, str); /* Date */ GTimeVal time; gchar *time_str; g_file_info_get_modification_time (info, &time); time_str = g_time_val_to_iso8601 (&time); - grl_content_media_set_date (GRL_CONTENT (media), time_str); + grl_data_media_set_date (GRL_DATA (media), time_str); g_free (time_str); g_object_unref (info); } /* ID */ - grl_content_media_set_id (media, path); + grl_data_media_set_id (media, path); /* URL */ str = g_strconcat ("file://", path, NULL); - grl_content_media_set_url (media, str); + grl_data_media_set_url (media, str); g_free (str); /* Childcount */ - if (GRL_IS_CONTENT_BOX (media)) { + if (GRL_IS_DATA_BOX (media)) { set_container_childcount (path, media, only_fast); } @@ -385,7 +385,7 @@ browse_emit_idle (gpointer user_data) count = 0; do { gchar *entry_path; - GrlContentMedia *content; + GrlDataMedia *content; entry_path = (gchar *) idle_data->current->data; content = create_content (NULL, @@ -522,7 +522,7 @@ grl_filesystem_source_browse (GrlMediaSource *source, g_debug ("grl_filesystem_source_browse"); - id = grl_content_media_get_id (bs->container); + id = grl_data_media_get_id (bs->container); path = id ? id : G_DIR_SEPARATOR_S; produce_from_path (bs, path); } @@ -536,7 +536,7 @@ grl_filesystem_source_metadata (GrlMediaSource *source, g_debug ("grl_filesystem_source_metadata"); - id = grl_content_media_get_id (ms->media); + id = grl_data_media_get_id (ms->media); path = id ? id : G_DIR_SEPARATOR_S; if (g_file_test (path, G_FILE_TEST_EXISTS)) { diff --git a/src/flickr/grl-flickr.c b/src/flickr/grl-flickr.c index cb083d6..f6bcd7b 100644 --- a/src/flickr/grl-flickr.c +++ b/src/flickr/grl-flickr.c @@ -71,7 +71,7 @@ static GrlFlickrSource *grl_flickr_source_new (void); gboolean grl_flickr_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlContentConfig *config); + const GrlDataConfig *config); static const GList *grl_flickr_source_supported_keys (GrlMetadataSource *source); @@ -86,7 +86,7 @@ static void grl_flickr_source_search (GrlMediaSource *source, gboolean grl_flickr_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlContentConfig *config) + const GrlDataConfig *config) { const gchar *flickr_key; const gchar *flickr_secret; @@ -99,9 +99,9 @@ grl_flickr_plugin_init (GrlPluginRegistry *registry, return FALSE; } - flickr_key = grl_content_config_get_api_key (config); - flickr_token = grl_content_config_get_api_token (config); - flickr_secret = grl_content_config_get_api_secret (config); + flickr_key = grl_data_config_get_api_key (config); + flickr_token = grl_data_config_get_api_token (config); + flickr_secret = grl_data_config_get_api_secret (config); if (!flickr_key || ! flickr_token || !flickr_secret) { g_warning ("Required configuration keys not set up"); @@ -165,7 +165,7 @@ G_DEFINE_TYPE (GrlFlickrSource, grl_flickr_source, GRL_TYPE_MEDIA_SOURCE); /* ======================= Utilities ==================== */ static void -update_media (GrlContentMedia *media, GHashTable *photo) +update_media (GrlDataMedia *media, GHashTable *photo) { gchar *author; gchar *date; @@ -199,32 +199,32 @@ update_media (GrlContentMedia *media, GHashTable *photo) } if (author) { - grl_content_media_set_author (media, author); + grl_data_media_set_author (media, author); } if (date) { - grl_content_media_set_date (media, date); + grl_data_media_set_date (media, date); } if (description) { - grl_content_media_set_description (media, description); + grl_data_media_set_description (media, description); } if (id) { - grl_content_media_set_id (media, id); + grl_data_media_set_id (media, id); } if (thumbnail) { - grl_content_media_set_thumbnail (media, thumbnail); + grl_data_media_set_thumbnail (media, thumbnail); g_free (thumbnail); } if (title) { - grl_content_media_set_title (media, title); + grl_data_media_set_title (media, title); } if (url) { - grl_content_media_set_url (media, url); + grl_data_media_set_url (media, url); g_free (url); } } @@ -244,7 +244,7 @@ getInfo_cb (GFlickr *f, GHashTable *photo, gpointer user_data) static void search_cb (GFlickr *f, GList *photolist, gpointer user_data) { - GrlContentMedia *media; + GrlDataMedia *media; SearchData *sd = (SearchData *) user_data; gchar *media_type; @@ -266,9 +266,9 @@ search_cb (GFlickr *f, GList *photolist, gpointer user_data) while (photolist && sd->ss->count) { media_type = g_hash_table_lookup (photolist->data, "photo_media"); if (strcmp (media_type, "photo") == 0) { - media = grl_content_image_new (); + media = grl_data_image_new (); } else { - media = grl_content_video_new (); + media = grl_data_video_new (); } update_media (media, photolist->data); sd->ss->callback (sd->ss->source, @@ -316,7 +316,7 @@ grl_flickr_source_metadata (GrlMediaSource *source, { const gchar *id; - if (!ms->media || (id = grl_content_media_get_id (ms->media)) == NULL) { + if (!ms->media || (id = grl_data_media_get_id (ms->media)) == NULL) { ms->callback (ms->source, ms->media, ms->user_data, NULL); return; } diff --git a/src/jamendo/grl-jamendo.c b/src/jamendo/grl-jamendo.c index 9ee4004..a3680b2 100644 --- a/src/jamendo/grl-jamendo.c +++ b/src/jamendo/grl-jamendo.c @@ -142,7 +142,7 @@ static GrlJamendoSource *grl_jamendo_source_new (void); gboolean grl_jamendo_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlContentConfig *config); + const GrlDataConfig *config); static const GList *grl_jamendo_source_supported_keys (GrlMetadataSource *source); @@ -166,7 +166,7 @@ static void grl_jamendo_source_cancel (GrlMediaSource *source, gboolean grl_jamendo_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlContentConfig *config) + const GrlDataConfig *config) { g_debug ("jamendo_plugin_init\n"); @@ -411,7 +411,7 @@ xml_parse_entry (xmlDocPtr doc, xmlNodePtr entry) } static void -update_media_from_entry (GrlContentMedia *media, const Entry *entry) +update_media_from_entry (GrlDataMedia *media, const Entry *entry) { gchar *id; @@ -422,90 +422,90 @@ update_media_from_entry (GrlContentMedia *media, const Entry *entry) } /* Common fields */ - grl_content_media_set_id (media, id); + grl_data_media_set_id (media, id); g_free (id); if (entry->artist_name) { - grl_content_set_string (GRL_CONTENT (media), - GRL_METADATA_KEY_ARTIST, - entry->artist_name); + grl_data_set_string (GRL_DATA (media), + GRL_METADATA_KEY_ARTIST, + entry->artist_name); } if (entry->album_name) { - grl_content_set_string (GRL_CONTENT (media), - GRL_METADATA_KEY_ALBUM, - entry->album_name); + grl_data_set_string (GRL_DATA (media), + GRL_METADATA_KEY_ALBUM, + entry->album_name); } /* Fields for artist */ if (entry->category == JAMENDO_ARTIST_CAT) { if (entry->artist_name) { - grl_content_media_set_title (media, entry->artist_name); + grl_data_media_set_title (media, entry->artist_name); } if (entry->artist_genre) { - grl_content_set_string (GRL_CONTENT (media), - GRL_METADATA_KEY_GENRE, - entry->artist_genre); + grl_data_set_string (GRL_DATA (media), + GRL_METADATA_KEY_GENRE, + entry->artist_genre); } if (entry->artist_url) { - grl_content_media_set_site (media, entry->artist_url); + grl_data_media_set_site (media, entry->artist_url); } if (entry->artist_image) { - grl_content_media_set_thumbnail (media, entry->artist_image); + grl_data_media_set_thumbnail (media, entry->artist_image); } /* Fields for album */ } else if (entry->category == JAMENDO_ALBUM_CAT) { if (entry->album_name) { - grl_content_media_set_title (media, entry->album_name); + grl_data_media_set_title (media, entry->album_name); } if (entry->album_genre) { - grl_content_set_string (GRL_CONTENT (media), - GRL_METADATA_KEY_GENRE, - entry->album_genre); + grl_data_set_string (GRL_DATA (media), + GRL_METADATA_KEY_GENRE, + entry->album_genre); } if (entry->album_url) { - grl_content_media_set_site (media, entry->album_url); + grl_data_media_set_site (media, entry->album_url); } if (entry->album_image) { - grl_content_media_set_thumbnail (media, entry->album_image); + grl_data_media_set_thumbnail (media, entry->album_image); } if (entry->album_duration) { - grl_content_media_set_duration (media, atoi (entry->album_duration)); + grl_data_media_set_duration (media, atoi (entry->album_duration)); } /* Fields for track */ } else if (entry->category == JAMENDO_TRACK_CAT) { if (entry->track_name) { - grl_content_media_set_title (media, entry->track_name); + grl_data_media_set_title (media, entry->track_name); } if (entry->album_genre) { - grl_content_audio_set_genre (GRL_CONTENT_AUDIO (media), - entry->album_genre); + grl_data_audio_set_genre (GRL_DATA_AUDIO (media), + entry->album_genre); } if (entry->track_url) { - grl_content_media_set_site (media, entry->track_url); + grl_data_media_set_site (media, entry->track_url); } if (entry->album_image) { - grl_content_media_set_thumbnail (media, entry->album_image); + grl_data_media_set_thumbnail (media, entry->album_image); } if (entry->track_stream) { - grl_content_media_set_url (media, entry->track_stream); + grl_data_media_set_url (media, entry->track_stream); } if (entry->track_duration) { - grl_content_media_set_duration (media, atoi (entry->track_duration)); + grl_data_media_set_duration (media, atoi (entry->track_duration)); } } } @@ -515,7 +515,7 @@ xml_parse_entries_idle (gpointer user_data) { XmlParseEntries *xpe = (XmlParseEntries *) user_data; gboolean parse_more; - GrlContentMedia *media; + GrlDataMedia *media; Entry *entry; g_debug ("xml_parse_entries_idle"); @@ -525,9 +525,9 @@ xml_parse_entries_idle (gpointer user_data) if (parse_more) { entry = xml_parse_entry (xpe->doc, xpe->node); if (entry->category == JAMENDO_TRACK_CAT) { - media = grl_content_audio_new (); + media = grl_data_audio_new (); } else { - media = grl_content_box_new (); + media = grl_data_box_new (); } update_media_from_entry (media, entry); @@ -644,7 +644,7 @@ read_done_cb (GObject *source_object, error = g_error_new (GRL_ERROR, GRL_ERROR_METADATA_FAILED, "Unable to get information: '%s'", - grl_content_media_get_id (xpe->spec.ms->media)); + grl_data_media_get_id (xpe->spec.ms->media)); } goto invoke_cb; } @@ -705,14 +705,14 @@ read_url_async (const gchar *url, gpointer user_data) } static void -update_media_from_root (GrlContentMedia *media) +update_media_from_root (GrlDataMedia *media) { - grl_content_media_set_title (media, JAMENDO_ROOT_NAME); - grl_content_box_set_childcount (GRL_CONTENT_BOX (media), 2); + grl_data_media_set_title (media, JAMENDO_ROOT_NAME); + grl_data_box_set_childcount (GRL_DATA_BOX (media), 2); } static void -update_media_from_artists (GrlContentMedia *media) +update_media_from_artists (GrlDataMedia *media) { Entry *entry; @@ -724,7 +724,7 @@ update_media_from_artists (GrlContentMedia *media) } static void -update_media_from_albums (GrlContentMedia *media) +update_media_from_albums (GrlDataMedia *media) { Entry *entry; @@ -738,13 +738,13 @@ update_media_from_albums (GrlContentMedia *media) static void send_toplevel_categories (GrlMediaSourceBrowseSpec *bs) { - GrlContentMedia *media; + GrlDataMedia *media; - media = grl_content_box_new (); + media = grl_data_box_new (); update_media_from_artists (media); bs->callback (bs->source, bs->browse_id, media, 1, bs->user_data, NULL); - media = grl_content_box_new (); + media = grl_data_box_new (); update_media_from_albums (media); bs->callback (bs->source, bs->browse_id, media, 0, bs->user_data, NULL); } @@ -833,15 +833,15 @@ grl_jamendo_source_metadata (GrlMediaSource *source, g_debug ("grl_jamendo_source_metadata"); if (!ms->media || - !grl_content_key_is_known (GRL_CONTENT (ms->media), - GRL_METADATA_KEY_ID)) { + !grl_data_key_is_known (GRL_DATA (ms->media), + GRL_METADATA_KEY_ID)) { /* Get info from root */ if (!ms->media) { - ms->media = grl_content_box_new (); + ms->media = grl_data_box_new (); } update_media_from_root (ms->media); } else { - id = grl_content_media_get_id (ms->media); + id = grl_data_media_get_id (ms->media); id_split = g_strsplit (id, JAMENDO_ID_SEP, 0); if (g_strv_length (id_split) == 0) { @@ -944,7 +944,7 @@ grl_jamendo_source_browse (GrlMediaSource *source, g_debug ("grl_jamendo_source_browse"); - container_id = grl_content_media_get_id (bs->container); + container_id = grl_data_media_get_id (bs->container); if (!container_id) { /* Root category: return top-level predefined categories */ diff --git a/src/lastfm-albumart/grl-lastfm-albumart.c b/src/lastfm-albumart/grl-lastfm-albumart.c index 312f70b..c6084da 100644 --- a/src/lastfm-albumart/grl-lastfm-albumart.c +++ b/src/lastfm-albumart/grl-lastfm-albumart.c @@ -70,7 +70,7 @@ static const GList *grl_lastfm_albumart_source_key_depends (GrlMetadataSource *s gboolean grl_lastfm_albumart_source_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlContentConfig *config); + const GrlDataConfig *config); /* =================== Last.FM-AlbumArt Plugin =============== */ @@ -78,7 +78,7 @@ gboolean grl_lastfm_albumart_source_plugin_init (GrlPluginRegistry *registry, gboolean grl_lastfm_albumart_source_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlContentConfig *config) + const GrlDataConfig *config) { g_debug ("grl_lastfm_albumart_source_plugin_init"); GrlLastfmAlbumartSource *source = grl_lastfm_albumart_source_new (); @@ -201,9 +201,9 @@ read_done_cb (GObject *source_object, image = xml_get_image (content); g_free (content); if (image) { - grl_content_set_string (GRL_CONTENT (rs->media), - GRL_METADATA_KEY_THUMBNAIL, - image); + grl_data_set_string (GRL_DATA (rs->media), + GRL_METADATA_KEY_THUMBNAIL, + image); g_free (image); } @@ -288,11 +288,11 @@ grl_lastfm_albumart_source_resolve (GrlMetadataSource *source, g_debug ("No supported key was requested"); rs->callback (source, rs->media, rs->user_data, NULL); } else { - artist = grl_content_get_string (GRL_CONTENT (rs->media), - GRL_METADATA_KEY_ARTIST); + artist = grl_data_get_string (GRL_DATA (rs->media), + GRL_METADATA_KEY_ARTIST); - album = grl_content_get_string (GRL_CONTENT (rs->media), - GRL_METADATA_KEY_ALBUM); + album = grl_data_get_string (GRL_DATA (rs->media), + GRL_METADATA_KEY_ALBUM); if (!artist || !album) { g_debug ("Missing dependencies"); diff --git a/src/podcasts/grl-podcasts.c b/src/podcasts/grl-podcasts.c index 00262b3..a7ad14f 100644 --- a/src/podcasts/grl-podcasts.c +++ b/src/podcasts/grl-podcasts.c @@ -210,7 +210,7 @@ typedef struct { guint parse_count; guint parse_index; guint parse_valid_index; - GrlContentMedia *last_media; + GrlDataMedia *last_media; } OperationSpecParse; static GrlPodcastsSource *grl_podcasts_source_new (void); @@ -237,7 +237,7 @@ static void grl_podcasts_source_remove (GrlMediaSource *source, static gboolean grl_podcasts_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlContentConfig *config) + const GrlDataConfig *config) { g_debug ("podcasts_plugin_init\n"); @@ -503,8 +503,8 @@ get_site_from_url (const gchar *url) return g_strndup (url, p - url); } -static GrlContentMedia * -build_media (GrlContentMedia *content, +static GrlDataMedia * +build_media (GrlDataMedia *content, gboolean is_podcast, const gchar *id, const gchar *title, @@ -515,7 +515,7 @@ build_media (GrlContentMedia *content, guint duration, guint childcount) { - GrlContentMedia *media = NULL; + GrlDataMedia *media = NULL; gchar *site; if (content) { @@ -524,52 +524,52 @@ build_media (GrlContentMedia *content, if (is_podcast) { if (!media) { - media = GRL_CONTENT_MEDIA (grl_content_box_new ()); + media = GRL_DATA_MEDIA (grl_data_box_new ()); } - grl_content_media_set_id (media, id); + grl_data_media_set_id (media, id); if (desc) - grl_content_media_set_description (media, desc); - grl_content_box_set_childcount (GRL_CONTENT_BOX (media), childcount); + grl_data_media_set_description (media, desc); + grl_data_box_set_childcount (GRL_DATA_BOX (media), childcount); } else { if (!media) { if (mime_is_audio (mime)) { - media = grl_content_audio_new (); + media = grl_data_audio_new (); } else if (mime_is_video (mime)) { - media = grl_content_video_new (); + media = grl_data_video_new (); } else { - media = grl_content_media_new (); + media = grl_data_media_new (); } } - grl_content_media_set_id (media, url); + grl_data_media_set_id (media, url); if (date) - grl_content_media_set_date (media, date); + grl_data_media_set_date (media, date); if (desc) - grl_content_media_set_description (media, desc); + grl_data_media_set_description (media, desc); if (mime) - grl_content_media_set_mime (media, mime); + grl_data_media_set_mime (media, mime); if (duration > 0) { - grl_content_media_set_duration (media, duration); + grl_data_media_set_duration (media, duration); } } - grl_content_media_set_title (media, title); - grl_content_media_set_url (media, url); + grl_data_media_set_title (media, title); + grl_data_media_set_url (media, url); site = get_site_from_url (url); if (site) { - grl_content_media_set_site (media, site); + grl_data_media_set_site (media, site); g_free (site); } return media; } -static GrlContentMedia * +static GrlDataMedia * build_media_from_entry (Entry *entry) { - GrlContentMedia *media; + GrlDataMedia *media; gint duration; duration = duration_to_seconds (entry->duration); @@ -580,12 +580,12 @@ build_media_from_entry (Entry *entry) return media; } -static GrlContentMedia * -build_media_from_stmt (GrlContentMedia *content, +static GrlDataMedia * +build_media_from_stmt (GrlDataMedia *content, sqlite3_stmt *sql_stmt, gboolean is_podcast) { - GrlContentMedia *media; + GrlDataMedia *media; gchar *id; gchar *title; gchar *url; @@ -625,7 +625,7 @@ produce_podcast_contents_from_db (OperationSpec *os) sqlite3_stmt *sql_stmt = NULL; GList *iter, *medias = NULL; guint count = 0; - GrlContentMedia *media; + GrlDataMedia *media; gint r; GError *error = NULL; @@ -674,7 +674,7 @@ produce_podcast_contents_from_db (OperationSpec *os) medias = g_list_reverse (medias); iter = medias; while (iter) { - media = GRL_CONTENT_MEDIA (iter->data); + media = GRL_DATA_MEDIA (iter->data); os->callback (os->source, os->operation_id, media, @@ -761,7 +761,7 @@ remove_stream (sqlite3 *db, const gchar *url, GError **error) } static void -store_podcast (sqlite3 *db, GrlContentMedia *podcast, GError **error) +store_podcast (sqlite3 *db, GrlDataMedia *podcast, GError **error) { gint r; sqlite3_stmt *sql_stmt = NULL; @@ -772,9 +772,9 @@ store_podcast (sqlite3 *db, GrlContentMedia *podcast, GError **error) g_debug ("store_podcast"); - title = grl_content_media_get_title (podcast); - url = grl_content_media_get_url (podcast); - desc = grl_content_media_get_description (podcast); + title = grl_data_media_get_title (podcast); + url = grl_data_media_get_url (podcast); + desc = grl_data_media_get_description (podcast); g_debug ("%s", GRL_SQL_STORE_PODCAST); r = sqlite3_prepare_v2 (db, @@ -811,7 +811,7 @@ store_podcast (sqlite3 *db, GrlContentMedia *podcast, GError **error) sqlite3_finalize (sql_stmt); id = g_strdup_printf ("%llu", sqlite3_last_insert_rowid (db)); - grl_content_media_set_id (podcast, id); + grl_data_media_set_id (podcast, id); g_free (id); } @@ -915,7 +915,7 @@ parse_entry_idle (gpointer user_data) OperationSpecParse *osp = (OperationSpecParse *) user_data; xmlNodeSetPtr nodes; guint remaining; - GrlContentMedia *media; + GrlDataMedia *media; nodes = osp->xpathObj->nodesetval; @@ -1174,7 +1174,7 @@ produce_podcasts (OperationSpec *os) gint r; sqlite3_stmt *sql_stmt = NULL; sqlite3 *db; - GrlContentMedia *media; + GrlDataMedia *media; GError *error = NULL; GList *medias = NULL; guint count = 0; @@ -1234,7 +1234,7 @@ produce_podcasts (OperationSpec *os) medias = g_list_reverse (medias); iter = medias; while (iter) { - media = GRL_CONTENT_MEDIA (iter->data); + media = GRL_DATA_MEDIA (iter->data); os->callback (os->source, os->operation_id, media, @@ -1267,7 +1267,7 @@ stream_metadata (GrlMediaSourceMetadataSpec *ms) db = GRL_PODCASTS_SOURCE (ms->source)->priv->db; - id = grl_content_media_get_id (ms->media); + id = grl_data_media_get_id (ms->media); sql = g_strdup_printf (GRL_SQL_GET_PODCAST_STREAM, id); g_debug ("%s", sql); r = sqlite3_prepare_v2 (db, sql, strlen (sql), &sql_stmt, NULL); @@ -1312,10 +1312,10 @@ podcast_metadata (GrlMediaSourceMetadataSpec *ms) db = GRL_PODCASTS_SOURCE (ms->source)->priv->db; - id = grl_content_media_get_id (ms->media); + id = grl_data_media_get_id (ms->media); if (!id) { /* Root category: special case */ - grl_content_media_set_title (ms->media, ""); + grl_data_media_set_title (ms->media, ""); ms->callback (ms->source, ms->media, ms->user_data, NULL); return; } @@ -1383,7 +1383,7 @@ grl_podcasts_source_browse (GrlMediaSource *source, os = g_new0 (OperationSpec, 1); os->source = bs->source; os->operation_id = bs->browse_id; - os->media_id = grl_content_media_get_id (bs->container); + os->media_id = grl_data_media_get_id (bs->container); os->count = bs->count; os->skip = bs->skip; os->callback = bs->callback; @@ -1488,7 +1488,7 @@ grl_podcasts_source_metadata (GrlMediaSource *source, g_error_free (error); } - media_id = grl_content_media_get_id (ms->media); + media_id = grl_data_media_get_id (ms->media); if (!media_id || media_id_is_podcast (media_id)) { podcast_metadata (ms); } else { @@ -1501,7 +1501,7 @@ grl_podcasts_source_store (GrlMediaSource *source, GrlMediaSourceStoreSpec *ss) { g_debug ("grl_podcasts_source_store"); GError *error = NULL; - if (GRL_IS_CONTENT_BOX (ss->media)) { + if (GRL_IS_DATA_BOX (ss->media)) { error = g_error_new (GRL_ERROR, GRL_ERROR_STORE_FAILED, "Cannot create containers. Only feeds are accepted."); diff --git a/src/shoutcast/grl-shoutcast.c b/src/shoutcast/grl-shoutcast.c index f7347a6..a974077 100644 --- a/src/shoutcast/grl-shoutcast.c +++ b/src/shoutcast/grl-shoutcast.c @@ -65,7 +65,7 @@ #define SITE "http://www.igalia.com" typedef struct { - GrlContentMedia *media; + GrlDataMedia *media; GrlMediaSource *source; GrlMediaSourceMetadataCb metadata_cb; GrlMediaSourceResultCb result_cb; @@ -86,7 +86,7 @@ static GrlShoutcastSource *grl_shoutcast_source_new (void); gboolean grl_shoutcast_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlContentConfig *config); + const GrlDataConfig *config); static const GList *grl_shoutcast_source_supported_keys (GrlMetadataSource *source); @@ -107,7 +107,7 @@ static void grl_shoutcast_source_cancel (GrlMediaSource *source, gboolean grl_shoutcast_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlContentConfig *config) + const GrlDataConfig *config) { g_debug ("shoutcast_plugin_init\n"); @@ -187,35 +187,35 @@ xml_count_nodes (xmlNodePtr node) return count; } -static GrlContentMedia * +static GrlDataMedia * build_media_from_genre (OperationData *op_data) { - GrlContentMedia *media; + GrlDataMedia *media; gchar *genre_name; if (op_data->media) { media = op_data->media; } else { - media = grl_content_box_new (); + media = grl_data_box_new (); } genre_name = (gchar *) xmlGetProp (op_data->xml_entries, (const xmlChar *) "name"); - grl_content_media_set_id (media, genre_name); - grl_content_media_set_title (media, genre_name); - grl_content_set_string (GRL_CONTENT (media), - GRL_METADATA_KEY_GENRE, - genre_name); + grl_data_media_set_id (media, genre_name); + grl_data_media_set_title (media, genre_name); + grl_data_set_string (GRL_DATA (media), + GRL_METADATA_KEY_GENRE, + genre_name); g_free (genre_name); return media; } -static GrlContentMedia * +static GrlDataMedia * build_media_from_station (OperationData *op_data) { - GrlContentMedia *media; + GrlDataMedia *media; gchar *media_id; gchar *media_url; gchar *station_bitrate; @@ -240,16 +240,16 @@ build_media_from_station (OperationData *op_data) if (op_data->media) { media = op_data->media; } else { - media = grl_content_audio_new (); + media = grl_data_audio_new (); } - grl_content_media_set_id (media, media_id); - grl_content_media_set_title (media, station_name); - grl_content_media_set_mime (media, station_mime); - grl_content_audio_set_genre (GRL_CONTENT_AUDIO (media), station_genre); - grl_content_media_set_url (media, media_url); - grl_content_audio_set_bitrate (GRL_CONTENT_AUDIO (media), - atoi (station_bitrate)); + grl_data_media_set_id (media, media_id); + grl_data_media_set_title (media, station_name); + grl_data_media_set_mime (media, station_mime); + grl_data_audio_set_genre (GRL_DATA_AUDIO (media), station_genre); + grl_data_media_set_url (media, media_url); + grl_data_audio_set_bitrate (GRL_DATA_AUDIO (media), + atoi (station_bitrate)); g_free (station_name); g_free (station_mime); @@ -263,7 +263,7 @@ build_media_from_station (OperationData *op_data) } static gboolean -send_media (OperationData *op_data, GrlContentMedia *media) +send_media (OperationData *op_data, GrlDataMedia *media) { if (!op_data->cancelled) { op_data->result_cb (op_data->source, @@ -366,7 +366,7 @@ xml_parse_result (const gchar *str, OperationData *op_data) error = g_error_new (GRL_ERROR, op_data->error_code, "Can not find media '%s'", - grl_content_media_get_id (op_data->media)); + grl_data_media_get_id (op_data->media)); } if (xpath_res) { xmlXPathFreeObject (xpath_res); @@ -524,11 +524,11 @@ grl_shoutcast_source_metadata (GrlMediaSource *source, repeat the Pop browsing and get the result with station id 1321. If it doesn't exist (think in results obtained from a search), we do nothing */ - media_id = grl_content_media_get_id (ms->media); + media_id = grl_data_media_get_id (ms->media); /* Check if we need to report about root category */ if (!media_id) { - grl_content_media_set_title (ms->media, "SHOUTcast"); + grl_data_media_set_title (ms->media, "SHOUTcast"); } else { data = g_new0 (OperationData, 1); data->source = source; @@ -589,7 +589,7 @@ grl_shoutcast_source_browse (GrlMediaSource *source, data->user_data = bs->user_data; data->error_code = GRL_ERROR_BROWSE_FAILED; - container_id = grl_content_media_get_id (bs->container); + container_id = grl_data_media_get_id (bs->container); /* If it's root category send list of genres; else send list of radios */ if (!container_id) { diff --git a/src/upnp/grl-upnp.c b/src/upnp/grl-upnp.c index 28a15a1..18d52a6 100644 --- a/src/upnp/grl-upnp.c +++ b/src/upnp/grl-upnp.c @@ -103,7 +103,7 @@ static GrlUpnpSource *grl_upnp_source_new (const gchar *id, const gchar *name); gboolean grl_upnp_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlContentConfig *config); + const GrlDataConfig *config); static void grl_upnp_source_finalize (GObject *plugin); @@ -137,7 +137,7 @@ static GHashTable *filter_key_mapping = NULL; gboolean grl_upnp_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlContentConfig *config) + const GrlDataConfig *config) { GError *error = NULL; GUPnPContext *context; @@ -760,43 +760,43 @@ get_value_for_key (GrlKeyID key_id, } static void -set_metadata_value (GrlContentMedia *media, +set_metadata_value (GrlDataMedia *media, GrlKeyID key_id, const gchar *value) { switch (key_id) { case GRL_METADATA_KEY_TITLE: - grl_content_media_set_title (media, value); + grl_data_media_set_title (media, value); break; case GRL_METADATA_KEY_ARTIST: - grl_content_audio_set_artist (media, value); + grl_data_audio_set_artist (media, value); break; case GRL_METADATA_KEY_ALBUM: - grl_content_audio_set_album (media, value); + grl_data_audio_set_album (media, value); break; case GRL_METADATA_KEY_GENRE: - grl_content_audio_set_genre (media, value); + grl_data_audio_set_genre (media, value); break; case GRL_METADATA_KEY_URL: - grl_content_media_set_url (media, value); + grl_data_media_set_url (media, value); break; case GRL_METADATA_KEY_MIME: - grl_content_media_set_mime (media, value); + grl_data_media_set_mime (media, value); break; case GRL_METADATA_KEY_DATE: - grl_content_media_set_date (media, value); + grl_data_media_set_date (media, value); break; case GRL_METADATA_KEY_DURATION: { gint duration = didl_h_mm_ss_to_int (value); if (duration >= 0) { - grl_content_media_set_duration (media, duration); + grl_data_media_set_duration (media, duration); } } break; case GRL_METADATA_KEY_CHILDCOUNT: - if (value && GRL_IS_CONTENT_BOX (media)) { - grl_content_box_set_childcount (GRL_CONTENT_BOX (media), atoi (value)); + if (value && GRL_IS_DATA_BOX (media)) { + grl_data_box_set_childcount (GRL_DATA_BOX (media), atoi (value)); } break; default: @@ -804,8 +804,8 @@ set_metadata_value (GrlContentMedia *media, } } -static GrlContentMedia * -build_media_from_didl (GrlContentMedia *content, +static GrlDataMedia * +build_media_from_didl (GrlDataMedia *content, #ifdef GUPNPAV_OLD_VERSION xmlNode *didl_node, #else @@ -821,7 +821,7 @@ build_media_from_didl (GrlContentMedia *content, const gchar *class; #endif - GrlContentMedia *media = NULL; + GrlDataMedia *media = NULL; GList *didl_props; GList *iter; @@ -837,28 +837,28 @@ build_media_from_didl (GrlContentMedia *content, if (GUPNP_IS_DIDL_LITE_CONTAINER (didl_node)) { #endif - media = grl_content_box_new (); + media = grl_data_box_new (); } else { if (!media) { class = gupnp_didl_lite_object_get_upnp_class (didl_node); if (class) { if (g_str_has_prefix (class, "object.item.audioItem")) { - media = grl_content_audio_new (); + media = grl_data_audio_new (); } else if (g_str_has_prefix (class, "object.item.videoItem")) { - media = grl_content_video_new (); + media = grl_data_video_new (); } else if (g_str_has_prefix (class, "object.item.imageItem")) { - media = grl_content_image_new (); + media = grl_data_image_new (); } else { - media = grl_content_media_new (); + media = grl_data_media_new (); } } else { - media = grl_content_media_new (); + media = grl_data_media_new (); } } } id = gupnp_didl_lite_object_get_id (didl_node); - grl_content_media_set_id (media, id); + grl_data_media_set_id (media, id); didl_props = didl_get_supported_resources (didl_node); @@ -890,7 +890,7 @@ gupnp_browse_result_cb (GUPnPDIDLLiteParser *parser, #endif gpointer user_data) { - GrlContentMedia *media; + GrlDataMedia *media; struct OperationSpec *os = (struct OperationSpec *) user_data; if (gupnp_didl_lite_object_get_id (didl)) { media = build_media_from_didl (NULL, didl, os->keys); @@ -1103,7 +1103,7 @@ grl_upnp_source_browse (GrlMediaSource *source, GrlMediaSourceBrowseSpec *bs) os->callback = bs->callback; os->user_data = bs->user_data; - container_id = (gchar *) grl_content_media_get_id (bs->container); + container_id = (gchar *) grl_data_media_get_id (bs->container); if (!container_id) { container_id = "0"; } @@ -1201,7 +1201,7 @@ grl_upnp_source_metadata (GrlMediaSource *source, g_debug ("filter: '%s'", upnp_filter); - id = (gchar *) grl_content_media_get_id (ms->media); + id = (gchar *) grl_data_media_get_id (ms->media); if (!id) { id = "0"; } diff --git a/src/youtube/grl-youtube.c b/src/youtube/grl-youtube.c index 323a057..065e01a 100644 --- a/src/youtube/grl-youtube.c +++ b/src/youtube/grl-youtube.c @@ -190,7 +190,7 @@ static GrlYoutubeSource *grl_youtube_source_new (void); gboolean grl_youtube_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlContentConfig *config); + const GrlDataConfig *config); static const GList *grl_youtube_source_supported_keys (GrlMetadataSource *source); @@ -243,7 +243,7 @@ CategoryInfo *categories_dir = NULL; gboolean grl_youtube_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlContentConfig *config) + const GrlDataConfig *config) { g_debug ("youtube_plugin_init\n"); @@ -439,17 +439,17 @@ read_url (const gchar *url) } } -static GrlContentMedia * -build_media_from_entry (GrlContentMedia *content, +static GrlDataMedia * +build_media_from_entry (GrlDataMedia *content, const Entry *entry, const GList *keys) { - GrlContentMedia *media; + GrlDataMedia *media; gchar *url; GList *iter; if (!content) { - media = grl_content_video_new (); + media = grl_data_video_new (); } else { media = content; } @@ -459,40 +459,40 @@ build_media_from_entry (GrlContentMedia *content, GrlKeyID key_id = POINTER_TO_GRLKEYID (iter->data); switch (key_id) { case GRL_METADATA_KEY_ID: - grl_content_media_set_id (media, entry->id); + grl_data_media_set_id (media, entry->id); break; case GRL_METADATA_KEY_TITLE: - grl_content_media_set_title (media, entry->title); + grl_data_media_set_title (media, entry->title); break; case GRL_METADATA_KEY_AUTHOR: - grl_content_media_set_author (media, entry->author); + grl_data_media_set_author (media, entry->author); break; case GRL_METADATA_KEY_DESCRIPTION: - grl_content_media_set_description (media, entry->description); + grl_data_media_set_description (media, entry->description); break; case GRL_METADATA_KEY_THUMBNAIL: - grl_content_media_set_thumbnail (media, entry->thumbnail); + grl_data_media_set_thumbnail (media, entry->thumbnail); break; case GRL_METADATA_KEY_DATE: - grl_content_media_set_date (media, entry->published); + grl_data_media_set_date (media, entry->published); break; case GRL_METADATA_KEY_DURATION: - grl_content_media_set_duration (media, atoi (entry->duration)); + grl_data_media_set_duration (media, atoi (entry->duration)); break; case GRL_METADATA_KEY_MIME: - grl_content_media_set_mime (media, YOUTUBE_VIDEO_MIME); + grl_data_media_set_mime (media, YOUTUBE_VIDEO_MIME); break; case GRL_METADATA_KEY_SITE: - grl_content_media_set_site (media, YOUTUBE_SITE_URL); + grl_data_media_set_site (media, YOUTUBE_SITE_URL); break; case GRL_METADATA_KEY_RATING: - grl_content_media_set_rating (media, entry->rating, "5.00"); + grl_data_media_set_rating (media, entry->rating, "5.00"); break; case GRL_METADATA_KEY_URL: if (!entry->restricted) { url = get_video_url (entry->id); if (url) { - grl_content_media_set_url (media, url); + grl_data_media_set_url (media, url); } g_free (url); } @@ -626,7 +626,7 @@ parse_entries_idle (gpointer user_data) Entry *entry = g_new0 (Entry, 1); parse_entry (pei->doc, pei->node, entry); if (0) print_entry (entry); - GrlContentMedia *media = + GrlDataMedia *media = build_media_from_entry (NULL, entry, pei->os->keys); free_entry (entry); @@ -778,7 +778,7 @@ parse_feed (OperationSpec *os, const gchar *str, GError **error) return; } -static GrlContentMedia * +static GrlDataMedia * parse_metadata_entry (GrlMediaSourceMetadataSpec *os, xmlDocPtr doc, xmlNodePtr node, @@ -786,7 +786,7 @@ parse_metadata_entry (GrlMediaSourceMetadataSpec *os, { xmlNs *ns; guint total_results = 0; - GrlContentMedia *media = NULL; + GrlDataMedia *media = NULL; /* First checkout search information looking for totalResults */ while (node && !total_results) { @@ -1012,7 +1012,7 @@ get_container_url (const gchar *container_id) } static void -set_category_childcount (GrlContentBox *content, +set_category_childcount (GrlDataBox *content, CategoryInfo *dir, guint index) { @@ -1047,48 +1047,48 @@ set_category_childcount (GrlContentBox *content, } if (set_childcount) { - grl_content_box_set_childcount (content, childcount); + grl_data_box_set_childcount (content, childcount); } } -static GrlContentMedia * -produce_container_from_directory (GrlContentMedia *media, +static GrlDataMedia * +produce_container_from_directory (GrlDataMedia *media, CategoryInfo *dir, guint index, gboolean set_childcount) { - GrlContentMedia *content; + GrlDataMedia *content; if (!media) { /* Create mode */ - content = grl_content_box_new (); + content = grl_data_box_new (); } else { /* Update mode */ content = media; } if (!dir) { - grl_content_media_set_id (content, NULL); - grl_content_media_set_title (content, YOUTUBE_ROOT_NAME); + grl_data_media_set_id (content, NULL); + grl_data_media_set_title (content, YOUTUBE_ROOT_NAME); } else { - grl_content_media_set_id (content, dir[index].id); - grl_content_media_set_title (content, dir[index].name); + grl_data_media_set_id (content, dir[index].id); + grl_data_media_set_title (content, dir[index].name); } - grl_content_media_set_site (content, YOUTUBE_SITE_URL); + grl_data_media_set_site (content, YOUTUBE_SITE_URL); if (set_childcount) { - set_category_childcount (GRL_CONTENT_BOX (content), dir, index); + set_category_childcount (GRL_DATA_BOX (content), dir, index); } return content; } -static GrlContentMedia * -produce_container_from_directory_by_id (GrlContentMedia *media, +static GrlDataMedia * +produce_container_from_directory_by_id (GrlDataMedia *media, CategoryInfo *dir, const gchar *id, gboolean set_childcount) { - GrlContentMedia *content; + GrlDataMedia *content; guint index = 0; while (dir[index].id && strcmp (dir[index].id, id)) index++; @@ -1125,7 +1125,7 @@ classify_media_id (const gchar *media_id) static gboolean produce_from_directory_idle (gpointer user_data) { - GrlContentMedia *content; + GrlDataMedia *content; ProduceFromDirectoryIdle *pfdi = (ProduceFromDirectoryIdle *) user_data; if (!pfdi->os->cancelled) { @@ -1344,7 +1344,7 @@ grl_youtube_source_browse (GrlMediaSource *source, g_debug ("grl_youtube_source_browse"); - container_id = grl_content_media_get_id (bs->container); + container_id = grl_data_media_get_id (bs->container); os = g_new0 (OperationSpec, 1); os->source = bs->source; @@ -1412,14 +1412,14 @@ grl_youtube_source_metadata (GrlMediaSource *source, { gchar *url; GError *error = NULL; - GrlContentMedia *media = NULL; + GrlDataMedia *media = NULL; YoutubeMediaType media_type; gboolean set_childcount; const gchar *id; g_debug ("grl_youtube_source_metadata"); - id = grl_content_media_get_id (ms->media); + id = grl_data_media_get_id (ms->media); media_type = classify_media_id (id); /* Do not compute childcount for expensive categories diff --git a/test/main.c b/test/main.c index d86a723..5402fbb 100644 --- a/test/main.c +++ b/test/main.c @@ -54,7 +54,7 @@ print_supported_ops (GrlMetadataSource *source) } static void -print_metadata (gpointer key, GrlContent *content) +print_metadata (gpointer key, GrlData *content) { GrlKeyID key_id = POINTER_TO_GRLKEYID(key); @@ -66,7 +66,7 @@ print_metadata (gpointer key, GrlContent *content) const GrlMetadataKey *mkey = grl_plugin_registry_lookup_metadata_key (registry, key_id); - const GValue *value = grl_content_get (content, key_id); + const GValue *value = grl_data_get (content, key_id); if (value && G_VALUE_HOLDS_STRING (value)) { g_debug ("\t%s: %s", GRL_METADATA_KEY_GET_NAME (mkey), g_value_get_string (value)); @@ -76,28 +76,28 @@ print_metadata (gpointer key, GrlContent *content) } } -static GrlContentMedia * +static GrlDataMedia * media_from_id (const gchar *id) { - GrlContentMedia *media; - media = grl_content_media_new (); - grl_content_media_set_id (media, id); + GrlDataMedia *media; + media = grl_data_media_new (); + grl_data_media_set_id (media, id); return media; } -static GrlContentMedia * +static GrlDataMedia * box_from_id (const gchar *id) { - GrlContentMedia *media; - media = grl_content_box_new (); - grl_content_media_set_id (media, id); + GrlDataMedia *media; + media = grl_data_box_new (); + grl_data_media_set_id (media, id); return media; } static void browse_cb (GrlMediaSource *source, guint browse_id, - GrlContentMedia *media, + GrlDataMedia *media, guint remaining, gpointer user_data, const GError *error) @@ -118,10 +118,10 @@ browse_cb (GrlMediaSource *source, } g_debug ("\tContainer: %s", - GRL_IS_CONTENT_BOX(media) ? "yes" : "no"); + GRL_IS_DATA_BOX(media) ? "yes" : "no"); - keys = grl_content_get_keys (GRL_CONTENT (media)); - g_list_foreach (keys, (GFunc) print_metadata, GRL_CONTENT (media)); + keys = grl_data_get_keys (GRL_DATA (media)); + g_list_foreach (keys, (GFunc) print_metadata, GRL_DATA (media)); g_list_free (keys); g_object_unref (media); @@ -132,7 +132,7 @@ browse_cb (GrlMediaSource *source, static void metadata_cb (GrlMediaSource *source, - GrlContentMedia *media, + GrlDataMedia *media, gpointer user_data, const GError *error) { @@ -146,13 +146,13 @@ metadata_cb (GrlMediaSource *source, } g_debug (" Got metadata for object '%s'", - grl_content_media_get_id (GRL_CONTENT_MEDIA (media))); + grl_data_media_get_id (GRL_DATA_MEDIA (media))); g_debug ("\tContainer: %s", - GRL_IS_CONTENT_BOX(media) ? "yes" : "no"); + GRL_IS_DATA_BOX(media) ? "yes" : "no"); - keys = grl_content_get_keys (GRL_CONTENT (media)); - g_list_foreach (keys, (GFunc) print_metadata, GRL_CONTENT (media)); + keys = grl_data_get_keys (GRL_DATA (media)); + g_list_foreach (keys, (GFunc) print_metadata, GRL_DATA (media)); g_list_free (keys); g_object_unref (media); @@ -161,7 +161,7 @@ metadata_cb (GrlMediaSource *source, static void resolve_cb (GrlMetadataSource *source, - GrlContentMedia *media, + GrlDataMedia *media, gpointer user_data, const GError *error) { @@ -316,13 +316,13 @@ main (void) if (0) grl_media_source_metadata (shoutcast, media_from_id("American/556682"), keys, 0, metadata_cb, NULL); if (1) grl_media_source_browse (apple_trailers, NULL, keys, 0, 5, GRL_RESOLVE_IDLE_RELAY , browse_cb, NULL); if (0) { - GrlContentMedia *media = media_from_id ("test"); - grl_content_set_string (GRL_CONTENT (media), - GRL_METADATA_KEY_ARTIST, - "roxette"); - grl_content_set_string (GRL_CONTENT (media), - GRL_METADATA_KEY_ALBUM, - "pop hits"); + GrlDataMedia *media = media_from_id ("test"); + grl_data_set_string (GRL_DATA (media), + GRL_METADATA_KEY_ARTIST, + "roxette"); + grl_data_set_string (GRL_DATA (media), + GRL_METADATA_KEY_ALBUM, + "pop hits"); grl_metadata_source_resolve (lastfm, keys, media, GRL_RESOLVE_IDLE_RELAY, resolve_cb, NULL); } -- cgit v1.2.1 From b088103cb67c0e0cba8bdba9088457cc8e15646e Mon Sep 17 00:00:00 2001 From: "Juan A. Suarez Romero" Date: Thu, 4 Mar 2010 21:36:35 +0100 Subject: Rename GrlDataConfig to GrlConfig --- src/apple-trailers/grl-apple-trailers.c | 4 ++-- src/bookmarks/grl-bookmarks.c | 2 +- src/fake-metadata/grl-fake-metadata.c | 4 ++-- src/filesystem/grl-filesystem.c | 4 ++-- src/flickr/grl-flickr.c | 10 +++++----- src/jamendo/grl-jamendo.c | 4 ++-- src/lastfm-albumart/grl-lastfm-albumart.c | 4 ++-- src/podcasts/grl-podcasts.c | 2 +- src/shoutcast/grl-shoutcast.c | 4 ++-- src/upnp/grl-upnp.c | 4 ++-- src/youtube/grl-youtube.c | 4 ++-- 11 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/apple-trailers/grl-apple-trailers.c b/src/apple-trailers/grl-apple-trailers.c index 3d6e85d..3b5d4c8 100644 --- a/src/apple-trailers/grl-apple-trailers.c +++ b/src/apple-trailers/grl-apple-trailers.c @@ -74,7 +74,7 @@ static GrlAppleTrailersSource *grl_apple_trailers_source_new (void); gboolean grl_apple_trailers_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlDataConfig *config); + const GrlConfig *config); static const GList *grl_apple_trailers_source_supported_keys (GrlMetadataSource *source); @@ -89,7 +89,7 @@ static void grl_apple_trailers_source_cancel (GrlMediaSource *source, gboolean grl_apple_trailers_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlDataConfig *config) + const GrlConfig *config) { g_debug ("apple_trailers_plugin_init\n"); diff --git a/src/bookmarks/grl-bookmarks.c b/src/bookmarks/grl-bookmarks.c index c5c43d0..e3656e4 100644 --- a/src/bookmarks/grl-bookmarks.c +++ b/src/bookmarks/grl-bookmarks.c @@ -178,7 +178,7 @@ static void grl_bookmarks_source_remove (GrlMediaSource *source, static gboolean grl_bookmarks_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlDataConfig *config) + const GrlConfig *config) { g_debug ("grl_bookmarks_plugin_init\n"); diff --git a/src/fake-metadata/grl-fake-metadata.c b/src/fake-metadata/grl-fake-metadata.c index a1c44a8..1812268 100644 --- a/src/fake-metadata/grl-fake-metadata.c +++ b/src/fake-metadata/grl-fake-metadata.c @@ -56,7 +56,7 @@ static const GList *grl_fake_metadata_source_key_depends (GrlMetadataSource *sou gboolean grl_fake_metadata_source_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlDataConfig *config); + const GrlConfig *config); /* =================== GrlFakeMetadata Plugin =============== */ @@ -64,7 +64,7 @@ gboolean grl_fake_metadata_source_plugin_init (GrlPluginRegistry *registry, gboolean grl_fake_metadata_source_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlDataConfig *config) + const GrlConfig *config) { g_debug ("grl_fake_metadata_source_plugin_init"); GrlFakeMetadataSource *source = grl_fake_metadata_source_new (); diff --git a/src/filesystem/grl-filesystem.c b/src/filesystem/grl-filesystem.c index 646faf7..5a72e26 100644 --- a/src/filesystem/grl-filesystem.c +++ b/src/filesystem/grl-filesystem.c @@ -80,7 +80,7 @@ static GrlFilesystemSource *grl_filesystem_source_new (void); gboolean grl_filesystem_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlDataConfig *config); + const GrlConfig *config); static const GList *grl_filesystem_source_supported_keys (GrlMetadataSource *source); @@ -96,7 +96,7 @@ static void grl_filesystem_source_browse (GrlMediaSource *source, gboolean grl_filesystem_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlDataConfig *config) + const GrlConfig *config) { g_debug ("filesystem_plugin_init\n"); diff --git a/src/flickr/grl-flickr.c b/src/flickr/grl-flickr.c index f6bcd7b..9e59f58 100644 --- a/src/flickr/grl-flickr.c +++ b/src/flickr/grl-flickr.c @@ -71,7 +71,7 @@ static GrlFlickrSource *grl_flickr_source_new (void); gboolean grl_flickr_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlDataConfig *config); + const GrlConfig *config); static const GList *grl_flickr_source_supported_keys (GrlMetadataSource *source); @@ -86,7 +86,7 @@ static void grl_flickr_source_search (GrlMediaSource *source, gboolean grl_flickr_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlDataConfig *config) + const GrlConfig *config) { const gchar *flickr_key; const gchar *flickr_secret; @@ -99,9 +99,9 @@ grl_flickr_plugin_init (GrlPluginRegistry *registry, return FALSE; } - flickr_key = grl_data_config_get_api_key (config); - flickr_token = grl_data_config_get_api_token (config); - flickr_secret = grl_data_config_get_api_secret (config); + flickr_key = grl_config_get_api_key (config); + flickr_token = grl_config_get_api_token (config); + flickr_secret = grl_config_get_api_secret (config); if (!flickr_key || ! flickr_token || !flickr_secret) { g_warning ("Required configuration keys not set up"); diff --git a/src/jamendo/grl-jamendo.c b/src/jamendo/grl-jamendo.c index a3680b2..5bfdfee 100644 --- a/src/jamendo/grl-jamendo.c +++ b/src/jamendo/grl-jamendo.c @@ -142,7 +142,7 @@ static GrlJamendoSource *grl_jamendo_source_new (void); gboolean grl_jamendo_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlDataConfig *config); + const GrlConfig *config); static const GList *grl_jamendo_source_supported_keys (GrlMetadataSource *source); @@ -166,7 +166,7 @@ static void grl_jamendo_source_cancel (GrlMediaSource *source, gboolean grl_jamendo_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlDataConfig *config) + const GrlConfig *config) { g_debug ("jamendo_plugin_init\n"); diff --git a/src/lastfm-albumart/grl-lastfm-albumart.c b/src/lastfm-albumart/grl-lastfm-albumart.c index c6084da..4dc911d 100644 --- a/src/lastfm-albumart/grl-lastfm-albumart.c +++ b/src/lastfm-albumart/grl-lastfm-albumart.c @@ -70,7 +70,7 @@ static const GList *grl_lastfm_albumart_source_key_depends (GrlMetadataSource *s gboolean grl_lastfm_albumart_source_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlDataConfig *config); + const GrlConfig *config); /* =================== Last.FM-AlbumArt Plugin =============== */ @@ -78,7 +78,7 @@ gboolean grl_lastfm_albumart_source_plugin_init (GrlPluginRegistry *registry, gboolean grl_lastfm_albumart_source_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlDataConfig *config) + const GrlConfig *config) { g_debug ("grl_lastfm_albumart_source_plugin_init"); GrlLastfmAlbumartSource *source = grl_lastfm_albumart_source_new (); diff --git a/src/podcasts/grl-podcasts.c b/src/podcasts/grl-podcasts.c index a7ad14f..24fe940 100644 --- a/src/podcasts/grl-podcasts.c +++ b/src/podcasts/grl-podcasts.c @@ -237,7 +237,7 @@ static void grl_podcasts_source_remove (GrlMediaSource *source, static gboolean grl_podcasts_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlDataConfig *config) + const GrlConfig *config) { g_debug ("podcasts_plugin_init\n"); diff --git a/src/shoutcast/grl-shoutcast.c b/src/shoutcast/grl-shoutcast.c index a974077..f6cd061 100644 --- a/src/shoutcast/grl-shoutcast.c +++ b/src/shoutcast/grl-shoutcast.c @@ -86,7 +86,7 @@ static GrlShoutcastSource *grl_shoutcast_source_new (void); gboolean grl_shoutcast_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlDataConfig *config); + const GrlConfig *config); static const GList *grl_shoutcast_source_supported_keys (GrlMetadataSource *source); @@ -107,7 +107,7 @@ static void grl_shoutcast_source_cancel (GrlMediaSource *source, gboolean grl_shoutcast_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlDataConfig *config) + const GrlConfig *config) { g_debug ("shoutcast_plugin_init\n"); diff --git a/src/upnp/grl-upnp.c b/src/upnp/grl-upnp.c index 18d52a6..103e6df 100644 --- a/src/upnp/grl-upnp.c +++ b/src/upnp/grl-upnp.c @@ -103,7 +103,7 @@ static GrlUpnpSource *grl_upnp_source_new (const gchar *id, const gchar *name); gboolean grl_upnp_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlDataConfig *config); + const GrlConfig *config); static void grl_upnp_source_finalize (GObject *plugin); @@ -137,7 +137,7 @@ static GHashTable *filter_key_mapping = NULL; gboolean grl_upnp_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlDataConfig *config) + const GrlConfig *config) { GError *error = NULL; GUPnPContext *context; diff --git a/src/youtube/grl-youtube.c b/src/youtube/grl-youtube.c index 065e01a..4b79f88 100644 --- a/src/youtube/grl-youtube.c +++ b/src/youtube/grl-youtube.c @@ -190,7 +190,7 @@ static GrlYoutubeSource *grl_youtube_source_new (void); gboolean grl_youtube_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlDataConfig *config); + const GrlConfig *config); static const GList *grl_youtube_source_supported_keys (GrlMetadataSource *source); @@ -243,7 +243,7 @@ CategoryInfo *categories_dir = NULL; gboolean grl_youtube_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlDataConfig *config) + const GrlConfig *config) { g_debug ("youtube_plugin_init\n"); -- cgit v1.2.1 From 750f2d1567553d10c18b230ad673b41254f9edd2 Mon Sep 17 00:00:00 2001 From: "Juan A. Suarez Romero" Date: Thu, 4 Mar 2010 21:55:33 +0100 Subject: Rename GrlDataMedia to GrlMedia --- src/apple-trailers/grl-apple-trailers.c | 22 +++++----- src/bookmarks/grl-bookmarks.c | 48 +++++++++++----------- src/fake-metadata/grl-fake-metadata.c | 12 +++--- src/filesystem/grl-filesystem.c | 32 +++++++-------- src/flickr/grl-flickr.c | 20 ++++----- src/jamendo/grl-jamendo.c | 46 ++++++++++----------- src/podcasts/grl-podcasts.c | 72 ++++++++++++++++----------------- src/shoutcast/grl-shoutcast.c | 32 +++++++-------- src/upnp/grl-upnp.c | 30 +++++++------- src/youtube/grl-youtube.c | 64 ++++++++++++++--------------- test/main.c | 24 +++++------ 11 files changed, 201 insertions(+), 201 deletions(-) diff --git a/src/apple-trailers/grl-apple-trailers.c b/src/apple-trailers/grl-apple-trailers.c index 3b5d4c8..10a2314 100644 --- a/src/apple-trailers/grl-apple-trailers.c +++ b/src/apple-trailers/grl-apple-trailers.c @@ -191,10 +191,10 @@ runtime_to_seconds (const gchar *runtime) return seconds; } -static GrlDataMedia * +static GrlMedia * build_media_from_movie (xmlNodePtr node) { - GrlDataMedia * media; + GrlMedia * media; gchar *movie_author; gchar *movie_date; gchar *movie_description; @@ -225,17 +225,17 @@ build_media_from_movie (xmlNodePtr node) movie_url = get_node_value (node_dup, "/movieinfo/preview/large"); xmlFreeDoc (xml_doc); - grl_data_media_set_id (media, movie_id); - grl_data_media_set_author (media, movie_author); - grl_data_media_set_date (media, movie_date); - grl_data_media_set_description (media, movie_description); - grl_data_media_set_duration (media, runtime_to_seconds (movie_duration)); - grl_data_media_set_title (media, movie_title); + grl_media_set_id (media, movie_id); + grl_media_set_author (media, movie_author); + grl_media_set_date (media, movie_date); + grl_media_set_description (media, movie_description); + grl_media_set_duration (media, runtime_to_seconds (movie_duration)); + grl_media_set_title (media, movie_title); grl_data_set_string (GRL_DATA (media), GRL_METADATA_KEY_GENRE, movie_genre); - grl_data_media_set_thumbnail (media, movie_thumbnail); - grl_data_media_set_url (media, movie_url); + grl_media_set_thumbnail (media, movie_thumbnail); + grl_media_set_url (media, movie_url); g_free (movie_id); g_free (movie_author); @@ -253,7 +253,7 @@ build_media_from_movie (xmlNodePtr node) static gboolean send_movie_info (OperationData *op_data) { - GrlDataMedia *media; + GrlMedia *media; gboolean last = FALSE; if (op_data->cancelled) { diff --git a/src/bookmarks/grl-bookmarks.c b/src/bookmarks/grl-bookmarks.c index e3656e4..e419099 100644 --- a/src/bookmarks/grl-bookmarks.c +++ b/src/bookmarks/grl-bookmarks.c @@ -314,10 +314,10 @@ mime_is_audio (const gchar *mime) return mime && strstr (mime, "audio") != NULL; } -static GrlDataMedia * -build_media_from_stmt (GrlDataMedia *content, sqlite3_stmt *sql_stmt) +static GrlMedia * +build_media_from_stmt (GrlMedia *content, sqlite3_stmt *sql_stmt) { - GrlDataMedia *media = NULL; + GrlMedia *media = NULL; gchar *id; gchar *title; gchar *url; @@ -342,26 +342,26 @@ build_media_from_stmt (GrlDataMedia *content, sqlite3_stmt *sql_stmt) if (!media) { if (type == BOOKMARK_TYPE_CATEGORY) { - media = GRL_DATA_MEDIA (grl_data_box_new ()); + media = GRL_MEDIA (grl_data_box_new ()); } else if (mime_is_audio (mime)) { - media = GRL_DATA_MEDIA (grl_data_media_new ()); + media = GRL_MEDIA (grl_media_new ()); } else if (mime_is_video (mime)) { - media = GRL_DATA_MEDIA (grl_data_media_new ()); + media = GRL_MEDIA (grl_media_new ()); } else { - media = GRL_DATA_MEDIA (grl_data_media_new ()); + media = GRL_MEDIA (grl_media_new ()); } } - grl_data_media_set_id (media, id); - grl_data_media_set_title (media, title); + grl_media_set_id (media, id); + grl_media_set_title (media, title); if (url) { - grl_data_media_set_url (media, url); + grl_media_set_url (media, url); } if (desc) { - grl_data_media_set_description (media, desc); + grl_media_set_description (media, desc); } if (date) { - grl_data_media_set_date (media, date); + grl_media_set_date (media, date); } if (type == BOOKMARK_TYPE_CATEGORY) { @@ -385,10 +385,10 @@ bookmark_metadata (GrlMediaSourceMetadataSpec *ms) db = GRL_BOOKMARKS_SOURCE (ms->source)->priv->db; - id = grl_data_media_get_id (ms->media); + id = grl_media_get_id (ms->media); if (!id) { /* Root category: special case */ - grl_data_media_set_title (ms->media, ""); + grl_media_set_title (ms->media, ""); ms->callback (ms->source, ms->media, ms->user_data, NULL); return; } @@ -431,7 +431,7 @@ produce_bookmarks_from_sql (OperationSpec *os, const gchar *sql) gint r; sqlite3_stmt *sql_stmt = NULL; sqlite3 *db; - GrlDataMedia *media; + GrlMedia *media; GError *error = NULL; GList *medias = NULL; guint count = 0; @@ -476,7 +476,7 @@ produce_bookmarks_from_sql (OperationSpec *os, const gchar *sql) medias = g_list_reverse (medias); iter = medias; while (iter) { - media = GRL_DATA_MEDIA (iter->data); + media = GRL_MEDIA (iter->data); os->callback (os->source, os->operation_id, media, @@ -558,7 +558,7 @@ remove_bookmark (sqlite3 *db, const gchar *bookmark_id, GError **error) static void store_bookmark (sqlite3 *db, GrlDataBox *parent, - GrlDataMedia *bookmark, + GrlMedia *bookmark, GError **error) { gint r; @@ -575,17 +575,17 @@ store_bookmark (sqlite3 *db, g_debug ("store_bookmark"); - title = grl_data_media_get_title (bookmark); - url = grl_data_media_get_url (bookmark); - desc = grl_data_media_get_description (bookmark); - mime = grl_data_media_get_mime (bookmark); + title = grl_media_get_title (bookmark); + url = grl_media_get_url (bookmark); + desc = grl_media_get_description (bookmark); + mime = grl_media_get_mime (bookmark); g_get_current_time (&now); date = g_time_val_to_iso8601 (&now); if (!parent) { parent_id = "0"; } else { - parent_id = grl_data_media_get_id (parent); + parent_id = grl_media_get_id (parent); } if (!parent_id) { parent_id = "0"; @@ -650,7 +650,7 @@ store_bookmark (sqlite3 *db, sqlite3_finalize (sql_stmt); id = g_strdup_printf ("%llu", sqlite3_last_insert_rowid (db)); - grl_data_media_set_id (bookmark, id); + grl_media_set_id (bookmark, id); g_free (id); } @@ -696,7 +696,7 @@ grl_bookmarks_source_browse (GrlMediaSource *source, os = g_new0 (OperationSpec, 1); os->source = bs->source; os->operation_id = bs->browse_id; - os->media_id = grl_data_media_get_id (bs->container); + os->media_id = grl_media_get_id (bs->container); os->count = bs->count; os->skip = bs->skip; os->callback = bs->callback; diff --git a/src/fake-metadata/grl-fake-metadata.c b/src/fake-metadata/grl-fake-metadata.c index 1812268..20bf1af 100644 --- a/src/fake-metadata/grl-fake-metadata.c +++ b/src/fake-metadata/grl-fake-metadata.c @@ -118,11 +118,11 @@ G_DEFINE_TYPE (GrlFakeMetadataSource, /* ======================= Utilities ==================== */ static void -fill_metadata (GrlDataMedia *media, GrlKeyID key_id) +fill_metadata (GrlMedia *media, GrlKeyID key_id) { switch (key_id) { case GRL_METADATA_KEY_AUTHOR: - grl_data_media_set_author (media, "fake author"); + grl_media_set_author (media, "fake author"); break; case GRL_METADATA_KEY_ARTIST: grl_data_set_string (GRL_DATA (media), @@ -137,17 +137,17 @@ fill_metadata (GrlDataMedia *media, GrlKeyID key_id) GRL_METADATA_KEY_GENRE, "fake genre"); break; case GRL_METADATA_KEY_DESCRIPTION: - grl_data_media_set_description (media, "fake description"); + grl_media_set_description (media, "fake description"); break; case GRL_METADATA_KEY_DURATION: - grl_data_media_set_duration (media, 99); + grl_media_set_duration (media, 99); break; case GRL_METADATA_KEY_DATE: grl_data_set_string (GRL_DATA (media), GRL_METADATA_KEY_DATE, "01/01/1970"); break; case GRL_METADATA_KEY_THUMBNAIL: - grl_data_media_set_thumbnail (media, + grl_media_set_thumbnail (media, "http://fake.thumbnail.com/fake-image.jpg"); break; default: @@ -213,7 +213,7 @@ grl_fake_metadata_source_resolve (GrlMetadataSource *source, iter = rs->keys; while (iter) { GrlKeyID key_id = POINTER_TO_GRLKEYID (iter->data); - fill_metadata (GRL_DATA_MEDIA (rs->media), key_id); + fill_metadata (GRL_MEDIA (rs->media), key_id); iter = g_list_next (iter); } diff --git a/src/filesystem/grl-filesystem.c b/src/filesystem/grl-filesystem.c index 5a72e26..f073666 100644 --- a/src/filesystem/grl-filesystem.c +++ b/src/filesystem/grl-filesystem.c @@ -236,7 +236,7 @@ file_is_valid_content (const gchar *path, gboolean fast) static void set_container_childcount (const gchar *path, - GrlDataMedia *media, + GrlMedia *media, gboolean fast) { GDir *dir; @@ -281,12 +281,12 @@ set_container_childcount (const gchar *path, grl_data_box_set_childcount (GRL_DATA_BOX (media), count); } -static GrlDataMedia * -create_content (GrlDataMedia *content, +static GrlMedia * +create_content (GrlMedia *content, const gchar *path, gboolean only_fast) { - GrlDataMedia *media = NULL; + GrlMedia *media = NULL; gchar *str; const gchar *mime; GError *error = NULL; @@ -306,7 +306,7 @@ create_content (GrlDataMedia *content, if (error) { g_warning ("Failed to get info for file '%s': %s", path, error->message); if (!media) { - media = grl_data_media_new (); + media = grl_media_new (); } /* Title */ @@ -314,14 +314,14 @@ create_content (GrlDataMedia *content, if (!str) { str = (gchar *) path; } - grl_data_media_set_title (media, str); + grl_media_set_title (media, str); g_error_free (error); } else { mime = g_file_info_get_content_type (info); if (!media) { if (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY) { - media = GRL_DATA_MEDIA (grl_data_box_new ()); + media = GRL_MEDIA (grl_data_box_new ()); } else { if (mime_is_video (mime)) { media = grl_data_video_new (); @@ -330,36 +330,36 @@ create_content (GrlDataMedia *content, } else if (mime_is_image (mime)) { media = grl_data_image_new (); } else { - media = grl_data_media_new (); + media = grl_media_new (); } } } if (!GRL_IS_DATA_BOX (media)) { - grl_data_media_set_mime (GRL_DATA (media), mime); + grl_media_set_mime (GRL_DATA (media), mime); } /* Title */ str = (gchar *) g_file_info_get_display_name (info); - grl_data_media_set_title (media, str); + grl_media_set_title (media, str); /* Date */ GTimeVal time; gchar *time_str; g_file_info_get_modification_time (info, &time); time_str = g_time_val_to_iso8601 (&time); - grl_data_media_set_date (GRL_DATA (media), time_str); + grl_media_set_date (GRL_DATA (media), time_str); g_free (time_str); g_object_unref (info); } /* ID */ - grl_data_media_set_id (media, path); + grl_media_set_id (media, path); /* URL */ str = g_strconcat ("file://", path, NULL); - grl_data_media_set_url (media, str); + grl_media_set_url (media, str); g_free (str); /* Childcount */ @@ -385,7 +385,7 @@ browse_emit_idle (gpointer user_data) count = 0; do { gchar *entry_path; - GrlDataMedia *content; + GrlMedia *content; entry_path = (gchar *) idle_data->current->data; content = create_content (NULL, @@ -522,7 +522,7 @@ grl_filesystem_source_browse (GrlMediaSource *source, g_debug ("grl_filesystem_source_browse"); - id = grl_data_media_get_id (bs->container); + id = grl_media_get_id (bs->container); path = id ? id : G_DIR_SEPARATOR_S; produce_from_path (bs, path); } @@ -536,7 +536,7 @@ grl_filesystem_source_metadata (GrlMediaSource *source, g_debug ("grl_filesystem_source_metadata"); - id = grl_data_media_get_id (ms->media); + id = grl_media_get_id (ms->media); path = id ? id : G_DIR_SEPARATOR_S; if (g_file_test (path, G_FILE_TEST_EXISTS)) { diff --git a/src/flickr/grl-flickr.c b/src/flickr/grl-flickr.c index 9e59f58..f6be4a9 100644 --- a/src/flickr/grl-flickr.c +++ b/src/flickr/grl-flickr.c @@ -165,7 +165,7 @@ G_DEFINE_TYPE (GrlFlickrSource, grl_flickr_source, GRL_TYPE_MEDIA_SOURCE); /* ======================= Utilities ==================== */ static void -update_media (GrlDataMedia *media, GHashTable *photo) +update_media (GrlMedia *media, GHashTable *photo) { gchar *author; gchar *date; @@ -199,32 +199,32 @@ update_media (GrlDataMedia *media, GHashTable *photo) } if (author) { - grl_data_media_set_author (media, author); + grl_media_set_author (media, author); } if (date) { - grl_data_media_set_date (media, date); + grl_media_set_date (media, date); } if (description) { - grl_data_media_set_description (media, description); + grl_media_set_description (media, description); } if (id) { - grl_data_media_set_id (media, id); + grl_media_set_id (media, id); } if (thumbnail) { - grl_data_media_set_thumbnail (media, thumbnail); + grl_media_set_thumbnail (media, thumbnail); g_free (thumbnail); } if (title) { - grl_data_media_set_title (media, title); + grl_media_set_title (media, title); } if (url) { - grl_data_media_set_url (media, url); + grl_media_set_url (media, url); g_free (url); } } @@ -244,7 +244,7 @@ getInfo_cb (GFlickr *f, GHashTable *photo, gpointer user_data) static void search_cb (GFlickr *f, GList *photolist, gpointer user_data) { - GrlDataMedia *media; + GrlMedia *media; SearchData *sd = (SearchData *) user_data; gchar *media_type; @@ -316,7 +316,7 @@ grl_flickr_source_metadata (GrlMediaSource *source, { const gchar *id; - if (!ms->media || (id = grl_data_media_get_id (ms->media)) == NULL) { + if (!ms->media || (id = grl_media_get_id (ms->media)) == NULL) { ms->callback (ms->source, ms->media, ms->user_data, NULL); return; } diff --git a/src/jamendo/grl-jamendo.c b/src/jamendo/grl-jamendo.c index 5bfdfee..1e7e7ef 100644 --- a/src/jamendo/grl-jamendo.c +++ b/src/jamendo/grl-jamendo.c @@ -411,7 +411,7 @@ xml_parse_entry (xmlDocPtr doc, xmlNodePtr entry) } static void -update_media_from_entry (GrlDataMedia *media, const Entry *entry) +update_media_from_entry (GrlMedia *media, const Entry *entry) { gchar *id; @@ -422,7 +422,7 @@ update_media_from_entry (GrlDataMedia *media, const Entry *entry) } /* Common fields */ - grl_data_media_set_id (media, id); + grl_media_set_id (media, id); g_free (id); if (entry->artist_name) { @@ -440,7 +440,7 @@ update_media_from_entry (GrlDataMedia *media, const Entry *entry) /* Fields for artist */ if (entry->category == JAMENDO_ARTIST_CAT) { if (entry->artist_name) { - grl_data_media_set_title (media, entry->artist_name); + grl_media_set_title (media, entry->artist_name); } if (entry->artist_genre) { @@ -450,17 +450,17 @@ update_media_from_entry (GrlDataMedia *media, const Entry *entry) } if (entry->artist_url) { - grl_data_media_set_site (media, entry->artist_url); + grl_media_set_site (media, entry->artist_url); } if (entry->artist_image) { - grl_data_media_set_thumbnail (media, entry->artist_image); + grl_media_set_thumbnail (media, entry->artist_image); } /* Fields for album */ } else if (entry->category == JAMENDO_ALBUM_CAT) { if (entry->album_name) { - grl_data_media_set_title (media, entry->album_name); + grl_media_set_title (media, entry->album_name); } if (entry->album_genre) { @@ -470,21 +470,21 @@ update_media_from_entry (GrlDataMedia *media, const Entry *entry) } if (entry->album_url) { - grl_data_media_set_site (media, entry->album_url); + grl_media_set_site (media, entry->album_url); } if (entry->album_image) { - grl_data_media_set_thumbnail (media, entry->album_image); + grl_media_set_thumbnail (media, entry->album_image); } if (entry->album_duration) { - grl_data_media_set_duration (media, atoi (entry->album_duration)); + grl_media_set_duration (media, atoi (entry->album_duration)); } /* Fields for track */ } else if (entry->category == JAMENDO_TRACK_CAT) { if (entry->track_name) { - grl_data_media_set_title (media, entry->track_name); + grl_media_set_title (media, entry->track_name); } if (entry->album_genre) { @@ -493,19 +493,19 @@ update_media_from_entry (GrlDataMedia *media, const Entry *entry) } if (entry->track_url) { - grl_data_media_set_site (media, entry->track_url); + grl_media_set_site (media, entry->track_url); } if (entry->album_image) { - grl_data_media_set_thumbnail (media, entry->album_image); + grl_media_set_thumbnail (media, entry->album_image); } if (entry->track_stream) { - grl_data_media_set_url (media, entry->track_stream); + grl_media_set_url (media, entry->track_stream); } if (entry->track_duration) { - grl_data_media_set_duration (media, atoi (entry->track_duration)); + grl_media_set_duration (media, atoi (entry->track_duration)); } } } @@ -515,7 +515,7 @@ xml_parse_entries_idle (gpointer user_data) { XmlParseEntries *xpe = (XmlParseEntries *) user_data; gboolean parse_more; - GrlDataMedia *media; + GrlMedia *media; Entry *entry; g_debug ("xml_parse_entries_idle"); @@ -644,7 +644,7 @@ read_done_cb (GObject *source_object, error = g_error_new (GRL_ERROR, GRL_ERROR_METADATA_FAILED, "Unable to get information: '%s'", - grl_data_media_get_id (xpe->spec.ms->media)); + grl_media_get_id (xpe->spec.ms->media)); } goto invoke_cb; } @@ -705,14 +705,14 @@ read_url_async (const gchar *url, gpointer user_data) } static void -update_media_from_root (GrlDataMedia *media) +update_media_from_root (GrlMedia *media) { - grl_data_media_set_title (media, JAMENDO_ROOT_NAME); + grl_media_set_title (media, JAMENDO_ROOT_NAME); grl_data_box_set_childcount (GRL_DATA_BOX (media), 2); } static void -update_media_from_artists (GrlDataMedia *media) +update_media_from_artists (GrlMedia *media) { Entry *entry; @@ -724,7 +724,7 @@ update_media_from_artists (GrlDataMedia *media) } static void -update_media_from_albums (GrlDataMedia *media) +update_media_from_albums (GrlMedia *media) { Entry *entry; @@ -738,7 +738,7 @@ update_media_from_albums (GrlDataMedia *media) static void send_toplevel_categories (GrlMediaSourceBrowseSpec *bs) { - GrlDataMedia *media; + GrlMedia *media; media = grl_data_box_new (); update_media_from_artists (media); @@ -841,7 +841,7 @@ grl_jamendo_source_metadata (GrlMediaSource *source, } update_media_from_root (ms->media); } else { - id = grl_data_media_get_id (ms->media); + id = grl_media_get_id (ms->media); id_split = g_strsplit (id, JAMENDO_ID_SEP, 0); if (g_strv_length (id_split) == 0) { @@ -944,7 +944,7 @@ grl_jamendo_source_browse (GrlMediaSource *source, g_debug ("grl_jamendo_source_browse"); - container_id = grl_data_media_get_id (bs->container); + container_id = grl_media_get_id (bs->container); if (!container_id) { /* Root category: return top-level predefined categories */ diff --git a/src/podcasts/grl-podcasts.c b/src/podcasts/grl-podcasts.c index 24fe940..4ec585e 100644 --- a/src/podcasts/grl-podcasts.c +++ b/src/podcasts/grl-podcasts.c @@ -210,7 +210,7 @@ typedef struct { guint parse_count; guint parse_index; guint parse_valid_index; - GrlDataMedia *last_media; + GrlMedia *last_media; } OperationSpecParse; static GrlPodcastsSource *grl_podcasts_source_new (void); @@ -503,8 +503,8 @@ get_site_from_url (const gchar *url) return g_strndup (url, p - url); } -static GrlDataMedia * -build_media (GrlDataMedia *content, +static GrlMedia * +build_media (GrlMedia *content, gboolean is_podcast, const gchar *id, const gchar *title, @@ -515,7 +515,7 @@ build_media (GrlDataMedia *content, guint duration, guint childcount) { - GrlDataMedia *media = NULL; + GrlMedia *media = NULL; gchar *site; if (content) { @@ -524,12 +524,12 @@ build_media (GrlDataMedia *content, if (is_podcast) { if (!media) { - media = GRL_DATA_MEDIA (grl_data_box_new ()); + media = GRL_MEDIA (grl_data_box_new ()); } - grl_data_media_set_id (media, id); + grl_media_set_id (media, id); if (desc) - grl_data_media_set_description (media, desc); + grl_media_set_description (media, desc); grl_data_box_set_childcount (GRL_DATA_BOX (media), childcount); } else { if (!media) { @@ -538,38 +538,38 @@ build_media (GrlDataMedia *content, } else if (mime_is_video (mime)) { media = grl_data_video_new (); } else { - media = grl_data_media_new (); + media = grl_media_new (); } } - grl_data_media_set_id (media, url); + grl_media_set_id (media, url); if (date) - grl_data_media_set_date (media, date); + grl_media_set_date (media, date); if (desc) - grl_data_media_set_description (media, desc); + grl_media_set_description (media, desc); if (mime) - grl_data_media_set_mime (media, mime); + grl_media_set_mime (media, mime); if (duration > 0) { - grl_data_media_set_duration (media, duration); + grl_media_set_duration (media, duration); } } - grl_data_media_set_title (media, title); - grl_data_media_set_url (media, url); + grl_media_set_title (media, title); + grl_media_set_url (media, url); site = get_site_from_url (url); if (site) { - grl_data_media_set_site (media, site); + grl_media_set_site (media, site); g_free (site); } return media; } -static GrlDataMedia * +static GrlMedia * build_media_from_entry (Entry *entry) { - GrlDataMedia *media; + GrlMedia *media; gint duration; duration = duration_to_seconds (entry->duration); @@ -580,12 +580,12 @@ build_media_from_entry (Entry *entry) return media; } -static GrlDataMedia * -build_media_from_stmt (GrlDataMedia *content, +static GrlMedia * +build_media_from_stmt (GrlMedia *content, sqlite3_stmt *sql_stmt, gboolean is_podcast) { - GrlDataMedia *media; + GrlMedia *media; gchar *id; gchar *title; gchar *url; @@ -625,7 +625,7 @@ produce_podcast_contents_from_db (OperationSpec *os) sqlite3_stmt *sql_stmt = NULL; GList *iter, *medias = NULL; guint count = 0; - GrlDataMedia *media; + GrlMedia *media; gint r; GError *error = NULL; @@ -674,7 +674,7 @@ produce_podcast_contents_from_db (OperationSpec *os) medias = g_list_reverse (medias); iter = medias; while (iter) { - media = GRL_DATA_MEDIA (iter->data); + media = GRL_MEDIA (iter->data); os->callback (os->source, os->operation_id, media, @@ -761,7 +761,7 @@ remove_stream (sqlite3 *db, const gchar *url, GError **error) } static void -store_podcast (sqlite3 *db, GrlDataMedia *podcast, GError **error) +store_podcast (sqlite3 *db, GrlMedia *podcast, GError **error) { gint r; sqlite3_stmt *sql_stmt = NULL; @@ -772,9 +772,9 @@ store_podcast (sqlite3 *db, GrlDataMedia *podcast, GError **error) g_debug ("store_podcast"); - title = grl_data_media_get_title (podcast); - url = grl_data_media_get_url (podcast); - desc = grl_data_media_get_description (podcast); + title = grl_media_get_title (podcast); + url = grl_media_get_url (podcast); + desc = grl_media_get_description (podcast); g_debug ("%s", GRL_SQL_STORE_PODCAST); r = sqlite3_prepare_v2 (db, @@ -811,7 +811,7 @@ store_podcast (sqlite3 *db, GrlDataMedia *podcast, GError **error) sqlite3_finalize (sql_stmt); id = g_strdup_printf ("%llu", sqlite3_last_insert_rowid (db)); - grl_data_media_set_id (podcast, id); + grl_media_set_id (podcast, id); g_free (id); } @@ -915,7 +915,7 @@ parse_entry_idle (gpointer user_data) OperationSpecParse *osp = (OperationSpecParse *) user_data; xmlNodeSetPtr nodes; guint remaining; - GrlDataMedia *media; + GrlMedia *media; nodes = osp->xpathObj->nodesetval; @@ -1174,7 +1174,7 @@ produce_podcasts (OperationSpec *os) gint r; sqlite3_stmt *sql_stmt = NULL; sqlite3 *db; - GrlDataMedia *media; + GrlMedia *media; GError *error = NULL; GList *medias = NULL; guint count = 0; @@ -1234,7 +1234,7 @@ produce_podcasts (OperationSpec *os) medias = g_list_reverse (medias); iter = medias; while (iter) { - media = GRL_DATA_MEDIA (iter->data); + media = GRL_MEDIA (iter->data); os->callback (os->source, os->operation_id, media, @@ -1267,7 +1267,7 @@ stream_metadata (GrlMediaSourceMetadataSpec *ms) db = GRL_PODCASTS_SOURCE (ms->source)->priv->db; - id = grl_data_media_get_id (ms->media); + id = grl_media_get_id (ms->media); sql = g_strdup_printf (GRL_SQL_GET_PODCAST_STREAM, id); g_debug ("%s", sql); r = sqlite3_prepare_v2 (db, sql, strlen (sql), &sql_stmt, NULL); @@ -1312,10 +1312,10 @@ podcast_metadata (GrlMediaSourceMetadataSpec *ms) db = GRL_PODCASTS_SOURCE (ms->source)->priv->db; - id = grl_data_media_get_id (ms->media); + id = grl_media_get_id (ms->media); if (!id) { /* Root category: special case */ - grl_data_media_set_title (ms->media, ""); + grl_media_set_title (ms->media, ""); ms->callback (ms->source, ms->media, ms->user_data, NULL); return; } @@ -1383,7 +1383,7 @@ grl_podcasts_source_browse (GrlMediaSource *source, os = g_new0 (OperationSpec, 1); os->source = bs->source; os->operation_id = bs->browse_id; - os->media_id = grl_data_media_get_id (bs->container); + os->media_id = grl_media_get_id (bs->container); os->count = bs->count; os->skip = bs->skip; os->callback = bs->callback; @@ -1488,7 +1488,7 @@ grl_podcasts_source_metadata (GrlMediaSource *source, g_error_free (error); } - media_id = grl_data_media_get_id (ms->media); + media_id = grl_media_get_id (ms->media); if (!media_id || media_id_is_podcast (media_id)) { podcast_metadata (ms); } else { diff --git a/src/shoutcast/grl-shoutcast.c b/src/shoutcast/grl-shoutcast.c index f6cd061..2b643c7 100644 --- a/src/shoutcast/grl-shoutcast.c +++ b/src/shoutcast/grl-shoutcast.c @@ -65,7 +65,7 @@ #define SITE "http://www.igalia.com" typedef struct { - GrlDataMedia *media; + GrlMedia *media; GrlMediaSource *source; GrlMediaSourceMetadataCb metadata_cb; GrlMediaSourceResultCb result_cb; @@ -187,10 +187,10 @@ xml_count_nodes (xmlNodePtr node) return count; } -static GrlDataMedia * +static GrlMedia * build_media_from_genre (OperationData *op_data) { - GrlDataMedia *media; + GrlMedia *media; gchar *genre_name; if (op_data->media) { @@ -202,8 +202,8 @@ build_media_from_genre (OperationData *op_data) genre_name = (gchar *) xmlGetProp (op_data->xml_entries, (const xmlChar *) "name"); - grl_data_media_set_id (media, genre_name); - grl_data_media_set_title (media, genre_name); + grl_media_set_id (media, genre_name); + grl_media_set_title (media, genre_name); grl_data_set_string (GRL_DATA (media), GRL_METADATA_KEY_GENRE, genre_name); @@ -212,10 +212,10 @@ build_media_from_genre (OperationData *op_data) return media; } -static GrlDataMedia * +static GrlMedia * build_media_from_station (OperationData *op_data) { - GrlDataMedia *media; + GrlMedia *media; gchar *media_id; gchar *media_url; gchar *station_bitrate; @@ -243,11 +243,11 @@ build_media_from_station (OperationData *op_data) media = grl_data_audio_new (); } - grl_data_media_set_id (media, media_id); - grl_data_media_set_title (media, station_name); - grl_data_media_set_mime (media, station_mime); + grl_media_set_id (media, media_id); + grl_media_set_title (media, station_name); + grl_media_set_mime (media, station_mime); grl_data_audio_set_genre (GRL_DATA_AUDIO (media), station_genre); - grl_data_media_set_url (media, media_url); + grl_media_set_url (media, media_url); grl_data_audio_set_bitrate (GRL_DATA_AUDIO (media), atoi (station_bitrate)); @@ -263,7 +263,7 @@ build_media_from_station (OperationData *op_data) } static gboolean -send_media (OperationData *op_data, GrlDataMedia *media) +send_media (OperationData *op_data, GrlMedia *media) { if (!op_data->cancelled) { op_data->result_cb (op_data->source, @@ -366,7 +366,7 @@ xml_parse_result (const gchar *str, OperationData *op_data) error = g_error_new (GRL_ERROR, op_data->error_code, "Can not find media '%s'", - grl_data_media_get_id (op_data->media)); + grl_media_get_id (op_data->media)); } if (xpath_res) { xmlXPathFreeObject (xpath_res); @@ -524,11 +524,11 @@ grl_shoutcast_source_metadata (GrlMediaSource *source, repeat the Pop browsing and get the result with station id 1321. If it doesn't exist (think in results obtained from a search), we do nothing */ - media_id = grl_data_media_get_id (ms->media); + media_id = grl_media_get_id (ms->media); /* Check if we need to report about root category */ if (!media_id) { - grl_data_media_set_title (ms->media, "SHOUTcast"); + grl_media_set_title (ms->media, "SHOUTcast"); } else { data = g_new0 (OperationData, 1); data->source = source; @@ -589,7 +589,7 @@ grl_shoutcast_source_browse (GrlMediaSource *source, data->user_data = bs->user_data; data->error_code = GRL_ERROR_BROWSE_FAILED; - container_id = grl_data_media_get_id (bs->container); + container_id = grl_media_get_id (bs->container); /* If it's root category send list of genres; else send list of radios */ if (!container_id) { diff --git a/src/upnp/grl-upnp.c b/src/upnp/grl-upnp.c index 103e6df..a2c187a 100644 --- a/src/upnp/grl-upnp.c +++ b/src/upnp/grl-upnp.c @@ -760,13 +760,13 @@ get_value_for_key (GrlKeyID key_id, } static void -set_metadata_value (GrlDataMedia *media, +set_metadata_value (GrlMedia *media, GrlKeyID key_id, const gchar *value) { switch (key_id) { case GRL_METADATA_KEY_TITLE: - grl_data_media_set_title (media, value); + grl_media_set_title (media, value); break; case GRL_METADATA_KEY_ARTIST: grl_data_audio_set_artist (media, value); @@ -778,19 +778,19 @@ set_metadata_value (GrlDataMedia *media, grl_data_audio_set_genre (media, value); break; case GRL_METADATA_KEY_URL: - grl_data_media_set_url (media, value); + grl_media_set_url (media, value); break; case GRL_METADATA_KEY_MIME: - grl_data_media_set_mime (media, value); + grl_media_set_mime (media, value); break; case GRL_METADATA_KEY_DATE: - grl_data_media_set_date (media, value); + grl_media_set_date (media, value); break; case GRL_METADATA_KEY_DURATION: { gint duration = didl_h_mm_ss_to_int (value); if (duration >= 0) { - grl_data_media_set_duration (media, duration); + grl_media_set_duration (media, duration); } } break; @@ -804,8 +804,8 @@ set_metadata_value (GrlDataMedia *media, } } -static GrlDataMedia * -build_media_from_didl (GrlDataMedia *content, +static GrlMedia * +build_media_from_didl (GrlMedia *content, #ifdef GUPNPAV_OLD_VERSION xmlNode *didl_node, #else @@ -821,7 +821,7 @@ build_media_from_didl (GrlDataMedia *content, const gchar *class; #endif - GrlDataMedia *media = NULL; + GrlMedia *media = NULL; GList *didl_props; GList *iter; @@ -849,16 +849,16 @@ build_media_from_didl (GrlDataMedia *content, } else if (g_str_has_prefix (class, "object.item.imageItem")) { media = grl_data_image_new (); } else { - media = grl_data_media_new (); + media = grl_media_new (); } } else { - media = grl_data_media_new (); + media = grl_media_new (); } } } id = gupnp_didl_lite_object_get_id (didl_node); - grl_data_media_set_id (media, id); + grl_media_set_id (media, id); didl_props = didl_get_supported_resources (didl_node); @@ -890,7 +890,7 @@ gupnp_browse_result_cb (GUPnPDIDLLiteParser *parser, #endif gpointer user_data) { - GrlDataMedia *media; + GrlMedia *media; struct OperationSpec *os = (struct OperationSpec *) user_data; if (gupnp_didl_lite_object_get_id (didl)) { media = build_media_from_didl (NULL, didl, os->keys); @@ -1103,7 +1103,7 @@ grl_upnp_source_browse (GrlMediaSource *source, GrlMediaSourceBrowseSpec *bs) os->callback = bs->callback; os->user_data = bs->user_data; - container_id = (gchar *) grl_data_media_get_id (bs->container); + container_id = (gchar *) grl_media_get_id (bs->container); if (!container_id) { container_id = "0"; } @@ -1201,7 +1201,7 @@ grl_upnp_source_metadata (GrlMediaSource *source, g_debug ("filter: '%s'", upnp_filter); - id = (gchar *) grl_data_media_get_id (ms->media); + id = (gchar *) grl_media_get_id (ms->media); if (!id) { id = "0"; } diff --git a/src/youtube/grl-youtube.c b/src/youtube/grl-youtube.c index 4b79f88..de2d169 100644 --- a/src/youtube/grl-youtube.c +++ b/src/youtube/grl-youtube.c @@ -439,12 +439,12 @@ read_url (const gchar *url) } } -static GrlDataMedia * -build_media_from_entry (GrlDataMedia *content, +static GrlMedia * +build_media_from_entry (GrlMedia *content, const Entry *entry, const GList *keys) { - GrlDataMedia *media; + GrlMedia *media; gchar *url; GList *iter; @@ -459,40 +459,40 @@ build_media_from_entry (GrlDataMedia *content, GrlKeyID key_id = POINTER_TO_GRLKEYID (iter->data); switch (key_id) { case GRL_METADATA_KEY_ID: - grl_data_media_set_id (media, entry->id); + grl_media_set_id (media, entry->id); break; case GRL_METADATA_KEY_TITLE: - grl_data_media_set_title (media, entry->title); + grl_media_set_title (media, entry->title); break; case GRL_METADATA_KEY_AUTHOR: - grl_data_media_set_author (media, entry->author); + grl_media_set_author (media, entry->author); break; case GRL_METADATA_KEY_DESCRIPTION: - grl_data_media_set_description (media, entry->description); + grl_media_set_description (media, entry->description); break; case GRL_METADATA_KEY_THUMBNAIL: - grl_data_media_set_thumbnail (media, entry->thumbnail); + grl_media_set_thumbnail (media, entry->thumbnail); break; case GRL_METADATA_KEY_DATE: - grl_data_media_set_date (media, entry->published); + grl_media_set_date (media, entry->published); break; case GRL_METADATA_KEY_DURATION: - grl_data_media_set_duration (media, atoi (entry->duration)); + grl_media_set_duration (media, atoi (entry->duration)); break; case GRL_METADATA_KEY_MIME: - grl_data_media_set_mime (media, YOUTUBE_VIDEO_MIME); + grl_media_set_mime (media, YOUTUBE_VIDEO_MIME); break; case GRL_METADATA_KEY_SITE: - grl_data_media_set_site (media, YOUTUBE_SITE_URL); + grl_media_set_site (media, YOUTUBE_SITE_URL); break; case GRL_METADATA_KEY_RATING: - grl_data_media_set_rating (media, entry->rating, "5.00"); + grl_media_set_rating (media, entry->rating, "5.00"); break; case GRL_METADATA_KEY_URL: if (!entry->restricted) { url = get_video_url (entry->id); if (url) { - grl_data_media_set_url (media, url); + grl_media_set_url (media, url); } g_free (url); } @@ -626,7 +626,7 @@ parse_entries_idle (gpointer user_data) Entry *entry = g_new0 (Entry, 1); parse_entry (pei->doc, pei->node, entry); if (0) print_entry (entry); - GrlDataMedia *media = + GrlMedia *media = build_media_from_entry (NULL, entry, pei->os->keys); free_entry (entry); @@ -778,7 +778,7 @@ parse_feed (OperationSpec *os, const gchar *str, GError **error) return; } -static GrlDataMedia * +static GrlMedia * parse_metadata_entry (GrlMediaSourceMetadataSpec *os, xmlDocPtr doc, xmlNodePtr node, @@ -786,7 +786,7 @@ parse_metadata_entry (GrlMediaSourceMetadataSpec *os, { xmlNs *ns; guint total_results = 0; - GrlDataMedia *media = NULL; + GrlMedia *media = NULL; /* First checkout search information looking for totalResults */ while (node && !total_results) { @@ -1051,13 +1051,13 @@ set_category_childcount (GrlDataBox *content, } } -static GrlDataMedia * -produce_container_from_directory (GrlDataMedia *media, +static GrlMedia * +produce_container_from_directory (GrlMedia *media, CategoryInfo *dir, guint index, gboolean set_childcount) { - GrlDataMedia *content; + GrlMedia *content; if (!media) { /* Create mode */ @@ -1068,13 +1068,13 @@ produce_container_from_directory (GrlDataMedia *media, } if (!dir) { - grl_data_media_set_id (content, NULL); - grl_data_media_set_title (content, YOUTUBE_ROOT_NAME); + grl_media_set_id (content, NULL); + grl_media_set_title (content, YOUTUBE_ROOT_NAME); } else { - grl_data_media_set_id (content, dir[index].id); - grl_data_media_set_title (content, dir[index].name); + grl_media_set_id (content, dir[index].id); + grl_media_set_title (content, dir[index].name); } - grl_data_media_set_site (content, YOUTUBE_SITE_URL); + grl_media_set_site (content, YOUTUBE_SITE_URL); if (set_childcount) { set_category_childcount (GRL_DATA_BOX (content), dir, index); } @@ -1082,13 +1082,13 @@ produce_container_from_directory (GrlDataMedia *media, return content; } -static GrlDataMedia * -produce_container_from_directory_by_id (GrlDataMedia *media, +static GrlMedia * +produce_container_from_directory_by_id (GrlMedia *media, CategoryInfo *dir, const gchar *id, gboolean set_childcount) { - GrlDataMedia *content; + GrlMedia *content; guint index = 0; while (dir[index].id && strcmp (dir[index].id, id)) index++; @@ -1125,7 +1125,7 @@ classify_media_id (const gchar *media_id) static gboolean produce_from_directory_idle (gpointer user_data) { - GrlDataMedia *content; + GrlMedia *content; ProduceFromDirectoryIdle *pfdi = (ProduceFromDirectoryIdle *) user_data; if (!pfdi->os->cancelled) { @@ -1344,7 +1344,7 @@ grl_youtube_source_browse (GrlMediaSource *source, g_debug ("grl_youtube_source_browse"); - container_id = grl_data_media_get_id (bs->container); + container_id = grl_media_get_id (bs->container); os = g_new0 (OperationSpec, 1); os->source = bs->source; @@ -1412,14 +1412,14 @@ grl_youtube_source_metadata (GrlMediaSource *source, { gchar *url; GError *error = NULL; - GrlDataMedia *media = NULL; + GrlMedia *media = NULL; YoutubeMediaType media_type; gboolean set_childcount; const gchar *id; g_debug ("grl_youtube_source_metadata"); - id = grl_data_media_get_id (ms->media); + id = grl_media_get_id (ms->media); media_type = classify_media_id (id); /* Do not compute childcount for expensive categories diff --git a/test/main.c b/test/main.c index 5402fbb..61eb4df 100644 --- a/test/main.c +++ b/test/main.c @@ -76,28 +76,28 @@ print_metadata (gpointer key, GrlData *content) } } -static GrlDataMedia * +static GrlMedia * media_from_id (const gchar *id) { - GrlDataMedia *media; - media = grl_data_media_new (); - grl_data_media_set_id (media, id); + GrlMedia *media; + media = grl_media_new (); + grl_media_set_id (media, id); return media; } -static GrlDataMedia * +static GrlMedia * box_from_id (const gchar *id) { - GrlDataMedia *media; + GrlMedia *media; media = grl_data_box_new (); - grl_data_media_set_id (media, id); + grl_media_set_id (media, id); return media; } static void browse_cb (GrlMediaSource *source, guint browse_id, - GrlDataMedia *media, + GrlMedia *media, guint remaining, gpointer user_data, const GError *error) @@ -132,7 +132,7 @@ browse_cb (GrlMediaSource *source, static void metadata_cb (GrlMediaSource *source, - GrlDataMedia *media, + GrlMedia *media, gpointer user_data, const GError *error) { @@ -146,7 +146,7 @@ metadata_cb (GrlMediaSource *source, } g_debug (" Got metadata for object '%s'", - grl_data_media_get_id (GRL_DATA_MEDIA (media))); + grl_media_get_id (GRL_MEDIA (media))); g_debug ("\tContainer: %s", GRL_IS_DATA_BOX(media) ? "yes" : "no"); @@ -161,7 +161,7 @@ metadata_cb (GrlMediaSource *source, static void resolve_cb (GrlMetadataSource *source, - GrlDataMedia *media, + GrlMedia *media, gpointer user_data, const GError *error) { @@ -316,7 +316,7 @@ main (void) if (0) grl_media_source_metadata (shoutcast, media_from_id("American/556682"), keys, 0, metadata_cb, NULL); if (1) grl_media_source_browse (apple_trailers, NULL, keys, 0, 5, GRL_RESOLVE_IDLE_RELAY , browse_cb, NULL); if (0) { - GrlDataMedia *media = media_from_id ("test"); + GrlMedia *media = media_from_id ("test"); grl_data_set_string (GRL_DATA (media), GRL_METADATA_KEY_ARTIST, "roxette"); -- cgit v1.2.1 From f191ae4848e98e1131711ce692d4de0014bc371d Mon Sep 17 00:00:00 2001 From: "Juan A. Suarez Romero" Date: Thu, 4 Mar 2010 22:03:04 +0100 Subject: Rename GrlDataAudio to GrlMediaAudio --- src/filesystem/grl-filesystem.c | 2 +- src/jamendo/grl-jamendo.c | 6 +++--- src/podcasts/grl-podcasts.c | 2 +- src/shoutcast/grl-shoutcast.c | 8 ++++---- src/upnp/grl-upnp.c | 8 ++++---- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/filesystem/grl-filesystem.c b/src/filesystem/grl-filesystem.c index f073666..99c4726 100644 --- a/src/filesystem/grl-filesystem.c +++ b/src/filesystem/grl-filesystem.c @@ -326,7 +326,7 @@ create_content (GrlMedia *content, if (mime_is_video (mime)) { media = grl_data_video_new (); } else if (mime_is_audio (mime)) { - media = grl_data_audio_new (); + media = grl_media_audio_new (); } else if (mime_is_image (mime)) { media = grl_data_image_new (); } else { diff --git a/src/jamendo/grl-jamendo.c b/src/jamendo/grl-jamendo.c index 1e7e7ef..9ef456c 100644 --- a/src/jamendo/grl-jamendo.c +++ b/src/jamendo/grl-jamendo.c @@ -488,8 +488,8 @@ update_media_from_entry (GrlMedia *media, const Entry *entry) } if (entry->album_genre) { - grl_data_audio_set_genre (GRL_DATA_AUDIO (media), - entry->album_genre); + grl_media_audio_set_genre (GRL_MEDIA_AUDIO (media), + entry->album_genre); } if (entry->track_url) { @@ -525,7 +525,7 @@ xml_parse_entries_idle (gpointer user_data) if (parse_more) { entry = xml_parse_entry (xpe->doc, xpe->node); if (entry->category == JAMENDO_TRACK_CAT) { - media = grl_data_audio_new (); + media = grl_media_audio_new (); } else { media = grl_data_box_new (); } diff --git a/src/podcasts/grl-podcasts.c b/src/podcasts/grl-podcasts.c index 4ec585e..699ebd7 100644 --- a/src/podcasts/grl-podcasts.c +++ b/src/podcasts/grl-podcasts.c @@ -534,7 +534,7 @@ build_media (GrlMedia *content, } else { if (!media) { if (mime_is_audio (mime)) { - media = grl_data_audio_new (); + media = grl_media_audio_new (); } else if (mime_is_video (mime)) { media = grl_data_video_new (); } else { diff --git a/src/shoutcast/grl-shoutcast.c b/src/shoutcast/grl-shoutcast.c index 2b643c7..03ce729 100644 --- a/src/shoutcast/grl-shoutcast.c +++ b/src/shoutcast/grl-shoutcast.c @@ -240,16 +240,16 @@ build_media_from_station (OperationData *op_data) if (op_data->media) { media = op_data->media; } else { - media = grl_data_audio_new (); + media = grl_media_audio_new (); } grl_media_set_id (media, media_id); grl_media_set_title (media, station_name); grl_media_set_mime (media, station_mime); - grl_data_audio_set_genre (GRL_DATA_AUDIO (media), station_genre); + grl_media_audio_set_genre (GRL_MEDIA_AUDIO (media), station_genre); grl_media_set_url (media, media_url); - grl_data_audio_set_bitrate (GRL_DATA_AUDIO (media), - atoi (station_bitrate)); + grl_media_audio_set_bitrate (GRL_MEDIA_AUDIO (media), + atoi (station_bitrate)); g_free (station_name); g_free (station_mime); diff --git a/src/upnp/grl-upnp.c b/src/upnp/grl-upnp.c index a2c187a..92e1a35 100644 --- a/src/upnp/grl-upnp.c +++ b/src/upnp/grl-upnp.c @@ -769,13 +769,13 @@ set_metadata_value (GrlMedia *media, grl_media_set_title (media, value); break; case GRL_METADATA_KEY_ARTIST: - grl_data_audio_set_artist (media, value); + grl_media_audio_set_artist (media, value); break; case GRL_METADATA_KEY_ALBUM: - grl_data_audio_set_album (media, value); + grl_media_audio_set_album (media, value); break; case GRL_METADATA_KEY_GENRE: - grl_data_audio_set_genre (media, value); + grl_media_audio_set_genre (media, value); break; case GRL_METADATA_KEY_URL: grl_media_set_url (media, value); @@ -843,7 +843,7 @@ build_media_from_didl (GrlMedia *content, class = gupnp_didl_lite_object_get_upnp_class (didl_node); if (class) { if (g_str_has_prefix (class, "object.item.audioItem")) { - media = grl_data_audio_new (); + media = grl_media_audio_new (); } else if (g_str_has_prefix (class, "object.item.videoItem")) { media = grl_data_video_new (); } else if (g_str_has_prefix (class, "object.item.imageItem")) { -- cgit v1.2.1 From b93863cba6b12e25e1035b62c6eb625f487d9002 Mon Sep 17 00:00:00 2001 From: "Juan A. Suarez Romero" Date: Thu, 4 Mar 2010 22:17:25 +0100 Subject: Rename GrlDataBox to GrlMediaBox --- src/bookmarks/grl-bookmarks.c | 8 ++++---- src/filesystem/grl-filesystem.c | 8 ++++---- src/jamendo/grl-jamendo.c | 10 +++++----- src/podcasts/grl-podcasts.c | 6 +++--- src/shoutcast/grl-shoutcast.c | 2 +- src/upnp/grl-upnp.c | 6 +++--- src/youtube/grl-youtube.c | 8 ++++---- test/main.c | 6 +++--- 8 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/bookmarks/grl-bookmarks.c b/src/bookmarks/grl-bookmarks.c index e419099..1b207c7 100644 --- a/src/bookmarks/grl-bookmarks.c +++ b/src/bookmarks/grl-bookmarks.c @@ -342,7 +342,7 @@ build_media_from_stmt (GrlMedia *content, sqlite3_stmt *sql_stmt) if (!media) { if (type == BOOKMARK_TYPE_CATEGORY) { - media = GRL_MEDIA (grl_data_box_new ()); + media = GRL_MEDIA (grl_media_box_new ()); } else if (mime_is_audio (mime)) { media = GRL_MEDIA (grl_media_new ()); } else if (mime_is_video (mime)) { @@ -365,7 +365,7 @@ build_media_from_stmt (GrlMedia *content, sqlite3_stmt *sql_stmt) } if (type == BOOKMARK_TYPE_CATEGORY) { - grl_data_box_set_childcount (GRL_DATA_BOX (media), childcount); + grl_media_box_set_childcount (GRL_MEDIA_BOX (media), childcount); } return media; @@ -557,7 +557,7 @@ remove_bookmark (sqlite3 *db, const gchar *bookmark_id, GError **error) static void store_bookmark (sqlite3 *db, - GrlDataBox *parent, + GrlMediaBox *parent, GrlMedia *bookmark, GError **error) { @@ -606,7 +606,7 @@ store_bookmark (sqlite3 *db, g_debug ("URL: '%s'", url); - if (GRL_IS_DATA_BOX (bookmark)) { + if (GRL_IS_MEDIA_BOX (bookmark)) { type = BOOKMARK_TYPE_CATEGORY; } else { type = BOOKMARK_TYPE_STREAM; diff --git a/src/filesystem/grl-filesystem.c b/src/filesystem/grl-filesystem.c index 99c4726..0961bd7 100644 --- a/src/filesystem/grl-filesystem.c +++ b/src/filesystem/grl-filesystem.c @@ -278,7 +278,7 @@ set_container_childcount (const gchar *path, g_dir_close (dir); - grl_data_box_set_childcount (GRL_DATA_BOX (media), count); + grl_media_box_set_childcount (GRL_MEDIA_BOX (media), count); } static GrlMedia * @@ -321,7 +321,7 @@ create_content (GrlMedia *content, if (!media) { if (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY) { - media = GRL_MEDIA (grl_data_box_new ()); + media = GRL_MEDIA (grl_media_box_new ()); } else { if (mime_is_video (mime)) { media = grl_data_video_new (); @@ -335,7 +335,7 @@ create_content (GrlMedia *content, } } - if (!GRL_IS_DATA_BOX (media)) { + if (!GRL_IS_MEDIA_BOX (media)) { grl_media_set_mime (GRL_DATA (media), mime); } @@ -363,7 +363,7 @@ create_content (GrlMedia *content, g_free (str); /* Childcount */ - if (GRL_IS_DATA_BOX (media)) { + if (GRL_IS_MEDIA_BOX (media)) { set_container_childcount (path, media, only_fast); } diff --git a/src/jamendo/grl-jamendo.c b/src/jamendo/grl-jamendo.c index 9ef456c..afbed5c 100644 --- a/src/jamendo/grl-jamendo.c +++ b/src/jamendo/grl-jamendo.c @@ -527,7 +527,7 @@ xml_parse_entries_idle (gpointer user_data) if (entry->category == JAMENDO_TRACK_CAT) { media = grl_media_audio_new (); } else { - media = grl_data_box_new (); + media = grl_media_box_new (); } update_media_from_entry (media, entry); @@ -708,7 +708,7 @@ static void update_media_from_root (GrlMedia *media) { grl_media_set_title (media, JAMENDO_ROOT_NAME); - grl_data_box_set_childcount (GRL_DATA_BOX (media), 2); + grl_media_box_set_childcount (GRL_MEDIA_BOX (media), 2); } static void @@ -740,11 +740,11 @@ send_toplevel_categories (GrlMediaSourceBrowseSpec *bs) { GrlMedia *media; - media = grl_data_box_new (); + media = grl_media_box_new (); update_media_from_artists (media); bs->callback (bs->source, bs->browse_id, media, 1, bs->user_data, NULL); - media = grl_data_box_new (); + media = grl_media_box_new (); update_media_from_albums (media); bs->callback (bs->source, bs->browse_id, media, 0, bs->user_data, NULL); } @@ -837,7 +837,7 @@ grl_jamendo_source_metadata (GrlMediaSource *source, GRL_METADATA_KEY_ID)) { /* Get info from root */ if (!ms->media) { - ms->media = grl_data_box_new (); + ms->media = grl_media_box_new (); } update_media_from_root (ms->media); } else { diff --git a/src/podcasts/grl-podcasts.c b/src/podcasts/grl-podcasts.c index 699ebd7..572068b 100644 --- a/src/podcasts/grl-podcasts.c +++ b/src/podcasts/grl-podcasts.c @@ -524,13 +524,13 @@ build_media (GrlMedia *content, if (is_podcast) { if (!media) { - media = GRL_MEDIA (grl_data_box_new ()); + media = GRL_MEDIA (grl_media_box_new ()); } grl_media_set_id (media, id); if (desc) grl_media_set_description (media, desc); - grl_data_box_set_childcount (GRL_DATA_BOX (media), childcount); + grl_media_box_set_childcount (GRL_MEDIA_BOX (media), childcount); } else { if (!media) { if (mime_is_audio (mime)) { @@ -1501,7 +1501,7 @@ grl_podcasts_source_store (GrlMediaSource *source, GrlMediaSourceStoreSpec *ss) { g_debug ("grl_podcasts_source_store"); GError *error = NULL; - if (GRL_IS_DATA_BOX (ss->media)) { + if (GRL_IS_MEDIA_BOX (ss->media)) { error = g_error_new (GRL_ERROR, GRL_ERROR_STORE_FAILED, "Cannot create containers. Only feeds are accepted."); diff --git a/src/shoutcast/grl-shoutcast.c b/src/shoutcast/grl-shoutcast.c index 03ce729..bf21be7 100644 --- a/src/shoutcast/grl-shoutcast.c +++ b/src/shoutcast/grl-shoutcast.c @@ -196,7 +196,7 @@ build_media_from_genre (OperationData *op_data) if (op_data->media) { media = op_data->media; } else { - media = grl_data_box_new (); + media = grl_media_box_new (); } genre_name = (gchar *) xmlGetProp (op_data->xml_entries, diff --git a/src/upnp/grl-upnp.c b/src/upnp/grl-upnp.c index 92e1a35..30536e0 100644 --- a/src/upnp/grl-upnp.c +++ b/src/upnp/grl-upnp.c @@ -795,8 +795,8 @@ set_metadata_value (GrlMedia *media, } break; case GRL_METADATA_KEY_CHILDCOUNT: - if (value && GRL_IS_DATA_BOX (media)) { - grl_data_box_set_childcount (GRL_DATA_BOX (media), atoi (value)); + if (value && GRL_IS_MEDIA_BOX (media)) { + grl_media_box_set_childcount (GRL_MEDIA_BOX (media), atoi (value)); } break; default: @@ -837,7 +837,7 @@ build_media_from_didl (GrlMedia *content, if (GUPNP_IS_DIDL_LITE_CONTAINER (didl_node)) { #endif - media = grl_data_box_new (); + media = grl_media_box_new (); } else { if (!media) { class = gupnp_didl_lite_object_get_upnp_class (didl_node); diff --git a/src/youtube/grl-youtube.c b/src/youtube/grl-youtube.c index de2d169..9c8c5fa 100644 --- a/src/youtube/grl-youtube.c +++ b/src/youtube/grl-youtube.c @@ -1012,7 +1012,7 @@ get_container_url (const gchar *container_id) } static void -set_category_childcount (GrlDataBox *content, +set_category_childcount (GrlMediaBox *content, CategoryInfo *dir, guint index) { @@ -1047,7 +1047,7 @@ set_category_childcount (GrlDataBox *content, } if (set_childcount) { - grl_data_box_set_childcount (content, childcount); + grl_media_box_set_childcount (content, childcount); } } @@ -1061,7 +1061,7 @@ produce_container_from_directory (GrlMedia *media, if (!media) { /* Create mode */ - content = grl_data_box_new (); + content = grl_media_box_new (); } else { /* Update mode */ content = media; @@ -1076,7 +1076,7 @@ produce_container_from_directory (GrlMedia *media, } grl_media_set_site (content, YOUTUBE_SITE_URL); if (set_childcount) { - set_category_childcount (GRL_DATA_BOX (content), dir, index); + set_category_childcount (GRL_MEDIA_BOX (content), dir, index); } return content; diff --git a/test/main.c b/test/main.c index 61eb4df..05abde2 100644 --- a/test/main.c +++ b/test/main.c @@ -89,7 +89,7 @@ static GrlMedia * box_from_id (const gchar *id) { GrlMedia *media; - media = grl_data_box_new (); + media = grl_media_box_new (); grl_media_set_id (media, id); return media; } @@ -118,7 +118,7 @@ browse_cb (GrlMediaSource *source, } g_debug ("\tContainer: %s", - GRL_IS_DATA_BOX(media) ? "yes" : "no"); + GRL_IS_MEDIA_BOX(media) ? "yes" : "no"); keys = grl_data_get_keys (GRL_DATA (media)); g_list_foreach (keys, (GFunc) print_metadata, GRL_DATA (media)); @@ -149,7 +149,7 @@ metadata_cb (GrlMediaSource *source, grl_media_get_id (GRL_MEDIA (media))); g_debug ("\tContainer: %s", - GRL_IS_DATA_BOX(media) ? "yes" : "no"); + GRL_IS_MEDIA_BOX(media) ? "yes" : "no"); keys = grl_data_get_keys (GRL_DATA (media)); g_list_foreach (keys, (GFunc) print_metadata, GRL_DATA (media)); -- cgit v1.2.1 From 8c0aad85ab36a7bedd51964f5096177676d639e1 Mon Sep 17 00:00:00 2001 From: "Juan A. Suarez Romero" Date: Thu, 4 Mar 2010 22:23:20 +0100 Subject: Rename GrlDataImage to GrlMediaImage --- src/filesystem/grl-filesystem.c | 2 +- src/flickr/grl-flickr.c | 2 +- src/upnp/grl-upnp.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/filesystem/grl-filesystem.c b/src/filesystem/grl-filesystem.c index 0961bd7..4e4c89a 100644 --- a/src/filesystem/grl-filesystem.c +++ b/src/filesystem/grl-filesystem.c @@ -328,7 +328,7 @@ create_content (GrlMedia *content, } else if (mime_is_audio (mime)) { media = grl_media_audio_new (); } else if (mime_is_image (mime)) { - media = grl_data_image_new (); + media = grl_media_image_new (); } else { media = grl_media_new (); } diff --git a/src/flickr/grl-flickr.c b/src/flickr/grl-flickr.c index f6be4a9..ecb67f1 100644 --- a/src/flickr/grl-flickr.c +++ b/src/flickr/grl-flickr.c @@ -266,7 +266,7 @@ search_cb (GFlickr *f, GList *photolist, gpointer user_data) while (photolist && sd->ss->count) { media_type = g_hash_table_lookup (photolist->data, "photo_media"); if (strcmp (media_type, "photo") == 0) { - media = grl_data_image_new (); + media = grl_media_image_new (); } else { media = grl_data_video_new (); } diff --git a/src/upnp/grl-upnp.c b/src/upnp/grl-upnp.c index 30536e0..a8dad68 100644 --- a/src/upnp/grl-upnp.c +++ b/src/upnp/grl-upnp.c @@ -847,7 +847,7 @@ build_media_from_didl (GrlMedia *content, } else if (g_str_has_prefix (class, "object.item.videoItem")) { media = grl_data_video_new (); } else if (g_str_has_prefix (class, "object.item.imageItem")) { - media = grl_data_image_new (); + media = grl_media_image_new (); } else { media = grl_media_new (); } -- cgit v1.2.1 From ecbd0c5a4f5d0dae83126ef79f1e7ab22a93712b Mon Sep 17 00:00:00 2001 From: "Juan A. Suarez Romero" Date: Thu, 4 Mar 2010 22:29:04 +0100 Subject: Rename GrlDataVideo to GrlMediaVideo --- src/apple-trailers/grl-apple-trailers.c | 2 +- src/filesystem/grl-filesystem.c | 2 +- src/flickr/grl-flickr.c | 2 +- src/podcasts/grl-podcasts.c | 2 +- src/upnp/grl-upnp.c | 2 +- src/youtube/grl-youtube.c | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/apple-trailers/grl-apple-trailers.c b/src/apple-trailers/grl-apple-trailers.c index 10a2314..173015c 100644 --- a/src/apple-trailers/grl-apple-trailers.c +++ b/src/apple-trailers/grl-apple-trailers.c @@ -205,7 +205,7 @@ build_media_from_movie (xmlNodePtr node) gchar *movie_title; gchar *movie_url; - media = grl_data_video_new (); + media = grl_media_video_new (); movie_id = (gchar *) xmlGetProp (node, (const xmlChar *) "id"); diff --git a/src/filesystem/grl-filesystem.c b/src/filesystem/grl-filesystem.c index 4e4c89a..55796be 100644 --- a/src/filesystem/grl-filesystem.c +++ b/src/filesystem/grl-filesystem.c @@ -324,7 +324,7 @@ create_content (GrlMedia *content, media = GRL_MEDIA (grl_media_box_new ()); } else { if (mime_is_video (mime)) { - media = grl_data_video_new (); + media = grl_media_video_new (); } else if (mime_is_audio (mime)) { media = grl_media_audio_new (); } else if (mime_is_image (mime)) { diff --git a/src/flickr/grl-flickr.c b/src/flickr/grl-flickr.c index ecb67f1..b00c930 100644 --- a/src/flickr/grl-flickr.c +++ b/src/flickr/grl-flickr.c @@ -268,7 +268,7 @@ search_cb (GFlickr *f, GList *photolist, gpointer user_data) if (strcmp (media_type, "photo") == 0) { media = grl_media_image_new (); } else { - media = grl_data_video_new (); + media = grl_media_video_new (); } update_media (media, photolist->data); sd->ss->callback (sd->ss->source, diff --git a/src/podcasts/grl-podcasts.c b/src/podcasts/grl-podcasts.c index 572068b..f5cdff2 100644 --- a/src/podcasts/grl-podcasts.c +++ b/src/podcasts/grl-podcasts.c @@ -536,7 +536,7 @@ build_media (GrlMedia *content, if (mime_is_audio (mime)) { media = grl_media_audio_new (); } else if (mime_is_video (mime)) { - media = grl_data_video_new (); + media = grl_media_video_new (); } else { media = grl_media_new (); } diff --git a/src/upnp/grl-upnp.c b/src/upnp/grl-upnp.c index a8dad68..07f4f48 100644 --- a/src/upnp/grl-upnp.c +++ b/src/upnp/grl-upnp.c @@ -845,7 +845,7 @@ build_media_from_didl (GrlMedia *content, if (g_str_has_prefix (class, "object.item.audioItem")) { media = grl_media_audio_new (); } else if (g_str_has_prefix (class, "object.item.videoItem")) { - media = grl_data_video_new (); + media = grl_media_video_new (); } else if (g_str_has_prefix (class, "object.item.imageItem")) { media = grl_media_image_new (); } else { diff --git a/src/youtube/grl-youtube.c b/src/youtube/grl-youtube.c index 9c8c5fa..bbffa7a 100644 --- a/src/youtube/grl-youtube.c +++ b/src/youtube/grl-youtube.c @@ -449,7 +449,7 @@ build_media_from_entry (GrlMedia *content, GList *iter; if (!content) { - media = grl_data_video_new (); + media = grl_media_video_new (); } else { media = content; } -- cgit v1.2.1 From f19cce042482973498be87f277e90d401df99160 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Sat, 6 Mar 2010 16:25:13 +0100 Subject: [youtube] Updated TODO --- src/youtube/TODO | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/youtube/TODO b/src/youtube/TODO index e69de29..409835c 100644 --- a/src/youtube/TODO +++ b/src/youtube/TODO @@ -0,0 +1,6 @@ +- Consider using libgdata. +- Fix get_metadata() for standard feeds. +- Consider implementing store() -> video upload. +- Consider implementing configuration (personal account) + -> Could add new category for browsing (my videos) + -> would enable store() and remove() operations. -- cgit v1.2.1 From ed1b42ebf4f1b2cd5dcbf459c56617d94197527c Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Wed, 10 Mar 2010 10:56:44 +0100 Subject: [metadata-store] Added metadata-store plugin supporting rating, play-count, last-played and last-position. --- configure.ac | 32 +++ src/Makefile.am | 6 +- src/metadata-store/Makefile.am | 26 +++ src/metadata-store/grl-metadata-store.c | 366 ++++++++++++++++++++++++++++++++ src/metadata-store/grl-metadata-store.h | 75 +++++++ 5 files changed, 504 insertions(+), 1 deletion(-) create mode 100644 src/metadata-store/Makefile.am create mode 100644 src/metadata-store/grl-metadata-store.c create mode 100644 src/metadata-store/grl-metadata-store.h diff --git a/configure.ac b/configure.ac index 9ed3cc0..0ce564f 100644 --- a/configure.ac +++ b/configure.ac @@ -501,6 +501,37 @@ then GRL_PLUGINS_ENABLED="$GRL_PLUGINS_ENABLED apple-trailers" fi +# ---------------------------------------------------------- +# BUILD METADATA-STORE PLUGIN +# ---------------------------------------------------------- + +AC_ARG_ENABLE(metadata-store, + AC_HELP_STRING([--enable-metadata-store], + [enable Metadata Store plugin (default: auto)]), + [ + case "$enableval" in + yes) + if test "x$HAVE_SQLITE" = "xno"; then + AC_MSG_ERROR([sqlite3 not found, install it or use --disable-metadata-store]) + fi + ;; + esac + ], + [ + if test "x$HAVE_SQLITE" = "xyes"; then + enable_metadata_store=yes + else + enable_metadata_store=no + fi + ]) + +AM_CONDITIONAL([METADATA_STORE_PLUGIN], [test "x$enable_metadata_store" = "xyes"]) +GRL_PLUGINS_ALL="$GRL_PLUGINS_ALL metadata-store" +if test "x$enable_metadata_store" = "xyes" +then + GRL_PLUGINS_ENABLED="$GRL_PLUGINS_ENABLED metadata-store" +fi + # ---------------------------------------------------------- # GETTEXT # ---------------------------------------------------------- @@ -536,6 +567,7 @@ AC_CONFIG_FILES([ src/bookmarks/Makefile src/shoutcast/Makefile src/apple-trailers/Makefile + src/metadata-store/Makefile test/Makefile ]) diff --git a/src/Makefile.am b/src/Makefile.am index fc8dc4f..c45f9d3 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -51,7 +51,11 @@ if APPLE_TRAILERS_PLUGIN SUBDIRS += apple-trailers endif -DIST_SUBDIRS = youtube fake-metadata filesystem jamendo lastfm-albumart upnp flickr podcasts bookmarks shoutcast apple-trailers +if METADATA_STORE_PLUGIN +SUBDIRS += metadata-store +endif + +DIST_SUBDIRS = youtube fake-metadata filesystem jamendo lastfm-albumart upnp flickr podcasts bookmarks shoutcast apple-trailers metadata-store MAINTAINERCLEANFILES = \ *.in \ diff --git a/src/metadata-store/Makefile.am b/src/metadata-store/Makefile.am new file mode 100644 index 0000000..4f6e9d2 --- /dev/null +++ b/src/metadata-store/Makefile.am @@ -0,0 +1,26 @@ +# +# Makefile.am +# +# Author: Iago Toral Quiroga +# +# Copyright (C) 2010 Igalia S.L. All rights reserved. + +lib_LTLIBRARIES = libgrlmetadatastore.la + +libgrlmetadatastore_la_CFLAGS = \ + $(DEPS_CFLAGS) \ + $(SQLITE_CFLAGS) + +libgrlmetadatastore_la_LIBADD = \ + $(DEPS_LIBS) \ + $(SQLITE_LIBS) + +libgrlmetadatastore_la_SOURCES = grl-metadata-store.c grl-metadata-store.h + +libdir=$(GRL_PLUGINS_DIR) + +MAINTAINERCLEANFILES = \ + *.in \ + *~ + +DISTCLEANFILES = $(MAINTAINERCLEANFILES) diff --git a/src/metadata-store/grl-metadata-store.c b/src/metadata-store/grl-metadata-store.c new file mode 100644 index 0000000..edb2b6a --- /dev/null +++ b/src/metadata-store/grl-metadata-store.c @@ -0,0 +1,366 @@ +/* + * Copyright (C) 2010 Igalia S.L. + * + * Contact: Iago Toral Quiroga + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA + * + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include + +#include "grl-metadata-store.h" + +#define GRL_METADATA_STORE_GET_PRIVATE(object) \ + (G_TYPE_INSTANCE_GET_PRIVATE((object), \ + GRL_METADATA_STORE_SOURCE_TYPE, \ + GrlMetadataStorePrivate)) + +#undef G_LOG_DOMAIN +#define G_LOG_DOMAIN "grl-metadata-store" + +#define PLUGIN_ID "grl-metadata-store" +#define PLUGIN_NAME "Metadata Store" +#define PLUGIN_DESC "A plugin for storing extra metadata information" + +#define SOURCE_ID "grl-metadata-store" +#define SOURCE_NAME "Metadata Store" +#define SOURCE_DESC "A plugin for storing extra metadata information" + +#define AUTHOR "Igalia S.L." +#define LICENSE "LGPL" +#define SITE "http://www.igalia.com" + +#define GRL_SQL_DB ".grl-metadata-store" + +#define GRL_SQL_CREATE_TABLE_STORE \ + "CREATE TABLE IF NOT EXISTS store (" \ + "source_id TEXT," \ + "media_id TEXT," \ + "play_count INTEGER," \ + "rating INTEGER," \ + "last_position INTEGER," \ + "last_played DATE)" + +#define GRL_SQL_GET_METADATA \ + "SELECT * FROM store " \ + "WHERE source_id='%s' AND media_id='%s' " \ + "LIMIT 1" + +struct _GrlMetadataStorePrivate { + sqlite3 *db; +}; + +enum { + STORE_SOURCE_ID = 0, + STORE_MEDIA_ID, + STORE_PLAY_COUNT, + STORE_RATING, + STORE_LAST_POSITION, + STORE_LAST_PLAYED, +}; + +static GrlMetadataStoreSource *grl_metadata_store_source_new (void); + +static void grl_metadata_store_source_resolve (GrlMetadataSource *source, + GrlMetadataSourceResolveSpec *rs); + +static const GList *grl_metadata_store_source_supported_keys (GrlMetadataSource *source); + +static const GList *grl_metadata_store_source_key_depends (GrlMetadataSource *source, + GrlKeyID key_id); +static const GList *grl_metadata_store_source_writable_keys (GrlMetadataSource *source); + +gboolean grl_metadata_store_source_plugin_init (GrlPluginRegistry *registry, + const GrlPluginInfo *plugin, + const GrlConfig *config); + + +/* =================== GrlMetadataStore Plugin =============== */ + +gboolean +grl_metadata_store_source_plugin_init (GrlPluginRegistry *registry, + const GrlPluginInfo *plugin, + const GrlConfig *config) +{ + g_debug ("grl_metadata_store_source_plugin_init"); + GrlMetadataStoreSource *source = grl_metadata_store_source_new (); + grl_plugin_registry_register_source (registry, + plugin, + GRL_MEDIA_PLUGIN (source)); + return TRUE; +} + +GRL_PLUGIN_REGISTER (grl_metadata_store_source_plugin_init, + NULL, + PLUGIN_ID, + PLUGIN_NAME, + PLUGIN_DESC, + PACKAGE_VERSION, + AUTHOR, + LICENSE, + SITE); + +/* ================== GrlMetadataStore GObject ================ */ + +static GrlMetadataStoreSource * +grl_metadata_store_source_new (void) +{ + g_debug ("grl_metadata_store_source_new"); + return g_object_new (GRL_METADATA_STORE_SOURCE_TYPE, + "source-id", SOURCE_ID, + "source-name", SOURCE_NAME, + "source-desc", SOURCE_DESC, + NULL); +} + +static void +grl_metadata_store_source_class_init (GrlMetadataStoreSourceClass * klass) +{ + GrlMetadataSourceClass *metadata_class = GRL_METADATA_SOURCE_CLASS (klass); + metadata_class->supported_keys = grl_metadata_store_source_supported_keys; + metadata_class->key_depends = grl_metadata_store_source_key_depends; + metadata_class->writable_keys = grl_metadata_store_source_writable_keys; + metadata_class->resolve = grl_metadata_store_source_resolve; + + g_type_class_add_private (klass, sizeof (GrlMetadataStorePrivate)); +} + +static void +grl_metadata_store_source_init (GrlMetadataStoreSource *source) +{ + gint r; + const gchar *home; + gchar *db_path; + gchar *sql_error = NULL; + + source->priv = GRL_METADATA_STORE_GET_PRIVATE (source); + memset (source->priv, 0, sizeof (GrlMetadataStorePrivate)); + + home = g_getenv ("HOME"); + if (!home) { + g_warning ("$HOME not set, cannot open database"); + return; + } + + g_debug ("Opening database connection..."); + db_path = g_strconcat (home, G_DIR_SEPARATOR_S, GRL_SQL_DB, NULL); + r = sqlite3_open (db_path, &source->priv->db); + if (r) { + g_critical ("Failed to open database '%s': %s", + db_path, sqlite3_errmsg (source->priv->db)); + sqlite3_close (source->priv->db); + return; + } + g_debug (" OK"); + + g_debug ("Checking database tables..."); + r = sqlite3_exec (source->priv->db, GRL_SQL_CREATE_TABLE_STORE, + NULL, NULL, &sql_error); + + if (r) { + if (sql_error) { + g_warning ("Failed to create database tables: %s", sql_error); + sqlite3_free (sql_error); + sql_error = NULL; + } else { + g_warning ("Failed to create database tables."); + } + sqlite3_close (source->priv->db); + return; + } + g_debug (" OK"); + + g_free (db_path); +} + +G_DEFINE_TYPE (GrlMetadataStoreSource, grl_metadata_store_source, + GRL_TYPE_METADATA_SOURCE); + +/* ======================= Utilities ==================== */ + +static sqlite3_stmt * +query_metadata_store (sqlite3 *db, + const gchar *source_id, + const gchar *media_id) +{ + gint r; + sqlite3_stmt *sql_stmt = NULL; + gchar *sql; + + g_debug ("get_metadata"); + + sql = g_strdup_printf (GRL_SQL_GET_METADATA, source_id, media_id); + g_debug ("%s", sql); + r = sqlite3_prepare_v2 (db, sql, strlen (sql), &sql_stmt, NULL); + g_free (sql); + + if (r != SQLITE_OK) { + g_warning ("Failed to get metadata: %s", sqlite3_errmsg (db)); + return NULL; + } + + return sql_stmt; +} + +static void +fill_metadata (GrlMedia *media, GList *keys, sqlite3_stmt *stmt) +{ + GList *iter; + gint rating, play_count, last_position; + gchar *last_played, *rating_str; + gint r; + + while ((r = sqlite3_step (stmt)) == SQLITE_BUSY); + + if (r != SQLITE_ROW) { + /* No info in DB for this item, bail out silently */ + sqlite3_finalize (stmt); + return; + } + + iter = keys; + while (iter) { + GrlKeyID key_id = POINTER_TO_GRLKEYID (iter->data); + switch (key_id) { + case GRL_METADATA_KEY_PLAY_COUNT: + play_count = sqlite3_column_int (stmt, STORE_PLAY_COUNT); + grl_media_set_play_count (media, play_count); + break; + case GRL_METADATA_KEY_RATING: + rating = sqlite3_column_int (stmt, STORE_RATING); + rating_str = g_strdup_printf ("%d", rating); + grl_media_set_rating (media, rating_str, "5"); + g_free (rating_str); + break; + case GRL_METADATA_KEY_LAST_PLAYED: + last_played = (gchar *) sqlite3_column_text (stmt, STORE_LAST_PLAYED); + grl_media_set_last_played (media, last_played); + break; + case GRL_METADATA_KEY_LAST_POSITION: + last_position = sqlite3_column_int (stmt, STORE_LAST_POSITION); + grl_media_set_last_position (media, last_position); + break; + default: + break; + } + iter = g_list_next (iter); + } + + sqlite3_finalize (stmt); +} + +/* ================== API Implementation ================ */ + +static const GList * +grl_metadata_store_source_supported_keys (GrlMetadataSource *source) +{ + static GList *keys = NULL; + if (!keys) { + keys = grl_metadata_key_list_new (GRL_METADATA_KEY_RATING, + GRL_METADATA_KEY_PLAY_COUNT, + GRL_METADATA_KEY_LAST_PLAYED, + GRL_METADATA_KEY_LAST_POSITION, + NULL); + } + return keys; +} + +static const GList * +grl_metadata_store_source_writable_keys (GrlMetadataSource *source) +{ + static GList *keys = NULL; + if (!keys) { + keys = grl_metadata_key_list_new (GRL_METADATA_KEY_RATING, + GRL_METADATA_KEY_PLAY_COUNT, + GRL_METADATA_KEY_LAST_PLAYED, + GRL_METADATA_KEY_LAST_POSITION, + NULL); + } + return keys; +} + +static const GList * +grl_metadata_store_source_key_depends (GrlMetadataSource *source, + GrlKeyID key_id) +{ + static GList *deps = NULL; + if (!deps) { + deps = grl_metadata_key_list_new (GRL_METADATA_KEY_ID, NULL); + } + + switch (key_id) { + case GRL_METADATA_KEY_RATING: + case GRL_METADATA_KEY_PLAY_COUNT: + case GRL_METADATA_KEY_LAST_PLAYED: + case GRL_METADATA_KEY_LAST_POSITION: + return deps; + default: + break; + } + + return NULL; +} + +static void +grl_metadata_store_source_resolve (GrlMetadataSource *source, + GrlMetadataSourceResolveSpec *rs) +{ + g_debug ("grl_metadata_store_source_resolve"); + + const gchar *source_id, *media_id; + sqlite3_stmt *stmt; + GError *error = NULL; + + source_id = grl_media_get_source (rs->media); + media_id = grl_media_get_id (rs->media); + + /* We need the source id */ + if (!source_id) { + g_warning ("Failed to resolve metadata: source-id not available"); + error = g_error_new (GRL_ERROR, + GRL_ERROR_RESOLVE_FAILED, + "source-id not available, cannot resolve metadata."); + rs->callback (rs->source, rs->media, rs->user_data, error); + g_error_free (error); + return; + } + + /* Special case for root categories */ + if (!media_id) { + media_id = ""; + } + + stmt = query_metadata_store (GRL_METADATA_STORE_SOURCE (source)->priv->db, + source_id, media_id); + if (stmt) { + fill_metadata (rs->media, rs->keys, stmt); + rs->callback (rs->source, rs->media, rs->user_data, NULL); + } else { + g_warning ("Failed to resolve metadata"); + error = g_error_new (GRL_ERROR, + GRL_ERROR_RESOLVE_FAILED, + "Failed to resolve metadata."); + rs->callback (rs->source, rs->media, rs->user_data, error); + g_error_free (error); + } +} diff --git a/src/metadata-store/grl-metadata-store.h b/src/metadata-store/grl-metadata-store.h new file mode 100644 index 0000000..47df494 --- /dev/null +++ b/src/metadata-store/grl-metadata-store.h @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2010 Igalia S.L. + * + * Contact: Iago Toral Quiroga + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA + * + */ + +#ifndef _GRL_METADATA_STORE_SOURCE_H_ +#define _GRL_METADATA_STORE_SOURCE_H_ + +#include + +#define GRL_METADATA_STORE_SOURCE_TYPE \ + (grl_metadata_store_source_get_type ()) + +#define GRL_METADATA_STORE_SOURCE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + GRL_METADATA_STORE_SOURCE_TYPE, \ + GrlMetadataStoreSource)) + +#define GRL_IS_METADATA_STORE_SOURCE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + GRL_METADATA_STORE_SOURCE_TYPE)) + +#define GRL_METADATA_STORE_SOURCE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), \ + GRL_METADATA_STORE_SOURCE_TYPE, \ + GrlMetadataStoreSourceClass)) + +#define GRL_IS_METADATA_STORE_SOURCE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), \ + GRL_METADATA_STORE_SOURCE_TYPE)) + +#define GRL_METADATA_STORE_SOURCE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + GRL_METADATA_STORE_SOURCE_TYPE, \ + GrlMetadataStoreSourceClass)) + +typedef struct _GrlMetadataStorePrivate GrlMetadataStorePrivate; +typedef struct _GrlMetadataStoreSource GrlMetadataStoreSource; + +struct _GrlMetadataStoreSource { + + GrlMetadataSource parent; + + /*< private >*/ + GrlMetadataStorePrivate *priv; +}; + +typedef struct _GrlMetadataStoreSourceClass GrlMetadataStoreSourceClass; + +struct _GrlMetadataStoreSourceClass { + + GrlMetadataSourceClass parent_class; + +}; + +GType grl_metadata_store_source_get_type (void); + +#endif /* _GRL_METADATA_STORE_SOURCE_H_ */ -- cgit v1.2.1 From ee7aa2a044333f7f8f8358c4b5e9d9c5c5c1fea5 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Wed, 10 Mar 2010 10:57:34 +0100 Subject: [test] Updated to include metadat-store and removed assertion on flickr plugin (API key is needed for it to work) --- test/main.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/test/main.c b/test/main.c index 05abde2..cc8d739 100644 --- a/test/main.c +++ b/test/main.c @@ -182,7 +182,8 @@ main (void) "grl-shoutcast:*," "grl-apple-trailers:*," "grl-lastfm-albumart:*," - "grl-flickr:*"); + "grl-flickr:*," + "grl-metadata-store:*"); keys = grl_metadata_key_list_new (GRL_METADATA_KEY_ID, GRL_METADATA_KEY_TITLE, @@ -197,6 +198,10 @@ main (void) GRL_METADATA_KEY_DURATION, GRL_METADATA_KEY_CHILDCOUNT, GRL_METADATA_KEY_MIME, + GRL_METADATA_KEY_PLAY_COUNT, + GRL_METADATA_KEY_LAST_PLAYED, + GRL_METADATA_KEY_LAST_POSITION, + GRL_METADATA_KEY_RATING, NULL); g_debug ("start"); @@ -220,6 +225,8 @@ main (void) "../src/lastfm-albumart/.libs/libgrllastfm-albumart.so"); grl_plugin_registry_load (registry, "../src/flickr/.libs/libgrlflickr.so"); + grl_plugin_registry_load (registry, + "../src/metadata-store/.libs/libgrlmetadatastore.so"); g_debug ("Obtaining sources"); @@ -255,14 +262,18 @@ main (void) (GrlMetadataSource *) grl_plugin_registry_lookup_source (registry, "grl-lastfm-albumart"); + GrlMetadataSource *metadata_store = + (GrlMetadataSource *) grl_plugin_registry_lookup_source (registry, + "grl-metadata-store"); + g_assert (youtube); g_assert (fs); - g_assert (flickr); g_assert (jamendo); g_assert (shoutcast); g_assert (apple_trailers); g_assert (fake); g_assert (lastfm); + g_assert (metadata_store); g_debug ("Supported operations"); @@ -274,14 +285,15 @@ main (void) print_supported_ops (GRL_METADATA_SOURCE (shoutcast)); print_supported_ops (fake); print_supported_ops (lastfm); + print_supported_ops (metadata_store); g_debug ("testing"); if (0) grl_media_source_browse (youtube, NULL, keys, 0, 5, GRL_RESOLVE_IDLE_RELAY , browse_cb, NULL); if (0) grl_media_source_browse (youtube, NULL, keys, 0, 5, GRL_RESOLVE_IDLE_RELAY , browse_cb, NULL); if (0) grl_media_source_browse (youtube, media_from_id ("standard-feeds/most-viewed"), keys, 0, 10, GRL_RESOLVE_FAST_ONLY , browse_cb, NULL); - if (0) grl_media_source_browse (youtube, media_from_id ("categories/Sports"), keys, 0, 173, GRL_RESOLVE_FAST_ONLY, browse_cb, NULL); - if (0) grl_media_source_search (youtube, "igalia", keys, 6, 10, GRL_RESOLVE_FAST_ONLY, browse_cb, NULL); + if (0) grl_media_source_browse (youtube, media_from_id ("categories/Sports"), keys, 0, 5, GRL_RESOLVE_FAST_ONLY, browse_cb, NULL); + if (1) grl_media_source_search (youtube, "igalia", keys, 0, 3, GRL_RESOLVE_FULL | GRL_RESOLVE_FAST_ONLY, browse_cb, NULL); if (0) grl_media_source_search (youtube, "igalia", keys, 1, 10, GRL_RESOLVE_FULL | GRL_RESOLVE_IDLE_RELAY | GRL_RESOLVE_FAST_ONLY, browse_cb, NULL); if (0) grl_media_source_metadata (youtube, NULL, keys, 0, metadata_cb, NULL); if (0) grl_media_source_metadata (youtube, NULL, keys, GRL_RESOLVE_IDLE_RELAY | GRL_RESOLVE_FAST_ONLY | GRL_RESOLVE_FULL, metadata_cb, NULL); @@ -314,7 +326,7 @@ main (void) if (0) grl_media_source_metadata (shoutcast, box_from_id("2424hs"), keys, 0, metadata_cb, NULL); if (0) grl_media_source_metadata (shoutcast, media_from_id("American/556687"), keys, 0, metadata_cb, NULL); if (0) grl_media_source_metadata (shoutcast, media_from_id("American/556682"), keys, 0, metadata_cb, NULL); - if (1) grl_media_source_browse (apple_trailers, NULL, keys, 0, 5, GRL_RESOLVE_IDLE_RELAY , browse_cb, NULL); + if (0) grl_media_source_browse (apple_trailers, NULL, keys, 0, 5, GRL_RESOLVE_IDLE_RELAY , browse_cb, NULL); if (0) { GrlMedia *media = media_from_id ("test"); grl_data_set_string (GRL_DATA (media), -- cgit v1.2.1 From c27b43261b32961e22d995a9138ca508436c2dee Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Wed, 10 Mar 2010 13:12:15 +0100 Subject: [metadata-store] Implement set_metadata() --- src/metadata-store/grl-metadata-store.c | 192 +++++++++++++++++++++++++++++++- 1 file changed, 188 insertions(+), 4 deletions(-) diff --git a/src/metadata-store/grl-metadata-store.c b/src/metadata-store/grl-metadata-store.c index edb2b6a..8692ab0 100644 --- a/src/metadata-store/grl-metadata-store.c +++ b/src/metadata-store/grl-metadata-store.c @@ -57,7 +57,7 @@ "source_id TEXT," \ "media_id TEXT," \ "play_count INTEGER," \ - "rating INTEGER," \ + "rating REAL," \ "last_position INTEGER," \ "last_played DATE)" @@ -66,6 +66,15 @@ "WHERE source_id='%s' AND media_id='%s' " \ "LIMIT 1" +#define GRL_SQL_UPDATE_METADATA \ + "UPDATE store SET %s=? " \ + "WHERE source_id=? AND media_id=?" + +#define GRL_SQL_INSERT_METADATA \ + "INSERT INTO store " \ + "(%s, source_id, media_id) VALUES " \ + "(?, ?, ?)" + struct _GrlMetadataStorePrivate { sqlite3 *db; }; @@ -84,6 +93,9 @@ static GrlMetadataStoreSource *grl_metadata_store_source_new (void); static void grl_metadata_store_source_resolve (GrlMetadataSource *source, GrlMetadataSourceResolveSpec *rs); +static void grl_metadata_store_source_set_metadata (GrlMetadataSource *source, + GrlMetadataSourceSetMetadataSpec *sms); + static const GList *grl_metadata_store_source_supported_keys (GrlMetadataSource *source); static const GList *grl_metadata_store_source_key_depends (GrlMetadataSource *source, @@ -141,6 +153,7 @@ grl_metadata_store_source_class_init (GrlMetadataStoreSourceClass * klass) metadata_class->key_depends = grl_metadata_store_source_key_depends; metadata_class->writable_keys = grl_metadata_store_source_writable_keys; metadata_class->resolve = grl_metadata_store_source_resolve; + metadata_class->set_metadata = grl_metadata_store_source_set_metadata; g_type_class_add_private (klass, sizeof (GrlMetadataStorePrivate)); } @@ -226,7 +239,8 @@ static void fill_metadata (GrlMedia *media, GList *keys, sqlite3_stmt *stmt) { GList *iter; - gint rating, play_count, last_position; + gint play_count, last_position; + gdouble rating; gchar *last_played, *rating_str; gint r; @@ -247,8 +261,8 @@ fill_metadata (GrlMedia *media, GList *keys, sqlite3_stmt *stmt) grl_media_set_play_count (media, play_count); break; case GRL_METADATA_KEY_RATING: - rating = sqlite3_column_int (stmt, STORE_RATING); - rating_str = g_strdup_printf ("%d", rating); + rating = sqlite3_column_double (stmt, STORE_RATING); + rating_str = g_strdup_printf ("%.2f", rating); grl_media_set_rating (media, rating_str, "5"); g_free (rating_str); break; @@ -269,6 +283,89 @@ fill_metadata (GrlMedia *media, GList *keys, sqlite3_stmt *stmt) sqlite3_finalize (stmt); } +static const gchar * +get_column_name_from_key_id (GrlKeyID key_id) +{ + static const gchar *col_names[] = {"rating", "last_played", "last_position", + "play_count"}; + switch (key_id) { + case GRL_METADATA_KEY_RATING: + return col_names[0]; + case GRL_METADATA_KEY_LAST_PLAYED: + return col_names[1]; + case GRL_METADATA_KEY_LAST_POSITION: + return col_names[2]; + case GRL_METADATA_KEY_PLAY_COUNT: + return col_names[3]; + default: + return NULL; + } +} + +static gboolean +prepare_and_exec (sqlite3 *db, + const gchar *query, + const gchar *col_name, + const gchar *source_id, + const gchar *media_id, + GrlKeyID key_id, + GrlMedia *media) +{ + gchar *sql; + sqlite3_stmt *stmt; + gint r; + const gchar *char_value; + gint int_value; + double double_value; + + sql = g_strdup_printf (query, col_name); + g_debug ("%s", sql); + r = sqlite3_prepare_v2 (db, sql, strlen (sql), &stmt, NULL); + g_free (sql); + + if (r != SQLITE_OK) { + g_warning ("Failed to update metadata for '%s - %s': %s", + source_id, media_id, sqlite3_errmsg (db)); + sqlite3_finalize (stmt); + return FALSE; + } + + switch (key_id) { + case GRL_METADATA_KEY_RATING: + char_value = grl_media_get_rating (media); + if (char_value) { + double_value = g_ascii_strtod (char_value, NULL); + } else { + double_value = 0; + } + sqlite3_bind_double (stmt, 1, double_value); + break; + case GRL_METADATA_KEY_PLAY_COUNT: + int_value = grl_media_get_play_count (media); + sqlite3_bind_int (stmt, 1, int_value); + break; + case GRL_METADATA_KEY_LAST_POSITION: + int_value = grl_media_get_last_position (media); + sqlite3_bind_int (stmt, 1, int_value); + break; + case GRL_METADATA_KEY_LAST_PLAYED: + char_value = grl_media_get_last_played (media); + sqlite3_bind_text (stmt, 1, char_value, -1, SQLITE_STATIC); + break; + default: + break; + } + + sqlite3_bind_text (stmt, 2, source_id, -1, SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, media_id, -1, SQLITE_STATIC); + + while ((r = sqlite3_step (stmt)) == SQLITE_BUSY); + + sqlite3_finalize (stmt); + + return (r == SQLITE_DONE); +} + /* ================== API Implementation ================ */ static const GList * @@ -364,3 +461,90 @@ grl_metadata_store_source_resolve (GrlMetadataSource *source, g_error_free (error); } } + +static void +grl_metadata_store_source_set_metadata (GrlMetadataSource *source, + GrlMetadataSourceSetMetadataSpec *sms) +{ + g_debug ("grl_metadata_store_source_set_metadata"); + + const gchar *media_id, *source_id, *col_name; + GError *error = NULL; + sqlite3 *db; + gboolean r; + + source_id = grl_media_get_source (sms->media); + media_id = grl_media_get_id (sms->media); + + /* We need the source id */ + if (!source_id) { + g_warning ("Failed to update metadata: source-id not available"); + error = g_error_new (GRL_ERROR, + GRL_ERROR_SET_METADATA_FAILED, + "source-id not available, cannot update metadata."); + sms->callback (sms->source, sms->media, sms->user_data, error); + g_error_free (error); + return; + } + + /* Special case for root categories */ + if (!media_id) { + media_id = ""; + } + + db = GRL_METADATA_STORE_SOURCE (source)->priv->db; + + col_name = get_column_name_from_key_id (sms->key_id); + if (!col_name) { + g_warning ("Key %u is not supported for writing", sms->key_id); + error = g_error_new (GRL_ERROR, + GRL_ERROR_SET_METADATA_FAILED, + "Failed to update metadata: key not supported"); + sms->callback (sms->source, sms->media, sms->user_data, error); + g_error_free (error); + return; + } + + r = prepare_and_exec (db, + GRL_SQL_UPDATE_METADATA, + col_name, + source_id, + media_id, + sms->key_id, + sms->media); + + if (!r) { + g_warning ("Failed to update metadata for '%s - %s': %s", + source_id, media_id, sqlite3_errmsg (db)); + error = g_error_new (GRL_ERROR, + GRL_ERROR_SET_METADATA_FAILED, + "Failed to update metadata"); + sms->callback (sms->source, sms->media, sms->user_data, error); + g_error_free (error); + return; + } + + if (sqlite3_changes (db) == 0) { + /* We have to create the row */ + r = prepare_and_exec (db, + GRL_SQL_INSERT_METADATA, + col_name, + source_id, + media_id, + sms->key_id, + sms->media); + } + + if (!r) { + g_warning ("Failed to update metadata for '%s - %s': %s", + source_id, media_id, sqlite3_errmsg (db)); + error = g_error_new (GRL_ERROR, + GRL_ERROR_SET_METADATA_FAILED, + "Failed to update metadata"); + sms->callback (sms->source, sms->media, sms->user_data, error); + g_error_free (error); + return; + } + + sms->callback (sms->source, sms->media, sms->user_data, NULL); +} -- cgit v1.2.1 From 0fbd3f2ed509dc90acac2955b867cb73a1caef16 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Wed, 10 Mar 2010 13:12:59 +0100 Subject: [test] Added test for set_metadata() --- test/main.c | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/test/main.c b/test/main.c index cc8d739..da4a330 100644 --- a/test/main.c +++ b/test/main.c @@ -51,6 +51,17 @@ print_supported_ops (GrlMetadataSource *source) if (caps & GRL_OP_QUERY) { g_debug (" + Query"); } + if (caps & GRL_OP_STORE_PARENT) { + g_debug (" + Store (parent)"); + } else if (caps & GRL_OP_STORE) { + g_debug (" + Store"); + } + if (caps & GRL_OP_REMOVE) { + g_debug (" + Remove"); + } + if (caps & GRL_OP_SET_METADATA) { + g_debug (" + Set Metadata"); + } } static void @@ -168,6 +179,17 @@ resolve_cb (GrlMetadataSource *source, metadata_cb (NULL, media, user_data, error); } +static void +set_cb (GrlMetadataSource *source, + GrlMedia *media, + gpointer user_data, + const GError *error) +{ + if (error) { + g_critical ("Error: %s", error->message); + } +} + gint main (void) { @@ -293,7 +315,7 @@ main (void) if (0) grl_media_source_browse (youtube, NULL, keys, 0, 5, GRL_RESOLVE_IDLE_RELAY , browse_cb, NULL); if (0) grl_media_source_browse (youtube, media_from_id ("standard-feeds/most-viewed"), keys, 0, 10, GRL_RESOLVE_FAST_ONLY , browse_cb, NULL); if (0) grl_media_source_browse (youtube, media_from_id ("categories/Sports"), keys, 0, 5, GRL_RESOLVE_FAST_ONLY, browse_cb, NULL); - if (1) grl_media_source_search (youtube, "igalia", keys, 0, 3, GRL_RESOLVE_FULL | GRL_RESOLVE_FAST_ONLY, browse_cb, NULL); + if (0) grl_media_source_search (youtube, "igalia", keys, 0, 3, GRL_RESOLVE_FULL | GRL_RESOLVE_FAST_ONLY, browse_cb, NULL); if (0) grl_media_source_search (youtube, "igalia", keys, 1, 10, GRL_RESOLVE_FULL | GRL_RESOLVE_IDLE_RELAY | GRL_RESOLVE_FAST_ONLY, browse_cb, NULL); if (0) grl_media_source_metadata (youtube, NULL, keys, 0, metadata_cb, NULL); if (0) grl_media_source_metadata (youtube, NULL, keys, GRL_RESOLVE_IDLE_RELAY | GRL_RESOLVE_FAST_ONLY | GRL_RESOLVE_FULL, metadata_cb, NULL); @@ -337,6 +359,18 @@ main (void) "pop hits"); grl_metadata_source_resolve (lastfm, keys, media, GRL_RESOLVE_IDLE_RELAY, resolve_cb, NULL); } + if (1) { + GrlMedia *media = media_from_id ("test-id"); + grl_media_set_source (media, "some-source-id"); + grl_media_set_play_count (media, 68); + grl_media_set_rating (media, "4.5", "5"); + grl_media_set_last_position (media, 60); + grl_media_set_last_played (media, "26/02/2010"); + grl_metadata_source_set_metadata (metadata_store, media, GRL_METADATA_KEY_PLAY_COUNT, set_cb, NULL); + grl_metadata_source_set_metadata (metadata_store, media, GRL_METADATA_KEY_RATING, set_cb, NULL); + grl_metadata_source_set_metadata (metadata_store, media, GRL_METADATA_KEY_LAST_POSITION, set_cb, NULL); + grl_metadata_source_set_metadata (metadata_store, media, GRL_METADATA_KEY_LAST_PLAYED, set_cb, NULL); + } g_debug ("Running main loop"); -- cgit v1.2.1 From 7deefe1d1f93f7baf0bf87cd79a9a9dbe67d7ca1 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Wed, 10 Mar 2010 16:47:39 +0100 Subject: [youtube] fix metadata() for standard feeds. --- src/youtube/grl-youtube.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/youtube/grl-youtube.c b/src/youtube/grl-youtube.c index bbffa7a..83abd82 100644 --- a/src/youtube/grl-youtube.c +++ b/src/youtube/grl-youtube.c @@ -806,23 +806,28 @@ parse_metadata_entry (GrlMediaSourceMetadataSpec *os, node = node->next; } - /* Should have exactly 1 result */ - if (total_results != 1) { + if (total_results <= 0) { *error = g_error_new (GRL_ERROR, GRL_ERROR_MEDIA_NOT_FOUND, "Could not find requested media"); return NULL; } - /* Now go for the entry data */ while (node && xmlStrcmp (node->name, (const xmlChar *) "entry")) { node = node->next; } if (node) { + const gchar *target_id = grl_media_get_id (os->media); Entry *entry = g_new0 (Entry, 1); parse_entry (doc, node, entry); if (0) print_entry (entry); - build_media_from_entry (os->media, entry, os->keys); + if (!strcmp (entry->id, target_id)) { + build_media_from_entry (os->media, entry, os->keys); + } else { + /* FIXME: The query using the video id at target text resulted in various + matches and the one we were looking for was not the first one */ + g_warning ("Metadata query did not match expected target"); + } free_entry (entry); } -- cgit v1.2.1 From 7d1d1c59939f53ca65034452916d98e11fe00c0a Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Thu, 11 Mar 2010 09:57:13 +0100 Subject: [metadata-store] Implement new API for set_metadata() which allows specifying multiple keys to update. --- src/metadata-store/grl-metadata-store.c | 324 ++++++++++++++++++++++---------- 1 file changed, 223 insertions(+), 101 deletions(-) diff --git a/src/metadata-store/grl-metadata-store.c b/src/metadata-store/grl-metadata-store.c index 8692ab0..8149dad 100644 --- a/src/metadata-store/grl-metadata-store.c +++ b/src/metadata-store/grl-metadata-store.c @@ -67,13 +67,13 @@ "LIMIT 1" #define GRL_SQL_UPDATE_METADATA \ - "UPDATE store SET %s=? " \ + "UPDATE store SET %s " \ "WHERE source_id=? AND media_id=?" #define GRL_SQL_INSERT_METADATA \ "INSERT INTO store " \ - "(%s, source_id, media_id) VALUES " \ - "(?, ?, ?)" + "(%s source_id, media_id) VALUES " \ + "(%s ?, ?)" struct _GrlMetadataStorePrivate { sqlite3 *db; @@ -303,25 +303,25 @@ get_column_name_from_key_id (GrlKeyID key_id) } static gboolean -prepare_and_exec (sqlite3 *db, - const gchar *query, - const gchar *col_name, - const gchar *source_id, - const gchar *media_id, - GrlKeyID key_id, - GrlMedia *media) +bind_and_exec (sqlite3 *db, + const gchar *sql, + const gchar *source_id, + const gchar *media_id, + GList *col_names, + GList *keys, + GrlMedia *media) { - gchar *sql; - sqlite3_stmt *stmt; gint r; const gchar *char_value; gint int_value; double double_value; + GList *iter_names, *iter_keys; + guint count; + sqlite3_stmt *stmt; - sql = g_strdup_printf (query, col_name); + /* Create statement from sql */ g_debug ("%s", sql); r = sqlite3_prepare_v2 (db, sql, strlen (sql), &stmt, NULL); - g_free (sql); if (r != SQLITE_OK) { g_warning ("Failed to update metadata for '%s - %s': %s", @@ -330,35 +330,48 @@ prepare_and_exec (sqlite3 *db, return FALSE; } - switch (key_id) { - case GRL_METADATA_KEY_RATING: - char_value = grl_media_get_rating (media); - if (char_value) { - double_value = g_ascii_strtod (char_value, NULL); - } else { - double_value = 0; + /* Bind column values */ + count = 1; + iter_names = col_names; + iter_keys = keys; + while (iter_names) { + if (iter_names->data) { + GrlKeyID key_id = POINTER_TO_GRLKEYID (iter_keys->data); + switch (key_id) { + case GRL_METADATA_KEY_RATING: + char_value = grl_media_get_rating (media); + if (char_value) { + double_value = g_ascii_strtod (char_value, NULL); + } else { + double_value = 0; + } + sqlite3_bind_double (stmt, count, double_value); + break; + case GRL_METADATA_KEY_PLAY_COUNT: + int_value = grl_media_get_play_count (media); + sqlite3_bind_int (stmt, count, int_value); + break; + case GRL_METADATA_KEY_LAST_POSITION: + int_value = grl_media_get_last_position (media); + sqlite3_bind_int (stmt, count, int_value); + break; + case GRL_METADATA_KEY_LAST_PLAYED: + char_value = grl_media_get_last_played (media); + sqlite3_bind_text (stmt, count, char_value, -1, SQLITE_STATIC); + break; + default: + break; + } + count++; } - sqlite3_bind_double (stmt, 1, double_value); - break; - case GRL_METADATA_KEY_PLAY_COUNT: - int_value = grl_media_get_play_count (media); - sqlite3_bind_int (stmt, 1, int_value); - break; - case GRL_METADATA_KEY_LAST_POSITION: - int_value = grl_media_get_last_position (media); - sqlite3_bind_int (stmt, 1, int_value); - break; - case GRL_METADATA_KEY_LAST_PLAYED: - char_value = grl_media_get_last_played (media); - sqlite3_bind_text (stmt, 1, char_value, -1, SQLITE_STATIC); - break; - default: - break; + iter_keys = g_list_next (iter_keys); + iter_names = g_list_next (iter_names); } - sqlite3_bind_text (stmt, 2, source_id, -1, SQLITE_STATIC); - sqlite3_bind_text (stmt, 3, media_id, -1, SQLITE_STATIC); + sqlite3_bind_text (stmt, count++, source_id, -1, SQLITE_STATIC); + sqlite3_bind_text (stmt, count++, media_id, -1, SQLITE_STATIC); + /* execute query */ while ((r = sqlite3_step (stmt)) == SQLITE_BUSY); sqlite3_finalize (stmt); @@ -366,6 +379,166 @@ prepare_and_exec (sqlite3 *db, return (r == SQLITE_DONE); } +static gboolean +prepare_and_exec_update (sqlite3 *db, + const gchar *source_id, + const gchar *media_id, + GList *col_names, + GList *keys, + GrlMedia *media) +{ + gchar *sql; + gint r; + GList *iter_names; + GString *sql_buf; + gchar *sql_set; + guint count; + + g_debug ("prepare_and_exec_update"); + + /* Prepare sql "set" for update query */ + count = 0; + sql_buf = g_string_new (""); + iter_names = col_names; + while (iter_names) { + gchar *col_name = (gchar *) iter_names->data; + if (col_name) { + if (count > 0) { + g_string_append (sql_buf, " AND "); + } + g_string_append_printf (sql_buf, "%s=?", col_name); + count++; + } + iter_names = g_list_next (iter_names); + } + sql_set = g_string_free (sql_buf, FALSE); + + /* Execute query */ + sql = g_strdup_printf (GRL_SQL_UPDATE_METADATA, sql_set); + r = bind_and_exec (db, sql, source_id, media_id, col_names, keys, media); + g_free (sql); + g_free (sql_set); + + return r; +} + +static gboolean +prepare_and_exec_insert (sqlite3 *db, + const gchar *source_id, + const gchar *media_id, + GList *col_names, + GList *keys, + GrlMedia *media) +{ + gchar *sql; + gint r; + GList *iter_names; + GString *sql_buf_cols, *sql_buf_values; + gchar *sql_cols, *sql_values; + + g_debug ("prepare_and_exec_insert"); + + /* Prepare sql for insert query */ + sql_buf_cols = g_string_new (""); + sql_buf_values = g_string_new (""); + iter_names = col_names; + while (iter_names) { + gchar *col_name = (gchar *) iter_names->data; + if (col_name) { + g_string_append_printf (sql_buf_cols, "%s, ", col_name); + g_string_append (sql_buf_values, "?, "); + } + iter_names = g_list_next (iter_names); + } + sql_cols = g_string_free (sql_buf_cols, FALSE); + sql_values = g_string_free (sql_buf_values, FALSE); + + /* Execute query */ + sql = g_strdup_printf (GRL_SQL_INSERT_METADATA, sql_cols, sql_values); + r = bind_and_exec (db, sql, source_id, media_id, col_names, keys, media); + g_free (sql); + g_free (sql_cols); + g_free (sql_values); + + return r; +} + +static void +write_keys (sqlite3 *db, + const gchar *source_id, + const gchar *media_id, + GrlMetadataSourceSetMetadataSpec *sms, + GError **error) +{ + GList *col_names = NULL; + GList *iter; + guint supported_keys = 0; + gint r; + + /* Get DB column names for each key to be updated */ + iter = sms->keys; + while (iter) { + GrlKeyID key_id = POINTER_TO_GRLKEYID (iter->data); + const gchar *col_name = get_column_name_from_key_id (key_id); + if (!col_name) { + g_warning ("Key %u is not supported for writing, ignoring...", key_id); + } else { + supported_keys++; + } + col_names = g_list_prepend (col_names, (gchar *) col_name); + iter = g_list_next (iter); + } + col_names = g_list_reverse (col_names); + + if (supported_keys == 0) { + g_warning ("Failed to update metadata, none of the specified " + "keys is writable"); + *error = g_error_new (GRL_ERROR, + GRL_ERROR_SET_METADATA_FAILED, + "Failed to update metadata, " + "specified keys are not writable"); + goto done; + } + + r = prepare_and_exec_update (db, + source_id, + media_id, + col_names, + sms->keys, + sms->media); + + if (!r) { + g_warning ("Failed to update metadata for '%s - %s': %s", + source_id, media_id, sqlite3_errmsg (db)); + *error = g_error_new (GRL_ERROR, + GRL_ERROR_SET_METADATA_FAILED, + "Failed to update metadata"); + goto done; + } + + if (sqlite3_changes (db) == 0) { + /* We have to create the row */ + r = prepare_and_exec_insert (db, + source_id, + media_id, + col_names, + sms->keys, + sms->media); + } + + if (!r) { + g_warning ("Failed to update metadata for '%s - %s': %s", + source_id, media_id, sqlite3_errmsg (db)); + *error = g_error_new (GRL_ERROR, + GRL_ERROR_SET_METADATA_FAILED, + "Failed to update metadata"); + goto done; + } + + done: + g_list_free (col_names); +} + /* ================== API Implementation ================ */ static const GList * @@ -468,10 +641,8 @@ grl_metadata_store_source_set_metadata (GrlMetadataSource *source, { g_debug ("grl_metadata_store_source_set_metadata"); - const gchar *media_id, *source_id, *col_name; + const gchar *media_id, *source_id; GError *error = NULL; - sqlite3 *db; - gboolean r; source_id = grl_media_get_source (sms->media); media_id = grl_media_get_id (sms->media); @@ -482,69 +653,20 @@ grl_metadata_store_source_set_metadata (GrlMetadataSource *source, error = g_error_new (GRL_ERROR, GRL_ERROR_SET_METADATA_FAILED, "source-id not available, cannot update metadata."); - sms->callback (sms->source, sms->media, sms->user_data, error); - g_error_free (error); return; + } else { + /* Special case for root categories */ + if (!media_id) { + media_id = ""; + } + + write_keys (GRL_METADATA_STORE_SOURCE (source)->priv->db, + source_id, media_id, sms, &error); } - /* Special case for root categories */ - if (!media_id) { - media_id = ""; - } - - db = GRL_METADATA_STORE_SOURCE (source)->priv->db; - - col_name = get_column_name_from_key_id (sms->key_id); - if (!col_name) { - g_warning ("Key %u is not supported for writing", sms->key_id); - error = g_error_new (GRL_ERROR, - GRL_ERROR_SET_METADATA_FAILED, - "Failed to update metadata: key not supported"); - sms->callback (sms->source, sms->media, sms->user_data, error); - g_error_free (error); - return; - } + sms->callback (sms->source, sms->media, sms->user_data, error); - r = prepare_and_exec (db, - GRL_SQL_UPDATE_METADATA, - col_name, - source_id, - media_id, - sms->key_id, - sms->media); - - if (!r) { - g_warning ("Failed to update metadata for '%s - %s': %s", - source_id, media_id, sqlite3_errmsg (db)); - error = g_error_new (GRL_ERROR, - GRL_ERROR_SET_METADATA_FAILED, - "Failed to update metadata"); - sms->callback (sms->source, sms->media, sms->user_data, error); + if (error) { g_error_free (error); - return; - } - - if (sqlite3_changes (db) == 0) { - /* We have to create the row */ - r = prepare_and_exec (db, - GRL_SQL_INSERT_METADATA, - col_name, - source_id, - media_id, - sms->key_id, - sms->media); } - - if (!r) { - g_warning ("Failed to update metadata for '%s - %s': %s", - source_id, media_id, sqlite3_errmsg (db)); - error = g_error_new (GRL_ERROR, - GRL_ERROR_SET_METADATA_FAILED, - "Failed to update metadata"); - sms->callback (sms->source, sms->media, sms->user_data, error); - g_error_free (error); - return; - } - - sms->callback (sms->source, sms->media, sms->user_data, NULL); } -- cgit v1.2.1 From eb84aff693091817f3aa6263d333d93bc786a731 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Thu, 11 Mar 2010 09:57:55 +0100 Subject: [test] Updated test to new API for set_metadata(). --- test/main.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test/main.c b/test/main.c index da4a330..96e4269 100644 --- a/test/main.c +++ b/test/main.c @@ -365,11 +365,12 @@ main (void) grl_media_set_play_count (media, 68); grl_media_set_rating (media, "4.5", "5"); grl_media_set_last_position (media, 60); - grl_media_set_last_played (media, "26/02/2010"); - grl_metadata_source_set_metadata (metadata_store, media, GRL_METADATA_KEY_PLAY_COUNT, set_cb, NULL); - grl_metadata_source_set_metadata (metadata_store, media, GRL_METADATA_KEY_RATING, set_cb, NULL); - grl_metadata_source_set_metadata (metadata_store, media, GRL_METADATA_KEY_LAST_POSITION, set_cb, NULL); - grl_metadata_source_set_metadata (metadata_store, media, GRL_METADATA_KEY_LAST_PLAYED, set_cb, NULL); + grl_media_set_last_played (media, "19/11/2009"); + GList *keys_to_write = grl_metadata_key_list_new (GRL_METADATA_KEY_PLAY_COUNT, + GRL_METADATA_KEY_RATING, + GRL_METADATA_KEY_LAST_POSITION, + GRL_METADATA_KEY_LAST_PLAYED, NULL); + grl_metadata_source_set_metadata (metadata_store, media, keys_to_write, set_cb, NULL); } g_debug ("Running main loop"); -- cgit v1.2.1 From 7a4a3157a3bf55b8cc21d6119e22a963e2935706 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Thu, 11 Mar 2010 10:58:46 +0100 Subject: [metadata-store] Provide failed keys for set_metadata() callback. --- src/metadata-store/grl-metadata-store.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/metadata-store/grl-metadata-store.c b/src/metadata-store/grl-metadata-store.c index 8149dad..1ee67ec 100644 --- a/src/metadata-store/grl-metadata-store.c +++ b/src/metadata-store/grl-metadata-store.c @@ -463,7 +463,7 @@ prepare_and_exec_insert (sqlite3 *db, return r; } -static void +static GList * write_keys (sqlite3 *db, const gchar *source_id, const gchar *media_id, @@ -472,6 +472,7 @@ write_keys (sqlite3 *db, { GList *col_names = NULL; GList *iter; + GList *failed_keys = NULL; guint supported_keys = 0; gint r; @@ -482,6 +483,7 @@ write_keys (sqlite3 *db, const gchar *col_name = get_column_name_from_key_id (key_id); if (!col_name) { g_warning ("Key %u is not supported for writing, ignoring...", key_id); + failed_keys = g_list_prepend (failed_keys, GRLKEYID_TO_POINTER (key_id)); } else { supported_keys++; } @@ -510,6 +512,8 @@ write_keys (sqlite3 *db, if (!r) { g_warning ("Failed to update metadata for '%s - %s': %s", source_id, media_id, sqlite3_errmsg (db)); + g_list_free (failed_keys); + failed_keys = g_list_copy (sms->keys); *error = g_error_new (GRL_ERROR, GRL_ERROR_SET_METADATA_FAILED, "Failed to update metadata"); @@ -529,6 +533,8 @@ write_keys (sqlite3 *db, if (!r) { g_warning ("Failed to update metadata for '%s - %s': %s", source_id, media_id, sqlite3_errmsg (db)); + g_list_free (failed_keys); + failed_keys = g_list_copy (sms->keys); *error = g_error_new (GRL_ERROR, GRL_ERROR_SET_METADATA_FAILED, "Failed to update metadata"); @@ -537,6 +543,7 @@ write_keys (sqlite3 *db, done: g_list_free (col_names); + return failed_keys; } /* ================== API Implementation ================ */ @@ -643,6 +650,7 @@ grl_metadata_store_source_set_metadata (GrlMetadataSource *source, const gchar *media_id, *source_id; GError *error = NULL; + GList *failed_keys = NULL; source_id = grl_media_get_source (sms->media); media_id = grl_media_get_id (sms->media); @@ -653,20 +661,21 @@ grl_metadata_store_source_set_metadata (GrlMetadataSource *source, error = g_error_new (GRL_ERROR, GRL_ERROR_SET_METADATA_FAILED, "source-id not available, cannot update metadata."); - return; + failed_keys = g_list_copy (sms->keys); } else { /* Special case for root categories */ if (!media_id) { media_id = ""; } - write_keys (GRL_METADATA_STORE_SOURCE (source)->priv->db, - source_id, media_id, sms, &error); + failed_keys = write_keys (GRL_METADATA_STORE_SOURCE (source)->priv->db, + source_id, media_id, sms, &error); } - sms->callback (sms->source, sms->media, sms->user_data, error); + sms->callback (sms->source, sms->media, failed_keys, sms->user_data, error); if (error) { g_error_free (error); } + g_list_free (failed_keys); } -- cgit v1.2.1 From 0b423a38b87ca2efd70d4576bfefcf382df4953b Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Thu, 11 Mar 2010 10:59:32 +0100 Subject: [test] Adapted to changes in set_metadata() callback to accept a list of failed keys (if any). --- test/main.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/test/main.c b/test/main.c index 96e4269..6d6e5b0 100644 --- a/test/main.c +++ b/test/main.c @@ -182,12 +182,16 @@ resolve_cb (GrlMetadataSource *source, static void set_cb (GrlMetadataSource *source, GrlMedia *media, + GList *failed_keys, gpointer user_data, const GError *error) { if (error) { g_critical ("Error: %s", error->message); } + if (failed_keys) { + g_warning ("Some keys could not be updated!"); + } } gint @@ -369,7 +373,8 @@ main (void) GList *keys_to_write = grl_metadata_key_list_new (GRL_METADATA_KEY_PLAY_COUNT, GRL_METADATA_KEY_RATING, GRL_METADATA_KEY_LAST_POSITION, - GRL_METADATA_KEY_LAST_PLAYED, NULL); + GRL_METADATA_KEY_LAST_PLAYED, + NULL); grl_metadata_source_set_metadata (metadata_store, media, keys_to_write, set_cb, NULL); } -- cgit v1.2.1 From da6d3880769aafe2566e7a73abcd66a46f15563f Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Thu, 11 Mar 2010 13:14:22 +0100 Subject: [fake-metadata] Added support for faking set_metadata() operations. --- src/fake-metadata/grl-fake-metadata.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/fake-metadata/grl-fake-metadata.c b/src/fake-metadata/grl-fake-metadata.c index 20bf1af..61acbf8 100644 --- a/src/fake-metadata/grl-fake-metadata.c +++ b/src/fake-metadata/grl-fake-metadata.c @@ -49,11 +49,16 @@ static GrlFakeMetadataSource *grl_fake_metadata_source_new (void); static void grl_fake_metadata_source_resolve (GrlMetadataSource *source, GrlMetadataSourceResolveSpec *rs); +static void grl_fake_metadata_source_set_metadata (GrlMetadataSource *source, + GrlMetadataSourceSetMetadataSpec *sms); + static const GList *grl_fake_metadata_source_supported_keys (GrlMetadataSource *source); static const GList *grl_fake_metadata_source_key_depends (GrlMetadataSource *source, GrlKeyID key_id); +static const GList *grl_fake_metadata_source_writable_keys (GrlMetadataSource *source); + gboolean grl_fake_metadata_source_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, const GrlConfig *config); @@ -104,6 +109,8 @@ grl_fake_metadata_source_class_init (GrlFakeMetadataSourceClass * klass) metadata_class->supported_keys = grl_fake_metadata_source_supported_keys; metadata_class->key_depends = grl_fake_metadata_source_key_depends; metadata_class->resolve = grl_fake_metadata_source_resolve; + metadata_class->set_metadata = grl_fake_metadata_source_set_metadata; + metadata_class->writable_keys = grl_fake_metadata_source_writable_keys; } static void @@ -202,6 +209,19 @@ grl_fake_metadata_source_key_depends (GrlMetadataSource *source, return NULL; } +static const GList * +grl_fake_metadata_source_writable_keys (GrlMetadataSource *source) +{ + static GList *keys = NULL; + if (!keys) { + keys = grl_metadata_key_list_new (GRL_METADATA_KEY_ALBUM, + GRL_METADATA_KEY_ARTIST, + GRL_METADATA_KEY_GENRE, + NULL); + } + return keys; +} + static void grl_fake_metadata_source_resolve (GrlMetadataSource *source, GrlMetadataSourceResolveSpec *rs) @@ -219,3 +239,12 @@ grl_fake_metadata_source_resolve (GrlMetadataSource *source, rs->callback (source, rs->media, rs->user_data, NULL); } + +static void +grl_fake_metadata_source_set_metadata (GrlMetadataSource *source, + GrlMetadataSourceSetMetadataSpec *sms) +{ + g_debug ("grl_fake_metadata_source_set_metadata"); + g_debug (" Faking set metadata for %d keys!", g_list_length (sms->keys)); + sms->callback (sms->source, sms->media, NULL, sms->user_data, NULL); +} -- cgit v1.2.1 From d178bf0506df5e122c2f59ce56b83ebc5d87731c Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Thu, 11 Mar 2010 13:14:54 +0100 Subject: [test] Modify the set_metadata() test to consider 3 cases: - writable keys supported by the target source. - writable keys supported by other sources than the target. - non writable keys. --- test/main.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test/main.c b/test/main.c index 6d6e5b0..5c3666f 100644 --- a/test/main.c +++ b/test/main.c @@ -187,10 +187,8 @@ set_cb (GrlMetadataSource *source, const GError *error) { if (error) { - g_critical ("Error: %s", error->message); - } - if (failed_keys) { - g_warning ("Some keys could not be updated!"); + g_critical ("%s: %d keys not written", + error->message, g_list_length (failed_keys)); } } @@ -373,7 +371,10 @@ main (void) GList *keys_to_write = grl_metadata_key_list_new (GRL_METADATA_KEY_PLAY_COUNT, GRL_METADATA_KEY_RATING, GRL_METADATA_KEY_LAST_POSITION, + GRL_METADATA_KEY_ALBUM, GRL_METADATA_KEY_LAST_PLAYED, + GRL_METADATA_KEY_TITLE, + GRL_METADATA_KEY_GENRE, NULL); grl_metadata_source_set_metadata (metadata_store, media, keys_to_write, set_cb, NULL); } -- cgit v1.2.1 From 90daaad5701b4d44e444b2e30fae193ed72c0cf4 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Fri, 12 Mar 2010 09:05:27 +0100 Subject: [test] Adapted set_metadata() test to API changes. --- test/main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/main.c b/test/main.c index 5c3666f..857b416 100644 --- a/test/main.c +++ b/test/main.c @@ -376,7 +376,8 @@ main (void) GRL_METADATA_KEY_TITLE, GRL_METADATA_KEY_GENRE, NULL); - grl_metadata_source_set_metadata (metadata_store, media, keys_to_write, set_cb, NULL); + grl_metadata_source_set_metadata (metadata_store, media, keys_to_write, + GRL_WRITE_FULL, set_cb, NULL); } g_debug ("Running main loop"); -- cgit v1.2.1 From 959ec3c61ea35a08e99be40a4338d5c776b2f6db Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Fri, 12 Mar 2010 10:21:20 +0100 Subject: [tests] Do not assert if fake-metadata plugin is not available. Also, added podcasts and bookmarks plugins. --- test/main.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/test/main.c b/test/main.c index 857b416..32de62c 100644 --- a/test/main.c +++ b/test/main.c @@ -251,6 +251,10 @@ main (void) "../src/flickr/.libs/libgrlflickr.so"); grl_plugin_registry_load (registry, "../src/metadata-store/.libs/libgrlmetadatastore.so"); + grl_plugin_registry_load (registry, + "../src/bookmarks/.libs/libgrlbookmarks.so"); + grl_plugin_registry_load (registry, + "../src/podcasts/.libs/libgrlpodcasts.so"); g_debug ("Obtaining sources"); @@ -290,24 +294,34 @@ main (void) (GrlMetadataSource *) grl_plugin_registry_lookup_source (registry, "grl-metadata-store"); + GrlMediaSource *bookmarks = + (GrlMediaSource *) grl_plugin_registry_lookup_source (registry, + "grl-bookmarks"); + + GrlMediaSource *podcasts = + (GrlMediaSource *) grl_plugin_registry_lookup_source (registry, + "grl-podcasts"); + g_assert (youtube); g_assert (fs); g_assert (jamendo); g_assert (shoutcast); g_assert (apple_trailers); - g_assert (fake); g_assert (lastfm); g_assert (metadata_store); - + g_assert (bookmarks); + g_assert (podcasts); g_debug ("Supported operations"); print_supported_ops (GRL_METADATA_SOURCE (youtube)); print_supported_ops (GRL_METADATA_SOURCE (fs)); - print_supported_ops (GRL_METADATA_SOURCE (flickr)); + if (flickr) print_supported_ops (GRL_METADATA_SOURCE (flickr)); print_supported_ops (GRL_METADATA_SOURCE (jamendo)); print_supported_ops (GRL_METADATA_SOURCE (apple_trailers)); print_supported_ops (GRL_METADATA_SOURCE (shoutcast)); - print_supported_ops (fake); + if (fake) print_supported_ops (fake); + print_supported_ops (GRL_METADATA_SOURCE (podcasts)); + print_supported_ops (GRL_METADATA_SOURCE (bookmarks)); print_supported_ops (lastfm); print_supported_ops (metadata_store); -- cgit v1.2.1 From a7660f68095497b5b09d09e497a07f5194c0bc95 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Fri, 12 Mar 2010 10:23:01 +0100 Subject: Disabled fake-metadata plugin by default, use --enable-fakemetadata to enable from now on. --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 0ce564f..7f261e7 100644 --- a/configure.ac +++ b/configure.ac @@ -149,8 +149,8 @@ AM_CONDITIONAL([DEBUG], [test "x$enable_debug" = "xyes"]) AC_ARG_ENABLE(fakemetadata, AC_HELP_STRING([--enable-fakemetadata], - [enable Fake Metadata plugin (default: yes)]),, - [enable_fakemetadata=yes]) + [enable Fake Metadata plugin (default: no)]),, + [enable_fakemetadata=no]) AM_CONDITIONAL([FAKEMETADATA_PLUGIN], [test "x$enable_fakemetadata" = "xyes"]) GRL_PLUGINS_ALL="$GRL_PLUGINS_ALL fakemetadata" -- cgit v1.2.1 From 7a165364685c89f41f54a8a9b1a0a31514836540 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Fri, 12 Mar 2010 11:27:04 +0100 Subject: Adapted all plugins to new configuration API. --- src/apple-trailers/grl-apple-trailers.c | 4 ++-- src/bookmarks/grl-bookmarks.c | 2 +- src/fake-metadata/grl-fake-metadata.c | 4 ++-- src/filesystem/grl-filesystem.c | 4 ++-- src/flickr/grl-flickr.c | 15 ++++++++++++--- src/jamendo/grl-jamendo.c | 4 ++-- src/lastfm-albumart/grl-lastfm-albumart.c | 4 ++-- src/metadata-store/grl-metadata-store.c | 4 ++-- src/podcasts/grl-podcasts.c | 2 +- src/shoutcast/grl-shoutcast.c | 4 ++-- src/upnp/grl-upnp.c | 4 ++-- src/youtube/grl-youtube.c | 4 ++-- 12 files changed, 32 insertions(+), 23 deletions(-) diff --git a/src/apple-trailers/grl-apple-trailers.c b/src/apple-trailers/grl-apple-trailers.c index 173015c..37afc4d 100644 --- a/src/apple-trailers/grl-apple-trailers.c +++ b/src/apple-trailers/grl-apple-trailers.c @@ -74,7 +74,7 @@ static GrlAppleTrailersSource *grl_apple_trailers_source_new (void); gboolean grl_apple_trailers_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config); + GList *configs); static const GList *grl_apple_trailers_source_supported_keys (GrlMetadataSource *source); @@ -89,7 +89,7 @@ static void grl_apple_trailers_source_cancel (GrlMediaSource *source, gboolean grl_apple_trailers_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config) + GList *configs) { g_debug ("apple_trailers_plugin_init\n"); diff --git a/src/bookmarks/grl-bookmarks.c b/src/bookmarks/grl-bookmarks.c index 1b207c7..e341288 100644 --- a/src/bookmarks/grl-bookmarks.c +++ b/src/bookmarks/grl-bookmarks.c @@ -178,7 +178,7 @@ static void grl_bookmarks_source_remove (GrlMediaSource *source, static gboolean grl_bookmarks_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config) + GList *configs) { g_debug ("grl_bookmarks_plugin_init\n"); diff --git a/src/fake-metadata/grl-fake-metadata.c b/src/fake-metadata/grl-fake-metadata.c index 61acbf8..25e0e17 100644 --- a/src/fake-metadata/grl-fake-metadata.c +++ b/src/fake-metadata/grl-fake-metadata.c @@ -61,7 +61,7 @@ static const GList *grl_fake_metadata_source_writable_keys (GrlMetadataSource *s gboolean grl_fake_metadata_source_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config); + GList *configs); /* =================== GrlFakeMetadata Plugin =============== */ @@ -69,7 +69,7 @@ gboolean grl_fake_metadata_source_plugin_init (GrlPluginRegistry *registry, gboolean grl_fake_metadata_source_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config) + GList *configs) { g_debug ("grl_fake_metadata_source_plugin_init"); GrlFakeMetadataSource *source = grl_fake_metadata_source_new (); diff --git a/src/filesystem/grl-filesystem.c b/src/filesystem/grl-filesystem.c index 55796be..7ad140d 100644 --- a/src/filesystem/grl-filesystem.c +++ b/src/filesystem/grl-filesystem.c @@ -80,7 +80,7 @@ static GrlFilesystemSource *grl_filesystem_source_new (void); gboolean grl_filesystem_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config); + GList *configs); static const GList *grl_filesystem_source_supported_keys (GrlMetadataSource *source); @@ -96,7 +96,7 @@ static void grl_filesystem_source_browse (GrlMediaSource *source, gboolean grl_filesystem_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config) + GList *configs) { g_debug ("filesystem_plugin_init\n"); diff --git a/src/flickr/grl-flickr.c b/src/flickr/grl-flickr.c index b00c930..11ac1e3 100644 --- a/src/flickr/grl-flickr.c +++ b/src/flickr/grl-flickr.c @@ -71,7 +71,7 @@ static GrlFlickrSource *grl_flickr_source_new (void); gboolean grl_flickr_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config); + GList *configs); static const GList *grl_flickr_source_supported_keys (GrlMetadataSource *source); @@ -86,19 +86,28 @@ static void grl_flickr_source_search (GrlMediaSource *source, gboolean grl_flickr_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config) + GList *configs) { const gchar *flickr_key; const gchar *flickr_secret; const gchar *flickr_token; + const GrlConfig *config; + gint config_count; g_debug ("flickr_plugin_init\n"); - if (!config) { + if (!configs) { g_warning ("Missing configuration"); return FALSE; } + config_count = g_list_length (configs); + if (config_count > 1) { + g_warning ("Provided %d configs, but will only use one", config_count); + } + + config = GRL_CONFIG (configs->data); + flickr_key = grl_config_get_api_key (config); flickr_token = grl_config_get_api_token (config); flickr_secret = grl_config_get_api_secret (config); diff --git a/src/jamendo/grl-jamendo.c b/src/jamendo/grl-jamendo.c index afbed5c..fef13c5 100644 --- a/src/jamendo/grl-jamendo.c +++ b/src/jamendo/grl-jamendo.c @@ -142,7 +142,7 @@ static GrlJamendoSource *grl_jamendo_source_new (void); gboolean grl_jamendo_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config); + GList *configs); static const GList *grl_jamendo_source_supported_keys (GrlMetadataSource *source); @@ -166,7 +166,7 @@ static void grl_jamendo_source_cancel (GrlMediaSource *source, gboolean grl_jamendo_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config) + GList *configs) { g_debug ("jamendo_plugin_init\n"); diff --git a/src/lastfm-albumart/grl-lastfm-albumart.c b/src/lastfm-albumart/grl-lastfm-albumart.c index 4dc911d..40bfa7e 100644 --- a/src/lastfm-albumart/grl-lastfm-albumart.c +++ b/src/lastfm-albumart/grl-lastfm-albumart.c @@ -70,7 +70,7 @@ static const GList *grl_lastfm_albumart_source_key_depends (GrlMetadataSource *s gboolean grl_lastfm_albumart_source_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config); + GList *configs); /* =================== Last.FM-AlbumArt Plugin =============== */ @@ -78,7 +78,7 @@ gboolean grl_lastfm_albumart_source_plugin_init (GrlPluginRegistry *registry, gboolean grl_lastfm_albumart_source_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config) + GList *configs) { g_debug ("grl_lastfm_albumart_source_plugin_init"); GrlLastfmAlbumartSource *source = grl_lastfm_albumart_source_new (); diff --git a/src/metadata-store/grl-metadata-store.c b/src/metadata-store/grl-metadata-store.c index 1ee67ec..0899fbf 100644 --- a/src/metadata-store/grl-metadata-store.c +++ b/src/metadata-store/grl-metadata-store.c @@ -104,7 +104,7 @@ static const GList *grl_metadata_store_source_writable_keys (GrlMetadataSource * gboolean grl_metadata_store_source_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config); + GList *configs); /* =================== GrlMetadataStore Plugin =============== */ @@ -112,7 +112,7 @@ gboolean grl_metadata_store_source_plugin_init (GrlPluginRegistry *registry, gboolean grl_metadata_store_source_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config) + GList *configs) { g_debug ("grl_metadata_store_source_plugin_init"); GrlMetadataStoreSource *source = grl_metadata_store_source_new (); diff --git a/src/podcasts/grl-podcasts.c b/src/podcasts/grl-podcasts.c index f5cdff2..12ee7ee 100644 --- a/src/podcasts/grl-podcasts.c +++ b/src/podcasts/grl-podcasts.c @@ -237,7 +237,7 @@ static void grl_podcasts_source_remove (GrlMediaSource *source, static gboolean grl_podcasts_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config) + GList *configs) { g_debug ("podcasts_plugin_init\n"); diff --git a/src/shoutcast/grl-shoutcast.c b/src/shoutcast/grl-shoutcast.c index bf21be7..ea1ddc5 100644 --- a/src/shoutcast/grl-shoutcast.c +++ b/src/shoutcast/grl-shoutcast.c @@ -86,7 +86,7 @@ static GrlShoutcastSource *grl_shoutcast_source_new (void); gboolean grl_shoutcast_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config); + GList *configs); static const GList *grl_shoutcast_source_supported_keys (GrlMetadataSource *source); @@ -107,7 +107,7 @@ static void grl_shoutcast_source_cancel (GrlMediaSource *source, gboolean grl_shoutcast_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config) + GList *configs) { g_debug ("shoutcast_plugin_init\n"); diff --git a/src/upnp/grl-upnp.c b/src/upnp/grl-upnp.c index 07f4f48..af2166b 100644 --- a/src/upnp/grl-upnp.c +++ b/src/upnp/grl-upnp.c @@ -103,7 +103,7 @@ static GrlUpnpSource *grl_upnp_source_new (const gchar *id, const gchar *name); gboolean grl_upnp_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config); + GList *configs); static void grl_upnp_source_finalize (GObject *plugin); @@ -137,7 +137,7 @@ static GHashTable *filter_key_mapping = NULL; gboolean grl_upnp_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config) + GList *configs) { GError *error = NULL; GUPnPContext *context; diff --git a/src/youtube/grl-youtube.c b/src/youtube/grl-youtube.c index 83abd82..b88f6a6 100644 --- a/src/youtube/grl-youtube.c +++ b/src/youtube/grl-youtube.c @@ -190,7 +190,7 @@ static GrlYoutubeSource *grl_youtube_source_new (void); gboolean grl_youtube_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config); + GList *configs); static const GList *grl_youtube_source_supported_keys (GrlMetadataSource *source); @@ -243,7 +243,7 @@ CategoryInfo *categories_dir = NULL; gboolean grl_youtube_plugin_init (GrlPluginRegistry *registry, const GrlPluginInfo *plugin, - const GrlConfig *config) + GList *config) { g_debug ("youtube_plugin_init\n"); -- cgit v1.2.1 From 18bc03318242374bd31e02010139a7bfa8d0b864 Mon Sep 17 00:00:00 2001 From: "Juan A. Suarez Romero" Date: Fri, 12 Mar 2010 17:21:33 +0100 Subject: Fix --enable-flickr option It was --flickr, while we meant --enable-flickr. --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 7f261e7..e6abcff 100644 --- a/configure.ac +++ b/configure.ac @@ -321,7 +321,7 @@ fi # ---------------------------------------------------------- AC_ARG_ENABLE(flickr, - AC_HELP_STRING([--flickr], + AC_HELP_STRING([--enable-flickr], [enable Flickr plugin (default: auto)]), [ case "$enableval" in -- cgit v1.2.1 From b6a2a65689f0563d0990bbdb8fa57d297d61329f Mon Sep 17 00:00:00 2001 From: "Juan A. Suarez Romero" Date: Fri, 12 Mar 2010 17:13:52 +0100 Subject: Bumped version to 0.1.4 --- NEWS | 23 +++++++++++++++++++++-- configure.ac | 4 ++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index d5a49f9..a63094c 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,23 @@ -New in 0.1.3 +NEW in 0.1.4 +============ + + * General + * Updates related with changes in Grilo API + + * Bookmarks + * Small improvements + + * Flickr plugin + * Use the new configuration system + + * Metadata-Store plugin + * New plugin where to save metadata + + * Podcasts plugin + * Small improvements + + +NEW in 0.1.3 ============ * General @@ -10,7 +29,7 @@ New in 0.1.3 * Bookmarks plugin * Small improvements - * Podcats plugin + * Podcasts plugin * Small improvements * Shoutcast plugin diff --git a/configure.ac b/configure.ac index e6abcff..a237e54 100644 --- a/configure.ac +++ b/configure.ac @@ -6,7 +6,7 @@ # Copyright (C) 2010 Igalia S.L.. All rights reserved. m4_define([prj_name], [grilo-plugins]) -m4_define([prj_version], [0.1.3]) +m4_define([prj_version], [0.1.4]) AC_INIT([prj_name], [prj_version]) @@ -65,7 +65,7 @@ AC_DEFINE_UNQUOTED(GRL_PLUGINS_DIR, "$GRL_PLUGINS_DIR", [Plugins directory]) PKG_CHECK_MODULES(DEPS, glib-2.0 \ gobject-2.0 \ gmodule-2.0 \ - grilo-0.1 >= 0.1.3) + grilo-0.1 >= 0.1.4) AC_SUBST(DEPS_CFLAGS) AC_SUBST(DEPS_LIBS) -- cgit v1.2.1