[tracker-miners: 1/3] tracker-extract-vorbis.c: Extract AcoustID Fingerprint for vorbis files



commit 3399b34e61a5271fd04bba0940dd60f371967757
Author: Sumaid Syed <sumaidsyed gmail com>
Date:   Fri Jul 5 15:26:25 2019 +0530

    tracker-extract-vorbis.c: Extract AcoustID Fingerprint for vorbis files
    
    Tracker needs to store chromaprint of songs, because calculating chromaprint is an expensive process.
    Tag Mappings: https://picard.musicbrainz.org/docs/mappings/
    
    https://gitlab.gnome.org/GNOME/tracker-miners/issues/73

 src/tracker-extract/tracker-extract-vorbis.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
---
diff --git a/src/tracker-extract/tracker-extract-vorbis.c b/src/tracker-extract/tracker-extract-vorbis.c
index 1a86aa44d..b7f7ecf1e 100644
--- a/src/tracker-extract/tracker-extract-vorbis.c
+++ b/src/tracker-extract/tracker-extract-vorbis.c
@@ -57,6 +57,7 @@ typedef struct {
        gchar *codec_version;
        gchar *sample_rate;
        gchar *channels;
+       gchar *acoustid_fingerprint;
        gchar *mb_release_id;
        gchar *mb_release_group_id;
        gchar *mb_track_id;
@@ -148,6 +149,7 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
                vd.codec_version = ogg_get_comment (comment, "CodecVersion");
                vd.sample_rate = ogg_get_comment (comment, "SampleRate");
                vd.channels = ogg_get_comment (comment, "Channels");
+               vd.acoustid_fingerprint = ogg_get_comment (comment, "ACOUSTID_FINGERPRINT");
                vd.mb_release_id = ogg_get_comment (comment, "MUSICBRAINZ_ALBUMID");
                vd.mb_release_group_id = ogg_get_comment (comment, "MUSICBRAINZ_RELEASEGROUPID");
                vd.mb_artist_id = ogg_get_comment (comment, "MUSICBRAINZ_ARTISTID");
@@ -283,6 +285,22 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
                g_free (vd.channels);
        }
 
+       if (vd.acoustid_fingerprint) {
+               TrackerResource *hash_resource;
+
+               hash_resource = tracker_resource_new (NULL);
+               tracker_resource_set_uri (hash_resource, "rdf:type", "nfo:FileHash");
+
+               tracker_resource_set_string (hash_resource, "nfo:hashValue", vd.acoustid_fingerprint);
+               tracker_resource_set_string (hash_resource, "nfo:hashAlgorithm", "chromaprint");
+
+               tracker_resource_set_relation (metadata, "nfo:hasHash", hash_resource);
+
+               g_object_unref (hash_resource);
+
+               g_free (vd.acoustid_fingerprint);
+       }
+
        if (vd.mb_recording_id) {
                tracker_resource_set_string (metadata, "nmm:mbRecordingID", vd.mb_recording_id);
                g_free (vd.mb_recording_id);


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