1 votes

Saisir manuellement le texte "Where From" pour les métadonnées des captures d'écran ?

Ce que j'aimerais être capable de faire, c'est le contraire de ce que cette personne a demandé ; je veux ADD le texte "d'où" (dans mon cas, une URL que je peux copier-coller depuis un onglet de navigateur) pour les captures d'écran que je fais de documents généalogiques en ligne. Je réalise que ce que je demande n'est pas l'intention de ce champ de métadonnées, mais pour mon propre usage, ce serait extrêmement utile. Si Info Sheet via "get info" (commande+I) pouvait accueillir une zone de texte pour ce champ, ce serait surréaliste, mais toute méthode alternative mérite d'être connue. Le but est que cela puisse être fait très rapidement et sans trop d'effort après avoir copié l'URL.

Cette question particulière porte sur cette question J'ai posté il y a peu, ce qui est bien plus important ; un moyen de lancer automatiquement Info Sheet après qu'une capture d'écran est capturée, comme un rappel, pour me forcer à coller l'URL dans la case Commentaires (qui n'est pas l'endroit parfait pour mes besoins mais néanmoins bien mieux que de ne pas avoir l'URL du tout). Merci à tous ! Je suis un peu idiot avec le code mais j'apprends beaucoup de vous tous.

1voto

red_menace Points 1014

Avec la fenêtre d'information, une boîte de dialogue peut être mise en place pour obtenir le texte whereFrom, avec un petit AppleScriptObjC (puisqu'un shell script a été posté dans une autre réponse) pour l'ajouter. Extension de l'action du dossier Automator dans ma réponse à votre sujet précédent le remplacement Exécuter AppleScript L'action ressemblerait à quelque chose comme :

use AppleScript version "2.4" -- Yosemite (10.10) or later
use framework "Foundation"
use scripting additions

property useBinary : missing value

on run {input, parameters}
    repeat with anItem in input
        tell application "Finder"
            activate
            open information window of anItem
        end tell

        set response to (display dialog "Enter text to add to whereFroms:" default answer "" buttons {"Enter", "Skip"} default button 2)
        if button returned of response is "Enter" then
            addWhereFrom(text returned of response, anItem)
        end if
    end repeat

    return input
end run

to addWhereFrom(newItem, filePath) -- add to existing whereFroms, trimming duplicates
    set whereFroms to readWhereFroms(filePath)
    set end of whereFroms to (newItem as text)
    set whereFroms to (current application's NSOrderedSet's orderedSetWithArray:whereFroms)'s allObjects()
    writeWhereFroms(whereFroms, filePath)
end addWhereFrom

to readWhereFroms(filePath) -- get a list of whereFroms from the extended attribute
    set filePath to quoted form of POSIX path of filePath
    set attribute to missing value
    set useBinary to missing value -- keep track of which it is
    try -- get existing attribute as property list
        set attribute to (do shell script "xattr -p com.apple.metadata:kMDItemWhereFroms " & filePath & "  | xxd -r -p | plutil -convert xml1 -o - -") -- convert from binary
        set useBinary to true
    on error -- oops, not a binary plist, so try XML
        try -- skip error if no attribute
            set attribute to (do shell script "xattr -p com.apple.metadata:kMDItemWhereFroms " & filePath)
            set useBinary to false
        end try
    end try
    if attribute is in {missing value, ""} then return {}
    # deserialize the list from the property list string
    set theData to (current application's NSString's stringWithString:attribute)'s dataUsingEncoding:(current application's NSUTF8StringEncoding)
    return (current application's NSPropertyListSerialization's propertyListWithData:theData options:(current application's NSPropertyListMutableContainersAndLeaves) format:(missing value) |error|:(missing value)) as list
end readWhereFroms

to writeWhereFroms(theList, filePath) -- set the extended attribute to a list of whereFroms
    set filePath to quoted form of POSIX path of filePath
    # serialize the list into a property list string
    set theData to (current application's NSPropertyListSerialization's dataWithPropertyList:theList format:(current application's NSPropertyListXMLFormat_v1_0) options:0 |error|:(missing value))
    set plist to (current application's NSString's alloc's initWithData:theData encoding:(current application's NSUTF8StringEncoding)) as text
    if useBinary is false then -- set XML plist
        do shell script "xattr -w com.apple.metadata:kMDItemWhereFroms " & quoted form of plist & space & filePath
    else -- convert and set binary plist
        set bplist to do shell script "echo " & quoted form of plist & " | plutil -convert binary1 -o - - | xxd -p"
        do shell script "xattr -w -x com.apple.metadata:kMDItemWhereFroms " & bplist & space & filePath
    end if
end writeWhereFroms

Pour utiliser le script ci-dessus par lui-même, il suffit de supprimer {input, parameters} de la run et remplacez la déclaration du gestionnaire input ou définissez-la sur votre propre liste d'éléments de fichier, par exemple à partir d'une variable choose file dialogue.

0voto

user3439894 Points 52496

Si vous voulez ajouter Où de : info sous Plus d'informations : sur un du fichier Obtenir des informations fenêtre c'est-à-dire comme si l'on appuyait sur I sur une sélection fichier sur Finder et le voir là, puis l'exemple suivant dans Terminal peut le faire :

xattr -w com.apple.metadata:kMDItemWhereFroms 'https://apple.stackexchange.com/questions/386599/manually-enter-where-from-text-for-screenshot-metadata' "/path/to/file"

Dans l'exemple ci-dessus, on écrirait le URL de cette page web au fichier spécifié par : "/path/to/file"

Notez qu'il existe un certain nombre de moyens d'automatiser cette opération, de sorte qu'elle ne doive pas être effectuée manuellement.

enter image description here


<strong>Note : </strong>Voici un exemple simple de la façon d'écrire la cible <em>méta-données </em>à la <em>fichier </em>et tel qu'il est écrit, il écraserait les <em>méta-données </em>de ce <em>type </em>. Supplémentaire <em>codage </em>nécessaire pour ajouter de nouvelles <em>méta-données </em>à l'existant <em>méta-données </em>du même <em>type </em>Toutefois, cela est considéré comme hors du champ d'application de la directive. <em>cas d'utilisation </em>.

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