summaryrefslogtreecommitdiff
path: root/src/tracker-extract/tracker-extract-flac.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tracker-extract/tracker-extract-flac.c')
-rw-r--r--src/tracker-extract/tracker-extract-flac.c55
1 files changed, 52 insertions, 3 deletions
diff --git a/src/tracker-extract/tracker-extract-flac.c b/src/tracker-extract/tracker-extract-flac.c
index 7938be909..f13b3e5e7 100644
--- a/src/tracker-extract/tracker-extract-flac.c
+++ b/src/tracker-extract/tracker-extract-flac.c
@@ -326,8 +326,57 @@ extract_flac (const gchar *uri,
add_tuple (metadata, "nie:title", fd.title);
add_tuple (metadata, "nmm:trackNumber", fd.tracknumber);
- /* FIXME: This is commented out in vorbis extractor... */
- add_tuple (metadata, "nmm:setNumber", fd.discno);
+ if (fd.discno && fd.album && album_uri) {
+ gchar *album_disc_uri;
+
+ album_disc_uri = tracker_sparql_escape_uri_printf ("urn:album-disc:%s:Disc%d",
+ fd.album, atoi(fd.discno));
+
+ tracker_sparql_builder_insert_open (preupdate, NULL);
+ tracker_sparql_builder_subject_iri (preupdate, album_disc_uri);
+ tracker_sparql_builder_predicate (preupdate, "a");
+ tracker_sparql_builder_object (preupdate, "nmm:MusicAlbumDisc");
+ tracker_sparql_builder_insert_close (preupdate);
+
+ tracker_sparql_builder_delete_open (preupdate, NULL);
+ tracker_sparql_builder_subject_iri (preupdate, album_disc_uri);
+ tracker_sparql_builder_predicate (preupdate, "nmm:setNumber");
+ tracker_sparql_builder_object_variable (preupdate, "unknown");
+ tracker_sparql_builder_delete_close (preupdate);
+ tracker_sparql_builder_where_open (preupdate);
+ tracker_sparql_builder_subject_iri (preupdate, album_disc_uri);
+ tracker_sparql_builder_predicate (preupdate, "nmm:setNumber");
+ tracker_sparql_builder_object_variable (preupdate, "unknown");
+ tracker_sparql_builder_where_close (preupdate);
+
+ tracker_sparql_builder_insert_open (preupdate, NULL);
+ tracker_sparql_builder_subject_iri (preupdate, album_disc_uri);
+ tracker_sparql_builder_predicate (preupdate, "nmm:setNumber");
+ tracker_sparql_builder_object_int64 (preupdate, atoi (fd.discno));
+ tracker_sparql_builder_insert_close (preupdate);
+
+ tracker_sparql_builder_delete_open (preupdate, NULL);
+ tracker_sparql_builder_subject_iri (preupdate, album_disc_uri);
+ tracker_sparql_builder_predicate (preupdate, "nmm:albumDiscAlbum");
+ tracker_sparql_builder_object_variable (preupdate, "unknown");
+ tracker_sparql_builder_delete_close (preupdate);
+ tracker_sparql_builder_where_open (preupdate);
+ tracker_sparql_builder_subject_iri (preupdate, album_disc_uri);
+ tracker_sparql_builder_predicate (preupdate, "nmm:albumDiscAlbum");
+ tracker_sparql_builder_object_variable (preupdate, "unknown");
+ tracker_sparql_builder_where_close (preupdate);
+
+ tracker_sparql_builder_insert_open (preupdate, NULL);
+ tracker_sparql_builder_subject_iri (preupdate, album_disc_uri);
+ tracker_sparql_builder_predicate (preupdate, "nmm:albumDiscAlbum");
+ tracker_sparql_builder_object_iri (preupdate, album_uri);
+ tracker_sparql_builder_insert_close (preupdate);
+
+ tracker_sparql_builder_predicate (metadata, "nmm:musicAlbumDisk");
+ tracker_sparql_builder_object_iri (metadata, album_disc_uri);
+
+ g_free (album_disc_uri);
+ }
/* FIXME: Trackgain/Trackpeakgain: commented out in vorbis */
@@ -368,7 +417,7 @@ extract_flac (const gchar *uri,
tracker_sparql_builder_predicate (metadata, "nfo:duration");
tracker_sparql_builder_object_int64 (metadata,
stream->data.stream_info.total_samples /
- stream->data.stream_info.sample_rate);
+ stream->data.stream_info.sample_rate);
}
g_free (fd.artist);