[tracker-miners/wip/carlosg/extraction-fixes: 8/8] tracker-extract-gstreamer: Set Acoustid nfo:hasHash on file resource




commit 1c40de090fd6fd611465172c1a348017a56246a3
Author: Carlos Garnacho <carlosg gnome org>
Date:   Wed Sep 30 18:11:37 2020 +0200

    tracker-extract-gstreamer: Set Acoustid nfo:hasHash on file resource
    
    This is wrongly set on the nie:InformationElement, not on the
    nfo:FileDataObject where it belongs. Causes SPARQL insertion errors for
    files with chromaprint tags.
    
    Fixes: https://gitlab.gnome.org/GNOME/tracker-miners/-/issues/141

 src/tracker-extract/tracker-extract-gstreamer.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
---
diff --git a/src/tracker-extract/tracker-extract-gstreamer.c b/src/tracker-extract/tracker-extract-gstreamer.c
index 21c5c97f8..565de4490 100644
--- a/src/tracker-extract/tracker-extract-gstreamer.c
+++ b/src/tracker-extract/tracker-extract-gstreamer.c
@@ -633,6 +633,7 @@ ensure_file_resource (TrackerResource *resource,
 static void
 extractor_apply_audio_metadata (MetadataExtractor     *extractor,
                                 GstTagList            *tag_list,
+                                const gchar           *file_url,
                                 TrackerResource       *audio,
                                 TrackerResource       *artist,
                                 TrackerResource       *performer,
@@ -683,12 +684,13 @@ extractor_apply_audio_metadata (MetadataExtractor     *extractor,
                have_acoustid_fingerprint = gst_tag_list_copy_value (&acoustid_fingerprint, tag_list, 
GST_TAG_ACOUSTID_FINGERPRINT);
                if (have_acoustid_fingerprint) {
                        TrackerResource *hash_resource = tracker_resource_new (NULL);
+                       TrackerResource *file_resource = ensure_file_resource (audio, file_url);
 
                        tracker_resource_set_uri (hash_resource, "rdf:type", "nfo:FileHash");
                        tracker_resource_set_gvalue (hash_resource, "nfo:hashValue", &acoustid_fingerprint);
                        tracker_resource_set_string (hash_resource, "nfo:hashAlgorithm", "chromaprint");
 
-                       tracker_resource_add_take_relation (audio, "nfo:hasHash", hash_resource);
+                       tracker_resource_add_take_relation (file_resource, "nfo:hasHash", hash_resource);
                        g_value_unset (&acoustid_fingerprint);
                }
        #endif
@@ -769,6 +771,7 @@ extract_track (TrackerResource      *track,
 
        extractor_apply_audio_metadata (extractor,
                                        toc_entry->tag_list,
+                                       file_url,
                                        track,
                                        track_artist,
                                        track_performer,
@@ -985,6 +988,7 @@ extract_metadata (MetadataExtractor      *extractor,
                        } else {
                                extractor_apply_audio_metadata (extractor,
                                                                extractor->tagcache,
+                                                               file_url,
                                                                resource,
                                                                artist,
                                                                performer,


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