diff options
author | Philip Van Hoof <philip@codeminded.be> | 2010-12-03 16:07:02 +0100 |
---|---|---|
committer | Philip Van Hoof <philip@codeminded.be> | 2010-12-09 12:02:21 +0100 |
commit | 2d5ae5828b237056d706d8d4f2c5efc23024caa7 (patch) | |
tree | 8d13832eb0ecf07f5fd51f7c64cdb050851b3d3d | |
parent | 46f884731771559f0779feb4925ccc08cb86daa2 (diff) | |
download | tracker-2d5ae5828b237056d706d8d4f2c5efc23024caa7.tar.gz |
tracker-extract: Make multi-disc albums work in FLAC extractor
-rw-r--r-- | src/tracker-extract/tracker-extract-flac.c | 55 |
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); |