[tracker-miners/sam/libav-testing: 8/12] tracker-extract-libav: Split musicpiece from musicalbum extraction




commit 59fb3e164c060871718a6b53561f10477333039c
Author: Sam Thursfield <sam thursfield codethink co uk>
Date:   Wed Aug 31 11:54:20 2022 +0200

    tracker-extract-libav: Split musicpiece from musicalbum extraction

 src/tracker-extract/tracker-extract-libav.c | 64 +++++++++++++++++------------
 1 file changed, 38 insertions(+), 26 deletions(-)
---
diff --git a/src/tracker-extract/tracker-extract-libav.c b/src/tracker-extract/tracker-extract-libav.c
index 2dabcdd1c..c7414f11b 100644
--- a/src/tracker-extract/tracker-extract-libav.c
+++ b/src/tracker-extract/tracker-extract-libav.c
@@ -140,9 +140,7 @@ extract_music_piece_info (const gchar     *uri,
                           AVFormatContext *format,
                           AVStream        *audio_stream)
 {
-       g_autoptr(TrackerResource) album_artist = NULL, artist = NULL, performer = NULL;
-       const char *album_artist_name = NULL;
-       const char *album_title = NULL;
+       g_autoptr(TrackerResource) artist = NULL, performer = NULL;
        const char *title = NULL;
        g_autofree char *content_created = NULL;
        AVDictionaryEntry *tag = NULL;
@@ -163,15 +161,6 @@ extract_music_piece_info (const gchar     *uri,
                }
        }
 
-       if ((tag = find_tag (format, audio_stream, "album"))) {
-               album_title = tag->value;
-       }
-
-       if (album_title && (tag = find_tag (format, audio_stream, "album_artist"))) {
-               album_artist_name = tag->value;
-               album_artist = tracker_extract_new_artist (album_artist_name);
-       }
-
        if ((tag = find_tag (format, audio_stream, "artist"))) {
                artist = tracker_extract_new_artist (tag->value);
        }
@@ -201,20 +190,6 @@ extract_music_piece_info (const gchar     *uri,
                g_object_unref (composer);
        }
 
-       if (album_title) {
-               int disc_number = 1;
-               TrackerResource *album_disc;
-
-               if ((tag = find_tag (format, audio_stream, "disc"))) {
-                       disc_number = atoi (tag->value);
-               }
-
-               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"));
-       }
-
        if ((tag = find_tag (format, audio_stream, "comment"))) {
                tracker_resource_set_string (metadata, "nie:comment", tag->value);
        }
@@ -238,6 +213,42 @@ extract_music_piece_info (const gchar     *uri,
        tracker_guarantee_resource_title_from_file (metadata, "nie:title", title, uri, NULL);
 }
 
+static void
+extract_music_album_info(const gchar     *uri,
+                         TrackerResource *metadata,
+                         AVFormatContext *format,
+                         AVStream        *audio_stream)
+{
+       g_autoptr(TrackerResource) album_artist = NULL;
+       const char *album_artist_name = NULL;
+       const char *album_title = NULL;
+       AVDictionaryEntry *tag = NULL;
+
+       if ((tag = find_tag (format, audio_stream, "album"))) {
+               album_title = tag->value;
+       }
+
+       if (album_title && (tag = find_tag (format, audio_stream, "album_artist"))) {
+               album_artist_name = tag->value;
+               album_artist = tracker_extract_new_artist (album_artist_name);
+       }
+
+       if (album_title) {
+               const char *content_created = tracker_resource_get_first_string (metadata, 
"nie:contentCreated");
+               int disc_number = 1;
+               TrackerResource *album_disc;
+
+               if ((tag = find_tag (format, audio_stream, "disc"))) {
+                       disc_number = atoi (tag->value);
+               }
+
+               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"));
+       }
+}
+
 G_MODULE_EXPORT gboolean
 tracker_extract_get_metadata (TrackerExtractInfo  *info,
                               GError             **error)
@@ -294,6 +305,7 @@ tracker_extract_get_metadata (TrackerExtractInfo  *info,
                extract_video_info (uri, metadata, format, video_stream);
        } else if (audio_stream) {
                extract_music_piece_info (uri, metadata, format, audio_stream);
+               extract_music_album_info (uri, metadata, format, audio_stream);
        }
 
        if (format->bit_rate > 0) {


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