[tracker/anonymous-file-nodes: 10/26] Fixed bug with nmm:albumTrackCount being set to different values



commit a2eb49b92a295c8086782fb426fc416094176835
Author: Philip Van Hoof <philip codeminded be>
Date:   Tue Jan 26 16:53:18 2010 +0100

    Fixed bug with nmm:albumTrackCount being set to different values
    
    ... for the same album, which was failing the insert query for
    the entire song

 src/tracker-extract/tracker-extract-gstreamer.c |   56 ++++++++++++++++++++++-
 src/tracker-extract/tracker-extract-mp3.c       |   17 +++++++
 src/tracker-extract/tracker-extract-vorbis.c    |   17 +++++++
 3 files changed, 88 insertions(+), 2 deletions(-)
---
diff --git a/src/tracker-extract/tracker-extract-gstreamer.c b/src/tracker-extract/tracker-extract-gstreamer.c
index 4ad410d..30eedc0 100644
--- a/src/tracker-extract/tracker-extract-gstreamer.c
+++ b/src/tracker-extract/tracker-extract-gstreamer.c
@@ -533,6 +533,9 @@ extract_metadata (MetadataExtractor      *extractor,
 			s = NULL;
 			gst_tag_list_get_string (extractor->tagcache, GST_TAG_ALBUM, &s);
 			if (s) {
+				gboolean has_it;
+				guint count;
+
 				album_uri = tracker_uri_printf_escaped ("urn:album:%s", s);
 
 				tracker_sparql_builder_insert_open (preupdate, NULL);
@@ -542,8 +545,57 @@ extract_metadata (MetadataExtractor      *extractor,
 				tracker_sparql_builder_object (preupdate, "nmm:MusicAlbum");
 				tracker_sparql_builder_predicate (preupdate, "nmm:albumTitle");
 				tracker_sparql_builder_object_unvalidated (preupdate, s);
-				add_uint_gst_tag (preupdate, album_uri, "nmm:albumTrackCount", extractor->tagcache, GST_TAG_TRACK_COUNT);
-				add_uint_gst_tag (preupdate, album_uri, "nmm:setNumber", extractor->tagcache, GST_TAG_ALBUM_VOLUME_NUMBER);
+
+				has_it = gst_tag_list_get_uint (extractor->tagcache, 
+				                                GST_TAG_TRACK_COUNT, 
+				                                &count);
+
+				if (has_it) {
+					tracker_sparql_builder_insert_close (preupdate);
+
+					tracker_sparql_builder_delete_open (preupdate, NULL);
+					tracker_sparql_builder_subject_iri (preupdate, album_uri);
+					tracker_sparql_builder_predicate (preupdate, "nmm:albumTrackCount");
+					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_uri);
+					tracker_sparql_builder_predicate (preupdate, "nmm:albumTrackCount");
+					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_uri);
+
+					tracker_sparql_builder_predicate (metadata, "nmm:albumTrackCount");
+					tracker_sparql_builder_object_int64 (metadata, count);
+				}
+
+				has_it = gst_tag_list_get_uint (extractor->tagcache, 
+				                                GST_TAG_ALBUM_VOLUME_NUMBER, 
+				                                &count);
+
+				if (has_it) {
+					tracker_sparql_builder_insert_close (preupdate);
+
+					tracker_sparql_builder_delete_open (preupdate, NULL);
+					tracker_sparql_builder_subject_iri (preupdate, album_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_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_uri);
+
+					tracker_sparql_builder_predicate (metadata, "nmm:setNumber");
+					tracker_sparql_builder_object_int64 (metadata, count);
+				}
+
 				*album = s;
 
 				tracker_sparql_builder_insert_close (preupdate);
diff --git a/src/tracker-extract/tracker-extract-mp3.c b/src/tracker-extract/tracker-extract-mp3.c
index 8d87082..7ca073c 100644
--- a/src/tracker-extract/tracker-extract-mp3.c
+++ b/src/tracker-extract/tracker-extract-mp3.c
@@ -2001,6 +2001,23 @@ extract_mp3 (const gchar          *uri,
 		tracker_sparql_builder_object_unvalidated (preupdate, md.album);
 
 		if (md.track_count > 0) {
+
+			tracker_sparql_builder_insert_close (preupdate);
+
+			tracker_sparql_builder_delete_open (preupdate, NULL);
+			tracker_sparql_builder_subject_iri (preupdate, md.album_uri);
+			tracker_sparql_builder_predicate (preupdate, "nmm:albumTrackCount");
+			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, md.album_uri);
+			tracker_sparql_builder_predicate (preupdate, "nmm:albumTrackCount");
+			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, md.album_uri);
+
 			tracker_sparql_builder_predicate (preupdate, "nmm:albumTrackCount");
 			tracker_sparql_builder_object_int64 (preupdate, md.track_count);
 		}
diff --git a/src/tracker-extract/tracker-extract-vorbis.c b/src/tracker-extract/tracker-extract-vorbis.c
index 0eb44da..1e70cff 100644
--- a/src/tracker-extract/tracker-extract-vorbis.c
+++ b/src/tracker-extract/tracker-extract-vorbis.c
@@ -178,6 +178,23 @@ extract_vorbis (const char *uri,
 		tracker_sparql_builder_insert_close (preupdate);
 
 		if (vorbis_data.trackcount) {
+
+			tracker_sparql_builder_insert_close (preupdate);
+
+			tracker_sparql_builder_delete_open (preupdate, NULL);
+			tracker_sparql_builder_subject_iri (preupdate, album_uri);
+			tracker_sparql_builder_predicate (preupdate, "nmm:albumTrackCount");
+			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_uri);
+			tracker_sparql_builder_predicate (preupdate, "nmm:albumTrackCount");
+			tracker_sparql_builder_object_variable (preupdate, "unknown");
+			tracker_sparql_builder_where_close (preupdate);
+
+			tracker_sparql_builder_insert_open (preupdate, preupdate);
+			tracker_sparql_builder_subject_iri (preupdate, md.album_uri);
+
 			tracker_sparql_builder_predicate (metadata, "nmm:albumTrackCount");
 			tracker_sparql_builder_object_unvalidated (metadata, vorbis_data.trackcount);
 			g_free (vorbis_data.trackcount);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]