Comment puis-je ajouter OS X “tags” aux fichiers par programmation?
Depuis Mavericks, OS X a eu la capacité de tag & couleur de fichiers dans le Finder.
Est-il possible d'ajouter des tags aux fichiers par le biais de Cacao Api ou via une commande shell?
- Voir ce question connexe. Quel genre de balises parlez-vous? Je vais donner une réponse pour l'étiquette de couleur ci-dessous, mais les mots clés et les balises sont un peu différentes.
- J'avais à l'origine devenir curieux à propos de cette capacité parce que j'ai pensé qu'il serait bien d'ajouter une étape de génération de mon xCode phases de construction qui permettrait de baliser le construire dir de sorte qu'il serait facilement consultable dans le finder. Je vois votre réponse dans la question connexe mais je n'ai aucune expérience avec python peut vous fournir un script qui sera exécuté sur un fichier que vous avez fait avec la coloration?
- OK, j'ai ajouté un squelette de script qui vous permet de tag des dossiers ou des fichiers avec un mot...
InformationsquelleAutor nacross | 2013-11-01
Vous devez vous connecter pour publier un commentaire.
Désolé pour l'ajout d'une autre réponse, mais l'un lié à la définition de l'Étiquette de couleurs a été assez longtemps déjà. Voici un extrait d'un script python que j'utilise pour définir les Balises. Il semble fonctionner pour rendre les choses consultable, mais vous ne savez pas si les marques s'afficher correctement. L'utilisation est essentiellement:
Code ci-dessous.
_kMDItemUserTags
au lieu de tous les trois. Il est également possible d'exécuter laxattr
commande sur tout un dossier à la fois, de manière récursive. À peu près le même scénario, mais l'utilisationxattr -rw
et de lui donner un nom de dossier à la place. Je pense à des fins générales, un fichier par fichier est plus souple, mais clairement plus lent.TagList = sys.argv[1].split(';')
de sorte que plus d'une étiquette peut être ajouté si l'on est séparé par;
sDécouvrez tag, "un outil de ligne de commande pour manipuler les tags sous Mac OS X 10.9 Mavericks de fichiers, et à la requête de fichiers avec ces étiquettes". Le dépôt GitHub a instructions d'installation (il y a des Homebrew et MacPorts paquets).
- Je ajouter cette réponse, parce que l'OP a demandé un script shell et marqué bash. J'ai écrit ce Automator service, qui balise le fichier sélectionné avec les balises d'un autre fichier. J'ai ajouté des commentaires pour indiquer l'utilisation de bash interaction avec les balises et les couleurs à l'aide de scripts bash.
Bases
Dans les scripts à la fois OpenMeta et Mavericks balises peuvent être accessibles avec la commande xattr. L'utiliser sans modificateurs,
$ xattr [file]
, donne une liste des attributs.$ xattr -h
donne un guide agréable à l'utilisation.Mavericks les balises sont dans com.apple.métadonnées:_kMDItemUserTags, tandis que OpenMeta balises peuvent être dans une variété d'attributs. Parmi les autres
com.apple.metadata:kOMUserTags
,org.openmetainfo:kMDItemOMUserTags
etorg.openmetainfo:kOMUserTags
.Mavericks poignées de couleurs et des tags dans les différents attributs, en plaçant des balises dans _kMDItemUserTags et les couleurs FinderInfo pour chaque fichier. C'est un drôle de choix, et c'est une des raisons Finder luttes sous la pression de marquage. Si vous avez 800 fichiers marqués kapow, chacun dans un dossier différent, et par la suite, vous choisissez la couleur bleue pour kapow, le Finder pour trouver et modifier les attributs de chaque fichier.
Vous pouvez jouer avec de la singularité par la suppression du com.apple.FinderInfo attribut à partir d'un balisé et la couleur de fichier:
$ xattr -d com.apple.FinderInfo [file]
. La couleur disparaît dans le Finder listes, mais la balise (et sa couleur) reste associé avec le fichier.Script Bash pour importer des balises à partir d'un autre fichier
Dans le script, le fichier sélectionné(s) dans le Finder est/sont enregistrées dans la variable $sans étiquette, et le fournisseur choisi de balises est $tagfull.
D'Apple dans la Ce qui est Nouveau dans OS X il affirme que
NSURL
poignées de balises et la Système De Fichiers Commun Resource_Keys donne la clé requise commeNSURLTagNamesKey
et les membres de sa valeur est un tableau de chaînes de caractères.La OpenMeta cadre est un standard tiers pour l'ajout de métadonnées à OS X, les fichiers en utilisant les attributs étendus. Il est utilisé par un certain nombre d'applications tierces.
Ou vous pouvez utiliser le XATTR commande pour manipuler les attributs étendus via la ligne de commande.
Vous pourriez donner cette un coup:
Vous aurez envie de le remplacer $currentFile avec le fichier que vous souhaitez ajouter des tags, et le changement
à une liste de ce que les balises que vous souhaitez ajouter.
Cela ne couvre pas les étiquettes, mais pour changer les couleurs d'étiquettes, une façon de le faire est par le biais d'une commande comme ceci:
La
04
enterré dans le milieu est le paramètre le fichier de couleur.Ici est un script python qui enveloppe cette commande permet de définir la balise de couleur sur un fichier ou d'une série de fichiers:
D'Usage:
où [couleur] est un nom ou une abréviation telle que définie ci-dessous:
osascript
.À Poser Des Différents
Avec réponses multiples, dont l'un est accepté:
Ici dans le Débordement de la Pile, se pose la question un peu plus tôt (2013-11-01) donc, je vais ajouter ma réponse ici.
openmeta
Open source à https://code.google.com/p/openmeta/source/browse/trunk/trunk/openmeta
La
openmeta
commande apparaît à prendre un double attribut approche, en collaboration avec:com.apple.metadata:kMDItemOMUserTags
com.apple.metadata:_kMDItemUserTags
Exemple d'utilisation
Limitations des autres services publics
Apple Finder, par exemple.
Après à l'aide du Finder pour supprimer le cafouillage tag, cafouillage reste un OpenMeta tag:
À la compréhension de ces restrictions
Avec une attention à des domaines et des conventions de nommage: Développeur pensées sur l'adoption de OpenMeta – Ironique Logiciel (2009-03, et maintenant dans l'Internet Archive Wayback Machine) nous rappelle que
com.apple.metadata
était pour utilisation par Apple lors de la OpenMeta (un projet pas dans leapple.com
de domaine) a commencé la Pomme orientéecom.apple.metadata:kMDItemOMUserTags
approche.Donc je ne devrait pas s'attendre à Apple de logiciel pour obtenir ou maintenir la compatibilité avec les deux approches de l'étiquetage.
Cas de bord
Dans certains cas, il peut être souhaitable de supprimer Appleorientée
com.apple.metadata:_kMDItemUserTags
tags sans enlever OpenMetaorientéecom.apple.metadata:kMDItemOMUserTags
balises.Cependant, le faire par programme – est probablement au-delà de la portée de la question posée par @nacross.
De départ avec Mavericks, il est également possible de définir les couleurs des balises dans le Cacao, à l'aide de
NSAppleScript
.Si c'est exécutée sur un fichier qui n'a qu'une couleur, puis il efface la couleur, et définit la couleur spécifiée. Toutefois, si plusieurs couleurs sont déjà fixés sur le fichier, puis elle n'efface pas les couleurs existantes avant le réglage de la couleur spécifiée.
À l'aide de la
AppleScript
de l'environnement, de la couleur de la cartographie est comme suit:De départ avec Mavericks, il est possible d'obtenir et de définir des balises de couleur dans le Cacao, à l'aide de
NSURL
.NSURL
a un tas de propriétés qui peuvent être définies ou de lire, à travers lessetResourceValue:forKey:error:
etgetResourceValue:forKey:error:
méthodes.À l'aide de la
NSURLLabelNumberKey
clé, vous pouvez définir les balises de couleur, comme suit:Si c'est exécutée sur un fichier qui n'a qu'une couleur, puis il efface la couleur, et définit la couleur spécifiée. Toutefois, si plusieurs couleurs sont déjà fixés sur le fichier, puis elle n'efface pas les couleurs existantes avant le réglage de la couleur spécifiée.
Ici est la valeur de correspondance de couleur (sur El Capitan):
Je n'ai pas été en mesure de mettre une balise à l'aide de
NSURLLabelColorKey
. Voici mon expérience sur El Capitan, avec les touches associées à des "balises" (Couleurs):NSURLLabelNumberKey
: lire/ensemble avec succès, avec des chiffres de 0 à 7. Tout autre nombre retournera une erreur. Si il y a plusieurs balises le jeu, puis ce sera le retour de l'index de la première couleur est définie, comme il recherche numériquement par le biais de l'index de 1 à 7. Bien que vous pouvez effacer une couleur dans le Finder en cliquant sur la couleur, par programmation définissant une couleur qui est déjà configuré n'est pas clair que la couleur.NSURLLabelColorKey
: retourne nil, même lorsqu'une balise de couleur est défini pour un fichier. La définition de la valeur avec cette touche n'a aucun effet.NSURLTagNamesKey
: retourne un tableau des noms de couleurs pour les étiquettes qui sont ensemble.