mirror of
https://github.com/dguglielmi/sunny-overlay.git
synced 2025-12-06 11:42:40 +01:00
86 lines
3.1 KiB
Diff
86 lines
3.1 KiB
Diff
From ff9afc6bb2d6515c773a77b1d8ed1a985a635b17 Mon Sep 17 00:00:00 2001
|
|
From: Bastien Nocera <hadess@hadess.net>
|
|
Date: Wed, 26 Nov 2014 15:45:39 +0100
|
|
Subject: 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
|
|
|
|
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 {
|
|
--
|
|
cgit v0.10.2
|
|
|