IExtract - Auslesen der Dokument-Informationen


English version 

Dieses Programm wird es unter den Bedingungen der GNU General Public License vertrieben; in der Hoffnung, nützlich zu sein, aber OHNE JEGLICHE GEWÄHRLEISTUNG; sogar ohne die implizite Gewährleistung der MARKTREIFE oder der EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.

Deutsche Version  
Versión en castellano  

IExtract ist ein kleines Utility, designed die Eigenschaften (Titel, Autor und Kommentar) aus verschiedenen Dokumenten auszulesen und sie in einer Liste (zur weiteren Bearbeitung) anzuzeigen.

Die folgenden Dokumente werden unterstützt (weitere Dokument-Typen können einfach durch Plug-ins hinzugefügt werden):

HTML

Sucht nach Text zwischen den <title> und </title> tags beziehungsweise den Inhalt der meta tags (sowohl nach HTML 4.0 und "Dublin Core").

PNG

PNG-Bilder können Text-Einträge mit Werten im Format Schlüsselwort - Wert enthalten.

Die (unkomprimierten) Werte der Einträge Title, Author und Description werden ausgelesen.

GIF

GIF-Bilder können Kommentar-Einträge (in sogenannten "Kommentar-Erweiterungen") enthalten. Die Werte für Titel und Author werden (mangels Verfügbarkeit) nicht gesetzt.

JPEG

Es werden Kommentare nach einem "comment marker" (0xFFFE), in einem APP1 Exif marker (wie von Windows XP geschrieben) und in einem APPD marker (wie sie scheinbar einige Versionen von PhotoShop erzeugen) erkannt)

Microsoft Office Dokumente

Sucht nach dem Inhalt des "Eigenschaften" Dialogs.

Dank des Apache Jakarta POI Projekts und deren Dokumentation des "OLE2 Compount Document format" (wie es von MS Office verwendet wird), sollten alle Dokumente korrekt bearbeitet werden können (ev. mit der Ausname von Dokumenten größer als 6,8 MB).

Ist die Library zlib installiert, können auch Office Open XML documente bearbeitet werden.

MP3

Sucht nach dem ID3 tag (version 1.x und 2.x). Der Titel des Albums wird im Kommentar-Feld zurückgeliefert.

OGG

Sucht nach dem "Comment header" am Anfang der Datei. Der Titel des Albums wird im Kommentar-Feld zurückgeliefert.

PDF

PDF-Dokumente beinhalten ein sogenanntes Document Information directory mit verschiedenen Einträgen. Der Inhalt dieses Verzeichnisses wird ausgelesen (mit dem "Subject"-Schlüssel als Kommentar).

Verschlüsselte Dokumente werden nicht entschlüsselt!

StarOffice Dokumente

Liest die Einträge des "Eigenschaften"-Dialogs.

OpenOffice Dokumente

Liest die Einträge des "Eigenschaften"-Dialogs.

Abiword Dokumente

Liest die Einträge des "Eigenschaften"-Dialogs.

RTF Dokumente

Liest die Einträge des "Info"-Blocks.

Die Ausgabe kann sowohl in HTML-format (table), XML (default XHTML), LaTeX (tabular) Format oder als Klartext (sowohl lesbar (durch Leerzeichen getrennt) oder bearbeitbar durch Machinen (unter Anführungszeichen, getrennt durch Beistriche)) erfolgen. Beachte, dass etwaige Sonderzeichen in den ausgelesenen Daten konvertiert werden.

Das Verhalten des Programms wird von einem INI-File (~/.IExtract für UNICES oder %HOMEDRIVE%%HOMEPATH%IExtract.ini für Windows) gesteuert. Das Format des INI-Files ist später im Dokument beschrieben.

Dieses Default-Verhalten kann durch ein anderes INI-File oder durch Optionen geändert werden.

Aufruf

   IExtract [OPTIONEN] <Datei(en)>

Die gesuchten Dateien können die UNIX-typischen Platzhalter (Stern (*) für eine beliebige Anzahl beliebiger Zeichen,Fragezeichen (?) für genau ein beliebieges Zeichen sowie explizit angeführte gültige Zeichen innerhalb von eckigen Klammern ([) und (]); entweder einzeln aufgelistet, innerhalb von mit einem Minus (-) getrennten Grenzen oder durch eine Klasse (innerhalb von '[:' und ':]') angegeben werden. Diese Selektion kann durch ein Caret (^) oder ein Rufzeichen (!) negiert werden.) enthalten. Dies gilt auch für die Windows-Version.

Beispiele dafür sind:

*.mp3
Untersucht lediglich MP3-Dateien
[A-Za-z]*
Untersucht Dateien, die mit einem Buchstaben beginnen.
[^[:alnum:]]*
Untersucht Dateien, die nicht mit einem Buchstaben oder einer Nummer beginnen.
???.txt
Untersucht Text-Dateien, deren Namen aus 3 Zeichen besteht.

Optionen

Die folgenden Optionen werden vom Programm unterstüzt (kurze Optionen können verbunden werden; wenn die lange Option ein Argument benötigt, so auch die kurze Variante. Lange Optionen können abgekürzt werden, solange sie eindeutig sind):

   -r, --recursive Durchsuche Unterverzeichnisse nach der Bearbeitung der Dateien des aktuellen Verzeichnisses.
 
   -o, --output=STIL Setzt den Stil der Ausgabe (text, quoted, HTML oder LaTeX).
 
   -f, --format=FORMAT Format der Ausgabe (Default: %n¦-¦%t¦%a¦%c¦%d)

Die Ausgabe kann in Spalten unterteilt werden (sinnvoll for allem für die erzeugten HTML/LaTeX-Tabellen; getrennt wird durch den vertikalen Strich (¦)).

Das Prozentzeichen (%) ändert die Bedeutung des nächsten Zeichens:

  • %a wird durch den Autor ersetzt
  • %c wird durch den Kommentar ersetzt
  • %d wird durch das Datum der letzten Änderung der Datei ersetzt
  • %D wird durch den Tag der letzten Änderung der Datei ersetzt
  • %e wird durch die Dateiextension ersetzt
  • %E wird durch den Dateinamen ohne Extension ersetzt
  • %n wird durch den Dateinamen ersetzt
  • %N wird durch den Dateinamen inklusive Pfad ersetzt
  • %p wird durch den Pfad der Datei ersetzt
  • %P wird durch den Pfad der Datei im UNIX-Format (getrennt durch den Schrägstrich (/)) ersetzt
  • %s wird durch die Dateigröße ersetzt
  • %S wird durch die Dateigröße (in einem für den Menschen (besser) lesbaren Format) ersetzt
  • %t wird durch den Titel ersetzt
  • %P wird durch den Dateinamen inklusive Pfad im UNIX-Format (getrennt durch den Schrägstrich (/)) ersetzt
  • %(BUCHSTABEN) wird ersetzt durch die erste (der obigen) Ersetzung, die einen nicht-leeren String liefert (z.B.:. %(tn) entweder der Titel (wenn vorhanden), sonst der Dateiname).
  • %*BUCHSTABE ändert die obige Ersetzung ein wenig. Für die Ersetzung eines Dateinamens erfolgt zusätzlich eine Konvertierung von Sonderzeichen (abhängig vom Ausgabemodus); für die anderen wird diese Konvertierung unterlassen.

In jeder anderen Zusammenstellung wird das '%' einfach entfernt!

 
   -T, --title=TITEL Titel/Überschrift der Ausgabe (wird auch ausgegeben, wenn gar keine Datei behandelt wurde).

TITEL gibt die Spalten der Ausgaben an; getrennt mit dem vertikalen Strich (¦); jede Spalte muss zumindest ein Zeichen enthalten.

 
   -s, --separate=TEXT Trenne Unterverzeichnisse mit TEXT (default: leer); impliziert das Durchsuchen der Unterverzeichnisse (--recursive).

Das Prozentzeichen (%) ändert die Bedeutung des nächsten Zeichens:

  • %e wird ersetzt durch das Ende-der-Ausgabe für den jeweiligen Ausgabe-Stil
  • %n wird durch den Verzeichnisnamen ersetzt
  • %N wird durch den Verzeichnisnamen inklusive Pfad ersetzt
  • %p wird durch den Pfad bis zum Verzeichnis ersetzt
  • %P wird durch den Pfad bis zum Verzeichnis im UNIX-Format (getrennt durch den Schrägstrich (/)) ersetzt
  • %s wird ersetzt durch den Beginn-der-Ausgabe für den jeweiligen Ausgabe-Stil
  • %U wird durch den Verzeichnisnamein inklusive Pfad im UNIX-Format (getrennt durch den Schrägstrich (/)) ersetzt
 
   -p, --prepend=TEXT Ermöglicht einen Text anzugeben, der am Anfang der (gesamten) Ausgabe geschrieben wird (z. B. für eine Kopfzeile).
 
   -P, --pre-file=FILE Ermöglicht eine Datei anzugeben, deren Inhalt am Anfang der (gesamten) Ausgabe geschrieben wird (z. B. für eine Kopfzeile).
 
   -a, --append=TEXT Ermöglicht einen Text anzugeben, der am Ende der (gesamten) Ausgabe geschrieben wird (z. B. für eine Fußzeile).
 
   -A, --app-file=FILE Ermöglicht eine Datei anzugeben, deren Inhalt am Ende der (gesamten) Ausgabe geschrieben wird (z. B. für eine Fußzeile).
 
   -e, --show-errors Liefert eine Fehlermeldung (in der Ausgabe), wenn das Untersuchen der Datei scheitern sollte.
 
   -u, --add-unknown Zeige alle Dateien (auch die nicht unterstützten) in der Ausgabe.
 
   -n, --new=[TAGE:]TEXT Zeige TEXT (in einer eigenen Spalte) für Dateien, die jünger als TAGE (default: 30) Tage sind. Diese Spalte ist immer die erste Spalte in der Ausgabe.

TAGE kann entweder ausgelassen werden oder einen Anhang aufweisen. Bei 'm' wird die Anzahl der Tage mit 30 multipliziert.

 
   -i, --include=LISTE Spezifiziert, welche Dateien untersucht werden sollen; dies kann auch eine Liste von Dateiein sein, wobei jeder Eintrag mit dem Trennzeichen des Betriebssystem (der Doppelpunkt (:) für UNICES; der Strichpunkt (;) für Windows) getrennt wird.

Die Dateiangaben können die UNIX-typischen Platzhaltern enthalten. Details finden sie weiter oben im Dokument.

 
   -x, --exclude=LISTE Spezifiziert, welche Dateien nicht untersucht werden sollen; dies kann auch eine Liste von Dateiein sein, wobei jeder Eintrag mit dem Trennzeichen des Betriebssystem (der Doppelpunkt (:) für UNICES; der Strichpunk (;) für Windows) getrennt wird.

Die Dateiangaben können die UNIX-typischen Platzhaltern enthalten. Details finden sie weiter oben im Dokument.

 
   -I, --ini-file=FILE Lies weitere Optionen aus der angegebenen Datei. Das Format des INI-Files ist später im Dokument beschrieben.
 
   -t, --threads=NR Setzt die Nummer der Threads (Hintergrundprozesse) zum Untersuchen der Dateien. Diese Nummer ist zusätzlich zum Haupt-Thread, der nach den zu behandelnden Dateien sucht.

Diese Option ist nur vorhanden, wenn das Programm mit --enable-threads (oder -DENABLE_THREADS) konfiguriert (beziehungsweise übersetzt) wurde!

 
   -S, --sort Die gefundenen Dateien werden alphabetisch sortiert.
 
   -M, --mode=[MODUS] Spezifiziert, wie der Typ der Dateien ermittelt wird. Mögliche Werte sind:
Ext
Anhand der letzten Dateierweiterung (extension).
EXT
Anhand der letzten Dateierweiterung (extension), wobei nicht zwischen Groß- und Kleinschreibung unterschieden wird.
AllExt
Anhand der letzten bekannten Dateierweiterung.
AllEXT
Anhand der letzten bekannten Dateierweiterung, wobei nicht zwischen Groß- und Kleinschreibung unterschieden wird.
Content
Anhand des Dateiinhalts. Dabei wird nach bestimmten Zeichenfolgen gesucht, die die jeweiligen Dateityp characterisieren.
 
   -V, --version Ausgabe der Versionsinformation und beenden.
 
   -h, -?, --help Ausgeben der Hilfe und beenden.
 

Die Optionen append und app-file (bzw. äquivalent prepend und pre-file) können beliebig oft wiederholt werden. Der jeweilige Text wird den vorher angegeben hinzugefügt.

Plug-Ins

Plug-Ins sind kleine Erweiterungen (Zusatzmodule), durch die weitere Dokument-Typen unterstützt werden.

Realisiert werden sie als shared libraries (für Unix) bzw DLLs (für Windows), die zwei Funktionen enthalten müssen:

processFile
Liest die Eigenschaften aus der übergebenen Datei
getFileType
Überprüft, ob die übergebene Datei den richtigen Dateityp hat.

Ein Beispiel befindet sich in src/Plugins/Text.cpp.

Format des INI-Files

Das INI-Files hat folgendes Format (Einträge können fehlen):

   [Output]
   Format=FORMAT
   Title=TEXT
   TextForNewFiles=TEXT
   MaxAgeForNewFiles=TAGE
   DirSeparatorText=TEXT
   Style=STIL
   SortFiles=1

   [FileType]
   Mode=Content

   [Handler]
   <Extension1>=<Library1>
   <Extension2>=<Library2>
   <ExtensionN>=<LibraryN>

Es werden die gleichen Ersetzungen wie für die Optionen durchgeführt!


Voraussetzungen

Zum Übersetzen der Sourcen benötigt man meine libYGP library. Diese ist ebenfalls als Sourceforge-Projekt vorhanden. Siehe http://libymp.sourceforge.net für Details.

Bei installierter zlib können auch Office Open XML (OOXML) Dokumente ausgewertet werden.

Die bereits übersetzte Windows-Anwendung hat keine Abhängigkeiten. Da sie mit MinGW cross-compiled ist, verhält sie sich jedoch wie eine Unix-Anwendung (d.h. Verzeichnisse werden mit Schrägstrichen und nicht mit Rückstrichen getrennt). Für diese Windows-Version gibt es keinen Support!


Download

Von der Sourceforge download area.


Sende etwaige Kommentare
SourceForge.net Logo