1 votos

¿Introducir manualmente el texto "De dónde" para los metadatos de las capturas de pantalla?

Lo que me gustaría poder hacer, es lo contrario de lo que esta persona preguntó sobre Quiero ADD el texto "de dónde" (en mi caso, una URL que podría copiar y pegar desde una pestaña del navegador) para las capturas de pantalla que hago de los documentos genealógicos en línea. Me doy cuenta de que lo que pido no es la intención de este campo de metadatos, pero para mi propio uso, sería extremadamente útil. Si la Hoja de Información a través de "obtener información" (comando+I) pudiera acomodar un cuadro de texto para este campo, sería surrealista, pero vale la pena conocer cualquier método alternativo. El objetivo es que esto se pueda hacer muy rápidamente y sin demasiado esfuerzo después de copiar la URL.

Esta pregunta en particular se refiere a esta pregunta He publicado hace un rato, lo que es mucho más importante; una manera de auto-lanzamiento de la Hoja de Información después de una captura de pantalla se captura, como un recordatorio, para obligarme a pegar la URL en el cuadro de comentarios (que no es el lugar perfecto para mis necesidades, pero sin embargo mucho mejor que no tener la URL en absoluto). Gracias a todos. Soy un poco idiota con el código pero aprendo mucho de todos vosotros.

1voto

red_menace Puntos 111

Junto con la ventana de información, se puede poner un diálogo para obtener el texto whereFrom, con un pequeño AppleScriptObjC (ya que se ha publicado en otra respuesta un shell script para añadirlo. Ampliando la acción de la carpeta de Automator en mi respuesta a su tema anterior la sustitución Ejecutar AppleScript la acción sería algo así:

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

Para utilizar el anterior script por sí mismo, basta con eliminar {input, parameters} de la run y reemplazar la declaración del manejador input o establecerlo en su propia lista de elementos de archivo, por ejemplo, de un choose file diálogo.

0voto

user3439894 Puntos 5883

Si quiere añadir De dónde: información en Más información: en un del archivo Obtener información ventana es decir, como si se presionara ⌘I en una selección de archivo en Buscador y verlo allí, entonces el siguiente ejemplo en Terminal puede hacerlo:

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

El ejemplo anterior escribiría el URL de esta página web al archivo especificado por: "/path/to/file"

Tenga en cuenta que hay varias formas de automatizar esto para que no sea necesario hacerlo manualmente.

enter image description here


<strong>Nota: </strong>Este es un ejemplo sencillo de cómo escribir el objetivo <em>meta-datos </em>a la <em>archivo </em>y, tal como está escrito, sobreescribiría el <em>meta-datos </em>de eso <em>tipo </em>. Además, <em>codificación </em>necesario para añadir un nuevo <em>meta-datos </em>a los existentes <em>meta-datos </em>del mismo <em>tipo </em>Sin embargo, se considera que esto queda fuera del ámbito de aplicación del <em>caso de uso </em>.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X