Applescript: finestra di ricerca aperta che mostra tutti i file con determinati tag. Possibile?

2

È facile scrivere un oggetto Applescript per aprire una finestra del Finder in una determinata cartella, ad es.

dire all'applicazione "Finder" per aprire "Macintosh HD: Utenti: Nome utente: Download"

È possibile che Applescript apra una finestra del Finder che mostra tutti i file taggati, ad esempio, verde?

Grazie!

    
posta PHL 18.01.2018 - 04:41
fonte

2 risposte

0

Here's the workflow as I'm doing it now: I copy a phrase, open Finder and click on green tags. I copy/paste that phrase to find the filename that contains it. It then gets opened in Preview, from whence i print it. I do this hundreds of times a day, and have a programmable keypad that saves me lots of clicks. It'll run Applescripts.

Poiché ora è chiaro che in realtà non è necessario visualizzare i file in una finestra Finder per raggiungere il tuo obiettivo finale, ho preso in prestito il suggerimento da @apple9321 e utilizzato mdfind per recuperare i percorsi dei file e abbinare i nomi dei file al contenuto degli appunti.

La prima metà dello script di seguito svolge queste attività. Mi spiace che la sceneggiatura appaia così lunga, in realtà non lo è, in quanto la maggior parte di essa è stata ripresa dai commenti che ho aggiunto per aiutarti a capire in che modo ciascuna parte dello script funziona. Copia-n-incolla in Script Editor ed eseguilo (con testo adatto già presente negli Appunti).

    -- Get the text from the clipboard
    -- to use for searching filenames
    set SearchTerm to the clipboard as text
    set SearchTerm to quoted form of (["*", SearchTerm, "*"] as text)

    -- Run a bash command to retrieve all
    -- files with a green tag and a filename
    -- that includes the above search term
    -- (case-insensitive)
    set Command to ["mdfind ", ¬
        "\"((kMDItemUserTags = '*Green*'cd) ", ¬
        "&& (kMDItemDisplayName = ", ¬
        SearchTerm, ¬
        "cd))\""] as text

    try -- Run the bash command and get a list of file paths
        set FileList to paragraphs of (do shell script Command)
    on error -- No matching filenames, script terminates
        return 0
    end try

    -- Convert the string file paths to a class
    -- that AppleScript can use to reference the files
    repeat with PathToFile in FileList
        set end of FileList to POSIX file PathToFile
        set FileList to rest of FileList
    end repeat

    -- Open the files in Preview and print the documents.
    -- You may not need to actually need to include the
    -- 'open' command, as I believe Preview will still
    -- be able to run a 'print' command if you hand it a
    -- list of file references, e.g. print FileList
    tell application "Preview"
        open FileList
        -- You can omit 'with properties' or just
        -- include the print settings you want
        -- (see the AppleScript "Preview" dictionary
        -- for details of other available settings)
        print documents with properties ¬
            {copies:1, target printer:"Epson Stylus Photo PX830"}
    end tell

La seconda metà dello script fa alcuni lavori di casa con i tipi di file per renderli utilizzabili, ma poi è abbastanza semplice che AppleScript apra i file in Anteprima e li stampi.

Devo inserire una dichiarazione di non responsabilità e affermare che non sono stato in grado di testare il comando print per Anteprima in AppleScript. Questo perché non ho una stampante. Ma la mia sensazione strong è che questo dovrebbe funzionare con pochi, se del caso, ritocchi e probabilmente permetterebbe anche di stampare senza aprire prima i file:

    tell application "Preview" to print FileList

Ma, come ho detto, non posso testarlo fisicamente e sto passando per quello che è implicito dal dizionario AppleScript di Anteprima (che contiene anche un elenco di impostazioni di stampa disponibili nel caso in cui sia necessario specificateli dall'interno dello script: ho specificato copies e target printer semplicemente come due esempi che sembravano essere i più utili, ma questi non sono richiesti).

Sembra che questo soddisfi le tue esigenze?

La tastiera programmabile suona come un buon modo per attivare questo script dopo aver copiato la frase di ricerca negli appunti. Il metodo alternativo che avrei suggerito per gli altri che non dispongono di un dispositivo del genere sarebbe quello di creare un servizio Automator , al quale è possibile assegnare un collegamento (hotkey) per attivare lo script in quel modo; oppure consentire che il servizio venga attivato dopo aver evidenziato del testo e aver fatto clic con il pulsante destro del mouse per inviare questo testo direttamente al servizio in alternativa a copiarlo negli Appunti.

Un'ultima nota: ho scelto mdfind in questa istanza perché hai sottinteso che volevi cercare tra tutti i file con tag verde sul tuo disco rigido, e questo è più veloce dei comandi AppleScript incorporati. Tuttavia, se è necessario cercare i file con tag verde in una cartella specifica o in un paio di cartelle, potrebbe essere preferibile utilizzare i comandi AppleScript incorporati (a seconda del numero di file presenti in queste cartelle). Se trovi dei file mancanti nei risultati di mdfind , potresti dover indicizzare nuovamente Spotlight ( sudo mdutil -Ea da Terminal ). Ci vuole un po 'per ricostruire l'archivio dei metadati, ma tutti i file omessi dai risultati di ricerca che dovrebbero apparire ora saranno lì. Puoi visualizzare in anteprima l'elenco completo dei risultati di ricerca in Terminale immettendo questo comando: mdfind "kMDItemUserTags == 'Green'" , che dovrebbe elencare tutti i file con tag verde.

Se hai bisogno di aiuto o hai ulteriori domande, lascia un commento e tornerò da te. Posso modificare il codice se hai dei post-pensieri specifici.

    
risposta data 19.01.2018 - 04:57
fonte
3

Se puoi elaborare una serie di percorsi di file (invece di aprire una finestra del Finder), puoi utilizzare l'utilità mdfind :

set greenFiles to paragraphs of (do shell script "mdfind \"kMDItemUserTags == 'Green'\"")
    
risposta data 18.01.2018 - 07:59
fonte

Leggi altre domande sui tag