Fájlok metaadatainak olvasása, írása, másolása az ExifTool programmal (2. oldal)

botond küldte be 2019. 06. 15., szo – 16:40 időpontban

A 2. oldal tartalma

 

Folytatás

Az első oldalon megismerkedtünk az exiftool paranccsal, és annak alapvető olvasási lehetőségeivel. Ezen az oldalon bővítjük ismereteinket a metaadatokat kezelő program írási és másolási műveleteivel, valamint még több gyors példán keresztül kipróbáljuk a parancsot más fájlformátumokkal is.

 

 

Alapvető használati módok

Írás

A metaadatok írása az exiftool paranccsal hasonlóan történik, mint az olvasás, annyi különbséggel, hogy ilyenkor a tag-eknek meg kell adni az értéküket. Az írási műveletet több módon is el lehet végezni, attól függően hogy mit szeretnénk elérni:

Értékadás

Ilyenkor egyszerűen csak egy egyenlőségjellel meg kell adni egy értéket a kívánt tag-nak:

exiftool -[csoport:]Mezőnév=<érték> <képfájl neve>

Ugyanez egy konkrét példával:

exiftool -Headline="Kép címe" proba_php.jpg

És az eredmény az alábbi képeken látható, ahol előtte még nem volt "Headline" tag a képfájlban:

ExifTool - Meta Headline tag írása | Linuxportál

ExifTool - Meta Headline tag ellenőrzése | Linuxportál

Hozzáadás

A hozzáadás funkcióval az alábbi műveleteket végezhetjük el:

  • Tétel hozzáadása a lista típusú elemekhez
  • Dátum/idő típusú értékek (pl időbélyegek) növelése
  • Numerikus típusú teg-ek értékének növelése

A szintaxisa a következő:

exiftool -[csoport:]Mezőnév+=<érték> <képfájl neve>

A csoport lehet például EXIF, IPTC, XMP, stb. Nem kötelező megadni. Ha nem adunk meg csoportnevet és a tag létezik több csoportban is, akkor mindegyik csoportban frissíti a megadott mezőnevű tag-et.

Példa a számérték növelésére:

ExifTool - Meta tag számérték növelése | Linuxportál

 

Elvétel

Itt szándékosan nem kivonás nevet használtam, mert ez a funkció nem használható meta tag-ek általános számértékeinek kivonására, hanem az alábbiakra használható:

  • Tétel elvétele a lista típusú elemekből
  • Dátum/idő típusú értékek (pl időbélyegek) csökkentése
  • Tag értékének törlése, amennyiben pontosan megfelelő érték került megadásra

Szintaxisa:

exiftool -[csoport:]Mezőnév-=<érték> <képfájl neve>

A csoportok itt is ugyanúgy működnek, mint a hozzáadásnál, használata nem kötelező.

Példa az értékmező törlésére a pontos érték megadásával:

ExifTool - Meta tag elvétele pontos értékkel | Linuxportál

Ebben a példában először adunk egy szöveges értéket egy tag-nak, majd visszaellenőrizzük. Utána megpróbálunk elvenni belőle egy másik értéket, ami nem sikerül. Végül a pontos érték megadásával sikerül törölnünk a tag értékét.

Lényegében használhattuk volna helyette az alábbi parancsot is:

exiftool -Description-= proba_php.jpg

Ahol az egyenlőségjel után nem adunk meg semmit. Ilyenkor is törli az értéket. A különbség annyi, hogy a pontos értékkel történő elvételt használhatjuk feltételes törlésre például egy automatizáló script-ben, ahol csak olyan értéke(ke)t törlünk, ami pontosan megegyezik az általunk megadottal, illetve csak akkor törli, ha a tag-ban szerepel a meghatározott érték.

Másolás

Az exiftool parancs segítségével át is másolhatjuk egyik fájl metaadatait másik, vagy akár több fájlba is. Szintaxisa a következő:

exiftool -tagsFromFile <forrás fájl> [-forrás tag[>cél tag]...] <cél fájl>

Kapcsolók, paraméterek:

  • -tagsFromFile: Ez után kell megadni a forrás fájlt, aminek át szeretnénk másolni a metaadatait.
  • -forrás tag: Opcionális. Ha megadjuk, akkor csak a megadott tag, vagy csoport (pl. EXIF, IPTC, XMP, GPS, stb) kerül átmásolásra.
  • >cél tag: Ha meg van adva a forrás tag, akkor itt – szintén opcionálisan – adhatjuk meg, hogy a cél fájlban melyik tag-ba vagy csoportba mentse a forrásból kiolvasott adatokat. Természetesen a forrás és a cél adatformátumnak meg kell egyeznie.
  • cél fájl: Itt legalább egy fájlt kell megadnunk, amibe beírja a megfelelő metaadatokat. Több fájl esetén mindegyikbe átírja ugyanazt az adatot.

Próbáljuk is ki működés közben a másolási funkciót.

Az alábbi példában az egyik jpg fájl egyik tag-ját feltöltjük egy értékkel, majd átmásoljuk egy másik jpg fájlba:

ExifTool - Meta tag másolása másik fájlból | Linuxportál

Végül kilistázva a cél fájl összes metaadatát, előkerül a Description mezőben a másik fájlban beállított érték, valamint a fájl módosítási időbélyegei is az aktuálisra állítódtak.

Alapesetben a másolási funkció íráskor készít egy biztonsági mentést az eredeti fájlról, amit <fájlnév>.original néven ment le a célfájllal megegyező könyvtárban. Ha nem szeretnénk biztonsági másolatokat, akkor használjuk a -overwrite_original kapcsolót is.

 

 

Gyors példák

Ebben a részben átnézünk még néhány rövid példát, kipróbáljuk az exiftool parancsot még néhány másik fájlformátummal is.

Az alábbi példákhoz saját fájlokat használtam, így más fájlok esetén lehetnek mező vagy érték eltérések.

GPS adatok kiolvasása

Még a jpg fájloknál maradva, ha szükségünk van egy fotó GPS adataira, akkor az alábbi paranccsal kérhetjük le az összes GPS vonatkozású tag-et szabványosan tárolt GPS adatok esetén:

exiftool -GPS:all <képnév>

Azonban előfordulhat, hogy az adott képkészítő eszköz nem szabványosan tárolja a jpg fájlban a GPS metaadatokat és nem tudja kibontani az összes mezőt a GPS csoportból. Ilyenkor a csoport szűrés helyett használhatjuk a grep-et hogy kiolvassunk minden GPS adatot.

A kimenete pedig a nálam lévő telefonnal készített fájlban:

ExifTool - GPS adatok kiolvasása | Linuxportál

EPS fájlok kiolvasása

EPS vektorfájlokból is kiolvashatunk sok hasznos információt, köztük a készítő szoftver nevét, rajztábla felbontását, rajztáblák számát, grafika színterét, stb:

exiftool \
    -CreatorTool \
    -ImageSize \
    -Pages \
    -SwatchColorantMode \
    vektorfajl.eps

Ennek a kimenete egy általam készített EPS fájlon:

Creator Tool                    : Adobe Illustrator CC 23.0 (Windows)
Image Size                      : 600x601
Pages                           : 1
Swatch Colorant Mode            : RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB

ZIP fájlok kiolvasása

Total Commanderrel tömörítettem be néhány fájlt, aminek a metaadatait olvasom ki:

exiftool tomoritett.zip

A zip fájl nem tartalmaz túl sok metaadatot, kimenete a következő:

ExifTool Version Number         : 10.40
File Name                       : tomoritett.zip
Directory                       : .
File Size                       : 916 kB
File Modification Date/Time     : 2019:06:07 14:46:50+02:00
File Access Date/Time           : 2019:06:07 14:46:50+02:00
File Inode Change Date/Time     : 2019:06:07 14:47:01+02:00
File Permissions                : rw-r--r--
File Type                       : ZIP
File Type Extension             : zip
MIME Type                       : application/zip
Zip Required Version            : 20
Zip Bit Flag                    : 0x0802
Zip Compression                 : Deflated
Zip Modify Date                 : 2019:06:07 14:11:10
Zip CRC                         : 0x36c718d5
Zip Compressed Size             : 57736
Zip Uncompressed Size           : 66726
Zip File Name                   : exiftool-gps-adatok-kiolvasasa.png

Azért vannak benne haszos dolgok, például a tartalom kicsomagolt mérete, ami hasznos lehet, ha például egy script segítségével szeretnénk kiszámolni a könyvtárban lévő zip fájlok tömörítetlen méretét.

Gzip tömörítés esetén előfordulhatnak benne más mezők is.

AVI videofájlok kiolvasása

Az avi videofájlokból is kiolvashatunk hasznos dolgokat, mint például a framerate, video kódek, felbontás, színmélység, tömörítési algoritmus, audio mintavételezési frekvencia, audió kódolás, audio csatornák száma, stb.

Példa egy saját AVI fájllal:

exiftool \
    -FrameRate \
    -VideoCodec \
    -ImageWidth \
    -ImageHeight \
    -BitDepth \
    -Compression \
    -AudioSampleRate \
    -Encoding \
    -NumChannels \
    video.avi
Frame Rate                      : 25
Video Codec                     : XVID
Image Width                     : 720
Image Height                    : 388
Bit Depth                       : 24
Compression                     : XVID
Audio Sample Rate               : 32000
Encoding                        : MP3
Num Channels                    : 2

MP3 zenefájlok kiolvasása

Az MP3 zenefájljainkból kiolvashatjuk többek között az audio sávszélességet, mintavételezési frekvenciát, csatorna módot, évszámot, műfajt, az album nevét, előadót, zeneszám címét, játékidőt, stb. Saját példa:

exiftool \
    -AudioBitrate \
    -SampleRate \
    -ChannelMode \
    -Year \
    -Genre \
    -Album \
    -Artist \
    -Title \
    -Duration \
    Brian_Tyler_-_Rambo_Soundtrack_-_01_-_Rambo_Theme.mp3
Audio Bitrate                   : 128 kbps
Sample Rate                     : 44100
Channel Mode                    : Joint Stereo
Year                            : 2008
Genre                           : Soundtrack
Album                           : Rambo Soundtrack
Artist                          : Brian Tyler
Title                           : Rambo Theme
Duration                        : 0:03:27 (approx)

De ha csak az ID3 tag-ekre vagyunk kíváncsiak, akkor ezt egyszerűbben is kiolvashatjuk:

exiftool -ID3:all Brian_Tyler_-_Rambo_Soundtrack_-_01_-_Rambo_Theme.mp3
Publisher                       : 
Comment                         : 
Track                           : 1
Year                            : 2008
Genre                           : Soundtrack
Album                           : Rambo Soundtrack
Artist                          : Brian Tyler
Title                           : Rambo Theme

 

 

PDF dokumentumok kiolvasása

Egy Photoshop-al lementett PDF fájlból is sok mindent kiolvashatunk, néhányat megnézünk ezek közül is:

exiftool \
    -PDFVersion \
    -CreatorTool \
    -ColorMode \
    -ICCProfileName \
    -PageCount \
    -XResolution \
    -YResolution \
    -ResolutionUnit \
    -Orientation \
    -ColorSpace \
    -ExifImageWidth \
    -ExifImageHeight \
    -Compression \
    metaadatok-kezelese-az-exiftool-programmal.pdf

Ennek a kimenete pedig:

PDF Version                     : 1.7
Creator Tool                    :  Adobe Photoshop CS5 Windows
Color Mode                      : RGB
ICC Profile Name                : sRGB IEC61966-2.1
Page Count                      : 1
X Resolution                    : 72
Y Resolution                    : 72
Resolution Unit                 : inches
Orientation                     : Horizontal (normal)
Color Space                     : sRGB
Exif Image Width                : 1200
Exif Image Height               : 630
Compression                     : JPEG (old-style)

 

A példákban nem soroltam fel minden mező lekérdezését, ezeknél jóval több információ áll rendelkezésre mindegyik fájltípusnál. Itt csak a minta kedvéért emeltem ki a fontosabbakat. A teljes listát a szűrőkapcsolók nélküli exiftool parancsfuttatással kérhetjük le.

 

A következő oldalon folytatjuk egy komplett automatizáló shell script elkészítésével...

 

 

Lapozó

Ez a leírás több oldalból áll: