[grilo-plugins/wip/jfelder/tracker-support-genre] tracker: Add genre key mapping
- From: Jean Felder <jfelder src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [grilo-plugins/wip/jfelder/tracker-support-genre] tracker: Add genre key mapping
- Date: Sun, 29 Mar 2020 20:00:30 +0000 (UTC)
commit 67233cb8fb56efabf51b1a906deede38d669287b
Author: Jean Felder <jfelder src gnome org>
Date: Sun Mar 29 21:54:33 2020 +0200
tracker: Add genre key mapping
Map nfo:genre to GRL_METADATA_KEY_ALBUM_GENRE.
Extract multiple genres if a common delimiter character (comma, slash
or semi-colon) is used.
src/tracker/grl-tracker-utils.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
---
diff --git a/src/tracker/grl-tracker-utils.c b/src/tracker/grl-tracker-utils.c
index 14cea8af..191220ac 100644
--- a/src/tracker/grl-tracker-utils.c
+++ b/src/tracker/grl-tracker-utils.c
@@ -107,6 +107,30 @@ set_favourite (TrackerSparqlCursor *cursor,
grl_data_set_boolean (GRL_DATA (media), key, is_favourite);
}
+static void
+set_genre (TrackerSparqlCursor *cursor,
+ gint column,
+ GrlMedia *media,
+ GrlKeyID key)
+{
+ /* Tracker concatenetes multiple genres with a comma (vorbis or flac files).
+ ID3 (mp3 files) does not support multiple genres. A usual workaround is
+ to use a delimiter character such as a semi-colon or slashes.
+ */
+ const gchar *str = tracker_sparql_cursor_get_string (cursor, column, NULL);
+ gchar **genres = g_strsplit_set (str, ",;/", -1);
+
+ if (genres) {
+ gint i = 0;
+ gchar *genre = genres[i];
+ while (genre != NULL) {
+ grl_media_add_genre (media, g_strstrip (genre));
+ genre = genres[++i];
+ }
+ }
+ g_strfreev (genres);
+}
+
static void
set_title_from_filename (TrackerSparqlCursor *cursor,
gint column,
@@ -285,6 +309,12 @@ grl_tracker_setup_key_mappings (void)
"nmm:artistName(nmm:composer(?urn))",
"audio");
+ insert_key_mapping_with_setter (GRL_METADATA_KEY_GENRE,
+ "nfo:genre",
+ "nfo:genre(?urn)",
+ "audio",
+ set_genre);
+
insert_key_mapping (GRL_METADATA_KEY_SIZE,
NULL,
"nfo:fileSize(?urn)",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]