Wie kann ich Spotlight-Metadaten auf Dateien festlegen?

7

Ich suche nach einem Befehlszeilenprogramm (ich muss es in einem Skript verwenden), mit dem Spotlight-Metadaten auf Dateien festgelegt werden können.

Kostas
quelle

Antworten:

2

Ich glaube nicht, dass es einen Weg gibt - die Spotlight-Indizes werden von Metadatenimporteuren generiert, die Dateien scannen und ihre Eigenschaften herausfinden. Wenn der betreffende Importeur eine Eigenschaft nicht erkennt, ist sie für Spotlight nicht vorhanden.

Jetzt ist es möglicherweise möglich, die tatsächliche Datei so zu ändern, dass dem Indexeintrag Eigenschaften hinzugefügt werden. Diese Seite behauptet, dass Sie erweiterte Attribute hinzufügen können, die mit "com.apple.metadata:" beginnen, und sie werden dem Spotlight-Eintrag für die Datei hinzugefügt, aber ich konnte sie nicht zum Laufen bringen. Das SpotMeta-Projekt erweitert das Importsystem um erweiterte Attribute zur Spotlight-Datenbank, funktioniert jedoch nur unter OS X 10.4. Keine wirkliche Lösung, aber so nah wie möglich ...

Gordon Davisson
quelle
Nehmen Sie an, dass eine Datenbank (zum vorübergehenden Speichern von Metadaten) in Kombination mit einem Spotlight-Importer (zum Abrufen der Metadaten aus der vorherigen Datenbank) funktionieren würde? Ich muss einfachen Dateien (JPEG, TXT, RTF usw.) Metadaten hinzufügen, genau wie Safari jeder Datei, die ich aus den Interwebs herunterlade, die Metadaten "Von URL heruntergeladen" hinzufügt.
Kostas
1
Ich glaube nicht - wenn ich das richtig verstehe, wird nur ein Importer pro Dateityp verwendet, sodass Ihr Importeur die regulären Importer ersetzen müsste, was bedeutet, dass Spotlight nur Ihre Informationen sehen würde (deshalb SpotMeta war kein Importeur, sondern ein Mod des Scheinwerfers selbst). Übrigens können Sie anscheinend einen Finder-Spotlight-Kommentar hinzufügen xattr -w com.apple.metadata:kMDItemFinderComment "commenthere" filename, der als kMDItemFinderComment-Attribut indiziert wird.
Gordon Davisson
4

Sie können jederzeit das Befehlszeilentool verwenden xattr, das die erweiterten Attribute einer Datei im Dateisystem auflistet / liest / schreibt / löscht.

Das ist es, was Spotlight verwendet, um seinen Index zu erstellen.

Beachten Sie, dass den Spotlight-Informationstasten ein Präfix vorangestellt ist com.apple.metadata:

Als schnelles Beispiel, um den Anzeigenamen im Scheinwerferlicht einer Datei zu ändern:

xattr -w com.apple.metadata:kMDItemDisplayName MyNewFilename.txt ActualFile.txt

Um auf die xattr-Hilfe zuzugreifen, geben Sie Folgendes ein:

xattr -h
Lourenzo Ferreira
quelle
Arbeitet immer noch an El Capitan. Einige Aktienanwendungen wie Safari akzeptieren jedoch keine Schreibvorgänge.
Kevin Suttle
1

Hier ist eine Python-Funktion, mit der ich mithilfe der System-Shell Finder-Kommentare in eine Datei schreibe. Sie werden in Spotlight angezeigt, jedoch nicht im Feld "Informationen" ...

def writexattrs(F,TagList):
    import subprocess
    """ writexattrs(F,TagList):
    Writes the list of tags to xattr field of file named F
    """
    plistFront = '<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><array>'
    plistEnd = '</array></plist>'
    plistTagString = ''
    for Tag in TagList:
        plistTagString = plistTagString + '<string>{}</string>'.format(Tag)
    TagText = plistFront + plistTagString + plistEnd

    WhichAttribute = "com.apple.metadata:kMDItemFinderComment"
    # Other attributes you might want to try: ["kOMUserTags","kMDItemOMUserTags","_kMDItemUserTags","kMDItemkeywords"]
    XattrCommand = 'xattr -w {0} \'{1}\' "{2}"'.format(WhichAttribute,TagText.encode("utf8"),F)
    # optional, print command format to check:
    # print XattrCommand
    ProcString = subprocess.check_output(XattrCommand, stderr=subprocess.STDOUT,shell=True) 
    return ProcString
Beroe
quelle
-1

Wenn Sie Apple Developer Tools installiert haben (normalerweise unter / Developer / Tools angezeigt ), haben Sie Zugriff auf die Befehle SetFile und GetFileInfo , die beide beim Bearbeiten von Metadaten von Dateien helfen.

Darüber hinaus habe ich eine Reihe von Befehlszeilenprogrammen namens osxutils gefunden , die sich bei zusätzlichen Anforderungen, die beim Schreiben Ihrer Skripte auftreten , als nützlich erweisen können.

Ryan Wersal
quelle
2
SetFile und GetFileInfo interagieren nicht mit den Spotlight-Metadaten, sondern mit den Dateisystem-Metadaten. Aus diesem Grund gibt mdls nicht dasselbe zurück wie GetFileInfo ( pastie.org/private/w2pzgheje9afyguadhj5fq ). osxutils scheint nicht die von mir benötigte Funktionalität zu bieten und wurde seit 2005 aufgegeben (ungefähr zur gleichen Zeit, als Spotlight herauskam).
Kostas
Aha. Ich habe keine Ressourcen gefunden, die auf einen zu signifikanten Unterschied hinweisen. Ich werde meine Suche fortsetzen und meine Antwort mit mehr punktuellen Inhalten aktualisieren. Ich entschuldige mich für die falschen Informationen.
Ryan Wersal