[tracker] tracker-extract: Cleaned up XMP code
- From: Martyn James Russell <mr src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker] tracker-extract: Cleaned up XMP code
- Date: Mon, 18 Jan 2010 12:21:09 +0000 (UTC)
commit cae1d2b5d496e32dd1899c0f4f7a69a45060a897
Author: Martyn Russell <martyn lanedo com>
Date: Mon Jan 18 12:13:42 2010 +0000
tracker-extract: Cleaned up XMP code
src/tracker-extract/tracker-extract-jpeg.c | 52 ++--
src/tracker-extract/tracker-extract-pdf.c | 104 +++---
src/tracker-extract/tracker-extract-png.c | 94 +++---
src/tracker-extract/tracker-extract-tiff.c | 48 ++--
src/tracker-extract/tracker-extract-xmp.c | 4 +-
src/tracker-extract/tracker-xmp.c | 530 +++++++++++++---------------
src/tracker-extract/tracker-xmp.h | 73 +++-
7 files changed, 448 insertions(+), 457 deletions(-)
---
diff --git a/src/tracker-extract/tracker-extract-jpeg.c b/src/tracker-extract/tracker-extract-jpeg.c
index 41a0b76..c8b8d8b 100644
--- a/src/tracker-extract/tracker-extract-jpeg.c
+++ b/src/tracker-extract/tracker-extract-jpeg.c
@@ -240,7 +240,7 @@ extract_jpeg (const gchar *uri,
#ifdef HAVE_EXEMPI
if (strncmp (XMP_NAMESPACE, str, XMP_NAMESPACE_LENGTH) == 0) {
- tracker_read_xmp (str + XMP_NAMESPACE_LENGTH,
+ tracker_xmp_read (str + XMP_NAMESPACE_LENGTH,
len - XMP_NAMESPACE_LENGTH,
uri,
&xd);
@@ -275,13 +275,13 @@ extract_jpeg (const gchar *uri,
}
/* Don't merge if the make is in the model */
- if ((xd.Make == NULL || xd.Model == NULL) ||
- (xd.Make && xd.Model && strstr (xd.Model, xd.Make) == NULL)) {
- md.camera = tracker_merge (" ", 2, xd.Make, xd.Model);
+ if ((xd.make == NULL || xd.model == NULL) ||
+ (xd.make && xd.model && strstr (xd.model, xd.make) == NULL)) {
+ md.camera = tracker_merge (" ", 2, xd.make, xd.model);
} else {
- md.camera = g_strdup (xd.Model);
- g_free (xd.Model);
- g_free (xd.Make);
+ md.camera = g_strdup (xd.model);
+ g_free (xd.model);
+ g_free (xd.make);
}
if (!md.camera) {
@@ -298,24 +298,24 @@ extract_jpeg (const gchar *uri,
g_free (ed.make);
}
- md.title = tracker_coalesce (3, xd.title, xd.Title, ed.document_name, xd.PDFtitle);
- md.orientation = tracker_coalesce (3, ed.orientation, xd.Orientation, id.image_orientation);
- md.copyright = tracker_coalesce (3, ed.copyright, xd.Copyright, xd.rights, id.copyright_notice);
- md.white_balance = tracker_coalesce (2, ed.white_balance, xd.WhiteBalance);
- md.fnumber = tracker_coalesce (2, ed.fnumber, xd.FNumber);
- md.flash = tracker_coalesce (2, ed.flash, xd.Flash);
- md.focal_length = tracker_coalesce (2, ed.focal_length, xd.FocalLength);
- md.artist = tracker_coalesce (3, ed.artist, xd.Artist, xd.contributor);
- md.exposure_time = tracker_coalesce (2, ed.exposure_time, xd.ExposureTime);
- md.iso_speed_ratings = tracker_coalesce (2, ed.iso_speed_ratings, xd.ISOSpeedRatings);
- md.date = tracker_coalesce (5, ed.time, xd.date, id.date_created, ed.time_original, xd.DateTimeOriginal);
+ md.title = tracker_coalesce (3, xd.title, xd.title2, ed.document_name, xd.pdf_title);
+ md.orientation = tracker_coalesce (3, ed.orientation, xd.orientation, id.image_orientation);
+ md.copyright = tracker_coalesce (3, ed.copyright, xd.copyright, xd.rights, id.copyright_notice);
+ md.white_balance = tracker_coalesce (2, ed.white_balance, xd.white_balance);
+ md.fnumber = tracker_coalesce (2, ed.fnumber, xd.fnumber);
+ md.flash = tracker_coalesce (2, ed.flash, xd.flash);
+ md.focal_length = tracker_coalesce (2, ed.focal_length, xd.focal_length);
+ md.artist = tracker_coalesce (3, ed.artist, xd.artist, xd.contributor);
+ md.exposure_time = tracker_coalesce (2, ed.exposure_time, xd.exposure_time);
+ md.iso_speed_ratings = tracker_coalesce (2, ed.iso_speed_ratings, xd.iso_speed_ratings);
+ md.date = tracker_coalesce (5, ed.time, xd.date, id.date_created, ed.time_original, xd.time_original);
md.description = tracker_coalesce (2, ed.description, xd.description);
- md.metering_mode = tracker_coalesce (2, ed.metering_mode, xd.MeteringMode);
+ md.metering_mode = tracker_coalesce (2, ed.metering_mode, xd.metering_mode);
- md.city = tracker_coalesce (2, id.city, xd.City);
- md.state = tracker_coalesce (2, id.state, xd.State);
- md.address = tracker_coalesce (2, id.sublocation, xd.Address);
- md.country = tracker_coalesce (2, id.country_name, xd.Country);
+ md.city = tracker_coalesce (2, id.city, xd.city);
+ md.state = tracker_coalesce (2, id.state, xd.state);
+ md.address = tracker_coalesce (2, id.sublocation, xd.address);
+ md.country = tracker_coalesce (2, id.country_name, xd.country);
md.creator = tracker_coalesce (3, id.byline, xd.creator, id.credit);
md.comment = tracker_coalesce (2, comment, ed.user_comment);
@@ -356,9 +356,9 @@ extract_jpeg (const gchar *uri,
g_free (xd.keywords);
}
- if (xd.PDFkeywords) {
- insert_keywords (metadata, xd.PDFkeywords);
- g_free (xd.PDFkeywords);
+ if (xd.pdf_keywords) {
+ insert_keywords (metadata, xd.pdf_keywords);
+ g_free (xd.pdf_keywords);
}
if (xd.subject) {
diff --git a/src/tracker-extract/tracker-extract-pdf.c b/src/tracker-extract/tracker-extract-pdf.c
index d6cf53b..de7f61c 100644
--- a/src/tracker-extract/tracker-extract-pdf.c
+++ b/src/tracker-extract/tracker-extract-pdf.c
@@ -220,13 +220,13 @@ extract_pdf (const gchar *uri,
}
if (xml) {
- tracker_read_xmp (xml, strlen (xml), uri, &xd);
+ tracker_xmp_read (xml, strlen (xml), uri, &xd);
g_free (xml);
xml = NULL;
- md.title = tracker_coalesce (3, pd.title, xd.title, xd.Title, xd.PDFtitle);
+ md.title = tracker_coalesce (3, pd.title, xd.title, xd.title2, xd.pdf_title);
md.subject = tracker_coalesce (2, pd.subject, xd.subject);
- md.date = tracker_coalesce (3, pd.creation_date, xd.date, xd.DateTimeOriginal);
+ md.date = tracker_coalesce (3, pd.creation_date, xd.date, xd.time_original);
md.author = tracker_coalesce (2, pd.author, xd.creator);
write_pdf_data (md, metadata);
@@ -236,9 +236,9 @@ extract_pdf (const gchar *uri,
g_free (xd.keywords);
}
- if (xd.PDFkeywords) {
- insert_keywords (metadata, xd.PDFkeywords);
- g_free (xd.PDFkeywords);
+ if (xd.pdf_keywords) {
+ insert_keywords (metadata, xd.pdf_keywords);
+ g_free (xd.pdf_keywords);
}
if (xd.publisher) {
@@ -300,16 +300,16 @@ extract_pdf (const gchar *uri,
g_free (xd.license);
}
- if (xd.Make || xd.Model) {
+ if (xd.make || xd.model) {
gchar *camera;
- if ((xd.Make == NULL || xd.Model == NULL) ||
- (xd.Make && xd.Model && strstr (xd.Model, xd.Make) == NULL)) {
- camera = tracker_merge (" ", 2, xd.Make, xd.Model);
+ if ((xd.make == NULL || xd.model == NULL) ||
+ (xd.make && xd.model && strstr (xd.model, xd.make) == NULL)) {
+ camera = tracker_merge (" ", 2, xd.make, xd.model);
} else {
- camera = g_strdup (xd.Model);
- g_free (xd.Model);
- g_free (xd.Make);
+ camera = g_strdup (xd.model);
+ g_free (xd.model);
+ g_free (xd.make);
}
tracker_sparql_builder_predicate (metadata, "nmm:camera");
@@ -317,10 +317,10 @@ extract_pdf (const gchar *uri,
g_free (camera);
}
- if (xd.Orientation) {
+ if (xd.orientation) {
tracker_sparql_builder_predicate (metadata, "nfo:orientation");
- tracker_sparql_builder_object (metadata, xd.Orientation);
- g_free (xd.Orientation);
+ tracker_sparql_builder_object (metadata, xd.orientation);
+ g_free (xd.orientation);
}
if (xd.rights) {
@@ -329,42 +329,42 @@ extract_pdf (const gchar *uri,
g_free (xd.rights);
}
- if (xd.WhiteBalance) {
+ if (xd.white_balance) {
tracker_sparql_builder_predicate (metadata, "nmm:whiteBalance");
- tracker_sparql_builder_object (metadata, xd.WhiteBalance);
- g_free (xd.WhiteBalance);
+ tracker_sparql_builder_object (metadata, xd.white_balance);
+ g_free (xd.white_balance);
}
- if (xd.FNumber) {
+ if (xd.fnumber) {
gdouble value;
- value = g_strtod (xd.FNumber, NULL);
+ value = g_strtod (xd.fnumber, NULL);
tracker_sparql_builder_predicate (metadata, "nmm:fnumber");
tracker_sparql_builder_object_double (metadata, value);
- g_free (xd.FNumber);
+ g_free (xd.fnumber);
}
- if (xd.Flash) {
+ if (xd.flash) {
tracker_sparql_builder_predicate (metadata, "nmm:flash");
- tracker_sparql_builder_object (metadata, xd.Flash);
- g_free (xd.Flash);
+ tracker_sparql_builder_object (metadata, xd.flash);
+ g_free (xd.flash);
}
- if (xd.FocalLength) {
+ if (xd.focal_length) {
gdouble value;
- value = g_strtod (xd.FocalLength, NULL);
+ value = g_strtod (xd.focal_length, NULL);
tracker_sparql_builder_predicate (metadata, "nmm:focalLength");
tracker_sparql_builder_object_double (metadata, value);
- g_free (xd.FocalLength);
+ g_free (xd.focal_length);
}
/* Question: Shouldn't xd.Artist be merged with md.author instead? */
- if (xd.Artist || xd.contributor) {
+ if (xd.artist || xd.contributor) {
gchar *artist;
- artist = tracker_coalesce (2, xd.Artist, xd.contributor);
+ artist = tracker_coalesce (2, xd.artist, xd.contributor);
tracker_sparql_builder_predicate (metadata, "nco:contributor");
tracker_sparql_builder_object_blank_open (metadata);
tracker_sparql_builder_predicate (metadata, "a");
@@ -375,22 +375,22 @@ extract_pdf (const gchar *uri,
g_free (artist);
}
- if (xd.ExposureTime) {
+ if (xd.exposure_time) {
gdouble value;
- value = g_strtod (xd.ExposureTime, NULL);
+ value = g_strtod (xd.exposure_time, NULL);
tracker_sparql_builder_predicate (metadata, "nmm:exposureTime");
tracker_sparql_builder_object_double (metadata, value);
- g_free (xd.ExposureTime);
+ g_free (xd.exposure_time);
}
- if (xd.ISOSpeedRatings) {
+ if (xd.iso_speed_ratings) {
gdouble value;
- value = g_strtod (xd.ISOSpeedRatings, NULL);
+ value = g_strtod (xd.iso_speed_ratings, NULL);
tracker_sparql_builder_predicate (metadata, "nmm:isoSpeed");
tracker_sparql_builder_object_double (metadata, value);
- g_free (xd.ISOSpeedRatings);
+ g_free (xd.iso_speed_ratings);
}
if (xd.description) {
@@ -399,41 +399,41 @@ extract_pdf (const gchar *uri,
g_free (xd.description);
}
- if (xd.MeteringMode) {
+ if (xd.metering_mode) {
tracker_sparql_builder_predicate (metadata, "nmm:meteringMode");
- tracker_sparql_builder_object (metadata, xd.MeteringMode);
- g_free (xd.MeteringMode);
+ tracker_sparql_builder_object (metadata, xd.metering_mode);
+ g_free (xd.metering_mode);
}
- if (xd.Address || xd.Country || xd.City) {
+ if (xd.address || xd.country || xd.city) {
tracker_sparql_builder_predicate (metadata, "mlo:location");
tracker_sparql_builder_object_blank_open (metadata);
tracker_sparql_builder_predicate (metadata, "a");
tracker_sparql_builder_object (metadata, "mlo:GeoPoint");
- if (xd.Address) {
+ if (xd.address) {
tracker_sparql_builder_predicate (metadata, "mlo:address");
- tracker_sparql_builder_object_unvalidated (metadata, xd.Address);
- g_free (xd.Address);
+ tracker_sparql_builder_object_unvalidated (metadata, xd.address);
+ g_free (xd.address);
}
- if (xd.State) {
+ if (xd.state) {
tracker_sparql_builder_predicate (metadata, "mlo:state");
- tracker_sparql_builder_object_unvalidated (metadata, xd.State);
- g_free (xd.State);
+ tracker_sparql_builder_object_unvalidated (metadata, xd.state);
+ g_free (xd.state);
}
- if (xd.City) {
+ if (xd.city) {
tracker_sparql_builder_predicate (metadata, "mlo:city");
- tracker_sparql_builder_object_unvalidated (metadata, xd.City);
- g_free (xd.City);
+ tracker_sparql_builder_object_unvalidated (metadata, xd.city);
+ g_free (xd.city);
}
- if (xd.Country) {
+ if (xd.country) {
tracker_sparql_builder_predicate (metadata, "mlo:country");
- tracker_sparql_builder_object_unvalidated (metadata, xd.Country);
- g_free (xd.Country);
+ tracker_sparql_builder_object_unvalidated (metadata, xd.country);
+ g_free (xd.country);
}
tracker_sparql_builder_object_blank_close (metadata);
diff --git a/src/tracker-extract/tracker-extract-png.c b/src/tracker-extract/tracker-extract-png.c
index 92518e8..bc8820d 100644
--- a/src/tracker-extract/tracker-extract-png.c
+++ b/src/tracker-extract/tracker-extract-png.c
@@ -196,8 +196,8 @@ read_metadata (png_structp png_ptr, png_infop info_ptr, const gchar *uri, Tracke
merge_data.title = tracker_coalesce (4, png_data.title,
xmp_data.title,
- xmp_data.Title,
- xmp_data.PDFtitle);
+ xmp_data.title,
+ xmp_data.pdf_title);
merge_data.copyright = tracker_coalesce (2, png_data.copyright,
xmp_data.rights);
@@ -210,7 +210,7 @@ read_metadata (png_structp png_ptr, png_infop info_ptr, const gchar *uri, Tracke
merge_data.date = tracker_coalesce (3, png_data.creation_time,
xmp_data.date,
- xmp_data.DateTimeOriginal);
+ xmp_data.time_original);
if (png_data.comment) {
@@ -268,9 +268,9 @@ read_metadata (png_structp png_ptr, png_infop info_ptr, const gchar *uri, Tracke
g_free (xmp_data.keywords);
}
- if (xmp_data.PDFkeywords) {
- insert_keywords (metadata, uri, xmp_data.PDFkeywords);
- g_free (xmp_data.PDFkeywords);
+ if (xmp_data.pdf_keywords) {
+ insert_keywords (metadata, uri, xmp_data.pdf_keywords);
+ g_free (xmp_data.pdf_keywords);
}
if (xmp_data.subject) {
@@ -333,46 +333,46 @@ read_metadata (png_structp png_ptr, png_infop info_ptr, const gchar *uri, Tracke
g_free (xmp_data.coverage);
}
- if (xmp_data.Make || xmp_data.Model) {
- gchar *final_camera = tracker_merge (" ", 2, xmp_data.Make, xmp_data.Model);
+ if (xmp_data.make || xmp_data.model) {
+ gchar *final_camera = tracker_merge (" ", 2, xmp_data.make, xmp_data.model);
tracker_sparql_builder_predicate (metadata, "nmm:camera");
tracker_sparql_builder_object_unvalidated (metadata, final_camera);
g_free (final_camera);
}
- if (xmp_data.Orientation) {
+ if (xmp_data.orientation) {
tracker_sparql_builder_predicate (metadata, "nfo:orientation");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data.Orientation);
- g_free (xmp_data.Orientation);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data.orientation);
+ g_free (xmp_data.orientation);
}
- if (xmp_data.WhiteBalance) {
+ if (xmp_data.white_balance) {
tracker_sparql_builder_predicate (metadata, "nmm:whiteBalance");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data.WhiteBalance);
- g_free (xmp_data.WhiteBalance);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data.white_balance);
+ g_free (xmp_data.white_balance);
}
- if (xmp_data.FNumber) {
+ if (xmp_data.fnumber) {
tracker_sparql_builder_predicate (metadata, "nmm:fnumber");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data.FNumber);
- g_free (xmp_data.FNumber);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data.fnumber);
+ g_free (xmp_data.fnumber);
}
- if (xmp_data.Flash) {
+ if (xmp_data.flash) {
tracker_sparql_builder_predicate (metadata, "nmm:flash");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data.Flash);
- g_free (xmp_data.Flash);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data.flash);
+ g_free (xmp_data.flash);
}
- if (xmp_data.FocalLength) {
+ if (xmp_data.focal_length) {
tracker_sparql_builder_predicate (metadata, "nmm:focalLength");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data.FocalLength);
- g_free (xmp_data.FocalLength);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data.focal_length);
+ g_free (xmp_data.focal_length);
}
- if (xmp_data.Artist || xmp_data.contributor) {
- gchar *final_artist = tracker_coalesce (2, xmp_data.Artist, xmp_data.contributor);
+ if (xmp_data.artist || xmp_data.contributor) {
+ gchar *final_artist = tracker_coalesce (2, xmp_data.artist, xmp_data.contributor);
tracker_sparql_builder_predicate (metadata, "nco:contributor");
@@ -386,53 +386,53 @@ read_metadata (png_structp png_ptr, png_infop info_ptr, const gchar *uri, Tracke
g_free (final_artist);
}
- if (xmp_data.ExposureTime) {
+ if (xmp_data.exposure_time) {
tracker_sparql_builder_predicate (metadata, "nmm:exposureTime");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data.ExposureTime);
- g_free (xmp_data.ExposureTime);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data.exposure_time);
+ g_free (xmp_data.exposure_time);
}
- if (xmp_data.ISOSpeedRatings) {
+ if (xmp_data.iso_speed_ratings) {
tracker_sparql_builder_predicate (metadata, "nmm:isoSpeed");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data.ISOSpeedRatings);
- g_free (xmp_data.ISOSpeedRatings);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data.iso_speed_ratings);
+ g_free (xmp_data.iso_speed_ratings);
}
- if (xmp_data.MeteringMode) {
+ if (xmp_data.metering_mode) {
tracker_sparql_builder_predicate (metadata, "nmm:meteringMode");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data.MeteringMode);
- g_free (xmp_data.MeteringMode);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data.metering_mode);
+ g_free (xmp_data.metering_mode);
}
- if (xmp_data.Address || xmp_data.Country || xmp_data.City) {
+ if (xmp_data.address || xmp_data.country || xmp_data.city) {
tracker_sparql_builder_predicate (metadata, "mlo:location");
tracker_sparql_builder_object_blank_open (metadata);
tracker_sparql_builder_predicate (metadata, "a");
tracker_sparql_builder_object (metadata, "mlo:GeoPoint");
- if (xmp_data.Address) {
+ if (xmp_data.address) {
tracker_sparql_builder_predicate (metadata, "mlo:address");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data.Address);
- g_free (xmp_data.Address);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data.address);
+ g_free (xmp_data.address);
}
- if (xmp_data.State) {
+ if (xmp_data.state) {
tracker_sparql_builder_predicate (metadata, "mlo:state");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data.State);
- g_free (xmp_data.State);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data.state);
+ g_free (xmp_data.state);
}
- if (xmp_data.City) {
+ if (xmp_data.city) {
tracker_sparql_builder_predicate (metadata, "mlo:city");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data.City);
- g_free (xmp_data.City);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data.city);
+ g_free (xmp_data.city);
}
- if (xmp_data.Country) {
+ if (xmp_data.country) {
tracker_sparql_builder_predicate (metadata, "mlo:country");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data.Country);
- g_free (xmp_data.Country);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data.country);
+ g_free (xmp_data.country);
}
tracker_sparql_builder_object_blank_close (metadata);
diff --git a/src/tracker-extract/tracker-extract-tiff.c b/src/tracker-extract/tracker-extract-tiff.c
index 7f58523..6f96eca 100644
--- a/src/tracker-extract/tracker-extract-tiff.c
+++ b/src/tracker-extract/tracker-extract-tiff.c
@@ -316,7 +316,7 @@ extract_tiff (const gchar *uri, TrackerSparqlBuilder *metadata)
due to bugs in the original spec (type) */
#ifdef HAVE_EXEMPI
if (TIFFGetField (image, TIFFTAG_XMLPACKET, &size, &xmpOffset)) {
- tracker_read_xmp (xmpOffset,
+ tracker_xmp_read (xmpOffset,
size,
uri,
&xmp_data);
@@ -368,8 +368,8 @@ extract_tiff (const gchar *uri, TrackerSparqlBuilder *metadata)
tiff_data.model);
if (!merge_data.camera) {
- merge_data.camera = tracker_merge (" ", 2, xmp_data.Make,
- xmp_data.Model);
+ merge_data.camera = tracker_merge (" ", 2, xmp_data.make,
+ xmp_data.model);
if (!merge_data.camera) {
merge_data.camera = tracker_merge (" ", 2, exif_data.make,
@@ -379,21 +379,21 @@ extract_tiff (const gchar *uri, TrackerSparqlBuilder *metadata)
g_free (exif_data.make);
}
} else {
- g_free (xmp_data.Model);
- g_free (xmp_data.Make);
+ g_free (xmp_data.model);
+ g_free (xmp_data.make);
g_free (exif_data.model);
g_free (exif_data.make);
}
merge_data.title = tracker_coalesce (5, tiff_data.documentname,
xmp_data.title,
- xmp_data.Title,
+ xmp_data.title2,
exif_data.document_name,
- xmp_data.PDFtitle);
+ xmp_data.pdf_title);
merge_data.orientation = tracker_coalesce (4, tiff_data.orientation,
exif_data.orientation,
- xmp_data.Orientation,
+ xmp_data.orientation,
iptc_data.image_orientation);
merge_data.copyright = tracker_coalesce (4, tiff_data.copyright,
@@ -402,47 +402,47 @@ extract_tiff (const gchar *uri, TrackerSparqlBuilder *metadata)
iptc_data.copyright_notice);
merge_data.white_balance = tracker_coalesce (2, exif_data.white_balance,
- xmp_data.WhiteBalance);
+ xmp_data.white_balance);
merge_data.fnumber = tracker_coalesce (2, exif_data.fnumber,
- xmp_data.FNumber);
+ xmp_data.fnumber);
merge_data.flash = tracker_coalesce (2, exif_data.flash,
- xmp_data.Flash);
+ xmp_data.flash);
merge_data.focal_length = tracker_coalesce (2, exif_data.focal_length,
- xmp_data.FocalLength);
+ xmp_data.focal_length);
merge_data.artist = tracker_coalesce (4, tiff_data.artist,
exif_data.artist,
- xmp_data.Artist,
+ xmp_data.artist,
xmp_data.contributor);
merge_data.exposure_time = tracker_coalesce (2, exif_data.exposure_time,
- xmp_data.ExposureTime);
+ xmp_data.exposure_time);
merge_data.iso_speed_ratings = tracker_coalesce (2, exif_data.iso_speed_ratings,
- xmp_data.ISOSpeedRatings);
+ xmp_data.iso_speed_ratings);
merge_data.date = tracker_coalesce (6, tiff_data.datetime,
exif_data.time,
xmp_data.date,
iptc_data.date_created,
exif_data.time_original,
- xmp_data.DateTimeOriginal);
+ xmp_data.time_original);
merge_data.description = tracker_coalesce (3, tiff_data.imagedescription,
exif_data.description,
xmp_data.description);
merge_data.metering_mode = tracker_coalesce (2, exif_data.metering_mode,
- xmp_data.MeteringMode);
+ xmp_data.metering_mode);
- merge_data.city = tracker_coalesce (2, iptc_data.city, xmp_data.City);
- merge_data.state = tracker_coalesce (2, iptc_data.state, xmp_data.State);
- merge_data.address = tracker_coalesce (2, iptc_data.sublocation, xmp_data.Address);
- merge_data.country = tracker_coalesce (2, iptc_data.country_name, xmp_data.Country);
+ merge_data.city = tracker_coalesce (2, iptc_data.city, xmp_data.city);
+ merge_data.state = tracker_coalesce (2, iptc_data.state, xmp_data.state);
+ merge_data.address = tracker_coalesce (2, iptc_data.sublocation, xmp_data.address);
+ merge_data.country = tracker_coalesce (2, iptc_data.country_name, xmp_data.country);
merge_data.creator = tracker_coalesce (3, iptc_data.byline,
xmp_data.creator,
@@ -476,9 +476,9 @@ extract_tiff (const gchar *uri, TrackerSparqlBuilder *metadata)
g_free (xmp_data.keywords);
}
- if (xmp_data.PDFkeywords) {
- insert_keywords (metadata, uri, xmp_data.PDFkeywords);
- g_free (xmp_data.PDFkeywords);
+ if (xmp_data.pdf_keywords) {
+ insert_keywords (metadata, uri, xmp_data.pdf_keywords);
+ g_free (xmp_data.pdf_keywords);
}
if (xmp_data.subject) {
diff --git a/src/tracker-extract/tracker-extract-xmp.c b/src/tracker-extract/tracker-extract-xmp.c
index 3f3d6b4..b8f6289 100644
--- a/src/tracker-extract/tracker-extract-xmp.c
+++ b/src/tracker-extract/tracker-extract-xmp.c
@@ -150,12 +150,12 @@ extract_xmp (const gchar *uri,
/* If no orig file is found for the sidekick, we use the sidekick to
* describe itself instead, falling back to uri */
- tracker_read_xmp (contents,
+ tracker_xmp_read (contents,
length,
orig_uri ? orig_uri : uri,
&xmp_data);
- tracker_apply_xmp (metadata, uri, &xmp_data);
+ tracker_xmp_apply (metadata, uri, &xmp_data);
g_free (orig_uri);
}
diff --git a/src/tracker-extract/tracker-xmp.c b/src/tracker-extract/tracker-xmp.c
index e124760..14aa628 100644
--- a/src/tracker-extract/tracker-xmp.c
+++ b/src/tracker-extract/tracker-xmp.c
@@ -31,29 +31,22 @@
#include <libtracker-common/tracker-utils.h>
#include <libtracker-common/tracker-ontology.h>
-#define NMM_PREFIX TRACKER_NMM_PREFIX
-#define NFO_PREFIX TRACKER_NFO_PREFIX
-#define NIE_PREFIX TRACKER_NIE_PREFIX
-#define DC_PREFIX TRACKER_DC_PREFIX
-#define NCO_PREFIX TRACKER_NCO_PREFIX
-#define RDF_PREFIX TRACKER_RDF_PREFIX
-
#ifdef HAVE_EXEMPI
#include <exempi/xmp.h>
#include <exempi/xmpconsts.h>
-static void tracker_xmp_iter (XmpPtr xmp,
- XmpIteratorPtr iter,
- const gchar *uri,
- TrackerXmpData *data,
- gboolean append);
-static void tracker_xmp_iter_simple (const gchar *uri,
- TrackerXmpData *data,
- const gchar *schema,
- const gchar *path,
- const gchar *value,
- gboolean append);
+static void iterate (XmpPtr xmp,
+ XmpIteratorPtr iter,
+ const gchar *uri,
+ TrackerXmpData *data,
+ gboolean append);
+static void iterate_simple (const gchar *uri,
+ TrackerXmpData *data,
+ const gchar *schema,
+ const gchar *path,
+ const gchar *value,
+ gboolean append);
static const gchar *
fix_metering_mode (const gchar *mode)
@@ -112,44 +105,45 @@ fix_white_balance (const gchar *wb)
* one entry.
*/
static void
-tracker_xmp_iter_array (XmpPtr xmp,
- const gchar *uri,
- TrackerXmpData *data,
- const gchar *schema,
- const gchar *path)
+iterate_array (XmpPtr xmp,
+ const gchar *uri,
+ TrackerXmpData *data,
+ const gchar *schema,
+ const gchar *path)
{
XmpIteratorPtr iter;
iter = xmp_iterator_new (xmp, schema, path, XMP_ITER_JUSTCHILDREN);
- tracker_xmp_iter (xmp, iter, uri, data, TRUE);
+ iterate (xmp, iter, uri, data, TRUE);
xmp_iterator_free (iter);
}
-
-/* We have an array, now recursively iterate over it's children. Set 'append' to false so that only one item is used. */
+/* We have an array, now recursively iterate over it's children. Set
+ * 'append' to false so that only one item is used.
+ */
static void
-tracker_xmp_iter_alt_text (XmpPtr xmp,
- const gchar *uri,
- TrackerXmpData *data,
- const gchar *schema,
- const gchar *path)
+iterate_alt_text (XmpPtr xmp,
+ const gchar *uri,
+ TrackerXmpData *data,
+ const gchar *schema,
+ const gchar *path)
{
XmpIteratorPtr iter;
iter = xmp_iterator_new (xmp, schema, path, XMP_ITER_JUSTCHILDREN);
- tracker_xmp_iter (xmp, iter, uri, data, FALSE);
+ iterate (xmp, iter, uri, data, FALSE);
xmp_iterator_free (iter);
}
/* We have a simple element, but need to iterate over the qualifiers */
static void
-tracker_xmp_iter_simple_qual (XmpPtr xmp,
- const gchar *uri,
- TrackerXmpData *data,
- const gchar *schema,
- const gchar *path,
- const gchar *value,
- gboolean append)
+iterate_simple_qual (XmpPtr xmp,
+ const gchar *uri,
+ TrackerXmpData *data,
+ const gchar *schema,
+ const gchar *path,
+ const gchar *value,
+ gboolean append)
{
XmpIteratorPtr iter;
XmpStringPtr the_path;
@@ -191,7 +185,7 @@ tracker_xmp_iter_simple_qual (XmpPtr xmp,
}
if (!ignore_element) {
- tracker_xmp_iter_simple (uri, data, schema, path, value, append);
+ iterate_simple (uri, data, schema, path, value, append);
}
xmp_string_free (the_prop);
@@ -200,49 +194,40 @@ tracker_xmp_iter_simple_qual (XmpPtr xmp,
xmp_iterator_free (iter);
}
-
static const gchar *
fix_orientation (const gchar *orientation)
{
if (orientation && g_ascii_strcasecmp (orientation, "top - left") == 0) {
return "nfo:orientation-top";
- } else
- if (orientation && g_ascii_strcasecmp (orientation, "top - right") == 0) {
- return "nfo:orientation-top-mirror";
- } else
- if (orientation && g_ascii_strcasecmp (orientation, "bottom - right") == 0) {
+ } else if (orientation && g_ascii_strcasecmp (orientation, "top - right") == 0) {
+ return "nfo:orientation-top-mirror";
+ } else if (orientation && g_ascii_strcasecmp (orientation, "bottom - right") == 0) {
return "nfo:orientation-bottom-mirror";
- } else
- if (orientation && g_ascii_strcasecmp (orientation, "bottom - left") == 0) {
+ } else if (orientation && g_ascii_strcasecmp (orientation, "bottom - left") == 0) {
return "nfo:orientation-bottom";
- } else
- if (orientation && g_ascii_strcasecmp (orientation, "left - top") == 0) {
+ } else if (orientation && g_ascii_strcasecmp (orientation, "left - top") == 0) {
return "nfo:orientation-left-mirror";
- } else
- if (orientation && g_ascii_strcasecmp (orientation, "right - top") == 0) {
+ } else if (orientation && g_ascii_strcasecmp (orientation, "right - top") == 0) {
return "nfo:orientation-right";
- } else
- if (orientation && g_ascii_strcasecmp (orientation, "right - bottom") == 0) {
+ } else if (orientation && g_ascii_strcasecmp (orientation, "right - bottom") == 0) {
return "nfo:orientation-right-mirror";
- } else
- if (orientation && g_ascii_strcasecmp (orientation, "left - bottom") == 0) {
+ } else if (orientation && g_ascii_strcasecmp (orientation, "left - bottom") == 0) {
return "nfo:orientation-left";
}
return "nfo:orientation-top";
}
-
/* We have a simple element. Add any data we know about to the
* hash table.
*/
static void
-tracker_xmp_iter_simple (const gchar *uri,
- TrackerXmpData *data,
- const gchar *schema,
- const gchar *path,
- const gchar *value,
- gboolean append)
+iterate_simple (const gchar *uri,
+ TrackerXmpData *data,
+ const gchar *schema,
+ const gchar *path,
+ const gchar *value,
+ gboolean append)
{
gchar *name;
const gchar *index_;
@@ -256,192 +241,148 @@ tracker_xmp_iter_simple (const gchar *uri,
/* Exif basic scheme */
if (g_ascii_strcasecmp (schema, NS_EXIF) == 0) {
- if (!data->Title && g_ascii_strcasecmp (name, "Title") == 0) {
- data->Title = g_strdup (value);
- } else
- if (g_ascii_strcasecmp (name, "DateTimeOriginal") == 0 && !data->DateTimeOriginal) {
- data->DateTimeOriginal = g_strdup (value);
- } else
- if (!data->Artist && g_ascii_strcasecmp (name, "Artist") == 0) {
- data->Artist = g_strdup (value);
- } else /*
- if (g_ascii_strcasecmp (name, "Software") == 0) {
- tracker_statement_list_insert (metadata, uri,
- "Image:Software", value);
- } else */
- if (!data->Make && g_ascii_strcasecmp (name, "Make") == 0) {
- data->Make = g_strdup (value);
- } else
- if (!data->Model && g_ascii_strcasecmp (name, "Model") == 0) {
- data->Model = g_strdup (value);
- } else
- if (!data->Orientation && g_ascii_strcasecmp (name, "Orientation") == 0) {
- data->Orientation = g_strdup (fix_orientation (value));
- } else
- if (!data->Flash && g_ascii_strcasecmp (name, "Flash") == 0) {
- data->Flash = g_strdup (fix_flash (value));
- } else
- if (!data->MeteringMode && g_ascii_strcasecmp (name, "MeteringMode") == 0) {
- data->MeteringMode = g_strdup (fix_metering_mode (value));
- } else /*
- if (g_ascii_strcasecmp (name, "ExposureProgram") == 0) {
- tracker_statement_list_insert (metadata, uri,
- "Image:ExposureProgram", value);
- } else*/
- if (!data->ExposureTime && g_ascii_strcasecmp (name, "ExposureTime") == 0) {
- data->ExposureTime = g_strdup (value);
- } else
- if (!data->FNumber && g_ascii_strcasecmp (name, "FNumber") == 0) {
- data->FNumber = g_strdup (value);
- } else
- if (!data->FocalLength && g_ascii_strcasecmp (name, "FocalLength") == 0) {
- data->FocalLength = g_strdup (value);
- } else
- if (!data->ISOSpeedRatings && g_ascii_strcasecmp (name, "ISOSpeedRatings") == 0) {
- data->ISOSpeedRatings = g_strdup (value);
- } else
- if (!data->WhiteBalance && g_ascii_strcasecmp (name, "WhiteBalance") == 0) {
- data->WhiteBalance = g_strdup (fix_white_balance (value));
- } else
- if (!data->Copyright && g_ascii_strcasecmp (name, "Copyright") == 0) {
- data->Copyright = g_strdup (value);
+ if (!data->title2 && g_ascii_strcasecmp (name, "Title") == 0) {
+ data->title2 = g_strdup (value);
+ } else if (g_ascii_strcasecmp (name, "DateTimeOriginal") == 0 && !data->time_original) {
+ data->time_original = g_strdup (value);
+ } else if (!data->artist && g_ascii_strcasecmp (name, "Artist") == 0) {
+ data->artist = g_strdup (value);
+ /* } else if (g_ascii_strcasecmp (name, "Software") == 0) {
+ tracker_statement_list_insert (metadata, uri,
+ "Image:Software", value);*/
+ } else if (!data->make && g_ascii_strcasecmp (name, "Make") == 0) {
+ data->make = g_strdup (value);
+ } else if (!data->model && g_ascii_strcasecmp (name, "Model") == 0) {
+ data->model = g_strdup (value);
+ } else if (!data->orientation && g_ascii_strcasecmp (name, "Orientation") == 0) {
+ data->orientation = g_strdup (fix_orientation (value));
+ } else if (!data->flash && g_ascii_strcasecmp (name, "Flash") == 0) {
+ data->flash = g_strdup (fix_flash (value));
+ } else if (!data->metering_mode && g_ascii_strcasecmp (name, "MeteringMode") == 0) {
+ data->metering_mode = g_strdup (fix_metering_mode (value));
+ /* } else if (g_ascii_strcasecmp (name, "ExposureProgram") == 0) {
+ tracker_statement_list_insert (metadata, uri,
+ "Image:ExposureProgram", value);*/
+ } else if (!data->exposure_time && g_ascii_strcasecmp (name, "ExposureTime") == 0) {
+ data->exposure_time = g_strdup (value);
+ } else if (!data->fnumber && g_ascii_strcasecmp (name, "FNumber") == 0) {
+ data->fnumber = g_strdup (value);
+ } else if (!data->focal_length && g_ascii_strcasecmp (name, "FocalLength") == 0) {
+ data->focal_length = g_strdup (value);
+ } else if (!data->iso_speed_ratings && g_ascii_strcasecmp (name, "ISOSpeedRatings") == 0) {
+ data->iso_speed_ratings = g_strdup (value);
+ } else if (!data->white_balance && g_ascii_strcasecmp (name, "WhiteBalance") == 0) {
+ data->white_balance = g_strdup (fix_white_balance (value));
+ } else if (!data->copyright && g_ascii_strcasecmp (name, "Copyright") == 0) {
+ data->copyright = g_strdup (value);
}
- } else
- /* PDF*/
- if (g_ascii_strcasecmp (schema, NS_PDF) == 0) {
- if (!data->PDFkeywords && g_ascii_strcasecmp (name, "keywords") == 0) {
- data->PDFkeywords = g_strdup (value);
+ /* PDF*/
+ } else if (g_ascii_strcasecmp (schema, NS_PDF) == 0) {
+ if (!data->pdf_keywords && g_ascii_strcasecmp (name, "keywords") == 0) {
+ data->pdf_keywords = g_strdup (value);
} else
- if (!data->PDFtitle && g_ascii_strcasecmp (name, "title") == 0) {
- data->PDFtitle = g_strdup (value);
- }
- } else
- /* Dublin Core */
- if (g_ascii_strcasecmp (schema, NS_DC) == 0) {
+ if (!data->pdf_title && g_ascii_strcasecmp (name, "title") == 0) {
+ data->pdf_title = g_strdup (value);
+ }
+ /* Dublin Core */
+ } else if (g_ascii_strcasecmp (schema, NS_DC) == 0) {
if (!data->title && g_ascii_strcasecmp (name, "title") == 0) {
data->title = g_strdup (value);
- } else
- if (!data->rights && g_ascii_strcasecmp (name, "rights") == 0) {
+ } else if (!data->rights && g_ascii_strcasecmp (name, "rights") == 0) {
data->rights = g_strdup (value);
- } else
- if (!data->creator && g_ascii_strcasecmp (name, "creator") == 0) {
+ } else if (!data->creator && g_ascii_strcasecmp (name, "creator") == 0) {
data->creator = g_strdup (value);
- } else
- if (!data->description && g_ascii_strcasecmp (name, "description") == 0) {
+ } else if (!data->description && g_ascii_strcasecmp (name, "description") == 0) {
data->description = g_strdup (value);
- } else
- if (!data->date && g_ascii_strcasecmp (name, "date") == 0) {
+ } else if (!data->date && g_ascii_strcasecmp (name, "date") == 0) {
data->date = g_strdup (value);
- } else
- if (!data->keywords && g_ascii_strcasecmp (name, "keywords") == 0) {
+ } else if (!data->keywords && g_ascii_strcasecmp (name, "keywords") == 0) {
data->keywords = g_strdup (value);
- } else
- if (!data->subject && g_ascii_strcasecmp (name, "subject") == 0) {
+ } else if (!data->subject && g_ascii_strcasecmp (name, "subject") == 0) {
data->subject = g_strdup (value);
- } else
- if (!data->publisher && g_ascii_strcasecmp (name, "publisher") == 0) {
+ } else if (!data->publisher && g_ascii_strcasecmp (name, "publisher") == 0) {
data->publisher = g_strdup (value);
- } else
- if (!data->contributor && g_ascii_strcasecmp (name, "contributor") == 0) {
+ } else if (!data->contributor && g_ascii_strcasecmp (name, "contributor") == 0) {
data->contributor = g_strdup (value);
- } else
- if (!data->type && g_ascii_strcasecmp (name, "type") == 0) {
+ } else if (!data->type && g_ascii_strcasecmp (name, "type") == 0) {
data->type = g_strdup (value);
- } else
- if (!data->format && g_ascii_strcasecmp (name, "format") == 0) {
+ } else if (!data->format && g_ascii_strcasecmp (name, "format") == 0) {
data->format = g_strdup (value);
- } else
- if (!data->identifier && g_ascii_strcasecmp (name, "identifier") == 0) {
+ } else if (!data->identifier && g_ascii_strcasecmp (name, "identifier") == 0) {
data->identifier = g_strdup (value);
- } else
- if (!data->source && g_ascii_strcasecmp (name, "source") == 0) {
+ } else if (!data->source && g_ascii_strcasecmp (name, "source") == 0) {
data->source = g_strdup (value);
- } else
- if (!data->language && g_ascii_strcasecmp (name, "language") == 0) {
+ } else if (!data->language && g_ascii_strcasecmp (name, "language") == 0) {
data->language = g_strdup (value);
- } else
- if (!data->relation && g_ascii_strcasecmp (name, "relation") == 0) {
+ } else if (!data->relation && g_ascii_strcasecmp (name, "relation") == 0) {
data->relation = g_strdup (value);
- } else
- if (!data->coverage && g_ascii_strcasecmp (name, "coverage") == 0) {
+ } else if (!data->coverage && g_ascii_strcasecmp (name, "coverage") == 0) {
data->coverage = g_strdup (value);
}
- } else
- /* Creative Commons */
- if (g_ascii_strcasecmp (schema, NS_CC) == 0) {
+ /* Creative Commons */
+ } else if (g_ascii_strcasecmp (schema, NS_CC) == 0) {
if (!data->license && g_ascii_strcasecmp (name, "license") == 0) {
data->license = g_strdup (value);
}
- } else
- /* TODO: A lot of these location fields are pretty vague and ambigious.
- * We should go through them one by one and ensure that all of them are
- * used sanely */
-
- /* Photoshop TODO: is this needed anyway? */
- if (g_ascii_strcasecmp (schema, NS_PHOTOSHOP) == 0) {
- if (data->City && g_ascii_strcasecmp (name, "City") == 0) {
- data->City = g_strdup (value);
- } else
- if (!data->Country && g_ascii_strcasecmp (name, "Country") == 0) {
- data->Country = g_strdup (value);
- } else
- if (!data->State && g_ascii_strcasecmp (name, "State") == 0) {
- data->State = g_strdup (value);
- } else
- if (!data->Address && g_ascii_strcasecmp (name, "Location") == 0) {
- data->Address = g_strdup (value);
+ /* TODO: A lot of these location fields are pretty vague and ambigious.
+ * We should go through them one by one and ensure that all of them are
+ * used sanely */
+
+ /* Photoshop TODO: is this needed anyway? */
+ } else if (g_ascii_strcasecmp (schema, NS_PHOTOSHOP) == 0) {
+ if (data->city && g_ascii_strcasecmp (name, "City") == 0) {
+ data->city = g_strdup (value);
+ } else if (!data->country && g_ascii_strcasecmp (name, "Country") == 0) {
+ data->country = g_strdup (value);
+ } else if (!data->state && g_ascii_strcasecmp (name, "State") == 0) {
+ data->state = g_strdup (value);
+ } else if (!data->address && g_ascii_strcasecmp (name, "Location") == 0) {
+ data->address = g_strdup (value);
}
- } else
- /* IPTC4XMP scheme - GeoClue / location stuff, TODO */
- if (g_ascii_strcasecmp (schema, NS_IPTC4XMP) == 0) {
- if (!data->City && g_ascii_strcasecmp (name, "City") == 0) {
- data->City = g_strdup (value);
- } else
- if (!data->Country && g_ascii_strcasecmp (name, "Country") == 0) {
- data->Country = g_strdup (value);
- } else
- if (!data->Country && g_ascii_strcasecmp (name, "CountryName") == 0) {
- data->Country = g_strdup (value);
- } else
- if (!data->Country && g_ascii_strcasecmp (name, "PrimaryLocationName") == 0) {
- data->Country = g_strdup (value);
- } else
- if (!data->State && g_ascii_strcasecmp (name, "State") == 0) {
- data->State = g_strdup (value);
- } else
- if (!data->State && g_ascii_strcasecmp (name, "Province") == 0) {
- data->State = g_strdup (value);
- } else
- if (!data->Address && g_ascii_strcasecmp (name, "Sublocation") == 0) {
- data->Address = g_strdup (value);
+ /* IPTC4XMP scheme - GeoClue / location stuff, TODO */
+ } else if (g_ascii_strcasecmp (schema, NS_IPTC4XMP) == 0) {
+ if (!data->city && g_ascii_strcasecmp (name, "City") == 0) {
+ data->city = g_strdup (value);
+ } else if (!data->country && g_ascii_strcasecmp (name, "Country") == 0) {
+ data->country = g_strdup (value);
+ } else if (!data->country && g_ascii_strcasecmp (name, "CountryName") == 0) {
+ data->country = g_strdup (value);
+ } else if (!data->country && g_ascii_strcasecmp (name, "PrimaryLocationName") == 0) {
+ data->country = g_strdup (value);
+ } else if (!data->state && g_ascii_strcasecmp (name, "State") == 0) {
+ data->state = g_strdup (value);
+ } else if (!data->state && g_ascii_strcasecmp (name, "Province") == 0) {
+ data->state = g_strdup (value);
+ } else if (!data->address && g_ascii_strcasecmp (name, "Sublocation") == 0) {
+ data->address = g_strdup (value);
}
}
- /* else
- * XAP (XMP)scheme *
- if (g_ascii_strcasecmp (schema, NS_XAP) == 0) {
- if (g_ascii_strcasecmp (name, "Rating") == 0) {
- tracker_statement_list_insert (metadata, uri,
- "Image:Rating", value);
- }
- if (g_ascii_strcasecmp (name, "MetadataDate") == 0) {
- tracker_statement_list_insert (metadata, uri,
- "Image:Date", value);
- }
- } else
+ /* else
+ * XAP (XMP)scheme *
+ if (g_ascii_strcasecmp (schema, NS_XAP) == 0) {
+ if (g_ascii_strcasecmp (name, "Rating") == 0) {
+ tracker_statement_list_insert (metadata, uri,
+ "Image:Rating", value);
+ }
+ if (g_ascii_strcasecmp (name, "MetadataDate") == 0) {
+ tracker_statement_list_insert (metadata, uri,
+ "Image:Date", value);
+ }
+ } else
*/
+
g_free (name);
}
-
/* Iterate over the XMP, dispatching to the appropriate element type
* (simple, simple w/qualifiers, or an array) handler.
*/
-void
-tracker_xmp_iter (XmpPtr xmp,
- XmpIteratorPtr iter,
- const gchar *uri,
- TrackerXmpData *data,
- gboolean append)
+static void
+iterate (XmpPtr xmp,
+ XmpIteratorPtr iter,
+ const gchar *uri,
+ TrackerXmpData *data,
+ gboolean append)
{
XmpStringPtr the_schema = xmp_string_new ();
XmpStringPtr the_path = xmp_string_new ();
@@ -456,18 +397,18 @@ tracker_xmp_iter (XmpPtr xmp,
if (XMP_IS_PROP_SIMPLE (opt)) {
if (!tracker_is_empty_string (path)) {
if (XMP_HAS_PROP_QUALIFIERS (opt)) {
- tracker_xmp_iter_simple_qual (xmp, uri, data, schema, path, value, append);
+ iterate_simple_qual (xmp, uri, data, schema, path, value, append);
} else {
- tracker_xmp_iter_simple (uri, data, schema, path, value, append);
+ iterate_simple (uri, data, schema, path, value, append);
}
}
}
else if (XMP_IS_PROP_ARRAY (opt)) {
if (XMP_IS_ARRAY_ALTTEXT (opt)) {
- tracker_xmp_iter_alt_text (xmp, uri, data, schema, path);
+ iterate_alt_text (xmp, uri, data, schema, path);
xmp_iterator_skip (iter, XMP_ITER_SKIPSUBTREE);
} else {
- tracker_xmp_iter_array (xmp, uri, data, schema, path);
+ iterate_array (xmp, uri, data, schema, path);
xmp_iterator_skip (iter, XMP_ITER_SKIPSUBTREE);
}
}
@@ -480,12 +421,17 @@ tracker_xmp_iter (XmpPtr xmp,
#endif /* HAVE_EXEMPI */
-void
-tracker_read_xmp (const gchar *buffer,
- size_t len,
- const gchar *uri,
- TrackerXmpData *data)
+gboolean
+tracker_xmp_read (const gchar *buffer,
+ size_t len,
+ const gchar *uri,
+ TrackerXmpData *data)
{
+ g_return_val_if_fail (buffer != NULL, FALSE);
+ g_return_val_if_fail (len > 0, FALSE);
+ g_return_val_if_fail (uri != NULL, FALSE);
+ g_return_val_if_fail (data != NULL, FALSE);
+
#ifdef HAVE_EXEMPI
XmpPtr xmp;
@@ -498,34 +444,39 @@ tracker_read_xmp (const gchar *buffer,
XmpIteratorPtr iter;
iter = xmp_iterator_new (xmp, NULL, NULL, XMP_ITER_PROPERTIES);
- tracker_xmp_iter (xmp, iter, uri, data, FALSE);
+ iterate (xmp, iter, uri, data, FALSE);
xmp_iterator_free (iter);
xmp_free (xmp);
}
xmp_terminate ();
-#endif
-}
+#endif /* HAVE_EXEMPI */
+ return TRUE;
+}
static void
-insert_keywords (TrackerSparqlBuilder *metadata, const gchar *uri, gchar *keywords)
+insert_keywords (TrackerSparqlBuilder *metadata,
+ const gchar *uri,
+ gchar *keywords)
{
char *lasts, *keyw;
size_t len;
keyw = keywords;
keywords = strchr (keywords, '"');
- if (keywords)
+ if (keywords) {
keywords++;
- else
+ } else {
keywords = keyw;
+ }
len = strlen (keywords);
if (keywords[len - 1] == '"')
keywords[len - 1] = '\0';
- for (keyw = strtok_r (keywords, ",; ", &lasts); keyw;
+ for (keyw = strtok_r (keywords, ",; ", &lasts);
+ keyw;
keyw = strtok_r (NULL, ",; ", &lasts)) {
tracker_sparql_builder_predicate (metadata, "nao:hasTag");
@@ -540,9 +491,15 @@ insert_keywords (TrackerSparqlBuilder *metadata, const gchar *uri, gchar *keywor
}
}
-void
-tracker_apply_xmp (TrackerSparqlBuilder *metadata, const gchar *uri, TrackerXmpData *xmp_data)
+gboolean
+tracker_xmp_apply (TrackerSparqlBuilder *metadata,
+ const gchar *uri,
+ TrackerXmpData *xmp_data)
{
+ g_return_val_if_fail (TRACKER_IS_SPARQL_BUILDER (metadata), FALSE);
+ g_return_val_if_fail (uri != NULL, FALSE);
+ g_return_val_if_fail (xmp_data != NULL, FALSE);
+
if (xmp_data->keywords) {
insert_keywords (metadata, uri, xmp_data->keywords);
g_free (xmp_data->keywords);
@@ -553,9 +510,9 @@ tracker_apply_xmp (TrackerSparqlBuilder *metadata, const gchar *uri, TrackerXmpD
g_free (xmp_data->subject);
}
- if (xmp_data->PDFkeywords) {
- insert_keywords (metadata, uri, xmp_data->PDFkeywords);
- g_free (xmp_data->PDFkeywords);
+ if (xmp_data->pdf_keywords) {
+ insert_keywords (metadata, uri, xmp_data->pdf_keywords);
+ g_free (xmp_data->pdf_keywords);
}
if (xmp_data->publisher) {
@@ -619,62 +576,62 @@ tracker_apply_xmp (TrackerSparqlBuilder *metadata, const gchar *uri, TrackerXmpD
g_free (xmp_data->license);
}
- if (xmp_data->Make || xmp_data->Model) {
- gchar *final_camera = tracker_merge (" ", 2, xmp_data->Make, xmp_data->Model);
+ if (xmp_data->make || xmp_data->model) {
+ gchar *final_camera = tracker_merge (" ", 2, xmp_data->make, xmp_data->model);
tracker_sparql_builder_predicate (metadata, "nmm:camera");
tracker_sparql_builder_object_unvalidated (metadata, final_camera);
g_free (final_camera);
}
- if (xmp_data->title || xmp_data->Title || xmp_data->PDFtitle) {
+ if (xmp_data->title || xmp_data->title2 || xmp_data->pdf_title) {
gchar *final_title = tracker_coalesce (3, xmp_data->title,
- xmp_data->Title,
- xmp_data->PDFtitle);
+ xmp_data->title2,
+ xmp_data->pdf_title);
tracker_sparql_builder_predicate (metadata, "nie:title");
tracker_sparql_builder_object_unvalidated (metadata, final_title);
g_free (final_title);
}
- if (xmp_data->Orientation) {
+ if (xmp_data->orientation) {
tracker_sparql_builder_predicate (metadata, "nfo:orientation");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data->Orientation);
- g_free (xmp_data->Orientation);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data->orientation);
+ g_free (xmp_data->orientation);
}
- if (xmp_data->rights || xmp_data->Copyright) {
- gchar *final_rights = tracker_coalesce (2, xmp_data->Copyright, xmp_data->rights);
+ if (xmp_data->rights || xmp_data->copyright) {
+ gchar *final_rights = tracker_coalesce (2, xmp_data->copyright, xmp_data->rights);
tracker_sparql_builder_predicate (metadata, "nie:copyright");
tracker_sparql_builder_object_unvalidated (metadata, final_rights);
g_free (final_rights);
}
- if (xmp_data->WhiteBalance) {
+ if (xmp_data->white_balance) {
tracker_sparql_builder_predicate (metadata, "nmm:whiteBalance");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data->WhiteBalance);
- g_free (xmp_data->WhiteBalance);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data->white_balance);
+ g_free (xmp_data->white_balance);
}
- if (xmp_data->FNumber) {
+ if (xmp_data->fnumber) {
tracker_sparql_builder_predicate (metadata, "nmm:fnumber");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data->FNumber);
- g_free (xmp_data->FNumber);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data->fnumber);
+ g_free (xmp_data->fnumber);
}
- if (xmp_data->Flash) {
+ if (xmp_data->flash) {
tracker_sparql_builder_predicate (metadata, "nmm:flash");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data->Flash);
- g_free (xmp_data->Flash);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data->flash);
+ g_free (xmp_data->flash);
}
- if (xmp_data->FocalLength) {
+ if (xmp_data->focal_length) {
tracker_sparql_builder_predicate (metadata, "nmm:focalLength");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data->FocalLength);
- g_free (xmp_data->FocalLength);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data->focal_length);
+ g_free (xmp_data->focal_length);
}
- if (xmp_data->Artist || xmp_data->contributor) {
- gchar *final_artist = tracker_coalesce (2, xmp_data->Artist, xmp_data->contributor);
+ if (xmp_data->artist || xmp_data->contributor) {
+ gchar *final_artist = tracker_coalesce (2, xmp_data->artist, xmp_data->contributor);
tracker_sparql_builder_predicate (metadata, "nco:contributor");
@@ -688,20 +645,20 @@ tracker_apply_xmp (TrackerSparqlBuilder *metadata, const gchar *uri, TrackerXmpD
g_free (final_artist);
}
- if (xmp_data->ExposureTime) {
+ if (xmp_data->exposure_time) {
tracker_sparql_builder_predicate (metadata, "nmm:exposureTime");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data->ExposureTime);
- g_free (xmp_data->ExposureTime);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data->exposure_time);
+ g_free (xmp_data->exposure_time);
}
- if (xmp_data->ISOSpeedRatings) {
+ if (xmp_data->iso_speed_ratings) {
tracker_sparql_builder_predicate (metadata, "nmm:isoSpeed");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data->ISOSpeedRatings);
- g_free (xmp_data->ISOSpeedRatings);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data->iso_speed_ratings);
+ g_free (xmp_data->iso_speed_ratings);
}
- if (xmp_data->date || xmp_data->DateTimeOriginal) {
- gchar *final_date = tracker_coalesce (2, xmp_data->date, xmp_data->DateTimeOriginal);
+ if (xmp_data->date || xmp_data->time_original) {
+ gchar *final_date = tracker_coalesce (2, xmp_data->date, xmp_data->time_original);
tracker_sparql_builder_predicate (metadata, "nie:contentCreated");
tracker_sparql_builder_object_unvalidated (metadata, final_date);
g_free (final_date);
@@ -713,10 +670,10 @@ tracker_apply_xmp (TrackerSparqlBuilder *metadata, const gchar *uri, TrackerXmpD
g_free (xmp_data->description);
}
- if (xmp_data->MeteringMode) {
+ if (xmp_data->metering_mode) {
tracker_sparql_builder_predicate (metadata, "nmm:meteringMode");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data->MeteringMode);
- g_free (xmp_data->MeteringMode);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data->metering_mode);
+ g_free (xmp_data->metering_mode);
}
if (xmp_data->creator) {
@@ -732,38 +689,39 @@ tracker_apply_xmp (TrackerSparqlBuilder *metadata, const gchar *uri, TrackerXmpD
g_free (xmp_data->creator);
}
- if (xmp_data->Address || xmp_data->Country || xmp_data->City) {
+ if (xmp_data->address || xmp_data->country || xmp_data->city) {
tracker_sparql_builder_predicate (metadata, "mlo:location");
tracker_sparql_builder_object_blank_open (metadata);
tracker_sparql_builder_predicate (metadata, "a");
tracker_sparql_builder_object (metadata, "mlo:GeoPoint");
- if (xmp_data->Address) {
+ if (xmp_data->address) {
tracker_sparql_builder_predicate (metadata, "mlo:address");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data->Address);
- g_free (xmp_data->Address);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data->address);
+ g_free (xmp_data->address);
}
- if (xmp_data->State) {
+ if (xmp_data->state) {
tracker_sparql_builder_predicate (metadata, "mlo:state");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data->State);
- g_free (xmp_data->State);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data->state);
+ g_free (xmp_data->state);
}
- if (xmp_data->City) {
+ if (xmp_data->city) {
tracker_sparql_builder_predicate (metadata, "mlo:city");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data->City);
- g_free (xmp_data->City);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data->city);
+ g_free (xmp_data->city);
}
- if (xmp_data->Country) {
+ if (xmp_data->country) {
tracker_sparql_builder_predicate (metadata, "mlo:country");
- tracker_sparql_builder_object_unvalidated (metadata, xmp_data->Country);
- g_free (xmp_data->Country);
+ tracker_sparql_builder_object_unvalidated (metadata, xmp_data->country);
+ g_free (xmp_data->country);
}
tracker_sparql_builder_object_blank_close (metadata);
}
-
+
+ return TRUE;
}
diff --git a/src/tracker-extract/tracker-xmp.h b/src/tracker-extract/tracker-xmp.h
index e60bce5..09cd6b1 100644
--- a/src/tracker-extract/tracker-xmp.h
+++ b/src/tracker-extract/tracker-xmp.h
@@ -1,5 +1,6 @@
-/* Tracker Xmp - Xmp helper functions
+/*
* Copyright (C) 2006, Mr Jamie McCracken (jamiemcc gnome org)
+ * Copyright (C) 2009, Nokia
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
@@ -17,42 +18,74 @@
* Boston, MA 02110-1301, USA.
*/
-#ifndef _TRACKER_XMP_H_
-#define _TRACKER_XMP_H_
+#ifndef __TRACKER_EXTRACT_XMP_H__
+#define __TRACKER_EXTRACT_XMP_H__
#include <glib.h>
+G_BEGIN_DECLS
+
typedef struct {
/* NS_DC */
- gchar *title, *rights, *creator, *description, *date, *keywords, *subject,
- *publisher, *contributor, *type, *format, *identifier, *source,
- *language, *relation, *coverage;
+ gchar *title;
+ gchar *rights;
+ gchar *creator;
+ gchar *description;
+ gchar *date;
+ gchar *keywords;
+ gchar *subject;
+
+ gchar *publisher;
+ gchar *contributor;
+ gchar *type;
+ gchar *format;
+ gchar *identifier;
+ gchar *source;
+ gchar *language;
+ gchar *relation;
+ gchar *coverage;
/* NS_CC */
gchar *license;
/* NS_PDF */
- gchar *PDFtitle, *PDFkeywords;
+ gchar *pdf_title;
+ gchar *pdf_keywords;
/* NS_EXIF */
- gchar *Title, *DateTimeOriginal, *Artist, *Make, *Model, *Orientation,
- *Flash, *MeteringMode, *ExposureTime, *FNumber, *FocalLength,
- *ISOSpeedRatings, *WhiteBalance, *Copyright;
+ gchar *title2;
+ gchar *time_original;
+ gchar *artist;
+ gchar *make;
+ gchar *model;
+ gchar *orientation;
+ gchar *flash;
+ gchar *metering_mode;
+ gchar *exposure_time;
+ gchar *fnumber;
+ gchar *focal_length;
+
+ gchar *iso_speed_ratings;
+ gchar *white_balance;
+ gchar *copyright;
/* TODO NS_XAP*/
/* TODO NS_IPTC4XMP */
/* TODO NS_PHOTOSHOP */
- gchar *Address, *Country, *State, *City;
+ gchar *address;
+ gchar *country;
+ gchar *state;
+ gchar *city;
} TrackerXmpData;
+gboolean tracker_xmp_read (const gchar *buffer,
+ size_t len,
+ const gchar *uri,
+ TrackerXmpData *data);
+gboolean tracker_xmp_apply (TrackerSparqlBuilder *metadata,
+ const gchar *uri,
+ TrackerXmpData *xmp_data);
-void tracker_read_xmp (const gchar *buffer,
- size_t len,
- const gchar *uri,
- TrackerXmpData *data);
-
-void tracker_apply_xmp (TrackerSparqlBuilder *metadata,
- const gchar *uri,
- TrackerXmpData *xmp_data);
+G_END_DECLS
-#endif /* _TRACKER_XMP_H_ */
+#endif /* __TRACKER_EXTRACT_XMP_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]