diff options
author | Marinus Schraal <mschraal@src.gnome.org> | 2016-10-27 23:05:19 +0200 |
---|---|---|
committer | Marinus Schraal <mschraal@src.gnome.org> | 2016-11-15 00:08:17 +0100 |
commit | fb30a3f66b5cca5324fdc3b0aa129388c67be92d (patch) | |
tree | d679987092492b78023d583ac1cdd38c7e473819 /src/tracker-extract/tracker-extract-libav.c | |
parent | 99e55345d17017ad263fcf5ac5dcda1a4ab66135 (diff) | |
download | tracker-fb30a3f66b5cca5324fdc3b0aa129388c67be92d.tar.gz |
tracker-extract: Use date as album uri identifier
Use the album creation date as part of the album uri identifier if
available. This should make the separation of similar named albums even
better. Also port mp3 & gstreamer to use the resource helper functon for
exctracting album disc data.
https://bugzilla.gnome.org/show_bug.cgi?id=773697
Diffstat (limited to 'src/tracker-extract/tracker-extract-libav.c')
-rw-r--r-- | src/tracker-extract/tracker-extract-libav.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/tracker-extract/tracker-extract-libav.c b/src/tracker-extract/tracker-extract-libav.c index 71a6b9447..b2055badf 100644 --- a/src/tracker-extract/tracker-extract-libav.c +++ b/src/tracker-extract/tracker-extract-libav.c @@ -41,6 +41,7 @@ tracker_extract_get_metadata (TrackerExtractInfo *info) GFile *file; TrackerResource *metadata; gchar *absolute_file_path; + gchar *content_created = NULL; gchar *uri; AVFormatContext *format = NULL; AVStream *audio_stream = NULL; @@ -84,6 +85,13 @@ tracker_extract_get_metadata (TrackerExtractInfo *info) metadata = tracker_resource_new (NULL); + if ((tag = av_dict_get (format->metadata, "creation_time", NULL, 0))) { + content_created = tracker_date_guess (tag->value); + if (content_created) { + tracker_resource_set_string (metadata, "nie:contentCreated", content_created); + } + } + if (audio_stream) { if (audio_stream->codec->sample_rate > 0) { tracker_resource_set_int64 (metadata, "nfo:sampleRate", audio_stream->codec->sample_rate); @@ -191,7 +199,7 @@ tracker_extract_get_metadata (TrackerExtractInfo *info) disc_number = atoi (tag->value); } - album_disc = tracker_extract_new_music_album_disc (album_title, album_artist, disc_number); + album_disc = tracker_extract_new_music_album_disc (album_title, album_artist, disc_number, content_created); tracker_resource_set_relation (metadata, "nmm:musicAlbumDisc", album_disc); tracker_resource_set_relation (metadata, "nmm:musicAlbum", tracker_resource_get_first_relation (album_disc, "nmm:albumDiscAlbum")); @@ -239,14 +247,6 @@ tracker_extract_get_metadata (TrackerExtractInfo *info) tracker_resource_set_string (metadata, "nie:copyright", tag->value); } - if ((tag = av_dict_get (format->metadata, "creation_time", NULL, 0))) { - gchar *content_created = tracker_date_guess (tag->value); - if (content_created) { - tracker_resource_set_string (metadata, "nie:contentCreated", content_created); - g_free (content_created); - } - } - if ((tag = av_dict_get (format->metadata, "description", NULL, 0))) { tracker_resource_set_string (metadata, "nie:description", tag->value); } @@ -265,6 +265,7 @@ tracker_extract_get_metadata (TrackerExtractInfo *info) tracker_guarantee_resource_title_from_file (metadata, "nie:title", title, uri, NULL); + g_free (content_created); g_free (uri); avformat_close_input (&format); |