[tracker/miner-web: 6/11] Coalesce nie:comment in jpeg extractor.



commit c8e5995bc23ccdabd4e4f436f989d3db18ce84a9
Author: Carlos Garnacho <carlos lanedo com>
Date:   Tue Nov 3 14:56:11 2009 +0100

    Coalesce nie:comment in jpeg extractor.
    
    comment info may come from builtin and exif data. Coalesce both, since
    nie:comment only allows one value.

 src/tracker-extract/tracker-extract-jpeg.c |   67 +++++++++++++++++++--------
 1 files changed, 47 insertions(+), 20 deletions(-)
---
diff --git a/src/tracker-extract/tracker-extract-jpeg.c b/src/tracker-extract/tracker-extract-jpeg.c
index 99dcb94..d348145 100644
--- a/src/tracker-extract/tracker-extract-jpeg.c
+++ b/src/tracker-extract/tracker-extract-jpeg.c
@@ -70,26 +70,14 @@
 #endif /* HAVE_LIBIPTCDATA */
 
 typedef struct {
-	gchar *camera;
-	gchar *title;
-	gchar *orientation;
-	gchar *copyright;
-	gchar *white_balance;
-	gchar *fnumber;
-	gchar *flash;
-	gchar *focal_length;
-	gchar *artist;
-	gchar *exposure_time;
-	gchar *iso_speed_ratings;
-	gchar *date;
-	gchar *description;
-	gchar *metering_mode;
-	gchar *creator;
-	gchar *comment;
-} MergeData;
-
-static void extract_jpeg (const gchar          *filename,
-			  TrackerSparqlBuilder *metadata);
+	gchar *camera, *title, *orientation, *copyright, *white_balance,
+	      *fnumber, *flash, *focal_length, *artist,
+	      *exposure_time, *iso_speed_ratings, *date, *description,
+	      *metering_mode, *creator, *comment;
+} JpegNeedsMergeData;
+
+static void extract_jpeg (const gchar *filename,
+			  TrackerSparqlBuilder   *metadata);
 
 static TrackerExtractData data[] = {
 	{ "image/jpeg", extract_jpeg },
@@ -161,6 +149,7 @@ extract_jpeg (const gchar          *uri,
 	f = tracker_file_open (filename, "rb", FALSE);
 
 	if (f) {
+<<<<<<< HEAD
 		TrackerXmpData xd = { 0 };
 		TrackerExifData ed = { 0 };
 		TrackerIptcData id = { 0 };
@@ -172,6 +161,26 @@ extract_jpeg (const gchar          *uri,
 		tracker_sparql_builder_object (metadata, "nfo:Image");
 		tracker_sparql_builder_predicate (metadata, "a");
 		tracker_sparql_builder_object (metadata, "nmm:Photo");
+=======
+		TrackerXmpData xmp_data = { 0 };
+		TrackerExifData exif_data = { 0 };
+		TrackerIptcData iptc_data = { 0 };
+		JpegNeedsMergeData merge_data = { 0 };
+		gchar *str, *comment = NULL;
+		gsize  len;
+#ifdef HAVE_LIBIPTCDATA
+		gsize  offset;
+		gsize  sublen;
+#endif /* HAVE_LIBIPTCDATA */
+
+		tracker_statement_list_insert (metadata, uri,
+		                               RDF_PREFIX "type",
+		                               NFO_PREFIX "Image");
+
+		tracker_statement_list_insert (metadata, uri,
+		                               RDF_PREFIX "type",
+		                               NMM_PREFIX "Photo");
+>>>>>>> Coalesce nie:comment in jpeg extractor.
 
 		cinfo.err = jpeg_std_error (&tejerr.jpeg);
 		tejerr.jpeg.error_exit = extract_jpeg_error_exit;
@@ -210,8 +219,13 @@ extract_jpeg (const gchar          *uri,
 
 			switch (marker->marker) {
 			case JPEG_COM:
+<<<<<<< HEAD
 				g_free (comment);
 				comment = g_strndup ((gchar*) marker->data, marker->data_length);
+=======
+				len = marker->data_length;
+				comment = g_strndup ((gchar*) marker->data, len);
+>>>>>>> Coalesce nie:comment in jpeg extractor.
 				break;
 
 			case JPEG_APP0 + 1:
@@ -310,6 +324,7 @@ extract_jpeg (const gchar          *uri,
 		tracker_sparql_builder_object_int64 (metadata, cinfo.image_width);
 		g_free (ed.x_dimension);
 
+<<<<<<< HEAD
 		tracker_sparql_builder_predicate (metadata, "nfo:height");
 		tracker_sparql_builder_object_int64 (metadata, cinfo.image_height);
 		g_free (ed.y_dimension);
@@ -318,6 +333,13 @@ extract_jpeg (const gchar          *uri,
 			insert_keywords (metadata, xd.keywords);
 			g_free (xd.keywords);
 		}
+=======
+		merge_data.creator =  tracker_coalesce (3, iptc_data.byline,
+		                                        xmp_data.creator,
+		                                        iptc_data.credit);
+		merge_data.comment = tracker_coalesce (2, exif_data.user_comment,
+						       comment);
+>>>>>>> Coalesce nie:comment in jpeg extractor.
 
 		if (xd.subject) {
 			insert_keywords (metadata, xd.subject);
@@ -506,6 +528,11 @@ extract_jpeg (const gchar          *uri,
 			g_free (md.comment);
 		}
 
+		if (merge_data.comment) {
+			tracker_statement_list_insert (metadata, uri, NIE_PREFIX "comment", merge_data.comment);
+			g_free (merge_data.comment);
+		}
+
 		jpeg_destroy_decompress (&cinfo);
 fail:
 		tracker_file_close (f, FALSE);



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