static void set_metadata_to_media (GrlMedia *media, MexContentMetadata mex_key, const gchar *value) { int ival; float fval; GrlKeyID grl_key = _get_grl_key_from_mex (mex_key); if (!grl_key) { g_warning ("No grilo key to handle %s", mex_content_metadata_key_to_string (mex_key)); return; } switch (G_PARAM_SPEC (grl_key)->value_type) { case G_TYPE_STRING: grl_data_set_string (GRL_DATA (media), grl_key, value); break; case G_TYPE_INT: ival = atoi (value); grl_data_set_int (GRL_DATA (media), grl_key, ival); break; case G_TYPE_FLOAT: fval = atof (value); grl_data_set_float (GRL_DATA (media), grl_key, fval); 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; } }
void mex_grilo_set_media_content_metadata (GrlMedia *media, MexContentMetadata mex_key, const gchar *value) { int ival; float fval; GrlKeyID grl_key; g_return_if_fail (GRL_IS_MEDIA (media)); g_return_if_fail (mex_key < MEX_CONTENT_METADATA_LAST_ID); grl_key = _get_grl_key_from_mex (mex_key); if (!grl_key) { g_warning ("No grilo key to handle %s", mex_content_metadata_key_to_string (mex_key)); return; } switch (grl_metadata_key_get_type (grl_key)) { case G_TYPE_STRING: grl_data_set_string (GRL_DATA (media), grl_key, value); break; case G_TYPE_INT: ival = atoi (value); grl_data_set_int (GRL_DATA (media), grl_key, ival); break; case G_TYPE_FLOAT: fval = atof (value); grl_data_set_float (GRL_DATA (media), grl_key, fval); 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; } }