[[Vorlage(Getestet, noble)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis()]] [https://google.github.io/magika/ Magika] {en} ist ein [:Python:]-basiertes Programm zum Erkennen des [:MIME-Typ:MIME-Typs] einer Datei. Dazu wird eine KI-basierter Ansatz verwendet und nicht wie z.B. bei [:file:] die [wikipedia_en:List_of_file_signatures:magic bytes] einer Datei. Magika läuft komplett lokal, d.h. das Datenmodel wird mit installiert. Diese ist laut Angaben der Entwickler nur ungefähr ein Megabyte groß, wodurch die Erkennung des Dateitypes extrem schnell ist. Zur Zeit werden ungefähr 110 Dateitypen erkannt. Neben dem Kommandozeilenprogramm namens `magika` gibt es auch [#Nutzung-in-Python-und-JavaScript-Skripten ein Modul] für Python und JavaScript, um Magika aus diesen beiden Programmiersprachen heraus zu nutzen. Magika wird von Google entwickelt. = Installation = Magika ist nicht in den Paketquellen von Ubuntu enthalten, kann aber mit Hilfe von [:pip:] in einem [:venv:] installiert werden[1]: {{{#!vorlage Befehl pip3 install magika }}} Wer Magika außerhalb eines venv installieren möchte, muss pip mit der [:pip/#Installation-durch-pip-erzwingen:entsprechenden Option] aufrufen. = Nutzung = Die allgemeine Syntax zum Aufruf von Magika lautet[1]: {{{#!vorlage Befehl magika [OPTION] DATEI }}} Beispiel: {{{#!vorlage Befehl magika irgendeine_datei }}} {{{ irgendeine_datei: OpenDocument Text (document) }}} Hier wird die Datei '''irgendeine_datei''' als OpenDocument Textdokument (dem Standardformat von LibreOffice Writer) identifiziert. Magika kennt eine Reihen von Optionen: {{{#!vorlage Tabelle <-2 tableclass="zebra_start3" rowclass="titel" :>Optionen von magika +++ Option <:>Erklärung +++ `-i`, `--mine-type` Gibt den Dateityp als MIME-Typ statt als Text aus, also z.B. `application/vnd.oasis.opendocument.text` für Open Document Text Dateien. +++ `-l`, `--label` Gibt den Dateityp in Form der Dateiendung aus, also z.B. `odt` für Open Document Text Dateien. +++ `-c`, `--compatibility-mode` Erzeugt eine Ausgabe ähnlich der des Befehl `file`. +++ `-s`, `--output-score` Gibt aus, wie hoch die Magika die Wahrscheinlichkeit sieht, dass der ausgegeben Dateityp stimmt. +++ `--json` Ausgabe im JSON-Format +++ `-r`, `--recursive` Wird statt einer Datei ein Verzeichnis angegeben, erfolgt die Ausgabe für alle Dateien im Verzeichnis. +++ `--list-output-content-types` Gibt eine Liste der unterstützten Format aus. }}} Magika kennt noch eine Reihe weiterer Optionen. Diese kann man sich über den Aufruf von `magika -h` ausgeben lassen. Ein weiteres Beispiel: Es wird der Dateityp für alle Dateien im Verzeichnis '''bin/''' inklusive Abschätzung der Wahrscheinlichkeit, wie zutreffend der ermittelte Dateityp ist, ausgegeben: {{{#!vorlage Befehl magika -rs bin/ }}} {{{ bin/Activate.ps1: Powershell source (code) 100% bin/activate: Shell script (code) 99% bin/activate.csh: Shell script (code) 97% bin/activate.fish: Generic text document (text) [Low-confidence model best-guess: Shell script (code), score=44] 44% bin/coloredlogs: Python source (code) 99% bin/dotenv: Python source (code) 99% bin/f2py: Python source (code) 99% bin/humanfriendly: Python source (code) 99% bin/isympy: Python source (code) 99% bin/magika: Python source (code) 99% bin/onnxruntime_test: Python source (code) 99% bin/pip: Python source (code) 99% bin/pip3: Python source (code) 99% bin/pip3.12: Python source (code) 99% bin/python: ELF executable (executable) 100% bin/python3: ELF executable (executable) 100% bin/python3.12: ELF executable (executable) 100% bin/tabulate: Python source (code) 99% bin/tqdm: Python source (code) 99% }}} == Nutzung in Python und JavaScript Skripten == Magika bringt jeweils ein Python-Modul und ein JavaScript Modul mit, mit der die Nutzung des Programms direkt aus einem Python-Skript bzw. JavaScript-Skript möglich ist. Weitere Hinweise zu Nutzung findet man in der Dokumentation: * [github:google/magika/blob/main/docs/python.md:Python Dokumentation] * [github:google/magika/blob/main/docs/js.md:JavaScript Dokumentation] = Links = * [github:google/magika:Projektseite] bei Github * [github:google/magika/blob/main/docs/faq.md:FAQ Seite] zu Magika #tag: Shell, Programmierung, Python