Membaca Metadata

By | February 12, 2022
Print Friendly, PDF & Email
892 Views

Metadata adalah merupakan gabungan dari dua kata, yaitu “meta” yang berarti deskripsi atau definisi mendasar, dan tentu saja “data”, yaitu sekumpulan informasi. Pengertian metadata berisi ringkasan detail mendasar tentang suatu data. Metadata bisa membuat pencarian dan pengolahan data lebih mudah dan cepat. Hal ini sering ditemukan untuk spreadsheet, video, foto atau gambar, dan bahkan laman web.

Saat ini banyak sekali jenis format file yang ditandai dengan dengan beragam extension nya, sebagai contoh untuk dokumen saja ada *.txt, *.docx, *.odt. Untuk file music seperti .*wav; *.mp3; * semuanya dibuat berbeda2 sesuai dengan encode-decode. Tentu dengan membaca metadatanya akan mempermudah kita dalam melakukan pengelompokannya. Library yang mampu membaca beragam jenis file yang berbeda-beda yang akan kita gunakan berbasis opensource yaitu Apache Tika.

Apache Tika

Toolkit Apache Tika™ mendeteksi dan mengekstrak metadata dan teks dari lebih dari seribu jenis file yang berbeda (seperti PPT, XLS, dan PDF). Semua jenis file ini dapat diuraikan melalui satu antarmuka, menjadikan Tika berguna untuk pengindeksan mesin pencari, analisis konten, terjemahan, dan banyak lagi. Kalian bisa download di https://tika.apache.org/download.html

Kekurangannya menggunakan Apache Tika cuman satu saja! yaitu ukuran library yang sangat besar yaitu 90 Mb hal ini wajar saja sih! karena mampu melakukan pembaca metadata dengan beragam jenisnya!

Parser dan Detector Metadata

Apache TIka menggunakan Parser dan Detector sebagai interface nya. Ketika saya sedang mencari library untuk memutar file mp3 http://jacomp3player.sourceforge.net/guide.html yang simple namun untuk mengetahui detail informasi metadatanya kita butuh library yang lain juga. Membaca Metadata pada file digunakan untuk memberikan informasi ke pengguna secara cepat. Yuk kita apache Tika dengan kode berikut, saya ambil file mp3 dari youtube

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.parser.mp3.Mp3Parser;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class NewMain {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws InterruptedException {
        // TODO code application logic here
        
        NewMain.demo();
        
    }
    public static void demo(){
        String fileLocation = "D:/y2mate.com - Wings Sejati 1990 YouTube.mp3";

        try {
            InputStream input = new FileInputStream(new File(fileLocation));
            ContentHandler handler =  (ContentHandler) new DefaultHandler();
            Metadata metadata = new Metadata();
            Parser parser = new Mp3Parser();
            ParseContext parseCtx = new ParseContext();
            parser.parse(input,  handler, metadata, parseCtx);
            input.close();

            // List all metadata
            String[] metadataNames = metadata.names();

            for(String name : metadataNames){
                System.out.println(name + ": " + metadata.get(name));
            }

            // Retrieve the necessary info from metadata
            // Names - title, xmpDM:artist etc. - mentioned below may differ based
            System.out.println("----------------------------------------------");
            System.out.println("Title: " + metadata.get("title"));
            System.out.println("Artists: " + metadata.get("xmpDM:artist"));
            System.out.println("Composer : "+metadata.get("xmpDM:composer"));
            System.out.println("Genre : "+metadata.get("xmpDM:genre"));
            System.out.println("Album : "+metadata.get("xmpDM:album"));

        } catch (FileNotFoundException e) {
        } catch (IOException | SAXException | TikaException e) {
        }
   }       
    
}

hasilnya

xmpDM:audioSampleRate: 44100
channels: 2
xmpDM:audioCompressor: MP3
xmpDM:audioChannelType: Stereo
version: MPEG 3 Layer III Version 1
xmpDM:duration: 307.6924133300781
Content-Type: audio/mpeg
samplerate: 44100
----------------------------------------------
Title: null
Artists: null
Composer : null
Genre : null
Album : null

Membaca metadata file gambar

Sesuai dengan penjelasannya diatas, interface nya Apache Tika menggunakan parser, maka kita bisa mengubah jenis parser yang digunakan. Misalkan saja untuk Membaca Metadata file jpeg, maka ubah saja  Parser parser = new Mp3Parser(); menjadi Parser parser = new JpegParser(); Hasilnya sangat lengkap sekali bahkan kita tahu

  1. asal device untuk memotretnya
  2. tanggal berapa diambil gambarnya
Exif SubIFD:ISO Speed Ratings: 100
Number of Tables: 4 Huffman tables
Compression Type: Baseline
Exif SubIFD:Interoperability Version: 
Number of Components: 3
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
Exif SubIFD:Exif Image Width: 0 pixels
Exif IFD0:X Resolution: 72 dots per inch
tiff:ResolutionUnit: Inch
Exif SubIFD:Scene Type: Unknown (0)
Exif SubIFD:Exposure Mode: Auto exposure
X Resolution: 1 dot
tiff:Make: OPPO
Exif SubIFD:User Comment: oppo_0
Component 3: Cr component: Quantization table 1, Sampling factors 1 horiz/1 vert
Version: 1.1
Exif SubIFD:Components Configuration: YCbCr
Exif SubIFD:Exposure Bias Value: 0 EV
Exif SubIFD:Metering Mode: Unknown
Exif SubIFD:White Balance Mode: Auto white balance
tiff:BitsPerSample: 8
Exif SubIFD:Sub-Sec Time Original: 980000
exif:FNumber: 1.8
Exif IFD0:YCbCr Positioning: Center of pixel array
Exif SubIFD:Shutter Speed Value: 1 sec
Exif IFD0:Orientation: Top, left side (Horizontal / normal)
tiff:Orientation: 1
Exif SubIFD:F-Number: f/1.8
exif:FocalLength: 4.05
Exif IFD0:Date/Time: 2021:09:03 16:39:07
tiff:YResolution: 72.0
Y Resolution: 1 dot
Exif SubIFD:Interoperability Index: Unknown ()
Data Precision: 8 bits
Exif SubIFD:Flash: Flash did not fire
tiff:ImageLength: 0
Thumbnail Height Pixels: 0
Exif IFD0:Model: OPPO A9 2020
dcterms:created: 2021-09-03T23:39:07
dcterms:modified: 2021-09-03T23:39:07
Exif SubIFD:Sub-Sec Time: 980000
exif:Flash: false
exif:ExposureTime: 0.002645
Exif SubIFD:Color Space: Undefined
Exif SubIFD:Focal Length 35: Unknown
Exif IFD0:Image Height: 3000 pixels
File Size: 3935372 bytes
Exif SubIFD:Exposure Time: 529/200000 sec
Exif SubIFD:Exif Version: 2.10
Exif IFD0:Image Width: 4000 pixels
Exif SubIFD:Focal Length: 4 mm
File Name: apache-tika-9823396331204732870.tmp
Exif IFD0:Resolution Unit: Inch
Exif SubIFD:Date/Time Original: 2021:09:03 16:39:07
Exif SubIFD:Sub-Sec Time Digitized: 980000
Resolution Units: none
Exif SubIFD:Max Aperture Value: f/1.0
Exif SubIFD:Makernote: 
File Modified Date: Sat Feb 12 06:05:54 +07:00 2022
tiff:XResolution: 72.0
Exif SubIFD:Sensing Method: Unknown (0)
exif:DateTimeOriginal: 2021-09-03T23:39:07
Image Height: 3000 pixels
Thumbnail Width Pixels: 0
Exif SubIFD:FlashPix Version: 1.00
Exif SubIFD:Exif Image Height: 0 pixels
Image Width: 4000 pixels
tiff:Model: OPPO A9 2020
Exif SubIFD:Brightness Value: 0.0
exif:IsoSpeedRatings: 100
Exif SubIFD:Exposure Program: Unknown (0)
Exif IFD0:Make: OPPO
Exif SubIFD:Aperture Value: f/1.5
Exif SubIFD:Date/Time Digitized: 2021:09:03 16:39:07
tiff:ImageWidth: 0
Exif IFD0:Y Resolution: 72 dots per inch

Lebih lengkapnya kalian bisa menggunakan parser berikut sesuai keperluan

Parser Package Description
AppleSingleFileParser org.apache.tika.parser.apple It is used to parse apple file.
ClassParser org.apache.tika.parser.asm It is used to parse class file.
AudioParser org.apache.tika.parser.audio It is used to parse audio file.
MidiParser org.apache.tika.parser.audio It is used to parse midi file.
Pkcs7Parser org.apache.tika.parser.crypto It is used to parse pkcs7.
TSDParser org.apache.tika.parser.crypto It is used to parse tsd.
DWGParser org.apache.tika.parser.dwg It is used to parse dwg.
EnviHeaderParser org.apache.tika.parser.envi It is used to parse envi.
EpubParser org.apache.tika.parser.epub It is used to parse epub.
ExecutableParser org.apache.tika.parser.executable It is used to parse executable.
HtmlParser org.apache.tika.parser.html It is used to parse html file.
ImageParser org.apache.tika.parser.image It is used to parse image file.
WebPParser org.apache.tika.parser.image It is used to parse webp.
IptcAnpaParser org.apache.tika.parser.iptc It is used to parse iptcanpa.
JpegParser org.apache.tika.parser.jpeg It is used to parse jpeg.
DBFParser org.apache.tika.parser.dbf It is used to parse dbf file.
Mp3Parser org.apache.tika.parser.mp3 It is used to parse mp3.
MP4Parser org.apache.tika.parser.mp4 It is used to parse mp4.
PDFParser org.apache.tika.parser.pdf It is used to parse pdf file.

 

ref:

https://stackoverflow.com/questions/1645803/how-to-read-mp3-file-tags

Leave a Reply