[tracker] tracker-extract: Use albumartist if available
- From: Marinus Schraal <mschraal src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker] tracker-extract: Use albumartist if available
- Date: Mon, 14 Nov 2016 23:15:16 +0000 (UTC)
commit 99e55345d17017ad263fcf5ac5dcda1a4ab66135
Author: Marinus Schraal <mschraal src gnome org>
Date: Fri Oct 28 10:46:57 2016 +0200
tracker-extract: Use albumartist if available
Use albumartist in libav/vorbis/flac (resource-helpers), gstreamer & mp3
extractors if available to be part of the album(-disc) uri. This makes
the uri more unique and tracker better at distinguishing separate albums
and it makes all the extractors behave the same.
https://bugzilla.gnome.org/show_bug.cgi?id=773697
src/libtracker-extract/tracker-resource-helpers.c | 23 ++++++++++-
src/tracker-extract/tracker-extract-gstreamer.c | 43 ++++++++++-----------
src/tracker-extract/tracker-extract-mp3.c | 27 +++++++++++--
3 files changed, 63 insertions(+), 30 deletions(-)
---
diff --git a/src/libtracker-extract/tracker-resource-helpers.c
b/src/libtracker-extract/tracker-resource-helpers.c
index 3041c64..3b49c72 100644
--- a/src/libtracker-extract/tracker-resource-helpers.c
+++ b/src/libtracker-extract/tracker-resource-helpers.c
@@ -248,12 +248,23 @@ tracker_extract_new_music_album_disc (const char *album_title,
TrackerResource *album_artist,
int disc_number)
{
- char *album_uri, *disc_uri;
+ gchar *album_uri, *disc_uri;
+ const gchar *album_artist_name;
+
TrackerResource *album, *album_disc;
g_return_val_if_fail (album_title != NULL, NULL);
- album_uri = tracker_sparql_escape_uri_printf ("urn:album:%s", album_title);
+ album_artist_name = tracker_resource_get_first_string (album_artist,
+ "nmm:artistName");
+
+ if (album_artist != NULL) {
+ album_uri = tracker_sparql_escape_uri_printf ("urn:album:%s:%s",
+ album_title,
+ album_artist_name);
+ } else {
+ album_uri = tracker_sparql_escape_uri_printf ("urn:album:%s", album_title);
+ }
album = tracker_resource_new (album_uri);
tracker_resource_set_uri (album, "rdf:type", "nmm:MusicAlbum");
@@ -261,14 +272,20 @@ tracker_extract_new_music_album_disc (const char *album_title,
if (album_artist != NULL) {
tracker_resource_add_relation (album, "nmm:albumArtist", album_artist);
+ disc_uri = tracker_sparql_escape_uri_printf ("urn:album-disc:%s:%s:Disc%d",
+ album_title,
+ album_artist_name,
+ disc_number);
+ } else {
+ disc_uri = tracker_sparql_escape_uri_printf ("urn:album-disc:%s:Disc%d", album_title,
disc_number);
}
- disc_uri = tracker_sparql_escape_uri_printf ("urn:album-disc:%s:Disc%d", album_title, disc_number);
album_disc = tracker_resource_new (disc_uri);
tracker_resource_set_uri (album_disc, "rdf:type", "nmm:MusicAlbumDisc");
tracker_resource_set_int (album_disc, "nmm:setNumber", disc_number > 0 ? disc_number : 1);
tracker_resource_add_relation (album_disc, "nmm:albumDiscAlbum", album);
+ g_free (album_uri);
g_free (disc_uri);
g_object_unref (album);
diff --git a/src/tracker-extract/tracker-extract-gstreamer.c b/src/tracker-extract/tracker-extract-gstreamer.c
index 41ddf6d..74bbb91 100644
--- a/src/tracker-extract/tracker-extract-gstreamer.c
+++ b/src/tracker-extract/tracker-extract-gstreamer.c
@@ -637,10 +637,9 @@ extractor_maybe_get_album_disc (MetadataExtractor *extractor,
{
TrackerResource *album = NULL, *album_artist = NULL, *album_disc = NULL;
gchar *album_uri, *album_disc_uri;
- gchar *album_artist_name;
- gchar *album_title = NULL;
- gchar *album_artist_temp = NULL;
+ gchar *album_artist_name = NULL;
gchar *track_artist_temp = NULL;
+ gchar *album_title = NULL;
gboolean has_it;
guint volume_number;
@@ -649,17 +648,15 @@ extractor_maybe_get_album_disc (MetadataExtractor *extractor,
if (!album_title)
return NULL;
- gst_tag_list_get_string (tag_list, GST_TAG_ALBUM_ARTIST, &album_artist_temp);
+ gst_tag_list_get_string (tag_list, GST_TAG_ALBUM_ARTIST, &album_artist_name);
gst_tag_list_get_string (tag_list, GST_TAG_ARTIST, &track_artist_temp);
- album_artist_name = g_strdup (tracker_coalesce_strip (2, album_artist_temp, track_artist_temp));
-
- if (album_artist_name != NULL) {
- album_artist = intern_artist (extractor, album_artist_name);
- album_uri = tracker_sparql_escape_uri_printf ("urn:album:%s:%s", album_title,
album_artist_name);
- } else {
- album_uri = tracker_sparql_escape_uri_printf ("urn:album:%s", album_title);
- }
+ if (album_artist_name != NULL) {
+ album_artist = intern_artist (extractor, album_artist_name);
+ album_uri = tracker_sparql_escape_uri_printf ("urn:album:%s:%s", album_title,
album_artist_name);
+ } else {
+ album_uri = tracker_sparql_escape_uri_printf ("urn:album:%s", album_title);
+ }
album = tracker_resource_new (album_uri);
tracker_resource_set_uri (album, "rdf:type", "nmm:MusicAlbum");
@@ -675,15 +672,15 @@ extractor_maybe_get_album_disc (MetadataExtractor *extractor,
has_it = gst_tag_list_get_uint (tag_list, GST_TAG_ALBUM_VOLUME_NUMBER, &volume_number);
- if (album_artist) {
- album_disc_uri = tracker_sparql_escape_uri_printf ("urn:album-disc:%s:%s:Disc%d",
- album_title, album_artist_name,
- has_it ? volume_number : 1);
- } else {
- album_disc_uri = tracker_sparql_escape_uri_printf ("urn:album-disc:%s:Disc%d",
- album_title,
- has_it ? volume_number : 1);
- }
+ if (album_artist) {
+ album_disc_uri = tracker_sparql_escape_uri_printf ("urn:album-disc:%s:%s:Disc%d",
+ album_title, album_artist_name,
+ has_it ? volume_number : 1);
+ } else {
+ album_disc_uri = tracker_sparql_escape_uri_printf ("urn:album-disc:%s:Disc%d",
+ album_title,
+ has_it ? volume_number : 1);
+ }
album_disc = tracker_resource_new (album_disc_uri);
tracker_resource_set_uri (album_disc, "rdf:type", "nmm:MusicAlbumDisc");
@@ -694,11 +691,11 @@ extractor_maybe_get_album_disc (MetadataExtractor *extractor,
set_property_from_gst_tag (album, "nmm:albumPeakGain", extractor->tagcache, GST_TAG_ALBUM_PEAK);
#ifdef HAVE_LIBMEDIAART
- extractor->media_art_artist = album_artist_name;
+ extractor->media_art_artist = g_strdup (tracker_coalesce_strip (2, album_artist_name,
track_artist_temp));
extractor->media_art_title = album_title;
#endif
- g_free (album_artist_temp);
+ g_free (album_artist_name);
g_free (track_artist_temp);
return album_disc;
diff --git a/src/tracker-extract/tracker-extract-mp3.c b/src/tracker-extract/tracker-extract-mp3.c
index bfbafa5..501b175 100644
--- a/src/tracker-extract/tracker-extract-mp3.c
+++ b/src/tracker-extract/tracker-extract-mp3.c
@@ -2456,7 +2456,17 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
}
if (md.album_name) {
- char *album_uri = tracker_sparql_escape_uri_printf ("urn:album:%s", md.album_name);
+ gchar *album_uri;
+
+ if (md.album_artist_name) {
+ album_uri = tracker_sparql_escape_uri_printf ("urn:album:%s:%s",
+ md.album_name,
+ md.album_artist_name);
+ } else {
+ album_uri = tracker_sparql_escape_uri_printf ("urn:album:%s",
+ md.album_name);
+ }
+
md.album = tracker_resource_new (album_uri);
tracker_resource_set_uri (md.album, "rdf:type", "nmm:MusicAlbum");
@@ -2473,6 +2483,8 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
if (md.track_count > 0) {
tracker_resource_set_int (md.album, "nmm:albumTrackCount", md.track_count);
}
+
+ g_free (album_uri);
}
tracker_resource_add_uri (main_resource, "rdf:type", "nmm:MusicPiece");
@@ -2537,9 +2549,16 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
TrackerResource *album_disc;
gchar *album_disc_uri;
- album_disc_uri = tracker_sparql_escape_uri_printf ("urn:album-disc:%s:Disc%d",
- md.album_name,
- md.set_number > 0 ? md.set_number : 1);
+ if (md.album_artist_name) {
+ album_disc_uri = tracker_sparql_escape_uri_printf ("urn:album-disc:%s:%s:Disc%d",
+ md.album_name,
+ md.album_artist_name,
+ md.set_number > 0 ? md.set_number : 1);
+ } else {
+ album_disc_uri = tracker_sparql_escape_uri_printf ("urn:album-disc:%s:Disc%d",
+ md.album_name,
+ md.set_number > 0 ? md.set_number : 1);
+ }
album_disc = tracker_resource_new (album_disc_uri);
tracker_resource_set_uri (album_disc, "rdf:type", "nmm:MusicAlbumDisc");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]