[tracker-miners/wip/carlosg/split-dataobject-informationelement] tracker-extract: Drop specific XMP module
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker-miners/wip/carlosg/split-dataobject-informationelement] tracker-extract: Drop specific XMP module
- Date: Thu, 30 Apr 2020 11:11:57 +0000 (UTC)
commit 94a72cf73edabfe3841a42a5abc18269605581c0
Author: Carlos Garnacho <carlosg gnome org>
Date: Thu Apr 30 12:48:30 2020 +0200
tracker-extract: Drop specific XMP module
This instead will be handled for the formats we expect a sidecar
file for. This makes metadata from the real file and its sidecar
point both to the same resource, as it conceptually is.
src/tracker-extract/10-xmp.rule | 4 -
src/tracker-extract/meson.build | 4 -
src/tracker-extract/tracker-extract-gif.c | 18 ++-
src/tracker-extract/tracker-extract-jpeg.c | 16 ++
src/tracker-extract/tracker-extract-pdf.c | 21 ++-
src/tracker-extract/tracker-extract-png.c | 19 ++-
src/tracker-extract/tracker-extract-tiff.c | 14 ++
src/tracker-extract/tracker-extract-xmp.c | 225 -----------------------------
8 files changed, 84 insertions(+), 237 deletions(-)
---
diff --git a/src/tracker-extract/meson.build b/src/tracker-extract/meson.build
index 51b679f68..bd76ee9f5 100644
--- a/src/tracker-extract/meson.build
+++ b/src/tracker-extract/meson.build
@@ -106,10 +106,6 @@ if libvorbis.found()
modules += [['extract-vorbis', 'tracker-extract-vorbis.c', ['10-vorbis.rule'], [libvorbis,
tracker_miners_common_dep]]]
endif
-if exempi.found()
- modules += [['extract-xmp', 'tracker-extract-xmp.c', ['10-xmp.rule'], []]]
-endif
-
if libgxps.found()
modules += [['extract-xps', 'tracker-extract-xps.c', ['10-xps.rule'], [libgxps,
tracker_miners_common_dep]]]
endif
diff --git a/src/tracker-extract/tracker-extract-gif.c b/src/tracker-extract/tracker-extract-gif.c
index b33170ee0..f30069797 100644
--- a/src/tracker-extract/tracker-extract-gif.c
+++ b/src/tracker-extract/tracker-extract-gif.c
@@ -104,6 +104,7 @@ static inline void print_gif_error()
static TrackerResource *
read_metadata (GifFileType *gifFile,
+ GFile *file,
const gchar *uri)
{
TrackerResource *metadata;
@@ -118,6 +119,7 @@ read_metadata (GifFileType *gifFile,
MergeData md = { 0 };
GifData gd = { 0 };
TrackerXmpData *xd = NULL;
+ gchar *sidecar = NULL;
do {
GifByteType *ExtData;
@@ -239,6 +241,10 @@ read_metadata (GifFileType *gifFile,
} while (RecordType != TERMINATE_RECORD_TYPE);
+ if (!xd) {
+ xd = tracker_xmp_new_from_sidecar (file, &sidecar);
+ }
+
if (!xd) {
xd = g_new0 (TrackerXmpData, 1);
}
@@ -251,6 +257,16 @@ read_metadata (GifFileType *gifFile,
tracker_resource_add_uri (metadata, "rdf:type", "nfo:Image");
tracker_resource_add_uri (metadata, "rdf:type", "nmm:Photo");
+ if (sidecar) {
+ TrackerResource *sidecar_resource;
+
+ sidecar_resource = tracker_resource_new (sidecar);
+ tracker_resource_add_uri (sidecar_resource, "rdf:type", "nfo:FileDataObject");
+ tracker_resource_add_relation (sidecar_resource, "nie:interpretedAs", metadata);
+
+ tracker_resource_add_take_relation (metadata, "nie:isStoredAs", sidecar_resource);
+ }
+
if (xd->license) {
tracker_resource_set_string (metadata, "nie:license", xd->license);
}
@@ -502,7 +518,7 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
uri = g_file_get_uri (file);
- metadata = read_metadata (gifFile, uri);
+ metadata = read_metadata (gifFile, file, uri);
g_free (uri);
diff --git a/src/tracker-extract/tracker-extract-jpeg.c b/src/tracker-extract/tracker-extract-jpeg.c
index dce530f8a..c04942cdc 100644
--- a/src/tracker-extract/tracker-extract-jpeg.c
+++ b/src/tracker-extract/tracker-extract-jpeg.c
@@ -267,6 +267,22 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
ed = g_new0 (TrackerExifData, 1);
}
+ if (!xd) {
+ gchar *sidecar = NULL;
+
+ xd = tracker_xmp_new_from_sidecar (file, &sidecar);
+
+ if (sidecar) {
+ TrackerResource *sidecar_resource;
+
+ sidecar_resource = tracker_resource_new (sidecar);
+ tracker_resource_add_uri (sidecar_resource, "rdf:type", "nfo:FileDataObject");
+ tracker_resource_add_relation (sidecar_resource, "nie:interpretedAs", metadata);
+
+ tracker_resource_add_take_relation (metadata, "nie:isStoredAs", sidecar_resource);
+ }
+ }
+
if (!xd) {
xd = g_new0 (TrackerXmpData, 1);
}
diff --git a/src/tracker-extract/tracker-extract-pdf.c b/src/tracker-extract/tracker-extract-pdf.c
index 14bd881b7..130c364f5 100644
--- a/src/tracker-extract/tracker-extract-pdf.c
+++ b/src/tracker-extract/tracker-extract-pdf.c
@@ -399,8 +399,25 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
keywords = g_ptr_array_new_with_free_func ((GDestroyNotify) g_free);
- if (xml && *xml &&
- (xd = tracker_xmp_new (xml, strlen (xml), uri)) != NULL) {
+ if (xml && *xml) {
+ xd = tracker_xmp_new (xml, strlen (xml), uri);
+ } else {
+ gchar *sidecar = NULL;
+
+ xd = tracker_xmp_new_from_sidecar (file, &sidecar);
+
+ if (sidecar) {
+ TrackerResource *sidecar_resource;
+
+ sidecar_resource = tracker_resource_new (sidecar);
+ tracker_resource_add_uri (sidecar_resource, "rdf:type", "nfo:FileDataObject");
+ tracker_resource_add_relation (sidecar_resource, "nie:interpretedAs", metadata);
+
+ tracker_resource_add_take_relation (metadata, "nie:isStoredAs", sidecar_resource);
+ }
+ }
+
+ if (xd) {
/* The casts here are well understood and known */
md.title = (gchar *) tracker_coalesce_strip (4, pd.title, xd->title, xd->title2,
xd->pdf_title);
md.subject = (gchar *) tracker_coalesce_strip (2, pd.subject, xd->subject);
diff --git a/src/tracker-extract/tracker-extract-png.c b/src/tracker-extract/tracker-extract-png.c
index d16fadcd9..18f061aa1 100644
--- a/src/tracker-extract/tracker-extract-png.c
+++ b/src/tracker-extract/tracker-extract-png.c
@@ -187,6 +187,7 @@ read_metadata (TrackerResource *metadata,
png_structp png_ptr,
png_infop info_ptr,
png_infop end_ptr,
+ GFile *file,
const gchar *uri)
{
MergeData md = { 0 };
@@ -335,6 +336,22 @@ read_metadata (TrackerResource *metadata,
ed = g_new0 (TrackerExifData, 1);
}
+ if (!xd) {
+ gchar *sidecar = NULL;
+
+ xd = tracker_xmp_new_from_sidecar (file, &sidecar);
+
+ if (sidecar) {
+ TrackerResource *sidecar_resource;
+
+ sidecar_resource = tracker_resource_new (sidecar);
+ tracker_resource_add_uri (sidecar_resource, "rdf:type", "nfo:FileDataObject");
+ tracker_resource_add_relation (sidecar_resource, "nie:interpretedAs", metadata);
+
+ tracker_resource_add_take_relation (metadata, "nie:isStoredAs", sidecar_resource);
+ }
+ }
+
if (!xd) {
xd = g_new0 (TrackerXmpData, 1);
}
@@ -716,7 +733,7 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
uri = g_file_get_uri (file);
- read_metadata (metadata, png_ptr, info_ptr, end_ptr, uri);
+ read_metadata (metadata, png_ptr, info_ptr, end_ptr, file, uri);
g_free (uri);
tracker_resource_set_int64 (metadata, "nfo:width", width);
diff --git a/src/tracker-extract/tracker-extract-tiff.c b/src/tracker-extract/tracker-extract-tiff.c
index 389ce74cb..41a1ceeec 100644
--- a/src/tracker-extract/tracker-extract-tiff.c
+++ b/src/tracker-extract/tracker-extract-tiff.c
@@ -326,6 +326,20 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
#ifdef HAVE_EXEMPI
if (TIFFGetField (image, TIFFTAG_XMLPACKET, &size, &xmp_offset)) {
xd = tracker_xmp_new (xmp_offset, size, uri);
+ } else {
+ gchar *sidecar = NULL;
+
+ xd = tracker_xmp_new_from_sidecar (file, &sidecar);
+
+ if (sidecar) {
+ TrackerResource *sidecar_resource;
+
+ sidecar_resource = tracker_resource_new (sidecar);
+ tracker_resource_add_uri (sidecar_resource, "rdf:type", "nfo:FileDataObject");
+ tracker_resource_add_relation (sidecar_resource, "nie:interpretedAs", metadata);
+
+ tracker_resource_add_take_relation (metadata, "nie:isStoredAs", sidecar_resource);
+ }
}
#endif /* HAVE_EXEMPI */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]