static void gen_prop_insert_string (GString *gstr, tracker_grl_sparql_t *assoc, GrlData *data) { gchar *tmp; switch (GRL_METADATA_KEY_GET_TYPE (assoc->grl_key)) { case G_TYPE_STRING: tmp = g_strescape (grl_data_get_string (data, assoc->grl_key), NULL); g_string_append_printf (gstr, "%s \"%s\"", assoc->sparql_key_attr, tmp); g_free (tmp); break; case G_TYPE_INT: g_string_append_printf (gstr, "%s %i", assoc->sparql_key_attr, grl_data_get_int (data, assoc->grl_key)); break; case G_TYPE_FLOAT: g_string_append_printf (gstr, "%s %f", assoc->sparql_key_attr, grl_data_get_float (data, assoc->grl_key)); break; default: break; } }
static void gen_prop_insert_string (GString *gstr, tracker_grl_sparql_t *assoc, GrlData *data) { gchar *tmp; GType type = GRL_METADATA_KEY_GET_TYPE (assoc->grl_key); switch (type) { case G_TYPE_STRING: tmp = g_strescape (grl_data_get_string (data, assoc->grl_key), NULL); g_string_append_printf (gstr, "%s \"%s\"", assoc->sparql_key_attr, tmp); g_free (tmp); break; case G_TYPE_INT: g_string_append_printf (gstr, "%s %i", assoc->sparql_key_attr, grl_data_get_int (data, assoc->grl_key)); break; case G_TYPE_FLOAT: g_string_append_printf (gstr, "%s %f", assoc->sparql_key_attr, grl_data_get_float (data, assoc->grl_key)); break; case G_TYPE_BOOLEAN: /* Special case for favourite tag, see comment in * grl_tracker_tracker_get_insert_string for more details. */ if (assoc->grl_key == GRL_METADATA_KEY_FAVOURITE) { g_string_append_printf (gstr, "%s nao:predefined-tag-favorite", assoc->sparql_key_attr); } break; default: if (type == G_TYPE_DATE_TIME) { tmp = g_date_time_format (grl_data_get_boxed (data, assoc->grl_key), "%FT%T%:z"); g_string_append_printf (gstr, "%s '%s'", assoc->sparql_key_attr, tmp); g_free (tmp); } break; } }
/* Returns whether to free the value parameter or not. */ static void set_metadata_from_media (MexContent *content, GrlMedia *media, MexContentMetadata mex_key) { gchar *string; const gchar *cstring; GrlKeyID grl_key = _get_grl_key_from_mex (mex_key); gint n; if (!grl_key) return; switch (G_PARAM_SPEC (grl_key)->value_type) { case G_TYPE_STRING: cstring = grl_data_get_string (GRL_DATA (media), grl_key); if (cstring) mex_grilo_program_set_metadata (content, mex_key, cstring); break; case G_TYPE_INT: n = grl_data_get_int (GRL_DATA (media), grl_key); if (n > 0) { string = g_strdup_printf ("%i", n); mex_grilo_program_set_metadata (content, mex_key, string); g_free (string); } break; case G_TYPE_FLOAT: string = g_strdup_printf ("%f", grl_data_get_float (GRL_DATA (media), grl_key)); mex_grilo_program_set_metadata (content, mex_key, string); g_free (string); break; } }
static void set_metadata_from_media (MexContent *content, GrlMedia *media, MexContentMetadata mex_key) { gchar *string; const gchar *cstring; GrlKeyID grl_key = _get_grl_key_from_mex (mex_key); gint n; gint year = 0; if (!grl_key) return; switch (grl_metadata_key_get_type (grl_key)) { case G_TYPE_STRING: cstring = grl_data_get_string (GRL_DATA (media), grl_key); if (cstring) { if (mex_key == MEX_CONTENT_METADATA_TITLE) { gchar *showname = NULL, *title, *season_str; gint season, episode; gchar *replacement; const gchar *mimetype; mimetype = mex_content_get_metadata (content, MEX_CONTENT_METADATA_MIMETYPE); if (!mimetype) mimetype = ""; if (g_str_has_prefix (mimetype, "video/")) { mex_metadata_from_uri (cstring, &title, &showname, &year, &season, &episode); } if (showname) { replacement = g_strdup_printf (_("Episode %d"), episode); } else { GRegex *regex; /* strip off any file extensions */ regex = g_regex_new ("\\.....?$", 0, 0, NULL); replacement = g_regex_replace (regex, cstring, -1, 0, "", 0, NULL); g_regex_unref (regex); } if (!replacement) replacement = g_strdup (cstring); mex_content_set_metadata (content, mex_key, replacement); mex_content_set_metadata (content, MEX_CONTENT_METADATA_SERIES_NAME, showname); season_str = g_strdup_printf (_("Season %d"), season); mex_content_set_metadata (content, MEX_CONTENT_METADATA_SEASON, season_str); g_free (season_str); if (year) { replacement = g_strdup_printf ("%d", year); mex_content_set_metadata (content, MEX_CONTENT_METADATA_YEAR, replacement); g_free (replacement); } } else mex_content_set_metadata (content, mex_key, cstring); } break; case G_TYPE_INT: n = grl_data_get_int (GRL_DATA (media), grl_key); string = g_strdup_printf ("%i", n); mex_content_set_metadata (content, mex_key, string); g_free (string); break; case G_TYPE_FLOAT: string = g_strdup_printf ("%f", grl_data_get_float (GRL_DATA (media), grl_key)); mex_content_set_metadata (content, mex_key, string); g_free (string); break; } }