8 votes

Comment définir les métadonnées Spotlight pour les fichiers ?

Je suis à la recherche d'un utilitaire de ligne de commande (je dois l'utiliser dans un script) qui peut définir les métadonnées Spotlight pour les fichiers.

4voto

Vous pouvez toujours utiliser l'outil en ligne de commande xattr qui énumère/lit/écrit/efface les attributs étendus du système de fichiers d'un fichier.

C'est ce que Spotlight utilise pour construire son index.

Notez que les clés d'information sur les projecteurs sont précédées du préfixe com.apple.metadata:

Par exemple, pour changer le nom d'affichage sur le spot d'un fichier :

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

pour accéder à l'aide xattr, tapez sur t :

xattr -h

0 votes

S

2voto

Gordon Davisson Points 30215

Je ne pense pas qu'il y ait un moyen de le faire. Les index Spotlight sont générés par des importateurs de métadonnées qui analysent les fichiers et déterminent leurs propriétés. Si l'importateur concerné ne détecte pas une propriété, elle n'existe pas pour Spotlight.

Il pourrait être possible de modifier le fichier actuel de manière à ajouter des propriétés à son entrée d'index. Cette page prétend que vous pouvez ajouter des attributs étendus commençant par "com.apple.metadata :" et qu'ils seront ajoutés à l'entrée spotlight du fichier, mais je n'ai pas réussi à le faire fonctionner. Le projet SpotMeta étend le système d'importation pour ajouter des attributs étendus à la base de données Spotlight, mais ne fonctionne que sous OS X v10.4. Ce n'est pas une solution réelle, mais c'est ce que j'ai pu trouver de plus proche...

0 votes

D

0 votes

@GordonDavisson merci pour votre commentaire de clarification "Un seul importateur par type de fichier". Cela signifie clairement que si je voulais un paramètre supplémentaire comme le "taux de compression" pour les images compressées avec perte (JPEG, WEBP, etc.), il n'est pas possible de créer un MDimporter supplémentaire gérant ces types de fichiers d'images publiques, qui s'exécute en plus de /System/Library/Spotlight/Image.mdimporter . Si nous voulons cela, la seule possibilité est de demander à Apple d'ajouter un nouvel attribut au fichier central. Image.mdimporter .

0 votes

@porg Gardez à l'esprit que je ne suis pas un expert en la matière et qu'il est possible que quelque chose ait changé au cours de la dernière décennie de mises à jour. Je jetterais un coup d'œil à la documentation actuelle et verrais s'il y a une nouvelle option pour faire cela.

1voto

beroe Points 3151

Voici une fonction Python que j'utilise pour écrire les commentaires du Finder dans un fichier en utilisant le shell du système. Ils apparaissent dans Spotlight, mais pas dans la boîte "Get Info"...

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

-1voto

Ryan Wersal Points 499

Si vous avez installé les Apple Developer Tools (qui apparaissent généralement sous /Developer/Tools), vous avez accès à l'application SetFile y GetFileInfo qui permettent toutes deux de manipuler les métadonnées des fichiers.

En outre, j'ai trouvé un ensemble d'utilitaires en ligne de commande appelés osxutils qui peut s'avérer utile en cas d'exigences supplémentaires lors de l'écriture de vos scripts.

2 votes

SetFile et GetFileInfo n'interagissent pas avec les métadonnées Spotlight mais avec les métadonnées du système de fichiers. C'est pourquoi mdls ne renvoie pas la même chose que GetFileInfo ( pastie.org/private/w2pzgheje9afyguadhj5fq ). osxutils ne semble pas fournir les fonctionnalités dont j'ai besoin et a été abandonné depuis 2005 (à peu près au moment où Spotlight est sorti).

0 votes

Je vois. Je n'ai pas trouvé de ressources indiquant une différence trop importante. Je poursuivrai mes recherches et mettrai à jour ma réponse avec un contenu plus pertinent. Je vous prie de m'excuser pour les informations erronées.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X