diff --git a/addon/YaCy.app/Contents/Info.plist b/addon/YaCy.app/Contents/Info.plist index cdfe28409..21f099847 100644 --- a/addon/YaCy.app/Contents/Info.plist +++ b/addon/YaCy.app/Contents/Info.plist @@ -83,7 +83,7 @@ $JAVAROOT/lib/lucene-queryparser-4.3.0.jar $JAVAROOT/lib/lucene-spatial-4.3.0.jar $JAVAROOT/lib/lucene-suggest-4.3.0.jar - $JAVAROOT/lib/metadata-extractor-2.4.0-beta-1.jar + $JAVAROOT/lib/metadata-extractor-2.6.2.jar $JAVAROOT/lib/mysql-connector-java-5.1.12-bin.jar $JAVAROOT/lib/noggit-0.5.jar $JAVAROOT/lib/pdfbox-1.8.1.jar diff --git a/build.xml b/build.xml index e32f26f05..c0e01449a 100644 --- a/build.xml +++ b/build.xml @@ -202,7 +202,7 @@ - + diff --git a/lib/metadata-extractor-2.4.0-beta-1.jar b/lib/metadata-extractor-2.4.0-beta-1.jar deleted file mode 100644 index 3720d649d..000000000 Binary files a/lib/metadata-extractor-2.4.0-beta-1.jar and /dev/null differ diff --git a/lib/metadata-extractor-2.6.2.License b/lib/metadata-extractor-2.6.2.License new file mode 100644 index 000000000..4c7ccef0f --- /dev/null +++ b/lib/metadata-extractor-2.6.2.License @@ -0,0 +1,35 @@ +Copyright 2002-2013 Drew Noakes + + + + Licensed under the Apache License, Version 2.0 (the "License"); + + you may not use this file except in compliance with the License. + + You may obtain a copy of the License at + + + + http://www.apache.org/licenses/LICENSE-2.0 + + + + Unless required by applicable law or agreed to in writing, software + + distributed under the License is distributed on an "AS IS" BASIS, + + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + + limitations under the License. + + + +More information about this project is available at: + + + + http://drewnoakes.com/code/exif/ + + http://code.google.com/p/metadata-extractor/ diff --git a/lib/metadata-extractor-2.6.2.jar b/lib/metadata-extractor-2.6.2.jar new file mode 100644 index 000000000..bd24cc1d5 Binary files /dev/null and b/lib/metadata-extractor-2.6.2.jar differ diff --git a/source/net/yacy/document/parser/images/genericImageParser.java b/source/net/yacy/document/parser/images/genericImageParser.java index 7203f75ae..19638ff4d 100644 --- a/source/net/yacy/document/parser/images/genericImageParser.java +++ b/source/net/yacy/document/parser/images/genericImageParser.java @@ -54,9 +54,9 @@ import net.yacy.kelondro.util.FileUtils; import com.drew.imaging.jpeg.JpegProcessingException; import com.drew.imaging.jpeg.JpegSegmentReader; +import com.drew.lang.ByteArrayReader; import com.drew.metadata.Directory; import com.drew.metadata.Metadata; -import com.drew.metadata.MetadataException; import com.drew.metadata.Tag; import com.drew.metadata.exif.ExifReader; import com.drew.metadata.iptc.IptcReader; @@ -128,31 +128,32 @@ public class genericImageParser extends AbstractParser implements Parser { JpegSegmentReader segmentReader; try { - segmentReader = new JpegSegmentReader(new ByteArrayInputStream(b)); + /**/ + segmentReader = new JpegSegmentReader(b); final byte[] exifSegment = segmentReader.readSegment(JpegSegmentReader.SEGMENT_APP1); final byte[] iptcSegment = segmentReader.readSegment(JpegSegmentReader.SEGMENT_APPD); final Metadata metadata = new Metadata(); - new ExifReader(exifSegment).extract(metadata); - new IptcReader(iptcSegment).extract(metadata); - + if (exifSegment != null) new ExifReader().extract(new ByteArrayReader(exifSegment),metadata); + if (iptcSegment != null) new IptcReader().extract(new ByteArrayReader(iptcSegment),metadata); + /**/ + // alternative to above: to read all included jpeg tags and metadata + // final Metadata metadata = JpegMetadataReader.readMetadata(new ByteArrayInputStream(b)); + @SuppressWarnings("unchecked") - final - Iterator directories = metadata.getDirectoryIterator(); + final Iterator directories = metadata.getDirectories().iterator(); final HashMap props = new HashMap(); while (directories.hasNext()) { final Directory directory = directories.next(); - @SuppressWarnings("unchecked") - final - Iterator tags = directory.getTagIterator(); + @SuppressWarnings("unchecked") + final Iterator tags = directory.getTags().iterator(); while (tags.hasNext()) { final Tag tag = tags.next(); - try { + // ! startswith "Unknown tag" + if (!tag.getTagName().startsWith("Unknown")) { // filter out returned TagName of "Unknown tag" props.put(tag.getTagName(), tag.getDescription()); ii.info.append(tag.getTagName() + ": " + tag.getDescription() + " .\n"); - } catch (final MetadataException e) { - //Log.logException(e); - } + } } title = props.get("Image Description"); if (title == null || title.isEmpty()) title = props.get("Headline");