[grilo-plugins] tracker: Correctly set "title-from-filename"
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [grilo-plugins] tracker: Correctly set "title-from-filename"
- Date: Thu, 27 Nov 2014 13:33:32 +0000 (UTC)
commit ff9afc6bb2d6515c773a77b1d8ed1a985a635b17
Author: Bastien Nocera <hadess hadess net>
Date: Wed Nov 26 15:45:39 2014 +0100
tracker: Correctly set "title-from-filename"
Tracker usually provides us with a title that's derived from the
filename. Replicate its process to create a title from a filename
to check if the title is actually set from the filename.
This allows the local-metadata plugin to parse it to remove gunk, and
other plugins to override its throwaway title.
https://bugzilla.gnome.org/show_bug.cgi?id=740756
src/tracker/grl-tracker-source-api.c | 36 ++++++++++++++++++++++++++++++++++
1 files changed, 36 insertions(+), 0 deletions(-)
---
diff --git a/src/tracker/grl-tracker-source-api.c b/src/tracker/grl-tracker-source-api.c
index 8c9fd55..fbc69a3 100644
--- a/src/tracker/grl-tracker-source-api.c
+++ b/src/tracker/grl-tracker-source-api.c
@@ -203,6 +203,39 @@ static GHashTable *grl_tracker_operations;
/**/
static void
+set_title_from_filename (GrlMedia *media)
+{
+ const gchar *url;
+ gchar *path, *display_name, *ext, *title;
+ guint suffix_len;
+
+ url = grl_media_get_url (media);
+ if (url == NULL)
+ return;
+
+ path = g_filename_from_uri (url, NULL, NULL);
+ if (!path)
+ return;
+ display_name = g_filename_display_basename (path);
+ g_free (path);
+ ext = strrchr (display_name, '.');
+ if (!ext)
+ goto out;
+
+ suffix_len = strlen (ext);
+ if (suffix_len != 4 && suffix_len != 5)
+ goto out;
+
+ title = g_strndup (display_name, ext - display_name);
+ if (g_strcmp0 (grl_media_get_title (media), title) == 0)
+ grl_data_set_boolean (GRL_DATA (media), GRL_METADATA_KEY_TITLE_FROM_FILENAME, TRUE);
+ g_free (title);
+
+out:
+ g_free (display_name);
+}
+
+static void
fill_grilo_media_from_sparql (GrlTrackerSource *source,
GrlMedia *media,
TrackerSparqlCursor *cursor,
@@ -402,6 +435,7 @@ get_sparql_type_filter (GrlOperationOptions *options,
fill_grilo_media_from_sparql (GRL_TRACKER_SOURCE (spec->source), \
media, os->cursor, col); \
} \
+ set_title_from_filename (media); \
\
spec->callback (spec->source, \
spec->operation_id, \
@@ -507,6 +541,7 @@ tracker_resolve_cb (GObject *source_object,
fill_grilo_media_from_sparql (GRL_TRACKER_SOURCE (rs->source),
rs->media, cursor, col);
}
+ set_title_from_filename (rs->media);
rs->callback (rs->source, rs->operation_id, rs->media, rs->user_data, NULL);
} else {
@@ -565,6 +600,7 @@ tracker_media_from_uri_cb (GObject *source_object,
fill_grilo_media_from_sparql (GRL_TRACKER_SOURCE (mfus->source),
media, cursor, col);
}
+ set_title_from_filename (media);
mfus->callback (mfus->source, mfus->operation_id, media, mfus->user_data, NULL);
} else {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]