TİKA - Meta Veri Çıkarma
Tika, içeriğin yanı sıra bir dosyadan meta verileri de çıkarır. Meta veriler, bir dosya ile sağlanan ek bilgilerden başka bir şey değildir. Bir ses dosyası düşünürsek, sanatçı adı, albüm adı, başlık meta verilerin altında gelir.
XMP Standartları
Genişletilebilir Meta Veri Platformu (XMP), bir dosyanın içeriğiyle ilgili bilgileri işlemek ve depolamak için bir standarttır. Adobe Systems Inc tarafından oluşturulmuştur . XMP, meta verilerin tanımlanması, oluşturulması ve işlenmesi için standartlar sağlar . Bu standardı PDF , JPEG , JPEG , GIF , jpg , HTML vb. Gibi çeşitli dosya formatlarına yerleştirebilirsiniz .
Emlak Sınıfı
Tika, XMP özellik tanımını takip etmek için Property sınıfını kullanır. Meta verilerin adını ve değerini yakalamak için PropertyType ve ValueType numaralandırmalarını sağlar.
Meta Veri Sınıfı
Bu sınıf , çeşitli meta veri modellerine destek sağlamak için ClimateForcast , CativeCommons, Geographic , TIFF vb. Gibi çeşitli arabirimleri uygular . Ayrıca bu sınıf, içeriği bir dosyadan çıkarmak için çeşitli yöntemler sağlar.
Meta Veri Adları
Bir dosyanın tüm meta veri adlarının listesini, yöntem adları () kullanarak meta veri nesnesinden çıkarabiliriz . Tüm isimleri bir dizge dizisi olarak döndürür. Meta verinin adını kullanarak değeri,get()yöntem. Bir meta veri adı alır ve onunla ilişkili bir değer döndürür.
String[] metadaNames = metadata.names();
String value = metadata.get(name);
Ayrıştırma Yöntemini Kullanarak Meta Verileri Çıkarma
Parse () kullanarak bir dosyayı ayrıştırdığımızda, parametrelerden biri olarak boş bir meta veri nesnesi geçiririz. Bu yöntem, verilen dosyanın meta verilerini (bu dosya varsa) çıkarır ve bunları meta veri nesnesine yerleştirir. Bu nedenle, dosyayı parse () kullanarak ayrıştırdıktan sonra, bu nesneden meta verileri çıkarabiliriz.
Parser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata(); //empty metadata object
FileInputStream inputstream = new FileInputStream(file);
ParseContext context = new ParseContext();
parser.parse(inputstream, handler, metadata, context);
// now this metadata object contains the extracted metadata of the given file.
metadata.metadata.names();
Aşağıda, bir metin dosyasından meta verileri çıkarmak için eksiksiz bir program verilmiştir.
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.SAXException;
public class GetMetadata {
public static void main(final String[] args) throws IOException, TikaException {
//Assume that boy.jpg is in your current directory
File file = new File("boy.jpg");
//Parser method parameters
Parser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(file);
ParseContext context = new ParseContext();
parser.parse(inputstream, handler, metadata, context);
System.out.println(handler.toString());
//getting the list of all meta data elements
String[] metadataNames = metadata.names();
for(String name : metadataNames) {
System.out.println(name + ": " + metadata.get(name));
}
}
}
Yukarıdaki kodu GetMetadata.java olarak kaydedin ve aşağıdaki komutları kullanarak komut isteminden çalıştırın -
javac GetMetadata .java
java GetMetadata
Boy.jpg'nin anlık görüntüsü aşağıda verilmiştir.
Yukarıdaki programı çalıştırırsanız, size şu çıktıyı verecektir -
X-Parsed-By: org.apache.tika.parser.DefaultParser
Resolution Units: inch
Compression Type: Baseline
Data Precision: 8 bits
Number of Components: 3
tiff:ImageLength: 3000
Component 2: Cb component: Quantization table 1, Sampling factors 1 horiz/1 vert
Component 1: Y component: Quantization table 0, Sampling factors 2 horiz/2 vert
Image Height: 3000 pixels
X Resolution: 300 dots
Original Transmission Reference:
53616c7465645f5f2368da84ca932841b336ac1a49edb1a93fae938b8db2cb3ec9cc4dc28d7383f1
Image Width: 4000 pixels
IPTC-NAA record: 92 bytes binary data
Component 3: Cr component: Quantization table 1, Sampling factors 1 horiz/1 vert
tiff:BitsPerSample: 8
Application Record Version: 4
tiff:ImageWidth: 4000
Content-Type: image/jpeg
Y Resolution: 300 dots
İstediğimiz meta veri değerlerimizi de alabiliriz.
Yeni Meta Veri Değerleri Ekleme
Metadata sınıfının add () yöntemini kullanarak yeni meta veri değerleri ekleyebiliriz. Aşağıda bu yöntemin sözdizimi verilmiştir. Burada yazar adını ekliyoruz.
metadata.add(“author”,”Tutorials point”);
Metadata sınıfı, çeşitli veri modellerini desteklemek için ClimateForcast , CativeCommons, Geographic vb. Sınıflardan miras alınan özellikler dahil olmak üzere önceden tanımlanmış özelliklere sahiptir . Aşağıda, TIFF görüntü formatları için XMP meta veri standartlarını takip etmek için Tika tarafından uygulanan TIFF arayüzünden miras alınan YAZILIM veri türünün kullanımı gösterilmektedir.
metadata.add(Metadata.SOFTWARE,"ms paint");
Aşağıda, belirli bir dosyaya meta veri değerlerinin nasıl ekleneceğini gösteren eksiksiz program verilmiştir. Yeni değerler ekledikten sonra listedeki değişikliği gözlemleyebilmeniz için burada meta veri öğelerinin listesi çıktıda görüntülenir.
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;
import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.SAXException;
public class AddMetadata {
public static void main(final String[] args) throws IOException, SAXException, TikaException {
//create a file object and assume sample.txt is in your current directory
File file = new File("Example.txt");
//Parser method parameters
Parser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(file);
ParseContext context = new ParseContext();
//parsing the document
parser.parse(inputstream, handler, metadata, context);
//list of meta data elements before adding new elements
System.out.println( " metadata elements :" +Arrays.toString(metadata.names()));
//adding new meta data name value pair
metadata.add("Author","Tutorials Point");
System.out.println(" metadata name value pair is successfully added");
//printing all the meta data elements after adding new elements
System.out.println("Here is the list of all the metadata
elements after adding new elements");
System.out.println( Arrays.toString(metadata.names()));
}
}
Yukarıdaki kodu AddMetadata.java sınıfı olarak kaydedin ve komut isteminden çalıştırın -
javac AddMetadata .java
java AddMetadata
Aşağıda, Example.txt'nin içeriği verilmiştir
Hi students welcome to tutorialspoint
Yukarıdaki programı çalıştırırsanız, size şu çıktıyı verecektir -
metadata elements of the given file :
[Content-Encoding, Content-Type]
enter the number of metadata name value pairs to be added 1
enter metadata1name:
Author enter metadata1value:
Tutorials point metadata name value pair is successfully added
Here is the list of all the metadata elements after adding new elements
[Content-Encoding, Author, Content-Type]
Mevcut Meta Veri Öğelerine Değer Ayarlama
Set () yöntemini kullanarak değerleri mevcut meta veri öğelerine ayarlayabilirsiniz. Set () yöntemini kullanarak date özelliğini ayarlamanın sözdizimi aşağıdaki gibidir -
metadata.set(Metadata.DATE, new Date());
Ayrıca set () yöntemini kullanarak özelliklere birden çok değer de ayarlayabilirsiniz. Set () yöntemini kullanarak Author özelliğine birden çok değer ayarlama sözdizimi aşağıdaki gibidir -
metadata.set(Metadata.AUTHOR, "ram ,raheem ,robin ");
Aşağıda set () yöntemini gösteren eksiksiz program verilmiştir.
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Date;
import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.SAXException;
public class SetMetadata {
public static void main(final String[] args) throws IOException,SAXException, TikaException {
//Create a file object and assume example.txt is in your current directory
File file = new File("example.txt");
//parameters of parse() method
Parser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(file);
ParseContext context = new ParseContext();
//Parsing the given file
parser.parse(inputstream, handler, metadata, context);
//list of meta data elements elements
System.out.println( " metadata elements and values of the given file :");
String[] metadataNamesb4 = metadata.names();
for(String name : metadataNamesb4) {
System.out.println(name + ": " + metadata.get(name));
}
//setting date meta data
metadata.set(Metadata.DATE, new Date());
//setting multiple values to author property
metadata.set(Metadata.AUTHOR, "ram ,raheem ,robin ");
//printing all the meta data elements with new elements
System.out.println("List of all the metadata elements after adding new elements ");
String[] metadataNamesafter = metadata.names();
for(String name : metadataNamesafter) {
System.out.println(name + ": " + metadata.get(name));
}
}
}
Yukarıdaki kodu SetMetadata.java olarak kaydedin ve komut isteminden çalıştırın -
javac SetMetadata.java
java SetMetadata
Aşağıda örnek.txt'nin içeriği verilmiştir.
Hi students welcome to tutorialspoint
Yukarıdaki programı çalıştırırsanız, size aşağıdaki çıktıyı verecektir. Çıktıda, yeni eklenen meta veri öğelerini gözlemleyebilirsiniz.
metadata elements and values of the given file :
Content-Encoding: ISO-8859-1
Content-Type: text/plain; charset = ISO-8859-1
Here is the list of all the metadata elements after adding new elements
date: 2014-09-24T07:01:32Z
Content-Encoding: ISO-8859-1
Author: ram, raheem, robin
Content-Type: text/plain; charset = ISO-8859-1