コード例 #1
0
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;
  }
}
コード例 #2
0
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;
  }
}
コード例 #3
0
/* 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;
  }
}
コード例 #4
0
ファイル: mex-grilo.c プロジェクト: jpwhiting/media-explorer
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;
  }
}