summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2020-05-24 16:07:06 +0200
committerJean Felder <jean.felder@gmail.com>2020-08-21 15:05:10 +0000
commit87d12220753c88bc7365a9ed300522ec4c3693f9 (patch)
treec89252ce21765aa73e46f87b0ba43f476200385f
parente97c1575444b9054d3aeb2ff5a11603acd7a19a8 (diff)
downloadgrilo-plugins-87d12220753c88bc7365a9ed300522ec4c3693f9.tar.gz
tracker3: Change title-from-filename handling
Set it afterwards, instead of relying on a second for the same metadata key. This is the only place where this is needed and can be easily handled in other ways.
-rw-r--r--src/tracker3/grl-tracker-source-api.c26
-rw-r--r--src/tracker3/grl-tracker-utils.c21
2 files changed, 16 insertions, 31 deletions
diff --git a/src/tracker3/grl-tracker-source-api.c b/src/tracker3/grl-tracker-source-api.c
index 54c99f4..1114374 100644
--- a/src/tracker3/grl-tracker-source-api.c
+++ b/src/tracker3/grl-tracker-source-api.c
@@ -84,9 +84,13 @@ static void
set_title_from_filename (GrlMedia *media)
{
const gchar *url;
- gchar *path, *display_name, *ext, *title;
+ gchar *path, *display_name, *ext, *title = NULL;
guint suffix_len;
+ /* Prefer the real title */
+ if (grl_media_get_title (media))
+ return;
+
url = grl_media_get_url (media);
if (url == NULL)
return;
@@ -97,19 +101,21 @@ set_title_from_filename (GrlMedia *media)
display_name = g_filename_display_basename (path);
g_free (path);
ext = strrchr (display_name, '.');
- if (!ext)
- goto out;
+ if (ext) {
+ suffix_len = strlen (ext);
+ if (suffix_len != 4 && suffix_len != 5)
+ goto out;
- suffix_len = strlen (ext);
- if (suffix_len != 4 && suffix_len != 5)
- goto out;
+ title = g_strndup (display_name, ext - display_name);
+ } else {
+ title = g_strdup (display_name);
+ }
- 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);
+ grl_data_set_string (GRL_DATA (media), GRL_METADATA_KEY_TITLE, title);
+ grl_data_set_boolean (GRL_DATA (media), GRL_METADATA_KEY_TITLE_FROM_FILENAME, TRUE);
out:
+ g_free (title);
g_free (display_name);
}
diff --git a/src/tracker3/grl-tracker-utils.c b/src/tracker3/grl-tracker-utils.c
index 0031096..4550a21 100644
--- a/src/tracker3/grl-tracker-utils.c
+++ b/src/tracker3/grl-tracker-utils.c
@@ -108,19 +108,6 @@ set_favourite (TrackerSparqlCursor *cursor,
}
static void
-set_title_from_filename (TrackerSparqlCursor *cursor,
- gint column,
- GrlMedia *media,
- GrlKeyID key)
-{
- const gchar *str = tracker_sparql_cursor_get_string (cursor, column, NULL);
- if (key == GRL_METADATA_KEY_TITLE) {
- grl_data_set_boolean (GRL_DATA (media), GRL_METADATA_KEY_TITLE_FROM_FILENAME, TRUE);
- grl_media_set_title (media, str);
- }
-}
-
-static void
set_title (TrackerSparqlCursor *cursor,
gint column,
GrlMedia *media,
@@ -428,14 +415,6 @@ grl_tracker_setup_key_mappings (void)
GRL_TYPE_FILTER_ALL,
set_title);
- insert_key_mapping_with_setter (GRL_METADATA_KEY_TITLE,
- "fileName",
- "nfo:fileName",
- "nfo:fileName(?urn)",
- "file",
- GRL_TYPE_FILTER_ALL,
- set_title_from_filename);
-
insert_key_mapping (GRL_METADATA_KEY_URL,
"url",
"nie:isStoredAs",