[tracker/harmattan: 1906/2240] Fixed dup field usage in XMP extractors
- From: Martyn James Russell <mr src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker/harmattan: 1906/2240] Fixed dup field usage in XMP extractors
- Date: Thu, 4 Feb 2010 17:22:25 +0000 (UTC)
commit 7b2dbb7ef29e8dece02c9d9d04ba82a0af6691c7
Author: Philip Van Hoof <philip codeminded be>
Date: Tue Dec 22 14:42:15 2009 +0100
Fixed dup field usage in XMP extractors
src/tracker-extract/tracker-extract-jpeg.c | 7 ++++++-
src/tracker-extract/tracker-extract-pdf.c | 7 ++++++-
src/tracker-extract/tracker-extract-png.c | 11 +++++++++--
src/tracker-extract/tracker-extract-tiff.c | 13 ++++++++++---
src/tracker-extract/tracker-xmp.c | 21 ++++++++++++++-------
src/tracker-extract/tracker-xmp.h | 3 +++
6 files changed, 48 insertions(+), 14 deletions(-)
---
diff --git a/src/tracker-extract/tracker-extract-jpeg.c b/src/tracker-extract/tracker-extract-jpeg.c
index 4ae3a50..8a215ea 100644
--- a/src/tracker-extract/tracker-extract-jpeg.c
+++ b/src/tracker-extract/tracker-extract-jpeg.c
@@ -294,7 +294,7 @@ extract_jpeg (const gchar *uri,
g_free (ed.make);
}
- md.title = tracker_coalesce (2, xd.title, xd.Title, ed.document_name);
+ 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);
@@ -324,6 +324,11 @@ extract_jpeg (const gchar *uri,
g_free (xd.keywords);
}
+ if (xd.PDFkeywords) {
+ insert_keywords (metadata, xd.PDFkeywords);
+ g_free (xd.PDFkeywords);
+ }
+
if (xd.subject) {
insert_keywords (metadata, xd.subject);
g_free (xd.subject);
diff --git a/src/tracker-extract/tracker-extract-pdf.c b/src/tracker-extract/tracker-extract-pdf.c
index bf025f4..44922a9 100644
--- a/src/tracker-extract/tracker-extract-pdf.c
+++ b/src/tracker-extract/tracker-extract-pdf.c
@@ -224,7 +224,7 @@ extract_pdf (const gchar *uri,
g_free (xml);
xml = NULL;
- md.title = tracker_coalesce (2, pd.title, xd.title, xd.Title);
+ md.title = tracker_coalesce (3, pd.title, xd.title, xd.Title, xd.PDFtitle);
md.subject = tracker_coalesce (2, pd.subject, xd.subject);
md.date = tracker_coalesce (3, pd.creation_date, xd.date, xd.DateTimeOriginal);
md.author = tracker_coalesce (2, pd.author, xd.creator);
@@ -236,6 +236,11 @@ extract_pdf (const gchar *uri,
g_free (xd.keywords);
}
+ if (xd.PDFkeywords) {
+ insert_keywords (metadata, xd.PDFkeywords);
+ g_free (xd.PDFkeywords);
+ }
+
if (xd.publisher) {
tracker_sparql_builder_predicate (metadata, "nco:publisher");
tracker_sparql_builder_object_blank_open (metadata);
diff --git a/src/tracker-extract/tracker-extract-png.c b/src/tracker-extract/tracker-extract-png.c
index 482ec27..92518e8 100644
--- a/src/tracker-extract/tracker-extract-png.c
+++ b/src/tracker-extract/tracker-extract-png.c
@@ -194,8 +194,10 @@ read_metadata (png_structp png_ptr, png_infop info_ptr, const gchar *uri, Tracke
png_data.author,
xmp_data.creator);
- merge_data.title = tracker_coalesce (2, png_data.title,
- xmp_data.title, xmp_data.Title);
+ merge_data.title = tracker_coalesce (4, png_data.title,
+ xmp_data.title,
+ xmp_data.Title,
+ xmp_data.PDFtitle);
merge_data.copyright = tracker_coalesce (2, png_data.copyright,
xmp_data.rights);
@@ -266,6 +268,11 @@ 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.subject) {
insert_keywords (metadata, uri, xmp_data.subject);
g_free (xmp_data.subject);
diff --git a/src/tracker-extract/tracker-extract-tiff.c b/src/tracker-extract/tracker-extract-tiff.c
index 8148eb8..240d463 100644
--- a/src/tracker-extract/tracker-extract-tiff.c
+++ b/src/tracker-extract/tracker-extract-tiff.c
@@ -380,9 +380,11 @@ extract_tiff (const gchar *uri, TrackerSparqlBuilder *metadata)
g_free (exif_data.make);
}
- merge_data.title = tracker_coalesce (3, tiff_data.documentname,
- xmp_data.title, xmp_data.Title,
- exif_data.document_name);
+ merge_data.title = tracker_coalesce (5, tiff_data.documentname,
+ xmp_data.title,
+ xmp_data.Title,
+ exif_data.document_name,
+ xmp_data.PDFtitle);
merge_data.orientation = tracker_coalesce (4, tiff_data.orientation,
exif_data.orientation,
@@ -464,6 +466,11 @@ 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.subject) {
insert_keywords (metadata, uri, xmp_data.subject);
g_free (xmp_data.subject);
diff --git a/src/tracker-extract/tracker-xmp.c b/src/tracker-extract/tracker-xmp.c
index d5d9474..fea2859 100644
--- a/src/tracker-extract/tracker-xmp.c
+++ b/src/tracker-extract/tracker-xmp.c
@@ -309,11 +309,11 @@ tracker_xmp_iter_simple (const gchar *uri,
} else
/* PDF*/
if (g_ascii_strcasecmp (schema, NS_PDF) == 0) {
- if (!data->keywords && g_ascii_strcasecmp (name, "keywords") == 0) {
- data->keywords = g_strdup (value);
+ if (!data->PDFkeywords && g_ascii_strcasecmp (name, "keywords") == 0) {
+ data->PDFkeywords = g_strdup (value);
} else
- if (!data->title && g_ascii_strcasecmp (name, "title") == 0) {
- data->title = g_strdup (value);
+ if (!data->PDFtitle && g_ascii_strcasecmp (name, "title") == 0) {
+ data->PDFtitle = g_strdup (value);
}
} else
/* Dublin Core */
@@ -373,7 +373,7 @@ tracker_xmp_iter_simple (const gchar *uri,
data->license = g_strdup (value);
}
} else
- /* Photoshop */
+ /* 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);
@@ -543,6 +543,11 @@ 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->publisher) {
tracker_sparql_builder_predicate (metadata, "nco:publisher");
@@ -612,8 +617,10 @@ tracker_apply_xmp (TrackerSparqlBuilder *metadata, const gchar *uri, TrackerXmpD
g_free (final_camera);
}
- if (xmp_data->title || xmp_data->Title) {
- gchar *final_title = tracker_coalesce (2, xmp_data->title, xmp_data->Title);
+ if (xmp_data->title || xmp_data->Title || xmp_data->PDFtitle) {
+ gchar *final_title = tracker_coalesce (3, xmp_data->title,
+ xmp_data->Title,
+ xmp_data->PDFtitle);
tracker_sparql_builder_predicate (metadata, "nie:title");
tracker_sparql_builder_object_unvalidated (metadata, final_title);
g_free (final_title);
diff --git a/src/tracker-extract/tracker-xmp.h b/src/tracker-extract/tracker-xmp.h
index b525e83..e60bce5 100644
--- a/src/tracker-extract/tracker-xmp.h
+++ b/src/tracker-extract/tracker-xmp.h
@@ -31,6 +31,9 @@ typedef struct {
/* NS_CC */
gchar *license;
+ /* NS_PDF */
+ gchar *PDFtitle, *PDFkeywords;
+
/* NS_EXIF */
gchar *Title, *DateTimeOriginal, *Artist, *Make, *Model, *Orientation,
*Flash, *MeteringMode, *ExposureTime, *FNumber, *FocalLength,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]